当提交智能合约部署后,会返回智能合约的地址。智能合约地址的生成逻辑在eth.api.go的submitTransaction函数中:文章来源地址https://www.toymoban.com/news/detail-543268.html
func submitTransaction(ctx context.Context, b Backend, tx *types.Transaction) (common.Hash, error) {
if err := b.SendTx(ctx, tx); err != nil { //提交交易
return common.Hash{}, err
}
if tx.To() == nil { //交易成功后,交易的目标地址是空的话,说明是智能合约部署
signer := types.MakeSigner(b.ChainConfig(), b.CurrentBlock().Number())
from, err := types.Sender(signer, tx) //获取交易的发送地址
if err != nil {
return common.Hash{}, err
}
addr := crypto.CreateAddress(from, tx.Nonce()) //利用发送地址和nonce生成新的地址
log.Info("Submitted contract creation", "fullhash", tx.Hash().Hex(), "contract", addr.Hex())
} else {
log.Info("Submitted transaction", "fullhash", tx.Hash().Hex(), "recipient", tx.To())
}
return tx.Hash(), nil
文章来源:https://www.toymoban.com/news/detail-543268.html
到了这里,关于【区块链 | 智能合约】Ethereum源代码 - 智能合约地址生成算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!