比特币区块链7个问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、第一个矿工挖到矿后其他矿工怎么做?
第一个矿工挖到矿后,他会记录区块的内容并获得数字货币和交易的小费;其他矿工会校验区块信息的准确性并停止自己的挖矿进程,将此区块追加到自己区块链的末尾。
2、区块只记录交易步记录余额,如何确定账户有足够的余额?
区块的交易记录格式包含输入值和输出值,
输入值总和需大于等于输出值,若大于,需“找零”,
令(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就越难求解。