LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 聚焦系列5 ▏以太坊侧链——可扩展、安全、去中心化

聚焦系列5 ▏以太坊侧链——可扩展、安全、去中心化

2019-10-14 亦来云Elastos 来源:区块链网络

f12b0f7fcd664b09482f240ff3807f1c

f12b0f7fcd664b09482f240ff3807f1c.jpg1280×572 27.2 KB

以太坊侧链支持开发人员在以太坊虚拟机( EVMs )上编码、部署和运行他们的智能合约。

以太坊区块链是什么

以太坊区块链是一个平台,它为开发人员提供了使用区块链技术构建去中心化应用程序的工具。以太坊提供了一个类似于比特币的平台,以 ETH 为媒介进行点对点的去中心化交易。除了数字货币,以太坊还可以在没有任何第三方的情况下运行智能合约,这不仅允许它构建与货币相关的应用程序,还可以构建金融、音乐、游戏和所有迭代和细分市场的应用程序。

在以太坊区块链上,矿工们通过工作来获取以太坊的 Token —— ETH,为整个以太坊网络提供“ Gas ”。开发人员还使用ETH来支付以太坊网络的交易费用和服务费用。“ Gas ”用来测量计算一个以太坊节点所需要的能量。用户使用 ETH 付费,然而,计算是根据执行某个操作代码需要多少“ Gas ”来完成的。因此,每一个智能合约的执行都需要一定数量的“ Gas ”与之一起发送。

WechatIMG1663

WechatIMG1663.png1068×550 125 KB

!

什么是 Elastos 主侧链架构

与以太坊等使用单一区块链层执行每个事务的传统区块链平台相比,Elastos 采用了独特的框架——主侧链架构,来支持其区块链平台。主链主要负责支付交易,侧链则是为满足特定的服务而开发。例如:DID 侧链为用户提供了一种独特的方法来获得不受任何第三方控制的去中心化的身份认证;Token 侧链允许用户创建他们自己的唯一Token;NEO 侧链允许开发人员在 NEO 虚拟机上编码、部署和运行他们的智能合约。

最后,以太坊侧链允许开发人员在以太坊虚拟机( EVMs )上编码、部署和运行他们的智能合约。要更详细地了解Elastos侧链的工作原理,请阅读:《聚焦系列2:亦来云侧链和可扩展性解决方案》。

WechatIMG1664

WechatIMG1664.jpg1141×1600 312 KB

主侧链架构

为什么我们需要 Elastos

Elastos 有一个独特的区块链架构,每条侧链都有其特定的功能。以太坊侧链的功能是允许现有的以太坊开发人员在以太坊侧链上快速的部署他们自己的智能合约。这意味着,如果已经有人使用可编程语言在以太坊区块链上部署智能合约,那么他们无需进行大量工作,就可以轻松地将这些智能合约移植到 Elastos 的以太坊侧链上。并且 Elastos 以太坊侧链不仅有可以使智能合约移植到 Elastos 生态系统上这一功能,Elastos 以太坊侧链与以太坊区块链不同的是, Elastos 采用 DPoS 共识机制,从而显著增加了 TPS (每秒系统处理事务数)。截止到2019年9月,Elastos 的DPoS 共识机制得到了流通中的 ELA 超过40%的投票支持。Elastos 以太坊侧链作为一个独立的区块链,即侧链,具有优越的可扩展性能和安全性。

WechatIMG1665

WechatIMG1665.jpg1260×1068 116 KB

截止到2019年9月,Elastos 的 DPoS 共识机制得到了流通中的 ELA 超过40%的投票支持。

Elastos 以太坊侧链具有以下特点:

1. 解决以太坊区块链拥堵问题

以太坊区块链作为一个单一的主链结构,导致了计算能力的上限。尽管以太坊区块链中有数千个计算节点,但数据处理速度受到链中单个节点的限制,仅用一条链来满足未来的各种需求几乎是不可能的。Elastos 采用了灵活的主链和侧链设计结构。主链只负责基本的交易支付,而 Elastos 以太坊侧链执行 EVM兼容的智能合约来支持各种应用程序和服务。

2. 交易回报

以太坊区块链中的矿工通过向区块链生成、签名和发布块获得奖励( ETH ),而在 Elastos 上,来自主链的 DPoS 超级节点负责侧链生成、签名和发布块。在这个系统中,没有矿工去争夺以太坊侧链的计算能力和挖矿奖励。DPoS超级节点的回报来自交易费用。此外,在这个系统中,矿工不需要购买采矿机器和使用大量的电力,这最终降低了交易费用。这就是为什么 Elastos 以太坊侧链提供了卓越的可扩展性潜力和更便宜的智能合约部署的原因。

3. 共享比特币算力

通过与比特币联合挖矿获得比特币算力的强大保护。截止到2019年9月,Elastos 区块链拥有BTC超过50%的算力。

