美文网首页
solidity智能合约开发的最佳姿势

solidity智能合约开发的最佳姿势

作者: khantto | 来源:发表于2018-05-26 11:35 被阅读229次

与传统程序代码相比,solidity智能合约代码量往往很少,不同点是,每行代码都很重要,需要小心谨慎,可谓字字珠玑:-),正是这样的原因,一个没有太多经验或者思维不严谨的软件工程师转向solidity智能合约工程师后会感到亚历山大,遇到问题无从着手。不过,随着行业的发展,我们仍然可以总结出一些应对问题的思路,我们需要做的只是如何借鉴别人的经验:


一,遵循最佳实践

这个行业里,“code is law”是一个神圣的准则,因此开源已经成了基本规则,当你的源代码摊在阳光下的时候,安全就成为了首要的考虑因素,特别是涉及金钱交易的时候。不幸的是,由于安全意识的淡薄和大多数工程师的能力原因,智能合约的安全现状仍然很严峻。不过业界仍然总结出了一些最佳实践,如“Checks-Effects-Interactions”模式,“fail-safe”模式,合约最小化,合约模块化,”禁止tx.origin 用于认证“等,更多详细内容也可以参考我以前的文章。这些都是前人在一次次失败后总结出的珍贵教训,我们应该认真学习这些最佳实践,并运用到实践中,以避免重蹈覆辙。


二,尽可能复用成功的代码

尽管短小,从零写出一套智能合约同时有比较完美实属不易,短小的代码背后需要考虑太多的因素。好在前人们已经帮我们做了很多,业界已经有了一些基本的合约代码库供我们复用,如果你用truffle作为开发工具,你会发现它已经包含了很多有用的库,你只需要继承并实现你自己的逻辑即可。值得提醒的是,哪怕你很自信你可以写出更好更安全的代码,我们仍然建议你复用这些代码而不是重新造轮子,因为这些代码是一个团队而不是一个人的作品,而且这些代码都是久经生产环境考验的代码。当然,这么做也节省了我们的时间与精力。


三,合理考虑升级

众所周知的是,智能合约代码一旦部署就无法改变。合约的升级一直是一个令业界头疼的话题。事实上,用传统软件思维方式套在智能合约的脑袋上这种新瓶装旧酒的想法本来就有待商榷。毕竟,区块链的一个特性就是不可更改,从而“code is law”的神圣准则才得以彰显。而合约的升级本质就是更改,这显然与区块链的规则是相悖的。但另一方面,我们凡夫之人总是纠结于如何改变,面对这一普遍性意识,作为工程师,你无能为力。因此,你仍然需要在设计合约时就要考虑如何升级,虽然业界目前并没有太好的办法,模块化是一种普遍的思路。


四,独立的流程管理

由于所有智能合约工程师都是从传统软件工程师进化而来,很多人仍然在用传统软件的思维指挥着自己的四肢。但至少有一点需要引起人们的警觉,即链上的任何操作都是不可回退的。笔者就遇到一个案例,由于一个工程师对业务目的理解的小小偏差,导致一个错误的操作上链,造成业务极大的影响。因此,对待链上操作应该比对待传统生产环境更加严格,而达成目的的方法就是制定适合区块链业务的独特流程。


以上这些只是从大的方面介绍了智能合约开发的思路,希望能帮到有需要的小伙伴,至于细节,还需要结合自己情况,量体裁衣。

相关文章

  • solidity智能合约开发的最佳姿势

    与传统程序代码相比,solidity智能合约代码量往往很少,不同点是,每行代码都很重要,需要小心谨慎,可谓字字珠玑...

  • 10 安全编程实践

    10.1 安全编程概述 本章内容主要参考了consensys关于solidity进行智能合约开发时的最佳安全开发指...

  • Ubuntu安装web3.js以及以太坊testrpc环境

    安装solc solidity是以太坊智能合约的开发语言。想要测试智能合约,开发DAPP的需要安装solc。 安装...

  • Ubuntu 16.04搭建以太坊开发环境

    安装geth 测试安装 安装solc solidity是以太坊智能合约的开发语言。想要测试智能合约,开发DAPP的...

  • Geth 控制台使用及 Web3.js 使用

    前言 在以太坊的DAPP开发中,需要页面开发和智能合约开发,页面开发需要H5,智能合约开发用Solidity实现。...

  • 以太坊开发者资源工具集合

    1 开发语言、框架与工具 语言 Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语...

  • 以太坊/区块链 学习资源汇总

    以太坊 游戏化学习Solidity智能合约 区块链技术博客TryBlockchain 智能合约Solidity编程...

  • Solidity开发模式

    前面写了智能合约开发模式总结了针对智能合约开发的通用模式,原文中还有一些模式只适用于Solidity开发,选出认为...

  • 用于智能合约的 Solidity 语言

    Solidity 用来开发 “智能合约”,是一种面向对象的编程语言。 用它编写的 “智能合约” 可以部署在多种区块...

  • Truffle中JS测试小技巧

    solidity是以太坊上首选的智能合约开发语言,有很多人都用它进行智能合约的学习与开发;而truffle是以太坊...

网友评论

      本文标题:solidity智能合约开发的最佳姿势

      本文链接:https://www.haomeiwen.com/subject/pxetjftx.html