失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 区块链笔记 - 《区块链技术核心概念与原理讲解》

区块链笔记 - 《区块链技术核心概念与原理讲解》

时间:2023-11-17 18:59:26

相关推荐

区块链笔记 - 《区块链技术核心概念与原理讲解》

说明:笔记内容来源于慕课网《区块链技术核心概念与原理讲解》视频课程。如有侵权,请联系删除。

目录

1、区块链前世今生

2、区块链前景

3、比特币是什么

4、比特币原理

4.1 账本如何验证?(哪一个账本是有效的?)

4.2 所有权问题(某个账号的比特币是属于谁的?)

4.3 为什么要参与记账?(挖矿)

4.3.1 为什么记账?

4.3.2 挖矿-工作量证明

4.4 以谁的账本为准?(共识机制)

1、区块链前世今生

密码朋克(Cypherpunk)

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

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

WWW的发明者:蒂姆伯纳斯-李

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

Facebook创始人:肖恩帕克

中本聪

Adam Back 发明了Hashcash,使用了POW

Haber/Stornetta 提出时间戳方法保证数字文件安全的协议

戴伟 发明了B-money,强调点对点交易和不可变更记录

哈尔-芬尼 退出了"加密现金"

中本聪 《比特币:一个点对点的电子现金系统》

比特币的底层技术(如 点对点的网络、时间戳、加密技术、工作量证明等)不仅可以运用到数字货币,

还能应用到其他领域。把这些技术综合提炼出来,就形成了区块链的概念。

2、区块链前景

应用场景

*资产:数字资产发行、支付(跨境支付)、交易、结算

*记账:股权交易、供应链金融、商业积分

*不可篡改:溯源、众筹、医疗证明、存在性证明

*点对点:共享经济、物联网

*隐私:匿名交易

人才缺口巨大

区块链招聘年薪高达百万 巨头入局抢夺人才(-03-19 来源:猎云网 作者:王亚楠)

3、比特币是什么

比特币是数字货币什么是货币

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

货币历史

*铜币、金银:贵金属作为货币的价值,取决于贵金属本身的价值

*银票:信用货币,银票作为货币的价值,取决于钱庄的背书

*法币:信用货币(如,人民币),银票作为货币的价值,取决于国家政府的背书

信用货币,就实物而言,只是一张纸,本身是没有价值的。

信用货币的价值,来源于我们对信用货币的信任,或者讲,来源于我们对钱庄、政府的信任。

数字货币

*一串数字

类似于金银铜、纸可以作为货币,数字也可以作为货币。

数字货币的价值,来源于大家对数字的信任,在区块链中称为共识。

大家认为数字有价值,数字就可以作为货币。比如,卖包子的认可这个数字,这个数字就可以用来买包子,卖手机的认可这个数字,这个数字就可以用来买手机。

信任从何而来

* 财产只受自己控制:银行动不了我们的¥,财产只受自己的私钥控制

* 无通胀:不会因为银行发行更多的钞票而贬值,比特币的总量为2100万个

* 没有假钞:任何作弊的支付,都无法得到比特币网络中其他矿工的确认,因而无法完成支付

* 流通性好:可以全球无缝的流通,点对点的流通

去中心化的记账系统

*中心化系统:通常会有一个中央服务器来存储所有数据。

中央服务器存储的是什么,就是最终的结果。如果中央服务器的数据被篡改,也没法验证。

因为只有一方拥有这个数据,其他节点无法验证数据的真实有效性。

* 去中心化系统:数据不再只存储在中央服务器中,而是存储在比特币网络中每个节点中。

如果把每个节点比作一台电脑,记账数据就会存储在每台电脑中。

【问题】每台电脑中都存储一份账本数据,如果某台电脑的账本和其他电脑的账本不一样,到底以哪个账本为准?

4、比特币原理

4.1 账本如何验证?(哪一个账本是有效的?)

【一个不同账本的场景】

正确的账本,分别存储王二、张三、李四、赵五的电脑中。

张三偷偷把自己的余额,由30改为300。

这时,张三的账本,和王二、李四、赵五的账本不一致,以谁的账本为准呢?

方案1:核对账本记录,少数服从多数

比特币网络中有数百万个账本,每个账本都有海量的记录。

每次转账时,都和这数百万个账本逐一核对,这个效率是无法接受的。

方案2:Hash

* 哈希函数:Hash(原始信息)=摘要信息

* 特点

1)同样的原始信息用同一个哈希函数总能得到相同的摘要信息

2)原始信息的任何微小的变化都会哈希出面目全非的摘要信息

3)从摘要信息无法逆向推算出原始信息

账本通常包含的信息:序号、记账时间(时间戳)、交易信息。

