您现在的位置是:首页 >其他 >比特币技术原理网站首页其他

比特币技术原理

yhryhryhr- 2023-06-17 16:00:02
简介比特币技术原理

目录

比特币的兴起

1.以物易物

2.实物货币

3.符号货币

4.中央系统虚拟货币

5.分布式虚拟货币

比特币原理

三大核心问题

问题1——记账必要性

问题2——以谁为准

问题3——如何防伪

RSA算法

数字签名

比特币的优缺点

优点:

缺点

参考链接

PPT:

比特币技术介绍PPT(xinanzhijia.xyz.)

比特币的兴起

比特币的兴起源于2008.11.01一篇极客的论文,至今作者没有公布身份。论文中提出了一种去中心化货币的概念——Bitcoin。

这个想法在当时金融危机的背景下堪称疯狂,然而在无数爱好者和有识之士的支持下如今成为了现实。不光比特币的交易呈现爆炸式增长,也激发了几千种虚拟货币的诞生:

那么我们为什么要进行去中心化呢?这不得不从头开始讲起。

1.以物易物

很久很久以前的农村,人们过着以物易物的生活。

2.实物货币

由于这样存在价值彼此不认可的问题,我们统一规定物价,使用一些稀有且容易分割的东西作为货币进行交易,例如黄金或者贝壳等。

3.符号货币

目前也还有一个问题,货币本身携带不便,还有磨损等诸多问题,并且采集货币,如炼金、收集贝壳等等耗费了许多财力物力。这时有人提出了解决办法,我们未必要拿着真的黄金交易,可以找可靠机关(例如村委会)发行一些带有”一克黄金”的纸币,纸币上带有专门的防伪标志,大家用纸币交易。

4.中央系统虚拟货币

刚刚的问题显然治标不治本,贪婪的人类感觉携带纸币交易也是太麻烦了,因此又有人提出了改进办法。我们未必要真的带着货币交易。比如目前找可靠机关,统计所有村民的余额,以后交易直接跟这个可靠机关报备即可。这个可靠机关负责记录每一笔交易,计算所有人余额,大家都信任这个“可靠机关”。

5.分布式虚拟货币

然而好景不长,大家都信任的这个“可靠机关”出现了贪腐问题,导致整个中央系统虚拟货币系统轰然倒塌,然而人们已经完全习惯了不带现金交易的生活模式,这该怎么办呢……

这时,极客中本聪华丽登场。

比特币原理

我们模拟一次交易,可以抽象成如下账本的形式:

付款方付款金额收款方……(验证字段)
Alice10BTCBob
Bob5BTCCici
Cici2BTCDavid

每个人都要进行记账,我们使用区块存储交易记录。每个区块大小为1M,能存储约4000条交易记录。把这个区块连接到前面的区块,就形成了区块链。

  • Pre Hash:前一个区块的哈希值。

  • Nonce:使得区块的哈希值满足要求的数值,即挖矿计算的结果。

  • Transaction Data:区块中的交易数据。

三大核心问题

  • 为什么要记账?

  • 以谁为准?(网络延迟)

  • 如何防伪?

问题1——记账必要性

为什么要记账呢?因为记账有奖励。所有的比特币最终来源都是记账,即挖矿。并且记录交易还有一定量的手续费(远小于目前银行手续费)。比特币交易系统期望每10min要打包一个交易块,在2008年创世纪块出现后,每打包一个块可以获得50个比特币,后每4年减半。这样算下来:

50 	imes 6 	imes 24 	imes 365 	imes 4 	imes(1+frac{1}{2}+...+frac{1}{2^n}) approx 2100w

比特币最终会发行2100万枚。

问题2——以谁为准

想解释清楚这个问题,不得不了解挖矿的原理。首先介绍一个这样的函数:sha256()使用链接

Hash函数

sha256()是一种哈希算法,他可以将任何字符串转化为256bit的哈希值,算法有如下关键特点:

1.不可逆性

哈希函数具有不可逆性,具体的不可逆性可以类比成:

y=x^8+log_6x+sin(x)+cot(x)

给出一个x,可以轻松算出y;但给出y反算x,这将是灾难。

2.小变化大改变

import hashlib
​
message = "Hello, world!" # 待计算哈希值的消息
message2 = "Hello, w0rld!"
hash_object = hashlib.sha256(message.encode('utf-8'))
# 获取哈希值(以16进制表示)
hex_dig = hash_object.hexdigest()
​
print(hex_dig)  # b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
print(hex_dig2) # 3FBE0E7AA29A4A4071A2DD78E2A02AD6209D23CEC2F861BE75D24B72462D911B

