杂谈
最近对比特币(SV)中提到的MetaNet技术十分着迷,十分想写一些MetaNet应用,不过这方面中文公开内容并不多,所以开始了收集和学习,并记录一些笔记。
首先说一下对MetaNet的原理的理解。
MetaNet就是把比特币中的Transactions(TX)当作网络协议使用,并将打包的TX作为永久存储的一种比特币网络的用法。
TX的交换可以借助比特币P2P网络,也可以不借助。比特币网络的挖矿只是将TX持久化的一种手段。
当然,借助比特币网络路由TX的话,可以做到匿名,也是另一种需求了。
我收集了一些开发的资料,放在了awssome-bitcoin-sv。
目前,即便是Bitcoin SV网络,也并没有真正启用MetaNet,还有很多限制要解除,这些限制是core加上的,使得BTC成为了一个纯粹转账用的网络,所以应用开发沉寂了很多。
可以看到SV将要解除的限制有:
1、用于替换请求的Sequence字段限制
2、OP_RETURN限制
3、脚本、TX字节数限制
4、非标准脚本限制
解除这些限制之后,就可以做一些链上智能合约脚本了。
说实在的,有点翘首企盼,不过在此之前,还是需要先学习基本的链上开发。
环境和工具
关于SV的库目前的确较少。
我决定使用nodejs + node-electrum-client + bsv
1 | npm install electrum-client bsv |
Electrum-Client的使用
连接节点
1 | const ElectrumClient = require('electrum-client') |
ElectrumClient使用ElectrumX协议,可以理解为一种SPV的协议,它与链无关,既可以连接SV链,也可以连接ABC链,还可以连接BTC链,连到哪条链上和节点在哪条链一致。
具体支持的协议可以在这里看。
查询余额、UTXO
1 | const ElectrumClient = require('electrum-client') |
Electrum最新的查询是根据scriptHash来查询,而不再是根据address查询。不过address也能查。
监听消息
1 | const ElectrumClient = require('electrum-client') |
这就是消息监听了。
广播TX
1 | const ElectrumClient = require('electrum-client') |
BSV库
Electrum-Client功能能满足一个SPV应用的消息首发要求。
不过构造和解析TX,还是要有专门的库进行,这个就是BSV库了。
但是今天先到这里。