区块链:初探

历史:

  • 密码朋克:

维基解密的创始人:阿桑奇

BT下载的作者:布莱姆-科恩

www发明者:蒂姆伯纳斯-李

智能合约概念的提出者:尼科萨博

Facebook的创始人:肖恩帕克

比特币之父:中本聪

  • Adam Back发明Hashcash,使用POW
  • Haber/Stornetta提出时间戳方法保证数字文件的安全协议
  • 戴伟 发明了B-money,强调点对点交易和不可更改记录
  • 哈尔芬妮 提出“加密现金”
  • 2008年中本聪 比特币:一个点对点的电子现金系统

比特币=======================================》 区块链

为什么叫区块链?

区块链是一系列技术的集合。

比特币系统的数据是一个个区块存储的,通过hash方式把1个个区块连接起来。

应用场景:

  • 资产:数字资产发行ICO、支付(跨境支付)、交易、结算
  • 记账:股权交易、供应链金融、商业积分
  • 不可篡改:朔源、众筹、医疗证明、存在性证明
  • 点对点:共享经济、物联网
  • 隐私:匿名交易

比特币:数字货币

1.什么是货币:

凯恩斯《货币论》:货币是可以承载价值的一般等价物。

数字货币:一串数字。

大家认为它有价值,它就是货币。【需要得到共识,就比如RMB,不就是一张纸吗?但是大家都认同它是交易的证券,所以RMB就有价值】

2.信任从哪儿来?

  • 财产只受自己控制.【不会像银行那样可能会冻结资金】
  • 无通胀【现实中有100RMB买不到一个奶粉,而比特币总量是不变的】
  • 没假钞【作弊的支付都无法得到其他矿工的确认】
  • 流通性好

3.比特币是什么?

去中心化的记账系统。

中心化的系统:

通常有一个中央的服务器存储所有的数据。类似数据库。

去中心化:存储在比特币网络中每一个节点中。

4.比特币原理:

涉及问题:

    1.账本如何验证?

     2.所有权问题?

     3 .为什么记账?【挖矿】

      4.以谁的账本为准?【共识机制】

4.1 账本如何验证:

假设有下面这个账本:

账本分别存在下面的每个电脑中:

这时,假如张三改了自己的余额:

这时候网络上的账本就存在真假账本。

如何确定数据正确性?

  • Hash【哈希函数:Hash(原始信息)=摘要信息】
  • hash特点:同样的原始信息用同一个哈希函数总能得到相同的摘要信息。原始信息发生微小的变化都会哈希出面目全非的摘要信息。从摘要信息无法逆向推算出原始信息。

其他方案:

11核对账本记录、少数服从多数:【效率太慢】

假如有下面的账本:

区块:

这时候来了另一个账本:

会加入第一个账本的hash值。

依次类推,每个节点核对数据的时候,只需要核对最后一个区块的摘要信息,核对上就说明整个区块链账本正确,而不用再每个去确认。

4.2 .所有权问题【私钥控制】

比特币里面是如何确定某个账户的比特币是谁的/谁可以支付它。

现实生活中,刷卡可以用银行卡和密码。发生盗刷报警银行核对账户的所有者是不是我们本人。【核对的证据:开户时提供的信息】

比特币是点对点,没有第三方银行参与,解决方法是:账户->地址

转账是把一个地址转到另外一个地址:

账本不保存个人信息。谁能用整个地址支付,谁就拥有账号所有权支付0.2比特币。

密码->私钥:一个地址对应一个私钥。私钥泄露会导致比特币丢失。

账号和密码是没有对应关系的,2者不能互相推导出来。

地址和私钥是一个非对称关系。私钥经过一系列hash后就可得到地址,而地址hash不能得到私钥。

如何在不泄露私钥的情况下证明我们拥有私钥:

非对称加密技术【交易签名】:交易进行hash得到摘要、用私钥队摘要进行签名。

签名过程:

先对原始交易记录进行hash得到摘要信息

然后用摘要信息和私钥进行签名运算返回签名信息

签名运算后付款的节点会在整个网络中进行广播交易,

广播内容包含交易的原始信息、签名信息

广播让网络上的其他节点验证。当节点受到广播后验证通过后会再次向已知相邻的节点进行广播。

其他节点受到广播后就会开始验证:

验证签名的信息是不是付款方用私钥对原始信息签名产生的。

如果验证的运算是原始交易信息的摘要,说明这个交易就是地址的私钥所有者发出的,验证通过,把这个交易信息写入到当前节点的账本中去并广播。

过程中的签名和验证实际上是一个逆运算:

付款的地址是公钥,签名的过程是对摘要进行加密的过程。验证是解密的过程,用付款方的地址和签名信息得到交易摘要。

账本中没有个人信息保证了隐私性,比特币的安全在自己的手里,不泄露私钥。

4.3 .为什么我们要挖矿:

记账是一个Hash打包的过程。需要消耗计算机资源。

比特币系统中,完成记账的节点可以获取系统一定数量比特币的奖励【也是比特币发行的过程】

挖矿-》》工作量证明:

记账是新发行一定数量的比特币到记账的账户。【比特币现在很值钱】

一起记账带来一个问题类似java的多线程并发修改一个变量的值。

规则一段时间内只有一个可以记账成功。其他节点复制记账结果【迭代的】

工作量证明:解决密码学难题竞争获取唯一记账权。

需要以若干个0开头。

交易记录集:

  • 收集广播中还没有被记录账本的交易
  • 交易的有效性验证
  • 添加一笔给自己转账的交易【挖矿的奖励】

运算量实例:

得到0需要16次,

为了得到上面的00000...需要耗费资源。【电力】

4.4 .共识机制:

工作量证明中每个矿工都会独立的去完成工作量证明,这时候涉及”多线程知识了“。

2个节点同时完成工作量证明,使用谁的区块?【比特币无仲裁机构裁决】

都说用我的区块。为了解决这个问题就叫共识机制。【也是经济问题】

累计工作量最大的区块链

为什么遵守协议:

节点工作量只有在其他的节点认同其是有效的。

假如:分叉

网络传输的不确定性会导致2个区块的受到的广播时长不一样。所以会对比2个块,选择工作量更多的量作为主链,剩下的就是副链。

此时,以3458A为主链的发现下面的更长会让更长的为主链。

完整的工作量机制:工作量证明+最长链的选择


区块链技术核心原理实现:【暂未补充github地址】

发布了288 篇原创文章 · 获赞 40 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_39969226/article/details/104076456
今日推荐