0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

链上智能合约Dapp开发技术部署

搭建punk2558 来源:搭建punk2558 作者:搭建punk2558 2022-06-20 18:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。合约账户能够在彼此之间传递信息,进行图灵完备的运算。合约依靠被称作以太坊虚拟机(EVM)字节代码(以太坊特有的二进制格式)上的区块链运行。

合约很典型地用诸如Solidity等高级语言写成,然后编译成字节代码上传到区块链上。

以太坊高级语言

合约依靠被称作以太坊虚拟机(EVM)字节代码(以太坊特有的二进制格式)上的区块链运行。然而,合约很典型地用诸如Solidity等高级语言写成,然后用以太坊虚拟机编译器编译成字节代码上传到区块链。

编译合约

solidity合约的编译可以通过很多机制完成。

通过命令行使用solc编译器。

在geth或eth提供的javascript控制台使用web3.eth.compile.solidity(这仍然需要安装solc编译器)。

在线Solidity实时编译器。

建立solidity合约的Meteor dapp Cosmo。

Mix IDE。

以太坊钱包。

注意:关于solc和编译Solidity合约代码的更多信息可在此查看。

在geth设置solidity编译器

如果你启动了geth节点,就可以查看哪个编译器可用。

这一指令会返回到显示当前哪个编译器可用的字符串。

注意:solc编译器和cpp-ethereum一起安装。或者,你可以自己创建。

如果你的solc可执行文件不在标准位置,可以用—solc标志为solc可执行文件指定一个定制路线。

或者你可以通过控制台在执行期间设置这个选项:

编译一个简单合约

让我们编译一个简单的合约源:

这个合约提供了一个单一方法multiply,它和一个正整数a调用并返回到a*7。

注意:编译器通过RPC因此也能通过web3.js,对浏览器内任何通过RPC/IPC连接到geth的Ðapp可用。

下面的例子会向你展示如何通过JSON-RPC接合geth来使用编译器。

Code编译的以太坊虚拟机字节代码

Info从编译器输出的额外元数据

Source源代码

Language合约语言(Solidity,Serpent,LLL)

LanguageVersion合约语言版本

compilerVersion用于编译这个合约的solidity编译器版本。

abiDefinition应用的二进制界面定义

userDoc用户的NatSpec Doc。

developerDoc开发者的NatSpec Doc。

编译器输出的直接结构化(到code和info)反映了两种非常不同的部署路径。编译的以太坊虚拟机代码和一个合约创建交易被发送到区块,剩下的(info)在理想状态下会存活在去中心化云上,公开验证的元数据则执行区块链上的代码。

如果你的源包含多个合约,输出会包括每个合约一个入口,对应的合约信息对象可以用作为属性名称的合约名字检索到。你可以通过检测当前的GlobalRegistrar代码来试一下:

创建和部署合约

开始这一章节之前,确保你有解锁的账户和一些资金。你现在会在区块链上创建一个合约,方法是用上一章节的以太坊虚拟机代码作为数据给空地址发送交易。

注意:用在线Solidity实时编译器或Mix IDE程序会更容易完成。

所有的二进制数据都以十六进制的格式序列化。十六进制字符串总会有一个十六进制前缀0x。

注意:注意arg1,arg2,…是合约构造函数参数,以备它要接受参数。如果合约不需要构造函数参数,就可以忽略这些参数。

值得指出的是,这一步骤需要你支付执行。一旦交易成功进入到区块,你的账户余额(你作为发送方放在from领域)会根据以太坊虚拟机的gas规则被扣减。一段时间以后,你的交易会在一个区块中出现,确认它带来的状态是共识。你的合约现在存在于区块链上。以不同步的方式做同样的事看起来是这样:

与合约交互

与合约交互典型的做法是用诸如eth.contract()功能的抽象层,它会返回到javascript对象,和所有可用的合约功能一起,作为可调用的javascript功能。描述合约可用功能的标准方式是ABI定义。这个对象是一个字符串,它描述了调用签名和每个可用合约功能的返回值。

现在ABI中具体说明的所有功能调用都在合约实例中可用。你可以用两种方法中的一种来调用这些合约实例上的方法。

当用sendTransaction被调用的时候,功能调用通过发送交易来执行。需要花费以太币来发送,调用会永久记录在区块链上。用这种方式进行的调用返回值是交易散表。

当用call被调用的时候,功能在以太坊虚拟机被本地执行,功能返回值和功能一起返回。用这种方式进行的调用不会记录在区块链上,因此也不会改变合约内部状态。这种调用方式被称为恒定功能调用。以这种方式进行的调用不花费以太币。

如果你只对返回值感兴趣,那么你应该用call。如果你只关心合约状态的副作用,就应该用sendTransaction。

在上面的例子中,不会产生副作用,因此sendTransaction只会烧gas,增加宇宙的熵。

测试合约和交易

