本栏目是一个系列访谈,旨在走进高级技术开发者这一群体,他们是致力于开发EOSIO技术堆栈并对其进行迭代的先驱者,也是区块链世界的无畏探索者,通过专注于研究区块链技术的Elliptic Curves和 Merkle Trees,向世人揭示EOSIO的巨大潜力。

作为本栏目的第二期,我们与EOS网络基金会首席工程师Bucky Kittinger取得联系并进行一场深度对话,了解他对技术的热爱以及加入EOS网络基金会后的规划。


「足够先进的技术就像魔法一样。」

— Arthur C. Clarke.

在机器和人类语言之间的边缘地带游走像是一种魔法。 在一个编译器理论方面有梦想的区块链开发者的眼中,时间似乎在膨胀,以前看不见的通信模式变得逐渐清晰。 在与 Bucky Kittinger 的谈话中,我开始意识到,对他而言,探索最前沿的东西就像是在花园分叉小路上自在的漫步。

我们的视频通话开始后,Bucky坐在一堵漂亮的吉他墙前。他的言谈举止给人一种明显的美国南部气息,在我们交谈了一会儿之后,我感觉到,他对区块链技术的前沿探索像是在弗吉尼亚州的农田耕作,乘着光轮去浏览创世纪的数字景观。

这次与Bucky的对话涉及广泛的领域。包括从他早期通过《塞尔达传说》获得的灵感、他对EOS社区的想法、对ARM架构的支持,以及EOS如何在「应用程序执行军备竞赛的最后一站」与NatiVM竞争等等话题。

Bucky 是共识级别的区块链架构师和工程师,自 2016 年以来一直在探索裸机和高性能区块链解决方案之间的前沿技术。在拉德福德大学完成计算机科学学士学位后,Bucky 开始在弗吉尼亚理工大学编译器理论和计算机体系结构专业攻读博士学位。 后来他加入了 Block.one ,负责构建下一代区块链解决方案。 Bucky 现在在 EOS 网络基金会担任首席工程师,致力于基础技术的再生和重启阶段,旨在进一步推动EOS成为一流的Web3智能合约平台和区块链生态系统。

从根本上说,区块链存在哪些问题?

就我个人而言,我觉得区块链中存在的主要问题之一是当前解决方案的普遍实用性、延迟问题、吞吐量问题、用户体验等等。这意味着大多数人无法实现很多想法或新的解决方案,因为您拥有的CPU的数量或成本、RAM的价格以及这些类型的问题带来的极端限制。

而我希望看到和钻研的更重要的领域,包括性能、延迟和编译器问题。再次强调,只有最大限度地减少这些东西的成本,才可以拥有精心设计和复杂的智能合约,这些可以带来的进步不仅仅是将代币 从账户a 转移到账户 b,再从账户 b 转移到账户 c这么简单。

在区块链级别还有很多现在不存在的东西,因为代价太昂贵了,或者说无法短时间内实现。因此现有的编程模型非常可怕;你将面临很多精神煎熬,例如我在这里切断状态并保存,然后返回并进行可重入式的操作,该如何进行?

从我们目前所看到的情况来看,不是很好,对吧? 您最终可能会出现错误并损失数百万美元。 我希望看到更容易应对这一层面的问题,更容易建立起这些更复杂、更繁琐的系统,而不是只做最低限度的工作。

您参与过哪些比较著名的项目?

在Block.one,我创建了EOSIO.CDT,EOSVM,并在EOS上做了很多基础性的工作。我还为EOSIO合约做了不少贡献,并且和大多数核心工程师一样对各种开发工作都有涉猎。除此之外,我的博士学位可能是唯一值得注意的事情。我撰写了一些关于编译器理论、计算机结构、综合测试等方面的论文。

从发展历史的角度而言,延迟和吞吐量一直是阻碍区块链大规模采用的大问题。因此,对我来说,DPOS允许EOS和基于它的其他链成为性能最强和可扩展的解决方案类型,因为我们可以比其他链更多地对硬件进行优化。

