溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何用Solidity編寫(xiě)一個(gè)智能合約

發(fā)布時(shí)間:2021-12-07 15:42:10 來(lái)源:億速云 閱讀:127 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要講解了“如何用Solidity編寫(xiě)一個(gè)智能合約”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何用Solidity編寫(xiě)一個(gè)智能合約”吧!

開(kāi)始之前,您需要安裝的工具:

1. Ganache:這將是我們用來(lái)創(chuàng)建僅在我們的計(jì)算機(jī)上運(yùn)行的私有區(qū)塊鏈的工具。鏈接:http://truffleframework.com/ganache/

2.MyEtherWallet副本,在這種情況下,URL托管的網(wǎng)站將不起作用。鏈接:https://github.com/kvhnuke/etherwallet/releases 注意:下載的版本是etherwallet-v3.xx.x.x.zip。

安裝完成后,我們開(kāi)始訪(fǎng)問(wèn)https://remix.ethereum.org/,打開(kāi)這個(gè)網(wǎng)址后顯示如下:

如何用Solidity編寫(xiě)一個(gè)智能合約

這是Remix,一個(gè)Solidity語(yǔ)言的在線(xiàn)編譯器,我們將用此編譯器來(lái)編寫(xiě)智能合約代碼。

第一次訪(fǎng)問(wèn)該頁(yè)面時(shí),我們需要將本文編輯器預(yù)加載的代碼刪除,并替換為如下內(nèi)容:

如何用Solidity編寫(xiě)一個(gè)智能合約

這是我們counter的代碼。正如你所看到的,它有一個(gè)變量和三個(gè)函數(shù)。變量count是一個(gè)私有整數(shù),這意味著它不能被合約以外的任何人訪(fǎng)問(wèn)。第一個(gè)函數(shù)incrementCounter()通過(guò)遞增其值來(lái)改變或改變count的值。 第二個(gè)函數(shù)decrementCounter()通過(guò)遞減其值來(lái)改變count的值。第三個(gè)函數(shù)getCount()訪(fǎng)問(wèn)count并將其值返回給任何函數(shù)。

當(dāng)把counter的代碼粘貼到Remix時(shí),它應(yīng)該如下所示并自動(dòng)編譯:

如何用Solidity編寫(xiě)一個(gè)智能合約

我們將保留該選項(xiàng)卡,以便稍后返回。 現(xiàn)在,打開(kāi)Ganache,會(huì)顯示如下所示:

如何用Solidity編寫(xiě)一個(gè)智能合約

屏幕最上方所顯示“RPC” 服務(wù)器,我們一會(huì)兒需要用到它的信息。

如何用Solidity編寫(xiě)一個(gè)智能合約

現(xiàn)在,解壓MyEtherWallet,并打開(kāi)文件夾。 然后,在瀏覽器中打開(kāi)index.html文件便可看到如下圖所示。

如何用Solidity編寫(xiě)一個(gè)智能合約

在右上角,您可以看到一個(gè)關(guān)于以太坊網(wǎng)絡(luò)連接的下拉列表,默認(rèn)情況下,它會(huì)連接到以太坊(ETH)主網(wǎng)。我們需要點(diǎn)擊下拉框選擇我們需要的網(wǎng)絡(luò)。

如何用Solidity編寫(xiě)一個(gè)智能合約

現(xiàn)在您可以輸入Ganache早些時(shí)候給我們提供的RPC服務(wù)器信息。 注意:您可以隨意命名節(jié)點(diǎn)。

如何用Solidity編寫(xiě)一個(gè)智能合約

MyEtherWallet現(xiàn)在通過(guò)Ganache連接到您的自托管區(qū)塊鏈。讓我們使用MyEtherWallet將Counter智能合約上傳到我們的區(qū)塊鏈。為此,我們?cè)贛yEtherWallet的頂部導(dǎo)航欄中點(diǎn)擊“Contracts”并選擇“Deploy Contract”。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

正如您所看到的,MyEtherWallet向我們請(qǐng)求合約的字節(jié)碼。 要找到這個(gè),我們將回到我們的Remix IDE并點(diǎn)擊“Details”按鈕。

如何用Solidity編寫(xiě)一個(gè)智能合約

您現(xiàn)在應(yīng)該看到一個(gè)對(duì)話(huà),其中包含有關(guān)我們的Counter合約的大量信息。

