【区块链学习笔记】12:比特币系统的思考

哈希指针:只有哈希

比特币区块的块头里有指向前一个区块的哈希指针,所谓的哈希指针实际上就是哈希值。那么是怎么串起来的?对于全节点,会维护一个kv数据库,key就是哈希值,value就是区块内容,常用的就是levelDB。

哈希指针没有哈希只有指针,或者也可以理解成哈希就是指针。

有些节点只保存最近的几千个区块,如果需要前面的区块的内容可以找全节点要。

多重签名:基于"区块恋"的思考

有些情侣会把私钥一分为二,两个人各自维护一份,拼在一起才能使用。

有什么问题?如果有四个商户,每个人掌握一份,拼在一起才能用,如果有一个人丢了这些钱就拿不到了。

还有一个问题就是这种截断会降低私钥的安全性,私钥的安全性和长度有很大的关系。为什么要用256位的私钥?就是因为破解难度大。而情侣的例子里,一方已经知道了128位的私钥,只要把剩下的128位私钥猜出来就行了。

私钥的长度降低了一半,破解的难度可是天差地别,远远不止是降低一倍(实际上减少一位才是降低一倍)。

前面四个合伙人的例子也是,假如有三个合伙人串通起来,瞒着最后一个人,只要猜64位私钥就行了。

所以对于多个人的共享账户,不要用截断私钥的方法,而是要用多重签名(multisig)。多重签名里的每个私钥都是独立产生的,而且多重签名还有别的灵活性,比如可以要求n个人里给出m个签名就行了。

前面区块恋的例子里,如果两个人分手了,那么他们当时买的币就会永远保存在UTXO里,这些"死钱"对矿工是不友好的,矿工并不知道这些是死钱,会造成这个集合的膨胀。

分布式共识:其实没有达成共识

关于分布式共识,学术界有很多impossibility result,理论上证明分布式共识是不可能实现的。那么比特币为什么能绕过分布式系统里的不可能结论得到共识呢?

严格的说,比特币并没有取得真正意义上的共识,因为随时会被推翻,比如分叉攻击,分叉攻击之后可以回滚到前一个状态,甚至理论上可以回滚到最开始的状态。而分布式共识要求共识一旦达成就不会修改了,所以从这个意义上并没有破坏分布式共识的理论。

理论和实践还是有很大差异的,理论很多时候基于一个特定的模型,但是实践中破坏模型的一些要求就不再满足这些理论了。

这里肖臻老师举了一个例子,怎么证明某个远程数据中心的服务器已经宕机了?能观察到的情况就是连接不上那个远程服务器了。怎么区分是网络的问题还是真的是服务器宕机呢?

分布式理论体系里已经证明了,这是不可能区分出来的。分布式系统的理论已经证明了,在异步的环境中,不可能区分某台远程的服务器到底是宕机了还是仅仅是运行缓慢。

所谓的异步环境,是指通信的延迟是没有上限的,所以不可能区分开前面说的那两种情况。在现实中,直接给远程服务器那边的同事打电话,看看是不是宕机了(这个模型就不是理论上的异步模型了)在帮忙重启就行了。

肖臻老师提到,总是给值班人员打电话也不好,老服务器有一根电话线可以拨号上网,可以连这根电话线,平时用Ethernet的网线,如果网不好使了再试试电话线,如果电话线也连不上,那一般可以认定是死机了。

发明比特币的中本聪,应该不是学术出身的,否则应该不会设计比特币这样的系统。

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

比特币的稀缺性:适合作为货币吗?

挖矿的收益大于开销,才会吸引矿工来挖矿。任何一个新发布的货币,都会有一个冷启动的问题。怎么吸引更多的人来挖矿?一般是给早起的矿工更多的收益。

比特币,早起的挖矿难度比较小,出块奖励也更多。后面就越来越少,构成一个几何级数,最后加起来是固定的。但其实这种总量固定的、稀缺的东西是不适合作为货币的,后面会讲的以太坊就不会有这种总量固定的问题,甚至有的新货币还会有通货膨胀的机制,自动提高发行量。

