Урок 2

比特币如何运作

比特幣依託區塊鏈技術實現,它是一種公開的分布式账本,透過 PoW 共識機制維持網路安全性

比特币和区块链的诞生涉及到数字货币领域由来已久的两大难题:双花问题和拜占庭将军问题

从实物货币到数字货币:破解双花问题

相较于生活中的实物货币而言,开发电子现金的最大难点在于如何克服“信任问题”。最早的贝壳、贵金属之所以能够作为一般等价物,是因为它们本身就具有一定的稀缺性,后来的实物纸币,则是依托国家的公信力解决信任问题。

这些实物货币具有价值,能够即时完成价值的转移。到了数字时代,任何内容本质上都是的0与1的代码组合,数字化的货币也可以被复制成两份,同时发布给两个不同的接受者,这就是所谓的“双花问题”。互联网本身并没有表示价值的能力,因此,人们此前必须借助银行等第三方的中心化服务器,使用集中式的账户系统进行记账才能使用信用卡等类型的电子货币。

无需信任的系统:分布式账本

但真正可信赖的第三方是否存在却是一个值得思考的问题。且不说中心化服务器存在遭到攻击等单点故障风险,就连政府也有可能通过超发货币收取“铸币税”。对此,比特币提出的解决方法是放弃第三方中介,构建分布式账本,使得每个人都成为记账的中心。

假想一个村落中,本来仅由一位“村长”负责记账,村子全体成员的所有开支,都需要在村长处事无巨细地登记,那么这位“村长”就是这个记账系统的中心。如果村长值得信任,那么这个系统能够良好运作,但如果作为系统中心的村长监守自盗,那可能就很难被其他人察觉了。

而设想存在一个“去中心化”村,村中每位成员都是记账人,每个人都各自持有一份相同的账本。某位成员想要修改账本,需要在修改完后通过“广播”通知给其他成员,让他们确认记账内容并抄写的自己的账本上。只有所有成员都确认并更新了账本,记账过程才算完成。这也是比特币网络大致的运作方式。

分布式记账的实现:区块与区块链

可以认为比特币开创了一种新式的记账系统 — 分布式账本。相较于中心式记账将数据储存在中心化服务器中,区块链本身就是一种去中心化的数据库,网络中每个节点都是这个数据库的持有者和维护者。

区块链是比特币的基础基础,比特币则是区块链的首个大规模应用。

根据各自功能的不同,可以将整个比特币系统简单划分为三层:数据层、共识层、应用层。让我们先来看看,比特币系统中每位成员所各自持有的“账本”(数据层)是什么样的。

从默克尔树到区块“链”

区块链本质上是一个由全体节点共同维护的分布式账本,网络每个节点都储存有完整的区块链数据。从数据结构上来说,节点所储存的区块“链”是由一个个区块连接在一起形成的有序链表,而区块自身则是一个由Hash加密算法维持不可篡改特性的数据块。

在比特币中,哈希函数(SHA-256和RipeMD160)是一种至关重要的加密算法,它能够将任意长度的输入值转变成固定长度的值输出,具有随机性、抗碰撞性、不可反推原始输入值等特点,输入数据的微小改变就能产生完全不同的输出值。哈希函数的输出很容易通过输入得出,但要从输出反推输入只能通过暴力穷举方式花费大量时间和算力完成。哈希函数的反复运用使得比特币的数据结构简洁而严谨。

一个比特币区块由区块体和区块头两部分组成。区块体包含有该区块上的所有交易信息,这些交易信息会经过多次哈希运算,形成一种被称为默克尔树的结构,构成区块体。其中每个区块的第一条交易信息也被称作coinbase交易,也是生成新比特币并将之奖励给矿工的交易,其他交易都是用户之间互相转账的交易。

这些交易经过多次哈希运算最终得出的一个值被称作默克尔根(Merkle Hash)。默克尔根是所有交易数据的归总,无论是任何一笔交易的数据被篡改,还是交易的顺序被调动,都会导致默克尔根值的改变。默克尔根与随机数(Nunce)、时间戳、父区块哈希等数据共同构成区块头,计算区块头的哈希值能够得到这一区块的区块哈希(Block Hash)。由于每个区块的区块头都包含了父区块的哈希值,所有区块通过这种形式连接成链。各个区块之间环环相扣,对于区块数据的任何更改都会导致区块哈希的变动,从而使得链条破裂。

PoW 工作量證明:維護網路安全的共識機制

在介绍完每个节点所持有的“账本”( 数据层 )后,让我们再来谈谈比特币的共识层,也就是維持網路安全

在深入分布式系统的共识前,首先要知道 “拜占庭将军”问题

拜占庭将军:涉及多方訊息的同步問題

拜占庭将军问题起源于中世纪时期,由于拜占庭国土辽阔,军队之间通信只能依靠信差传递上层的作战信息。如果有叛徒故意错传上层领导作战信息,会导致作战方案不一致,从而出现“拜占庭将军问题”。

比特币网络由诸多去中心化的节点构成,各个节点都是独立自主、地位平等的“军团”。网络每个节点都持有自己独有的区块链数据拷贝,他们都想首先打包交易,并由此赚取系统分发的比特币奖励。那么究竟哪个节点能够获得记账权,成功使得整个网络达成共识,从而修改区块链数据呢 ?

PoW 工作量證明:運算產生答案,即時發佈至網路驗證

比特币对此给出的答案是工作量证明( PoW )共识机制,俗称“挖矿”,这是一种由节点进行的数字运算过程,首先找到问题“答案”的节点就能够获得记账权。具体来说,节点需要不断尝试改变区块头的随机数( Nunce ),不断计算区块哈希,最终得到一个前面若干位数值都是零的区块哈希

此时的Nunce值就是问题的答案。找到答案后,节点将会向其他网络节点广播,其他节点验证答案后,迅速将这一区块作为新的父节点,继续进行下一轮的挖矿作业。

这就引出了另外一个问题,节点之间的信号传播需要时间,在网络全体节点达成共识前,完全可能有两个乃至多个节点同时找到了问题的解。但由于两个节点打包的 coinbase 交易不同,这将产生两个不同的有效区块。由于信号传递的先后不同,两条分叉链上都会有矿工节点开展作业。此时,比特币网络将采取“最长链原则”,只将其上区块数目最多的分叉链视作唯一被承认的区块链。一般而言,这种分叉竞争会在6个区块以内完成,另一条废弃链上的交易则将全部作废。

比特币的本质:UXTO模型

借由算力竞争和最长链原则,比特币节点之间能够达成共识,同步完成各自手上分布式账本的更新。而这种基于共识的分布式账本,也使得比特币这种点对点的数字货币成为可能。

传统电子货币采用中心化的账户系统,将在中心化服务器上为每个用户创建账户,并储存所有账户的余额数据。每笔交易发生后,按照时间顺序对于账户余额进行增减。而比特币所采用的则是UXTO模型,即Unspent TX Output,未花费交易输出。

比特币中的交易是通过非对称加密实现的。每个比特币用户都需要持有一组成对的公钥和私钥,类似于中心化金融中的账户与密码。用户需要使用私钥对交易数据进行签名,并将自己的交易数据、签名和公钥一起发布出去。但在每笔交易的过程中,用户并不直接账户余额进行转账,而是使用多笔此前交易中“未花费的金额”,也就是UTXO。

从根本上,比特币系统中不存在账户或是账户余额的概念,有的只是历史上所有交易的UTXO。比特币钱包能够扫描历史上所有交易的数据,计算出特定地址(也就是公钥)所具有的UTXO总额,得到所谓的账户余额。此外,比特币钱包还能在发起交易时自动安排,匹配余额合适的UTXO以完成转账。

Highlights
比特幣依託區塊技術實現,區塊鏈是一種去中心化數據庫,藉此構建無需第三方信任的分佈式賬本,讓網路中的每個節點都成為數據的維護者
比特幣透過 SHA256 算法生成哈希值,並以區塊頭和區塊體的方式保存數據,由一個個區塊鏈接而成的結構,資料不可篡改因此有極搞的安全性
比特幣的共識機制是 PoW 工作量證明,這是一種由節點耗費算力進行解題,獲得記賬權後將該筆交易同步至其他節點,進而獲得加密貨幣獎勵的機制




📄・Related Articles

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 2

比特币如何运作

比特幣依託區塊鏈技術實現,它是一種公開的分布式账本,透過 PoW 共識機制維持網路安全性

比特币和区块链的诞生涉及到数字货币领域由来已久的两大难题:双花问题和拜占庭将军问题

从实物货币到数字货币:破解双花问题

相较于生活中的实物货币而言,开发电子现金的最大难点在于如何克服“信任问题”。最早的贝壳、贵金属之所以能够作为一般等价物,是因为它们本身就具有一定的稀缺性,后来的实物纸币,则是依托国家的公信力解决信任问题。

这些实物货币具有价值,能够即时完成价值的转移。到了数字时代,任何内容本质上都是的0与1的代码组合,数字化的货币也可以被复制成两份,同时发布给两个不同的接受者,这就是所谓的“双花问题”。互联网本身并没有表示价值的能力,因此,人们此前必须借助银行等第三方的中心化服务器,使用集中式的账户系统进行记账才能使用信用卡等类型的电子货币。

无需信任的系统:分布式账本

但真正可信赖的第三方是否存在却是一个值得思考的问题。且不说中心化服务器存在遭到攻击等单点故障风险,就连政府也有可能通过超发货币收取“铸币税”。对此,比特币提出的解决方法是放弃第三方中介,构建分布式账本,使得每个人都成为记账的中心。

假想一个村落中,本来仅由一位“村长”负责记账,村子全体成员的所有开支,都需要在村长处事无巨细地登记,那么这位“村长”就是这个记账系统的中心。如果村长值得信任,那么这个系统能够良好运作,但如果作为系统中心的村长监守自盗,那可能就很难被其他人察觉了。

而设想存在一个“去中心化”村,村中每位成员都是记账人,每个人都各自持有一份相同的账本。某位成员想要修改账本,需要在修改完后通过“广播”通知给其他成员,让他们确认记账内容并抄写的自己的账本上。只有所有成员都确认并更新了账本,记账过程才算完成。这也是比特币网络大致的运作方式。

分布式记账的实现:区块与区块链

可以认为比特币开创了一种新式的记账系统 — 分布式账本。相较于中心式记账将数据储存在中心化服务器中,区块链本身就是一种去中心化的数据库,网络中每个节点都是这个数据库的持有者和维护者。

区块链是比特币的基础基础,比特币则是区块链的首个大规模应用。

根据各自功能的不同,可以将整个比特币系统简单划分为三层:数据层、共识层、应用层。让我们先来看看,比特币系统中每位成员所各自持有的“账本”(数据层)是什么样的。

从默克尔树到区块“链”

区块链本质上是一个由全体节点共同维护的分布式账本,网络每个节点都储存有完整的区块链数据。从数据结构上来说,节点所储存的区块“链”是由一个个区块连接在一起形成的有序链表,而区块自身则是一个由Hash加密算法维持不可篡改特性的数据块。

在比特币中,哈希函数(SHA-256和RipeMD160)是一种至关重要的加密算法,它能够将任意长度的输入值转变成固定长度的值输出,具有随机性、抗碰撞性、不可反推原始输入值等特点,输入数据的微小改变就能产生完全不同的输出值。哈希函数的输出很容易通过输入得出,但要从输出反推输入只能通过暴力穷举方式花费大量时间和算力完成。哈希函数的反复运用使得比特币的数据结构简洁而严谨。

一个比特币区块由区块体和区块头两部分组成。区块体包含有该区块上的所有交易信息,这些交易信息会经过多次哈希运算,形成一种被称为默克尔树的结构,构成区块体。其中每个区块的第一条交易信息也被称作coinbase交易,也是生成新比特币并将之奖励给矿工的交易,其他交易都是用户之间互相转账的交易。

这些交易经过多次哈希运算最终得出的一个值被称作默克尔根(Merkle Hash)。默克尔根是所有交易数据的归总,无论是任何一笔交易的数据被篡改,还是交易的顺序被调动,都会导致默克尔根值的改变。默克尔根与随机数(Nunce)、时间戳、父区块哈希等数据共同构成区块头,计算区块头的哈希值能够得到这一区块的区块哈希(Block Hash)。由于每个区块的区块头都包含了父区块的哈希值,所有区块通过这种形式连接成链。各个区块之间环环相扣,对于区块数据的任何更改都会导致区块哈希的变动,从而使得链条破裂。

