主页 > 安卓版imtoken > 比特币原理是什么——比特币原理详解

比特币原理是什么——比特币原理详解

安卓版imtoken 2023-04-16 07:28:32

本文主要介绍比特币的原理是什么? 比特币原理详解。 比特币是一种基于密码学的电子货币。 比特币可以防止主权危机和信用风险。 本文主要从更深层次的技术原理的角度进行介绍。 下面一起参考一下吧!

比特币的原理是什么? 1. 什么是比特币

比特币是一种电子货币,是一种基于密码学的货币。 2008年11月1日,中本聪发表比特币白皮书,提出去中心化的电子记账系统。 我们平时的电子现金都是由银行保管的,因为银行的背后是国家信用。 去中心化的电子记账系统是参与者的共同记账。 比特币可以防止主权危机和信用风险。 我不会详细介绍它的好处。 这个级别介绍的文章很多。 本文主要从更深层次的技术原理角度进行介绍。

2.问题介绍

假设有4个人分别叫ABCD,他们之间发起了3笔交易,A转10个比特币给B比特币扩展公钥,B转5个比特币给C,C转2个比特币给D。如果是传统的记账方式,这些交易将被记录在银行的系统中,信息将由银行记录。 我们相信银行不会随意增加、删除或修改一条交易记录,我们也不会去关注是哪笔交易。 我们只关心自己的账户余额。 比特币的记账方式在ABCD中为每个人保存了这样一个账本,账本中记录了上述交易内容。 如果大家的账本实时一致,ABCD就不再需要银行了。

比特币就是这样做的。 每当有人发起一笔交易时,他就会向全网广播一笔交易,全网有人将这笔交易打包一段时间,记录在一个区块中。 ,然后将这些区块一个一个连接在一起,形成一条链,这就是所谓的区块链。

比特币扩展公钥_比特币李笑比特币身价_比特币私钥推算公钥

那么问题来了

1、我为什么要参与这个系统,为什么要用自己的电脑资源来存储这些信息?

2.谁的记录为准? 比如上面的账单订单中,用户A可能在这个订单中,但用户B可能在不同的订单中,甚至B可能根本没有收到C给D转账的消息。

3、如果比特币实现了支付功能,保证谁的钱是谁的,只有它的主人才能花。

4、如何防伪、防篡改和双重支付。 防伪就是验证每笔交易是否真的有人发送。 比如B可能会编造一个消息说有人转了一笔钱给我。 这是假新闻。 或者B说我给别人转了多少钱,其实他没有那么多钱,怎么办。 防篡改是指B可能想从区块链上删除他转账给某人的记录,这样他的余额就会增加。 双重支付是指B只有10个比特币,他同时给C和D转了10个比特币,造成双花。

3、为什么要记账?

因为记账有奖励,记账有手续费收入,打包区块的人有系统奖励。 奖励计划是每十分钟产生一个区块,每产生一个区块奖励一定数量的比特币。 一开始是50个BTC,4年后奖励25个BTC,4年后减半,以此类推。 这样比特币的产生量就会越来越少,越来越接近一个最大值。 计算公式为:50×6×24×365×4×(1+1/2+1/4+1/8+ …) ≈ 2100万,其中初始奖励50个比特币,每小时出块6个,一天 24 小时,一年 365 天,前四年,然后每四年减半。

此外,记账奖励还有每笔交易的小额手续费,每笔交易发起都会附带一定的手续费,这些手续费是给记账矿工的。

4.谁占上风?

每个节点通过工作量证明机制来竞争记账权。 他们计算出一个非常复杂的数学问题,第一个计算出的节点就是下一个区块的生产者。 这道数学题太难了,没有人能用同一个大脑算出来。 这是一种基于概率的方法。 矿工必须通过遍历、猜测和尝试来解决这个未知数。 那么这个数学难题到底是什么? 详情如下。

4.1 哈希函数

哈希函数也称为数字摘要或散列函数。 它的特点是输入一个字符串,生成另一个字符串,但是如果输入不同,输出的字符串一定不同,输出的字符串不能与输入相反。 举个简单的例子,对于1-100内的一个数取模10,可以认为是哈希方法,比如98=8,66=6,98和66是输入,取模10是哈希函数,8和6是输出。 在这个模型中,不可能通过6和8推断出输入是66和98,因为有可能是56和88等等。当然,因为这个例子比较简单,所以会出现哈希冲突,即,66和56的结果都是6,输出是一样的。 一个优秀的哈希函数可以实现不同的输出,哈希碰撞的概率几乎为零。 常见的哈希函数有很多,比如MD系列和SHA系列等。比特币采用的SHA256算法是输入一个字符串,输出一个256位的二进制数。 下面是运行程序的结果。

比特币私钥推算公钥_比特币扩展公钥_比特币李笑比特币身价

比特币私钥推算公钥_比特币李笑比特币身价_比特币扩展公钥

比特币扩展公钥_比特币李笑比特币身价_比特币私钥推算公钥

从程序结果可以看出,输入的源信息不同,得到的结果也不同(为了方便,结果用64位十六进制表示),即使orange多了一个句点,也会产生完全不同的结果。 同时,通过输出的十六进制字符串,输入不能取反。 对于比特币,你只需要了解 SHA256 的功能即可。 有兴趣的可以详细了解一下SHA256的具体算法。 需要SHA256的C++源码留言或私信。

4.2 挖矿原理

首先介绍一下比特币每个区块的数据结构。 每个区块由两部分组成:区块头和区块体。

区块体包含了矿工收集的一些交易信息。 图中假设区块中包含8笔交易,所有交易生成一棵Merkle树。 Merkle树是一种数据结构,将叶子节点成对哈希生成上层节点,上层节点再次哈希生成上层,直到最后生成一个树根,称为Merkle树根。 区块头中只保留树根,这样可以节省区块头的空间,方便交易的验证。

区块头包含父区块的哈希值、版本号、当前时间戳、难度值、随机数和上面提到的 Merkle 根。

比特币私钥推算公钥_比特币扩展公钥_比特币李笑比特币身价

假设区块链已经链接到某个区块,有4个ABCD节点在前十分钟收集了全网的一些交易信息,他们从中挑选了大约4k笔交易,打包,生成Merkle树根. 区块头中的信息,即发布的区块hash+版本号+时间戳+难度值+随机数+Merkle树根组成一个字符串str,通过两个hash函数得到一个256的二进制数,即即,SHA256(SHA256(str)) = 10010011...一共256位,比特币要求生成结果的前n位必须为0,n为难度值。 如果现在生成的二进制数不符合要求,则必须改变随机数的值重新计算,直到计算出满足条件的结果。 假设现在n是5,生成的二进制数一定是00000……(一共256位)。 一旦挖矿成功,矿工可以向全网广播消息,其他矿工将根据区块继续挖矿。 下一个块头中的父块哈希值是 00000... 这个数字是由前一个块生成的。

解决这道数学题要靠运气。 理论上,最幸运的矿工可能一次哈希就能算出结果,而倒霉的矿工可能永远算不出结果。 但总的来说,如果矿工的算力越大,单位时间内执行的哈希数就越多,挖矿在短时间内成功的可能性就越大。

那么n是怎么确定的呢? 比特币设计者希望平均每十分钟产生一个区块。 总体来说,挖矿成功的概率是1/2^n。 现在假设全世界有1W台矿机,每台矿机的算力为14T次/s = 1.4×10^13次/s,单位时间/s称为算力,10分钟为600s , 所以 10 一分钟可以做 8×10^19 次哈希运算。 从概率的角度来看,需要进行2^n次操作才能挖矿成功。 可以列出方程2^n = 8×10^19,可以解出n 66左右。所以对于这种方法,我们没有办法让自己的运气好一点,只能提高自己的计算能力,计算出结果为尽快。

另外,需要模拟挖矿过程的C++代码可以回复邮件。 代码可以模拟比特币的挖矿算法,通过调整难度值来控制出块速度。

5、如何防止假冒、防篡改、重复支付等问题

这部分是理解比特币非常重要的一部分。

5.1 电子签名技术

身份认证技术在生活中很常见,可以是人脸识别、签名、指纹等,但这些方式在数字货币领域并不安全,因为一旦被数字化,就可以通过复制来伪造。 所以比特币采用电子签名的方式。

注册比特币用户时,系统会根据随机数生成私钥,私钥生成公钥,公钥生成地址。 私钥必须保密,可以保存到硬盘或记住。 因为这个私钥是对应地址上比特币的唯一标识,一旦丢失,所有比特币都将无法使用。 下面介绍具体的转换过程。 如果您不感兴趣,可以忽略它。 知道随机数->私钥->公钥->钱包地址的过程即可。 私钥可以加密一串字符,公钥可以加密。 解密,这就是非对称加密。 这些算法的总体功能是相同的,只是具体的算法不同。 因为这些算法比较复杂,所以和SHA265算法一样就不多介绍了。 有兴趣的可以详细了解具体的算法,但是对于比特币系统,了解其功能即可。 典型的算法是RSA,比特币使用的是椭圆曲线加密算法。

转换过程(选读,不影响理解)

1、首先使用随机数生成器生成一个私钥,私钥是一个256位的二进制数。 私钥不能泄露,相当于银行卡的密码。

2、私钥通过SECP256K1算法生成公钥。 SECP256K1是一种椭圆曲线加密算法,其功能与RSA算法类似。 公钥是通过已知的私钥生成的,但是不能从公钥推导出私钥。

3. 和SHA256算法一样,RIPEMD160也是一种HASH算法。 从公钥可以得到公钥的哈希值比特币扩展公钥,但是不能从哈希值推导出公钥。

4、在公钥散列的头部接一个字节的版本号,然后对其进行两次SHA256运算,将结果的前4个字节作为公钥散列的校验值,接在结束。

