以太坊智能合约的规范编码

2018-11-22 14:26 栏目:经验之谈 来源: 查看()
区块链的一个特征是不变性。这意味着事务和状态是不可变的。这意味着一旦部署在链上,智能合约就无法改变。由于各种原因导致需求延迟的延迟可能会产生一系列后果,类似于硬件设计。当然,还有一些缓解措施,如重新部署,但也存在一些问题(如合同地址的变更需要时间,燃料甚至声誉,因此会产生错误的解决方案)。目前对智能合约的普遍关注是通过审计来防止安全和漏洞,但在实现改进之后,未来可能会忽略担忧。

以太坊智能合约的规范编码

有时很难预测未来的业务需求和变化。此外,构建通用或可扩展的智能合约可能会非常棘手,但这并不意味着该计划应该以仓促的方式完成。尽管如此,智能合约的开发通常适用于团队开发,其中用户故事应分解为任务并以适当的方式进行规划。总之,很明显,规划过程与智能合同审计同样重要。规划过程的输出应该是某种书面规范,这可以用作开发的输入或作为未来使用和集成的指南。

无论团队的整体开发过程如何,每个智能合约开发过程都应该有几个步骤,大致如下::

1.需求收集和计划——包括从多个来源收集输入事实,同时注意需求的可追溯性 2.规范书写——这是一种非标准化技术指定的收集要求
3.代码——编写符合指定要求的程序代码
4.测试——手动测试自动单元的功能,通常智能合约代码覆盖率为90%。
5.审计——首先在内部审查代码,然后在所有先决条件下提交外部安全审查
6.部署过程——“促进生产”的手动或自动过程

当智能合约以适当的方式完成时,它可以适应敏捷迭代或增量。或者它可以增量完成,看起来像水一样平滑。缺点是测试应该在整个过程中进行,因为智能合同是安全的关键。因此,V和W型号是合适的。无论如何,它通常取决于团队的偏好或项目管理决策。

以一种不仅有助于开发而且有助于未来任务的方式编写规范也很重要。有几个方面需要考虑。首先,安全性是一项高级要求,可归因于测试和维护已知攻击安全性的编码原则。这包括针对不同用户的访问限制
可以从初始要求中识别出的角色。 UML用例图可用于此目的,其中可轻松识别角色。如果存在多个RBAC模型,则RBAC模型可以由访问控制矩阵表示。后来,在开发过程中,它归结为编写函数访问修饰符。

有时需要部署多个依赖合同来完成指定的要求。如果复杂性更高,则其他选项是UML通信图和N2图。然而,智能合约不是一个孤立的岛屿。它与正在构建的产品的其他部分连接并交互。其中一些只是阅读状态,其他人可以执行交易。但是,DApps通常使用ABI作为合同的接口。对于通信序列,UML序列图是最佳解决方案。如果合同中涉及更多方,则数据流图也是一种选择。此外,应预见到部署前和部署后的维护操作,并将其写入规范中。

编码风格通常由开发人员选择,但实现干净代码应始终是一种先进的追求。 Antoine DE Saint-Exupery曾经说过:“完美的实现并非一无所获,但没有什么可以带走的。”编写代码时应始终强调这一原则。这意味着清楚地了解模型的需求和使用。此外,有必要考虑智能合约的通话表现,这可归因于天然气成本的最小化。

总之,智能合约和标准代码之间存在一定的差异。它们应该简单明了,因此在实际开发之前进行适当的规划至关重要。作为第一步,应进行适当的需求收集和分析,以令人满意的方式编写规范。然后,完整的编码原则产生高质量的代码作为测试和审查阶段的输入。最后,部署过程是最后一步,并且没有回到此步骤。因此,确保以最佳方式执行计划和审计非常重要。


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

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

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

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