4. ELA支付Gas费用

使用ELA支付所有以太坊侧链的Gas费用。

5. 同质性资产( Fungible Token )/差异性( No-Fungible Token )资产

支持ERC20和ERC721 Token。

6. 可实现多个以太坊侧链

目前,只有一条以太坊侧链实现了 Elastos 的 DPoS 共识机制。如果有必要,可以使用不同的共识机制生成多条 Elastos 以太坊侧链,这在技术上是可行的。

7. 可编程

Elastos 以太坊侧链是可编程的,这使开发人员可以使用智能合约逻辑来构建新类型的应用程序,其中的应用程序将始终按编程运行。

8. 应用程序

支持广泛的应用程序,包括加密货币钱包、金融应用程序、去中心化市场、游戏等。

9. 灵活的共识

Elastos以太坊侧链使用 DPoS 共识机制。以太坊区块链使用 Proof of Work(PoW),目前正在切换到 Proof of Stake (PoS)。

10. 增加可扩展性

支持与以太坊区块链相同的所有开发,但具有更高的安全性和更好的可扩展性。

11. 智能合约

允许在合同版本小于或等于0.5.1(截至2019年9月)的情况下,以多种编程语言编写智能合约,只要它们可以被编译成 EVM ( 以太坊虚拟机 )的“字节码”。

以太坊区块链的相关应用:

数字钱包: Metamask , Status , uPort , Brave , Coinbase Wallet , Opera , Balance , Ethereum Name Service , Civic , SelfKey , Burner Wallet , MyEther Wallet , Alethio

用于投资、存储和交易数字货币的去中心化交易所: IDEX ,0x ,Loopring ,Synthetix ,Set ,Uniswap ,Melonport,MakerDAO , Bancor , ForkDelta , AirSwap , LocalEthereum

平台和市场: Augur , Golem , Ujo , Aragon , sis , RARE , imbrex , AdChain , t0x , OpenSea , Origin , Auctionity , Tokit , Enjin Coin , Veil , Etherisc , Nexus Mutual , iXledger

去中心化融资: MakerDAO Collateralized Debt Position , Compound Finance , Dharma , Marble , BlockFi , Lendoit , ETHlend , InstaDApp , Settle

打赏工作: Gitcoin , Bounties Network , Ethlance , Numerai , OpenLaw

社交网络: Minds , Peepeth , Akasha , Numa , Indorse , Cent , Livepeer , Refereum , VouchForMe

游戏: CryptoKitties , Etheremon , Gods Unchained , FunFair , Etheroll , ETH.TOWN , Chibi Fighters , 0x Universe , Lordless, Moon Crypto Polis, Crypto Rome, Axie Infinity, Hyper Dragons, My Crypto Heroes, MLB Champions, Marble Cards, Mintable, ZED

参考来源:

https://media.consensys.net/40-ethereum-apps-you-can-use-right-now-d643333769f7

什么是智能合约

在以太坊的语境中,智能合约不是法律合同。从技术上讲,术语“智能合约”是用来描述一个不可变的计算机程序,它作为以太坊网络协议的一部分,在以太坊虚拟机中确定性地运行。智能合约是完全按照程序运行的计算机程序,没有任何审查或第三方干预。智能合约可以比作在满足特定条件时自动执行某些预定操作的自主运行的代码。

术语“智能合约”本身并不新鲜,早在20世纪90年代,著名密码专家 Nick Szabo 就创造了这个术语,用来描述“一组以数字形式履行指定的承诺,包括各方履行其他承诺的协议”。所有区块链平台都有处理代码的能力。比特币以去中心化的方式处理代码,方便双方进行支付。而在以太坊上,开发人员通过 Solidity 编写智能合约,创建可执行更多功能的自定义应用程序。

WechatIMG1666

WechatIMG1666.jpeg1271×407 55.9 KB

WechatIMG1667

WechatIMG1667.jpeg1208×478 38.8 KB

智能合约的特征:去中心化,存储,代码即法律,默认的备份,避免手工的错误执行,去信任执行、自动执行。

一旦智能合约被部署到以太坊区块链或 Elastos 以太坊侧链,其代码就不能更改。因此,使用智能合约构建的应用程序非常透明、安全,并且不受审查。修改智能合约的唯一方法是部署一个新合约。智能合约是确定性的,这意味着无论执行哪种智能合约,对于给定的一组交易,结果始终是相同的。

WechatIMG1668

WechatIMG1668.jpeg1271×560 73.5 KB

智能合约的工作原理

智能合约本身无法运行,因为代码需要虚拟机或底层操作系统才能理解代码的含义。因此,智能合约首先以Solidity编写。然后,将这些智能合约编译为执行智能合约的以太坊虚拟机(EVM)可以理解的低级字节码。以太坊区块链和以太坊侧链上的每个节点都包含一个 EVM,因此每当部署一个新的智能合约时,以太坊网络中的每个节点都会执行它。

需要注意的是,Solidity 并不是唯一可以用来为以太坊平台编写智能合约的编程语言。支持多种高级编程语言,包括:

Bamboo: 一种受 Erlang 影响的语言,具有明确的状态转换且没有迭代流(循环)。旨在减少副作用。

Solidity: 一种语法类似于Javascript、C++和 Java 的语言。这是以太坊智能合约中最流行和最常用的语言。

Serpent: 一种与 Python 语法相似的编程语言。它还可以用来编写功能代码,但是它有时会有副作用。

Vyper: 一种类似于Serpent的语言, 与Serpent相比,它旨在更接近纯功能的,其语法类似于Python。

LLL: 一种功能编程语言,其语法类似于 Lisp。在Solidity成为主流之前,它是以太坊智能合约的第一种高级语言,但是通常很少使用。

以太坊虚拟机

众所周知,以太坊的核心创新是虚拟机( EVM ),这也是以太坊智能合约的运行环境。在更专业的术语中,EVM 是一个256位的寄存器堆栈,它完全按照预期运行相同的代码。智能合约是不能简单地在任何机器或操作系统上运行的计算机程序,它们需要一个能够理解代码意图的专门平台。与其他虚拟机非常相似,EVM 在智能合约代码和执行机器之间创建了一个抽象的计算机。因此,只要用户在他或她的计算机上运行以太坊节点,该节点包括 EVM,以便运行以Solidity(或支持的任何可用编程语言)编写的智能合约。但是,EVM 本身并不理解以Solidity编写的代码,必须首先将智能合约编译为 EVM 能够理解的低级字节码(即称为操作代码的机器指令)。然后,EVM 根据给定的一组指令或操作代码执行特定的任务。

WechatIMG1669

WechatIMG1669.jpeg1270×510 64.1 KB

EVM 如何执行 Solidity 编写的代码

以太坊虚拟机可以比作准图灵完备机。它不是100%图灵完成的,因为 EVM 执行的计算受 Gas限制,Gas 可以作为可执行计算数量的上限。在一个完全图灵完备的机器中没有限制;图灵完备是指在给定足够的时间和内存的情况下可以执行任何可能的计算的系统。这就是 EVM 可以被认为是准图灵完备机的原因,因为它确实有必须遵守的界限。

EVM 使以太坊得以被成千上万的开发人员广泛采用,因为它使得编写许多不同类型的程序和使用区块链技术执行它们变得很容易,这反过来又使程序更加安全和去中心化。通过这种机制,许多中心化的服务可以使用智能合约进行去中心化。

WechatIMG1670

WechatIMG1670.jpg1102×838 86.4 KB

智能合约的生命周期以及 EVM 的执行方式

以下是 EVM 的工作原理:

1.开发人员使用 Solidity 来编写智能合约。

2.智能合约被编译成称为字节码的低级机器指令。字节码用于存储 EVM 可以理解的操作代码,因为它占用的空间更少,从而提高了效率。在撰写文本时,有超过140个独特的操作代码,这些操作代码使得 EVM 能够执行以Solidity编写的智能合约代码。有堆栈操作代码、算术操作代码、比较操作代码、环境操作代码、与程序计数器相关的操作代码等等。

3.然后,EVM 将字节码分成字节并开始执行操作代码。EVM 有一个设计局限性,因为它源于256位寄存器堆栈,从中只能一次访问或操作最近的16个项目。由于这种限制,复杂的操作代码使用合约内存来检索或传递数据。内存并不是持久的,所以当智能合约完成执行时,内存内容不会被保存。因此,智能合约使用合约存储来无限期地存储数据。

4.合约存储类似于一个公共数据库,可以从外部读取其中的值,而不必向合约发送事务,因此不会产生任何费用。但是,写入存储代价非常昂贵,大约是写入内存的6000倍。

5.所有合约代码执行都由以太坊上的每个节点运行。因此,为了避免攻击者试图通过创建执行起来很昂贵的合约来降低网络速度的情况,每个操作代码的执行成本都很高,有些操作代码甚至会收取动态的Gas费用,因此对于所有140多个可用的操作代码来说,Gas费用是不一样的。这就是为什么执行大量的智能合约是非常昂贵的,因为每个智能合约可能使用许多不同的操作代码,而每个操作代码都需要花费大量的执行成本。

6.因此,存储在以太坊区块链上的实际上是操作代码,而不是智能合约。并且,根据操作代码的设计目的,以太坊网络每个节点上的 EVM 都参与执行。

WechatIMG1671

WechatIMG1671.png989×717 73.8 KB

EVM 体系结构

