数字货币是文件,难伪造,但是容易复制,不像实体货币,花出去就没了,数字货币存在double spending attack,双花攻击。

去中心化的货币,需要解决两个问题:

1.货币的发行

挖矿

2.交易的有效性

每个交易都包含两部分,输入和输出。

输入部分要说明币的来源,输出部分给出收款人公钥的hash。

p3.BTC-协议-LMLPHP

这就是一个小型的区块链,这里有两种哈希指针,一个是之前说的连接各个区块之间的,还有一个是指向前面某个交易的指针(可以防范双花攻击)。

转账的地址是通过公钥算出来的。Bitcoin内部是没有提供查询某个具体的人的公钥的功能,需要通过其他渠道获得,还多比特币地址即公钥在网上二维码的形式贴出来。

Bitcoin操作过程中的验证过程是通过执行相应的脚本来实现的,Bitcoin Script。

block headerblock body
versiontransaiton list

hash of previous

hash header

 
target 
merke root hash 
nounce 

分布式哈希表

分布式的难点:distributed  consensus 一个论断FLP。

CAP Theorem ,Paxos协议。

有问题解决方法一:

1.投票机制

候选区块发布给所有的节点(全节点),每个节点去验证里面的交易是不是都是合法的。

问题:a.无法保证每个节点都投票。b.t投票效率无法有效保障,网络延迟。

最大的问题,所有要确定有投票权的membership ,如:hyperledger fabric 只有大公司才有权利加入。如果恶意节点超过总数的一半,就能控制投票结果了:sybil attach。

比特币的做法,改进的投票机制。靠算力来投票。利用 hash rate 避免sybil attach

p3.BTC-协议-LMLPHPforking attack

p3.BTC-协议-LMLPHP

谁来确定发行货币

coinbase transaction。

得到区块记账权获得 block reward  50 BTC  --> 25 BTC 随时已有的比特币越多,每隔21w个区块奖励越少(减半),现在是12.5 BTC。

p3.BTC-协议-LMLPHP

这个比特币系统平均每10分钟产生一个新的区块。

05-25 16:21