国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Solidity的低代碼以太坊微博系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2023-10-02 11:41:22胡娟湯海林
電腦知識(shí)與技術(shù) 2023年24期
關(guān)鍵詞:以太合約賬號(hào)

胡娟,湯海林

(廣東白云學(xué)院大數(shù)據(jù)與計(jì)算機(jī)學(xué)院,廣東 廣州 510400)

0 引言

區(qū)塊鏈技術(shù)本質(zhì)上是一種基于時(shí)間戳的防篡改數(shù)據(jù)庫(kù),可以允許個(gè)人、公司、公共機(jī)構(gòu)以及其他實(shí)體以同步、透明和去中心化的方式驗(yàn)證交易和更新數(shù)據(jù)庫(kù)數(shù)據(jù)。這種創(chuàng)建和管理數(shù)據(jù)的新機(jī)制由于備具透明、安全以及信任增強(qiáng)的優(yōu)點(diǎn),能夠跨行業(yè)、跨組織地產(chǎn)生影響,將原本孤立的系統(tǒng)變成更開放的系統(tǒng)。以比特幣為代表的數(shù)字貨幣提供了區(qū)塊鏈技術(shù)應(yīng)用的原型,以以太坊為代表的智能合約平臺(tái)延伸了區(qū)塊鏈技術(shù)的功能。

1 基本概念

1.1 低代碼開發(fā)平臺(tái)[1]

低代碼開發(fā)平臺(tái)提供了可視化的界面和預(yù)構(gòu)建的組件,開發(fā)者可以通過拖放和配置來(lái)構(gòu)建應(yīng)用程序。低代碼平臺(tái)通常提供與以太坊區(qū)塊鏈的集成,開發(fā)者可以通過配置連接到以太坊網(wǎng)絡(luò),部署智能合約,并與以太坊的節(jié)點(diǎn)進(jìn)行通信。開發(fā)者能夠在低代碼平臺(tái)上輕松地開發(fā)和部署區(qū)塊鏈以太坊微博系統(tǒng),而無(wú)須深入了解底層的區(qū)塊鏈技術(shù)和編寫復(fù)雜的代碼。

1.2 以太坊[2]

以太坊是一個(gè)基于區(qū)塊鏈技術(shù)的開源平臺(tái),允許用戶建立和執(zhí)行智能合約,創(chuàng)建去中心化的應(yīng)用程序和數(shù)字資產(chǎn)。

1.3 賬戶和智能合約

以太坊中有兩種類型的賬戶:外部賬戶和合約賬戶[3]。EOA[4](Externally Owned Account)是以太坊中的外部賬戶,由私鑰控制,可以發(fā)送交易和持有以太幣或其他代幣(Token)。合約賬戶是以太坊中的智能合約賬戶,由智能合約代碼控制,可以執(zhí)行預(yù)定的邏輯和操作,存儲(chǔ)狀態(tài)并與其他合約或外部賬戶進(jìn)行交互。

智能合約[5]是以太坊上的自動(dòng)執(zhí)行合約,包含編程邏輯和數(shù)據(jù),可以實(shí)現(xiàn)自動(dòng)化的交互和資產(chǎn)管理。

1.4 Truffle[6]

Truffle 是一個(gè)流行的以太坊開發(fā)框架,用于構(gòu)建、測(cè)試和部署智能合約。它使開發(fā)者能夠輕松地開發(fā)、測(cè)試和部署以太坊智能合約。

1.5 錢包

以太坊錢包是一種用于存儲(chǔ)、管理和交換以太坊及其相關(guān)代幣的數(shù)字錢包。它允許用戶創(chuàng)建和控制一個(gè)或多個(gè)以太坊賬戶,并使用安全的方式進(jìn)行交易、轉(zhuǎn)賬和管理加密資產(chǎn)。常見的以太坊錢包包括MetaMask[7]、MyEtherWallet、Trust Wallet和Ledger等。

2 以太坊微博系統(tǒng)的架構(gòu)設(shè)計(jì)與業(yè)務(wù)流程

2.1 系統(tǒng)架構(gòu)設(shè)計(jì)

