以太坊智慧型合約位址生成之CREATE指令

2021-10-06 19:36:28 字數 1092 閱讀 8286

以太坊智慧型合約位址生成是有規則的,是可以提前**的。底層在虛擬機器段是用create命令生成智慧型合約位址的,當然後來虛擬機器公升級有新增了create2指令來生成智慧型合約位址,後面會再寫一篇測試create2.

為了驗證效果,寫了如下**,如果好奇心強烈,可以自行新增測試用例測試一下:

)//根據rlp編碼規則把int變數值轉變成位元組切片

func rlpint2bytes(i int)byte

return byte

} else else if i <= 0xffffff

} return data[:]

}func keccak256hash(data byte) byte

//經測試,這種演算法適合外部賬號建立智慧型合約用

//同樣是適用於簡單的智慧型合約建立另乙個智慧型合約

//但是不適用於用create2 操作碼建立新智慧型合約

func createcontractaddr(senderaddr string, nonce int) (string, error)

buf = rlpint2bytes(nonce)

if buf, err = rlp.encodetobytes(data);err != nil

buf = keccak256hash(buf)

return hex.encodetostring(buf[12:]),nil

}測試**:

func testcreatecontractaddr(t *testing.t)  ,

, ,

, ,

, ,

, //,

} for _, onecase := range testcases

if got != onecase.want

}}

(全文完)

智慧型合約 以太坊

智慧型合約是執行在可複製 共享的賬本上的電腦程式,可以處理資訊,接收 儲存和傳送價值。2.1 什麼是以太坊 以太坊 ethereum 是乙個分布式計算機,有許多的節點,其中的每乙個節點都會執行智慧型合約,然後把結果存在區塊鏈上。由於整個網路是分布式的,且應用就是乙個個的狀態組成,儲存了狀態就有了服務...

以太坊和智慧型合約

1 什麼是以太坊?以太坊的官方 告訴我們 以太坊是乙個執行著智慧型合約的分布式平台 應用程式完全按照程式執行,不存在故障 審查 欺詐或第三方干預的可能性 2 智慧型合約就是可以處理資金的指令碼。開發語言 solidity 整合開發工具ide remix,乙個基於瀏覽器的整合開發環境 開發框架 tru...

以太坊智慧型合約安全

智慧型合約就是自主執行的合約,其條款是用 規定的。雖然這個概念已經存在一段時間了,但至少從1996年nick szabo提出了這一概念以來,直到圖靈完備的以太坊區塊鏈來臨,智慧型合約的使用才變得普遍。對智慧型合約理念的字面解釋造成了 即法律 code is law 的正規化理解,意思是那些智慧型合約...