主页 > imtoken官网下载2.0国际版 > 区块链 - 理论导论
区块链 - 理论导论
一、背景
区块链不是单一的技术,而是多种技术的组合。 在区块链应用和比特币中,比特币的诞生离不开“密码朋克”组织。
Cypherpunk:一个电子邮件组; 群里囊括了众多密码学天才和计算机精英:维基解密的创始人、BitTorrent 的作者、WWW 的发明者、智能合作的提出者、Facebook 的创始人、比特币之父中本聪。
小组讨论的主题是:数学、计算机技术、加密技术、数字货币。
密码朋克中的一系列技术伏笔给了中本聪发明比特币的巨大灵感。
①Adam Back发明了Hashcash,使用工作量证明POW,这是比特币的核心要素;
② 时间戳确保数字文件的安全,是比特币协议之一;
③戴维发明了B-money,强调点对点交易,记录不可更改,点对点交易技术也用在了比特币上;
④ 哈尔芬尼推出“加密现金”;
在这种技术的铺垫下,中本聪发布了“比特币:一种点对点电子现金系统”。
比特币底层技术:
区块链的起源:由于比特币系统中的数据是逐块存储的,块之间通过Hash连接,形成了区块链。
2、应用场景
资产:数字资产发行、支付、交易、结算; 记账:股权交易、供应链金融、商业积分; 不可篡改的应用程序:众筹、医疗证明、存在证明; 点对点应用:共享经济、物联网; 隐私命名特性的应用:匿名交易;
3. 比特币:
1、比特币是一种数字货币;
什么是货币? 货币是具有一定价值的一般等价物;
一般等价物:铜币、金银-->银票-->法币(纸币)
一般等价物本身,如纸币、钞票比特币解决了什么问题,本身没有价值。 它们之所以可以作为货币使用,是因为人们认可它。 那么,一串数字是否也可以作为货币呢? 这是数字货币。
2、比特币的优势,它的信任从何而来:
①财产只在自己掌控之中,不会像银行里的钱一样被冻结;
② 无通货膨胀风险,比特币总量2100万枚,只会升值;
③ 没有假钞,因为需要别人认可;
④ 良好流通,全球流通,点对点交易;
3、比特币也是一个去中心化的记账系统;
通常,中心化系统将所有数据存储在中心服务器中,但比特币数据不存在中心服务器中,而是将数据存储在记账网络中的各个节点中; 假设每个节点相当于一台电脑,那么记账数据会存储在每个人的电脑里,每台电脑都有账本数据,那么如果一个人的账本和别人的账本不一样,谁的账本为准呢? 这是比特币相关的原理知识,请看后面的内容。
① 如何验证账本? 哪个分类帐有效?
②所有权问题? 如何证明谁拥有货币?
③为什么要记账?
④ 以谁的账本为准? (共识机制)
4.如何验证账本?
有人会说,比较所有的账本,少数服从多数; 方法可行,但数据量大,效率太低。
Hash哈希函数:Hash(原始信息)-->摘要信息
哈希特征:
① 相同的原始信息,使用相同的哈希函数,总能得到相同的摘要信息;
②原始信息的任何细微变化都会通过哈希函数导致“无法识别”的摘要信息;
③ 汇总信息不可逆推为原始信息;
MD5是一个hash函数,用来比较文件下载后是否损坏;
根据Hash的特性,可以验证账本的有效性!
哈希(原始信息)==摘要信息
通过比较汇总信息来验证账本! ! !
接下来的会计处理如下:
在新账本Hash之前,会加入上一个账本的哈希值作为参数:这样每次只需要验证最后一个哈希值,就可以判断整个链上的所有账本是否正确。
账本校验摘要:每个节点在校验数据时,只需要校验最后一个区块的摘要信息即可。 如果最后一个区块的汇总信息检查正确,则说明整个区块链的账本是正确的,可以完成。 高效的账本验证!
5. 账户归属问题(比特币系统中如何确定账户中的比特币归谁所有?)
我们先来看中心化系统——银行系统如何确定所有权:
银行系统:用户(银行卡+密码)---->交易
银行卡被人盗用怎么办? 第三方(银行)介入以验证交易是否由您执行。 如果银行卡所有者不履行,银行将取消交易。
但比特币系统是一个去中心化的点对点交易系统,没有第三方参与,那么所有权如何保障呢? ? ?
1. 比特币解决方案:
在比特币系统中,一个账户---->由一个地址来表示,一个地址就是一个账户; 一笔交易实际上是将比特币从一个地址转移到另一个地址; 在整个交易过程中,没有任何个人信息;
谁能使用该地址进行支付,谁就拥有该账户的所有权。
2.密码---->私钥
比特币系统中的私钥相当于银行系统中银行卡的密码;
① 比特币中的一个地址对应一个私钥; 地址和私钥不对称;
②可以通过私钥获取地址:
Hash(Hash(fun(private key))) ——> 地址
③无法从私钥推导出地址:
④谁有私钥就可以支付;
那么,在私钥泄露的情况下,如何证明自己拥有某个地址的私钥呢? ? ?
3. 非对称加密技术(对交易进行签名)
(一)签名过程:
① 对交易进行哈希处理得到摘要;
Hash(交易信息/转账记录)——>汇总信息
② 用私钥对摘要进行签名;
Sign(摘要信息,私钥)——>签名信息
(2)广播交易:
签名后,支付节点在全网广播。 广播内容包括交易信息和签名信息,让其他节点验证交易。 广播是一个循环过程。 其他节点验证通过后,同时向周围节点广播;
4.验证:
其他节点收到广播后,开始验证付款人用私钥对摘要进行签名后是否生成签名信息:
verfiy(签名信息, 付款人地址) ————> 交易摘要
5. 签名与验证:互逆运算
签名是一个加密过程:签名(摘要信息,私钥)——>签名信息
验证时的一个解密过程:验证(签名信息,付款人地址)——>摘要信息
6. 为什么要记账? 工作证明:
记账:是一个Hash打包过程,消耗资源比较多;
记账需要消耗资源,所以系统之所以需要记账,是因为系统会对参与记账的账户给予一定的奖励; 由于记账的随机性,也被称为记账即挖矿;
一、挖矿过程:
① 每次记账,系统先发放一定数量的比特币到记账账户;
②目前每个记账发行12.5个比特币,每个比特币价值>4000RMB;
③ 大家都在争着记账。 如果大家一起记账,就会出现记账不一致的情况,需要制定规则;
2.规则:
①一段时间内,只有一个人可以预订成功,当前时间段为十分钟左右;
② 通过解决密码学问题(工作量证明),竞争获得唯一的记账权;
③其他节点只是复制上一步的记账结果;
3. 工作证明:
①记账:Hash(最后一个Hash值,交易记录集)=23434WEG3
② 这个记账太简单了,每个人都能记账成功; 为了保证一段时间内只有一个人可以完成记账:需要增加记账的难度,所以比特币要求Hash值必须以N个0开头。 目前是18,从0开始;
③因此引入随机数,不断改变随机数,得到不同的Hash值,匹配符合条件的值;
Hash(最后一个Hash值,交易记录集合,随机数)= 0000000000000000002346ffkw324lf23lsfe23f43t3455f
交易集:
一种。 收集并广播未记录在账本中的交易;
b. 交易有效性验证;
C。 为自己添加转账交易(挖矿奖励);
4.工作量分析
区块:区块#512884
哈希值:0000000000000000002243f4g45g3463sl3424l89fd231583nrkf92i3a3823i98i409o9o32f5rf1wedf6tg
Hash值以18个0开头,Hash值为十六进制数;
那么得到0的概率是1/16。 理论上,你需要尝试16次。 要得到两个0,需要尝试16*16次。 然后你需要得到一个18个0开头的数字。 理论上需要尝试1618次;
七、共识机制
既然记账有奖励,就会有很多人参与挖矿,而且有可能两个节点同时记账,同时完成工作量证明,那么用谁的块呢? 为了解决这个问题,比特币采用了一种通用的识别机制,节点的工作量需要被其他节点识别才有效。 共识机制如下:
1. 如果两个节点同时完成工作量证明,则每个节点只同意累计工作量最大的区块链,延伸最长的链;
2.分叉方案:无论哪个节点接收到广播,都会打包到该节点的链上。 如果同时出现两条相同长度的链,则两条链会相互竞争,总有一条链先完成工作量证明;
如上,两个节点#2345A和#2345B同时完成了工作量证明。 两条链的长度相同。 此时#2345A和#2345B这两个节点同时向网络中的其他节点广播。 在这条链上继续打包,收到#2345B的节点在#2345B链上打包,网络传输速度不一样比特币解决了什么问题,所以最终#2345A和#2345B两条链之间,总会有超越的另一条链,例如#2346B,则该链有效;
8.总结
1. 比特币是一个没有第三方参与的点对点区域中心通信系统;
2. 账号验证有问题? 因此引入Hash函数来验证账本的有效性; 每次只需要比较上一次的fast Hash值是否正确即可。 如果最后一个区块的哈希值是正确的,那么整个链的账本都是正确的;
3.所有权问题? 如何判断账户中的比特数属于谁?
Signature:Hash(交易信息)-->摘要信息,sign(摘要信息+私钥)-->签名信息
验证:verify(地址+签名信息)-->判断是否等于Hash(交易信息)
4、为什么要记账?记账是消耗资源的,可以得到系统的奖励
5、工作量证明:引入随机数,增加记账难度,匹配符合比特币条件的Hash值;
Hash(前一个Hash值,交易记录集,随机数)== 18个0开头的Hash值
6、共识机制:每个节点的工作量只有被其他节点认可才有效,每个节点只认可累计工作量最长的链;