2018-11-26 ewasm在以太坊私有鏈測(cè)試

本文參考《ewasm/testnet》雀监,《Ewasm community hangout》整理如下:

1辈灼、ewasm私有鏈的搭建

開發(fā)環(huán)境:virtualbox虛擬機(jī) Ubuntu18.0

1.1 編譯ewasm版本的go ethereum

mkdir testnet

cd?testnet

go get -u -v github.com/ethereum/go-ethereum

git clone https://github.com/ewasm/go-ethereum -b ewasm-testnet-milestone1

cd go-ethereum

make geth

cd ..

cp go-ethereum/build/bin/geth .

1.2 編譯ewasm虛擬機(jī)hera

git clone https://github.com/ewasm/hera --recursive -b ewasm-testnet-milestone1

cd hera

mkdir build && cd build

cmake .. -DBUILD_SHARED_LIBS=ON

cmake --build .

cd ../../

cp hera/build/src/libhera.so .

1.3 拉取初始化配置

wget https://raw.githubusercontent.com/ewasm/testnet/master/ewasm-testnet-geth-config.json


ls?

顯示如下內(nèi)容:

ewasm-testnet-geth-config.json geth go-ethereum hera libhera.so

1.4 初始化私有鏈

./geth --datadir ewasm-testnet-data init ewasm-testnet-geth-config.json

1.5 啟動(dòng)私有鏈

./geth \

--vm.ewasm="$HOME/testnet/libhera.so,metering=true,fallback=true" \

--datadir ewasm-testnet-data \

--rpc --rpcapi "web3,net,eth,debug" \

--rpcvhosts="*" --rpcaddr "0.0.0.0" \

--rpccorsdomain "*" \

--nodiscover \

--networkid 66 \

--ipcpath geth1.ipc console

1.6 配置私有鏈

再啟動(dòng)一個(gè)終端旬牲,執(zhí)行

./geth attach $HOME/testnet/ewasm-testnet-data/geth1.ipc

創(chuàng)建兩個(gè)賬號(hào):

personal.newAccount("123")

personal.newAccount("123")

配置coinbase

miner.setEtherbase(eth.accounts[0])

挖礦

miner.start()

查看賬號(hào)信息:

eth.getBalance(eth.accounts[0])


2、metamask的安裝和連接到私有鏈

打開https://metamask.io/安裝chrome插件

安裝成功后蚤吹,在瀏覽器工具欄出現(xiàn)一個(gè)小狐貍的圖標(biāo)

點(diǎn)擊小狐貍球榆,注冊(cè)登錄后,在右上角網(wǎng)絡(luò)中選擇localhost 8545

選擇右上角的圓餅圖標(biāo)菇民,導(dǎo)入賬號(hào)尽楔,類型選擇jsonfile,選擇目錄上上面創(chuàng)建的ewasm-testnet-data下keystore目錄下第练,導(dǎo)入成功后阔馋,顯示當(dāng)前賬號(hào)以太幣(如果開始挖礦了,這個(gè)地址是有幣的)娇掏,當(dāng)前賬號(hào)地址:0xD1726624591b577E1DBa12b770A8762f101d35a5(這個(gè)每個(gè)人的不一樣呕寝,只是為了和下面的對(duì)應(yīng))

3、ewasm合約的發(fā)布和調(diào)用

3.1 發(fā)布合約

打開http://ewasm.ethereum.org/studio/

value輸入:10000

Contract Code (WAST)輸入:

(module

? (type $t0 (func (param i32 i32)))

? (type $t1 (func (result i64)))

? (type $t2 (func))

? (type $t3 (func (param i64)))

? (import "ethereum" "storageStore" (func $ethereum.storageStore (type $t0)))

? (import "ethereum" "storageLoad" (func $ethereum.storageLoad (type $t0)))

? (import "ethereum" "getBlockNumber" (func $ethereum.getBlockNumber (type $t1)))

? (import "ethereum" "useGas" (func $ethereum.useGas (type $t3)))

? (func $main (export "main") (type $t2)

? ? (call $ethereum.useGas

? ? ? (i64.const 19))

? ? (i32.store

? ? ? (i32.const 512)

? ? ? (i32.const 88))

? ? (i32.store

? ? ? (i32.const 1024)

? ? ? (i32.const 99))

? ? (i64.store

? ? ? (i32.const 32)

? ? ? (call $ethereum.getBlockNumber))

? ? (call $ethereum.storageStore

? ? ? (i32.const 512)

? ? ? (i32.const 32))

? ? (call $ethereum.storageLoad

? ? ? (i32.const 512)

? ? ? (i32.const 2048))

? ? (call $ethereum.storageStore

? ? ? (i32.const 1024)

? ? ? (i32.const 2048)))

? (memory $memory (export "memory") 1))


然后點(diǎn)擊submit transaction

打開了metamask窗口婴梧,確認(rèn)提交下梢,獲得交易hash:0xf55fc03132aab55593f10a022db330c36e75812775637b21317aff0262d20c2a

3.2 查詢合約信息

打開geth客戶端:

./geth attach http://127.0.0.1:8545

查看合約交易:

eth.getTransactionReceipt("0xf55fc03132aab55593f10a022db330c36e75812775637b21317aff0262d20c2a")

獲得合約地址:

{ blockHash:"0x2c2fab382202ad475fdf0fd73070e8272d34d6665025570f339df029afbe2955", blockNumber:1976, contractAddress:"0x4d913aafa689a69307fef8b5e066166a82be422f", cumulativeGasUsed:119736, from:"0x12cb7d4e35a280e27e9b7061dc41b9cacd93be85", gasUsed:119736, logs: [], logsBloom:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", status:"0x1", to:null, transactionHash:"0xf55fc03132aab55593f10a022db330c36e75812775637b21317aff0262d20c2a", transactionIndex:0}

其中合約地址是0x4d913aafa689a69307fef8b5e066166a82be422f

獲得合約代碼:

eth.getCode("0x4d913aafa689a69307fef8b5e066166a82be422f")

3.3 調(diào)用合約

打開http://ewasm.ethereum.org/studio/

Destination Address輸入:0x4d913aafa689a69307fef8b5e066166a82be422f (這個(gè)就是上面獲取的合約地址)

value輸入:10000

Contract Code (WAST)輸入空

然后點(diǎn)擊submit transaction

打開了metamask窗口客蹋,確認(rèn)提交,獲得交易hash:0xbde239cd7c48f422070f43a9c586c43c79789ef2bbebc9de403c02eb1aafc281

在私有鏈上還沒有找到方法查看當(dāng)前合約執(zhí)行的結(jié)果

solidity是通過abi調(diào)用查看接口孽江,這里還沒有搞明白讶坯,不過后面如果不是有私有鏈,而是是有以太坊提供的ewasm testnet就可以查看

4岗屏、使用ewasm testnet發(fā)布和調(diào)用合約

4.1 設(shè)置metamask調(diào)用ewasm testnet

選擇private network辆琅,在new rpc url中填入:

http://ewasm.ethereum.org:8545

選擇save

查看當(dāng)前metamask帳號(hào)的地址:

0xD1726624591b577E1DBa12b770A8762f101d35a5

打開http://ewasm.ethereum.org/faucet/

查看user下的地址,應(yīng)該也是0xD1726624591b577E1DBa12b770A8762f101d35a5

如果不是就需要在metamask的設(shè)置里面reset Account

選擇request 1 ether from faucet这刷,給自己的賬戶轉(zhuǎn)1個(gè)以太幣

在http://ewasm.ethereum.org/explorer/查看Recent Transactions婉烟,這里顯示了剛才的轉(zhuǎn)賬信息

查看metamask的賬戶已經(jīng)有了1 eth

4.2 發(fā)布合約

打開http://ewasm.ethereum.org/studio/

value輸入:10000

Contract Code (WAST)輸入:

(module

? (type $t0 (func (param i32 i32)))

? (type $t1 (func (result i64)))

? (type $t2 (func))

? (type $t3 (func (param i64)))

? (import "ethereum" "storageStore" (func $ethereum.storageStore (type $t0)))

? (import "ethereum" "storageLoad" (func $ethereum.storageLoad (type $t0)))

? (import "ethereum" "getBlockNumber" (func $ethereum.getBlockNumber (type $t1)))

? (import "ethereum" "useGas" (func $ethereum.useGas (type $t3)))

? (func $main (export "main") (type $t2)

? ? (call $ethereum.useGas

? ? ? (i64.const 19))

? ? (i32.store

? ? ? (i32.const 512)

? ? ? (i32.const 88))

? ? (i32.store

? ? ? (i32.const 1024)

? ? ? (i32.const 99))

? ? (i64.store

? ? ? (i32.const 32)

? ? ? (call $ethereum.getBlockNumber))

? ? (call $ethereum.storageStore

? ? ? (i32.const 512)

? ? ? (i32.const 32))

? ? (call $ethereum.storageLoad

? ? ? (i32.const 512)

? ? ? (i32.const 2048))

? ? (call $ethereum.storageStore

? ? ? (i32.const 1024)

? ? ? (i32.const 2048)))

? (memory $memory (export "memory") 1))


然后點(diǎn)擊submit transaction

打開了metamask窗口,確認(rèn)提交

在http://ewasm.ethereum.org/explorer找到交易:

http://ewasm.ethereum.org/explorer/tx/0xc53eef833c124ce0532d945ea08fcf740aba3ca410b7a77daed417079d711465

查看合約:http://ewasm.ethereum.org/explorer/account/0x30E54056A60C70a1548ff4589ADA634dd0119aa3

4.3 調(diào)用合約:

打開http://ewasm.ethereum.org/studio/

Destination Address輸入:0x30E54056A60C70a1548ff4589ADA634dd0119aa3

value輸入:10000

Contract Code (WAST)輸入空

然后點(diǎn)擊submit transaction

打開了metamask窗口崭歧,確認(rèn)提交

同樣查看合約:http://ewasm.ethereum.org/explorer/account/0x30E54056A60C70a1548ff4589ADA634dd0119aa3

這個(gè)時(shí)候Storage有值了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隅很,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子率碾,更是在濱河造成了極大的恐慌叔营,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件所宰,死亡現(xiàn)場(chǎng)離奇詭異绒尊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仔粥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門婴谱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人躯泰,你說(shuō)我怎么就攤上這事谭羔。” “怎么了麦向?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵瘟裸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我诵竭,道長(zhǎng)话告,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任卵慰,我火速辦了婚禮沙郭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裳朋。我一直安慰自己病线,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著送挑,像睡著了一般夜矗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上让虐,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音罢荡,去河邊找鬼赡突。 笑死,一個(gè)胖子當(dāng)著我的面吹牛区赵,可吹牛的內(nèi)容都是我干的惭缰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼笼才,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漱受!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骡送,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昂羡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后摔踱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐先,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年派敷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛹批。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篮愉,死狀恐怖腐芍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情试躏,我是刑警寧澤猪勇,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站冗酿,受9級(jí)特大地震影響埠对,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裁替,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一项玛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弱判,春花似錦襟沮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膀跌。三九已至,卻和暖如春固灵,著一層夾襖步出監(jiān)牢的瞬間捅伤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工巫玻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丛忆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓仍秤,卻偏偏與公主長(zhǎng)得像熄诡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诗力,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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