前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原力元宇宙MetaForce佛萨奇马蹄链开发详情版丨MetaForce佛萨奇2.0马蹄链智能合约系统开发稳定版

原力元宇宙MetaForce佛萨奇马蹄链开发详情版丨MetaForce佛萨奇2.0马蹄链智能合约系统开发稳定版

原创
作者头像
VX_I357O98O7I8
发布2022-11-24 17:38:49
5730
发布2022-11-24 17:38:49
举报
文章被收录于专栏:商业模式策划

智能合约是一种计算机程序或交易协议,记录了交易条款信息、事件、行为,旨在减少对可信中间人的需求、仲裁和执行成本。在长安链上,用户可以通过高级语言(Golang、Rust、Solidity、TinyGo和C++)来编写智能合约,经过编译后,以二进制文件、WASM、EVM字节码的形式存储在区块链中,用户可以通过发送交易来触发执行智能合约中的代码。

虚拟机为智能合约提供计算资源和运行容器。每个虚拟机都运行在隔离的环境中,确保资源访问安全性,只能修改属于该合约自身的状态记录。智能合约需要有执行终止条件,以限制对资源的消耗;终止条件可以是按照时间、指令数量、指令执行代价(类似ETH gas)等方式。

长安链支持多种智能合约编程语言和虚拟机,为虚拟机提供统一的数据访问和密码算法访问接口。当一批交易通过调度器被发送至虚拟机时,虚拟机将解析交易中的智能合约调用参数,并且在运行时,通过数据访问接口获取运行时必要的数据,最后执行生成交易的读写集、交易执行结果和交易执行的日志信息。

1. 字节码

长安链目前在软件上支持的虚拟机字节码包括两类:WASM(WebAssembly)和EVM字节码。

  • WebAssembly 有一套完整的语义,实际上 wasm 是体积小且加载快的二进制格式, 其目标就是充分发挥硬件能力以达到原生执行效率。WebAssembly 设计了一个非常规整的文本格式用来开发、调试、测试、优化。
  • EVM字节码是最初运用在以太坊上的一种虚拟机字节码,目前已经被广泛的运用在许多区块链平台上,有相对比较成熟的开发工具支持。

2. 智能合约SDK

用户通过高级语言编写的智能合约一般情况而言,都需要存取区块链上的数据、API支持,ChainMaker为不同的高级语言提供了不同的SDK。当然,这些SDK提供的基本能力是相同的,包括读取数据、写入数据、查询区块链的一些状态等。

不同语言的SDK受限于语言本身特性和编译器的支撑能力,比如go语言支持函数同时返回多个数据,而tinygo编译器对垃圾回收支持存在缺陷,加上区块链系统本身为智能合约提供的运行内存大小受限、调用栈深度受限,用户编写合约时,需要注意这些特性。

目前ChainMaker已经支持的智能合约开发SDK包括Golang、Rust、Solidity、TinyGo和C++。

3. 智能合约生命周期管理

长安链的整体生命周期管理流程如下图所示:

4. 合约创建

用户编写完成智能合约后,经过编译器编译为字节码,需要通过发送交易的形式部署到区块链上。发送的交易将被共识节点和同步节点接收和处理,在校验完成各项参数后,字节码将被存储在区块链数据库中。

在校验参数的过程中,如果下列校验出错,将把执行的错误信息记录在交易的执行结果中:

  • 同一条链上不允许存在重名的合约
  • 字节码不能为空
  • 指定的智能合约执行引擎必须有效
  • 版本信息不能为空

随后将调用执行合约的初始化方法:

  • 对于WASM而言,将调用合约的 init_contract() 方法,用户必须提供导出的 init_contract() 方法
  • 对于EVM而言,将调用合约的构造方法

5. 合约升级

ChainMaker支持对基于WASM和EVM的字节码进行升级

  • 对于WASM而言,将调用 upgrade_contract() 方法,用户必须提供导出的 upgrade_contract() 方法
  • 对于EVM而言,并不会调用任何方法,只是单纯更新字节码
  • 对于DOCKER_GO而言,将调用 InitContract() 方法,该方法用于合约的部署与升级

合约升级也需要校验参数,如果下列校验出错,将把执行的错误信息记录在交易的执行结果中:

  • 合约必须已经被部署成功
  • 字节码不能为空
  • 版本信息不能为空

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 字节码
  • 2. 智能合约SDK
  • 3. 智能合约生命周期管理
    • 4. 合约创建
      • 5. 合约升级
      相关产品与服务
      区块链
      云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档