02.区块链如何运行
区块链如何运行¶
账单就是一个区块
账户体系¶
公钥和私钥¶
在中心化世界,比如淘宝,我们用账户密码登录,账号密码都存在淘宝的中心化服务器
在区块链世界中,本质上不应该相信任何人,那怎么实现账号密码存储?
公钥:区块链世界的账号,外界可以知道
私钥:区块链世界的密码
可以通过私钥计算出公钥
但是外界无法通过公钥算出私钥
交易过程¶
挖矿:竞争记账权¶
作为记账者,要监听,最新的进度到哪里了,跟在后面记录
网络中特别多记账者
大家都拿出来账单
用谁的?
怎么解决?
有一个随机数,放在哈希函数里面,做计算。
记账者要找到随机数,需要付出大量工作量
要做的事情是不断找随机数,大家都是平等的
记账验证¶
假如我的账单被选中
最后一步,验证,让大家信服
- 校验上一页账单的哈希值
- 验证所有交易是否合法:签名是否在,余额是否够
- 账单自己也会有一个哈希值,校验账单和哈希值之间是否匹配
这三步成功,则加入这个区块,获得奖励
区块和区块链¶
头哈希:这一页账单算出来的哈希值
父哈希:上一页账单算出来的哈希值
是什么连成链:账单之间的关系
UTXO模型¶
比特币中,更在意交易的过程
保证输入和输出系统
比如A有50,转30给B,那么返回A地址20
不会写结果,会写交易过程(+5,+10,-4)
双重支付问题¶
比如A有20,他把同样的10给了B,C,此时广播出去,大家都记下了
分叉与最长链原则¶
分叉与最长链原则¶
分叉的区块链代表了两个不同的交易账本,一个账本中A转钱给了B,一个账本中A转给了C 少数服从多数,更多记账者所认可的账本,就是公认的账本更多记账者在认可的区块后面跟随记账,经过一段时间后该链的长度就会明显长于另一条大家认可最长链的记账 在比特币中,大家一般等待6个区块来确认一笔交易得到最终确认