這個(gè)系統(tǒng)的前端使用HTML5、CSS3 和JavaScript來(lái)實(shí)現(xiàn)用戶界面。用戶可以通過前端界面瀏覽微博文章并發(fā)表評(píng)論。系統(tǒng)還需要一個(gè)后端服務(wù)器來(lái)處理用戶提交的數(shù)據(jù)和交互。這個(gè)后端服務(wù)器應(yīng)該包括以太坊節(jié)點(diǎn),以便與以太坊網(wǎng)絡(luò)進(jìn)行通信。在以太坊網(wǎng)絡(luò)上,系統(tǒng)需要部署兩個(gè)智能合約,分別是微博注冊(cè)合約和微博賬號(hào)合約。微博注冊(cè)合約負(fù)責(zé)驗(yàn)證用戶身份并創(chuàng)建新的微博賬戶,而微博賬號(hào)合約則負(fù)責(zé)管理用戶的微博文章和評(píng)論。當(dāng)用戶在前端界面上發(fā)布一篇新的微博文章或發(fā)表評(píng)論時(shí),這些數(shù)據(jù)將會(huì)被發(fā)送到后端服務(wù)器。服務(wù)器將對(duì)用戶進(jìn)行身份驗(yàn)證,并將文章或評(píng)論存儲(chǔ)在以太坊網(wǎng)絡(luò)上的微博賬號(hào)合約中。當(dāng)其他用戶瀏覽微博或者查看評(píng)論時(shí),系統(tǒng)將從以太坊網(wǎng)絡(luò)中讀取數(shù)據(jù),并將其顯示在前端界面上。整個(gè)系統(tǒng)的核心就是以太坊虛擬機(jī)(EVM),它允許人們?cè)谝蕴痪W(wǎng)絡(luò)上部署智能合約并與其進(jìn)行交互。同時(shí),這個(gè)系統(tǒng)也需要一定的安全措施,以保護(hù)用戶數(shù)據(jù)和身份信息不受攻擊。圖1是該系統(tǒng)的整體架構(gòu)圖。

圖1 系統(tǒng)架構(gòu)圖

2.2 系統(tǒng)流程

這是一個(gè)運(yùn)行在以太坊上的去中心化的微博系統(tǒng),去中心化意味著沒有一個(gè)中心化機(jī)構(gòu)能夠控制用戶發(fā)送的微博。下面介紹微博系統(tǒng)的注冊(cè)流程,如圖2所示。

圖2 微博注冊(cè)流程圖

第一步,需要先在Truffle中編寫微博注冊(cè)智能合約,使用Truffle 工具將其部署到以太坊網(wǎng)絡(luò)中,獲得合約地址。第二步,用戶注冊(cè)微博賬號(hào)。用戶在界面上填寫個(gè)人信息,包括昵稱和以太坊錢包地址,通過界面將這些信息發(fā)送給后端。第三步,后端收到用戶提交的注冊(cè)請(qǐng)求后,調(diào)用智能合約的注冊(cè)函數(shù),創(chuàng)建一個(gè)微博賬號(hào)地址。將微博賬號(hào)地址與用戶的以太坊錢包地址進(jìn)行關(guān)聯(lián),并將用戶昵稱等信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。第四步,返回微博賬號(hào)地址給用戶,后端將生成的微博賬號(hào)地址返回到前端界面。

3 以太坊微博系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

3.1 智能合約

3.1.1 微博賬號(hào)合約

1)發(fā)表微博:在發(fā)微博頁(yè)面,用戶可以輸入文字、圖片或者視頻等內(nèi)容,發(fā)布到微博上。微博賬號(hào)合約會(huì)將微博的內(nèi)容保存到以太坊上,以便其他用戶進(jìn)行查看。

這是一個(gè)Content 結(jié)構(gòu)體。該結(jié)構(gòu)體包含了以下字段:text表示微博中的文本內(nèi)容。imageHash表示上傳到IPFS 網(wǎng)絡(luò)上的圖片的哈希值。videoHash表示上傳到IPFS 網(wǎng)絡(luò)的視頻的哈希值。emoji表示微博中使用的表情。timestamp表示微博發(fā)布的時(shí)間戳。

該函數(shù)現(xiàn)在接收四個(gè)參數(shù),分別表示微博的文本內(nèi)容、上傳到IPFS 網(wǎng)絡(luò)的圖片和視頻的哈希值以及微博中使用的表情。函數(shù)使用require 函數(shù)來(lái)檢查微博的文本內(nèi)容是否符合要求,以確保不會(huì)發(fā)布過長(zhǎng)的微博。

2)發(fā)表評(píng)論:用戶輸入評(píng)論的內(nèi)容、表情或圖片,微博賬號(hào)合約會(huì)將評(píng)論的內(nèi)容保存到以太坊上,以便其他用戶可以看到評(píng)論。

這段代碼使用require 來(lái)確保傳入的微博ID 是有效的。第二個(gè)require確保傳入的評(píng)論內(nèi)容不能為空,即評(píng)論的內(nèi)容長(zhǎng)度大于0。在存儲(chǔ)所有微博的映射中,找到目標(biāo)微博并將評(píng)論添加到這個(gè)微博的評(píng)論數(shù)組中。添加評(píng)論時(shí),使用結(jié)構(gòu)體Comment 來(lái)表示評(píng)論,這個(gè)結(jié)構(gòu)體包括兩個(gè)屬性,分別是評(píng)論者地址和評(píng)論內(nèi)容。當(dāng)函數(shù)執(zhí)行完畢后,這條新評(píng)論會(huì)被添加到目標(biāo)微博的評(píng)論數(shù)組中,以便其他用戶能看到這條新的評(píng)論。

3)發(fā)起打賞:在看微博時(shí),用戶可以通過打賞的方式向?qū)Ψ奖磉_(dá)贊賞或支持。用戶輸入打賞的金額,微博賬號(hào)合約會(huì)將打賞的以太幣轉(zhuǎn)入到被打賞者的賬戶中。

當(dāng)用戶想要打賞給某個(gè)微博作者時(shí),reward 函數(shù)會(huì)將打賞的金額從用戶的賬戶上轉(zhuǎn)賬到受打賞的微博賬戶地址上,用于打賞某條微博的作者。這段代碼中的address payable weiboAuthor 是一個(gè)可支付的地址變量。ownerOfWeibo(weiboId)函數(shù)的返回值是一個(gè)地址,表示微博作者的地址。payable 關(guān)鍵字用于將該地址轉(zhuǎn)換為可支付的地址,以便使用transfer 函數(shù)將用戶打賞的金額轉(zhuǎn)移到該地址,也就是轉(zhuǎn)給受打賞的微博作者。

4)提現(xiàn)打賞:將接收到的以太幣從智能合約的地址中轉(zhuǎn)移到一個(gè)外部的以太坊錢包地址中的過程。

這段代碼根據(jù)選擇的weiboId 獲取對(duì)應(yīng)的微博信息,并存儲(chǔ)在weibo 變量中。使用require 函數(shù)判斷該用戶在該微博上的打賞金額是否大于0,如果不是則拋出異常,表示沒有打賞金額可以提現(xiàn)。如果存在打賞金額,將該用戶在該微博上的打賞金額存儲(chǔ)到amount 變量中,將其在_donations 映射中的值清零,表示已經(jīng)提現(xiàn)過了。根據(jù)amount 計(jì)算手續(xù)費(fèi)(Gas),并將手續(xù)費(fèi)金額存儲(chǔ)在fee 變量中。計(jì)算扣除手續(xù)費(fèi)之后的凈金額netAmount,如果小于等于0,則拋出異常,表示手續(xù)費(fèi)過高,不可以提現(xiàn)。使用payable 關(guān)鍵字將凈金額netAmount 轉(zhuǎn)賬到該微博用戶的地址。使用payable 關(guān)鍵字將手續(xù)費(fèi)fee 轉(zhuǎn)賬到微博管理員地址。

3.1.2 微博注冊(cè)合約

1)注冊(cè)微博賬號(hào):用戶向微博注冊(cè)合約發(fā)送一個(gè)注冊(cè)請(qǐng)求,包含了用戶名和密碼等信息。微博注冊(cè)合約會(huì)根據(jù)傳入的參數(shù),創(chuàng)建一個(gè)新的微博賬號(hào)合約,并將賬號(hào)合約的地址返回給用戶。

WeiboRegistration 是一個(gè)智能合約,用于注冊(cè)微博賬號(hào)。User 結(jié)構(gòu)體定義了每個(gè)用戶的屬性。每個(gè)用戶有一個(gè)用戶名(username)、密碼(password)、微博以太坊地址(weiboAddress)、注冊(cè)狀態(tài)(isRegistered)和注冊(cè)時(shí)間(registrationTime)。

mapping(address=>User) public users 是一個(gè)映射(mapping),將用戶的以太坊地址映射到對(duì)應(yīng)的User結(jié)構(gòu)體,實(shí)現(xiàn)了以太坊地址到用戶信息的查找功能。

