主页 > imtoken钱包app下载链接 > 为什么比特币是防篡改的?

为什么比特币是防篡改的?

imtoken钱包app下载链接 2023-03-30 07:46:26

比特币(Bitcoin)是一种加密货币,是一种分布式数字资产。 自中本聪发布 Bitcoin1 以来已有 10 多年了。 部分读者可能接触过区块链技术,甚至投资过数字资产。 货币资产。 如今,区块链总市值已达2700亿美元比特币不可伪造是依靠什么来实现的,比特币市值也已达1700亿美元2。 然而,比特币使用的底层技术其实非常简单。 它只是巧妙地结合了这些技术。

比特币李笑来_比特币不可伪造是依靠什么来实现的_比特币是金莱特币是银

图 1 - 比特币

如果我们对比特币等区块链技术稍有了解,就会发现它是一个设计巧妙的分布式数据库。 比特币等区块链网络作为运行在公网上的分布式数据库,会面临网络中恶意节点的攻击。 因为比特币需要面对复杂的网络环境和不可靠的节点,所以在设计和实现上也做出了应对。 我们可以看到它是如何结合现有技术来防止恶意节点访问交易和账户数据的。 篡改。

比特币网络主要使用以下两种技术来保证用户发出的交易和历史上已经发生的交易不会被攻击者篡改:

非对称加密

非对称加密算法3是目前广泛使用的加密技术,TLS证书、电子签名等场景使用非对称加密算法来保证安全。 非对称加密算法同时包含公钥(Public Key)和私钥(Secret Key)。 用私钥加密的数据只能用公钥解密,用公钥解密的数据只能用私钥解密。

比特币不可伪造是依靠什么来实现的_比特币是金莱特币是银_比特币李笑来

图 2 - 非对称加密特性

比特币使用非对称加密算法来保证每笔交易的安全。 网络中的每个账户(地址)都是一对密钥中的一个公钥。 帐户的所有者将持有私钥。 下面是一对刚刚生成的比特币地址和私钥4:

Address:     13RTT8MsbAj7o4zL7w4DNNuuwhgGgHqLnK
Private Key: 469d998dd4db3dfdd411fa56574e52b6be318f993ca696cc5c683c45e8e147eb

需要注意的是,使用网站生成比特币地址和私钥是极其危险的。 不知道网站会不会存储私钥,所以建议使用比特币客户端生成公私钥对。

任何人都可以通过上述地址13RTT8MsbAj7o4zL7w4DNNuuwhgGgHqLnK向该账户转账; 账户持有人也可以使用私钥签署交易以将资金转移到其他地址。 当我们要向比特币网络提交新的交易时,我们需要首先构建一个如下所示的交易结构:

比特币李笑来_比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的

{
   "txid":"5be7a9e47f56c98e5297a44df52da0475f448ece98bb51489103cdf70653092f",
   "hash":"5be7a9e47f56c98e5297a44df52da0475f448ece98bb51489103cdf70653092f",
   "version":1,
   "size":224,
   "vsize":224,
   "locktime":0,
   "vin": [...],
   "vout": [...],
   "hex":"0100000001a90b4101e6cbb75e1ff885b6358264627581e9f96db9ae609acec98d72422067000000006b483045022100c42c89eb2b10aeefe27caea63f562837b20290f0a095bda39bec37f2651af56b02204ee4260e81e31947d9297e7e9e027a231f5a7ae5e21015aabfdbdb9c6bbcc76e0121025e6e9ba5111117d49cfca477b9a0a5fba1dfcd18ef91724bc963f709c52128c4ffffffff02a037a0000000000017a91477df4f8c95e3d35a414d7946362460d3844c2c3187e6f6030b000000001976a914aba7915d5964406e8a02c3202f1f8a4a63e95c1388ac00000000",
   "blockhash":"0000000000000000000c23ca00756364067ce5e815deb5982969df476bfc0b5c",
   "confirmations":5,
   "time":1521981077,

比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的_比特币李笑来

"blocktime":1521981077 }

接下来,我们可以使用我们持有的私钥对整个交易中的所有字段进行签名,然后将签名与交易打包发送到网络中,等待比特币网络的确认。

在所有比特币地址中,35hK24tcLEWcgNA4JxpvbkNkoAcDGqQPsP地址目前持有超过25万枚比特币5,目前市值约为20亿美元。 在只知道地址的情况下,我们来计算一下需要多长时间才能得到该地址对应的私钥。 比特币的私钥一共有256位,也就是2256种可能:

115792089237316195423570985008687907853269984665640564039457584007913129639936115792089237316195423570985008687907853269984665640564039457584007913129639936

目前我们没有更快的破解方法,只能通过暴力破解来计算私钥。 假设我们使用IBM 2018年推出的超级计算机Summit6,每秒可以进行1.4*1017次浮点运算,假设计算机每秒可以计算出相同数量的公私钥对(computing public-private key pairs远比一个浮点数计算复杂),找到存放20亿美元资产的地址对应的私钥所需时间如下:

1.15*1077/365*86400*1.4*1017=2.9*1052年