在以太坊区块链上运行的EVM 存在几个潜在的问题,而 Elastos 以太坊侧链是专门为解决这些问题而设计的。首先,以太坊区块链上有成千上万个节点,每次部署智能合约时,这成千上万个节点中的每一个都要参与执行,很明显这样效率非常低。另一方面,Elastos 以太坊侧链采用了DPoS 共识,其中36个超级节点在任何时间点都参与了共识,这是一个更高效的模型。要了解 DPoS 超级节点,请参阅:《聚焦系列3:亦来云的混合共识机制》

EVM 在以太坊区块链上运行的另一个问题与 Gas 成本有关。如果有大量的智能合约被部署到网络上,矿工就会开始增加执行哪怕是非常简单的智能合约的 Gas 成本。因此,Gas 价格大幅上涨。这一点尤其重要,因为这正是游戏Cryptokitties部署到以太坊区块链期间发生的事情。Cryptokitties 拥有超过27,000名注册用户,以太坊网络的使用率上升至25%以上。结果,以太坊网络很难跟上猫的数量,而 Cryptokitties 交易需要更高的 Gas 才能及时执行。反过来,以太坊网络上的所有交易的 Gas 费用都上涨了,这对以太坊的所有用户都产生了负面影响,即使是那些没有参与 Cryptokitties 的用户。

在 Elastos 以太坊侧链上,Gas 成本是以太坊区块链的很一小部分。其次,没有数千个节点验证以太坊侧链的块。而是有36个超级节点,因为 Elastos 对侧链采用 DPoS 共识。第三,如果像 Cryptokitties 这样的著名游戏被部署在Elastos 以太坊侧链上,这些区块将正常生产,而不会显著提高 Gas 费用。然而,正如《聚焦系列2:亦来云侧链和可扩展性解决方案》中所提到的,“在未来,如果有一天一个以太坊 DApp 突然流行起来,并接收大量用户、数据和交易,那么一条以太坊侧链可能是不够的。在这种情况下,可以创建一条额外的以太坊侧链,并将大量流量的 DApp 放在该侧链上。这个过程可以重复多次迭代,以支持几乎无限的 DApp。届时,我们可能会看到不是一个,也不是两个,而是五个以太坊侧链在 Elastos 的基础设施上同时运行。这就是 Elastos 构建的可扩展性的优势。

Elastos 以太坊侧链是如何工作的

Elastos 以太坊侧链是一个基于交易的状态机。状态机读取一系列输入并根据结果转换到新状态。以太坊上的状态是一个区块,这意味着每个新块都依赖于前一个块的状态。前一个块的哈希存储为当前块的一部分,这使得区块链不可变且几乎不可能被篡改。Elastos 以太坊侧链由账户、状态、Gas和费用、交易、区块和 Tokenomics 组成。下面我们将一一介绍。

账户

以太坊网络(不管是在以太坊区块链还是 Elastos 以太坊侧链上)始终跟踪一个全局状态:世界状态。这种状态由许多称为账户的彼此交互的小节点组成。每个账户都有一个状态和一个20字节的地址。以太坊有两种账户:

外部拥有的账户(普通账户):这些是用户在以太坊上创建的账户,用于相互进行交易,并由私有密钥控制。任何时候,用户在支持以太坊的在线加密货币钱包上创建以太坊地址时,都将创建以下类型的账户。当用户A向用户B发送 ETH 或ELA 时,他们是在两个正常账户之间进行交易。

合约账户:这些账户由智能合约代码控制。代码执行可能有来自普通账户的事务或从其他智能合约接收的调用触发,合约账户具有与之关联的特定逻辑。例如,可以将合约账户设计为在超过每日限额后需要多个签名。通常,普通账户会发送一笔交易以激活合约账户代码,从而允许它执行各种操作。合约账户有两种类型:简单账户和多签账户。

WechatIMG1672

WechatIMG1672.jpg1184×784 77.1 KB

WechatIMG1673

WechatIMG1673.jpeg1184×784 37.2 KB

两种类型的以太坊账户

需要注意的是,普通账户不需要任何创建成本,而合约账户需要。合约账户受代码的约束,不能自己发起新的交易。对于智能合约而言,代码就是法律,因为每个智能合约都有自己的以太坊账户。

WechatIMG1674

WechatIMG1674.jpeg1271×602 78.8 KB

智能合约不能单独启动

状态

在 Elastos 主链上,主链“状态”由未使用的事务输出( UTXOs )表示。通过创建一个事务并添加一个或多个 UTXOs 作为事务的输入,当用户花费一个或多个 UTXOs 时,ELA 从一个用户转移到另一个用户。这里举一个简单的例子:如果用户的钱包里有 1 ELA,想发送0.8 ELA 给用户B,此时用户A不能简单地发送0.8ELA 给用户B。相反,用户需要给自己0.2 ELA 改变相同的事务的一部分。如果用户A不这样做,则需要向联合挖矿的矿工支付0.2 ELA。通常,普通用户不必担心自己会执行所有这些操作,因为钱包会自动设置为执行这些操作。此外,Elastos 主链不维护用户账户余额。相反,ELA 主链 Token 持有者在任何给定时间点持有一个或多个 UTXOs 的私有密钥。钱包负责所有的后台事务,因此普通用户看不到。当用户查看 ELA 钱包中的余额时,它实际上是持有相应私钥的每个 UTXO 的总和。

WechatIMG1675

WechatIMG1675.jpg1271×1113 128 KB

基于 UTXO 的区块链如何工作

以太坊区块链以及 Elastos 以太坊侧链,不使用 UTXO 模型。他们使用“以太坊世界状态”,能够管理所有账户余额。创世区块是以太坊的第一种状态。已进行的每笔交易,已部署的每份智能合约以及已执行的每项挖矿操作都已将全局状态从一种状态更改为另一种状态。全局状态实质上是账户地址和账户状态之间的映射,该映射存储在称为 Merkle Patricia 树的数据结构中。默克尔树使以太坊能够在一个全局状态下有效地存储所有信息。Merkle 树中的哈希向上传播,这意味着如果有用户作恶,试图将伪造交易交换到 Merkle 树的底部,则上述节点的哈希将发生变化,同样,该节点上方的哈希也将发生变化,直到树的根节点受到影响。以太坊块包含状态和交易的根哈希,因此该结构在密码上是安全的,它用于安全地识别以太坊网络上的所有数据。

账户状态包含有关特定以太坊账户的信息,该信息存储一个账户拥有多少 ETH ELA 以及每个账户发送的交易数量。每个账户状态都包含以下字段:随机数,余额,StorageRoot 和 CodeHash。对于普通账户,CodeHash 将为空,而对于合约账户,CodeHash 将包含该账户的 EVM 代码的哈希。该字段是不可变的,这意味着如果部署了错误的智能合约,则以后无法在智能合约代码中对其进行修改。而是必须使用更新的代码部署新的智能合约。从这一点开始,区块链上将永远存在同一智能合约的两个版本:一个是错误的,一个是安全的。

WechatIMG1676

WechatIMG1676.png1271×579 90.8 KB

部署后的智能合约将永远保留在区块链上。要修改智能合约代码,必须部署新的智能合约,并且必须将相关应用程序定向到新的智能合约才能生效。

Gas费

在以太坊网络上执行的每一次计算都需要付费,没有免费的东西。在以太坊侧链上向另一位用户发送付款会产生费用,部署和执行智能合约也是如此。该费用以所谓的“Gas”支付。Gas 本身并不是代币,而是一种用于计量特定计算所需费用的单位。Gas 价格决定了用户愿意花多少钱进行特定交易,并以 ETH ELA 计量。每笔交易都有 Gas 限额和与之相关的 Gas 价格。Gas 价格和 Gas 限额的乘积代表发送方愿意为执行交易支付的最大 ETH ELA 金额。举个例子:最高交易费用计算(请注意,实际的 Elastos 以太坊侧链中的 Gas 限额和 Gas 价格值可能会有所不同)。

WechatIMG1677

WechatIMG1677.jpeg1270×225 35.9 KB

0.008 ELA 的金额是用户愿意在给定交易中花费的最大值。因此,如果交易成本降低,则会退还用户剩余的金额。但是,如果交易成本更高,则该交易被视为无效,因为以太坊网络节点尝试执行交易(或智能合约),但在完成交易之前就用光了Gas。因此,使用过的 Gas 已经用完,无法退还给用户。在 Elastos 以太坊侧链上,每个计算都由 DPoS 超级节点执行,并且每个节点都使用自己的计算机资源来运行这些计算。因此,该费用将发送给超级节点所有者。

WechatIMG1678

WechatIMG1678.png1271×449 101 KB

WechatIMG1679

WechatIMG1679.jpeg1270×284 31.3 KB

以上场景中,我们讨论了计算,因此所需的数据计算功能(或智能合约)都保存在内存中。一旦计算完成,数据将永远丢失,因为它将不再存储在内存中。用户还可以选择将一些数据保存在存储中,也就是说,数据将存储在以太坊侧链状态数据库中。在这里 Gas 也用于支付存储费用。由于状态数据库上的数据必须存储在所有以太坊节点上,因此用户和开发人员通常都不想保存大量数据,因为这会变得非常昂贵。为了存储更多数据,鼓励开发人员使用其他 Elastos 服务,例如 Hive,该服务在存储大量数据方面具有成本效益,并且是去中心化的。以太坊虚拟机上的计算步骤本质上是昂贵的,因为智能合约的每个操作都需要在以太坊侧链网络的每个节点上执行。因此,以太坊区块链和 Elastos 以太坊侧链被设计为运行非常简单的逻辑,并且不用于诸如文件存储和机器学习之类的复杂计算,因为这类复杂的计算给网络带来了巨大压力。即使 Elastos 将以太坊作为侧链之一运行,运行复杂任务的成本仍然过高。从理论上讲,如果只有一个 DApp 在以太坊侧链上运行,则它可能能够执行一些复杂的计算,然而以太坊侧链由其他 DApp 共享。但是即使在这种理想化的侧链结构中,以太坊侧链仍然是一个区块链,不应该用于所有事物。未来,以太坊侧链可能会出现另一个侧链,该侧链可以成为允许大量计算的 Elastos 区块链平台的一部分。对于复杂的任务,可以与 Elastos Hive,Elastos Carrier以及运行应用程序的物理设备一起执行以太坊侧链服务。这样,繁重的计算将在设备本身上执行,而不是在以太坊侧链上执行,以太坊侧链仅用于运行简单的业务逻辑和智能合约,这些合约是根据外部源(例如去中心化的Oracle服务)的某些操作触发的。