可以看出,略微的输入变化,哈希值就会出现巨大变化。

3.抗碰撞性

在哈希函数设计合理的情况下,两个不同值计算后产生同样哈希值的概率,微乎其微。

挖矿过程

矿工首先获得交易记录,记录达到一定数量后开始计算一个字符串。这个字符串由:区块头+账单+开始时间+随机数组成。

接着,计算Hash=sha256(sha256(字符串)),然而,计算出的结果Hash必须前n位都为0才算成功。

由于字符串的前三部分都不能随意变化,并且哈希函数不能反算,所以我们只能反复试验随机数,直到算出满足前n位都为0的字符串,这时我们就算挖矿成功。由于哈希值受到前面三项的影响,所以挖矿一定程度上跟运气有关,但更重要的是依靠算力找到对应的随机数。

同样我们不难看出,n的取值越大,挖矿就越难。为了保证矿工们能够10分钟打包一个块,但打包过程又不那么轻松,目前设定n=66

总的比特币挖矿流程图如下:

综上我们可以得出,所有的交易以矿工打包后的区块为准。

问题3——如何防伪

防伪基于非对称加密的数字签名。最常见的非对称加密即为RSA算法。

RSA算法

 算法的加密解密过程如下:

  1. 选择一对不相等的大质数,记作p、q

  2. 计算N = p 	imes q

  3. 计算phi(N) = (p-1)	imes(q-1)

  4. 选择一个与phi(N)互质的整数e

  5. 计算出e对于φ(N)的模反元素d

  6. 公钥 KU = (e,N) ,私钥KR = (d,N) 注意这括号不是最大公约数,而是表达形式。

例题如下:

  1. 取p=3、q=11;

  2. N=p 	imes q = 33

  3. phi(N) = (p-1)(q-1) = 20

  4. 选择一个与phi(N)互素的数,我们选择e=3

  5. 找到一个d使得ed equiv 1 mod phi(N),解得d equiv 7 mod 20

  6. 公钥KU = (e,n) = (3,33) ,私钥KR = (d,n) = (7,33)

假如明文M=20,加密即为20^3 mod 33 = 14,解密即为 14^7 mod 33 = 20

数字签名

比特币交易过程中数字签名的操作流程如下:

首先A注册比特币账号,获得自己的公私钥对。A将自己的交易信息进行哈希运算获得摘要,用自己的密钥加密摘要获得一份密文。

之后A向互联网广播一组信息,请求大家认证这份消息:交易信息+自己的公钥+加密的密文。

其他用户首先将交易信息进行Hash运算获得摘要1,接着用A的公钥解密密文,获得解密的明文摘要2。如果摘要1和摘要2相同,则交易属实。因为如果想伪造一条广播信息,我们无法制造一份密文,使得他解密的结果是伪造的交易信息,因为哈希函数是无法反算的;同样的道理,这份信息也只能是A发出的,因为只有A有自己的私钥能够制造出这份密文。

比特币的优缺点

优点:

  1. 去中心化:比特币不受任何中央机构或政府监管,由网络中的节点来维护和验证交易。

  2. 保护隐私:比特币使用公开密钥加密技术,可以保护用户的信息和隐私。

  3. 可追溯性:所有比特币交易都被记录在区块链上,可以追踪其交易历史。

  4. 通货膨胀率低:比特币的总量被限定在2100万个左右,因此通货膨胀率很低,具有一定的保值功能。

缺点

  1. 安全性问题:比特币被盗、遗失或黑客攻击的风险仍然存在,需要用户自己保管好比特币私钥。

  2. 交易速度有限:比特币交易需要被打包进块,并等待6个块后才能确保交易成功。每10分钟打包4000条交易记录,每秒钟只能完成约7次交易。目前为了解决这个问题,比特币推出一个新协议,希望将区块从1M变为8M,目前协议还在推动中。

参考链接

CodingLabs - 一个故事告诉你比特币的原理及运作机制

https://coinmarketcap.com/zh/rankings/exchanges/

https://assets.pubpub.org/d8wct41f/31611263538139.pdf

<iframe src="//player.bilibili.com/player.html?aid=45247943&bvid=BV1Bb411B7dq&cid=79224469&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe src="//player.bilibili.com/player.html?aid=45597148&bvid=BV12b411q7ku&cid=79839195&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/bBC-nXj3Ng4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/BODyqM-V71E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。