你通常需要低级的测试策略,为交易和合约排除故障。这一章节介绍了一些你可以用到的排错工作和做法。为了测试合约和交易而不产生实际的后果,你最好在私有区块链上测试。这可以通过配置一个替代网络ID(选择一个特别的数字)和/或不能用的端点来实现。推荐做法是,为了测试你用一个替代数据目录和端口,这样就不会意外地和实时运行的节点冲突(假定用默认运行。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7366

    浏览量

    95209
  • 代码
    +关注

    关注

    30

    文章

    4985

    浏览量

    74590
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业智能网关行业调研报告(2026 年)

    :高性价比、易部署、免编程通用智能网关。 (二)企业策略 头部厂商 :强化研发,布局 5G+AI + 安全,构建生态,拓展全球市场; 中小厂商 :聚焦垂直行业,深耕定制化,打造细分领域壁垒; 技术路线
    发表于 05-21 10:51

    从手机芯片到通用计算平台:为什么开发者该重新认识高通

    、内存占用、推理延迟、工具版本等一连串问题。 高通官方工程师会在现场介绍高通 AI 软件栈和配套开发工具,帮助大家理解标准开发流程。 瑞莎技术
    发表于 05-21 10:32

    行业洞察篇__数字孪生与智能体融合:不同部署场景下技术选型的分水岭

    Unity这类引擎独立开发,效果确实唬人,但走深一步就露怯了。渲染效果与性能的平衡是摆在这个行业面前的第一道坎,尤其是政企项目,动不动就要求私有化部署,安全合规的门槛一上来,很多商用渲染引擎在局域网环境
    发表于 05-14 09:54

    基于 LES30-NTC-RS485 的冷物流车厢温度智能监控解决方案

    车载长期稳定运行需求。 二、基于 LES30-NTC-RS485 的冷车厢智能温控系统整体架构 本系统以 LES30-NTC-RS485 为核心采集终端,搭配 10K B3950 NTC 温度传感器
    发表于 03-30 09:28

    【2025夏季班正课】大模型Agent智能开发实战 课分享

    拆解与规划,行动层负责工具调用与接口适配。通过这种分层解耦,智能体的各个组件能够独立迭代与优化,避免了牵一发而动全身的维护灾难。 其次,体系化开发强调“全路工程技术”的闭环建设。在碎
    发表于 03-29 16:12

    基于 LES33-HUB-3-RS485 的冷仓库多传感器智能组网解决方案

    ,构建了一套 “接入 - 中继 - 隔离 - 传输” 全闭环的冷仓库多传感器智能组网系统。文章详细阐述了系统整体架构、核心产品技术特性、应用价值与效益,为冷仓库多区域、远距离的温湿
    发表于 03-17 16:01

    在Arduino UNO Q开发部署OpenClaw开源AI智能

    近期 OpenClaw 边缘 AI 火遍开发者社区,百元开发板跑 AI 智能体的演示让无数技术爱好者沸腾!想低成本上手这款开源 AI 智能
    的头像 发表于 03-09 10:03 1635次阅读
    在Arduino UNO Q<b class='flag-5'>开发</b>板<b class='flag-5'>部署</b>OpenClaw开源AI<b class='flag-5'>智能</b>体

    香橙派昇腾系列开发板如何部署OpenClaw

    香橙派昇腾系列开发板解锁专业级智能体,OpenClaw拥抱高算力未来 上两篇文章我们给出了香橙派此芯及RK系列产品部署OpenClaw的教程,接下来我们将这只智能小龙虾接入到昇腾系列
    发表于 02-25 10:13

    黑芝麻智能华山A2000 BaRT工具助力辅助驾驶模型部署

    随着智驾模型参数规模与计算复杂度指数级增长,大模型应用与车端硬件、性能功耗的矛盾愈发凸显,成为技术量产的关键瓶颈。在此背景下,黑芝麻智能华山A2000 BaRT 工具以 MLIR 框架为基础,为辅助驾驶模型规模化、高性能、低功
    的头像 发表于 02-02 15:37 688次阅读
    黑芝麻<b class='flag-5'>智能</b>华山A2000 BaRT工具<b class='flag-5'>链</b>助力辅助驾驶模型<b class='flag-5'>部署</b>

    卡塔尔通讯与信息技术部与Ooredoo电信公司一行来访达实智能开展培训

    2026年1月7日至8日,卡塔尔通讯与信息技术部(MCIT)以及卡塔尔Ooredoo电信公司一行来访达实智能开展培训。达实智能董事长刘磅、副总裁易鸿、海湾区域经理海乐姆(阿拉伯籍)等陪同接待。
    的头像 发表于 01-09 16:03 979次阅读

    从设计到部署:AI即服务平台开发深度剖析

    从顶层设计到最终部署,一个成功的AI即服务平台开发是一项复杂的系统工程,它融合了软件工程、数据科学和运维技术的精髓。
    的头像 发表于 11-13 14:16 522次阅读

    湖南移动携手华为在湘潭大学完成5G-A超级上行技术部署

    近日,湖南移动联合华为在5G-A技术创新领域再获重大突破——双方在湘潭大学成功完成5G-A超级上行技术部署。依托华为F/A SUL(辅助上行)核心方案,此次部署实现5G单用户上行峰值速率突破
    的头像 发表于 10-21 10:01 926次阅读

    聆思大模型智能FAE,看得懂技术,答得准问题

    聆思大模型智能FAE,看得懂技术,答得准问题 在智能硬件开发的嵌入式技术支持中,响应迟缓、人员培训成本高企、服务时间覆盖不足等痛点,常常制约
    发表于 09-30 11:29

    【米尔RK3576开发板免费体验】1、开发环境、镜像烧录、QT开发环境搭建以及应用部署

    微处理器推出的嵌入式模组,具备超高性 能、丰富的拓展接口和边缘算力,适用于边缘计算设备、商用机器人、AI 商显、智能车载终 端、智慧电力等。 开发板的硬件连接如下 1、Linux_SDK构建和工具
    发表于 07-14 11:26

    软通动力中标扬子江药业信息技术部基础架构与安全咨询项目

    软通动力成功中标扬子江药业集团信息技术部基础架构与安全咨询项目,将充分发挥自身专业咨询能力,为扬子江药业集团未来3-5年的IT基础架构与信息安全建设提供顶层规划与实施路径,携手共赴高质量发展新征程。
    的头像 发表于 06-11 11:36 1229次阅读