本文翻譯自: Gerald Nash《Build Your First Smart Contract》html
原文地址:https://medium.com/crypto-currently/build-your-first-smart-contract-fc36a8ff50cagit
由微信公衆號「Wancloud萬雲」翻譯併發佈於公衆號上。github
這篇文章,咱們將用使用編程語言Solidity教你們編寫一個簡單的counter智能合約。Solidity這種語言與JavaScript類似。編程
開始以前,您須要安裝的工具:瀏覽器
1. Ganache:這將是咱們用來建立僅在咱們的計算機上運行的私有區塊鏈的工具。連接:http://truffleframework.com/ganache/服務器
2.MyEtherWallet副本,在這種狀況下,URL託管的網站將不起做用。連接:https://github.com/kvhnuke/etherwallet/releases 注意:下載的版本是etherwallet-v3.xx.x.x.zip。微信
安裝完成後,咱們開始訪問https://remix.ethereum.org/,打開這個網址後顯示以下:網絡
這是Remix,一個Solidity語言的在線編譯器,咱們將用此編譯器來編寫智能合約代碼。併發
第一次訪問該頁面時,咱們須要將本文編輯器預加載的代碼刪除,並替換爲以下內容:編程語言
這是咱們counter的代碼。正如你所看到的,它有一個變量和三個函數。變量count是一個私有整數,這意味着它不能被合約之外的任何人訪問。第一個函數incrementCounter()經過遞增其值來改變或改變count的值。 第二個函數decrementCounter()經過遞減其值來改變count的值。第三個函數getCount()訪問count並將其值返回給任何函數。
當把counter的代碼粘貼到Remix時,它應該以下所示並自動編譯:
咱們將保留該選項卡,以便稍後返回。 如今,打開Ganache,會顯示以下所示:
屏幕最上方所顯示「RPC」 服務器,咱們一下子須要用到它的信息。
如今,解壓MyEtherWallet,並打開文件夾。 而後,在瀏覽器中打開index.html文件即可看到以下圖所示。
在右上角,您能夠看到一個關於以太坊網絡鏈接的下拉列表,默認狀況下,它會鏈接到以太坊(ETH)主網。咱們須要點擊下拉框選擇咱們須要的網絡。
如今您能夠輸入Ganache早些時候給咱們提供的RPC服務器信息。 注意:您能夠隨意命名節點。
MyEtherWallet如今經過Ganache鏈接到您的自託管區塊鏈。讓咱們使用MyEtherWallet將Counter智能合約上傳到咱們的區塊鏈。爲此,咱們在MyEtherWallet的頂部導航欄中點擊「Contracts」並選擇「Deploy Contract」。
正如您所看到的,MyEtherWallet向咱們請求合約的字節碼。 要找到這個,咱們將回到咱們的Remix IDE並點擊「Details」按鈕。
您如今應該看到一個對話,其中包含有關咱們的Counter合約的大量信息。
要複製字節碼,咱們將點擊「BYTECODE」旁邊的剪貼板圖標。
而後,咱們將回到MyEtherWallet並將字節碼粘貼到對話框中。
如今咱們能夠向下滾動並導入一個賬戶以上傳合約。幸運的是,Ganache給了咱們5個地址,咱們可使用它與咱們的私有區塊鏈進行交互。要使用其中一個上傳此合約,咱們能夠返回到Ganache並單擊任何地址的鑰匙圖標。
點擊鑰匙以後,它會向咱們顯示與此賬戶關聯的私鑰。
咱們複製此私鑰到MyEtherWallet。
如今,若是咱們點擊「Unlock」,MyEtherWallet會詢問咱們是否簽署這筆交易並部署咱們的合約。咱們執行它。
若是交易成功,那麼Ganache將增長其「Current Block」值,而且咱們用於部署合約的帳戶的交易計數也增長。
咱們的合約如今已上傳到咱們的區塊鏈! 要經過遞增和遞減counter與其交互,咱們能夠返回MyEtherWallet並選擇「Interact With Contract」。
MyEtherWallet如今要求咱們新部署的合約所在的地址和咱們合約的應用程序二進制接口(ABI)。要找到地址,咱們能夠回到Ganache並查看咱們的交易記錄。
此頁面顯示咱們以前在部署合約時建立的交易。正如你所看到的,Ganache告訴咱們用來部署合約的地址,咱們區塊鏈上的合約地址以及有關交易的更多信息。讓咱們單擊事務,複製建立的合約地址,並將其粘貼到MyEtherWallet中。
剩下的就是咱們須要的ABI。這是告訴MyEtherWallet如何與咱們的合約進行交互。爲了獲得它,咱們將回到Remix並點擊「INTERFACE - ABI」旁邊的剪貼板圖標將其複製。
如今咱們能夠回到MyEtherWallet,將ABI粘貼到文本框中,而後單擊「Access」按鈕。
真棒! 如今咱們能夠經過點擊「Select a function」下拉菜單與咱們的合約進行交互。
成功運行!在更改計數值以前,咱們的合約返回0。可是,咱們還有另外兩個函數,incrementCounter()和decrementCounter()。咱們來調用incrementCounter()來測試一下。咱們將經過再次選擇函數下拉菜單,選擇incrementCounter並建立一個新的交易。
這只是增長了計數值。如今咱們能夠再次調用getCount()來確認值是否真的改變了。
正如你所看到的,count如今等於1! 因此,咱們的incrementCount()函數成功運行。你能夠嘗試調用decrementCount()函數,而且探索更多!
在整篇文章中,咱們在本身的機器上發佈了區塊鏈,併爲其部署了一個智能合約,並與合約進行了交互。這與專業以太坊智能合約開發人員的工做流程很是類似,只是略有不一樣。在智能合約的早期開發過程當中,這個過程很是有效,但若是您但願經過將其部署到mainnet來使得其餘人與您的智能合約進行交互而不使用真實貨幣的話,會發生什麼呢?在這種狀況下,您能夠將您的合約上傳到以太坊測試網絡或testnet,以便將合約複製到以太坊全球網絡中的每臺機器上,但用戶仍然可使用虛擬貨幣與其進行交互。
本文教程到此結束。