register 函數(shù)用于注冊(cè)微博賬號(hào)。它接受三個(gè)參數(shù):用戶名(_username)、密碼(_password)和微博以太坊地址(_weiboAddress)。在函數(shù)體內(nèi),通過require語(yǔ)句對(duì)輸入進(jìn)行驗(yàn)證。確保用戶名和密碼非空,微博以太坊地址有效且不為零地址,并且調(diào)用者的地址還未注冊(cè)過微博賬號(hào)。如果驗(yàn)證通過,將用戶信息存儲(chǔ)在users映射中,使用調(diào)用者的以太坊地址作為鍵。用戶信息包括用戶名、密碼、微博以太坊地址、注冊(cè)狀態(tài)和注冊(cè)時(shí)間。效果如圖3所示。

圖3 注冊(cè)微博賬號(hào)頁(yè)面效果圖

3.1.3 部署微博注冊(cè)智能合約

在Truffle中只要部署微博注冊(cè)合約就可以了,微博賬號(hào)合約可以通過前端頁(yè)面進(jìn)行部署。在部署微博注冊(cè)合約之前,需要編寫遷移腳本,內(nèi)容如下:

首先,引入需要使用的智能合約WeiboRegistration 和ExternalAPI。

之后,定義了一個(gè)異步函數(shù),該函數(shù)將用來(lái)部署合約。

這些信息由用戶在界面上提供。通過deployer.deploy(),將WeiboRegistration 合約部署到區(qū)塊鏈上,并使用externalAPI.address 作為參數(shù)傳遞給合約的構(gòu)造函數(shù)。然后,使用WeiboRegistration.deployed()獲取已部署的合約實(shí)例。

部署成功之后,就可以在低代碼平臺(tái)編寫前端應(yīng)用了。由于前端應(yīng)用的編程并不復(fù)雜,這里不再詳述。

4 結(jié)束語(yǔ)

基于Solidity 的低代碼以太坊微博系統(tǒng)是為了解決傳統(tǒng)微博系統(tǒng)中存在的中心化管理[8]、數(shù)據(jù)安全性和透明性不足等問題而設(shè)計(jì)的。在設(shè)計(jì)這樣的架構(gòu)時(shí),需要考慮一些重要的因素。首先是安全性問題,因?yàn)閰^(qū)塊鏈技術(shù)的去中心化和不可篡改特性[9],智能合約一旦部署就無(wú)法更改,因此必須保證智能合約代碼的安全性。其次是性能問題,因?yàn)橐蕴痪W(wǎng)絡(luò)的交易速度和吞吐量受限,可能會(huì)影響系統(tǒng)的響應(yīng)速度和并發(fā)能力。因此,在設(shè)計(jì)和實(shí)現(xiàn)時(shí)需要考慮這些問題,從而保證系統(tǒng)的可靠性和穩(wěn)定性。

猜你喜歡
以太合約賬號(hào)
以太極為旗,開啟新時(shí)代“黃河大合唱”
少林與太極(2023年7期)2023-08-25 05:27:52
彤彤的聊天賬號(hào)
施詐計(jì)騙走游戲賬號(hào)
派出所工作(2021年4期)2021-05-17 15:19:10
車易鏈:做汽車業(yè)的“以太坊”
汽車觀察(2018年9期)2018-10-23 05:46:24
Google Play游戲取消賬號(hào)綁定沒有Google賬號(hào)也能玩
CHIP新電腦(2016年3期)2016-03-10 14:52:50
百通推出入門級(jí)快速工業(yè)以太網(wǎng)絡(luò)交換器系列
以太互聯(lián) 高效便捷 經(jīng)濟(jì)、可靠、易用的小型可編程控制器
合約必守,誰(shuí)能例外!——對(duì)“情勢(shì)變更”制度不可寄于過高期望
故城县| 兴城市| 耒阳市| 怀集县| 岳阳县| 东丰县| 平凉市| 溆浦县| 焉耆| 定结县| 扶沟县| 太原市| 冷水江市| 安西县| 邯郸县| 赤峰市| 乐清市| 鹿邑县| 冷水江市| 枣阳市| 驻马店市| 金坛市| 平定县| 白水县| 玉田县| 五指山市| 蚌埠市| 英超| 禹州市| 德州市| 绥棱县| 渝北区| 河南省| 同仁县| 宜阳县| 武威市| 农安县| 永定县| 诸城市| 洪湖市| 弋阳县|