自学区块链(三)BTC协议

2019-08-26  本文已影响0人  阿根廷香蕉

前言

数字货币,由于是一段数据,如果我们花掉这个货币,我们也可以复制这段数据来达到使用多次的效果(双花攻击)。

在去中心化的系统中,数字货币面临的两个问题,谁来发行数字货币,谁来验证数字货币的有效性

谁来发行货币(铸币权)

是找到合法Nonce的节点会获得记账权,同时会获得铸币权的奖励,根据时间推进,BTC的出块奖励会不停衰减,每21万个区块出块奖励会减半。由最开始的50BTC到现在12.5BTC。

怎么防范双花攻击(double spending attack)

这个需要用到一个区块链这个数据结构来保证。这里有两个哈希指针,一个是指向前一个区块(连接区块的)。另一个是哈希指针是指向交易的,说明币的来源(防范双花攻击)。转账交易中A的前面交易时的公钥的哈希和A转账给B时发给它的公钥,这样验证,币的合法性。当前交易的输入的脚本和前面提供币的来源的输出脚本,拼接起来运行,没有报错表示合法。

系统中分为全节点和轻节点,轻节点一般来说是无法独立验证交易的合法性,交易内容要取得分布式的共识。系统就需要维护一个分布式的哈希表。

那么BTC共识协议是什么?

在实际系统中由于网络时延或者存在恶意节点等各种原因,是无法达到全部共识的。就需要设计共识协议。如果是基于投票表决的方案,就需要确定谁有投票权。但是这个直接投票不适用于BTC,由于产生账户的成本很低,可以通过不停产生账户达到操控结果的方法(女巫攻击)。在BTC中也是采用投票方式,但是根据找到BTC参数Nonce来获取记账权,只有有了记账权才能往BTC这个去中心化的账本上写入下一个区块的权利。

分叉攻击

BTC规定交易要在最长合法链上,接受区块时需要接在最长合法链后面

还有一种情况会出现合法的分叉,当同时找到合法Nonce,而其他节点会根据收到广播的时间添加新的区块,由于时延各种原因,就会导致分叉,这种临时的分叉会持续一段时间,直到有一方区块的数量超过另一方,成为最长合法链。

另一条分支会被舍弃。

上一篇 下一篇

猜你喜欢

热点阅读