用户意见反馈

请在下面填写您遇到的问题或意见建议,并留下您的联系方式,
我们将为您提供更好的产品和服务。

您的邮箱地址

请详细描述您的问题或建议*

上传截图支持 jpg,jpeg,png,gif等图片格式,图片小于5MB

取消提交
举报
  • 内容涉嫌抄袭,代表月亮消灭他/她
  • 发布不实消息,画个圈圈诅咒他/她
  • 诱导投资,放毛毛,揍他/她
  • 侵犯名誉、隐私,这个借一步说话
  • 其他
具体描述(选填):
取消提交
我要爆料

填写邮箱地址/手机号码(仅管理人员可见)

请详细描述您要爆料的内容*

上传截图支持 jpg,jpeg,png,gif等图片格式,图片小于5MB

取消 提交
提交网址
常用工具
取消 提交

投稿奖励Token领取申请 我的奖励

选择您要兑换的Token

填写兑换文章信息

请填写您在链向财经平台已审核通过且未申请兑换Token的文章

*兑奖信息一旦提交将无法修改,请认真核对兑换规则及接受地址

取消 提交

已成功提交审核

期待您更多优秀的作品

Token奖励领取最新状态,可前往
个人中心“我的奖励-投稿奖励”查看

后,弹窗自动关闭

111111单身基金疯狂大派送

2019年11月10日~11月15日

活动期间注册登录链向财经APP,持有300链小象以上的用户即可参与活动。本次活动将从30道题库中随机匹配20道测试题,完整答完20道题才有资格领取单身基金,测试等级越高,获得的单身基金则越多。

  • 18359
  • 2
  • 喜欢
  • 举报
  • 分享到
  • 微信
    打开微信“扫一扫”,打开网页后点击屏幕右上角“分享”按钮
  • 空间
  • 微博
  • twitter
  • facebook

技术视野 | 维基链智能合约知多少

06-27 11:31

标签: 维基链 数字货币

来源: 维基链WICC

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。基于区块链技术实现的智能合约,支持可编程合约,具有去中心化、不可篡改、过程透明可追踪等优点,是由合约制定者在链下构建的一套以数字形式定义的共识,发布至链上存储,并于链上执行。任意用户通过私钥签名以提供必要的身份证明成为共识参与者,其执行的过程是原子性的,获得的结果也是冥等的。

实现合约框架的方式

作为承载DApp的最重要基石,维基链智能合约框架采用Lua语言作为合约的编码语言。Lua语言具有轻量、可拓展等特性,在游戏开发、独立应用脚本和数据库插件方面都已被大量地应用。维基链核心功能均由C/C++开发,而Lua代码可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数。所以这款学习成本低、兼容性好又具备高性能和安全的语言是构建智能合约框架很好的编程语言。

框架使用的Lua5.3版本的虚拟机,在虚拟机层设计了一个mylib函数库以开放接口给合约层调用,其遵循了Lua标准函数库的设计方式。与常见的Lua虚拟机不同,智能合约的代码会在链上所有的节点包括矿工节点和观察者节点上执行,因此智能合约虚拟机不支持大部分Lua标准函数库:



*对math库中的random函数作了调整以保证同一合约每次执行都能获得一致的随机结果

维基链智能合约框架在具备区块链特性的基础上,还有以下特点:内部货币系统、去中心化部署及运行、代码风格自由且透明,通过JsonRpc接口或区块浏览器还可以查看每笔合约交易的输入、输出信息。

mylib库的功能

mylib库是合约与外部环境交互的唯一接口,包含计算、验证、查询、资产管理及数据存储等基础功能,主要由以下这些接口实现:



具体的使用方法,大家可以在维基链开发者中心文档(见文末)内查询到。

如何开发智能合约

开始开发前,你需要学习Lua的基本语法,钱包节点的搭建和JsonRpc的使用以及mylib的各函数的使用方式,还需要注意智能合约框架存在以下限制:

a. 每个合约代码需要在合约代码头部引入mylib库;

b. 合约代码总长度限制在64KB;

c. 合约参数总长度限制在4096字节;

d. 合约数据库存储的Key和Value长度均限制在500字节。

对于合约参数,在虚拟机启动后会以Byte数组(表)的方式存放在全局变量contract中。目前的最佳实践是将合约参数进行类似Protobuf方式的编码,你可以参考在开发者文档中心里WRC20代币的智能合约。不管是以何种方式传递参数给智能合约,你都需要自行设计编码工具和合约代码内的解码函数。

现在,维基链官方提供了在线合约编辑器,你可以很方便地在浏览器中开发、调试和发布你的智能合约。社区也有一些编解码的工具和优秀的合约模板库供使用参考。

优化升级

维基链核心开发团队仍持续地优化智能合约框架,将Gas计算的范围和价格调整的更合理,丰富链上mylib库的功能,增加链下的智能合约调试开发工具,也有对其他的语言如Solidity和WebAsambly进行兼容的计划。

+1

已有0人喜欢

声明:本文由链向财经专栏号作者撰写,观点仅代表作者本人,不代表链向财经官方立场。

提示:为了您能更及时的获取到最新热门资讯,请关注链向财经微信公众号:LXcaijing