Substrate极简概括_SUBS:区块链专业方向好就业吗

编者按:本文来自PolkaWorld,Odaily星球日报经授权转载。今天我们将讨论Substrate,一个可以帮助你构建自己的自定义区块链的库。Substrate是由ParityTech研发出来的,也为Polkadot提供了基础。什么是Substrate?

来自牛津字典的解释:Asubstanceorlayerthatunderliessomething,oronwhichsomeprocessoccurs.顾名思义,Substrate可以用来生长或在其上建造某种东西。在我们的案例中,我们可以构建区块链,或者在Polkadot的案例中,可以构建一个完整的区块链家族。我为什么需要Substrate?

软件归根结底就是抽象。计算机科学的历史表明,我们不断地得到越来越多的抽象:从离散逻辑到集成电路和CPU;从机器代码到汇编,从汇编到C语言,再到C++、Rust、Haskell等等。编程APIs也是如此。例如,现在几乎没有人用纯HTML编写web。“每个问题都可以通过引入另一个抽象层来解决。除了很多抽象层的问题……所以我们发明了框架。”——改写于安德鲁·柯尼格的《金融时报》。每个抽象层都试图解决一个特定的问题。那么,制造Substrate是为了解决什么问题呢?事实证明,在开始实施全新的区块链解决方案之前,你需要考虑很多事情:为什么还需要另外一个区块链?!各种密码原语:加密、签名、RNG1等共识算法和容错投票ProofofWaste、ProofofStake、ProofofAuthority?还是其他完全不同的东西?块结构和高效存储、消息序列化P2P网络、对等发现、区块和交易互通状态机、执行运行逻辑、智能合约轻客户端支持尽管Substrate没有解决第一个问题,但Substrate可能会帮助你解决剩下的问题,因为它提供了现有的实现工具。这些都是基于我们多年开发区块链的经验而精心设计、编写和测试。当然,你也可以亲自去实现所有这些任务,但我可以说,你最终可能会得到一个未经测试且没有很好文档记录的解决方案。更不用说,通常你自己设计或实现的加密算法会被认为是一个非常糟糕的想法,除非你是一个密码专家,而且你真的知道你在做什么。所以,通过提供典型算法的通用实现,Substrate可以让你集中精力在项目本身:链的业务逻辑,即其状态机。让我们来看看区块链中最重要的部分,看看Substrate可以提供什么。作为永久存储的区块链

声音 | Facebook区块链主管:Libra不会存储或分享个人财务信息:据coindesk报道,Facebook区块链主管David Marcus周一致信参议院银行委员会,称Facebook无法通过其新加密货币获取个人财务信息。Marcus表示,个人数据不会附加在Libra区块链上进行的任何交易中。类似于以太坊和比特币,在Libra区块链上发生的交易是“假名的”,这意味着用户的身份不会公开。交易中的区块链地址、时间戳和交易金额将是公开的,但任何了解你的用户(KYC)或反(AML)信息都必须由钱包提供商存储。Marcus指出,Libra将是一个开源平台,任何第三方开发者都将能够建立自己的数字钱包,这些第三方将对其Libra钱包负责。Marcus表示,由于验证器节点或钱包将处理和存储交易,Facebook和Libra都不会存储个人数据。此外,作为托管钱包,Calibra将保留一些消费者财务数据。除了有限的案例,Calibra不会在未经客户同意的情况下与Facebook或任何第三方共享帐户信息或财务数据。[2019/7/10]

任何区块链的唯一目的,是提供一种可验证的、全球性的、永久的存储和转变数据的方法,这意味着所有各方都要在任何时间点上,以一种零信任的方式来检查和同意什么样的价值可以被认可。而且,一旦这些数据被封存,就应该是永久性的,根据共识,不可能对其进行篡改。此属性广泛用于加密货币,其中永久存储包含帐户密钥及其实际余额。然而,需要注意的是,加密货币并不是唯一可能的区块链应用。基本上,几乎所有需要全局一致、永久存储和可验证交易历史记录的系统都可以通过某种方式使用区块链实现。Substrate提供高效的存储,非常容易使用,并且与WebAssemblyruntime紧密集成。作为功能的区块链

声音 | Facebook区块链部门成员:最大的担忧是Libra得不到公平的机会:据LongHash 7月5日消息, Facebook区块链部门的Christina Smedley负责Calibra的品牌推广,而Calibra是Faceboo的子公司,将推出Libra的数字钱包。针对LongHash的提问“那么你现在所担心的是什么呢?”, Smedley表示,我加入这个团队是因为我相信这个使命。我从第一天开始就加入了Facebook的Libra团队,因为我发自内心地认为是时候这样做了。现在,你可以在10秒内发送一幅图片,而且不需要付任何手续费,我认为这个事实同样应该适用于货币。这是唯一没有真正进化的东西。因此我最大的担忧就是它得不到公平的机会,我担心它在还没有覆盖到我们真正的服务目标之前就已经被人们拒绝了。这就是我最近难以入眠的原因。 针对提问“你认为人们最主要的误解是什么?” Smedley表示,我认为应该是他们认为Libra是一种中心化的 Facebook币,但事实并非如此。[2019/7/5]