交易次数

无论是从一个人向另一个人发送 ETH 或 ELA ,还是部署智能合约,在 Elastos 以太坊侧链上执行的每个操作都是某种交易。在触发合约定义的某些条件之前,无法自主执行智能合约。如果智能合约通过所谓的“内部交易”存在于以太坊的全球节点范围内,那么它们之间也可以相互通信。智能合约可以相互发送消息并以此方式进行通信。这种交换与常规交易的功能非常相似。但是,它们不是由普通账户生成的,它们必须由合约账户生成。由于普通账户没有向智能合约发送消息,因此没有合约决定的 Gas 限额。相反,Gas 限额已经是智能合约部署的一部分,最初由普通用户设置。此机制在部署智能合约时引入了另一个警告:部署智能合约的用户需要将其智能合约的Gas 限额设置为足够的水平,以便该合约可以在必要时向另一个合约发送消息。如果在向其他智能合约地址发送消息时智能合约地址用完了该 Gas,则该消息将无效并且不会发送。

WechatIMG1680

WechatIMG1680.png1271×568 148 KB

区块

一个区块包含一组交易,并且一组区块以链的形式链接在一起,因此被称为“区块链”。

Tokenomics

以太坊区块链和 Elastos 以太坊侧链之间的主要区别之一是它们使用的币种不同。以太坊区块链使用ETH,而Elastos 以太坊侧链使用 ETH ELA。在以太坊侧链的创世区块中,侧链包含 0 ETH ELA。这是因为在 Elastos 区块链平台上,整个生态系统都使用相同的基础货币 ELA。ELA 用于 Elastos 主链,DID 侧链,Token 侧链以及以太坊侧链。因此,要使用以太坊侧链(例如,要执行以 Solidity 编写的智能合约),用户必须首先将 ELA 从主链转移到以太坊侧链地址。然后,他或她可以开始使用以太坊侧链将 ETH ELA 发送给其他用户或执行智能合约。

WechatIMG1681

WechatIMG1681.jpg1006×1153 190 KB

为了使用以太坊侧链服务,用户必须首先将 ELA 从主链转移到以太坊侧链地址。

需要注意的是,在以太坊侧链上使用 ELA,以太坊侧链的等待时间为15秒,而主链的等待时间为2分钟。这意味着用户无需等待2分钟即可将交易添加到以太坊侧链区块。此过程依赖于 DPoS 超级节点的共识,这就是为什么要向其他用户发送 ETH ELA 的用户只需等待15秒,智能合约执行也是如此。但是,当用户要将 ELA 从主链转移到 ETH 侧链(反之亦然)时,理论上所需的总时间约为2分20秒:主链冻结时间为2分钟,ETH 为15秒侧链等待时间,以及5秒用于仲裁程序验证的时间。但是实际上,所需的总时间为12分钟(每块2分钟* 6个区块),因为如果不等待6个块来处理,则会在回滚时出现问题。当主链上的事务需要执行回滚时,已发送到侧链的事务也需要回滚。从侧链到主链的反向交易也是如此:如果侧链上的交易需要回滚,则主链也需要按顺序回滚。考虑到这种可能性可能会变得非常复杂,并且由于 Elastos 具有许多侧链,这种回滚可能几乎无法管理。因此,在主链和以太坊侧链之间转移 ELA 的实际总时间大约需要12分钟。

WechatIMG1682

WechatIMG1682.jpg981×1600 188 KB

从以太坊侧链发送 ETH ELA到 Elastos主链

如果用户想要将 ETH ELA 转换为其他区块链中的Token,则他或她首先必须将 ETH ELA 从以太坊侧链转移到Elastos 主链; 只有这样,他或她才能将这些 ELA 转移到 Elastos 生态系统之外。通过这种机制,以太坊侧链被比特币的哈希算力有效地保护。尽管 ELA 可以在任意侧链中以较短的区块时间自由循环,但必须先返回主链,然后才能转移到 Elastos 区块链之外。由于此过程中的最终交易始终在主链上进行,因此 Elastos 主链的安全性将递归地传递给所有侧链,而与它们的共识机制无关,无论是 PoW,DPoS,BFT 还是其他形式 。

