您好,登錄后才能下訂單哦!
本篇內容介紹了“以太坊賬戶類型怎么判斷”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
以太坊中有兩類賬戶,它們共用同一個地址空間。
外部賬戶,該類賬戶被公鑰-私鑰對控制(人類)。
合約賬戶,該類賬戶被存儲在賬戶中的代碼控制。
外部賬戶的地址是由公鑰決定的,合約賬戶的地址是在創建該合約時確定的。
合約賬戶存儲了代碼,外部賬戶則沒有,除了這點以外,這兩類賬戶對于EVM來說是一樣的。 每個賬戶有一個key-value形式的持久化存儲。其中key和value的長度都是256比特,名字叫做storage.
另外,每個賬戶都有一個以太幣余額(單位是“Wei"),該賬戶余額可以通過向它發送帶有以太幣的交易來改變。
使用web3.eth.getCode()方法可以判斷一個給定的地址的賬戶是外部賬戶,還是合約賬戶。這個函數返回指定地址的代碼,由于外部賬戶沒有代碼,因此僅僅會返回0x
,而合約賬戶將會返回0x
開頭的16進制代碼字符串。例如:
var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8") if(code === '0x') console.log('外部賬戶') else console.log('合約賬戶')
在合約內,可以使用EVM匯編代碼來獲取指定地址處的代碼大小,顯然,普通賬戶地址將返回0
:
contract EzDemo { function isContract(address addr) returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } } |
“以太坊賬戶類型怎么判斷”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。