为了根据待定的操作去更新链的状态并改变其存储,我们需要有一个决策点。这些决策点可以表示为一个函数,它接受当前状态和一组待定的操作,并产生另一个应被视为新的状态的状态。在区块链世界中,这样的函数被称为状态转换函数,简称STF。Substrate可以让你以一种可管理和可移植的方式来定义这样一种功能。跟在网页上执行的JavaScript非常相似,你可以编写一组统称为runtime的函数,这些函数将充当STF。此外,这样的实现将是可移植的,并不依赖于处理器架构、操作系统、浏览器,或者任何其他依赖平台的方式。

动态 | 多位Instagram高管已转至Facebook区块链小组:据CNBC消息,近几个月来,Instagram的多位重要管理层人员和员工都已转至Facebook新成立的区块链小组,其中包括前产品副总裁Kevin Weil、工程主管James Everingham和基础设施工程总监Hui Ding。该小组对其工作的保密,但已有报道称该小组正在PayPal前总裁David Marcus的领导下开发自己的加密货币。[2019/6/2]

事实上,即使是Substrate的底层技术都是密切相关的。Substrate使用WebAssembly作为其runtime的通用语言,这正是Mozilla、Google和Apple等大公司目前正在集成的技术,在编写web时作为一种更快但仍然兼容的JavaScript替代品。安全和速度

用Wasm编写链的逻辑和智能合约,意味着你将拥有最好的工具来以快速可靠的方式执行逻辑。但是,Substrate有一种方法可以更快地执行代码,并且没有任何虚拟机的开销。Substrate最革命性的部分是,包含STF的runtime图像与其他有效载荷一起存储在链上。这意味着runtime和整个链的业务逻辑可以以安全和可验证的方式进行更新。更重要的是,由于Substrate及其RuntimeModuleLibrary3都是用Rust编程语言编写的,所以它们可以被翻译成本地代码和Wasm。

声音 | 币安周玮:Facebook区块链计划的目标或是为了阻止其他人进入其系统:据雅虎财经报道,针对Facebook的区块链计划,币安首席财务官周玮表示,“我怀疑这将是一个封闭的Facebook生态系统,他们的目标是阻止其他人进入其系统,而不是向其他人开放其系统。”Facebook在三月份公开宣布已经成立区块链研究小组,有60多名工作人员在研究这项技术。

据此前报道,纽约时报记者Nathaniel Popper发推表示,“有消息来源透露,Facebook目前正在寻求让风险投资公司投资于其加密货币项目。听说他们的目标很大,高达10亿美元。”[2019/4/26]

在任何时候,客户端软件都有两个编译runtime的副本:一个是在软件中本机编译的,另一个是要在VM中执行的Wasm图像。执行runtime函数时,客户端软件检查runtime的链上Wasm版本是否与其编译的本机内置版本匹配。这样做后,客户端软件将runtime函数的执行委托给本机代码版本。无分叉升级

当runtimeimage在链上更新时,某些客户端还没有更新其软件。在这种情况下,他们的节点将通过在Substrate的集成Wasm虚拟机上解释runtime来执行正确的版本。因此,在任何情况下,网络上的所有节点总是能够正确地同步链,从而防止链分叉。网络

EOS WTZ王团长:EOS的长期价值未来三年会呈现:今日,在Kcash组织的EOS超级节点1V1对话盛宴中,EOS WTZ王团长表示,尽管EOS价格最近涨跌幅度很大,他觉得这只是二级市场的一个炒作行为。在他看来,无论是比特币还是以太坊,从其发展数据来看,比特币十年间涨了300多万倍,而以太坊在4年间,整体涨了1900多倍。因此,从目前的趋势看,他认为EOS在未来三年的价值肯定会呈现出来。[2018/5/27]

区块链依赖于有许多参与者通过网络进行通信。典型的解决方案是使用点对点技术来进行这种通信,而Substrate也不例外。P2P是一组用于创建分布式网络应用程序技术的通用名称。其主要思想是建立一个自我维持的网络环境,在这个环境中,每个参与者都能够在网络中运行,而无需事先配置或被授权。为了确保节点可以在任何时候加入或离开网络,而不影响整个网络的连接性,Substrate使用了Rust实现的libp2p,这是一个很有前途的网络堆栈,它拥有建立分布式网络环境所需的一切。自定义消息

在最简单的情况下,你甚至不需要考虑网络,因为Substrate为你做了一切。你只需提供区块链的状态转换功能,并将所有网络交互留给Substrate。但是,如果区块链要求发送自定义消息,则可以通过提供明确自定义消息及其处理逻辑的特定的网络协议,来自定义和扩展网络子系统。共识

