跳转至

02.区块链如何运行

区块链如何运行

账单就是一个区块

image-20231014114630905

账户体系

公钥和私钥

在中心化世界,比如淘宝,我们用账户密码登录,账号密码都存在淘宝的中心化服务器

在区块链世界中,本质上不应该相信任何人,那怎么实现账号密码存储?

公钥:区块链世界的账号,外界可以知道

私钥:区块链世界的密码

可以通过私钥计算出公钥

但是外界无法通过公钥算出私钥

交易过程

image-20231014115159515

挖矿:竞争记账权

作为记账者,要监听,最新的进度到哪里了,跟在后面记录

image-20231014115314285

网络中特别多记账者

大家都拿出来账单

用谁的?

怎么解决?

image-20231014115356466

有一个随机数,放在哈希函数里面,做计算。

记账者要找到随机数,需要付出大量工作量

要做的事情是不断找随机数,大家都是平等的

记账验证

image-20231014115827920

假如我的账单被选中

最后一步,验证,让大家信服

  • 校验上一页账单的哈希值
  • 验证所有交易是否合法:签名是否在,余额是否够
  • 账单自己也会有一个哈希值,校验账单和哈希值之间是否匹配

这三步成功,则加入这个区块,获得奖励

区块和区块链

image-20231014115848808

头哈希:这一页账单算出来的哈希值

父哈希:上一页账单算出来的哈希值

是什么连成链:账单之间的关系

UTXO模型

比特币中,更在意交易的过程

保证输入和输出系统

比如A有50,转30给B,那么返回A地址20

image-20231014120147675

不会写结果,会写交易过程(+5,+10,-4)

双重支付问题

image-20231014120310456

比如A有20,他把同样的10给了B,C,此时广播出去,大家都记下了

分叉与最长链原则

image-20231014120425030

分叉与最长链原则

分叉的区块链代表了两个不同的交易账本,一个账本中A转钱给了B,一个账本中A转给了C 少数服从多数,更多记账者所认可的账本,就是公认的账本更多记账者在认可的区块后面跟随记账,经过一段时间后该链的长度就会明显长于另一条大家认可最长链的记账 在比特币中,大家一般等待6个区块来确认一笔交易得到最终确认

image-20231014120548517

区块链读写权限

image-20231014120651527

image-20231014120728581