发行货币特点
央行发行纸币:
1.防伪标记
2.实体
央行发行数字货币:
1.用公钥验证是否为央行发行:可能会出现双花攻击
2.验证是否央行签名+验证电子货币是否已花出。中心化、处理数据量大
数字货币转账
接收方需要知道转账方公钥(是由谁转入)
所有节点都需要知道转账方公钥(验证交易)
所存在的问题:
如果接收方伪造一个公钥,并用私钥签名,来冒充币的持有者,该交易被验证通过,这就会将别人账户的钱偷走。
解决方法:
在转账交易中,输入部分说明币的来源以及转账方的公钥(需要来对比币的来源的公钥),输出部分给出收款方的哈希值。
也就是通过查找转账方之前的交易(以前汇款给本次转账方交易中输出部分的收款方哈希值)哈希值,来对比本次交易的转账方是否为这个币的持有者,这样就能够解决伪造公钥验证的问题
区块链组成
块头信息:版本信息、指向上一区块的指针、Merkle tree根哈希值、挖矿难度阈值target、随机数。(取哈希是将块头所有部分都取哈希)
块身信息:交易列表
比特币中共识协议:
区块链账本需要取得分布式共识(例:分布式哈希表)
FLP:在一个异步的系统中,网络传输时延没有上限,即使只有一个成员的结果有问题,也不可能取得共识。
CAP(Consistency Availability Partition tolerance):任何一个分布式系统,最多只能满足两个,不可能三个性质都满足(一致性 可用性 分区容忍性) 例:paoxs协议
比特币节点性质:可能存在恶意节点
解决方案:
- 账户数目投票决定是否加入某个节点 局限:超级计算机迅速生成一半以上节点,就能决定投票结果(sybil attack女巫攻击)
- 计算力投票,每个节点都可以在本地组装出区块,将其认可的交易放入块身,谁先的出符合target的随机值,谁就得到优先记账权。其他节点收到节点之后进行验证(哈希值、target、交易合法性等),如果不符合要求,这个区块将被舍弃。
比特币中发行新货币的唯一方法:coinbase transaction 挖矿,不用指明来源
(最长合法链)区块链认可最长的一个链
如果出现等长情况的分叉,等待直到某条链胜出,既哪一个分叉最先找到下一个区块就为最长合法链