12 BTC-思考

发布时间 2023-05-02 12:40:44作者: YangYi215

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


12 BTC-思考

  1. 哈希指针,比特币很多设计使用了hash指针,指针保存的只是本机的内存地址,发送到其他计算机上就没有意义,那么,在发布区块的时候,hash指针是怎么通过网络进行传输的呢?

    所谓的hash指针只是一种形象的说法,实际系统中使用的时候,只有hash,没有指针。

    那么,怎么找到上一个区块的内容呢?全节点一般是把这些区块存储在一个 $key:value$ 数据库中,$key$ 为区块hash, $value$ 为区块内容,常用的 $key:value$ 数据库中是 levelDB。

    区块链的链表结构实际上在 levelDB 用hash值来串起来的。只要你掌握了最后一个区块的hash值,那么通过 levelDB 数据库中 key(hash值)对应的内容,就能把区块中的内容取出来,以此类推,一步一步往前找。

    hash值本身就是指针。hash指针的性质保证了整个区块链的内容是不可篡改的。

  2. 区块恋

    用blockchain的不可篡改性,作为两个人爱情见证。

    任何一个人丢失私钥,比特币取不出来。

    截断私钥的方法会降低账户的安全性,比特币系统中账户的安全性与所用的私钥的长度是相关的。情侣一人已经知道128位,只需要暴力求解128位就行。

    错觉:私钥减少一半,破解难度降低一半。

    对于共享账户,不要使用截断私钥的方式,使用多重签名的方式(MULTISIG)。

    另外,如果真的情侣之间真的分手了,他们当时买的币会永久的保存在全节点的UTXO中,对矿工是不友好的。

  3. 分布式共识,学术界有很多著名的科学家给出了 impossible result,从理论上证明分布式系统中取得系统是不可能的。既然理论中证明是不可能的,实际中为什么是可行的呢?为什么能绕过分布式共识中的那些不可能结论?

    严格意义上说,比特币并没有取得真正意义的共识,因为取得的共识随时都有可能被推翻,比如:分叉攻击。按照分布式系统理论的要求,共识一旦达成,就不应该再修改。

    理论和实际往往是有距离的。很多理论中不可能理论对于实际当中是并不适用的。不可能理论只是针对某种特定的模型是不可能的,实际当中,稍微修改模型,不可能结论就不成立了。

    问题:判断远程的服务器是不是已经死机了?你发现连不上,是不是真的死机了?

    分布式系统理论已经证明,在异步(通讯传输的延迟是没有上限的,我发一个消息,你什么时候收到,谁也不知道)的环境中,不可能区分某台远程的服务器到底是已经垮掉了还是运行缓慢。

    解决方法:打电话值班人员。(这种就不是理论上的异步模型了,所以理论上的异步模型就不成立了)

    知识改变命运,这句话本身没有错,但是,对知识的一知半解,有可能使你的命运变得更差,发明比特币的中本聪,应该不是学术界出身,否则,不太可能设计出比特币这样的系统来。

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

  4. 比特币的稀缺性

    任何一个加密货币,都有一个能启动的问题,早期加密货币不流行,怎么吸引人来挖矿,给早期的矿工更多的收益。其实是合理的,因为早期矿工承担的风险是更大的。

    比特币 (1 早期挖矿难度低;2 出块奖励多)

    比特币的总量是恒定的。其实,总量固定的东西其实是不用来做货币的(以太坊没有出块奖励定期减半的做法),有些货币,需要一些通胀的功能,每年把货币的发行量,提高一定的比例,为什么如此设计?

    稀缺的东西是不适合用来做货币的。我们其实总觉得,通货膨胀是一件坏事情,因为钱变得越来越不值钱了,但是,一个好的货币,其实是要有通货膨胀的功能的。黄金呢?

    黄金在古代确实有很长一段时间是用来做货币的,但是,现代社会基本都废弃了金本位制,不再使用黄金作为货币。严格地说,黄金的总量也不是定死的,每年都有新的金矿挖出。但是,黄金增加的速度远远赶不上社会新创建财富的速度。黄金会变得越来越值钱。和房价类似,已经买房的变得越来越富,没有买房的,永远也买不起。个人奋斗变得没有意义了,一个健康向上的社会是不应该出现这种情况的。

  5. 量子计算

    量子计算技术离使用还有很长一段距离。

    如果将来有一天,量子计算真正强大到能破坏现有的加密体系的话,首先冲击的是传统金融业。加密货币只占了当代金融体系的很小一部分。

    将来还会有量子加密算法。

    比特币中并没有直接把账户的公钥直接暴露出来。而是用公钥取hash之后得到一个地址。即使量子计算机发达,可以通过公钥推出私钥,但也不能通过地址推出公钥。(加密和hash是两个不同的操作,加密过程是保证信息的完整性,不能丢失信息;hash会造成信息的损失)

    比特币中如果只是收钱的话,没必要把公钥暴露出来,只暴露一个公钥经过hash生成的地址就行。取钱的时候才需要提供公钥。取钱的交易中(输入交易)中需要有公钥和私钥产生的签名。(转账的时候,可以把一个地址中的钱全部转走,更换个人的比特币地址)

    如果是公钥也不要随便泄露,如果你很担心量子计算威胁的话。