智能合约和去中心化应用程序之间的差异

重申一下,智能合约是一段代码,可以保证产生相同的结果,而与运行它的人无关。在以太坊上,智能合约以 Solidity 编写,并被编译成由一组操作代码组成的字节码。以太坊虚拟机可以理解这些操作代码,并且无论哪个节点运行一段具有给定参数的智能合约代码,智能合约都将始终产生相同的结果。但是 EVM 不是可以执行任何逻辑的通用虚拟机,因为它只能运行有限数量的操作代码。因此,尽管智能合约的诞生使将区块链技术用于各种目的变得更加容易,但仅智能合约并不能支持完全去中心化的基础设施。智能合约本身是去中心化的,一旦部署它们就没有实体可以控制它们,区块链本身也是去中心化的,但是个人无法构建仅由智能合约组成的完整网站或复杂的应用程序。

举个例子:一个开发人员想要创建一个预测天气预报的网站或应用程序。当预测正确时,开发者的朋友就必须付钱。当预测错误时,开发者就必须付钱给朋友。这看起来像是一个简单的应用程序。实际上,确实如此。然而,为了实现这个场景的目的使用智能合约很重要,这样可以保证开发人员和朋友都不会作弊。对于应用程序来说,具有访问当前天气数据的能力也很重要,以便智能合约可以确定预测是否准确。该应用程序还需要某种逻辑,可以将一个帐户中的资金转移到另一个帐户中,等待结果。开发人员可以执行以下操作:使用以太坊侧链创建单独的以太坊钱包,并购买一些ETH ELA。这可以使用以太坊 API 在应用程序中轻松编码,并且很安全,因为区块链直接用于创建这些钱包。

从这里开始,开发变得更加复杂,因为一旦做出天气预报,应用程序必须从某处获取真实的天气数据。在这里,它必须依靠第三方来访问天气数据,并且这个过程不再去中心。即使此数据检索过程可以去中心化进行,下一个步骤是通过应用程序预测明天的天气,这意味着应用程序必须将此预测保存在某个地方。将数据保存在区块链上非常昂贵,因此存储预测数据需要访问外部数据库,而该数据库当然不会是去中心化的。然后,第二天到来,根据天气预报的准确性执行智能合约。如前所述,由于区块链在自己的网络上运行,因此智能合约不能简单地自己执行,也不能直接与外部资源进行交互。因此,智能合约必须使用 Oracle 服务与现实世界进行通信。Oracle 服务是中心化的,但是即使在去中心化的 Oracle 服务允许应用程序检索天气数据的情况下,仍然存在更多挑战。

一旦智能合约看到开发者的天气预报并将其与实际天气进行比较,它就会将 ETH ELA 从一个以太坊钱包转移到另一个以太坊钱包,以等待预测的准确性。尽管可以以去中心化的方式执行此操作,但该应用程序仍必须运行并且必须在某个地方运行,因为普通用户不会直接在区块链节点上与区块链进行交互,而是在自己的设备上使用该应用程序,因此该应用程序需要放置在类似于应用程序商店的地方。如果使用 iOS,则由 Apple Store 管理该应用;如果应用程序是网站,则必须将其托管在某个地方。这些模型都不利于去中心化。要指出的是,即使是简单的应用程序也需要比智能合约更多的功能来以去中心的方式运行。仅凭智能合约无法支持成熟的去中心化应用程序,因为它们只是 EVM 在触发操作时执行的微小逻辑。实际上,这个简单的天气预报应用程序的大多数功能既没有去中心也没有扩展。

WechatIMG1683

WechatIMG1683.jpeg897×1054 51 KB

WechatIMG1684

WechatIMG1684.jpeg1600×1020 140 KB

了解智能合约和 DApp 之间的区别也很重要。DApp 包含智能合约,但智能合约本身不是 DApp。为了让整个应用程序去中心,需要去中心许多不同的部分。不用说区块链行业不存在,世界上根本还不存在。区块链只是难题的一小部分,它不能解决世界上所有的问题,也不能用于编写整个应用程序。虽然以太坊侧链非常适合编写防篡改的智能合约,但还需要利用其他去中心化服务,例如用于身份验证的Elastos DID,用于对等消息传输的Elastos Carrier和用于去中心化存储的 Elastos Hive。通过结合所有这些固有的去中心化技术,开发人员也许可以创建真正的去中心化应用程序。

Elastos 以太坊侧链的共识

Elastos主链与比特币联合挖矿,并具有AuxPoW + DPoS共识。将 ELA 与 BTC 联合挖矿的 PoW 矿工负责打包交易并生产区块,而 DPoS 超级节点则对区块进行验证和签名。Elastos 以太坊侧链使用DPoS 共识。因此,以太坊侧链不受主链速度的限制,并且可以在生产区块时独立工作。这是一项主要优势,因为其15秒的等待时间足够快,可以执行现实情况下的大多数事务。最重要的是,现有的以太坊区块链开发人员可以轻松地将以 Solidity 编写的现有智能合约移植到 Elastos 以太坊侧链。截至2019年9月,Elastos 以太坊侧链尚未采用完整的DPoS 共识,因为只能通过 Elastos 区块链团队管理的白名单程序访问侧链。因此,只有12个 CRC 超级节点参与生成块并对其进行签名。但是,将来所有36个超级节点都将参与生产区块并对其进行签名,届时, Elastos 以太坊侧链将真正去中心化。

WechatIMG1685

WechatIMG1685.jpeg1272×798 66.4 KB

截至2019年9月,仅12个 CRC 超级节点参与了 Elastos 以太坊侧链的区块生产和验证过程。

WechatIMG1686

WechatIMG1686.jpg1274×1136 172 KB

将来,所有36个超级节点都将参与 Elastos 以太坊侧链的区块生产和验证过程。

与所有开发一样,以太坊侧链在这样的早期阶段尚未完全去中心化是至关重要的。如果存在错误,可以尽早发现并有效修复。虽然以太坊侧链上的数据传输过程是去中心化的,但节点的控制尚未去中心化。从部分去中心化的模型开始,然后随着侧链变得更加稳定,逐渐朝着100%去中心化的方向发展,这是Elastos的核心理念,因为 Elastos 主链在开始时也是一部分去中心化,并且此后随着发展逐步完全去中心化。以太坊侧链将与主链一样经过严格的测试,并且当它充分成熟稳定时,所有36个超级节点都将参与其 DPoS 共识。

Elastos 以太坊侧链如何适应 Elastos 生态系统?

Elastos 以太坊侧链只是 Elastos 区块链平台许多侧链中的一条,还有主链,DID 侧链,Token 侧链和 NEO 侧链。未来,随着 Elastos 区块链可以水平扩展,以适应更多的需求,以不同的共识容纳更多的侧链,很有可能还会有更多。以太坊侧链提供了一种以 Solidity(或 EVM 支持的任何其他语言)编写的智能合约的方式,其等待时间约为15秒。这些智能合约的目的不是编写整个应用程序,而是用作去中心化关键业务逻辑的工具。对于诸如去中心化 ID 身份验证之类的东西,可以利用 DID 侧链。要编写与 NEO VM 兼容的智能合约,可以使用 NEO 侧链。要编写用于消息传递,音频交换或视频呼叫的安全的点对点通信系统,可以使用 Elastos Carrier。想要以经济高效和去中心化的方式存储任何类型的数据,可以使用 Elastos Hive。最重要的是,这些服务可以独立运行,也可以共同运行,以生成复杂的,去中心化的应用程序,而这些应用程序是无法单独使用以太坊侧链创建的。

ETH Forks,ETH 2.0和以太坊区块链的未来

许多人认为,当前的以太坊区块链仍处于起步阶段,因为它既不完全安全也不完全可扩展,并且不能用于构建复杂的,高吞吐量和依赖大数据的应用程序。但是,随着即将到来的重大升级(简称为ETH 2.0),大量核心基础设施的变化正在进行中。这些变化包括使用支付和状态通道,侧链,等离子,分片等将以太坊区块链过渡到 DPoS 共识。简而言之,目标是设计一个经过改进的新基础架构,使其更加去中心化,可扩展,安全,简单和可持续。在网上有很多关于以太坊未来路线图的信息。由于这些更改都是通过以太坊2.0实现的,因此 Elastos 以太坊侧链也可以升级为采用类似功能,这就是开源和去中心化技术的力量。或者,当以太坊2.0稳定时,可能会开发出一个全新的以太坊侧链,称为“以太坊2.0侧链”。Elastos 不会与其他项目竞争。相反,它正在通过将成熟的技术集成到其自身的生态系统中来对它们进行补充。这样,基于 Elastos 的开发人员可以创建复杂的去中心化应用程序,而无需离开 Elastos 生态系统。

WechatIMG1687

WechatIMG1687.png1271×610 365 KB

未来可以在 Elastos 区块链平台上支持以太坊2.0的一种方式。

Elastos 以太坊侧链带来了更多可能性的未来

随着我们向开放白名单的合作伙伴和开发人员开放侧链并向公众提供完全访问权限,Elastos 以太坊侧链的未来将更加光明。许多项目已经开始将其现有的以太坊区块链项目移植到 Elastos 以太坊侧链,以集成并利用 Elastos 提供的整套生态系统服务。请参阅以太坊侧链项目小组的网站(http://elastosjs.com/),以了解有关以太坊侧链项目小组团队职责的更多信息。如果您满脑创意,请开始使用可部署到 Elastos 以太坊侧链的智能合约开发 DApp。

—-

编译者/作者:亦来云Elastos

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...