一文读懂PlatON智能合约开发

2020-08-07 19:44 栏目:经验之谈 来源:网络整理 查看()

核心常见问题,这次谈谈智能合同开发。

昨天,柏拉图和无限社区举办了一个主题为《PlatON智能合约开发》的活动。普拉东科技副总裁傅志静详细分享了普拉东EVM合同和WASM合同开发的相关知识和操作,以及合同开发场景的应用。

开发者的知识盛宴就在这里。

问:问:普拉东目前的智能测试网络合同处于什么阶段?这个阶段已经完善了吗?还是会有一个大的版本迭代?

答:普拉顿目前的测试网络智能合同支持WASM和EVM两个智能合同的虚拟机平台。WASM虚拟机目前仅支持

EVM虚拟机支持实性语言。

目前,测试网络的最新版本0.13.0已经处于完成阶段,所以可以在测试网络上进行相应的应用开发和测试工作。

主网络的版本0.13.1没有新的或大的版本变化,只是在0.13.0上做了部分优化工作。

问:问:柏拉图智能契约支持什么语言?将来会有新的语言支持吗?

答:普拉顿智能合同支持目前只支持C和Solidity。c语言运行在WASM虚拟机上,而Solidity语言运行在EVM虚拟机上。

未来WASM虚拟机将支持诸如Rust、GO和Python等高级语言。

问:目前,我们看到EVM的智能合同是在柏拉图上支持的,那么以太网上现有的智能合同是直接兼容的还是需要一些调整才能在柏拉图上部署?EVM智能合同的完整技术体系包括什么?

答:以太博物馆现有的实体合同是直接兼容的。如果合同包含以太网单位和地址,只需简单地调整并更改为LAT相关的单位和地址的柏拉图。

我们鼓励社区开发一键式移植工具。我们可以考虑以赠款的形式给予奖励,并欢迎开发者社区的专家贡献他们的力量。

EVM智能合同完整技术堆栈包括以下内容:

简单了解区块链和虚拟机,如气体机制、事务、块打包和上行流程

实体语言相关知识,如实体语言语法、对应类型和接口等。

开发人员工具,如truss

问:如何计算当前合同的部署成本?关于天然气的成本,你对开发商有什么建议?

答:当前合同的部署成本主要取决于合同的二进制大小,也与合同参数的大小有关。

部署成本是天然气*天然气价格。

关于天然气成本的建议是:

使用正确的类型,例如,如果可以使用uint类型,不要使用字符串类型

避免使用不必要的代码等。

避免在一个循环中进行耗费大量气体的操作。例如,由于SLOAD和SSTORE操作码的高成本,因为管理存储变量的气体成本比存储变量的高得多,所以有必要避免在循环中操作存储变量

避免循环中的重复计算

此外,我们现在正在开发与EVM电子科技大学教授合作的气体优化项目。

问:以太网平台的合同中有很多安全问题。普拉东对开发人员解决这个问题有什么建议?普拉东对安全部门做了什么?

答:关于以太网平台合同的安全性,我们的建议如下:

您可以参考我们的安全开发指南,包括编译器、开发过程以及如何避免常见的漏洞,如重入、令牌发送、堆栈深度和权限控制。

普拉东为底层安全做了以下工作:

柏拉图已经通过P2P安全(异常攻击、节点连接数等)进行了验证和测试。)、RPC安全、帐户模型、虚拟机、一致性安全等方面。

与此同时,Draw Fog进行了两轮安全审计,Slow Fog Chain安全审计负责人Johan表示:“Draw Fog安全团队对PlatON的WASM虚拟机、EVM虚拟机和节点激励模型的7个模块进行了新一轮安全审计,重点审查了第一轮审计后修改的代码。根据审计报告的结果,PlatON以极高的代码质量确保被审计部分没有安全风险。”

我们高度重视安全问题,积极开展相关工作,如与慢雾合作开展漏洞赏金活动,要求运行时进行正式验证,与电子科学与技术合作

问:在开发基于柏拉图的智能合同时,对开发者有什么更好的实用建议?

答:我想简单谈谈WASM和EVM的一些共同点:

费用的合理设置

当合同需要在PlatON的主网络上部署时,有必要设定一个合理的成本限制。在PlatON网络中,默认的最大气体限制是100,800,000,最小是21,000。如果太低或太高,交易将失败。当部署大型合同或运行复杂功能时,您可以增加天然气的限制。例如, 1,000,000,如果是普通传输,可以将其设置为最低值。具体价值需要根据合同的规模和复杂程度进行估算。在合同发布之前,可以调用platon_estimateGas接口进行近似估计,以避免由于不足而导致的失败。

