时间:2021-11-20|浏览:478
1、block的版本version
2、上一个block的hash值: prev_hash
3.需要写入的交易记录hash树的值: merkle_root
4.更新时间: ntime
5.当前难度: nbits
挖掘的过程是找到x使得
SHA256(SHA256(version prev_hash merkle_root ntime nbits x )) TARGET
上式的x的范围是0~2^32,TARGET可根据当前难度求出。x另外,你可以尝试改变merkle_root和ntime。由于hash寻找这样的特征x只有暴力搜索。
一旦找到了x你可以广播一个新的block其他客户端会验证你的block是否合法block被接受,因为每一个block第一笔交易必须将新产生的25个比特币发送到某个地址。当然,你会把这个地址设置为你拥有的地址来获得这25个比特币。
比特币从开始到现在的每一笔交易记录都保存在互联网上,整个比特币网络维护着一个巨大的交易记录文件(现在大约12G)。本文件的平均更新周期为10分钟,新增交易记录称为一个block这个巨大的文件是一串的block组成,叫做block chain.
为什么有25个比特币??
这是规定。最初是50个比特币,每产生剩馀比特币的一半,这个收入就减半,最终产生的比特币总量接近2100万。如果你现在还声称挖了50个比特币,那就不会被其他客户接受block即使是白挖。
如何保证平均更新周期为10分钟??
TARGET越小,解出x难度越大,每产生2016个block(约14天),网络将根据期间产生新的block调整平均间隔后TARGET。
计算速度最快的人总是先解决吗??
不是。你总是想把矿业收入据为己有,所以每个人在计算的时候,发送矿业收入的地址是不一样的,这样merkle_root也就是说,每个人都是从不同的初始状态开始求解的。
同时解决怎么办??
Blockchain会有分叉,部分客户端接受A部分接受了B直到某个分支变长,每个人都会选择这个更长的分支。如果你挖出来的不幸没有被选中,你的挖掘收入将无效。
既然选择了更长的分支,我用很低的难度去解决怎么办??
客户端在众多分支中找到最困难、最长的。
这些计算浪费了吗??
如果你想花两次钱,你需要这样做。挖一个新的block但是藏着不广播,继续挖掘。A支付比特币,让网络上的其他人挖掘block并写入交易记录。找到商家B,支付比特币,写进自己挖的东西block。如果你能先挖两个block并且广播出去,所有人都会把你更长的分支当成现在的blockchain,商家A收到的比特币不被承认。攻击成功的概率取决于你的计算hash速度。如果整个网络的计算能力足够高,攻击或者成功率极低,或者成本极高。
用戶喜愛的交易所
已有账号登陆后会弹出下载