(一)前言
於大四下接到了老師關於區塊鏈開發的項目。由於這是一門之前從未接觸過的課程,故開始了上網查閱資料自學的過程。雖然網絡上有不少前輩的指導資料和教程,但學習的過程還是頗爲坎坷的(有一些教程上的指導方法僅適用於較舊的版本,如若對應最新的版本的則會報錯;個別的教程代碼是有語法錯誤的;筆者因諸如此類的種種原因導致開發學習十分低效)。遂萌發了分享記錄自己開發的過程博客的內容(作爲一個程序員還是比較討厭重複造輪子的事情,故而別的教程已經說得很明白的事情,我就不再贅述了),希望對大家能有一點幫助。
本篇主要參考的教程爲:http://blog.csdn.net/sportshark/article/details/51855007
(二)私有鏈創建
這裏以使用的GETH爲例配置爲windows7,首先需要我們安裝geth構建自己的私有鏈,通過命令行打開,其基本配置如下圖
參考博客的配置創建部分,其中關於創世塊部分,我們需要另外在配置文件中加入:
"config":{
"chainId":15,
"homesteadBlock":0,
"eip155Block":0,
"eip158Block":0
}
以上這一段的配置信息,不然初始化會失敗。
若初始化後,系統提示”synchronize failed”,則是說明我們的系統並未同步互聯網時間,需要我們與互聯網時間同步之後,才能正常使用區塊鏈的相關功能。
私有鏈創建並且初始化之後,我們可以使用newaccount()函數創建賬戶,等我們至少創建一個主賬號之後,就能夠使用miner.start(n)、miner.stop()函數控制挖礦了,其中n是指使用多少核的性能來進行挖礦。使用start之後,系統並未返回教程中的信息,而是返回了null,經過測試,發現仍能正常挖礦,故不需要理會。
此時,我們可以安裝Ethererum Wallet來進行賬戶和合約編寫部署的操作了。該程序會自動與當前系統創建的私有鏈進行連接。
調試編寫合約時,我們可以使用https://ethereum.github.io/browser-solidity/ 網站進行編譯測試,最後再通過Ethereum Wallet部署。值得注意的是,由於版本的迭代,有部分雖仍能在網站上編譯通過,但是在Ethereum Wallet上卻無法編譯成功。
如throw函數:Solidity自0.4.13版本之後,throw方法棄用,要實現同樣的功能需要根據具體情況使用revert(),assert()來替代。或者將Mist/Ethereum Wallet回退到0.4.13版本之前,也可以使用throw。