区块链入门学习笔记:比特币,区块链,挖矿都是啥
作者:互联网
先放上讲解视频:https://www.bilibili.com/video/BV1rs411A7xh/?spm_id_from=333.788.recommend_more_video.1
好吧放错了,应该是这个(狗头):https://www.bilibili.com/video/BV11x411i72w
关键字:Digital Signature,Proof of Work,Cryptographic hash functions
我们由一个账本引入,假设你和你的三个死党经常交易,你们维护了一个公共的账本,你们相互之间的交易都记录在这个账本上:
并且,假设每到月底,你们就聚在一起进行结算,如果花的比收的多,就把差值交出来,反之如果收到的比花的多,就把多余的收下。
于是你们定下了一个账本协议(Protocal):
-
任何人都可以在账本上添加newline;
-
每个月底你们都用真金白银结算;
现在出现一个问题,假设鲍勃未经爱丽丝同意就在账本上添加一行“爱丽丝付给鲍勃20¥”,这显然是虚假信息,如何保证安全性?使用Digital Signature(电子签名-256bits)
只有经过签名同意的条目才有效。
签名的原理:公钥私钥对儿:
加密解密的两个函数:
生成签名需要用到文档中信息和你手中的私钥,而验证身份时需要用文档中的信息,你的签名(256bits)和公钥,返回的布尔值代表身份的真实与否。
如果你不知道那个256位的签名什么样,就靠穷举硬猜来伪造签名的话,几乎无解,毕竟2^256,太大了。
所以,如果你用verify函数验证结果为true,那么你可以认为这个签名就是他本人,因为这个签名只能由他自己的私钥生成,输入到你的verify函数才能返回true。
还有一个小漏洞,即使不用破解签名,鲍勃只需要复制第一行的条目n次,就能从爱丽丝获得n倍的收入,解决办法就是使item带上序号,序列化,同时这个序号也参与签名的生成过程:
现在,你们的账本协议升级到这样:
-
任何人都可以在账本上添加newline;
-
每个月底你们都用真金白银结算;
-
只有有签名的交易才是有效的;
不过你们的交易系统还是有bug,假设某个人从别人那里得到了很多钱,然后月底跑路了,如何解决:一种可能的方案是在月初你们都上交100美元,在本月的交易中不能透支,一旦透支,就否认之前的交易:
你们的账本协议进一步升级:
- 任何人都可以在账本上添加newline;
- 每个月底你们都用真金白银结算;
- 只有有签名的交易才是有效的;
- 不可透支;
现在,你们可以不用美元或者任何实体现金作为单位,如果全世界都采用这个账本,你们完全可以用一种全新的单位:“Leger Dollor”。
为了进一步去中心化,你们的账本是人手一份的,而不是依赖于一个中心的体系。去中心化后,你们面临数据同步的问题,每当你自己产生一条交易记录,都要将这条记录广播到全世界,同理,当你收到一些记录,你如何保证这些记录是可信的并且保证正确的顺序?
比特币采取的方案是:哪个账本的计算量(密码哈希函数)最大,就信任哪个账本。
如果我们把计算量作为信任的基础,那么我们就可以让交易欺诈和账本不一致的情形的计算成本高到不行
SHA256算法:
将任意内容哈希成256bit的比特串,而且不可能逆向破解。
不过逆向不可破解这一点并没有严格证明,但是他是一大批现代信息安全的基础。
将SHA256应用到工作量证明:
对于一个账本,如果你找到了一个数字,把他放到账本里,哈希后得到的256bits串的前30位正好是0,可以想见,这个概率非常小,你几乎要尝试上亿次,这就是你的工作量。而验证你的工作量很简单:带入哈希一下就行了,这就是你的Proof of Work。
将账本中的item打包成一个个block(区块),并附加上那个特殊的数字(工作量证明):
将这些区块打包成链表,每个节点都需要前一块的哈希值,这样,整个区块链中任何一个区块中的任何一个条目发生了轻微的改变,都会导致那个“工作量证明”无效(带入哈希函数前面n位不再为0),就需要重新算一波了:
我们允许世界上所有人都参与建造区块,他们听到交易的广播,将之打包成区块,然后找到那个特殊的数字,使前n bits为0:
一旦他们找到了那个特殊的数字,就将这个区块广播给全世界。
为了奖励发现这个特殊的数字的人,我们允许他在账本上给自己记上一笔奖励(block rework),所以,每产生一个新区快,都会个虚拟货币经济体系统增加一些新的货币
这个建造区块的过程,就称为mining。
而对于普通用户,他们只需要听矿工的就好了,因为比特币的规则就是:哪个账本的计算量(密码哈希函数)最大,就信任哪个账本。当两条区块链有冲突,信任最长的那一条,如果一样长,就等着,直到两者不一样长(矿工又挖出了新的区块)。
标签:比特,你们,签名,哈希,工作量,区块,账本,挖矿 来源: https://blog.csdn.net/DanielSYC/article/details/117001822