首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跨链三部曲之:Basecoin Plugin

在前一节中,我们学习了如何使用 basecoin 启动区块链和 basecli 来发送交易,同时研究了和这两种基本类型。

本节,我们将演示如何扩展以便让它支持另外一种交易类型:,这样就可以发送数据到一个自定义的插件 plugin。这里,我们来探索一个简单的 plugin:。

Example Plugin

basecoin 的设计使得实现一个用户自定义插件变得十分简单,插件是和 basecoin 区块链打包在一起的,因此,如果你已经安装了 baseocin,并且运行了,你应该可以直接运行区块链节点和它的客户端,它和我们之前的用法十分相似。

除了和是必选参数,交易由其他两个参数确定:类型的,和表示某种代币类型和数量。只有当为且数量大于时,该笔交易才是有效的。

跟之前 basecoin 区块链一样,类似的,counter 区块链也可以这样初始化:

counter 的配置文件默认存放在目录,打开另一个命令行窗口, 初始化并用的子命令发送交易:

的 tx 还有另外一个子命令,它会为这个 plugin 构造一个特殊的 AppTx:

第一笔交易不会被区块链接受,因为它没有指定 valid 参数,第二笔顺利发送,接下来我们可以查询这个 plugin:

可以看到,我们这个自定义插件已经可以跑通,你应该看到值为 1 代表当前 counter 的有效交易数量,如果再发送一笔交易:

再次查询,我们将看到值会变为 2,这一次,我们指定了,它没有超出,因此,可以通过 counter 区块链的合法性验证。

记住,和 basecli 一样,每次查询, countercli 都会验证区块链返回的 proof,保证返回结果是最新且正确的。

AppTx

在实现我们自己的 plugin 之前,有必要先探究下和 basecoin 的 plugin 系统。

和相似,不同之处在于,是从 inputs 发送交易到 outputs,而是从一个 input 发送交易到一个 plugin,当然,也可以附加其他数据。

通过 plugin 的方式,可以使 Basecoin 扩展为能够处理除了转账之外的其他交易。字段代表某个处理特殊交易的 plugin 名字,代表 plugin 要处理的数据。

Plugins

一个 plugin,简单来说,它实现了 Plugin 接口中定义的方法:

关键在于方法,AppTx 中的 Data 会赋值给 txBytes,Input 则用来填充。

注意到还接收一个类型参数,它抽象化了底层默克尔树对 account 数据的操作,这样 plugin 可以直接更新 Basecoin 节点里面的 account 信息,也可以存储其它信息用来来反馈区块链应用的最新状态。

通过 plugin 的方式,基于 Basecoin 的区块链应用可以得到很大扩展,甚至,可以实现类似于以太坊虚拟机那样的插件。这里有些别人已经实现好的 plugin 例子。

Conclusion

本节我们演示了如何创建一个 plugin 来扩展现有 Basecoin 实现发送用户自定义交易到区块链,下一节,我们将介绍一个用于区块链跨链通信 IBC() 的插件。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180518G1MTSC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券