进入Web3.0时代后,我们迫切需要一种用户创造、用户拥有、用户控制的货币形态。
存在一套机制进行“信用”背书,让人们对这种货币在交易层面达成“共识”。
随着人们的网上消费增多,它应该仍然能够满足数字交易的需求。
它应该是去中心化的,存储的数据应该属于所有创造它的人。
它应该是安全的,可以被验真,交易体系需要能持续平稳运行,任何人都不能随意改变自己手上的货币量。
电子签名与分布式账本
为了方便理解后续有关比特币和区块链的一系列概念,我们来营造一个虚拟的场景,模拟货币的实际运行,思考存在的问题和解决的方法。
场景:小明、小红、小刚、小丽是四个好朋友,他们之间有频繁的金钱往来,于是他们建立了一个公共电子账本,记录下彼此账户间发生的交易,到月底统一结算。
现在让我们看看这样简单的交易体系会出现哪些问题,以及比特币是如何解决这些问题的。
电子签名:公钥与私钥
第一个问题是如何保证交易的记录是准确的?
因为电子账本是公共的,所以任何人都可以偷偷在上面增加记录。如果小明在未经小刚的允许下在公共账本上增加了一条不存在的记录,说“小刚要转给小明10元钱”怎么办?
一个最简单的思路是,每一笔交易都需要这个人不可伪造的电子签名以确认本人授权了这笔交易。(私钥签名,公钥校验签名)
但是,怎么样实现不可伪造的电子签名呢?这就涉及密码学的研究成果:公钥与私钥。每个人的账户都有一对字符串,一个叫作公钥,一个叫作私钥。公钥是公开的账户地址,所有人都可以看到,而私钥相当于账户密码,只有你自己才知道这一串数字,每个公钥都只对应唯一的一个私钥。为了实现电子签名,需要用到两个函数:
签名函数和验证函数。
签名函数(交易记录,私钥)= 针对该交易的电子签名
验证函数(交易记录,签名,公钥)= True/False
破解难度
因为函数具有不可逆转性,想要获取公钥配对私钥来伪造的签名,除了一个个尝试枚举之外,并没有任何其他方法,而进行完全枚举则需要尝试2256次。也就是说,如果想要通过枚举法来找到这个数字,假设使用1000万亿台中国峰值性能为每秒1.206千万亿次的“天河一号”超级计算机,就算花1000万亿年的时间,连这个枚举量的零头都远远达不到,这一庞大的计算量从根本上保证了电子签名的不可伪造性。
电子账本与加密货币
为了避免这种情况,需要像使用支付宝一样,让每个参与这套系统的人都向账户里先存储一定的资金并同样记录在账本上,然后才能进行交易。例如,“小明向账户上存了100元”,每次增加交易记录时,需要判定对方账户上是否有这么多钱,如果存的钱不够,就需要宣布这一笔交易无效。
到此为止,以上都是一个支付系统最基础的功能。
分布式账本与广播网络
电子签名和电子账本成功地解决了如何让机制进行信用背书以及数字交易的问题,但为了实现Web3.0时代“用户创造、用户拥有、用户控制”的理念,我们需要把账本做成分布式的,储存在网络中的每一个用户那里。
又因为“历史交易信息的总和就是货币”,那么每个人手中的账本也应该是一样的,这时,就需要一个广播网络。
例如,小明要给小刚100元,小明需要顺着网线“大吼一声”,把这个消息传给小红、小刚和小丽,让他们在账本上也添加上这条信息,以保证所有人的账本保持一致。当然,这只是一个形象的比喻,这个过程实际上是由加密货币系统自己完成的。
共识机制与区块链
共识机制
当我们采用电子签名和分布式账本的时候,我们用一套机制体系去解决了信用背书的问题。然而,借助这样的体系,我们真的能在交易层面完全达成共识吗?
设想一个场景,小明要给小刚100元,小明顺着网线“大吼一声”把这条消息传送给了所有人。但这时小红的网络出现了故障,她丢失了这条消息记录。小刚的账本上有这条信息,所以他认为能够使用这“100元”进行交易。但是他找小红的时候,小红账本上又没有这条记录,自然就不认可这“100元”的价值,也就无法达成交易的“共识”。
因此,为了能达成交易层面的“共识”,需要建立一套机制,保证每个人以相同顺序接收了相同的消息记录,这就叫作“共识机制”。比特币在建立之初设计的共识机制叫作工作量证明,此外还有权益证明、委托权益证明(Delegated Proof of Stake,简称DPoS)、实用拜占庭容错算法(Practical Byzantine Fault Tolerance,简称PBFT)、参与度证明(Proof of Participation,简称PoP)等其他形式的共识机制。下面是拜占庭圖片說明:
工作量证明(Proof of Work, PoW)
工作量证明的核心思想是,如果需要得到大家认可的“共识”,你需要付出足够的工作量。在互联网的世界,这种工作量就是计算。在这种情况下,计算所消耗的算力与时间资源就是大家信任的基础。
那么如何证明自己的计算量呢?这时就需要借用一个著名的加密工具——哈希函数(又称散列函数)。这类函数的性质非常奇特,你可以输入任一长度的字符进去,它会输出固定格式的一串字符串出来。有趣的是,虽然任意一种输入只会有一种输出,但是输出的排列看起来却是完全随机的,针对输入做任何微小的调整,都可能引发输出巨大的变化。
比如,如果你输入“小明给了小刚100元”,结果是256个0,但是如果你输入“小明给了小刚101元”或者“小明给小刚101元”(去掉一个“了”字),其中几十、上百个随机的数位都可能会发生变化。这就意味着,这个函数类似于前面提到的签名函数,想要通过输出逆向推断出输入,在计算上几乎是不可能的,能够破解的唯一办法就是一个个枚举尝试。以哈希函数“SHA256”为例,对于任何输入,它都会输出一个256位的二进制数列,也就是需要尝试2的256方次才能枚举完,前文已经提到过这是怎样一个天文数字了。因为这一独特性质,哈希函数也被广泛地应用在密码学领域,大家平时注册网站填写的密码、银行存款的密码,可能都是通过这类函数加密的。
有了这样一种函数,就可以建立一种“工作量证明”的机制,所有人可以给想要证明自己工作量的那个人出一道题。例如,指定一串20位二进制的0-1字符串,让答题者去找到一个输入值,使得256位的输出值中有20位和指定字符串一模一样。对于想证明自己工作量的人,只能一个个尝试,大概枚举220次(大约100万次)之后,他才能算出结果。而检验结果的方式对于出题人来说非常简单,并不需要枚举这样的重复工作,只需要把答案输入哈希函数里,看一看前20位是不是和出的题一模一样就行,这样就能证明答题者大约付出了“220”这个量级的工作量。
示例
工作量证明的一个经典例子是比特币网络的挖矿过程。以下是一个简化的步骤说明:
交易发生:当有人在比特币网络上进行一笔交易,例如Alice想向Bob转账1个比特币。
交易广播:这个交易信息被加密并广播到整个比特币网络中的所有节点。
交易确认:网络中的矿工接收到这个交易信息后,会将其与其他等待确认的交易一起打包进一个新的区块。
计算工作量:每个矿工开始尝试找到一个特定的数字nonce,通过将这个nonce与新区块的其他信息(包括前一个区块的哈希、新的交易列表等)进行组合,并通过SHA-256哈希函数进行运算。
满足难度目标:比特币网络会动态调整挖矿的难度,使得矿工平均需要经过一定数量的哈希运算(通常是数百万次或数十亿次)才能找到一个满足条件的nonce。这个条件通常是要求哈希结果的前几位为零。
发现 nonce:当一个矿工通过大量的计算尝试找到了一个满足条件的nonce时,他们就完成了工作量证明。
新区块生成:矿工将包含正确nonce的新区块广播到整个网络中。
验证和确认:其他节点收到新区块后,会独立验证其中的所有交易以及nonce是否真的满足工作量证明的要求。如果验证通过,他们就会接受这个新区块,并将其添加到自己的区块链副本中。
奖励和费用:成功生成新区块的矿工将获得一定的比特币作为奖励(目前是6.25 BTC),同时也可以收取该区块中所有交易的手续费。
通过这个过程,工作量证明确保了只有付出实际计算资源的矿工才能创建新的区块,并且由于篡改历史区块需要重新完成之前所有的工作量证明,这使得比特币网络具有很高的安全性。然而,这也导致了大量的能源消耗,因为矿工需要不断运行高性能的计算机来竞争解决这些复杂的数学问题。
2024-2025年註定是區塊鏈不平凡之年
💸如果你对交易技术感兴趣,并且也想和我一样能拥有一套自己的交易系统,不管是交易长周期,还是短周期,都能够游刃有余!来 我 社 群一起交流,让我们一起拥有更多的比特币💸
💕 记得关注哈💕你的关注让我有更多的动力分享干货给大家!我会随时分享财富密码💸记得查看喔💰#热门话题 #Web3Wallet #Web3Pay $BTC