美文网首页区块链研习社以太坊ETH开发系列
ETH开发实践——合约地址是怎么得来的

ETH开发实践——合约地址是怎么得来的

作者: 糙米薏仁汤 | 来源:发表于2018-07-12 13:27 被阅读8次

    在把智能合约成功部署到ETH网络时,会得到合约地址,那么,这个合约地址是由什么决定的呢?合约地址由合约创建者的地址(sender address)和这笔部署交易中的nonce(发送者的累积交易次数)决定,将sendernonce经过RLP编码后,再进行Keccak-256(SHA3)散列, 最后裁掉前面12个字节即得到合约地址。

    example in js:

    const util = require('ethereumjs-util');
    const rlp = require('rlp');
    
    const address = '0xa16de3199ca3ee1bc1e0926d53c12ffacdf3f2c4';
    const nonce = 0;
    
    // 进行rlp编码
    const encodedRlp = rlp.encode([address, nonce]);
    
    // 进行sha3散列
    const buf = util.sha3(encodedRlp);
    
    // 取buffer第12个字节后面的部分, 结果应该是 0xc2eba72df1584602c6088b1a4e018fc7e7f0f783
    const contractAddress = '0x' + buf.slice(12).toString('hex');
    

    相关文章

      网友评论

        本文标题:ETH开发实践——合约地址是怎么得来的

        本文链接:https://www.haomeiwen.com/subject/ohalpftx.html