最初是什么让您接触到了DPOS和EOSIO,又是什么让您留在了这里?

最初最初让我接触 DPOS的事情是它的功利性承诺。我一直想看到的最好的事情是区块链能够普及,我们可以把它作为一种技术产品,让真正的普通人从这项美丽的技术中获益。

如上所述,延迟和吞吐量在历史上一直是关于吸收和采用的大问题。 所以对我来说,DPOS 允许 EOS 和其他基于其构建的链,成为最具性能和可扩展性的解决方案类型,因为我们可以比其他链更多地对硬件进行优化。我们可以对我们想要支持或反对的东西做出正确的取舍或优化。

而以太坊和许多其他链不能,因为他们的模式不是由几个人生产区块,而是有许多人验证区块。所以他们最终将系统设计成能够在土豆上运行。也就是说,它可以在你的智能手机上运行,也可以在国家实验室里的高性能计算的HPC上运行。所以他们真的不能做很多假设。

您刚刚说—土豆?

(笑)是的。这是指非常便宜的硬件。就像一个土豆,里面有电线。

另一方面,EOS 可以说他们将拥有相对较好的硬件。因此,如果我们对这些东西进行优化,我们知道我们可以把CPU成本降到最低,对特定类型的硬件扩展进行优化,降低RAM成本,或者围绕I/O操作进行设计。

无论如何,几乎所有其他链最终都会在这场比赛中跌到谷底。原因是,所使用的硬件是昂贵的、定制的,或远远超出了普通人的承受能力。所以,通过使用好的硬件,我们正在优化现实,而不是理论上的空想。

那么为什么是 EOS? EOS 的核心价值主张是什么,或者您希望做什么?

那么为什么是 EOS? 好吧,它始于一个良好的社区和巨大的潜力,我仍然认为社区存在,它现在只是被埋没,并且有点破灭了,我认为如果我们能够重新开始履行最初宣布的承诺,那我们依然有一个很好的基础来重建。 

在某种程度上,这有点像建立一家公司,并且您已经拥有至少在某些时刻对其感兴趣的人。 还有一个好处是,我们已经有了一些基础,而不必去引导构建一个全新的生态系统。

现在,我认为在重建这种信任方面需要做很多事情。 这也正是目前我们全力做的事情。 只要我们继续做人们期望的事情,并希望让EOS链朝着人们赚钱的正确方向发展,那么其余的一切自然会随之而来。

此外,就我个人而言,我有很多技术方面的未完成的事情,我希望实现的技术方向,它们在我脑海中已经存在多年了。

我仍然认为当前区块链和加密行业的发展格局仍处于令人难以置信的新生和边缘状态,但一旦我们能够缩小这种技术在普及率方面的差距,我们将能够看到该技术的实际好处以及它能走多远。

您提到过 EOS 可能会实现一些最初的承诺。您认为这些承诺该怎么描述呢?

我的感受是:其中一个是对普及度的推动。 当说到普及度时,我指的是区块链为所有人服务,包括为日常的普通互联网用户及加密货币的狂热用户服务。 我仍然认为目前的区块链和加密货币的前景处在令人难以置信的新生地带和技术前沿,但一旦我们能够扩大普及度,我们将能够看到区块链技术的实际好处以及它的未来。

在 Block.one领导时,我认为我们走了不少弯路。 我仍然认为 EOS 有望成为更稳定的链之一,而且它是最具潜力的链之一。 但我也要具体指出:可扩展性、真正顶级的专业环境、以及成为最安全、最有利可图的链都是我希望看到EOS发展的方向。

您居住的地方的加密货币场景或开发者社区是什么样的?

我住在Christiansburg,就在弗吉尼亚州Blacksburg附近。加密场景相当多样化。这里有意识坚定的加密技术拥护者,加密技术阴谋论这,纯粹的技术人员和对于加密技术一知半解的普通人。

