BTC-11&13-问答和思考

内容整理自 北京大学肖臻老师《区块链技术与应用》公开课 11-BTC-问答 以及 13-BTC-思考

问答:

1.如果转账交易接收者不在线怎么办?

不需要接收者在线。转账交易只是在区块链记录一下,把付款者账户上的币转到收款者账户上,与是否在线无关。

2.假如全节点收到一个转账交易,有没有可能转账中的收款地址是该节点没有听过的?

有可能。账户创建时不需要通知其他节点,只要在本地创公私钥对即可。只有在以后产生收款地址,第一次收到钱时,其他节点才知道账户存在。

3.如果账户私钥丢失怎么办?

没办法,钱取不出来,变成了死钱。与日常生活不同,生活中如果银行卡密码忘了可以重置。比特币是去中心化系统,没有机构可以重置私钥。

4.私钥泄露怎么办?

转移钱。私钥无法修改,也无法阻止别人转账,只能自己在第一时间把账户中的钱转移到安全账户。同样与日常生活不同。

5.如果转账写错地址怎么办?

没办法,不能取消已经发布的交易。类似话费充错了手机号。

6.会不会有矿工抄袭别人的nonce发布出去,怎么知道哪个矿工最先找到的nonce?

不会。发布的区块里有一个coinbase tx,里面有收款人地址,是挖到矿的矿工的地址。其他人如果要偷答案,需要把收款人地址换成自己的地址,而地址改变,coinbase tx内容也就改变,会导致merkle tree中的root hash也会改变,进而导致block header改变,那么该nonce也就作废了。nonce是和收款人地址绑定在一起的。

7.如何事先知道交易费该给哪个矿工,哪个矿工会挖到矿?

不需要知道。只要total inputs > total outputs,这个差额就是交易费,挖到矿的矿工就可以把区块里所包含的交易的差额都收集起来作为交易费。

思考:

哈希指针:

指针保存的是本地内存的地址,只在本地计算机才有意义,在其他计算机上没有意义。发布区块时,哈希指针如何通过网络进行传输?

哈希指针只是一种形象的说法,实际使用只有哈希,没有指针,或者认为hash本身就是指针全节点一般是把区块存储在一个key-value数据库中,key就是区块哈希,value就是区块内容。常用key-value数据库level DB,所谓的区块链这种链表结构,实际上是在levelDB里面用hash值串起来的。只要掌握最后一个区块的hash,就可以通过level DB查找hash值这个key所对应的value,查找到最后一个区块内容,该区块header中又有前一个区块的hash,可以找到前一个区块内容。以此类推,最终能把整个区块链找出来。

有些节点没有保存完整的区块链信息,只保存了最近的几个区块,如果需要用到前面的区块的信息,就找其他的全节点要。哈希指针的性质保证了整个区块链的内容是不可篡改的。

区块恋:

指的是一对情侣两人一起买比特币,把私钥一分为二,各自保存一部分。以后如果两个人还在一起,两段私钥合在一起就能把钱取出来。如果分手了那么当初买的比特币就被永久的锁在区块链上,谁也取不出。用block chain的不可篡改性作为爱情的见证。

 这种截断私钥分成n份的做法,如果其中一个人丢失了私钥,那么币就永远取不出来。另外,截断私钥的做法会降低账户的安全性。比特币系统中账户的安全性和私钥的长度是相关的,之所以用256位的私钥是因为用暴力破解的方法不可行,计算量大。但是如果分成两段,那么其中一个人想要破解,只需要破解另一半128位的私钥即可。私钥长度减少一半,破解难度可不是降低一半,2^256种可能性和2^128种可能性差的不是一倍。分成n段同理,其中n-1个人一起破解的难度大大降低。

对于多个人的共享账号,不要用截断私钥的方法,可以用多重签名。

死钱永远保存在UTXO,造成集合膨胀。

分布式共识:

理论上证明分布式系统中取得共识是不可能的,那么为什么比特币系统能够绕过分布式共识中的那些不可能理论?

严格的说,比特币并没有取得真正意义上的共识,因为取得的共识随时都有可能被推翻,比如分叉攻击,可能会造成回滚到前一状态。按照分布式系统理论要求,共识一旦达成,就不应该再改。所以从这一点来说,比特币并没有绕过分布式共识中的那些不可能理论,因为并没有达到真正意义上的共识。

ps:理论和实际总是存在差距,很多理论上的不可能结论,对于实际当中是并不适用的。因为这个不可能只是针对某种特定模型下是不可能的,实际中把模型稍微修改,不可能结论就不成立。

知识改变命运,但是对知识的一知半解有可能使你的命运更差。

不要被学术界的思维限制了头脑,不要被程序员的思维限制了想象力。

比特币稀缺性:

稀缺的东西不适合用作货币。好的货币要有通货膨胀的功能。

量子计算:

像比特币这样的加密货币,是建立在密码学的基础上,量子计算机发展起来之后,加密货币会不会变得不安全?

1.比特币有生之年不一定赶得上量子计算发展。

2.量子计算发展起来之后,首先冲击的是传统金融业,大多数资金还是在传统金融业中。

3.可能会出现量子加密算法。

4.比特币并没有把公钥直接暴露出来,而是用公钥取哈希之后得到一个地址。比特币加密私钥可以推出公钥,但是公钥不能推出私钥。如果说量子计算的发展使得可以通过公钥推出私钥,比特币也没有使用公钥本身,而是公钥的哈希。所以如果有人想偷你账户的钱,首先要通过地址(公钥哈希)推算出公钥,这一点即使是量子计算也无法完成。

收钱不需要提供公钥,只提供地址(公钥哈希)即可;取钱需要提供公钥和用私钥产生的签名。如果有人监听你取钱的交易,知道你的公钥,想要偷你的钱,需要通过公钥算出私钥,然后产生一个和你取钱的交易相竞争的交易。即使是量子计算也很难在几分钟之内算出私钥,而且产生的交易要在你取钱交易之前发布出去,因为冲突,会出现double spending。

所以比特币的一个地址一旦用过之后就不要再用了,每次从这个地址取钱时候,最好是一次性都取走,除了支付给别人的钱之外,剩下的钱可以转到自己的其他账户,这样做不但增加安全性,也提高了隐私保护。

发布了83 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a972669015/article/details/104646742