如何在区块链上构建实际的东西
扫描二维码
随时随地手机看文章
使用分布式账本技术(DLT)与“事物”进行交互得到了广泛的关注。用例吸引了媒体和企业客户的大量关注,并且我们中的许多人被吸引到DLT平台上开发应用程序,因为它承诺提供一个全局信任层。事实证明,对于我们中的许多人来说,用现有的技术构建生产级应用程序几乎是不可能的。
实际应用程序开发需要三个支柱:可伸缩性、私密性和简单性。如果没有任何单独的支柱,应用程序开发就会变得更加困难,从而迫使人们沿着提供所有这三个支柱的道路前进(例如传统的计算或私有DLT系统)。然而,这三个支柱确实构成了一个频谱,每个应用程序在这些梯度上都有不同的需求。
首先,让我们定义这些术语。
可伸缩性
可伸缩性是一个模糊的术语。一般来说,你的应用程序必须在用户认为可以接受的时间范围内满足他们的需求。对于大多数实际应用程序,这意味着用户不能等待5到60分钟才能完成操作。
隐私性
我将其定义为仅对打算拥有它的人可用的信息。大多数真实世界的应用程序都需要一些隐私。例如,您不希望向所有竞争对手传播您的整个供应链的购买。也就是说,在实际应用程序中通常也需要某种形式的公共数据。例如,能够向购买者证明你的整个供应链是可持续的。
简单性
这可能是列表中最模糊的术语。但是,这里我将重点介绍开发人员的简单性。从概念上讲,简单地构建供应链是很容易的,但是深入到细节中,实现就变得复杂了。我将在这里集中讨论实际的开发,并讨论构建者如何实际构建某些东西。
我将以供应链为例,因为它是DLT系统最常被谈论的应用之一。概念已经在这个领域得到了很好的定义,许多企业已经在构建PoC,甚至进入有限的生产模式。
Strawmen:
我将介绍hyperledger和ethereum,并通过实现一个供应链应用程序进行讨论。 该供应链跟踪来自奶牛场-》工厂-》批发商-》零售商-》客户的冰淇淋。
这个高度简化的供应链可以很好地说明构建真实跟踪的复杂性。
在供应链中的任何位置,每个参与者(如零售商、批发商)都关心导致其所在供应链部分的历史。例如,工厂关心牛奶的来源,以及在去工厂的路上是否保持在一定的温度下。批发商关心的是工厂和冰淇淋的处理,以及所使用的奶制品的产地。
在最边缘的地方,顾客关心的是所有这些数据的汇总视图,以表明她的冰淇淋是否保持在适当的温度,乳制品是否合乎道德来源,等等。
以太坊
一般来说,现实世界的应用程序是关注以太坊的两个方向之一。交易要么发生在链外(侧链、加盖印花服务等),要么使用新兴的ERC721标准来表示不可替代的代币(NFT)。
从概念上讲,表示供应链的最简单方法是为链中的每个项目使用不同的不可替换代币。这是说每个乳制品公司将创建一个代币为每个乳,然后将其聚合成一个新的代币或简单地从所有这些代币中选一个交给工厂。
或者,我们可以在卡车上启动代币,并为一卡车的乳品提供一个ERC721代币,其中包含关于哪些农场对罐车中的牛奶作出了贡献。
在以太坊上,一个代币来自一个智能合约。每个货运公司要么必须部署自己的智能合约,要么必须依赖第三方部署智能合约。这个智能合约需要表示关于牛奶的一组数据,因此它将使用ERC721的“tokenMetadata”字段并链接到信息。ERC721本身并不以任何方式公开更新元数据。你需要把它添加到你自己的智能合约中。
确认时间超过6分钟,每个ERC721代币的部署成本至少为0.20美元,目前的最低成本为100美元/ETH(对于以太坊来说这是一个慷慨的数字)。对合约的任何更新都需要额外的6分钟,花费在0.01美元到1美元之间(很有可能,在正常情况下)。此外,为了生成或确认交易、所有权等,任何生成或消费客户端都需要联机,理想情况下,每个单独的方都有一个受信任的完整节点。
这不是一篇关于完全部署以太坊解决方案的文章,所以我将在这里停止描述。希望这足以说明这个过程、成本和复杂性。在这种情况下,可以保持某些数据的私有,因为元数据链接自ERC721代币,并且可以保存在私有存储中。漫长的等待时间和高昂的价格使得该系统在现实世界中难以实现,部署智能合约的复杂性使得在所有相关方之间很难达成一致。
Hyperledger
Hyperledger更类似于带有定制代码的共享数据库,而不是通用的DLT系统。下面是对移动部分的一个很好的概述:https://hyperledgerfabric.readthedocs.io/en/release -1.4 network/network.html。从最高级的意义上说,Hyperledger是一种各方都同意他们将成为网络的一部分的系统。然后,网络使用可保存历史记录和更改的自定义代码跟踪一般的“业务对象”。系统的每个部分都需要被参与者定义为Hyperledger,它对数据的存储方式或交易的发生方式没有任何意见。
一个比我聪明的人曾经说过:“如果你能让所有相关各方都同意使用Hyperledger,你可能不需要一个区块链。”从表面上看,部分原因可能并不明显:供应链不是从源头到目的地的单一路径。今天的公司在各种供应链中进行交互,因此必须参与许多不同的联盟链,或者开发一个几乎所有人都参与的总体系统(很像一个公共的区块链)。在我们的冰淇淋示例中,奶牛场将与许多不同的工厂交互,等等,因此与这些系统交互的需求也不同。如果一个共同制度实际上并不普遍,那么它最终会失去很多好处。
让供应链上的每个人都在一起,并同意交互数据格式和代码,让一个值得信赖的人运行节点系统验证交易和分类帐。
Tupelo
Tupelo是为单个对象构建的公共DLT系统。Tupelo引入了链树的概念,链树是具有所有权、所有权历史和与该对象关联的任意数据的单个对象。Tupelo是从头开始构建的,用于处理这种场景。它的特点是更简单,因此更便宜,具有低交易成本的共识算法(目前建模为每笔交易0.0008美元)。它是快速的,并支持离线功能。
ChainTrees在概念上类似于以太坊上的NFTs,但是定义了数据与对象关联和更新的方式。此外,链树内置在Tupelo中,不需要智能合约进行部署。
在冰淇淋的场景中,每个单独的团队将在供应链中移动时控制ChainTrees,并建立一个历史记录,最终为客户描述,可以根据需要进行总结。双方唯一需要达成共识的是在他们之间转移链树的私有部分。 Quorum Control正在为私有数据交换构建一个这样的服务,我们希望还会有很多其他服务。
所以奶制品公司会生产一棵链树来生产一定量的牛奶。奶制品公司将把链树的所有权转让给卡车公司。每辆卡车都有自己的链树,它将嵌入每个奶牛场的链树,生成一个包含所有奶牛场信息的链树。当乳制品进入工厂时,卡车将链树的所有权转移到工厂。这家工厂每一桶冰淇淋生产一棵链树,并将所有权转移给运送给批发商的卡车,后者可以在运送给零售商时添加有关冷链(卡车的温度)的信息。在零售商处,每个桶的链树都将其所有权更改为零售商,然后零售商可以将其出售给客户。顾客在每个浴盆里都有完整的历史,一直可以追溯到各个奶牛场。
可以访问链树的用户可以决定公开(或不公开)哪些信息,但是他们不能修改或添加额外的数据,除非他们是所有者。即使链树的所有者也不能从对象中删除历史(尽管他们可以决定提供多少可用历史)。通过这种方式,供应链可以呈现一个供消费者、审计人员等使用的公共端,同时保持一个他们可以用来彼此进行交易的私有端(例如,用于海关文件、法律合同、发票等)。这些信息是防篡改的,但最终并不一定要对用户可用。在任何一个步骤中,都可以证明没有可用的信息。通过这种简单的方式,可以围绕可见性、可接受性等创建复杂的规则。
图形表示:
Tupelo客户端非常简单,使用Tupelo感觉更像是使用API,而不是与智能合约交互。您只需在链树上运行一个交易。交易列表非常小。此外,虽然定义了与元数据交互的方法,但是数据是任意的,不需要各方之间的协议就可以开始使用非常真实的生产应用程序。
结论
我们做了大量的用户研究,不断发现几乎所有涉及交易的项目,从加密货币(数字资产)到房地产投资信托(REIT)管理,都遵循类似于供应链的模式。任何时候都有关于对象的所有者和数据。对象从一个所有者移动到另一个所有者,并在整个生命周期中积累数据。有时对象想要完全公共化,有时他们仍想要私优化,但在此基础上我们能够相信信息没有被篡改,即使是添加了适当的东西,也并不能修改为新一代的应用程序。这类应用程序一直被炒作,并很有前途。