造成这种情况的主要原因是弗吉尼亚州理工大学就在这附近,这里属于农村地区,主要就只有农业和科学研究,因此,除了农场耕作或创建区块链之外,没有其他什么可做的。

因为弗吉尼亚理工大学是一所规模相当大的大学,它吸引了相对多元化的人群。 我认为,就大型加密社区而言,在Christiansburg、Blacksburg地区仍处于初级阶段,但这里的人都是坚定的拥护者。 在该地区有些人之前通过 Block.one进入加密社区,还有一些人通过 Block.one 初步接触了区块链领域。 现在他们都开始推动自己的计划和开发,这很酷。

您有什么故事?您的区块链之旅是怎样的?

我在弗吉尼亚州Christiansburg的一个小养牛场长大。 我进入计算机科学领域是因为我在朋友的 NES 上玩了《塞尔达传说》,我非常喜欢这款游戏。 我想,我需要想出一种方法,来为自己创造一个像《塞尔达传说》一样的游戏!

我从小家里就很穷。因此,最初学习编程的很多日子都是用学校的电脑,利用午休或放学后的时间自行学习。 另外,我买不起任何种类的书,所以早期的日子是一场艰苦的战斗。

这些事情发生在小学后期及初中的时候,大概是90年代初到中期。 我上学时,学校有一台大型主机,当时可以连接到弗吉尼亚理工大学。 我利用这台大型主机,玩那些字母和数字落下来的蹩脚游戏。还有一个大的点阵打印机,发出「嘎吱嘎吱」的声音,这在当时是非常古老的技术。

但是后来我厌倦了那台机器,并尝试每天搜索文件系统之后,我发现了一个奇怪的basic解释器,于是开始思考如何用basic语言编程,这就是我学习编程的开始。(笑)

在中学时,学校升级了图书馆的计算机实验室,所以我开始使用新的计算机,并发现QBasic被装在system32文件夹的深处,我开始编写QBasic程序,这很有趣。你知道那时的互联网像是狂野西部,无法找到任何东西。有位老师给了我一本书,我现在仍然保存着,内容是关于QBasic编程。

我尝试做了各种不同的东西。 但问题是编程速度非常慢,所以我想制作《塞尔达传说》似的游戏是不可能的。

所以这就是您开始编译器理论研究的原因,对吗,因为您觉得,这太慢了!

是的,它太慢了,这可能就是真正的原因,因为我一直希望推动性能变得越来越强。我有点走火入魔,从QBasic跳到了汇编程序,因为当时电脑上唯一的东西就是微软的汇编程序,当时电脑上还没有C语言编译器或C++编译器,所以我想,就先从基础的汇编开始。然后我开始写汇编,不久之后我发现了Linux,并发现它有C和C++编译器,于是开始学习C,并沿着这个路线前进。

您的家人如何看待这一切?

他们并不认为这是一件好事。 认为我只是在做的一件书呆子才做的事,他们经常说: 

有一天他会长大,做真正的工作;

他只是三分钟热度;

别担心,这只是一个阶段,他会长大的…

然而,我一直没有改变,好像从来没有长大一样。

高中毕业后,我为我父亲工作了四年,我几乎把所有的钱都存了起来,然后自己读完了本科,然后马上进入了研究生阶段,这是一条奇怪的成长道路。

您在哪里读的本科?

我在拉德福德大学读的本科。离家乡Christiansburg大约5分钟路程。

您是如何从计算机科学专业的本科生直接进入博士生阶段的?

当我读本科时,我最终结识了计算机架构教授和编译器教授(Ian Barland 博士和 Ned Okie 博士)。教授们说,你需要继续下去,你想过读博士吗?我说不是真的吧?,我非常吃惊。作为一个来自弗吉尼亚州的农场孩子,我觉得得到的已经足够了,与我家里的其他人相比,这已经很疯狂了。他们说,是真的,你应该读博士。所以这真的是非常刺激的一件事。

所以我去找到了在弗吉尼亚理工大学的架构和编译器方面的教授,并进行了一次面试,他说:好的,你能在星期一出现吗?

