主页 > imtoken冷钱包手机版 > 计算机科学视角下区块链的起源与发展

计算机科学视角下区块链的起源与发展

imtoken冷钱包手机版 2023-04-14 05:49:13

【文章重点列表:比特币在理论上并不能解决计算机科学中的共识问题,而是一种经济杠杆促进的实用系统;比特币链的慢结算是有根据的特殊设计,是不是不能加速;以太坊不能作为通用链来支持全世界的应用;以太坊做智能合约是不科学的;图灵的完备性和不完备性是无关紧要的问题;链下交易的问题是巨大的;区块链未来发展的正确方向必须了解互联网成功的本质。 ]

比特币(Bitcoin)就像一股气流,默默地积聚在海洋中。一举落地后,给各行各业带来了巨大的影响。过去几年,比特币价值飙升,引发无限想象,无数区块链项目也吸引了无数英雄。

参与区块链运动的人大致分为三类,当然中间也有交集。一是所谓的“币圈”,包括炒币的、做交易所的、做钱包的、割韭菜的、割韭菜的等等;有机猪肉五花八门,真假真假,真假难辨;还有所谓的“链圈”,目的是研究区块链基础技术的发展,其中包括真正懂门道的人,数量也不少。满嘴名词的程咬金得到了一把斧头。本文聚焦区块链技术,从计算机科学的角度分析区块链的来龙去脉,纠正一些广为流传的误解,同时指出很多日新月异的新一代链项目其实是野马奔跑在迷失的道路上狂野。最终的结果无非是把野马养肥,把马跑好,粮草枯竭,毁掉大家对区块链技术的信心。

为什么比特币令人惊讶,它是否解决了计算机科学中的共识问题?

很多人称区块链是自互联网以来最具革命性的技术,其中经常提到的一件事就是“去中心化”。区块链实际上可以去中心化,也可以不去中心化,两者之间没有必然联系。比特币在设计上是去中心化的。乍一看,它解决了分布式系统中所谓的“共识”问题,即多个节点就某事达成一致。分布式系统可以简单地想象为通过 Internet 连接的多台计算机。互联网连接并不总是可靠的(例如,它可能会掉线),并且信息传播需要时间,传播时间没有固定甚至有上限。另外,不能保证多台计算机各自的时钟时间是同步的(原因同上),有些计算机也可能故意作弊,所以分布式共识问题通常是无解的。这是学术研究的结论,也是从事分布式系统的专家的共识。

比特币不是解决传统意义上的共识问题,而是对问题进行改造。一方面,区块链的序列号被用作虚拟时间,另一方面,“挖矿”的经济力量推动了比特币链的发展。继续延伸。这就是为什么比特币理论上永远可逆并且总是可以分叉的原因,因为它所达成的共识并不是绝对的。使用经济因素解决分布式系统共识算法(在实践中,而不是在理论上)是中本聪的天才。

为什么比特币系统很慢? 10分钟结算其实是个功能,不是bug!

自从比特币大行其道以来,很多人抱怨系统的结算速度(TPS)太慢。许多人花费精力试图加速比特币,许多人提出新的区块链系统试图解决速度问题。那些抱怨比特币速度慢的人是看不到路的。当然,并不是所有懂计算机科学的人都明白为什么比特币结算系统很慢。然而,这是一个设计特性,而不是一个错误。

其实挖矿难度决定了结算速度,而这个难度是可调的,所以结算速度可长可短。假设如果结算时间缩短到一秒,即挖矿难度降低到一秒,会发生什么?也就是说,经常有数百万矿工同时挖矿。届时,如何决定由哪位幸运矿工分享奖励?选择幸运矿工是另一个共识问题,循环!如果结算时间改为一小时怎么办?由于挖矿难度增加,多个矿工同时挖矿的情况非常少见,发生冲突或临时分叉的可能性非常低。因此,结算时间不必太慢,但也不能太快。由此可见提速比特币链的想法是多么的无知。中本聪在比特币相关文件中并未详细说明其系统设计的渊源。

进一步延伸,只要是纯挖矿达成共识的公链,结算速度不能太快。以太坊不是也打算下 PoW 了吗?现在想出像以太坊这样的东西来愚弄人们并不容易。我在这里已经明确表示,未来可能不会再有 ICO 来加速比特币了。

想学习本课题的同学可以将自己的体验与大家使用的局域网以太网(Ethernet)进行比较。在本地网络上,如果多个节点同时“交谈”(传输数据),可能会导致冲突。发生冲突后,每个节点都知道数据没有传输,并再次尝试。但是,如果每个人都立即尝试再次传输,则会出现冲突和网络拥塞。如果每个人都等待固定的时间再试一次,就会发生冲突。因此,以太网的设计是每个节点随机等待一个时间再尝试传输,大大降低了冲突率,实现了数据的高速传输。这种等待随机时间的方法是否适用于比特币?显然不会,因为会有不自觉的矿工基于经济利益争先恐后地再次尝试。

以太坊能否成为支撑千万级应用的基础链?

比特币是一种单一用途的区块链,结构紧凑但经过深思熟虑,可以说接近完美。他们中的一些人留下了一点空间。初衷是留下一些评论或留言。中本聪本人在第一个区块中留下了一句话,解释了比特币链推出的时间。聪明的人用这片土地来买彩色硬币等等。但毕竟活动空间不大,也没什么可做的。

