主页 > imtoken钱包有几个版本 > 比特币? 只需阅读这篇文章! (中):算法是魔法

比特币? 只需阅读这篇文章! (中):算法是魔法

imtoken钱包有几个版本 2023-09-02 05:07:10

本文将介绍比特币涉及的算法。 由于这篇文章能量比较高,白皮哥先宣布下一篇文章会给大家带来低能量的彩蛋:《币圈小白?快来看币圈速问速答!》。

白皮哥知道大部分朋友看到“算法”就已经晕了,所以只问了两个问题:

在钱包里:

不要把私钥告诉别人,因为私钥=货币!

挖矿的过程类似于做因式分解题,例如:56 = 2 * 2 * 2 * 7。它的特点是只能在一个剧烈的循环中寻找答案(效率低),但是一旦找到答案,反查很方便(2 * 2 * 2 * 7 = 56)。

好了打酱油的各位可以下台了,以下内容供大家参考

你的。

或者这张图:

这个过程叫做非对称加密,并不是区块链独有的。 它在很多场合都有应用(比如浏览器地址栏中的https协议)。 具体来说,下图中出现的椭圆曲线算法和哈希函数主要应用在区块链技术中。

椭圆曲线算法

比特币算法优化_比特币算法_比特币地址算法

椭圆曲线算法有什么用? 它可以使每笔交易都非常容易验证真实性。

例如:

1.某人是矿工。 他挖出了1个比特币(上一期提到的coinbase交易)。 这时有一个事务0,它为某人生成了一个锁定脚本。 只有这个锁定脚本被解锁。 这个比特币是可以花的。

2、这时候有人想把这个比特币转给addr,于是他新建了一个交易1,这个交易需要有一个地址可以进行充值和提现,同时生成一个addr锁脚本,类似于前一个。 但是最重​​要的是要有0号交易的解锁脚本,因为这个比特币是从0号交易衍生出来的,有人用自己的私钥生成公钥和签名,然后生成0号交易的解锁脚本,就是放入事务 1。有人将事务 1 广播到整个网络。

3.任何接收到的矿工节点都会先检查解锁脚本,需要验证三件事:

交易1的传出公钥与解锁脚本公钥相同;

数字签名特定于交易;

数字签名由交易 1 的传出公钥对应的私钥进行签名。

比特币算法优化_比特币算法_比特币地址算法

如果全部通过,矿工节点将开始挖矿。 最快的矿工会将交易写入区块链,addr的钱包应用会发现1个比特币已经存入他的地址。 addr支付0.005个比特币到cafe买咖啡的过程类似。

可以注意到,由于采用了椭圆曲线算法,网络上只传输签名和公钥,私钥受到严格保护,但任何接收方都可以快速验证交易来源是否正确以及交易是否正确。有足够的硬币。

哈希函数

哈希函数的应用更为广泛。 它是一种将任意长度的数据转换为字符串的算法。 只要输入不同,输出就一定不同。 这是一个数字指纹。 当你下载电影时,电脑需要判断下载的文件是否完整,你可以使用哈希函数来检查你机器中电影的哈希值是否与完整版相同。

在区块链中,用于计算比特币地址的公钥(SHA256和RIPEMD160双重哈希)和挖矿计算。 钱包在前面的例子中已经讲清楚了,我们用挖矿过程来描述一下神奇的哈希函数(SHA256)。

如前所述,在挖矿过程中,矿工收到一笔交易后,首先验证交易是否有效,如果有效则开始挖矿计算。 那么挖矿过程是怎样的呢? 首先,矿工会将这笔有效的交易打包成一个区块。 矿工的目标是使用哈希函数计算打包区块,使得输出的哈希值小于某个值目标:

SHA256(块)

你可能会问,函数本身(SHA256,哈希函数的一种)和区块(block)都是确定性的,如果计算大于目标怎么办? 这里说的是,区块中除了数千个打包的交易外,还有一个随机值nonce。 计算机可以不断地尝试不同的nonce值来获得不同的hash,因为block中只有一点点数据需要修改(就像电影文件中丢了一帧),hash值变化很大,例如:

比特币算法_比特币算法优化_比特币地址算法

我是中本聪 0 =>a8​​0a81401765c8eddee25df36728d732...

我是中本聪 1 =>f7bc9a6304a4647bb41241a677b5345f...

我是中本聪2 =>ea758a8134b115298a1583ffb80ae629...

我是中本聪3 =>bfa9779618ff072c903d773de30c99bd...

...

如果我需要hash值的前6位,那么矿工的电脑会一直循环寻找这个随机值,最后:

我是中本聪 1759164 =>...

然后宣布挖矿成功。

比特币算法优化_比特币算法_比特币地址算法

因为比特币的设计是10分钟左右挖出一个区块比特币算法优化,但是全球的算力都在变化,所以比特币网络每隔一段时间就会通过修改0前面的数字来调整难度。 越多,越难。

虽然算法的概念比较难懂(这里还是省略数学原理),但是当你理解它的时候,你会惊叹于它的巧妙和美妙。 正是椭圆曲线、哈希算法等区块链中的算法共同铸就了区块链精巧的信任魔力。

如果你不是开发者,下次再见。

下面是补充问题! 下面介绍一下区块链涉及的其他一些算法相关的问题:

1、公私地址及地址格式:

公钥:公钥是私钥通过椭圆曲线相乘得到的,所以它实际上是曲线上xy坐标的一个点。 所以有两种格式:一种是04开头,然后直接拼接坐标04xy,称为无压缩格式(130位); 另一种是因为y可以从x推断出来,所以只有x和y的正负是保留的数字信息,称为压缩格式(66位)。

私钥:私钥是随机生成的,有二进制、十六进制格式,但太长无法直接显示。 为了减少长度,使用Base58Check算法(即去掉0、O、l、I和10数字的大小写字母)进行压缩,压缩后得到WIF格式。 未压缩公钥对应的直接称为WIF格式,压缩格式公钥对应的称为压缩格式私钥(其实WIF私钥是压缩过的,这里的压缩指的是其压缩格式)与压缩公钥的对应关系)。

地址:Base58Check(RIPEMD160(SHA256(公钥))) = 地址

比特币算法_比特币算法优化_比特币地址算法

即先通过SHA256哈希计算,得到结果,再输入RIPEMD160哈希得到一个20位的哈希值,再用Base58Check编码得到比特币地址。

注意这里的Base58Check算法不是单向的,而是双向解码的,类似于Base64编码,就是很多小图片会被编码成一串串的字符串保存在网页中,然后交给浏览器解码图片并将其显示给用户。

2.默克尔树

前面的椭圆曲线例子提到addr钱包发现区块链上有一笔交易(交易1)进入了自己的地址。 它是怎么做到的? addr 首先告诉比特币网络它只对来自其地址的交易感兴趣,这称为布隆过滤器。 一旦有符合条件的交易,其他节点会将交易信息推送到addr(merkleblock message)。 但是addr是一个SPV钱包(见前文),它没有完整的区块链,如何验证呢? 它需要验证交易 1 在某个区块中比特币算法优化,并且这个区块在区块链上。

区块在区块链上很容易追溯,只要merkleblock消息中有上一个区块的信息,addr就可以一路追溯,证明该区块确实在链上。 但是,每个区块中有数千笔交易。 如果整个块太大,则需要遍历。 这里SPV钱包使用的是默克尔树算法。

Merkle 树是哈希二叉树:

它不断对区块中每笔交易的哈希值两两进行哈希运算,最终得到一个Merkle根,存储在区块中。 证明一个交易(比如HK)在这个区块中,只需要它经过的路径的哈希值(图中蓝色底框),通过逐层哈希计算,如果最终的根可以是与 Merkle 根对相比,交易在区块中。 因此,merkleblock消息中只需要Merkle root和Merkle path,SPV钱包可以检查输入的交易是否在某个区块中,然后通过回溯验证该区块是否在区块链上,进而确认entry 交易上链,使得来自网络的 SPV 钱包请求消息的大小从 1M 减少到 1K。

下一篇白皮哥将为大家带来:币圈小白? 快来看币圈快问快答!

欢迎在本文评论区留言发表你的看法。 转发本文给志同道合的朋友,一起学习交流,共同成长。

如果您想投资数字货币,请在公众号下方的菜单中点击交易平台,选择平台并进入。

或直接在后台发送“投资”,您将收到投资条目。