对账本进行哈希运算,得到一个摘要信息,如787635A。

如果摘要信息和其他人的摘要信息一致,则说明账本信息和其他人的账本信息一致。

这样,对比摘要 相对于 对比账本原始信息,效率就会提升很多。

区块

序号、时间戳、Hash值、交易记录,保存下来后,就形成了区块。

序号、时间戳、Hash值称为区块的头

对第2个账本进行哈希运算时,加入第1个账本的Hash值,得到第2个账本的摘要信息,如456635B。

如果第2个账本的摘要信息一致,说明第2个账本的信息和第1个账本的摘要信息都是一致的。

第1个账本的摘要信息一致,又说明第1个账本的信息是一致的。

以此类推,可以由第3个账本信息一致,推出第2个、第1个账本信息一致。

每个账本都会生成各自的区块,所有这些区块串联的结构,就称为区块链。

每个节点在核对数据时,只需要核对最后一个区块的摘要信息。

如果最后一个区块的摘要信息相同,说明整个区块链的账本都是一致的,由此可以完成高效的账本验证。

4.2 所有权问题(某个账号的比特币是属于谁的?)

某个账号的比特币是属于谁的?

谁可以支付这个账号下的比特币?

银行系统

刷卡时需要提供两样东西:银行卡+密码,如果银行卡号、密码,和银行系统中的一致,就可以付款。

如果发生了盗刷,银行会核对账号的所有者。

银行开户

开户时,确定了我们对这个账号的所有权

银行记账

比如发生一笔盗刷,账号0001发生了一笔200元的支出到账号0002,

如果银行确定这笔盗刷,银行可能会撤销这笔记账。

比特币系统

点对点交易,如何在没有第三方(比如银行)的参与下,来确定账号的所有权?

账号 -> 地址

账号是用地址来表示的,转账的过程,是把比特币从一个地址转到另一个地址。

账本上不保存任何个人信息,谁能用这个地址进行支付,谁就有这个账号的所有权。

密码 -> 私钥

比特币用地址表示一个账号,一个地址有一个对应的私钥,

谁拥有这个私钥,谁就能用这个地址进行支付。

比特币的地址和私钥是非对称关系,私钥通过一系列的Hash运算,可以得到比特币的地址。

但比特币地址不能反推出私钥。

非对称加密技术(对交易进行签名)

谁拥有地址的私钥,谁就能用这个地址进行支付。

这时,所有权问题就变为:如何在不泄露私钥的情况下,来证明我们拥有某个地址的私钥。

对交易进行签名,分为两步:

①对交易进行Hash,得到交易的摘要

② 用私钥对摘要进行签名

广播交易

在签名运算后,付款节点会在整个比特币网络中广播。

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

整个广播的过程,是个循环的过程。

当节点收到广播并验证通过后,会向已知相邻的节点再次广播。

验证

其他节点收到广播信息后,会进行验证:

验证签名信息是否为付款方用私钥对交易信息签名产生的。

签名及验证

签名和验证是逆运算:签名是加密过程,验证是解密过程。

补充

关于隐私:整个账本中没有个人信息,保证了比特币的隐私性。

关于安全:银行卡中的¥,银行可以冻结。比特币中,只要我们不泄露私钥,账户的¥就是安全的。

4.3 为什么要参与记账?(挖矿)

4.3.1 为什么记账?

记账:把交易记录、交易时间、序号等信息进行Hash打包的过程消耗资源:Hash打包的过程是消耗计算机资源的

既然要付出成本,节点为什么要参与记账呢?

奖励:比特币系统中,完成记账的节点可以获得一定数量的比特币作为奖励。

这个奖励也是比特币发行的过程。

4.3.2 挖矿-工作量证明

规则

记账是有奖励的,每次记账,系统都会新发行一定数量的比特币到记账的账户。

如果大家同时去记账,就会出现记账不一致的情况,需要有一定的规则去限制大家记账:

① 一段时间内(通常为10分钟),只有一人可以记账成功

② 通过解决密码学难题(即工作量证明)竞争获得唯一记账权

③ 其他节点复制记账结果

在解决密码学难题时,有一定的随机性。

而记账又可以获得奖励,因此大家形象地把记账的过程称为挖矿。

工作量证明

账本验证时,每次记账时是把上一个账本的Hash值,和当前的账本信息,一起作为原始的信息进行Hash。

如果仅仅是样的过程,显然每个人都可以轻松的完成记账。

为了保证一段时间内,只有一个人可以记账,就必须要提高记账的难度。

因此,比特币系统要求Hash值要满足一定的条件(必须要以N个0开头,比如18)。

为了满足Hash值以N个0开头,在计算Hash值时就要引入一个变量(输入信息的任何微小变化都会引起Hash值的改变)。

