如何部署一個(gè)智能合約

智能合約的代碼寫完后,要編譯成bytecode。創(chuàng)建合約時(shí),外部帳戶發(fā)起一個(gè)轉(zhuǎn)賬交易到0x0的地址,轉(zhuǎn)賬金額(“VALUE”域)是0,但是要支付汽油費(fèi),合約的代碼放在data域里。


合約部署后會(huì)創(chuàng)建一個(gè)合約賬戶,合約賬戶里保存著智能合約的可執(zhí)行字節(jié)碼(編譯之后的,在EVM里執(zhí)行),并且有存儲(chǔ)空間,合約能對(duì)合約賬戶的空間寫入信息.而abi是一個(gè)接口結(jié)構(gòu),利用abiDefinition可以創(chuàng)建調(diào)用該合約的結(jié)構(gòu).abi應(yīng)該由合約所有方自己保存和提供.


合約的數(shù)據(jù)正常情況下,需要全部放到鏈上的,例如以太坊的是statedb就是用來存放智能合約的狀態(tài)的,statedb的根就在block header里面,用以保證數(shù)據(jù)的不可篡改。那么監(jiān)督借點(diǎn)在接到曠工節(jié)點(diǎn)的塊同步請(qǐng)求的時(shí)候,需要replay交易,然后監(jiān)督節(jié)點(diǎn)也從新跑智能合約,完成statedb的狀態(tài)轉(zhuǎn)移,最后計(jì)算statedb的根,用來跟曠工節(jié)點(diǎn)同步的根對(duì)比,一致則將塊放到鏈上,此時(shí),你應(yīng)該知道存儲(chǔ)合約的狀態(tài)其實(shí)很簡(jiǎn)單,只需要一個(gè)本地kv存儲(chǔ),例如leveldb或者couchdb等,提供給合約調(diào)用即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。