以太坊应运而生,号称可以编写通用智能合约的区块链平台。一时间巨额资金涌入,无数人开始在以太坊的基础上开发各种应用(包括所谓的DApp,即分布式应用),还有更极端的所谓分布式自治系统 (DAO)。

每个人都在以太坊链上做应用。什么概念?这就像微软推出了一个名为 Windows 的系统,然后世界各地的人们在同一台计算机上编写在同一个 Windows 系统上运行的程序。这样的系统能支持这么多人,这么多应用吗?完全不可能。看看你身边的情况,每个人都用自己的电脑或者手机,需要沟通的时候沟通,需要合作的时候配合,需要购物的时候去购物网站。其余时间他们做自己的事。如果互联网试图使用全球共享的超级计算机模型,它就不可能发展起来。以太坊往反方向跑,不知道是我真的看不懂还是故意糊弄。作为发币平台,以太坊非常成功。是否还会有其他剧集,还有待观察。

智能合约有希望吗?图灵完备是好事还是坏事?

让我引用别人的一句话比特币的由来去脉,“以太坊上的智能合约既不智能也不合约。”用可编程计算机语言表达合同存在基本限制。比如合约写成代码后就“死”了,那么智能在哪里。为了能够适应智能的变化,必须提前考虑各种变化的可能性。在现实世界中,无论合同多么紧凑,都会有出人意料、考虑不周的时候,或者双方对合同内容的认知不同。在现实世界中,合同各方也可以坐下来讨论和修改合同。这些修改、协商或仲裁的功能如何在以太坊上实现?

遵循以太坊智能合约的另一个词是图灵完备,这似乎是一个很棒的功能。事实上,如果你真的想做智能合约,图灵完备是一个相反的想法。你为什么这么说?任何设计过计算机编程语言的人都知道,编程语言的限制越少、功能越强大,程序员就越容易出错。比如常用的C语言就是这样一个例子。它之所以强大,是因为它是一种系统级语言,它需要如此强大的灵活性才能用作操作系统。但作为编写应用程序的要求,可以说处处是坑。后来引入的Java语言加入了很多限制,比如类型安全、垃圾回收等,避免了很多程序员容易陷入的陷阱,成为企业级应用的首选语言。

回到区块链智能合约的问题。为了安全可靠地编写合约,合约语言必须进一步减少功能并添加许多约束。和律师打过交道的人都知道,合同一般都归类为模板。律师从不愿意从头开始起草,而是在模板的基础上编写合同。这是因为模板提供了很多约束,经历了时间的考验并不断更新,不容易出错。律师的模板类似于高级编程语言设计中的类型和模式。前段时间,以太坊上的DAO因为合约代码错误而遭到攻击。所以,对于编写智能合约的编程语言来说,少即是多。另外,如果真的要为智能合约设计一种语言,恐怕从一开始就必须考虑如何结合形式验证技术来证明每个合约的正确性,将可验证性或可证明性设计到合约的结构中。语言。里面。

交易链下是解决方案吗?

由于链上交易速度慢,所以链下项目很多,也就是说,交易是在链下(或链下)实现的,然后跑到链上进行统一聚合。乍一看,这似乎是有道理的。但仔细分析后,问题就来了。区块链之所以看好,是因为链上有很多好的功能,比如内容不可篡改等等。使交易脱链失去这些功能的支持并带来额外的风险。例如,两个节点之间的小额支付似乎每天都在链下进行,当累积到一定时间或规模时,可以再次在链上结算。但是这些链外交易如何保证正确呢?如果一方系统出现故障,在结算前账本丢失,另一方可以违约。这种无法在链上发生的场景可能会在链下发生。主张链下交易的人,似乎并没有强调链下带来的这些问题。

还有另一种链下场景,即交易所和钱包。许多问题存在于这些链的端点,包括技术安全问题以及非技术信任问题。例如比特币的由来去脉,一些网站声称可以帮助用户管理各种硬币,这与陌生人询问您的银行卡密码无异。还有所谓的冷钱包,大部分都是不知名的厂商。价格只有几十元。它们以次充好,用于管理巨额资产。并且没有人对问题负责,并且硬币被转移且不可逆转。如何管理和使用这些币,让公众可以安全便捷地操作,还有很长的路要走。

区块链发展的正确方向是什么?

说了这么多,我指出了很多广为流传的误解,揭露了很多神话和谎言,这是一个很大的打击。这并不是说我不看好区块链技术。比特币的增长利用市场力量推动了几件事。一是证明人人都有公钥加密系统的时代已经到来,人人都能接受。一是分布式系统的共识算法在冷落多年后再次受到关注,吸引了众多学者和博士生积极研究。还有就是这个领域吸引了这么多钱,虽然牺牲了很多,但毕竟有些钱会落到正确的地方,必须有所作为。

区块链的发展被比作新一代的互联网。原则上,我们应该真正学习互联网几十年的成功发展,而不是简单地按照web1.0的方式搞各种炒作。未来正确的发展方向是在区块链领域发扬互联网成功的精髓。要做到这一点,需要扎实的知识背景、强大的研究能力和丰富的实践经验。具体怎么做,今天没时间继续写,先在这里卖,下次听分解。