-
转账交易时如果接收者不在线怎么办?
- 不需要接收者在线,转账交易只不过是在区块链上记录一下,把一个人账户上的比特币转移到他人的账户上,他人是否当时连接在比特币网络上是没有影响的
-
假设某个全节点收到了一个转账交易,有没有可能转账交易中接收者的收款地址是这个节点以前从来没有听说过的?
- 这是可能的。比特币账户在创建的时候是不需要通知其他人的,在本地产生一个公私钥对就可以了。只有在产生收款地址以后第一次收到钱时,其他节点才知道这个账户的存在
-
如果账户的私钥丢失了,该怎么办?
- 私钥丢失之后是没有办法的。该账户上的钱就变成了死钱,永远取不出来了。在去中心化的系统里,是没有人可以给你重置密码的
-
如果私钥泄露了怎么办?
- 应该尽快把自己账上的钱转到另外一个安全的账户上
-
如果转账的时候写错了地址怎么办?
- 没有办法。因为没有办法取消已经发布了的交易。如果我们知道是转给了谁,可以跟对方进行联系。如果不知道转的是谁的地址,或者是不存在的地址,那就没有办法了
-
什么叫不存在的地址?
- 地址是公钥取哈希得到的。但有些地址其实不是公钥的哈希得来的,比如
Proof of Burn中,OP_RETURN后写什么都是没有人管的,但是有人会用哈希值生成一个看上去像是比特币地址的东西。比如A→B,正常情况下B是某个比特币账户公钥取哈希之后得到的地址。在这里把他要保存的那个哈希值生成一个地址,作为收款人的地址。这个地址是没有对应的私钥的,它其实是个假的地址,比特币系统并不知道这个地址的真假,你这个哈希是怎么来的,别人也看不出来。所以这样转账的钱就变成了死钱。这个转账永远不可能被取出来
- 地址是公钥取哈希得到的。但有些地址其实不是公钥的哈希得来的,比如
-
Proof of Burn、OP_RETURN这些实际当中是怎么操作的?
- 验证当前交易合法性的时候,不会执行这个语句。即当前交易的输出脚本在验证交易合法性的时候,是不会被执行的。只有有人想花这笔钱,后面再有一个交易,要花这个交易的输出的时候才会执行这个交易的输出脚本
-
挖矿时会不会有的矿工偷答案?
- 不会。发布的区块里有coinbase transaction,里面有一个收款人地址,是挖到矿的矿工的地址。假如A挖到了矿,里面就是A的收款地址。如果要偷答案的话,就要把A的地址换成自己的地址,而地址如果一变化,coinbase transaction的内容就发生了改变。这样会导致merkle tree的根哈希值变化。而nonce是在块头里面,根哈希值也是在块头里面,block header的内容发生了变化之后,原来找到的nonce就作废了。所以不可能偷答案,因为每个矿工挖到的nonce是和他自己的收款地址绑定在一起的
-
怎么判断交易费该给哪个矿工?即事先怎么知道哪个矿工会挖到矿?
- 事先不需要知道哪个矿工会得到这个交易费。交易费的计算:
total inputs > total outputs,其差额就是交易费。发布的交易里面,一个交易可以有很多个输入,也可以有很多个输出,总输入减总输出就是交易费。给谁不需要事先知道,哪个矿工挖到矿了,就可以把这个区块里所包含的交易差额收集起来,作为他自己的交易费
- 事先不需要知道哪个矿工会得到这个交易费。交易费的计算: