当前位置:首页 > 比特币区块链7个问题
1、第一个矿工挖到矿后其他矿工怎么做?
第一个矿工挖到矿后,他会记录区块的内容并获得数字货币和交
易的小费;其他矿工会校验区块信息的准确性并停止自己的挖矿进程,将此区块追加到自己区块链的末尾。
2、区块只记录交易步记录余额,如何确定账户有足够的余额?
输入值 区块的交易记录格式包含输入值和输出值,
M的交易信息 输出值 A?M:10 btc M?D:40 btc B?M:20 btc C?M:25 btc 输入值总和需大于等于输出值,若大于,需 “找零”, 令(A?M:10 btc,B?M:20 btc,C?M:25 btc)无效, 并添加(M?M:15 btc)(找零)
3、如何保证交易信息:1)未被他人篡改?2)确实由交易人发起?
非对称加密+ Hash值(摘要)
Tips:1)区块被节点挖出后会创建一个唯一的ID
区块ID=Hash(区块内交易的集合+上一个区块ID+运气值…) 2) 产生区块、挖出区块、校验区块的时间周期近乎相同
4、几乎在同时,有两个节点挖到区块了,怎么办?
此时其他节点无法清楚哪个会被接纳,同时连接便产生“分叉”,
解决这个问题的一条规则:拥有最多区块的支链是真正有价值的。
5、“双重支付”是什么?
A在通过区块交易被确认后,将提前准备的更长的区块连接,使
原先的交易无效。
解决方案:区块中会包含上一个区块的ID,当发现链接时,其后面的区块会解锁,进行重新计算。
6、在一个区块中包含什么?
区块中共有6个字段:
Int32_tnVersion //版本号,4字节
uint256_t hashPrevBlock //包含进本区块的所有交易构造的Merkle
树,32字节
uint32_t nTime//unix时间戳,4字节
uint32_t nBits //记录本区块难度,4字节,每产生2016个区块调
节一次
uint32_t nNonce //随机数,4字节,232种可能
比特币每一次挖矿就是对这80个字节连续进行两次SHA256运算;区块主体利用树结构,记录区块挖出这段时间里的所有交易信息
7、区块是如何调整难度的?
比特币挖矿本质上是计算一个hash值,最后得到的结果小于一个
大家公认的数,就承认挖到矿了。
Sha256(time.time()*m) 指定difficult,求m,difficult越小,m就越难求解。
共分享92篇相关文档