以太坊環(huán)境搭建(Winodws版)3

上一篇鏈接: http://www.reibang.com/p/262615eb62a3

4超埋、Ganache+Truffle創(chuàng)建智能合約

前面2個小錢包,可以互相連通尖坤,轉(zhuǎn)賬了盔粹,但是我們還需要定制功能儡羔,也就是發(fā)布智能合約

這里我們用Ganache來創(chuàng)建賬戶、監(jiān)測測試

?1斟览、安裝Ganache

Ganache是一個測試客戶端毁腿,基于本地內(nèi)存執(zhí)行的,擁有良好的界面,他能對Transation立即執(zhí)行已烤,迅速的創(chuàng)建和調(diào)用自己編寫的智能合約鸠窗,提升測試效率。

ganache的使用:

啟動會自動創(chuàng)建私有鏈胯究,在這個鏈中為你聲明了10個擁有100個eth的賬戶稍计,你可以通過其RPChttp://127.0.0.1:7545來連接這個鏈,用來進行操作

優(yōu)點:就是你不用自己進行什么配置唐片,簡單

缺點:在上面進行的所有操作丙猬,在下次重新啟動時就會被清空,不想自己配置的私有鏈费韭,數(shù)據(jù)都保存在本地

Ganache 也是一個Javascript編寫的Nodejs項目茧球,Linux 系統(tǒng) 安裝方式:?npm install -g truffle

windows 環(huán)境下可以直接進行下載安裝,下載地址如下:這個地址很慢星持,建議從別的網(wǎng)站下載

??https://github.com/trufflesuite/ganache/releases

下載安裝后打開抢埋,會給我們創(chuàng)建10個賬號,界面如下:

還記得我們一開始創(chuàng)建創(chuàng)世塊督暂,啟動客戶端揪垄,用personal.newAccount("123456")創(chuàng)建的賬號嗎?沒錯這個客戶端直接幫我們建了10個

現(xiàn)在將我們修改Ganache端口port和NetworkID:4528988逻翁,注意NetworkID不要和之前一樣饥努,否則會影響后面的測試,開啟自動挖礦

2八回、使用小狐貍連接Ganache

切換到8489端口

使用1號賬戶的私鑰登錄小狐貍酷愧,

給第2個賬戶發(fā)送10塊,這個傳輸會立即完成缠诅,不像我們之前需要手動開啟挖礦溶浴,等待幾秒。

可以看到傳輸?shù)男畔?/p>

3管引、安裝Truffle士败,部署智能合約

Truffle是現(xiàn)在比較流行的一個Solidity智能合約開發(fā)框架,是使用Javascript編寫的Nodejs項目褥伴。

truffle的安裝需要首先裝有:nodejs谅将、npm、ganache和truffle噩翠。

使用如下命令安裝 Truffle:

// 如果淘寶鏡像連不上戏自,需要更換為原始鏡像

>?npm config set registry https://registry.npmjs.org/

>?npm install -g ganache-cli

> npm install -g truffle

//?查看 Truffle 版本

>?truffle version

創(chuàng)建測試工程:新建文件夾,執(zhí)行命令創(chuàng)建工程伤锚。

網(wǎng)上提供了2種方式擅笔,推薦第2種志衣,淘寶鏡像下載不了,需要更好到初始鏡像猛们,所以我第一次下載用的第3種念脯,git的方式下載

1、truffle init //初始化 空 Truffle 工程弯淘,此處我們使用下面這種方式初始化

2绿店、truffle unbox webpack//下載metacoin 的示例代碼,如果使用這種方法則不用建立空工程

親測好用庐橙,不過本文的后面測試還是用的第2條命令

3假勿、npm install -g truffle-expect truffle-config web3

下載完成后,可以用我們喜歡的編譯器打開态鳖,這里我用的是VS Code

修改truffle-config.js, 讓端口設(shè)置和Ganache一致

執(zhí)行命令

// 編譯

> truffle compile

// 部署