货币是需要通货膨胀的,就像现代货币都舍弃了金本位(即使黄金的总量不是定死的,但是每年新挖出的黄金数量远远赶不上社会创造的财富数量)。所以如果用黄金来作为货币的话,黄金会变得越来越值钱。如果某个人早起拥有黄金,那么这个人就不用工作了,坐等黄金不断增长。

国内房地产就是这种情况,如果房价一直疯涨,那么已经买房的人就可以等着增值,这是货币金融学相关的知识。

量子计算

比特币这样的加密货币是建立在密码学基础上的,那么未来量子计算厉害之后,这些加密货币会不会变得不安全?

首先,量子计算技术离实用还有很长一段距离,在比特币的有生之年很难产生实质性威胁。如果有一天量子计算能破坏加密体系的话,那么首先冲击的是传统金融业,网上的银行、转账、支付都会变得不安全。加密货币的总市值其实只占了现代金融体系的很小一部分。何况量子计算出来了也会有量子加密算法。

比特币并没有把账户的公钥直接公布出来,而只是公布了公钥的哈希,而比特币的公钥可以从私钥推导出来,所以把私钥保存好就行了。假如有一天能从公钥推出私钥了怎么办呢?比特币又加了一层保护,没有直接用公钥,而是用公钥的哈希。所以如果有人想得到你的私钥,就得先从公钥的哈希得到公钥本身,这个即使是量子计算机也没办法。

加密和取哈希是两种不同的操作,加密是为了解密,所以不能丢失任何信息。但是取哈希则不用,有很多信息在取哈希的过程中就已经丢失了。比特币用的哈希算法是SHA256,不管什么信息,得到的都是256位的哈希值,这显然是不可逆的。

比特币系统中,如果只是为了收款,没必要提供公钥,只要提供公钥的哈希就行了。只有取钱的时候才需要公钥,以及一个私钥产生的签名。假设有一个坏人在网上监听到了取钱的交易,他要怎么攻击?首先要实时监听你的公钥,尝试反推出私钥,还要产生一个和你竞争的交易,你要转到你的账户,坏人要转到他的账户。即使他拥有量子计算技术也很难这样做,而且他发布的交易还要抢在你的交易前面。因为这两个交易是double spending。

所以从安全的角度来说,比特币的一个地址用过了就不要在用了。每次把钱全用光,用完买东西的钱之后,剩下的钱直接转给自己的另外一个账户。这样做不但增加了安全性,还提高了隐私保护。

如果很担心量子计算的威胁,即使是公钥也不要随便泄露!

相关推荐
元宇宙时间10 小时前
DID联盟:Web3数字主权基础设施的战略构建
人工智能·web3·区块链
yutianyu_one11 小时前
Solidity 与 x402 协议
区块链
麦烤楽鸡翅12 小时前
幂数加密(攻防世界)
网络安全·密码学·ctf·crypto·解密·攻防世界·幂数加密
许强0xq13 小时前
Robinhood的再进化:从零佣金交易到链上金融超级应用
金融·web3·区块链·智能合约·solidity·dapp·去平台化时代
CyberSecurity_zhang1 天前
汽车信息安全--关于安全强度的误区
信息安全·汽车·密码学·安全强度
国服第二切图仔1 天前
Rust开发实战之密码学基础——哈希计算与对称加密实战
rust·密码学·哈希算法
粟悟饭&龟波功2 天前
【区块链】二、案例1:汽车供应链区块链
区块链
许强0xq2 天前
稳定币市场格局重构:分发权正在成为新的护城河!
金融·web3·区块链·dapp·稳定币·usdt·usdc
Ashlee_code2 天前
经纪柜台系统解析:从今日国际金融动荡看证券交易核心引擎的变革
python·架构·系统架构·区块链·vim·柜台·香港券商
粉色挖掘机2 天前
矩阵在密码学的应用——希尔密码详解
线性代数·算法·机器学习·密码学