成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mac下基于testrpc和truffle的以太坊智能合約開發(fā)環(huán)境搭建

MasonEast / 1572人閱讀

摘要:原文地址石匠的是一個(gè)基于開發(fā)的一套智能合約開發(fā)框架,使用語言編寫合約。預(yù)期通過和搭建一個(gè)只能合約的開發(fā)測試環(huán)境,部署官方的測試合約進(jìn)行驗(yàn)證和后續(xù)的測試學(xué)習(xí)。

原文地址:石匠的blog

truffle是一個(gè)基于Javascript開發(fā)的一套智能合約開發(fā)框架,使用Solidity語言編寫合約。truffle有一套自動的項(xiàng)目構(gòu)建機(jī)制,集成了開發(fā),測試和部署的各個(gè)流程細(xì)節(jié),不用開發(fā)人員關(guān)注。truffle使用說明.

testrpc是基于pyethereum,可以快速的搭建一個(gè)模擬以太坊的測試網(wǎng)絡(luò),并且預(yù)制了若干存有代幣的賬號,可以直接使用。不像geth是一個(gè)真正的以太網(wǎng)網(wǎng)絡(luò),testrpc在內(nèi)存中模擬了以太坊網(wǎng)絡(luò),運(yùn)行速度非??欤苓m合做智能合約的開發(fā)和測試,待測試完整后再上geth會比較高效。

預(yù)期通過truffle和testrpc搭建一個(gè)只能合約的開發(fā)測試環(huán)境,部署官方的測試合約metacoin進(jìn)行驗(yàn)證和后續(xù)的測試學(xué)習(xí)。

truffle安裝

truffle使用npm安裝,所以在mac上先安裝npm:

brew install npm

然后依次安裝truffle和testrpc

npm install -g truffle
npm install -g ethereumjs-testrpc

truffle安裝好以后,準(zhǔn)備安裝默認(rèn)的metacoin做測試。

truffle版本變更的坑

我當(dāng)前用的最新版本是:

Truffle v4.1.11 (core: 4.1.11)
Solidity v0.4.24 (solc-js)

按照之前的老版本truffle使用流程進(jìn)行搭建和部署(比如這里介紹的),大概步驟如下:

1.建立一個(gè)獨(dú)立的目錄
2.運(yùn)行truffle init創(chuàng)建默認(rèn)的合約項(xiàng)目
3.運(yùn)行truffle compile編譯合約項(xiàng)目
4.運(yùn)行testrpc
5.運(yùn)行truffle deploy部署合約到testrpc
6.運(yùn)行truffle serve啟動服務(wù),在localhost:8080啟動web服務(wù)
7.瀏覽器打開localhost:8080,就出現(xiàn)了metacoin的主頁

按照以上步驟,出現(xiàn)了各種問題,比如:

truffle init生成的contracts目錄中并沒有生成app目錄,而且也沒有metacoin的合約sol文件, metacoin已經(jīng)獨(dú)立成一個(gè)多帶帶的box,需要多帶帶安裝 truffle unbox webpack(注意:不是truffle unbox metacoin)。

truffle deploy運(yùn)行報(bào)錯(cuò):

No network specified. Cannot determine current network.

解決辦法是需要再truffle.js中設(shè)置網(wǎng)絡(luò)參數(shù)如下:

module.exports = {
   networks: {
   development: {
   host: "localhost",
   port: 8545,
   network_id: "*" // Match any network id
  }
 }
};

truffle serve運(yùn)行報(bào)錯(cuò):

TypeError: fsevents is not a constructor

最后再github的官方issue里面找到了一種解決辦法,就是強(qiáng)行修改js代碼,不適用useFsEvents參數(shù),如下:

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啟動后,本來應(yīng)該是要在localhost:8080看到metacoin的范例主頁的,但是訪問后,只能得到:

Cannot get /

找各種奇葩問的解決方案的時(shí)候,在github官方issue看到了說是官方已經(jīng)放棄truffle serve,不應(yīng)該再采用這種方式啟動服務(wù)了,前面跟著老版本的方法做就很容易入坑了。

操作過程中還遇到不少奇葩問題,就不一一列舉了。

正確配置方法

我當(dāng)前mac使用的truffle版本是Truffle v4.1.11,解決問題過程中,發(fā)現(xiàn)了線索,metacoin的項(xiàng)目可以使用webpack來安裝:

$truffle unbox webpack

以上命令運(yùn)行成功后,可以看到返回結(jié)果:

$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里面可以看到,當(dāng)前正確的命令是什么,總結(jié)之前的操作流程,正確的步驟如下:

1.建立一個(gè)獨(dú)立的目錄metacoin
2.運(yùn)行truffle unbox webpack下載合約項(xiàng)目
3.運(yùn)行truffle compile編譯合約項(xiàng)目(為提高效率,默認(rèn)只編譯修改過的合約文件, 添加"--all"選項(xiàng),可以強(qiáng)制編譯所有文件)
4.運(yùn)行testrpc(新建一個(gè)獨(dú)立窗口執(zhí)行)
5.修改truffe.js文件,設(shè)置testrpc的地址:localhost和8545
6.運(yùn)行truffle migrate部署合約到testrpc(此時(shí)可以再運(yùn)行testrpc的窗口看到有日志出現(xiàn))
6.運(yùn)行npm run dev啟動服務(wù),在localhost:8080啟動web服務(wù)
7.瀏覽器打開localhost:8080,就出現(xiàn)了metacoin的主頁

出現(xiàn)的metcoin主頁是這樣的:

到了這里,metacoin的環(huán)境就搭建起來了,剩下的可以繼續(xù)對智能合約進(jìn)行修改,測試和驗(yàn)證。

多帶帶安裝testrpc-py

testrpc是python開發(fā),使用pip可以很方便的安裝和自動處理依賴關(guān)系。testrpc項(xiàng)目地址在這里。也可以通過testrpc的官方向?qū)В鄮О惭b。

pip install eth-testrpc

安裝的時(shí)候遇到以下問題,無論是sudo與否都過不去:

error: [Errno 1] Operation not permitted: "/System/Library/Frameworks/Python.framework/Versions/2.7/LICENSE"

google后發(fā)現(xiàn)是系統(tǒng)版本問題(這里),我的mac是10.13.2 High Sierra版本,而mac從10.11.x(EI Capitan)就引入了SIP機(jī)制(System Integrity Protection),運(yùn)行時(shí)會對系統(tǒng)的完整性做保護(hù),不允許改變系統(tǒng)目錄,所以需要關(guān)掉這個(gè)機(jī)制,關(guān)閉方法:

1.重啟電腦,按住Command+R(直到出現(xiàn)蘋果標(biāo)志)進(jìn)入Recovery Mode(恢復(fù)模式)
2.左上角菜單里找到實(shí)用工具->終端
3.輸入csrutil disable回車
4.重啟Mac
(如果想重新啟動SIP機(jī)制重復(fù)上述步驟改用csrutil enable即可)

解決問題后,重新pip安裝,成功后即可使用testrpc-py命令來使用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95604.html

相關(guān)文章

  • 以太是什么 - 以太開發(fā)入門指南

    摘要:以太坊是什么以太坊是一個(gè)建立在區(qū)塊鏈技術(shù)之上,去中心化應(yīng)用平臺。運(yùn)行環(huán)境以太坊虛擬機(jī)是以太坊中智能合約的運(yùn)行環(huán)境。是由以太坊客戶端提供的是典型的開發(fā)以太坊時(shí)使用的客戶端,基于語言開發(fā)。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊是什么 - 以太坊開發(fā)入門指南原文已更新,請讀者前往原文閱讀 很多同學(xué)已經(jīng)躍躍欲試投入到區(qū)塊鏈開發(fā)隊(duì)伍當(dāng)中來,可是又感覺無從下手,本文將基于以太坊平臺,以通俗...

    tomlingtm 評論0 收藏0
  • 使用truffle-box部署合約到區(qū)塊鏈并運(yùn)行

    摘要:使用部署合約到區(qū)塊鏈本文介紹如何使用結(jié)合框架部署智能合約是以太坊最流行的開發(fā)框架,能夠在本地編譯部署智能合約,使命是讓開發(fā)更容易。至此,合約部署以及運(yùn)行完成。 使用truffle-box部署合約到區(qū)塊鏈 本文介紹如何使用truffle結(jié)合vue框架部署智能合約 Truffle是以太坊最流行的開發(fā)框架,能夠在本地編譯、部署智能合約,使命是讓開發(fā)更容易。這里嘗試搭建環(huán)境,運(yùn)行第一個(gè)區(qū)塊鏈程...

    supernavy 評論0 收藏0
  • Web程序員如何入門以太開發(fā)

    摘要:加入以太坊生態(tài)系統(tǒng),一起征服世界。數(shù)字,字符串等要注意的第二件事是以太坊中的是位。一旦你掌握了這些東西,我個(gè)人會認(rèn)為你是一個(gè)有能力的以太坊開發(fā)者 我經(jīng)常構(gòu)建使用以太坊的Web應(yīng)用程序,我理所當(dāng)然地認(rèn)為每天都使用的是神奇的工具集。我們的生態(tài)系統(tǒng)正在迅速發(fā)展,我認(rèn)為很多新人都感到不知所措。以太坊是一項(xiàng)了不起的技術(shù),但它也是新生的,而且根本沒有足夠的時(shí)間讓專業(yè)知識充分滲透。我希望人們知道以太...

    SwordFly 評論0 收藏0
  • Web程序員如何入門以太開發(fā)

    摘要:加入以太坊生態(tài)系統(tǒng),一起征服世界。數(shù)字,字符串等要注意的第二件事是以太坊中的是位。一旦你掌握了這些東西,我個(gè)人會認(rèn)為你是一個(gè)有能力的以太坊開發(fā)者 我經(jīng)常構(gòu)建使用以太坊的Web應(yīng)用程序,我理所當(dāng)然地認(rèn)為每天都使用的是神奇的工具集。我們的生態(tài)系統(tǒng)正在迅速發(fā)展,我認(rèn)為很多新人都感到不知所措。以太坊是一項(xiàng)了不起的技術(shù),但它也是新生的,而且根本沒有足夠的時(shí)間讓專業(yè)知識充分滲透。我希望人們知道以太...

    kidsamong 評論0 收藏0
  • 一步步教你開發(fā)、部署第一個(gè)去中心化應(yīng)用(Dapp) - 寵物商店

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接一步步教你開發(fā)部署第一個(gè)去中心化應(yīng)用寵物商店原文已更新,請讀者前往原文閱讀今天我們來編寫一個(gè)完整的去中心化區(qū)塊鏈應(yīng)用本文可以和編寫智能合約結(jié)合起來看。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:一步步教你開發(fā)、部署第一個(gè)去中心化應(yīng)用(Dapp) - 寵物商店原文已更新,請讀者前往原文閱讀 今天我們來編寫一個(gè)完整的去中心化(區(qū)塊鏈)應(yīng)用(Dapps), 本...

    vibiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<