Why Nostr? What is Njump?
2023-02-17 00:55:21

Eric on Nostr: 比特币:中本聪到底做了什么? 0x188d March 6th, 2022 ...

比特币:中本聪到底做了什么?

0x188d
March 6th, 2022

1.为什么要创造比特币?
出于对中心化的央行滥发货币、肆意剥夺普通百姓私有财产的深恶痛绝,中本聪试图创造一个不需要第三方机构,可以直接点对点进行价值转移的交易系统,这就是比特币的由来。 严格的讲,并没有什么比特币。这只是由网络中的无数台电脑(每台电脑相当于一个会计)共同自动维护着的一个多点账本系统。(了解会计学单式记账法和复式记账法,有助于理解为什么比特币不会被篡改)我们所拥有的“比特币”,不过是这个记账系统上给我们记了一笔余额。(后面会说到其实也没有“余额”这个概念)
2.为什么这个账本记个余额就会有价值?
货币从贝壳到黄金,从黄金到纸币,从纸币到微信余额。漫长的演化很容易让学艺不精的人认为货币是个实实在在存在的东西。其实从来都不是,货币源于我们每个人的想象,它的本质是价值交换的担保物。只要比特币能起到担保的作用,那么它本身有无价值就只取决于认可这个担保的人们财富的多寡,也就是币圈经常讲的共识。
3.要构建这个去中心化的记账系统,第一个面临的就是数以万计的电脑怎么同步的问题。
即如何确保每台电脑最后记的账能够保持一致性,不致于每台记的账不一样。(计算机网络里叫“拜占庭将军问题”)
太多了容易出错,我们就一口一口地吃。天才的中本聪把这个冗长的账本数据库,分成了一段一段的的小账本,每段1M,平均大概可以记录1000笔转账,这样一段一段地同步和达成共识,这就是区块block.
那么谁愿意来记这个账呢?大家都不是活雷峰,于是中本聪给每个小账本都附上了一点奖励。
4.为什么要有工作量证明(Pow)?
我们把每台参与记账的电脑叫一个节点。区块分出来后,因为信息并不对称,每个节点记的小账本都不一样,问题就来了:网络该承认谁记的区块?
对节点而言,为了抢这个小账本记账权而做的无用功,就叫做挖矿。费力气通过劳动来抢小账本的就是工作量证明(Pow算法)。谁钱多谁记,用钱砸人坐享其成的叫权益证明(Pos算法)
5.Hash算法
怎么算抢到了记账权呢?中本聪说,你们每个节点拿一大砣钥匙,我给你们一把锁,谁先试出来哪把钥匙打得开,这个小账本就给谁记。这就是Hash,所以别以为矿工真在解什么数学难题,他们不过是在试钥匙罢了。一个节点试出来了,就给周边的每个节点复制一把钥匙并吼一声,我试出来了。边上的节点收到试一下,果然打得开,就承认这个小账本。打不开就仍掉,当你说谎。至此每一个小账本同步的问题就解决了。Dogecoin中用的Scrypt算法和这个类似,我们把Hash和Scrypt这类费力试钥匙的算法叫Pow算法。
所以挖矿从来都不是什么浪费,是保证这个记账系统运转必须做的工作,别被人用环保什么的忽悠了。全世界那么多金碧辉煌的银行,比特币这点消耗和他们比起来,简直九牛一毛。
6.区块链(Blockchains)
前面我们说到了每一个节点找到钥匙就得到了记小账本的权利,问题是现实网络中并没有一个中本聪在那发锁,看比特币网络怎么解决发锁的问题:
中本聪把每一个区块编上号,这就是区块高度。每个节点同时收到几把锁时,只试最新那一把锁。上一把锁的答案(钥匙),是下一把锁的一部分。即不可能在没打开上一把锁的情况下,知道下一把锁在哪儿。这样就可以把网络中不同时间,不同节点产生的区块互不冲突地串成一串,从而达成整个网络的共识。
当网络算力上升时,区块产生速度就会加快,这时网络会通过移动平均数算法来增加Hash难度(Hash算法中,就是增加区块hash值前面0的数量来实现),从而把出块速度降下来,维持在平均10分钟1个区块的速度。
所以像Solana这种,为了效率提供中心化时间戳服务器,只要时间戳服务器宕机,整个网络就崩溃了。这还能叫什么区块链呢?我搞个分布式数据库岂不是更高效。
小伙伴们一定要记得,区块链是一个效率极低极低的账本数据库,所有改进效率的公链,都是以牺牲不同程度的去中心化为代价。
7.算力降低比特币就有可能崩溃?
看了区块怎么链成串,我们就知道无论多强大的算力,它本质上都是在做无用功,无法更改已经打包了的区块。下一个区块依赖于上一个区块,修改难度是成指数级上升,别说51%攻击,你就是99.9%攻击,都只勉强能搞定双花,却改不了账本。真正影响比特币安全的,是全节点的数量,如果过于太少,最应该担心的也不是篡改问题,是容易被政府查禁而显得脆弱。这些风险现在都不存在了,只要分布在全球各个角落,还有上千台矿机,神仙都奈何不了比特币。
8.双花欺诈问题
一笔钱花2次这种事,最后永远不会出现在链上。只会出现在一种情况,你拥有51%以上的算力,你打了一个包仍出去,欺骗收款人已经得到了1个确认。同时你又把这笔钱转给了另外一个人,是别的电脑打了包,你接着丢掉之前的链,打别人的下一个区块。这样那个人事实上没收到钱,他却以为自己收到了。
避免双花攻击有3重基于人性设计的保障在:
1.只要得到6个区块高度的确认,以51%算力计,被欺诈的概率低于0.01%.你说万一的风险我都不想冒,你等30个区块确认,太阳明天爆炸你都不会被双花攻击。
2.拥有51%算力的人,拿来挖矿不香吗?为什么要去干诈骗的事。
3.要拥有国家级的算力,才有万分之一的可能骗走我那三瓜两枣。而且他还得每损失1万,才有可能从我这骗到1块钱。如果国家领导人疯到这程度,我认了。要我命都分分钟的事,何况是点小钱。所有那些说政府一攻击,比特币就崩溃的人都对人性一无所知。
9.ETH真的能超过比特币吗?
Pow算法对参与其中的每一个节点公平对待,比如我的矿机算力是你的1%,那我的收益就是你的1%.不论矿场大小,但我们的投入产出比是差不多一样的。Pos有点像存款利息,我们同样运行一台矿机,我的钱只有你的1%,那我的收益就只有你的1%,但我们运行矿机的成本是一样的,所以对穷人不利,这样节点就会越来越少,中心化程度就越来越高。
所以只有Pow算法的才可以认为是钱,所有Pos算法的几乎都可以归类为股票。由此观点看,随着时间的推移,ETH市值完全依赖于以太坊团队运营状况。而比特币不依赖于任何人,钱只是钱。
10.最难理解的“未花费输出”
我们前面说到,比特币系统中没有余额和账号概念。比特币为了充分解耦,提高交易处理能力,每笔交易只上溯一层。中本聪设计了铸币厂模式,即每一笔转出的钱通通销毁,重新给收款地址铸造一笔新钱。这样当整个网络运转的时候,矿工节点不需要去追溯转账的用户是否有足够的余额,只需要判断这是否是一笔新钱。这样让比特币没有世界态,每个节点无须知道网络的运行情况,无数的节点可以同时运行而只需要很少的协调,转账效率极高,理论上讲只要区块扩容可以无限扩充,却不会降低转账速度。
比特币中这个不是缺陷的“缺陷”:没有世界态的分布式网络不是图灵完备的,缺少状态机,很难运行智能合约。也就是说比特币网络除了用来记账,别的啥也干不了。但记账这事,做得非常非常优秀,以致于无人能及。
V神为了能够运行智能合约,重新创造了以态坊网络。但是我们要知道以太坊是以牺牲去中心化(即安全性)和记账效率为代价。因为要维护整个网络的世界态,随着时间的发展,以态坊网络会越来越慢,加密猫瘫痪整个网络的事情会越来越多。这也是为什么V神急于把以太坊转为Pos的原因。
以态坊上创造的第一个大杀器级应用是ERC20代币,它让所有早期的区块链项目都能发行自己的股票融资(ICO),里面诞生了交易所平台币,稳定币这样的超级应用场景。
第二个大杀器级的应用是uniswap,相当于股票市场的一级市场,可以直接投资从项目方手里兑换Token(股票)。在uniswap出现之前,这些都逃不过中心化交易所,一个小项目在刚开始的时候,大部分融资都成了上币费。
第三个大杀器级的应用是NFT,就有点超出以态坊网络的负荷上限了。我们知道其实NFT的图片并没能够上链,上链的只是项目方发的一个引用链接,你的小图片还是存在别人家的小服务器里,哪天宕个机,你就加载不起了。所以我认为NFT,SocialFi,DeFi之类的大部分应用,以太坊很难拖得动了,得去更中心化的公链上,比如币安链。当然安全性自然就更低一些。这里的安全性是指万一币安作恶的情况。并不是每一个事情都要安全不要效率,比如几千万把块钱,我认为放微信余额虽然有腾讯倒闭了取不回来的风险,但是和日常便利性相比,可以接受。
11. No key,No money 在交易所的比特币,在跨链上的比特币(如WBTC,币安链上的Dogecoin),本质上都不是你的钱,和微信余额一样,是别人给你记的一个账。哪天平台跑路了,你的钱钱就没有了。稳定币usdt,usdc,busd之类也是同一回事,一定要知道这些只是公司信用提供的担保物。而你握在主网链上的比特币,才是整个网络在提供担保。
Author Public Key
npub1jn6cfl0m5jjemncznhfhhpyx3sgvt4tjxw93a7qjtz39jxgljswsxwtgt5