日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于以太坊网络的智能合约开发、部署和测试(入门)

發布時間:2024/4/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于以太坊网络的智能合约开发、部署和测试(入门) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

基本概念:

  • 以太坊是一個開放的、公開的區塊鏈平臺,允許用戶構建自己的去中心化應用在上面運行
  • Solidity是一種語法類似JavaScript的高級語言。它被設計成以編譯的方式生成以太坊虛擬機代碼。因此以太坊智能合約代碼又該語言開發
  • Remix是基于瀏覽器的Solidity IDE,可以用于開發一些比較簡單的智能合約,當然還有很多其他IDE,此處暫不敖述
  • MIST客戶端是以太坊的客戶端(可用于管理錢包、轉賬、部署和管理智能合約,鏈接測試以太坊網絡,搭建虛擬的以太坊區塊鏈平臺等)

? ? 更多資源信息可關注前兩天剛寫的文章(整理的一些關于以太坊學習資源),初學者會遇到很多各種各樣的概念,以及網上的一些資料有些是比較過時的了,學習起來會顯得比較凌亂。 主要把握以下幾點就行。

  • 以太坊技術原理
  • 智能合約(DAPP)概念
  • 開發語言
  • 開發工具
  • 開發環境
  • 開發框架

準備工作:?

  • 了解以太坊基本技術原理以及DAPP概念,本文不做分析
  • 開發語言選定solidity,可去學習solidity語法和樣例代碼。http://wiki.jikexueyuan.com/project/solidity-zh/ 或官網教程http://solidity.readthedocs.io/en/develop/
  • 開發工具IDE準備,在線Remix訪問地址http://remix.ethereum.org, 簡單合約開發比較好用。
  • 開發環境,開發環境及開發的應用所運行的環境,其實也就是以太坊平臺,我們可以直接訪問以太坊平臺,但是要把應用部署到以太坊平臺是要以太坊幣的,太貴了。 開發模式下當然有開發環境,下載MIST http://ethfans.org/wikis/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E9%92%B1%E5%8C%85%20Mist%20%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B?? 參照該文檔安裝MIST客戶端,注意因為是用于開發環境,不需要與以太坊網絡連接并下載區塊數據,直接啟動應用。然后選擇建立私有網絡。如下圖所示:

????????啟用之后,客戶端上就會顯示當前是私有網絡:

啟動網絡,開啟挖礦,因為部署智能合約是需要錢,需要有曠工干活的,咱們就搭建了一個單節點的以太坊網絡,這個節點也就是礦工,需要干活。

開啟挖礦之后,創世區塊,以太坊幣就不斷產生了。 所有的數字貨幣都將被自己挖到。

可惜不是真的以太坊,否則就發了!o(* ̄︶ ̄*)o。?

至此,個人的以太坊網絡,也就是開發運行環境就搭建好了,為了后續的測試,可以創建多個賬號。

?

智能合約應用舉例:

為了開發、部署、和測試一個智能合約(DAPP),我們列舉一個簡單的應用場景。 開發一個應用,該應用可以由我控制發行虛擬貨幣,并且能夠將貨幣發送給別人。就這么簡單。(當然以太坊平臺很強大,這只是萬里長征第一步,類似HelloWorld)

?

代碼開發與解釋:

? 我們開發智能合約使用的IDE是 基于瀏覽器的Remix,訪問該工具如下圖所示:

?代碼解釋如下:

pragma solidity ^0.4.0;contract Coin{// 聲明 一個 address 類型 變量 256 bits, 用于 存儲啟動該智能合約的賬戶地址。address public minter; // 聲明 mapping 類型 變量 類似于 java map ,用于存儲賬戶的資產信息mapping(address => uint) public balances;// 聲明 一個事件 ,客戶端可以來監聽該事件event Sent(address from, address to , uint value);//構造函數,在合約啟動的時候執行一次,因此minter保存的是啟動該智能合約的賬戶地址function Coin() public{minter = msg.sender;}//為當前啟動合約賬號 ,也就是自己發幣。每次加20function go() public{//如果不是啟動合約的賬號 則返回,即別人無法給自己發幣if(msg.sender != minter) return; balances[msg.sender] += 20;} //為指定賬號發幣function mint(address receiver) public{//只有自己可以發幣 其他賬號調用無效if(msg.sender != minter) return;balances[receiver] += 15;}//賬號之間發送貨幣function send(address receiver) public{uint amount = 15;if(balances[msg.sender]<amount) return;balances[msg.sender] -= amount;balances[receiver] += amount;Sent(msg.sender, receiver, amount);} }

代碼編譯:

使用Remix對代碼進行編譯

?

代碼調試與測試:

選擇右上角run標簽,模擬參數都采用默認(默認會生成一個賬號),點擊create,即模擬部署智能合約代碼。create成功后,右下角則會出現部署好的合約(包括合約地址以及合約方法)

測試為自己發幣:

點擊go方法按鈕,控制端會顯示已經調用成功

為了驗證查看是否成功給自己發幣,可以通過查詢balances變量,在balances按鈕右側輸入我的賬號地址,進行查詢,如下圖,由于我點了八次(每次發幣20),所以我的賬號余額是160.

注意,此處需要了解如何獲取賬號,個人賬號其實就在,如下圖所示:點擊右側復制按鈕可以獲取賬號字符串。該賬號也是部署合約的賬號。當時復制到的賬號信息只有20個字節,而address類型是需要32個字節的(因為address的地址是256bits的),那么我們就需要對該地址進行補全去查詢,在地址前端補24個0即最終用于查詢的賬號地址是0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733c

測試為別人發幣:

點擊mint按鈕,隨意寫一個別人的賬號,比如為0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b

驗證發幣結果:

在balances右側輸入別人賬號0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,點擊查詢,如下圖所示,發幣15.

?

測試發送數字貨幣:

由當前合約部署者(自己)給別人轉幣,在send按鈕輸入別人賬號0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,點擊send按鈕,轉15個幣過去。

驗證轉幣結果,之前自己有160個幣,別人有15個幣。? 轉15個幣過去后自己有145,別人有30.如下圖所示。

?

部署到以太坊平臺(搭建的單點開發環境):

打開MIST平臺,創建兩個演示賬號A,B 。其中A賬號用來部署智能合約, B賬號為別人的賬號。用于測試發幣,和傳輸貨幣。打開MIST的智能合約界面

點擊DEPLOY NEW CONTRACT創建新的智能合約:

代碼拷貝完成之后,就會進行自動編譯,并生成合約,如下圖所示,合約名稱為Coin:

選擇該合約,然后再頁面最下角,點擊部署,部署的時候需要輸入賬號密碼:

部署成功后,點擊智能合約界面即可查看到:

測試部分 就不做了,跟Remix很類似。

?

?

?

?

轉載于:https://my.oschina.net/yjwxh/blog/1626312

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的基于以太坊网络的智能合约开发、部署和测试(入门)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。