有一个允许你从一个状态转移到另一个状态的状态转移函数是好的,但还不够。你还需要一种方式让所有节点都同意下一个状态应该是什么。作为一个银行账户的拥有者,你最不想遇到的情况就是你和银行在“你的账户里有多少钱“上存在分歧。区块链允许各方在不信任对方的情况下达成共识,即使在恶意参与者试图破坏系统并窃取你的资金的情况下也是如此。这是使用一个具有拜占庭容错属性的共识算法完成的。如果一个系统是BFT,这意味着节点可以达成一致,即使其中的一部分表现恶劣,包括串通、截留消息和离线。BFT共识系统能够抵抗不同程度的网络问题,在这些问题中,消息可以重新排序或延迟。一些BFT共识系统的设计使得当节点行为不当时,它们可以受到惩罚,并在链上削减他们质押的token。对于支持在Substrate中的每个共识引擎,都将有一个runtime模块,用于处理错误行为的证明。评估错误行为的影响可以由runtime确定。从数学上证明,只要网络中三分之二的节点没有恶意并按照协议运行,该协议是可行的。这就是为什么在网络中有很多节点很重要的原因之一。共识是任何区块链应用程序的关键部分。幸运的是,Substrate提供了一个已经可用的BFT共识,几乎可以开箱即用。根据使用场景的不同,你可以使用现有的块创作逻辑,也可以提供自己的块创作逻辑。在后一种情况下,你可以使用BFT的通用版本并使其适合你的需要。Substrate将继续发展,并有更多的共识算法加入到其中,包括在Web3基金会开发的GRANDPA的最终确定小工具。另外,由于Substrate是一个完全可扩展和可定制的框架,因此可以定义你自己的自定义共识算法。事实上,Substrate是如此的灵活,它可以支持不是基于经典区块链架构的解决方案。例如,我们正在研究如何通过设计一个不基于传统块概念的共识,来解决区块链吞吐量问题。轻客户端支持

早期的区块链实现是这样设计的:网络中的每个节点都在本地维护完整的区块链数据库。这现在被称为fullclient,这意味着客户端拥有作为网络节点运行所需的一切。完整客户端对于链安全非常重要。但是随着区块链的增长,客户的数据库变得越来越大。目前,主流加密货币拥有数百GB的数据库。当整个节点初始化时,它需要做的第一件事是与网络的其他部分同步。由于安全原因,这样的一个节点不能按原样随机从一个节点下载数据库,而是需要从头开始构建自己的数据库,重新同步genesis以来的所有交易。除了计算上的昂贵,这个任务还需要通过网络传输大量的数据。我想每个人都会同意,下载半兆字节的数据到你的手机上只是为了买一个三明治…这是不切实际的,要不就是很荒谬。这就是为什么,几乎从一开始,区块链开发人员就开始考虑降低节点维护成本的方法,包括存储空间和网络吞吐量。最终,轻客户的概念诞生了。简言之,轻客户端是区块链节点的一种操作模式,其中只有最重要的数据存储在本地,网络交互减少到最低限度,同时为几乎所有可能进行的交互保留可接受的安全性。适度的资源需求最终允许轻客户端节点轻松引导,因此可以在移动设备上执行。不幸的是,将轻客户端支持集成到现有区块链中是一项严肃的任务。在区块链的初始设计中集成轻客户端会更容易的多。Substrate是在考虑到轻客户端支持而专门设计的。基于Substrate构建的区块链具有现成的轻客户端支持。总结

在这篇文章中,我们略读了Substrate框架的主要目标和特性。要涵盖Substrate的所有方面需要更长的文章,但希望你现在已经对这些概念有了大致的了解。虽然这还不足以开始编写你的代码,但至少现在你应该知道期待什么。要了解更多信息,请查看JackFransham之前的文章《什么是Substrate》:https://www.parity.io/what-is-substrate/。如果你想深入研究并开始实现你的区块链,最好的开始是ParitySubstrateWiki。另外,不要犹豫查看源代码,特别是ReadMe文件:。注释

RNG代表随机数发生器。并非每个RNG都适合区块链应用。Substrate本身现在正处于非常活跃的发展阶段。代码库非常不稳定,文档工作正在进行中。我们正在积极地填充wiki,这是一个寻找更多细节的好地方:https://wiki.parity.io/Runtimemodulelibrary是一组可选的Rust大木箱,用于处理常见任务,如参数序列化和调用分派,并帮助你以最小的成本构建runtime。这个库是完全可选的,所以从头开始设计自己的runtime,或者使用任何可以编译成Wasm的语言都是非常好的。除了Rust之外,目前只有C语言和C++支持Wasm作为目标体系结构。欢迎学习Substrate关注Substrate进展关注Polkadot进展申请Bootcamp

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-3:778ms