智能合约开发

区块链底层搭建好了,紧接着就要开发智能合约了。这时候,大家会不会一头雾水呢?根本不知道如何下手。

不用着急,下面就给大家一层一层地分享,应该如何来开发一个正确可用的智能合约。

智能合约是区块链应用的“心脏”,智能合约执行了区块链应用的主要逻辑,智能合约的开发显得尤为重要。

就像开发传统项目一样,项目的后端部分可以用多种语言实现,如Java、Go、Python之类的实现。选择语言的时候,主要会考虑支持语言、语言性能、语言生态和语言熟练度等等。

智能合约的开发也一样,首先要看区块链虚拟机支持的语言,然后再根据语言性能、语言生态和语言熟练度等选择合适的语言进行开发。建议忽略语言熟练度因素,作为长期项目,语言性能和语言生态才是最重要的。

国内联盟链环境下,前面已经讲到,智能合约支持且主流的语言主要是Solidity、Go、Rust、C++等。下面以Solidity语言为例,分享一下怎样去开发一个智能合约。

这里我整理了Solidity学习的一个思路,供大家参考,这个思路也能借鉴到学习其他类新语言。如下:

  1. 看基础,主要资料为官网和哔哩哔哩教程,了解清楚基本语法、基本类型、基本关键字、基本结构等;
  2. 配IDE,搭建一整套开发调试环境,如:在线Remix、在线ChainIDE等;
  3. 开发调试基础合约,如:Hello World,存储Storage等,主要熟悉智能合约的整个开发部署流程;
  4. 尝试开发复杂合约,如投票、积分等,同时对比学习别人的优秀合约;
  5. 了解辅助工具库,如OpenZeppelin,避免重复造轮子,提高开发上层应用的质量和效率;
  6. 整理文章与问题,与经验前辈交流,完善不足之处;
  7. 加入技术社区,继续学习成长,同时捕捉行业最新动向。

学习完Solidity后,现在我们就来开发一个数字藏品的ERC721合约。开发ERC721之前,可以先了解一下关于ERC721的一些公共标准,如:获取NFT元数据的方法命名,NFT元数据的主要属性,NFT存储方式,需不需要实现枚举函数等。

IDE的话,可以使用在线Remix或在线ChainIDE来开发调试智能合约,非常方便,在线使用,不需要搭建复杂的本地环境。

我认为,开发ERC721主要有三种方式吧。

  1. 整合ERC721需求,规划合约结构和逻辑,从0开始造轮子;
  2. 使用主流底层支持,如OpenZeppelin,引入ERC721Full,构建主合约快速实现;
  3. 寻找开源代码,修改使用或直接使用,渠道如:Conflux的已部署开源合约、区块链官方开源合约、IDE环境提供的开源合约、GitHub开源合约等。

建议结合方式2和方式3,快速正确高质量地开发出符合自己需求的ERC721合约。

开发调试完智能合约,通过官方的部署工具,部署到区块链,进一步验证合约的正确性。线上合约的验证建议两步走。第一步是通过官方提供的与链交互工具验证,主要验证各个ABI方法的正确性,性能要求高一些的话,再做下压测;第二步是开发SDK结合业务测试验证,这是整体性的验证,整体中有局部,也能验证到合约逻辑。

验证中出现的合约问题,及时修改,重新部署,继续验证,直到合约完整且正确。

到此,一个好用且正确的智能合约就开发出来了,开不开心呢?哈哈哈~~