我说:好吧,很酷,没问题!

那么,三年来,您在编译器理论研究上投入了全部精力?

是的。 还有计算机架构,因为我所做的另一部分工作是设计处理器扩展,为不同类型的古怪架构设计代码转换和优化等。

好的。既然您提到了编译器理论,那就给我们简要介绍一下编译器理论。

(大笑)

好吧,但说真的,读编译器理论博士的实际成果是什么?

我关注的一件事是如何在超嵌入式物联网框架中,为能量收集系统或严重电源故障的系统问题进行计算,并确保在某个点上程序得到完全执行。 这也是我当时去和 Dan (Larimer) 交谈的另一个原因,我看到了超嵌入式系统和智能合约执行层的某些相似之处。 自从那次会面后,我对很多东西都有相同的愿景和需求。

您能否解释一下什么是电源故障,以及为什么这个概念可能与区块链有关?

如果你有一个能量收集系统或任何一种电源会随机切断的系统,当你恢复系统时,系统运行将从头开始,如果你没有足够的能量继续维持计算进行,将会导致正在发生的计算中断及失败。

因此,这些类型的问题是,很多这些小型传感器或纳米物联网设备将在这些程序流上运行,你不希望计算被切断,那你会陷入就像西西弗斯一样的状态,不断地试图把大石头往山上推。然后没到山顶就会滚落,永远也无法把巨石推上山顶,所以你永远无法真正达成你的目的。

这就是所谓的停滞。这是一个大问题。所以我用了三到四种不同的方法来解决这个问题,有些是用硬件,有些是用完全由编译器指导的方法。

我的目标是希望将其中的一些方法带到 EOSIO 中,但我们从未真正做到这一点,真的是因为要做的事情太多了,没有额外的时间。 此外,我在弗吉尼亚理工大学设计了许多特定领域的优化,我一直想带来这些优化,但也没有完全实现。

因为对我来说,真正可以做的有形的事情是,创建存在于区块链上的运行时间更长的流程。开始在区块链上做更多正常类型的开发模式。在这些真正抽象的模型中,每个人都必须不断思考这些非常抽象的模型,比如我只有 0.5 秒的时间来做这个计算。 我怎么做?我该如何在心里把这个程序组织起来,并在非常小的时间窗口中有效地运行呢?

我还想要做的一件事是,允许这些运行时间更长的计算完全自然地存在于程序中,工程师无需做任何额外工作。

因此,如果我们查看可用于运行程序的小的能量缓冲区及智能合约执行的停滞,它们存在很多相似之处,都会在控制流期间突然被「随机」切断。 对于智能合约,通过明确的状态模式并将状态保存在表中,或通过操作传递返回,并尝试创建可重入的操作或长期运行的逻辑操作,可以在不同程度上有效地解决这一问题。

那么,为什么要在编译器上下功夫呢?

我只是喜欢底层级别的系统,还有编译器。如果你是一个真正喜欢底层级别技术的人,那你要么选择操作系统研究,要么选择编译器研究,我选择了编译器,因为对我来说,它们就像一个神奇的东西。可以把这个人类可读的东西,优化成了一个令人难以置信的东西,这很酷。

聊聊您在EOSIO CDT(合约开发工具包)的工作,以及为什么您认为它需要进行改造。

EOSIO.CDT现在在Mandel中只是CDT,是一个合约开发工具包,包括一组工具链、编译器链接器、创建库的所有功能、EOSIO Web Assembly (Wasm) 的相关功能、优化功能、用于生成特定于 EOSIO 的代码的语言扩展、对某些区块链结构进行抽象,用于调试和测试的库支持,以及用于在EOSIO区块链上工作的实际基本库。

因此,当我创建CDT时,我为它设定了几个目标。这些目标是要达到令人难以置信的性能、安全、可靠、以及易于使用,我真的很想在社区参与方面发挥更大的能力。