通过不断改变随机数的值,每次都会得到一个全新的Hash值,总可以找到N个0开头的Hash值。

率先找到N个0开头的Hash值的节点,就可以获得唯一的记账权。

交易记录集的获取步骤

① 收集广播中还没有被记录到账本的交易

② 验证交易的有效性(交易是否有正确的签名、付款地址是否有足够的余额)

③ 添加一笔给自己转账的交易(挖矿奖励)

如果一个节点比其他节点更快地找到Hash值,整个交易集就会被打包进区块链中。

这样,打包的节点就获取了这笔奖励。

工作量分析

区块的Hash值以18个0开头。

Hash值是16进制的字符串,每位的取值范围为0-F,则为0的概率为1/16。

则连续18位都为0的概率为1/(16的18次方),即理论上要尝试Hash运算的次数为16的18次方。

这么大的计算量,需要投入非常大的计算设备,也需要消耗非常大的电力。

目前已经没有独立的矿工进行挖矿,因为可能几十年都没有办法计算出满足要求的Hash值。

现在基本都是矿工联合起来,组成矿池进行挖矿。矿池中的矿工按照算力的百分比进行收益的分成。

从经济角度上,只要挖矿还有收益,总会有新的矿工加入来加剧竞争,提高算力的难度。

从而挖矿会消耗更多的算力和电力,这样相互作用,最终成本会接近收益。

总结:记账是要消耗资源的,因此比特币系统会奖励参与记账的人,同时引入工作量证明来解决记账冲突的问题。

4.4 以谁的账本为准?(共识机制)

第一个完成工作量证明的节点,优先拥有唯一的记账权,可以打包区块,从而获得奖励。

每个矿工都是独立的完成工作量证明,这样就会出现一种情况:

两个节点同时完成工作量证明,使用谁打包的区块?

比特币系统中,没有中心化的仲裁机构,无法通过仲裁裁决。

矿工之间怎么协商达成共识,让大家都去认可使用谁打包的区块?

比特币系统中,把这个问题称为共识机制。

为什么要遵守协议?

在经济生活中,每个人追求的是利益最大化

节点的工作量只有在其他节点认同的情况下,才是有效的

新打包的区块,需要其他节点的验证,验证通过后才会加入区块链,

并在网络上传播,打包区块的节点也因此获得收益。

如果不遵守规则,打包的区块就不会被加入区块链,因此也无法获得收益。

因此节点会自发的遵守协议,共识也就是这样达成的。

累计工作量最大的区块链

如果两个节点同时完成了工作量证明,到底用谁的区块?

每个节点只认可累计工总量最大的区块链。

每个节点都是独立的,独立的去选择累计工作量最大的区块链,并去延长这条区块链。

共识机制最终的目的是,保证比特币在工作量最大的区块链上运转。

分叉

主链:包含最多区块的链

同一时刻,两个矿工各自求得了工作量证明的解,各自打了一个包(#3458A、#3458B),并在网络上广播。

每个收到有效区块的节点,都会把这个新区块拼接到主链中。

两个块在传播时,有些节点先收到#3458A,有些节点先收到#3458B,有些节点同时收到#3458A、#3458B。

收到#3458A的节点,会在主链上延长#3458A。

收到#3458B的节点,会在主链上延长#3458B。

同时收到#3458A、#3458B的节点,会对比这两个块,选择工作量更多的块延长主链。

另外一个链作为备用链保存,因为备用链可能因为后续产生更多的块,从而作为主链。

这样就产生了分叉。

分叉解决

收到#3458A区块的节点,会以#3458A作为父区块,在#3458A后打包。

收到#3458B区块的节点,会以#3458B作为父区块,在#3458B后打包。

这时两条链就产生了竞争,但总会有一方抢先发现工作量证明,然后把求解的区块传播出去。

比如以#3458B为父区块的节点,产生了#3459B,并传播出去。

则以#3458A作为父区块的节点,在收到#3458B、#3459B后,发现#3459B的链条更长,

则会舍弃#3458A所在的链,把#3459B所在的链作为主链。

这样分叉问题就解决了。

由于网络有不确定性,有时节点会先收到#3459B,并没有收到#3458B。

这时#3459B会作为孤块,被放在孤块池中。

一旦节点收到#3458B,就可以把这些块串起来。

比特币把区块间隔设计为10分钟,是对更快的交易确认、更低的分叉概率作出的妥协。

更短的区块产生间隔,会让交易更快的完成确认,但也会使分叉更加频繁。

更长的区块产生间隔,会降低分叉数量,但会使交易确认时间更久。

共识机制:采用工作量最大的链作为主链。

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

如果觉得《区块链笔记 - 《区块链技术核心概念与原理讲解》》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。