【区块链 | 智能合约】Ethereum源代码 - 智能合约地址生成算法

这篇具有很好参考价值的文章主要介绍了【区块链 | 智能合约】Ethereum源代码 - 智能合约地址生成算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当提交智能合约部署后,会返回智能合约的地址。智能合约地址的生成逻辑在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

到了这里,关于【区块链 | 智能合约】Ethereum源代码 - 智能合约地址生成算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【区块链 | 智能合约】Ethereum源代码(8)- Ethereum服务和以太坊P2P协议发送广播源码分析

    在“【区块链 | 智能合约】Ethereum源代码(2)- go-ethereum 客户端入口代码和Node分析”一文中,我们提到Ethereum作为一个service,被Node 注册进去。Node start的时候会启动其注册的所有服务,Ethereum service也是一样。 初始化方法

    2024年01月21日
    浏览(52)
  • 听 GPT 讲 Go-Ethereum 源代码 (9)

    分享更多精彩内容,欢迎关注! 在go-ethereum项目中,core/rawdb/chain_iterator.go文件的作用是定义了区块链迭代器的结构体及相关方法。 该文件中主要定义了两个结构体,blockTxHashes和transactionIndex: blockTxHashes:该结构体是用于存储一个区块中的交易哈希值列表。它包含了一个区块

    2024年03月19日
    浏览(40)
  • 智能送药小车完整版【电赛、课设】开源(含源代码)

    目录 任务要求 摘要 1、前言 2、系统方案设计 3、理论分析与计算 3.1 病房选择: 3.2 电机引脚及状态 3.3 灰度传感器及电机状态 4、系统电路设计与仿真 4.1系统硬件框图 4.2 单片机最小板电路 4.3 驱动电路设计 4.4 灰度传感器设计 5、系统软件设计 6、系统测试及结果分析 6.1 系

    2024年02月09日
    浏览(49)
  • 温室花卉种植系统springboot框架jsp鲜花养殖智能管理java源代码

    本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 基于Git无线传感网络的温室花卉种植智能控制系统 系统有1权限:管理员 首页登录 个人中心:个人资料、基

    2024年02月13日
    浏览(40)
  • 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

    原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 设计编号:C0053 1.可以检测环境中温湿度,气压,一氧化碳,空气质量,烟雾浓度和光照强度; 2.将测量的值显示在屏幕上,数据上报机智云平台可以通过手机APP实时查看当前的状态; 3.通过光敏传感器检测光照强度,

    2024年02月11日
    浏览(111)
  • 区块链智能合约代码示例

            以下是一个简单的区块链智能合约代码示例: 该合约具有以下功能: 定义了一个名为 SimpleContract 的合约。 定义了一个名为 myData 的公共整数变量。 定义了一个名为 setMyData 的公共函数,该函数接受一个 uint 类型的参数 newData,并将其设置为 myData 的新值。 在 So

    2024年02月14日
    浏览(44)
  • 微信智能点餐小程序系统软件开发源代码案例以及微信智能订餐小程序系统需要哪些功能

    随着科技的发展和人们生活节奏的加快,智能点餐APP逐渐成为餐饮行业的热门应用。不仅为顾客提供了便捷的点餐服务,还能帮助餐厅提高效率,降低成本。因此,开发一款智能订餐app具有很高的商业价值和社会效益。   开发一款功能齐全、用户体验优秀的智能点餐APP,满足

    2024年04月27日
    浏览(34)
  • C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

    Peter Hart  Nils Nilsson  Bertram Raphael  参考: C#,人工智能(AI)机器人路径规划(Path Planning)的ARA*(Anytime Replanning A* Algorithm)算法与源程序 https://blog.csdn.net/beijinghorn/article/details/125464754 A*算法最初由斯坦福研究院(Stanford Institute)的  Peter Hart,Nils Nilsson,Bertram Raphael  发表于

    2024年01月18日
    浏览(64)
  • 11M 以太坊 ethereum OpenZeppelin : 开发智能合约

    • 设置项目 • 第一份合同 • 编译 Solidity • 添加更多合约 • 使用 OpenZeppelin 合约 • OpenZeppelin Tutorials 教程 • Contact 联系方式 创建项目后的第一步是安装开发工具。 以太坊最流行的开发框架是Hardhat,我们用ethers.js介绍了它最常见的用途。下一个最受欢迎的是使用web3.js的

    2024年02月11日
    浏览(40)
  • 11U 以太坊 ethereum OpenZeppelin : 升级智能合约

    • 升级中有什么 • 使用升级插件升级 • 升级如何运作 • 初始化 • 升级 • 测试 • OpenZeppelin Tutorials 教程 • Contact 联系方式 使用OpenZeppelin 升级插件部署的智能合约可以升级以修改其代码,同时保留其地址、状态和余额。这使您可以迭代地向项目添加新功能,或修复您在

    2023年04月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包