Kunta:一个新的区块链开发生态系统
今天,我很高兴能更深入地了解Kunta平台所提供的功能(即使我们已经为此工作了多年❤)。
对于那些有兴趣阅读我们的论文或浏览代码的人,可以在kunta.io上找到它。
我于2018年9月在佐治亚州亚特兰大举行的区块链技术会议上介绍了这项工作。这是该视频链接(在图片下方):
在此处阅读全文:https : //arxiv.org/abs/1812.08073
2015年中,我在美国一家领先的保险公司从事研发工作时了解了比特币。有一天,他们在我的桌子上放了一个文件夹,里面放着原始的比特币纸,让我研究“这件事”,并研究公司是否可以利用基础技术来获得竞争优势。所以我把它带回家读了。
我不会说我“从来都不一样”,这些天我往往会听到很多,但是我会说,我开始想到的是从未有过的创新。
因此,开始了我对加密货币世界的冒险。如果那年我只投资了比特币,那是另一回事了。
在旅途中,我开始询问该协议的非常常见的问题,例如:
- “价值从何而来?”
- “网络真的真正安全吗?”
- “为什么选择使用这种方法达成共识?”
- “谁真正决定了代码会发生什么”?
这些研究使我多年来研究了几种基础架构协议(实际上包括痴迷于协议中的每一行代码,并阅读所有开创性的研究论文)。
在这项工作中,我开始注意到一些趋势。另外,我需要提及的是,这是我当时的工作,我的雇主希望我领导的区块链项目的这一阶段仅持续了大约6-8个月。但是,这足以开始他的职业生涯。
问题
我注意到的问题中心化在:
- 开发者不对称
- 用户友好度
- 代码复杂度
- 项目灵活性
- 具体的设计选择
开发者不对称
让我们从开发者不对称开始。
问题是“谁来决定协议的设计选择实际上是什么?”。
事实是,只有很少一部分人真正做出这些决定。这是由于多种原因造成的,但我认为这对开发人员是一个障碍。我会听到开发团队谈论公众“接受”的情况,这是关于开源代码的有趣概念。当然,开发人员说,“只需分叉代码”,然后根据自己的喜好对其进行编辑,这使我想到了下一个问题。
代码复杂度
例如,如果我只是想更改以太坊或比特币协议中使用的哈希函数,则必须以某种方式更改代码,并且可能会破坏某些内容。
对于一个强大的计算机科学家而言,阅读代码并不困难,但是平均而言,更改给定协议的这种简单属性所需的工时比在我研究的项目中要困难得多。
对于大多数外行来说,区块链项目似乎已经很困难,甚至工程师们也无法理解,以便针对自己的用例定制解决方案。
我们在隐性摩擦之上加上的摩擦越多,我相信我们就越会阻碍整个空间为定制用例开发。
用户/开发人员友好度
另一个问题是用户友好性,这些天来很多作家都在讨论它的用户友好性,我几乎不想覆盖它。例如,如果我想为以太坊(Ethereum)或比特币(Bitcoin)启动并运行一个环境,则必须删除代码,开始自己的网络,或连接到一个网络。
用一句话来说明这似乎很简单,但是每个尝试这样做的人都会证明这样做很沮丧。
我确实看到随着时间的推移情况会越来越好,因为人们/项目倾向于越来越少地将重点放在核心协议上,而将更多的精力放在开发周围的应用程序上。但是,这只是在临时解决问题,而不是真正解决问题。我们还看到像亚马逊这样的公司正在尝试“区块链即服务”。
其他能力
上面的几句话使我开始思考这些系统的设计并非出于友好性,而是从其源头考虑可定制性。
然后,您有几个设计决定,我开始对此提出质疑。例如,我在另一篇专门的文章中介绍了智能合约与链功能,但这是一个摘要。
传统上,“智能合约”的表现是增加到一条链上的逻辑。受比特币启发,我们的信念是应该在链开始时就知道并定义网络上的逻辑。我了解到比特币在生命周期中一直在“升级”,但是使用新逻辑升级链,并在部署之前在其中设计逻辑是两个不同的问题。
对于Kunta,在启动完整网络之前,首先要设计链逻辑。Kunta还支持升级链的运行时。
可定制性
这就是Kunta v1的架构,定理证明者从未完成,但是其他所有事物都处于“稳定”状态。
从项目开始就考虑了Kunta的可定制性。我们不仅致力于将开发人员工具构建到平台中,而且平台的设计是高度模块化的。我认为这是Tezos之类的项目做对对错的事情。它们的模块概念类似,可以在javascript中扩展。
关于块存储,目前我们的数据库是原始平面文件,但是它本身是有意可交易所的,而不是增加软件依赖性,从而降低了开发人员的友好性。
为了记录,如果您有写代码的技能,那么用代码写的任何东西都是“可交易所的”,只要说出来即可。
对于任何见解或查询给定链,我们在简单的图形数据库中使用三元组存储-这可以是n-store。我们存储在图数据库中的初始信息很简单,但是可以进行有效的查询。最初,我们店谁撰写了哪些块,有什么阻止交易存储在和帐户什么针对性的另一个帐户等,这本身是高度定制。
可定制性涉及虚拟机,共识和协议的其他方面。
当然,如果没有可自定义的交易,那么灵活的区块链协议将是什么。但是,我们的交易方式相同,但是发展方式不同。
我们利用链功能和智能合约模板。
链功能是创世模块和链配置中包含的模块。
因此,在链上触发某些状态时,将调用这些可验证的逻辑集。在设计智能合约模板时,系统中甚至不会计算/使用不遵循这些模板的合约。
智能合约模板集是在链创建时定义的,并规定了链可以执行的逻辑类型。
执行的任何后续事务都必须遵守这些模板,否则甚至不考虑执行。如果交易格式不正确,该交易也会被丢弃。
编程语言注意事项
在2017年项目开始时,我们开始开发自己的语言以开发类似于以太坊的“智能合约”。但是,随着Rust(编程语言)的流行,社区变得越来越大。同样,Web Assembly也变得越来越流行。
使用这些资源,由于这两种语言已完成工作,并且社区规模比我们大,因此使用我们自己的语言进行开发的速度变慢。
通过这些技术,我们已经用用Rust编写的WASM模块替换了v1中的虚拟机。
这类似于某些项目,例如Substrate,我将在后续文章中介绍两者之间的区别。然而,基材将非常选择的逻辑暴露给成交量筒纸组装模块,Kunta的目标是针对给定链的多个组件暴露更多的逻辑。
我们还将v1协议使用自己的集成开发环境。
IDE具有用于编译的语法编辑器,用于节点发现/交互的映射以及用于协议试验/管理的其他一些资源。用户可以在本地或从工具内部在云中设计协议,测试,部署和监视其链设计。
自从最初编写此文件以来,我们已经完成了较新的协议AOS aos.kunta.io
我们很快将在AOS上撰写更多内容。