>?truffle migrate

// 測試

> truffle test


如果合約更新看不到打印信息转培,需要加參數(shù)--reset

truffle migrate --reset

truffle migrate[--reset][--f <number>][--to <number>][--network <name>][--compile-all][--verbose-rpc][--dry-run][--interactive]

除非指定,否則將從上次完成的遷移開始浆竭。有關(guān)詳細信息浸须,請參閱(遷移)合約部署?。

選項:

--reset: 從頭開始運行所有遷移邦泄,而不是從上次完成的遷移中運行删窒。

--f?<number>: 從特定的遷移中運行合約。該數(shù)字指的是遷移文件的前綴顺囊。

--to?<number>: 運行合約到特定的遷移肌索。該數(shù)字指的是遷移文件的前綴。

--network?<name>: 指定要使用的網(wǎng)絡(luò)特碳,網(wǎng)絡(luò)名稱必須存在于配置中驶社。

--compile-all: 編譯所有合約,而不是智能地選擇需要編譯的合約测萎。

--verbose-rpc: 記錄Truffle和以太坊客戶端之間的通信日志。

--dry-run: 分叉(fork - 復(fù)制)指定的網(wǎng)絡(luò)并僅執(zhí)行測試遷移届巩。

--interactive: 在 dry run 之后硅瞧,提示確認用戶是否要繼續(xù)。

下面是執(zhí)行成功結(jié)果

D:\Program Files\Geth\Truffle>truffle compile

Compiling your contracts...

===========================

> Compiling .\contracts\ConvertLib.sol

> Artifacts written to D:\Program Files\Geth\Truffle\build\contracts

> Compiled successfully using:

???- solc: 0.5.12+commit.7709ece9.Emscripten.clang

D:\Program Files\Geth\Truffle>

D:\Program Files\Geth\Truffle>truffle migrate

Compiling your contracts...

===========================

> Compiling .\contracts\ConvertLib.sol

> Artifacts written to D:\Program Files\Geth\Truffle\build\contracts

> Compiled successfully using:

???- solc: 0.5.12+commit.7709ece9.Emscripten.clang

Starting migrations...

======================

> Network name:????'development'

> Network id:??????4528988

> Block gas limit: 0x6691b7

1_initial_migration.js

======================

???Deploying 'Migrations'

???----------------------

???> transaction hash:????0x3ddd44ce6b44d94156d06a6046f62f7f3a85791879fb687692a3b5c089734885

???> Blocks: 0????????????Seconds: 0

???> contract address:????0xf1EE2F4618abF1229f84a94daaaF2EfA933ad884

???> block number:????????2

???> block timestamp:?????1577353142

???> account:?????????????0x25c2B80cfb76377d818F12F3E15AE5035Bd9987F

???> balance:?????????????89.99451518

???> gas used:????????????263741

???> gas price:???????????20 gwei

???> value sent:??????????0 ETH

???> total cost:??????????0.00527482 ETH

???> Saving migration to chain.

???> Saving artifacts

???-------------------------------------

???> Total cost:??????????0.00527482 ETH

2_deploy_contracts.js

=====================

???Deploying 'ConvertLib'

???----------------------

???> transaction hash:????0xea47a933227c74ad1209d5a671baa2e2f6d19b937c877c55561494b997e4e72d

???> Blocks: 0????????????Seconds: 0

???> contract address:????0x3c82bd5bf546De4A082D6959877b186B5aE7bdee

???> block number:????????4

???> block timestamp:?????1577353142

???> account:?????????????0x25c2B80cfb76377d818F12F3E15AE5035Bd9987F

???> balance:?????????????89.99155524

???> gas used:????????????105974

???> gas price:???????????20 gwei

???> value sent:??????????0 ETH

???> total cost:??????????0.00211948 ETH

???Linking

???-------

???* Contract: MetaCoin <--> Library: ConvertLib (at address: 0x3c82bd5bf546De4A082D6959877b186B5aE7bdee)