CDT也带来了几个大问题。首先,我不希望它只是C++。在当时,大家都说C++是唯一存在的东西,这是一个很大的烙印,所以我不得不接受这一点,但我更希望我们可以在某个时候,把项目迁移到更抽象的地方。其他问题与实用性和易用性有关。同样,我们也没有达到目的。因为当时的重点不是工具开发。

CDT的大部分工作,都是我在三年的空闲时间里完成的,所以在这个领域做任何事情都很难有任何动力。我一直在努力追赶,而不是只想把这些基础的事情做好。

…我认为人们只是普遍意识到,如果你有一个生态系统 ——它就是生态系统,对吗?它不只是你提供的一个小部件,然后仅此而已。你必须开始建立起这个生态系统,如果你不这样做,那么事情就会快速的蒸发掉。

所以您一定很高兴能成为EOS网络基金会的一员,并且能够与一个希望您真正投入精力的团队一起在这方面进行第二次开发尝试。 这对您来说意味着什么?

是的,我非常高兴。当我来到EOS网络基金会时,我一开始与Yves(La Rose)谈的主要事情之一,就是这个重生和重启的概念。改正我们做错的事情,或者继续开始第一次做的时候没有做完的事情,有点像有一个平行的宇宙,一切都在朝着一个好的方向发展。四年后,我们会处在一个完全不同的地方,而不是现在这样。所以我想,EOS网络基金会绝对是一个值得去的地方。我非常兴奋地看到,能够真正拥有大量倾听者,而且人们同样对我以前关注的事情感兴趣,前景非常明朗。

生态系统应该包罗万象,我认为人们普遍意识到,如果你有一个生态系统,它就应该具备生态系统的样子,你提供的不仅仅是一个小部件,然后仅此而已。你必须开始建立起这个生态系统,如果你不这样做,那么一切就不会发生。这就是我们要走的路。

我在Block.one工作期间想出了一个比喻,我现在仍然喜欢这个比喻;如果你去建造世界上最快的汽车,但没有人驾驶它,那么你实际上是建造了世界上最慢的汽车。它压根不会动。所以对我来说,这就是问题所在。我们专注于许多其他辅助性的东西,而这些东西的吸引力或效用有限。

那么,请聊一下您提议的CDT的后续版本,ANother TransLator Environment and Runtime,或称为ANTLER

ANTLER 和 CDT 之间的最大区别之一,它不是一直只用C++。 它仍然具有 C++,但它也将具有 C、Go 和Rust 等立即可用的编程语言。 Rust 可能会很快出现。 一段时间以来,我一直在幕后尝试相关开发。

所以,关于ANTLER,我希望潜心设计一个工具生态系统,以及一种这样做的方式,在这里你可以有一定程度的,我不想说中心地位,而是一套有效构建的东西,供人们购买。

仅仅因为去创建一个编译器,对我来说这还不够好。必须做一个非常好的优化编译器。我认为任何一个团队想要要实现它都要付出意想不到的努力。

我们需要这些,但之后会发生什么,他们需要调试器的支持,需要分析器的支持,他们需要保障相应的生活品质,这意味着他们将不得不去自己构建它们,这又是一个完全的噩梦。

所以 ANTLER 的一大目标是抽象代码生成、链接、优化器和调试器、分析器支持等概念。这样这些较小的团队就可以轻松地创建一种新语言,而不必担心其他任何问题。

它还会有一个打包系统和更简单的构建系统,以抽象出这些语言,允许轻松构建更复杂的系统,并希望通过社区拥有的软件包,向开发者提供更多的代码。

今天更大的问题之一是,智能合约开发人员必须非常熟悉 C++,这并不容易。 整个语言有很多陷阱,你很容易遇到问题。 因此,通过扩展支持的语言集,您就有更好的机会让开发人员更了解其中一种语言,并理解与之相关的陷阱和缺陷。

如果他们已经是某种语言的专家了。那么你就能尝试抓住他们擅长的任何领域并加以利用,那么他们就有更好的机会,创建一个非常多样化的智能合约生态系统。与之相反的是,他们掌握了某种语言的知识,但却必须适应成为Wasm、用于调试的dwarf格式、静态分析和链接的专家。

