数字货币是文件,难伪造,但是容易复制,不像实体货币,花出去就没了,数字货币存在double spending attack,双花攻击。
去中心化的货币,需要解决两个问题:
1.货币的发行
挖矿
2.交易的有效性
每个交易都包含两部分,输入和输出。
输入部分要说明币的来源,输出部分给出收款人公钥的hash。
这就是一个小型的区块链,这里有两种哈希指针,一个是之前说的连接各个区块之间的,还有一个是指向前面某个交易的指针(可以防范双花攻击)。
转账的地址是通过公钥算出来的。Bitcoin内部是没有提供查询某个具体的人的公钥的功能,需要通过其他渠道获得,还多比特币地址即公钥在网上二维码的形式贴出来。
Bitcoin操作过程中的验证过程是通过执行相应的脚本来实现的,Bitcoin Script。
block header | block body |
version | transaiton 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
forking attack
谁来确定发行货币
coinbase transaction。
得到区块记账权获得 block reward 50 BTC --> 25 BTC 随时已有的比特币越多,每隔21w个区块奖励越少(减半),现在是12.5 BTC。
这个比特币系统平均每10分钟产生一个新的区块。