???Deploying 'MetaCoin'

???--------------------

???> transaction hash:????0xf76ebd8fbcdda92733553659377daf2f7f23631c6a05508b519ba6a4f0c375f3

???> Blocks: 0????????????Seconds: 0

???> contract address:????0xa63784460D45a944d5F75c7e40e3a367A4a43233

???> block number:????????5

???> block timestamp:?????1577353142

???> account:?????????????0x25c2B80cfb76377d818F12F3E15AE5035Bd9987F

???> balance:?????????????89.9847413

???> gas used:????????????340697

???> gas price:???????????20 gwei

???> value sent:??????????0 ETH

???> total cost:??????????0.00681394 ETH

???> Saving migration to chain.

???> Saving artifacts

???-------------------------------------

???> Total cost:??????????0.00893342 ETH

Summary

=======

> Total deployments:???3

> Final cost:??????????0.01420824 ETH

D:\Program Files\Geth\Truffle>truffle test

Using network 'development'.

Compiling your contracts...

===========================

> Compiling .\contracts\ConvertLib.sol

> Compiling .\test\TestMetacoin.sol

??TestMetacoin

????√ testInitialBalanceUsingDeployedContract (77ms)

????√ testInitialBalanceWithNewMetaCoin (122ms)

??Contract: MetaCoin

????√ should put 10000 MetaCoin in the first account

????√ should call a function that depends on a linked library (49ms)

????√ should send coin correctly (134ms)

??5 passing (7s)

D:\Program Files\Geth\Truffle>

去Ganache上看一下運行結(jié)果:

● ?Accounts標(biāo)簽:第一個賬戶里ETH略有減少恕汇,因為交易消耗了gas

● ?Blocks標(biāo)簽:Ganache是自動挖礦腕唧,生成了6個新區(qū)塊,每個區(qū)塊里有一個交易

● ?Transactions標(biāo)簽:有6筆新交易瘾英,可以點開看交易詳情

● ?Logs標(biāo)簽:顯示交易和挖礦日志

至此合約的創(chuàng)建與測試已完成枣接。

點開一個交易記錄

?最后使用如下命令啟動 剛剛下載webpack 示例代碼

npm run dev

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缺谴,隨后出現(xiàn)的幾起案子但惶,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膀曾,死亡現(xiàn)場離奇詭異县爬,居然都是意外死亡,警方通過查閱死者的電腦和手機添谊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門财喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斩狱,你說我怎么就攤上這事耳高。” “怎么了所踊?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵泌枪,是天一觀的道長。 經(jīng)常有香客問我污筷,道長工闺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任瓣蛀,我火速辦了婚禮陆蟆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惋增。我一直安慰自己叠殷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布诈皿。 她就那樣靜靜地躺著林束,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稽亏。 梳的紋絲不亂的頭發(fā)上壶冒,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音截歉,去河邊找鬼胖腾。 笑死,一個胖子當(dāng)著我的面吹牛瘪松,可吹牛的內(nèi)容都是我干的咸作。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼宵睦,長吁一口氣:“原來是場噩夢啊……” “哼记罚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起壳嚎,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤桐智,失蹤者是張志新(化名)和其女友劉穎末早,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酵使,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡荐吉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了口渔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片样屠。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缺脉,靈堂內(nèi)的尸體忽然破棺而出痪欲,到底是詐尸還是另有隱情,我是刑警寧澤攻礼,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布业踢,位于F島的核電站,受9級特大地震影響礁扮,放射性物質(zhì)發(fā)生泄漏知举。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一太伊、第九天 我趴在偏房一處隱蔽的房頂上張望雇锡。 院中可真熱鬧,春花似錦僚焦、人聲如沸锰提。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽立肘。三九已至,卻和暖如春名扛,著一層夾襖步出監(jiān)牢的瞬間谅年,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工肮韧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踢故,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓惹苗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耸峭。 傳聞我的和親對象是個殘疾皇子桩蓉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容