5. 将上一步的结果用BASE58编码得到钱包地址(相当于银行账户)。 例如 A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

比特币李笑比特币身价_比特币私钥推算公钥_比特币扩展公钥

因此,通过以上过程,我们可以总结出私钥、公钥、钱包之间的关系如下图所示。 可以看出,所有的值都可以通过私钥推导出来,公钥哈希和钱包地址可以通过BASE58和BASE58解码算法相互转换。

比特币李笑比特币身价_比特币私钥推算公钥_比特币扩展公钥

了解了公钥、私钥、地址的概念后,防伪验证的过程就很容易理解了。 A发起交易时,对消息进行哈希处理生成数字摘要,用私钥对数字摘要进行加密,生成密码。 然后A将交易消息、公钥和密码广播出去。 接收消息的人先对交易信息进行哈希处理生成摘要1,再用公钥解密密码生成摘要2。这样,如果两个摘要相同,则说明消息确实发送了通过A。所谓签名就是密文。

比特币扩展公钥_比特币私钥推算公钥_比特币李笑比特币身价

5.2 余额查询

平衡的观念应该说是深入人心。 余额是通过所谓的借记和贷记簿记方法生成的。 也是目前银行常用的一种方式。 统计一个人的交易记录来算一个余额,但是比特币是没有余额的。 这个概念,因为它使用了UXTO模型的核算方法。 比如A->B10个比特币,B->C5个比特币,对于第二笔交易,B在发起本次交易时必须注明第一笔交易的信息,这样就可以知道B从A转过10个比特币已经那里收到,说明满足发起第二笔交易的条件。 因此,比特币余额的检查是通过追溯方法进行的。

比特币扩展公钥_比特币私钥推算公钥_比特币李笑比特币身价

上图描述了两个事务。 在交易10001中,B转了10个比特币给C,验证这笔交易的过程是:先用B的公钥解密B的签名,然后与交易的具体内容(B签名的左边)进行比较比较,如果相同,则说明该消息是B发送的,然后检查10000笔交易是否真实存在,以及其内容的真实性。 如果满足这两点,则表示交易10001可以接受,否则拒绝。

其实真正的交易比这更复杂,因为有可能是多笔交易构成输入,比如B->C20个比特币,是由多笔交易A->B10,D->B10组成的,那么前面的事务 ID 是两个 ID,甚至更多。 为了描述简单,这里只列出一笔交易。

5.3 双重支付

A同时发送了两条消息,同时给B和C转了10个比特币,但是​​如果他只有10个比特币怎么办? 假设节点D先收到了转给B的10个BTC,然后又收到了转给C的10个比特币,通过上面的验证方式,自然会拒绝后一个。 同时,节点E可能先收到转给C的10个BTC,再收到转给B的10个比特币,他自然会拒绝后者。 至于哪笔交易最终会上传到链上,就看D和E中哪一个先解决问题并挖矿成功了。

5.4 防止篡改

假设A给B转了10个比特币,但是​​他想把这个信息从区块链上删除,这样大家就不知道这件事的存在,就可以在账上食言了。 先说最长链的原理。 假设两个矿工在某个区块后面同时挖矿,或者因为网络延迟等原因存在差异。 这个时候每个节点先根据自己认为正确的区块随机挖矿,直到下一个区块产生,这时候就会有两条链,但是一条很长。 比特币规定以最长链为准。 如果某个节点仍然坚持较短的链,他是在对抗大多数算力。 这样一来,他挖出的区块并不被大家认可,会浪费时间和算力。

比特币私钥推算公钥_比特币李笑比特币身价_比特币扩展公钥

回到上面的场景,如果A要反悔,只能从记录A->B10个比特币消息的区块的前一个区块重新开始挖矿,创建一条支链,但实际区块区块进步了很多,他只能不断追赶,追赶的同时,主链也在往前走,他必须比主链往前走得更快,如果他的算力足够大,理论上需要一个更长的时间确实可以赶上成功,实现了交易信息的篡改。 然而,事实上,这几乎是不可能的,因为无论多么强大的算力,平均出块速度都是10分钟。 从非技术的角度来看,如果一个人拥有全网一半以上的算力,为什么他不在主链上呢? 继续挖矿怎么样? 这么有钱的人,应该不会甘心做小偷吧。

比特币李笑比特币身价_比特币私钥推算公钥_比特币扩展公钥

6.总结

区块链与比特币不一样,比特币也不是区块链。 区块链只是比特币应用的一项技术。 这项技术可以启发我们。 比特币的伟大之处在于应用了前所未有的区块链技术。 区块链技术在哪些方面可以应用还有待探索。

比特币是区块链技术最成功的应用,但比特币本身也存在很多问题。 它想通过发行货币来挑战主权货币。 这种动机值得商榷。 此外,由于比特币的匿名性,只能使用一个公钥或地址进行交易,这为黑市提供了良好的平台。 此外,比特币并不是一个成熟的支付系统,存在吞吐率低、可扩展性差等缺点。