PoW 工作量證明:維護網路安全的共識機制

在介绍完每个节点所持有的“账本”( 数据层 )后,让我们再来谈谈比特币的共识层,也就是維持網路安全

在深入分布式系统的共识前,首先要知道 “拜占庭将军”问题

拜占庭将军:涉及多方訊息的同步問題

拜占庭将军问题起源于中世纪时期,由于拜占庭国土辽阔,军队之间通信只能依靠信差传递上层的作战信息。如果有叛徒故意错传上层领导作战信息,会导致作战方案不一致,从而出现“拜占庭将军问题”。

比特币网络由诸多去中心化的节点构成,各个节点都是独立自主、地位平等的“军团”。网络每个节点都持有自己独有的区块链数据拷贝,他们都想首先打包交易,并由此赚取系统分发的比特币奖励。那么究竟哪个节点能够获得记账权,成功使得整个网络达成共识,从而修改区块链数据呢 ?

PoW 工作量證明:運算產生答案,即時發佈至網路驗證

比特币对此给出的答案是工作量证明( PoW )共识机制,俗称“挖矿”,这是一种由节点进行的数字运算过程,首先找到问题“答案”的节点就能够获得记账权。具体来说,节点需要不断尝试改变区块头的随机数( Nunce ),不断计算区块哈希,最终得到一个前面若干位数值都是零的区块哈希

此时的Nunce值就是问题的答案。找到答案后,节点将会向其他网络节点广播,其他节点验证答案后,迅速将这一区块作为新的父节点,继续进行下一轮的挖矿作业。

这就引出了另外一个问题,节点之间的信号传播需要时间,在网络全体节点达成共识前,完全可能有两个乃至多个节点同时找到了问题的解。但由于两个节点打包的 coinbase 交易不同,这将产生两个不同的有效区块。由于信号传递的先后不同,两条分叉链上都会有矿工节点开展作业。此时,比特币网络将采取“最长链原则”,只将其上区块数目最多的分叉链视作唯一被承认的区块链。一般而言,这种分叉竞争会在6个区块以内完成,另一条废弃链上的交易则将全部作废。

比特币的本质:UXTO模型

借由算力竞争和最长链原则,比特币节点之间能够达成共识,同步完成各自手上分布式账本的更新。而这种基于共识的分布式账本,也使得比特币这种点对点的数字货币成为可能。

传统电子货币采用中心化的账户系统,将在中心化服务器上为每个用户创建账户,并储存所有账户的余额数据。每笔交易发生后,按照时间顺序对于账户余额进行增减。而比特币所采用的则是UXTO模型,即Unspent TX Output,未花费交易输出。

比特币中的交易是通过非对称加密实现的。每个比特币用户都需要持有一组成对的公钥和私钥,类似于中心化金融中的账户与密码。用户需要使用私钥对交易数据进行签名,并将自己的交易数据、签名和公钥一起发布出去。但在每笔交易的过程中,用户并不直接账户余额进行转账,而是使用多笔此前交易中“未花费的金额”,也就是UTXO。

从根本上,比特币系统中不存在账户或是账户余额的概念,有的只是历史上所有交易的UTXO。比特币钱包能够扫描历史上所有交易的数据,计算出特定地址(也就是公钥)所具有的UTXO总额,得到所谓的账户余额。此外,比特币钱包还能在发起交易时自动安排,匹配余额合适的UTXO以完成转账。

Highlights
比特幣依託區塊技術實現,區塊鏈是一種去中心化數據庫,藉此構建無需第三方信任的分佈式賬本,讓網路中的每個節點都成為數據的維護者
比特幣透過 SHA256 算法生成哈希值,並以區塊頭和區塊體的方式保存數據,由一個個區塊鏈接而成的結構,資料不可篡改因此有極搞的安全性
比特幣的共識機制是 PoW 工作量證明,這是一種由節點耗費算力進行解題,獲得記賬權後將該筆交易同步至其他節點,進而獲得加密貨幣獎勵的機制




📄・Related Articles

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.