BTC-思考
约 2076 字大约 7 分钟
2021-09-29
哈希指针
比特币系统在设计中很多地方用到了哈希指针,比如说区块的块头,就包含指向前一个区块的哈希指针。这里就有问题,指针保存是本地的内存地址,只是在本地计算机上有意义,发送到其他计算机上就没有意义了,那么在发布区块的时候哈希指针是怎么通过网络进行传输的呢。所谓的哈希指针只是一种形象的说法,实际在用的过程中只有哈希没有指针。看一下block header的数据结构
hashPreBlock,只有hash值,没有指针。那怎么才能找到前一个区块的内容呢?全节点一般是把这些区块存储在key-value数据库里面。key就是区块的hash,value就是区块的内容。一个常用的key-value数据库levelDB。所谓的区块链链表结构,实际上在levelDB里面用hash值串起来的,只要掌握了最后一个区块的hash值,通过在levelDB里面查找,hash值对应的key的value,就可以把最后一个区块的内容取出来,然后这个区块的块头里面有指向前一个区块的hash值,再去查找key和value,可以找到前一个区块的内容,那么以此类推,最终能把全部区块链给找出来。所以说在实际系统当中,所谓的hash指针是只有hash没有指针。或者可以认为hash值本身就是指针。有一些节点没有保存完整的区块链信息,只保存了最近的几千个区块,如果需要用到前面的区块的信息, 可以问其他全节点要。hash指针的性质保证了整个区块链的是不可篡改的。
区块恋
据说有的情侣俩个人合在一起,买比特币,然后把私钥从中间截断,没人保留一部分。将来来个人继续好下去,就能把私钥合在一起把钱取出来。如果分手了,那么当出买的币就被永久的锁在区块链上。
这么做有什么问题吗?
比特币系统中每个账户的安全性跟所用的私钥的长度是相关的,为什么要用256位的,因为这样暴力破解是不可能成功的,但是截断后,一人泄露,另一半128位猜出来就可以了。256位有2256 个可能性,而截断一半就只有2128 种可能性,这俩种差距远远不止一倍,破解的难度变得非常的大。同理,如果4个合伙人截断成4分,那么如果3人合谋,只需要破解最后一个人的部分即可,而这个可能性变成了264,难度变得很小。
所以,对于多个人的共享账户,不要用截断私钥的方法。用多重签名!MULTISIG!而且多重签名有一定灵活性,比如给出N个人中M个签名即可。
分布式共识
关于分布式共识,学术界给出了很多不可能理论。从理论上证明,分布式系统当中取得共识是不可能的。既然理论上已经证明,实际当中比特币中有怎么取得共识,为什么它能绕过分布式共识中的不可能结论?
严格来说,比特币并没有取得真正意义的共识,因为取得的共识随时都有可能被推翻!比如出现的分叉攻击。本来以为达成了共识,分叉攻击后,系统会回滚到前一个状态。从理论上甚至有可能回滚到创世区块。按照分布式理论的要求,共识一旦达成,就不应该再改了。所以,比特币并没有绕过分布式共识中那些不可能结论,因为它并没有达到真正意义的共识。
这个事情还有一个更重要的启示!就是理论和实际往往是有距离的。
重要
知识改变命运,并没有错,但是一知半解的知识可能让命运更差。
不要被学术界的思维限制了头脑,不要被程序员的思维限制了想象力!
比特币的稀缺性
挖矿的收益要大于挖矿的开销才是有利可图的。所以要想吸引大家来挖矿,要么增加挖矿的预期收益,要么降低挖矿的开销。
任何一个新发行的货币,都有一个冷启动的问题。早期的时候你这个加密货币不是很流行,怎么吸引大家来挖矿,就是给早期的矿工更多的收益,也是合理的。因为早期的矿工承担的风险也是更大的。那么比特币是怎么做到这一点呢?一方面,早期的挖矿难度比较低,很容易救能挖到。另一方面,早期的出块奖励也是比较高的,每个区块是50个比特币,现在就降到12.5个。
有些人认为比特币设计是比较巧妙的,总量是恒定的,而且出块奖励越来越少,越来越难挖。所以大家都会抢着去挖。有些人认为这是比特币获得成功的一个原因。其实这种总量固定的东西,是不适合用来作为货币的。后面会讲到以太坊,以太坊就没有出块奖励定期减半的做法。有些新型的加密货币甚至要自带通胀的功能。稀缺的东西是不适合做货币的,平时总觉得通货膨胀是件坏事,因为钱变得越来越不值钱了。但是一个好的货币是要有通货膨胀的功能的!如果感兴趣的话,可以研究下货币金融学方面的知识。
量子计算
有些人会有这方面的担忧。因为比特币是建立在密码学的基础上的。那么将来量子计算机发明出来,这些加密货币会不会变得不安全了。传说中的量子计算机是非常强大的,可以破解现有的各种加密算法。
这个担心是不必要的!
首先量子计算技术离使用还有很长一段距离,在比特币的有生之年不一定能产生实质性的威胁。而且就算将来有一天量子计算真正能破坏现有加密体系的话,首先冲击的传统金融业。网上银行,网上支付都会变的不安全。要担心还不如担心这个。因为大多数的钱还是放在传统金融业的。
另一方面,比特币系统中利用的非对称加密体系,从私钥是可以推导出公钥的,这是比特币加密算法的特点。所以只要把私钥保管好,公钥即使丢了也没关系。从公钥当中显然是不能推导出私钥的。假设量子计算技术发达了,能够成公钥推出私钥,也无妨。因为比特币在设计的时候加了一层保护,没有用公钥本身,而是用公钥的hash。所以如果有人想偷你账户上的钱,首先是要用地址推导出你的公钥,相当于把公钥的hash值进行逆运算,推导出原来的公钥本身。而这一点,即使是用量子计算机也是没有办法完成的!加密,和取hash是俩个不同性质的操作。加密是为了将来能够解密!所以加密算法要保证信息的完整性。但是取hash的过程一般来说是会造成信息的损失的。hash函数一般都是不可逆的。从一个hash值一般不能推导出来原来的输入是什么!