为了说明清楚:
- 不升级版本的矿工节点称为“旧矿工”
- 升级版本的矿工节点称为“新矿工”
- 不升级版本的交易称为“旧交易”
- 升级版本的交易称为“新交易”
软分叉的好处
软分叉本质上就是让旧矿工什么都不做,不发生任何改变的情况下,仍然认可同新矿工挖出来的区块。
上述意味着什么?
下面有四种情况:
新矿工 | 旧矿工 | |
---|---|---|
新区块 | 认可,接着挖 | 认可,接着挖 |
旧区块 | 不认可,不接着挖 | 认可,接着挖 |
不可能的任务
不可能的任务由新矿工完成,分为两个步骤
步骤1:引用旧的UTXO
新矿工接受了新交易。为了要让旧矿工承认包含新交易的区块,新矿工产生一个用户“私钥”为输入脚本,anyone-can-spend为输出脚本的交易,把真正的输出脚本放到旧区块的领域以外。旧矿工验证的时候,不能发现真正的输出脚本,只看到旧区块的领域里面的新交易为奇怪的anyone-can-spend交易,但合法。
步骤2:引用新的UTXO
引用新交易产生的UTXO连“私钥”作为输入脚本都省下了
具体流程
- 旧矿工抢先出了一个旧块,包含引用前一个新区块的anyone-can-spend交易(想赚便宜的人)。旧矿工都接受这个旧区块,但新矿工都不接受这个旧区块,继续做工作量证明。又因为旧矿工的算力不如新矿工,所以不能成为最长链(想赚便宜的人失败了)。
- 新矿工抢先出了一个新块,旧矿工验证后发现合法,接着这个新快继续做工作量证明。
因此,新旧矿工都在同一条链上工作。
思考
若旧矿工的算力比新矿工要强会发生什么事情呢?
会发生分叉,因为新矿工不承认旧矿工的。因为算力的关系(新矿工的链不可能成为最长链),旧矿工也不可能跟随新矿工的链继续工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。