避免超时

在PlatON网络上发送交易时没有超时的概念,但根据设定的气体限制值,它最终会停止。如果限额值低于合同部署所需的消耗量,交易将无法发送,相应的手续费将被扣除。手续费的设置不能是无限的,因为在网络中,块本身有一个最大的GasLimit,当交易的gas limit超过这个值时,交易将不被接受。

如果调用是为发布的合同执行的(调用是指合同逻辑中的无状态变更操作),则有5s超时的限制。如果在5s内没有执行契约逻辑,虚拟机将超时并强制退出,从而导致查询失败。

为了避免部署契约事务的失败,请尝试将大的契约划分为较小的块,并根据需要相互引用。为了避免无限循环,请注意常见的陷阱和递归调用。

非法经营的处罚

如果智能契约不是由标准有效的编译器编译的,或者脚本是随机改变的,那么操作代码将是无效的。这种合同不仅不能成功部署和执行,还会产生“GasLimit*GasPrice”的全额罚款,并扣除本次交易的手续费,这是一个很强的罚款。如果经营者不注意这一点,反复尝试,成本会更高,价格会更高。

通常,在以下情况下会生成无效操作码:

为正常编译的合同手动更改脚本

协定编译器版本与网络锁支持的协定版本不一致

使用浮点运算

在PlatON网络中操作合同时,请先确认当前网络支持的智能合同版本,然后选择相应版本的编译器。

正常操作是使用普拉顿提供的最新的松露/普拉东-CDT来编译/部署/执行合同。同时,在切换到主网络操作之前,必须在测试网络上进行有效验证。

还有编码规范、智能合同文件组织结构,以及一些特殊的C语言限制和WASM合同的特点。我不会在这里重复它们。感兴趣的朋友可以去我们的官方文档查看和学习。具体地址如下:

EVM:

https://devdocs.platon.net/docs/zh-cn/EVM _智能_合同/#最佳实践

WASM:

https://devdocs.platon.net/docs/zh-cn/wasm _智能_合同/#最佳实践

问:WASM合同开发的合适场景是什么?普拉东将来会对WASM技术做些什么吗?

答:通过比较EVM和WASM虚拟机在内部测试中的TPS,我们可以看到EVM在业务逻辑执行相对简单的场景中表现更好,这主要是由于EVM的简单加载和启动以及WASM在高级语言级别(c)的实现。当执行的业务逻辑很简单时,WASM的加载开始占用了事务中大量的执行时间。但是,当业务逻辑比较复杂的时候,比如测试中的插入和排序测试,当业务逻辑的执行时间比较高的时候,WASM的优势就体现出来了,这归功于WASM和高级语言的结合,每种高级语言都有很强的编译和优化能力,这对执行效率有很大的帮助。从这个测试中,我们建议在业务模型复杂时使用WASM契约,这在执行效率和业务抽象能力方面更有优势。

结论是,对于复杂合同,WASM合同具有更好的性能和更低的天然气消耗。

此外,我们继续优化WASM的性能和天然气消耗。稍后我们将在WASM提供隐私计算功能。

问:在当前的智能合同中,哪些应用场景适合开发?

答:目前,柏拉图上的智能合同适用于开发以下应用场景:金融、游戏、社交活动等。

我们未来将在WASM提供隐私计算能力,并在此基础上,我们正在构建下一代数据资产权利确认和价值交易基础设施服务。

此外,基于EOS的游戏骑士GO已经被移植到柏拉图,所以请期待它!

问:开发人员如何在开发环境中使用普拉东的钱包界面?以及如何使用Dapp方便地获取钱包。

答:我们为开发人员提供强大的开发工具包:

普拉东松露

https://platon-truffle.readthedocs.io/en/v0.11.1/

Java sdk

https://dev docs . platon . network/docs/zh-CN/Java _ SDK/

JS sdk

https://dev docs . platon . network/docs/zh-CN/JS _ SDK/

使用相应的软件开发工具包,通过RPC接口使用PlatON钱包接口。

目前,我们正式提供一款ATON钱包Dapp,方便用户使用钱包:

https://dev docs . platon . network/docs/zh-CN/ATON-用户手册/

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发