如何用Solidity編寫(xiě)一個(gè)智能合約

要復(fù)制字節(jié)碼,我們將點(diǎn)擊“BYTECODE”旁邊的剪貼板圖標(biāo)。

如何用Solidity編寫(xiě)一個(gè)智能合約

然后,我們將回到MyEtherWallet并將字節(jié)碼粘貼到對(duì)話(huà)框中。

如何用Solidity編寫(xiě)一個(gè)智能合約

現(xiàn)在我們可以向下滾動(dòng)并導(dǎo)入一個(gè)帳戶(hù)以上傳合約。幸運(yùn)的是,Ganache給了我們5個(gè)地址,我們可以使用它與我們的私有區(qū)塊鏈進(jìn)行交互。要使用其中一個(gè)上傳此合約,我們可以返回到Ganache并單擊任何地址的鑰匙圖標(biāo)。

如何用Solidity編寫(xiě)一個(gè)智能合約

   點(diǎn)擊鑰匙之后,它會(huì)向我們顯示與此帳戶(hù)關(guān)聯(lián)的私鑰。

如何用Solidity編寫(xiě)一個(gè)智能合約

我們復(fù)制此私鑰到MyEtherWallet。

如何用Solidity編寫(xiě)一個(gè)智能合約

現(xiàn)在,如果我們點(diǎn)擊“Unlock”,MyEtherWallet會(huì)詢(xún)問(wèn)我們是否簽署這筆交易并部署我們的合約。我們執(zhí)行它。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如果交易成功,那么Ganache將增加其“Current Block”值,并且我們用于部署合約的賬戶(hù)的交易計(jì)數(shù)也增加。

如何用Solidity編寫(xiě)一個(gè)智能合約

我們的合約現(xiàn)在已上傳到我們的區(qū)塊鏈! 要通過(guò)遞增和遞減counter與其交互,我們可以返回MyEtherWallet并選擇“Interact With Contract”。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

MyEtherWallet現(xiàn)在要求我們新部署的合約所在的地址和我們合約的應(yīng)用程序二進(jìn)制接口(ABI)。要找到地址,我們可以回到Ganache并查看我們的交易記錄。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

此頁(yè)面顯示我們之前在部署合約時(shí)創(chuàng)建的交易。正如你所看到的,Ganache告訴我們用來(lái)部署合約的地址,我們區(qū)塊鏈上的合約地址以及有關(guān)交易的更多信息。讓我們單擊事務(wù),復(fù)制創(chuàng)建的合約地址,并將其粘貼到MyEtherWallet中。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

剩下的就是我們需要的ABI。這是告訴MyEtherWallet如何與我們的合約進(jìn)行交互。為了得到它,我們將回到Remix并點(diǎn)擊“INTERFACE - ABI”旁邊的剪貼板圖標(biāo)將其復(fù)制。

如何用Solidity編寫(xiě)一個(gè)智能合約

現(xiàn)在我們可以回到MyEtherWallet,將ABI粘貼到文本框中,然后單擊“Access”按鈕。

如何用Solidity編寫(xiě)一個(gè)智能合約

真棒! 現(xiàn)在我們可以通過(guò)點(diǎn)擊“Select a function”下拉菜單與我們的合約進(jìn)行交互。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

成功運(yùn)行!在更改計(jì)數(shù)值之前,我們的合約返回0。但是,我們還有另外兩個(gè)函數(shù),incrementCounter()和decrementCounter()。我們來(lái)調(diào)用incrementCounter()來(lái)測(cè)試一下。我們將通過(guò)再次選擇函數(shù)下拉菜單,選擇incrementCounter并創(chuàng)建一個(gè)新的交易。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

這只是增加了計(jì)數(shù)值?,F(xiàn)在我們可以再次調(diào)用getCount()來(lái)確認(rèn)值是否真的改變了。

如何用Solidity編寫(xiě)一個(gè)智能合約

如何用Solidity編寫(xiě)一個(gè)智能合約

正如你所看到的,count現(xiàn)在等于1! 所以,我們的incrementCount()函數(shù)成功運(yùn)行。你可以嘗試調(diào)用decrementCount()函數(shù),并且探索更多!

感謝各位的閱讀,以上就是“如何用Solidity編寫(xiě)一個(gè)智能合約”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何用Solidity編寫(xiě)一個(gè)智能合約這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI