第0章 引言
没收别人的钱,那真是反了天了。CSW曾经扬言在这次分裂中提出要将DSV交易变成矿工的奖励,这可能吗,怎么能做到?
第1章 交易可以在 abc 和 sv 两条链上重放
BCH这次潜在的分裂,在11月15日将可能会分成两条链,abc链和sv链。abc链激活了dsv操作码,sv链上是没有这个操作码的。
因为abc和sv链相互不带防重放保护,所以交易可以在两条链上重放。
如果在abc链上发一笔交易,脚本带dsv操作,交易发的币记为金额。那这笔交易是否可以重放到sv链上,并且在sv链上矿工会将这笔币没收变成矿工费?
第2章DSV交易无法变成矿工的奖励
在协议bitcoin abc 0.17是不可能的。
如果sv不特定修改这个共识。那结果是这样的,首先是这笔带dsv操作的abc链上的交易,是无法重放到sv链上的。更不可能被矿工没收掉。
但理论上存在着以下可能。
因为在共识协议中,矿工费的计算规则是这样的:input总金额-output总金额=矿工费。
如果交易中有一个output是协议中无法识别的,但这笔交易却是合法的交易,那这个output的金额,应该被怎么处理?
交易是合法的,output的是无法识别的,首先这种前提条件,以我目前的认知,这是不存在的。我现在查验的结果是,只要output无法识别,那交易肯定是非法的。
但如果sv链修改规则,或者我的知识出现漏洞,即存在Output是无法识别,但交易却是合法的。那就存在接下来的讨论了:这笔output是否可以被当成矿工费?
逻辑上是成立的,input总金额-output总金额=矿工费,也就是说,无法识别的Output金额是很有可能被当成矿工费的。
第3章 包裹进P2SH的DSV交易根本不可能被没收为矿工费
DSV操作码大概率来说是只会被P2SH交易包裹。被包裹进P2SH交易里的DSV操作码,节点是不知道的,因为P2SH交易在节点上只是一个脚本哈希。而只有当发费P2SH交易时,节点才知道这里面包裹了什么操作码。
所以如果abc链上的那笔交易是一笔包裹了DSV的P2SH交易,那是可以重放到SV链上的,但SV链上的矿是根本就不可能没收金额为矿工费,因为节点都不知道这笔交易里有DSV。但在SV链上的这个P2SH将无法解锁,因为SV链不包含DSV操作码,脚本是跑不通的。
问题比较复杂,我补充一点。
需要进一步确认的知识是:是否存在Output是无法识别,但交易却是合法的。这可能需要非常懂比特币底层代码的人去调查清楚。
第4章 结束语
没收别人的钱,在道义上是不对的,这在社会共识下是没有问题的。所以如果sv修改共识规则以达到没收带dsv操作码的交易金额,我认为是不对的。但如果不需要修改共识规则就可以实现,这则应该算是比特币协议留下的争议空间。
作者:黄世亮
欢迎关注关注微信公众号:闪电HSL
网友评论