Substrate 作为第一个区块链领域的技术框架,让开发者能够专注于链的运行时逻辑,而不用再花费大量的时间精力构建区块链底层的基础设施。此外, Substrate 默认提供了很多功能模块,比如 Staking , Consensus , 方便框架使用者根据自己的需求进行自由组合和定制。合约模块就是其中的一个功能模块,不管是任何一条基于 Substrate 技术的独立链,还是未来的平行链, 只要集成了合约模块,就可以成为一个智能合约平台。
本次 ChainX 智能合约平台的主要实现方式就是集成 Substrate 的合约模块,并进行适配。ChainX 的合约功能与 Substrate 默认的合约模块主要区别如下:
1. 取消合约存储收费的设计
合约存储收费简单来说就是当合约部署到链上以后, 根据该合约在链上所占存储的大小和该存储的占用时间收取一定的费用,当合约账户因为余额不够无法支持存储费用时,合约就会被删除,甚至可能无法恢复。即使合约被删除后可以恢复,目前的合约恢复可操作性也是极低,可能会对目前的合约开发造成极大的困扰。因此,我们目前决定暂时取消合约存储收费,只收取合约调用的 Gas 费用, 也就是与目前以太坊的收费设计一致。当合约存储收费的模型成熟后,可以重新启用这个设计。
2. 使用 ChainX ink ! 编写智能合约:https://github.com/chainx-org/ChainX/wiki/ChainX-ink
比特币的智能合约
ChainX 是怎么实现比特币的智能合约?要分以下几步说明 1. 比特币到 ChainX 链上2. ChainX 上具备合约的功能3. 把比特币引入到合约模块中
其中我们 ChainX 已经通过轻节点加信托托管的方式实现了第一步,也就是 ChainX 链上的 X-BTC。因此实际上 ChainX 通过比特币跨链的方式已经把比特币 Relay 到了 ChainX 上,也就是把比特币的价值流通到了 ChainX 上。ChainX 已经能让比特币 2s 转账而不是等到 10 分钟成为了现实,实现了秒级转账。
第二步是在 ChainX 上增加智能合约的功能。我们的智能合约采用的是的 Substrate 的 WASM 合约模块,并在其基础上进行更改裁剪,增加一些功能。Substrate 的合约模块设计了一个 rent 的存储租赁模型,但是这个模型使用起来有很多困难,而且对用户很不友好。我们移除了它。其余部分,我们更改了一些 Substrate 的底层,使得在 ChainX 链上能够与 Substrate 合约模块很好地兼容。
第三步我们考虑了很多,本身 Substrate 的合约模型就是只支持单资产,而 ChainX 主打的是多资产方案。因为我们综合考虑开发者的接收度、修改合约模块的难度、工具的成熟度等方面,目前提出使用将 ChainX 的资产转换为 ERC20 资产的方案。也就是说我们将会在合约平台中设立一个 ERC20 Token,代表比特币,用户可以将自己的比特币和 ERC20 Token 比特币互相转换。
用户持有 X-BTC,可以发起一个交易,将自己的 X-BTC 转换为合约模型中的 ERC20 的 BTC。而只要向 ERC20 合约发起一个合约调用,就可以把 ERC20 的 Token 置换为 X-BTC。
这里采用 ERC20 的方案主要还是考虑开发者的便捷。因为之前以太坊合约的开发者很多,他们操控资产的方式都是与 ERC20 的 Token 进行对接,因此我们将合约中的比特币设计成 ERC20 的接口,就可以让开发者以比较低的学习成本接入我们的合约平台。
智能合约可以给比特币带来什么?
基于 ChainX 的比特币智能平台具备了众多的优势,包括高纬度的去中心化、低成本的使用以及采用了更安全的合约语言,因此具备了其他同类型比特币辅助项目不曾有的优势。
1. 使得比特币更智能化
正如刚才提到的,若只能交易,则只能完成价值转移,但是没法 “智能地” 完成价值转移。但是比特币脚本功能有限,现在用的稍微复杂一些的场景就是多重签名,或者设计一些谜题。要是想实现抵押借贷、投票、拍卖等等一系列在以太坊中出现的场景是不可能的。
2. 更好的发挥出比特币的价值属性
一个东西的真正的价值要体现在流通上,只有流动才能带来真正的价值。正如假设你有 100 块钱人民币,如果你不花出去,只是拿在手上,那它就是一张废纸。只要当他真正交换给其他人,流动出去的那一瞬间,才会产生它真正的价值。也就是说钱这个东西,只有花的(流通的)时候才是钱。而智能合约就是提升流通性很重要的一种手段,因为智能合约比起比特币脚本能够赋予的功能不是一个级别的。对于已有的,可以把以太坊上实现的东西拿过来在比特币这边再实现一遍,对于未来,可以设计出更丰富的 Dapp 应用。