不是基础语言专家所面临的更大问题之一,容易造成错误并导致损失数百万美元。 所以我认为,归根结底,这方面的目标是允许人们构建这些系统,购买调试器、分析器、高度优化的编译器,并抽象出他们不关心的部分。 他们唯一关心的是它的基本语言方面。

一旦你做到了这一点,事情就有希望从此开始变得更加容易,新开发者进入时,可以了解他擅长什么语言?如果擅长OCaml,社区编写了一个OCaml编译器。把这个语言规范写成OCaml,然后推向编译器,新开发者就可以开始工作了。这是ANTLER的最高(或者说崇高)目标。

说到架构,您设计了EOS-VM,它使用Wasm(Web Assembly),我听说您也想在那里创建一个新系统?

是的,所以我想做的事情就是我所说的NatiVM runtime,它可以有效地使用x86-64,(AMD64是它的另一个名字)作为中间表示,就像我们现在使用Wasm一样。这是目前在英特尔和AMD设备中使用的核心架构或指令集。

转向x86-64有几个原因。一是要利用近40年的发展。从开发人员的角度来看,我们不需要在所有这些不同类型的工具、静态分析、动态分析和分析工具上重新进行研究。我们可以购买行业标准技术。所有这些东西都已经写好了。我们不需要再去重新研发。我们可以免费继承它。这是一个很大的组成部分。

另一个组成部分是Wasm的基本性能问题,以及我在Wasm中发现的一些问题,这些问题与标准的前进方向和动力有关。

Wasm 的另一个问题是我们可以从中获得的性能上限,这取决于编译器、现有的工具链,也取决于我们能用这种抽象的架构做什么样的总体限制,以及我们能从中产生的最低限度。

因此,对于x86-64,它非常适合基于寄存器的三地址系统模型,这意味着指令集(最大)具有一个结果,即操作数1和操作数2,以及利用寄存器和内存位置的多种寻址模式。Wasm符合基于0地址堆栈的系统模型,因此它们之间会丢失细节,而且还有一个事实,因为基于堆栈的系统,寄存器分配很困难,在那里进行任何转换都是一个非常复杂的分析,而且由于别名分析问题(缺乏类型信息),您仍然无法真正达到一定的性能水平。

问题在于,对于Wasm而言,区块链技术的发展速度太快了。

那么 Wasm 不使用registers吗?

是的,对于Wasm,它的所有内容实际上都是一种内存操作。它要么是对指令编码的即时操作,要么是一个内存位置,其本身要么是内存地址,要么是合成堆栈或全局索引。所以在x86-64中,我们有这些叫做registers的东西,它是一个周期的操作,可以向其中添加东西,从中读取,写入。这就是现代体系结构的高性能来源(同时也是不得不用新数据填充这些registers,并且没有为它们进行最佳分配的地方,可能会失去性能)。

因此,利用系统的registers始终是一件需要优化的大事。问题是Wasm对此没有概念。因此,最终发生的事情是,这些事情最终变成了内存读取和写入,这没有涉及到很多关于编译器的技术细节以及为什么他们不喜欢这样,最终导致了这些事情的优化问题。

另一个问题是,就获得任何这些扩展而言,标准本身的发展速度非常缓慢,所以这是 Wasm 内部或我们对 Wasm 的采用的另一个持续存在的问题。 这些扩展可能是 SIMD、异常、动态模块等。

一直以来,我们都有这样的心态,认为我们在某种程度上接近vanilla Wasm就能获得很多。问题是,我们总是不得不等待规范的更新和批准,并继续前进,即使如此,有些东西甚至没有在规范中,但出于性能的原因,出于开发人员的原因,出于节点操作员的原因,我们真的希望有这样的规范。

有一系列我们应该做的事情,但我们不能做,因为这些事情不是Wasm的一部分,如果我们不得不继续等待这些事情,那么区块链本身将在我们实施这些事情之前就消亡了。问题在于,区块链技术的发展速度对于Wasm的发展速度来说太快了。

