《区块链漫画》读书笔记
之前在书店看到这本《区块链漫画》,读了一半基础的部分,主要讲解区块链的定义和生成,相对我这种电脑小白来说比较简单易懂。在这里摘抄了部分内容,以便将来回忆巩固。
——
区块链:
1. 一个没有中心,能安全存储和传送信息,达成共识和完成交易的网络系统。
2. 是一个公开的数据列表,其中每一份记录被称作一个区块,通过哈希算法将每一个区块链接在一起。
3. 采用分布式网络。*网络结构分为中心式网络和分布式网络。
*拜占庭容错:分布式系统的网络通信不是完全可靠的,系统需要在某些节点或链接失效的情况下良好运行,这种对故障的耐受能力称作“拜占庭容错”。
——
哈希算法(Hash):一大类算法的统称。四个性质:等长性(输出的所有哈希值等长,大小为一两百个字节,存储空间小)、单向性(由数据算出哈希值容易,但反算不可能)、无序性(原始数据改变一个字节,哈希值也会变得面目全非)、一一对应性。
*哈希值的“碰撞”:因为哈希值短,数据值场,根据鸽笼原理,会出现两个甚至多个数据共用一个哈希值短情况。但“碰撞”只是理论上存在,现实中碰到的可能性接近零,哈希算法的“一一对应性”可以认为是成立的。
*区块的生成有时间顺序。在每一个新区块的数据结构中,有一个固定位置存在上一个区块的哈希值,而新区块整体也会求一个哈希值,存入下一个区块中。随着新区块的生成,旧区块就会被越“埋”越深,安全性就越来越高。
*加密方式:分为对称加密和非对称加密。
*对称加密:加密和解密要用同样的密钥。
*非对称加密:需要一对密钥(A和B),用A加密的密文只能用B来解密,用B加密的密文只能用A来解密。这一对密钥中,一个被用作“公钥”,一个被用作“私钥”,都是在同一个密钥生成器中生成。
*用于信息传输时,用公钥加密,用私钥解密。因此信息用公钥加密后,只有私钥拥有者可以解密。
*用于数字签名时,用私钥加密,用公钥解密。加密的不是信息原文,而是信息的哈希值,加密的结果叫做数字签名。
*数字签名的作用:一是防篡改(如果原文被篡改,哈希值也会变化,与数字签名的哈希值不一致则被发现),二是防冒充(篡改者假的数字签名不能用公钥解密,会被发现)。
——
比特币是一个典型的区块链系统,没有实体形态,也没有银行或政府控制它的发行。
*比特币的区块可以分为头部和交易记录两部分。其中头部包含前一个区块的哈希值和本区块的Nonce值(一次性随机数值);交易记录由三部分组成:收款者的公钥、收款者的公钥与前一条交易记录合并后的哈希值、付款者用自己的私钥对这个哈希值的数字签名。
——
新区块链的生成过程:收集交易记录、寻找Nonce、广播、审核通过。
*网络中的各个节点收集新广播出来的交易记录,以及上一个区块的哈希值,组成一个候选区块,这是由每个节点单独进行的。但这时候Nonce值还是空缺的,于是每个节点开始为自己构建的区块寻找Nonce。Nonce是工作量证明的核心,因为它没有任何实际含义,可随意修改。
*区块链工作量证明的任务就是:不断改变Nonce值,直到碰巧遇到一个Nonce,让整个区块的哈希值具有特定格式,如由若干个0开头。根据哈希算法的无序性,Nonce值的变化会导致哈希值无规律变化,结果不可预测。而根据哈希算法的单向性,不可能通过目标哈希值推导出Nonce,唯一的办法就是不断尝试更多的值,暴力破解。
*一旦找到合格的Nonce,发现者就会把这个候选区块广播到全网,交由其他节点审核。其他节点在收到候选区块后会做两件事:1. 检查交易记录是否合法;2. 对候选区块求哈希值,看它是不是由足够的0开头。如果一切都合格,这个节点就会对候选区块表示支持,将该区块的哈希值放入下一代候选区块中。
*每个新区块生成的时候,会额外产生一定量的加密货币,奖励给找到新Nonce的用户。通过找Nonce赚钱的操作就被称为“挖矿”。
*比特币大约每10分钟产生一个新区块。系统会通过增加0的个数来提高难度。