北大肖臻《区块链技术与应用》学习笔记

三、BTC-协议

一个去中心化的数字货币要解决两个问题

1、 谁有权发行货币

​ 比特币的发行是由挖矿决定的(coinbase transaction唯一一个产生新币的途径)

2、怎样验证交易的合法性,防止double spending attack

依靠区块链的数据结构

  • 每个交易都包含了输入和输出部分,输入部分要说明币的来源 和公钥 输出部分要给出收款人的公钥的哈希,说明币的来源是为了证明币不是凭空捏造的是有记录的,同时也是防范double spending

  • 在比特币系统当中,前面这些验证过程,是通过执行脚本来实现的。每个交易的输入提一段脚本,包括给出公钥的过程,公钥也是在输入的脚本里指定的。每个交易的输出也是一段脚本,验证其的合法性,就需要把当前交易的输入脚本跟前面交易(提供币来源的交易)的输出脚本拼在一起,然后看看能不能顺利执行,如果能执行说明是合法的。BitCoin Script(脚本执行)

  • 双花攻击

    判断一个交易是不是double spending ,是看这个区块所在的分支上币有没有被花掉
    北大肖臻《区块链技术与应用》学习笔记

    Coinbase tx(铸币权)

分布式的共识协议

distributed hash table(共识哈希表)

多台电脑共同维护一个全局的哈希表

distributed consensus(分布式的内容要取得分布式的共识)

Paxos协议(能保证协议一致性)

分布式共识一个著名的协议是Paxos,该协议能够保证一致性,即第一个性质。如果该协议打成了共识,那么这个共识一定是一致的,即每个成员所认为的共识都是相同的。但是,某些情况下,该协议可能永远无法达成共识,这种可能性比较小但是客观存在的

BTC-共识协议(Consensus in BitCoin)

membership(确定谁有投票权)

Hyperledger fabric(联盟链)

女巫攻击(Sybil attack)

  • 女巫攻击(Sybil attack)

    比特币系统创建账户是很容易的,甚至一个人产生了公私钥对别人都无法得知,只有转账时别人才知道。所以有些人可以不停的创建账户,当超过账户总数的一半时就有了控制权

  • 怎样防范女巫攻击(Sybil attack)

    即使创建再多的账户,也无法使算力增强

impossibility result(不可能结论)

FLP结论

在一个异步的(asynchronous)系统里,(网络传输迟延没有上限就叫异步系统),即使只有一个成员是有问题的(faulty),也不可能取得共识。

CAP结论

分布式系统的三个性质

Consistency(一致性)即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致

Availability(可用性)即服务一直可用,而且是正常响应时间

Partition tolerance(分区容错)即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

以上最多只能满足两个

Partition tolerance(分区容错)

大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信
北大肖臻《区块链技术与应用》学习笔记

注意点

  • Longest valid chain(最长链机制)比特币中只承认最长链的有效性

  • forking attack(分叉攻击) 依靠全网节点的认可度,不符合Longest valid chain会被抛弃,客观存在,实现条件不充分

  • block reward(出块奖励)没一块新的区块出来式可以获得奖励,比特币的奖励机制

  • Block header和Block body中的具体内容

北大肖臻《区块链技术与应用》学习笔记

比特币中的共识具体:

  • 比特币系统中去中心化的账本要取得共识

  • 只有获得记账权的节点才能写东西

  • 获得记账权就是解pow(挖矿)。按照算力计票,算力可以用每秒能试多少nonce(随机数)数值表示

记账权

  • 记账权就是往比特币账本里写入下一个区块的权利。只有找到这个nonce(随机数),获得记账权的节点才有权利发布下一个区块。其他节点收到这个区块之后,要验证这个区块的合法性,比如block header的内容填的对不对,block header里面有一个域,叫nBits域,实际上它是目标预值的一个编码检查一下nBits域设置的是不是符合比特币协议中规定的难度要求;该不等式是否成立。假设都符合要求,然后检查block body 里面的交易列表,验证一下每个交易都是合法的:①要有合法的签名②以前没有被花过。如果有一项不符合要求,这个区块就是不能被接受的。如果所有条件都符合,也不一定接受。

  • 比特币争夺记账权的过程叫作挖矿(mining)

  • 比特币被称为数字黄金(digital gold)

  • 争夺记账权的节点被称为矿工(miner)

上一篇:glibc2.29下unsortedbin_attack的替代方法


下一篇:9-1二叉树