关于合约能力增强(JavaScript 合约支持)
代码位置
涉及节点改动
- 在
peerinfo接口,可以看到链对应的虚拟机类型,以及版本。 - 在合约上增加
checkType字段,用于支持合约部署前的多方确认。
合约接口
部署前多方确认
在注册 so 合约的时候,会带上一个 checkType 的参数,说明这个虚拟机下的 js 合约需不需要审查。
如果需要,在这个虚拟机上实例化出的链,以及每次合约代码的版本升级,都需要重新审查合约。(如果 js 合约未通过审核,合约所有接口会返回未通过审查)
(这里存在的逻辑问题是,合约升级的时候,接口可用还是不可用。目前是,每次升级都不可用,需要审查)
合约审查的消息用私钥签名,合约内根据交易的发起节点,用发起节点的公钥验签,以达到多方确认的效果。
也就是说,合约审查的交易,需要分别将交易发到 4 个节点上。