关于区块链的认识
疫情期间知网开放,趁这个时间看了点区块链的文章,在这里也写一写自己的认识。
2008年10月31号出现一篇<比特币:对等电子现金系统>id:Satoshi Nakamoto(也叫中本聪)的论文帮助人解决了交易安全问题。比如你有100元,对方有一袋车厘子,你想买他的东西。但是,你怎么敢把钱给他呢?
区块链的世界里,每一笔转账都需要发一个广播,通过电子签名验证广播的真实主人,之后会把这笔交易记在账本上。
但是别人怎么知道你有钱,这时候账本会帮你确认,这里的账本就是区块,多个账本以链表的形式连在一起就是区块链(就像铁链,一环扣着一环),它记录了比特币从创始到现在记录的每一笔交易。
谁记账?怎么保证账本的真实性?
共识机制起到很大作用,写这篇论文的作者中本聪的方案是做题,谁把答案算出来,谁就有权力记账
这一过程也叫穷举,设备算力越强,算出答案的可能性就越高。
这里需要哈希加密,以SHA256算法为例子,任何一串字符用它加密之后都能得到一串独一无二的256位二进制数。只要原输入有一点改动,后面的数字都不一样。
把区块头做二次SHA256计算就能得到这块区块的哈希值
想要记账,就要把图上信息打包好,再修改区块头里的这个随机数,让输入值能够在哈希计算后,得到一个前n个数都是0的哈希值。哈希值里除了0就是1,这样就有1/2的可能,而网络里参与计算的算力越强,要算的0就越多,穷举的难度就越大,现在比特币网络里里的n大约是76 ,成功率就是2的76次方之一。用一块rtx 2080ti显卡大约需要算1407年,要算对很难,但是你只要算对了,所有人都可以在瞬间验证。如果确实没问题,大家就会把这个区块连接上去,然后开始计算下一个区块。这样网络里的所有人都有一份相同且实时更新的账本。
第一个算对的人,现在大约奖励12.5个比特币,这个过程叫挖矿。
为了防止整个账本被篡改,每一个区块都会记录上一个区块的哈希值,这样要是改动第一个区块里的记录,后面所有的区块都要修改。这样做好处是,就算记账人想作假也做不了。因为有电子签名,记账人不能伪造交易记录,又因为历史账本的存在,不能凭空给自己创造一笔钱。
如果两人同时打包了一个区块,听谁的呢? 谁多听谁的!
比如a和c同时打包了一个区块,但是b打包的区块愿意接在a后面,这样a就比c长,就用a了,一般6块之内就能决定胜负。被废弃的区块上的交易会被撤回,重新放在交易池等待打包。