所以您提出的NatiVM的解决方案将是一个新的标准?

是的

您能否简要介绍一下 NatiVM,我也很好奇您如何看待它在整个区块链行业的应用。

最重要的事情之一是,它将是一个由我们提供的开放标准,然后希望在未来其他人对其发展方向有投入和影响。

更重要的是,它将是x86-64的适当子集。在未来,我们(希望)也会有确定性ARM支持,但现在要关注的只是确定性的x86-64。任何构建工具或构建库支持的人,他们不必去编写或思考这些指令是如何被编码或解码的,已经有现成的东西了。他们只需购买现有的用于x86-64的工具包,用于运行时间和验证系统。只有基础编译器和运行时需要关注这个子集是什么。二进制格式也在范围内,比如这个标准是什么,这个应用程序本身有哪些部分,以及我们想要或想要维护的不同部分。

所以这是一个组件,然后第二个更多的是VM(虚拟机)层。 内存管理是什么样的? 内存管理系统如何以一种非常有效的方式与操作系统协同工作? 我们怎么能保证呢?

我为应用程序开发人员提供了安全方面的保障。 例如,像自动化非常低成本的canaries堆栈之类的东西,所以如果他们写错了一些东西,它应该会导致失败,那么他们就不会受到在线攻击,或被人骗取造成经济损失。

我们可以保证执行root level级别的确定性。

您在NatiVM方面进展到什么程度,是否有了清晰的实现规划?

是的,目前我视野非常清晰,一切尽在眼前。但我脑海中有很多零碎和抽象的东西,我仍然在弄清楚V1版本中会包括哪些指令。

我知道我想要什么。 但是,我也想包括一些初始的SIMD。 所以,我正在权衡利弊。 Wasm 的另一个问题是诸如 SIMD 指令之类的东西,这些指令在加密函数中大量使用,我们可以使用 Wasm 实现的最大位宽是 128 位。 有「标准」的英特尔或AMD扩展,如SSE,,它们有 128、256 和 512 位操作。此外,还有区块链可以利用的其他特定扩展。

我们的目标是:我们应该能够购买很多非常优化的加密函数,人们花费了大量时间,为这些非常深奥的x86-64 SSE手写指令。这样做对性能和实现的可靠性有很大的价值。因为这些加密函数已经被编写和测试过了。

我看到的情况是,如果一种语言确实支持这些类型的东西,那么会以一种抽象的方式支持它们,这意味着该语言必须将它们作为特殊的东西公开,然后围绕这些东西有很多工作要做。然后是下一个版本的剧变,它必须支持这一点,整个过程会有很多的反复来回。

我没有提到的关于 Wasm 的更大问题之一是确定性。 我们无法真正保证我们拥有的大多数「后端」的确定性,也确实无法保证。这是因为我们没有验证在物理机器上运行的生成代码。但是 NatiVM 的一个奇妙结果是,我们验证 x86-64 作为纯粹的确定性 x86-64。这意味着我们可以在执行的根源级别保证确定性。

我将NatiVM 视为应用程序执行军备竞赛的最后一站,我们仍有其他方面需要改进的方面,但我们可以确保将执行成本降至最低 。

因此,考虑到这是针对区块链,支持SSE和其他扩展似乎是一件大事。

是的,所以这些指令通常在计算机科学中称为向量指令。 它们允许非常大的数据集,并且您可以有效地对其中的多个数据块执行一项操作。

如果您将四个64位值打包到256位寄存器中,它可能会执行一个操作,但可以使用相同的操作同时对这四件事进行操作。这也是GPU的工作方式。GPU 将有效地对一个非常大的寄存器执行一项操作,而它所操作的对象是一个大矩阵或向量。

所以这些指令在密码系统中非常有用,因为你做了很多向量操作。 有了这些,您可以将性能提高 4、5 或 10 倍。拥有这些指令有很大的用处。

