主页 > 苹果手机imtoken怎么下载 > 比特币是如何产生的? (算法)

比特币是如何产生的? (算法)

苹果手机imtoken怎么下载 2023-01-17 04:04:13

一:块版版

二:上一个区块的哈希值:prev_hash

三:需要写入的交易记录的哈希树的值:merkle_root

四:更新时间:ntime

五:当前难度:nbits

挖矿的过程是找到 x 使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式中x的取值范围为0~2^32,TARGET可以根据当前难度计算。 除了x,你也可以尝试改变merkle_root和ntime。 由于hash的特性,要找到这样一个x只能通过brute force search来完成。

找到 x 后,您可以广播一个新块,其他客户端将验证您的块是否有效。 如果你的区块被接受了,由于每个区块的第一笔交易一定是将新生成的25个比特币发送到一个地址,当然你会把这个地址设置为你拥有的地址,从而得到这25个比特币。

---------------------------------------------- --------------

比特币从开始到现在的每一笔交易记录都存储在网络上,整个比特币网络维护着一个巨大的交易记录文件(现在大约12G)。 该文件的平均更新周期为 10 分钟。 新增加的交易记录称为一个区块,这个庞大的文件是由一系列的区块组成的,称为区块链。

为什么是 25 个比特币?

这是规则。 最初是50个比特币,每产生剩余比特币的一半,这个收益就会减半,这样最终能产生的比特币总量接近2100万。 如果你还声称自己挖了50个比特币,其他客户端是不会接受的,这个区块就白挖了。

如何保证平均更新周期为10分钟?

TARGET 越小,求解 x 就越困难。 每产生2016个区块(约14天),网络会根据这段时间产生新区块的平均间隔调整TARGET。

是不是总是计算速度最快的人先解决?

不。 你总是想把挖矿收益据为己有,所以大家在计算的时候,发送挖矿收益的地址是不一样的,所以merkle_root是不一样的,也就是说每个人都是从不同的初始状态开始求解的。

如何同时解决?

区块链会出现分叉,有的客户端接受A,有的客户端接受B比特币的地址是由什么算法生成的,直到某个分支变长,大家都会选择这个更长的分支。 如果你挖的不幸没有被选中,你的挖矿收益将无效。

既然选择了更长的分支,那么难度很低怎么办呢?

客户端在众多分支中找到满足当前难度的最长分支。

这些计算是不是浪费了?

如果你打算两次花同样的钱,你需要这样做。 一个新的块被挖掘,但隐藏而不是广播,并继续挖掘。 找到商家A,支付比特币,让网络上的其他人挖到区块,写下这条交易记录。 找到商家B,支付比特币,写入你挖到的区块。 如果你能先挖出两个区块,然后广播出去,大家就把你较长的分支作为当前区块链,商家A收到的比特币就不会被认可。 像这样成功攻击的概率取决于你计算哈希的速度。 如果整个网络的算力足够高,这样的攻击要么成功率极低比特币的地址是由什么算法生成的,要么成本极高。