区块链小白书

区块链小白书

1、交易过程

假设网络中有如下四个节点,且每个节点拥有的如下币值
link1

1、没有可信任的第三方后,每个人互相之间无法信任,如果要创建一个交易订单(转账),需要:
1、发广播,让所有人都知道网络里每一个人每一笔钱的来龙去脉
例:B向C转账100BTC
1)则B需要发广播通知网络中的每一个人,“大家好,我是B,我要向C转账100BTC,我的电子签名是xxxxxxx”
link2

2)然后网络中的每一个人都收到这个广播
link3

3)网络中的每个节点会通过电子签名验证这个交易是否是我发起的
link4

4)验证通过后网络中每个节点把这笔交易记在账本上,B就少100,C多100
link5

5)网络中的每个节点怎么知道我真的有100BTC呢?
每个节点的账本会帮助确认,这个账本即是区块,把区块连起来就是区块链

6)在比特币系统中,区块链记录了比特币从创立至今所有的交易记录,现在大概有60万个区块,每个区块里记录了两三千笔交易,包括网络中每一个节点有多少钱,从哪里来,花到哪儿去,都记录的一清二楚,透明公开。

7)在区块链网络里,每个节点都拿着一份相同且实时更新的账本。当B广播说要给C转账100BTC时,每个节点手里的账本就开始回溯,检查B是否有100BTC。如果没有,转账无效。

8)账本的可靠性是数字货币的基石,如果账本出了问题,什么币都不好使。这就引出两个新问题:

  • 谁来给大家记账
  • 怎么保证账本不被造假

9)如果每个人都能记账,那每个区块里包含的交易和交易顺序可能都不一样,如果有故意记假账的,那就更乱了,不可能得到一个大家都接受的账本,所以,记账的人得让所有人都能接受,这样大家的账本才能统一,这被称为共识机制

10)今天各种区块链有各种不同的共识机制。

  • GateChain:Pos
  • EOS:dPos
  • NEO:dBFT
  • 中本聪提出的比特币网络使用的是做题,谁先把答案算出来谁就有权力记账,这一机制被称为PoW(Proof-of-Work),即工作量证明。

11)工作量证明的本质是穷举,你的设备算力越强,算出答案的可能性就越高,为了做到这一点,需要用到哈希加密。以SHA256算法为例

12)任何一串字符用它加密后,都能得到一串独一无二的256位的二进制数
sha5
而原输入只要有任何一点轻微改动,哈希加密后的数字都会完全不同。

13)打开一个区块,我们可以看到一个区块的区块头,交易数量,交易详情等信息
link6
14)区块头是一个区块的标签,包含了时间戳,Merkle根数树根哈希值,随机数和上一个区块的哈希值等信息
link7

1
2
3
4
5
6
1、随机数:为了找到满足难度目标所设定的随机数。
为了解决32位随机数在算力飞升的情况下不够用的问题。规定时间戳和 COINBASE交易信息均可更改,一次扩展nonce的位数

2、时间戳:该区块产生的近似时间,精确到秒的UNIX时间戳,必须严格大于前11个区块时间的中值,同时全节点也会拒绝那些超出自己2个小时时间戳的区块。

3、Merkle根:该区块交易的Merkle树根的哈希值。同样采用SHA256(SHA256())计算。

15)而把区块头做二次SHA256计算,就能得到这个区块的哈希值
link8

16)想要记账,就得把区块里的各种信息打包好,
link9

在修改区块头里的这个随机数,让输入值能够在哈希计算后,得到一个前n个数都是0的哈希值
link10

17)每一位有0和1两种可能,每改变一次随机数成功的概率为1/2的n次方(1/2^n),比如你 n=1,则第一位为0就行,成功率为1/2。
link11

18)而网络里参与的算力越强,要算的0就越多,工作量证明的难度越大,今天比特币网络的n大概是76,成功率为1/2^76,差不多是1/756万亿亿,
link12

用一块8000元的RTX2080Ti显卡,大概要算1407年。

19)要算对确实不容易,但只要你算出来了,所有人就可以瞬间验证你算得是否正确。如果确实没问题,大家就会把这个区块连接在账本上,开始打包计算下一个区块。这样,网络里的所有人就有一份相同且实时更新的账本了。
link13

20)而为了让大家用动力做题记账,第一个完成区块打包的节点,会获得系统奖励,现在是12.5个比特币,差不多是60万人民币,这个过程也被称为挖矿
link14

21)另一方面,为了防止账本被篡改,每一个新加入的区块,都需要在区块头里,记录上一个区块的哈希值,也被称为哈希指针
link15

这样一个不断向前的指针,最终会指向第一个创始区块,把所有的区块紧紧连接在一起。

22)如果你修改任何一个区块里的任何一个字符,都会改变这个区块的哈希值,让下一个区块的哈希指针失效,所以你必须修改下一个区块的哈希指针,但这又会影响这个区块的哈希值,所以还需要重新计算随机数。完成计算后,还得接着计算这个区块的下一个区块,直到修改完这个区块后的所有区块,非常麻烦。
link16

23)这样即使记账人想造假,也是做不到的,因为有电子签名,记账人不能伪造别人给自己的转账。又因为历史账本的存在,也不能凭空变出一笔钱来。
link17

24)但这就引出一个新问题,如果两个人同时完成了计算,打包出了一个新区快,那该听谁的呢?答案是,谁长听谁的(最长链原则)。现在所有人都可以在这两个区块后面接着打包,比如下一轮先完成计算的人选择接在B上,则B链就更长了,其他人也会愿意接在B后面。一般情况下,打包6块之内就能分出胜负。被废弃的链上的交易会被撤回,重新放到交易池等待打包。
link18

25)但既然谁长听谁的,只要你比大家都能算,算力大于51%,就能一个人算出最长链,进而控制账本。
link19

所以比特币世界里的矿工算力越强,大家要算的0就越多,保证谁都不能控制记账权。
link20

26)但参与者不多的其他区块链就不好说了,比如2018年5月15日,一个叫比特黄金的数字货币就遭遇了51%攻击。攻击者先是把自己价值1000万美金的比特黄金转给交易所,这笔转账被记录在区块A上,
link21

同时攻击者秘密准备了一个这笔转账没有发生的区块B,
link22

同时在区块B之后计算新的区块,等A链上的转账确认后,攻击者就可以把在交易所的的比特黄金提现,但因为攻击者的算力大于全网的51%,B链的长度终将大于A链,这是只要向全网发布更长的B链,
link23

历史就会被改写,B链会替代A链成为真正主链,而区块A里转给交易所转账也会被撤回,攻击者白赚1000万。
link24

27)今天,对于没有算力的普通人,获得数字货币最简单的办法就是去交易所购买,再提现到钱包地址,
link25

这个地址来自于你的私钥,私钥加密后会得到公钥,公钥加密后会得到地址。
link26

28)在区块链这样的匿网络里,只有私钥才能证明你是你,只要转账时附上你私钥生成的电子签名,大家就能确认这笔转账有效。
link27

如果私钥泄露,谁都可以冒充你把钱转走。比如2013年一位 叫Adam的男士在电视直播里收到了相当于今天1500元的比特币,在他开心的向镜头展示私钥后,这笔钱就被当场偷走了。

注:整理自 回形针 区块链科普视频