其次,你有英特尔,随着我们向前发展,向他们的指令集中添加越来越多的加密指令,这些指令永远不会被添加到像 Wasm 这样的东西中。

假设基础硬件本身并不支持指令,那也没啥问题。 我们将有效地注入将接管该操作,并模拟语义的「指令」版本,如果硬件不支持 512 位操作,那也不是问题。 它可以支持 256 位操作。 我们只是把它们分成两半,我们还是可以继续执行操作。

另一件需要注意的事情是,编译成常规x86-64指令本身就是一件大事。我认为,要让人们看到我们能够编译应用程序并运行它们,其开销与在这个NatiVM管理系统之外运行的纯本机构建的代码相当,并不需要太多时间。

也许您可以多谈谈 ARM 架构,以及如何将 x86-64 转换为二进制。

好。 很明显,ARM 是一件大有前途的事情,它会在某个时候发生。 我认为还需要几年的时间,但我认为人们不希望看到我们只能在 x86-64 架构上运行,对吧? 这是相当局限的。

因此,在确定性 x86-64 应用程序的验证阶段,我们将首先验证,然后使用恒定时间「shotgun」二进制重写器将 x86-64 转换为 ARM64。 这将是一个相当愚蠢的重写器,因为我们只支持一个子集,并且可以做出比通用系统更多的假设。Alexis Engelke等人展示了从x86-64到ARM64的转换之间有很好的优化亲和力,性能损失最小。

这似乎是个大问题,这是否在某种程度上为EOS提供了未来?

应该是这样的。关于NatiVM,我认为它是应用程序执行军备竞赛的最后一站,我们在DB和其他方面还有待改进,但我们可以确保将执行成本降到最低,我们可以自己拥有标准,以便随着时间的推移进行适应和改变,此外,确保我们有与其他架构的兼容层应该有助于未来的EOS。

您对那些有兴趣在区块链上构建应用的人有什么建议?

我给出的建议会比大多数人预期的要高一些。 首先专注于正确构建应用程序。 也就是说,确保应用程序的整体逻辑是可靠且经过良好测试的。 在您知道智能合约和 DApp 代码是正确的之后,您可以专注于针对 CPU、RAM 或 NET 问题,并对其进行优化。

但是,首先也是最重要的只是启动项目。很多人对我说:

我有这个好主意,但是…

这些人是优秀的工程师,但区块链开发的特殊性使他们甚至无法启动项目。所以,要多问问题,多做尝试。

和您谈话真的很愉快,Bucky!为未来的EOS干杯!

这是我的荣幸; 能够谈论其中一些事情很有趣。 我认为 EOS 将有一个非常成熟的未来(笑)。


通过EOS和EOSIO世界级开发人员的眼睛,我们将进一步深入探索区块链的奥秘。如果您喜欢这一期《共识架构师》,欢迎您分享至社交媒体让更多人看到。

您可以在点击下方链接阅读架构师共识系列中的第一篇文章:

快来加入我们的社交渠道,参与到对话中来。 请关注我们的博客,并加入我们的邮件订阅列表,第一时间看到相关文章。


关于EOS 网络

EOS网络是区块链3.0时代的典范之作,由EOS VM提供支持。EOS VM是一个低延迟、高性能和可扩展的WebAssembly引擎,能够近乎无感的实现确定性交易执行。EOS网络专为Web 3设计,致力于实现最佳的Web 3用户和开发人员体验。EOS是EOSIO协议的旗舰区块链和金融中心,并通过EOS网络基金会(ENF)作为多链协作和发展公共基础产品的工具,进一步完善基础设施,驱动EOS快速发展。

关于EOS网络基金会

EOS网络基金会是一个非营利性的组织,旨在倾听社区声音、传达社区意愿并扶持社区优质项目发展,成为EOS社区的信息共享桥梁,并为EOS生态提供资金、技术、运营、未来规划、生态构建等关键基础设施支持,进一步发挥EOS作为世界速度最快的治理型区块链的全部潜力。