摘要:原文地址石匠的是一個基于開發的一套智能合約開發框架,使用語言編寫合約。預期通過和搭建一個只能合約的開發測試環境,部署官方的測試合約進行驗證和后續的測試學習。
原文地址:石匠的blog
truffle是一個基于Javascript開發的一套智能合約開發框架,使用Solidity語言編寫合約。truffle有一套自動的項目構建機制,集成了開發,測試和部署的各個流程細節,不用開發人員關注。truffle使用說明.
testrpc是基于pyethereum,可以快速的搭建一個模擬以太坊的測試網絡,并且預制了若干存有代幣的賬號,可以直接使用。不像geth是一個真正的以太網網絡,testrpc在內存中模擬了以太坊網絡,運行速度非常快,很適合做智能合約的開發和測試,待測試完整后再上geth會比較高效。
預期通過truffle和testrpc搭建一個只能合約的開發測試環境,部署官方的測試合約metacoin進行驗證和后續的測試學習。
truffle安裝truffle使用npm安裝,所以在mac上先安裝npm:
brew install npm
然后依次安裝truffle和testrpc
npm install -g truffle npm install -g ethereumjs-testrpc
truffle安裝好以后,準備安裝默認的metacoin做測試。
truffle版本變更的坑我當前用的最新版本是:
Truffle v4.1.11 (core: 4.1.11) Solidity v0.4.24 (solc-js)
按照之前的老版本truffle使用流程進行搭建和部署(比如這里介紹的),大概步驟如下:
1.建立一個獨立的目錄 2.運行truffle init創建默認的合約項目 3.運行truffle compile編譯合約項目 4.運行testrpc 5.運行truffle deploy部署合約到testrpc 6.運行truffle serve啟動服務,在localhost:8080啟動web服務 7.瀏覽器打開localhost:8080,就出現了metacoin的主頁
按照以上步驟,出現了各種問題,比如:
truffle init生成的contracts目錄中并沒有生成app目錄,而且也沒有metacoin的合約sol文件, metacoin已經獨立成一個多帶帶的box,需要多帶帶安裝 truffle unbox webpack(注意:不是truffle unbox metacoin)。
truffle deploy運行報錯:
No network specified. Cannot determine current network.
解決辦法是需要再truffle.js中設置網絡參數如下:
module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*" // Match any network id } } };
truffle serve運行報錯:
TypeError: fsevents is not a constructor
最后再github的官方issue里面找到了一種解決辦法,就是強行修改js代碼,不適用useFsEvents參數,如下:
vim /usr/local/lib/node_modules/truffle/build/cli.bundled.js // Enable fsevents on OS X when polling isn"t explicitly enabled. //if (undef("useFsEvents")) opts.useFsEvents = !opts.usePolling; // If we can"t use fsevents, ensure the options reflect it"s disabled. //if (!FsEventsHandler.canUse()) opts.useFsEvents = false; opts.useFsEvents = false;
采用truffle serve啟動后,本來應該是要在localhost:8080看到metacoin的范例主頁的,但是訪問后,只能得到:
Cannot get /
找各種奇葩問的解決方案的時候,在github官方issue看到了說是官方已經放棄truffle serve,不應該再采用這種方式啟動服務了,前面跟著老版本的方法做就很容易入坑了。
操作過程中還遇到不少奇葩問題,就不一一列舉了。
正確配置方法我當前mac使用的truffle版本是Truffle v4.1.11,解決問題過程中,發現了線索,metacoin的項目可以使用webpack來安裝:
$truffle unbox webpack
以上命令運行成功后,可以看到返回結果:
$truffle unbox webpack Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test Run linter: npm run lint Run dev server: npm run dev Build for production: npm run build
從Commands里面可以看到,當前正確的命令是什么,總結之前的操作流程,正確的步驟如下:
1.建立一個獨立的目錄metacoin 2.運行truffle unbox webpack下載合約項目 3.運行truffle compile編譯合約項目(為提高效率,默認只編譯修改過的合約文件, 添加"--all"選項,可以強制編譯所有文件) 4.運行testrpc(新建一個獨立窗口執行) 5.修改truffe.js文件,設置testrpc的地址:localhost和8545 6.運行truffle migrate部署合約到testrpc(此時可以再運行testrpc的窗口看到有日志出現) 6.運行npm run dev啟動服務,在localhost:8080啟動web服務 7.瀏覽器打開localhost:8080,就出現了metacoin的主頁
出現的metcoin主頁是這樣的:
到了這里,metacoin的環境就搭建起來了,剩下的可以繼續對智能合約進行修改,測試和驗證。
多帶帶安裝testrpc-pytestrpc是python開發,使用pip可以很方便的安裝和自動處理依賴關系。testrpc項目地址在這里。也可以通過testrpc的官方向導,多帶帶安裝。
pip install eth-testrpc
安裝的時候遇到以下問題,無論是sudo與否都過不去:
error: [Errno 1] Operation not permitted: "/System/Library/Frameworks/Python.framework/Versions/2.7/LICENSE"
google后發現是系統版本問題(這里),我的mac是10.13.2 High Sierra版本,而mac從10.11.x(EI Capitan)就引入了SIP機制(System Integrity Protection),運行時會對系統的完整性做保護,不允許改變系統目錄,所以需要關掉這個機制,關閉方法:
1.重啟電腦,按住Command+R(直到出現蘋果標志)進入Recovery Mode(恢復模式) 2.左上角菜單里找到實用工具->終端 3.輸入csrutil disable回車 4.重啟Mac (如果想重新啟動SIP機制重復上述步驟改用csrutil enable即可)
解決問題后,重新pip安裝,成功后即可使用testrpc-py命令來使用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95604.html
摘要:以太坊是什么以太坊是一個建立在區塊鏈技術之上,去中心化應用平臺。運行環境以太坊虛擬機是以太坊中智能合約的運行環境。是由以太坊客戶端提供的是典型的開發以太坊時使用的客戶端,基于語言開發。 本文首發于深入淺出區塊鏈社區原文鏈接:以太坊是什么 - 以太坊開發入門指南原文已更新,請讀者前往原文閱讀 很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基于以太坊平臺,以通俗...
摘要:使用部署合約到區塊鏈本文介紹如何使用結合框架部署智能合約是以太坊最流行的開發框架,能夠在本地編譯部署智能合約,使命是讓開發更容易。至此,合約部署以及運行完成。 使用truffle-box部署合約到區塊鏈 本文介紹如何使用truffle結合vue框架部署智能合約 Truffle是以太坊最流行的開發框架,能夠在本地編譯、部署智能合約,使命是讓開發更容易。這里嘗試搭建環境,運行第一個區塊鏈程...
摘要:加入以太坊生態系統,一起征服世界。數字,字符串等要注意的第二件事是以太坊中的是位。一旦你掌握了這些東西,我個人會認為你是一個有能力的以太坊開發者 我經常構建使用以太坊的Web應用程序,我理所當然地認為每天都使用的是神奇的工具集。我們的生態系統正在迅速發展,我認為很多新人都感到不知所措。以太坊是一項了不起的技術,但它也是新生的,而且根本沒有足夠的時間讓專業知識充分滲透。我希望人們知道以太...
摘要:加入以太坊生態系統,一起征服世界。數字,字符串等要注意的第二件事是以太坊中的是位。一旦你掌握了這些東西,我個人會認為你是一個有能力的以太坊開發者 我經常構建使用以太坊的Web應用程序,我理所當然地認為每天都使用的是神奇的工具集。我們的生態系統正在迅速發展,我認為很多新人都感到不知所措。以太坊是一項了不起的技術,但它也是新生的,而且根本沒有足夠的時間讓專業知識充分滲透。我希望人們知道以太...
摘要:本文首發于深入淺出區塊鏈社區原文鏈接一步步教你開發部署第一個去中心化應用寵物商店原文已更新,請讀者前往原文閱讀今天我們來編寫一個完整的去中心化區塊鏈應用本文可以和編寫智能合約結合起來看。 本文首發于深入淺出區塊鏈社區原文鏈接:一步步教你開發、部署第一個去中心化應用(Dapp) - 寵物商店原文已更新,請讀者前往原文閱讀 今天我們來編寫一個完整的去中心化(區塊鏈)應用(Dapps), 本...
閱讀 2036·2021-11-08 13:22
閱讀 2500·2021-09-04 16:40
閱讀 1144·2021-09-03 10:29
閱讀 1709·2019-08-30 15:44
閱讀 2120·2019-08-30 11:13
閱讀 2785·2019-08-29 17:07
閱讀 1963·2019-08-29 14:22
閱讀 1244·2019-08-26 14:00