區塊鏈開發學習第三章:私有鏈上部署helloBlockchain簡單合約

前面講了部署私有鏈以及新增賬戶,現在進行到了部署合約了,此操作真是踩了無數無數無數的坑,到寫文章為止確實是已經部署好了,但是還有些坑是還沒有解決的!

一、Solidity編譯器

開始的時候用的//remix.ethereum.org/    這個官網在線編譯器,但不知道怎麼回事,我k學上網都沒問題,但就是訪問這個網站有問題(事後用http就可以了),沒辦法我就打了其它編譯器的主意,最開始是用的remix有一個中文版的編譯器,但是用着發現好像無法連接私有鏈,沒辦法參照官方文檔找其它編譯器(文檔地址://learnblockchain.cn/docs/solidity/installing-solidity.html),這麼多裏面看了一下,決定安裝本地的Remix-Ide,參考安裝文檔(//learnblockchain.cn/2018/06/07/remix-ide/),安裝的過程中我已經不知道出現了多少問題了,直到最後!!!還是沒有解決,卡在這這一步:npm install remix-ide -g安裝已經成功了,執行remix-ide & remixd能看到安裝的remix-ide,但是運行remix-ide又提示不支持的命令。搞了半天也沒搞好,後來在群里有友人說還需要配置環境變量,但是我那時已經沒有耐心了直接改了http用在線的remix了。後面我還是回去裝本地版本的,實在不行的話安裝docker再弄,環境問題真是糟心。

 

二、簡單的helloBlockchain合約

1、新加sol文件,內容如下:

 

 

pragma solidity ^0.4.0;
contract helloBlockchain{
    function renderHello() public pure returns (string){
        return "Hello Blockchain";
    }
}

因為我參考的文檔都是老舊的,所以合約也是0.4.0-0.5.0版本的才行

2、編譯

 

 這是因為使用的版本問題,要找到0.4.0-0.5.0的版本添加進去

網上隨便找到一個在線版本://solc-bin.ethereum.org/bin/soljson-v0.4.26+commit.4563c3fc.js,其它的也都可以在//github.com/ethereum/solc-bin裏面自行下載

3、部署合約

使用metamask的時候會自動選擇Injected Web3來進行連接,請注意,這裡的鏈網絡一定要核查是與創世區塊裏面寫的chainid、與啟動區塊鏈寫的networdid一致的才行,不然會報錯:invalid sender

 

部署要啟動挖礦別忘了 

四、遇到的問題

1、部署時報這個錯:

 

 

原因:重啟了電腦,私有鏈忘記啟動了,哈哈哈

2、部署合約提示[ethjs-query] while formatting outputs from RPC ‘{“value”:{“code”:-32603″data”:{“code”:-32000″message”:”invalid sender”}}}’

排查如下幾點:

①需要解鎖賬戶

②創世區塊裏面寫的chainid與啟動區塊鏈寫的networdid要一致,同時MetaMask設置-網絡裏面配置的id要同樣是這個id

③啟動私有鏈時要打開–allow-insecure-unlock,請參考我在第一章講到的啟動方式

好像還有其它問題,但只能想起來這三個了,真的是弄了好久啊,淚牛滿面!!!