我们整个宇宙的存在时间只有破解私钥时间的十亿分之一。 因此,在当前算力没有革命性突破的前提下,只需要通过暴力破解的方式获取公钥对应的私钥即可。 理论上可能,实际上完全不可能7。

共识算法

MySQL 等数据库以行为单位存储数据,而比特币这种分布式数据库存储的基本单位是块。 块通过哈希指针连接起来形成一棵树,如下图所示。 绿色的是图中最长的。 该链是网络的主链。

比特币不可伪造是依靠什么来实现的_比特币是金莱特币是银_比特币李笑来

图 3 - 区块链和主链

比特币不可伪造是依靠什么来实现的_比特币李笑来_比特币是金莱特币是银

如何让网络中的所有节点对下一个区块的内容达成共识,是比特币需要解决的关键问题。 只有节点对数据达成共识才能保证过去的交易不被篡改,但是作为运行在公网上的分布式数据库,面临非常复杂的场景,需要解决拜占庭将军下的分布式一致性问题问题。

拜占庭将军问题是 Leslie Lamport 在 The Byzantine Generals Problem 论文中提出的分布式领域的容错问题。 它是分布式领域中最复杂、最严格的容错模型8。 在这种模型下,系统不对集群中的节点做任何限制。 它们可以向其他节点发送随机数据、错误数据比特币不可伪造是依靠什么来实现的,或者选择不响应来自其他节点的请求。 这些不可预测的行为使得容错问题变得更加复杂。

拜占庭将军问题描述了如下场景。 有一群将军,分别指挥一部分军队。 每个将军都不知道其他将军是否可靠,或者其他将军传递的信息是否可靠,但他们需要选择是否投票。 攻击或撤退:

比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的_比特币李笑来

图 4 - 拜占庭将军问题

区块链技术使用共识算法和激励机制,让多个节点在拜占庭通用场景下实现分布式共识。 比特币使用以下规则来让多个节点实现分布式一致性:

引入工作量证明——让节点在提交新区块之前计算满足一定条件的哈希值,取代传统的分布式共识算法,一人一票(或一节点一票)的设置; 最长链的引入是主链的设置——只有主链上的交易才算合法交易; 引入激励——提交区块的节点可以获得比特币奖励;

通过以上规则,每个节点都会计算最长链上的哈希值,争取提交一个合法的区块。 但是,一旦节点中有人拥有超过51%的算力,就可以通过强大的算力改变区块链的历史。 因为区块是连续的,前一个区块的改变会使后一个区块计算出的哈希失效,如图4所示,如果攻击者需要改变主链倒数第三个黄色区块,则需要连续四个区块待构建完成对历史的篡改,其他节点将在这条较长的链上继续计算:

比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的_比特币李笑来

图 4 - 51% 攻击

使用如下所示的代码计算当攻击者无限期持有 51% 的算力时重写历史中 0 到 9 个区块的概率9:

#include 
#include 

比特币李笑来_比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的

double attackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum;

比特币李笑来_比特币是金莱特币是银_比特币不可伪造是依靠什么来实现的

} int main() { for (int i = 0; i < 10; i++) { printf("z=%d, p=%f\n", i, attackerSuccessProbability(0.51, i)); } return 0; }

通过以上计算,我们会发现在无限长的时间内,具有全网算力的节点发起51%攻击并修改历史的概率为100%; 但是在有限的时间内,由于比特币的算力是比较动态的,比特币网络的节点也在避免单个节点占据超过51%算力的情况,所以难度还是比较大的篡改比特币的历史,但在一些小众市场,算力得不到保障 在一些区块链网络中,51% 攻击仍然非常普遍10。

防止51%攻击的方法也很简单。 在大多数区块链网络中,刚加入区块链网络的交易都是未经确认的。 只要在这些区块后面添加了足够多的区块,区块中的交易就会被确认。 比特币的交易确认次数为6次,比特币平均每10分钟生成一个区块,所以一笔交易的确认时间约为60分钟,这也是为了保证安全不得不做出的牺牲。 但是这种增加确认次数的方式并不能保证100%的安全,我们只能在不影响用户体验的情况下,尽可能的增加攻击者的成本。

比特币是金莱特币是银_比特币李笑来_比特币不可伪造是依靠什么来实现的

总结

研究比特币等区块链技术还是很有意思的。 作为分布式数据库,也会遇到分布式系统经常遇到的问题,比如节点不可靠; 同时,作为金融系统和账本,也会面临更加复杂的交易确认和验证场景。 比特币网络的设计非常有趣。 它是科技与金融相结合的产物。 值得我们花时间研究它背后的原理。

比特币不能 100% 防止交易和数据被篡改。 本文提到的两种技术只能以一定的概率保证安全,降低攻击者成功的可能性是安全领域需要面对的永恒课题。 我们可以换一种更严谨的方式来解释今天的问题——比特币使用了哪些技术来增加攻击者的成本,降低交易被篡改的概率:

通过以上两种方式,比特币可以保证历史交易不被篡改,所有账户资金安全。 最后,让我们看看一些未解决的相关问题。 有兴趣的读者可以仔细思考以下问题: