您现在的位置是:首页 > RChain > RChain资讯网站首页RChain资讯

RCAST29:关于节点的一切(上)

  • RChain资讯
  • 2019-06-04
简介克里斯·博斯科罗(Chris Boscolo)、凯利·福斯特(Kelly Foster)和格雷格·梅雷迪思(Greg Meredith)讨论了RChain的底层架构以及主网上面将会储存什么。

  克里斯·博斯科罗(Chris Boscolo)、凯利·福斯特(Kelly Foster)和格雷格·梅雷迪思(Greg Meredith)讨论了RChain的底层架构以及主网上面将会储存什么。

  
对谈的文字记录:
 

  格雷格:今天的RCast是“All Things Node”我将让Chris 和 Kelly主导,因为作为项目经理和产品经理,他们是真正能推动RChian的人。Kelly,我希望你能稍微谈一谈节点,并给任何有兴趣启动节点的人一个概述,以及他们在启动节点时可以期望得到什么。

  凯 莉:当然。从技术和节点组件的交付角度来看,节点是访问RChain网络和平台的主要部分:在现在的开发中——我们正处于水星版本发布的预发布阶段——节点组件已经基本完成。这里有一些特性:添加用户改进的滞后工作会在在水星的代码完成之前进行,但是很大程度上节点团队有机会进行优化,这对于像RChain这样庞大复杂的项目来说是一个非常好的地方。

  我们本周发布了RNode 0.9.5。它是对节点的一些用户特性改进以及一些优化工作。在后续的版本发布中会持续优化,以促进水星的完成。

  我们非常高兴也很喜欢节点。在做出与优化相关的优先级决策方面,我们也从RNode的用户那里获得了很多反馈。我们社区中有一个优秀的团队每周都参加节点测试会议。时间为每周四UTC时间1400点。

  我们很高兴有机会不仅看到他们使用节点,而且听到他们谈论可以让它变得更好、更容易、更好的事情,或者他们试图使用节点在平台上作为开发人员或验证来构建dApps的方式。我想,当我们考虑如何继续在节点上迭代,并使它成为水星版本的最佳版本时,用户的声音是我们开发团队学习经验的一个非常重要的部分。

  格雷格:Chris,你有什么要补充的吗?

  克莉丝: Greg,还有很多要补充的。我希望与大家分享的是给大家一个概述,首先,RChain是如何工作的,然后讨论节点及其在RChain区块链工作中的角色。我在想能否把问题抛给你,Greg,问你一个问题:给大家一个关于Rholang、元组空间和产品消耗的概述。

  然后,我想用验证器节点作为RChain网络的一部分所做的事情(基本上产生区块链)以及观察者节点作为区块链的一部分所做的事情来填充故事的其余部分。Greg,你能简单概述一下Rholang,元组空间,代码是如何部署的,以及系统是如何发展的吗?

  格雷格:当然。谢谢你给我这个机会。Rholang和元组空间紧密地结合在一起。Rholang是执行机制面向用户的表现形式。这是程序员、开发人员、智能合约作者和其他生物表达他们对计算的意图或愿望的语言。正如我们已经多次表达过的,它是从Rho演算建立起来的,Rho演算是一个简单的并发执行的最小模型,是Pi演算的变体或细化。基本特征是在通道里等待输入并在通道里面产生输入。

  如果Rholang是语言,那么你需要某种机制来解释该语言,并影响通过该语言给出的指令。元组空间就是这样的机制。你可以用许多不同的方式来思考元组空间。元组空间的起源可以追溯到大卫·盖尔纳特(David Gelernter)关于元组空间作为并发执行的协调机制的想法。本质上,你有地址,你可以把数据放在这些地址,或者从这些地址获取数据。这是大卫·盖尔纳特(David Gelernter)设想的元组空间的最初想法。他的想法在80年代末和90年代初相当流行。在Java和JVM实现中,有很多很多类似元组空间的小工具的实现。

  我提出了元组空间概念的一个变体,它更简洁,产生了更广泛的设计范围,也产生了一些有趣的优化。基本的变化是,在一个特定的地址,你可以放入数据,也可以放入一个附加物。如果你想象你有一个Rholang程序,它想从一个特定的地址消费一些数据。用Rholang形式来表达就是这样的:从X到P的Y——这是基本形式。Y是当你将数据从地址X中取出时,你期望数据被存放的地方。在元组空间中,如果你去查找X指向的任何地址,如果那里已经有一些数据,并且最基本的执行是,取出对其他消费者不再可用的地址,它将作为一个值绑定到变量Y,以便在程序或过程p中引用。这是简单的执行。

  但是如果在那个地址没有任何数据,你要做的是继续等待一个Y,然后我们运行P,把它放入地址x。这是你可以从中取出的另一半。

  我们还可以看到另外两条路。我们刚刚看了两个。一个是寻找数据,然后如果有数据你会怎么做,如果没有数据你会怎么做。与之相对应的是产生数据。如果4是一个消耗的概念而不是在Rholang的通道上构建发送数据——所以X的一些数据值,比如Q——也有两种可能的执行路径。如果当你试图把Q放入地址X时,在X处没有任何数据,那么你只需要把Q放入那个地址。

  另一方面,如果有一个附加物在那里等待,那么你将把那个附加物从元组空间中拉出,并向它提供数据Q。如果这种附加物存在是因为我们做了一个理解(comprehension),那么当你运行p的时候,Q将作为变量Y的值被绑定。这是基本的想法。

  对于区块链应用程序,我们对此进行了详细说明,以确保生产和消费的步骤由资源控制。在这种特殊情况下,资源被称为燃素(或流)。只有当有一些流程允许你采取下一步来存放数据或消费数据时,你才能采取下一步。这是基本操作,也是Rholang和元组空间如何配合在一起的。克里斯,这回答了你的问题吗?

  克莉丝:是的。那个元组空间就是RChain。元组空间就是区块链。如果你想要发送或消费——也就是说,部署Rholang用于发送和消费——你将构建你的Rholang,并且你希望它被发送到所有节点,以便所有节点的元组空间将随着刚刚发生的新部署而更新。

  对于每个人来说,重要的是要理解每个节点在元组空间上都有一个副本,该副本与其他每个节点的副本是最新的,这取决于他们到目前为止看到的块。有两种类型的节点。有我们所说的验证器节点,也有我们所说的观察者节点。

  观察者节点只是接收块并更新其元组空间的节点,所以它们总是拥有最新的区块。另一方面,验证人是实际上可以对元组空间提出更新的节点。当用户进行部署时就会发生这种情况。如果用户想要部署一些Rholang,他们将构建一个部署并签署它。Greg,你刚才提到的那个流将会绑定到一个存储在REV库中的地址。部署签名映射到同一个REV库。当有人把新的Rholang部署到RChain时,这就是付款的来源。

  我认为从这里开始真的很好,这样人们就会明白,如果你想运行一个节点,甚至一个观察节点,你必须有足够大的硬件来接收所有的块并更新元组空间。根据网络上发生的事情,以足够的速度和计算能力跟上,从那里开始,然后可能有一些问题我们想深入研究。

  格雷格:那真是太棒了。我想指出,作为一名软件架构师和计算机科学家,我想指出一些细微的区别。特别地,元组空间是通用存储;你实际上不必把它用于区块链。你可以使用Rholang元组空间,并像许多企业使用SAP HANA一样使用它。事实上,这是我在商业环境中的许多情况下在企业级推出的架构。

  Rholang作为该体系结构的一个更新,它的优点是它提供了非常详细的查询语言。由于其模式匹配能力,它成为针对元组空间存储中数据形式的查询语言。在元组空间存储的顶部,我们构建一个与支持区块链操作的特定格式相关联的三个块。这是一个额外的功能,它改进了体系结构,使之特别适合区块链的设置。

  克莉丝:这是一个很好的区别。从局外人的角度来看,如果我能看到网络,而不必运行一个节点或类似的东西,我会看到所有这些实际上包含Rholang的块被发送到所有节点。从区块链的角度来看,你在线路上看到的是Rholang。这是一个很好的观点。节点本身使用的元组空间是一个实现。只要遵守协议,可能还有其他可能的实现。

  格雷格:对。你也可以使用元组空间来实现其他东西。节点的预期用途之一是中间件,在我听说区块链之前,它就已经是节点的预期用途。这是一个特别有效的工作流引擎和中间件协调架构。所以这不仅仅是关于区块链,而且区块链是这种技术的一个很好的应用。

  这符合我们对市场的看法。我们真的相信,作为你可以追求的第一套应用程序,节点体系结构将非常适合数字资产的管理。我们还认为,对于企业通常必须做的许多工作流来说,这在必备的企业环境和其他类型的应用程序中都会非常好。无论你跟踪哪种数字资产或其他类型的资产,这些跨数字资产集合的工作流都变得非常重要。

  如果你正在运行一些报告和会计,或者如果你正在触发与数字资产相关的条件相关的其他作业。例如,在网络电话中,当你替换网络的某个特定组件时,跟踪该组件的记录可能会在现场进行更新,然后触发服务呼叫等。

  这些就是架构实际上预期的东西。它允许我们将区块链类型的应用程序直接放入更大的应用程序框架中。这就是为什么我提到这些区别。

  未完待续。。。

  原文地址:https://blog.rchain.coop/blog/2019/05/24/rcast-29-all-things-node/

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

Top