Plasma Cash 开发者指南(+如何使用 Loom 的 Plasma CLI)

2019-01-07 16:40 栏目:经验之谈 来源: 查看()
Loom Network正在构建一个基础架构平台,以帮助以太坊扩展以实现真实世界的用例,这是首个正式推出的以太坊扩展解决方案。

Loom允许开发人员通过部署到高吞吐量的以太坊侧链来运行大型应用程序,同时保持以太网骨干网的安全优势。

在之前的文章中,我们讨论了使用传输网关将资产从Loom移动到以太坊主网络。在本文中,我们将讨论另一种实现:Plasma Cash。

简而言之,Plasma Cash允许用户安全地将他们的数字资产从以太坊主网络转移到侧链,而无需信任侧链。您转移到侧链的每个资产都会分配一个唯一的序列号,并拥有自己的交易历史记录。

Loom建立了一个名为PlasmaChain的共享侧链,它使用传输网关和Plasma Cash。

让我们快速浏览一下转移网关,然后看看Plasma Cash之间的区别,最后深入研究Loom最近发布的Plasma Cash命令行界面。

查看Transfer Gateway

传输网关使用任何oracle在链之间传输资产。也就是说,如果没有人发起,链之间就不会有相互作用。

查理可以在以太坊主线上购买一张卡,并将其存入以太坊主网的转让网关合同中。这会触发Oracle(服务器)监听合同,以便对PlasmaChain(或其他Loom侧链)上的相应资产发出所有权变更请求。

然后查理可以去PlasmaChain提取资产。此令牌只能在以太坊主网络或PlasmaChain上“存在”。要在两个链之间移动,您需要通过将所有权转移到传输网关合同来“销毁”发送链上的该令牌。

Plasma Cash有什么区别?

Plasma Cash的原理略有不同。织机侧链使用Plasma Cash定期向以太坊主网络报告Merkle样张作为“检查站”。

等离子现金实施通过在以太坊主网络上使用以太坊等离子合同(EPC)和与以太坊主网络合同进行通信的织机等离子合同(LPC)来实现。

用户最初在以太坊主网站上有一个令牌。然后他们将其存入EPC并发出一个事件。此事件由sidechain oracle接收,然后继续在侧链上创建一个包含存放资产的单个事务的块 - 单个事务使“退出”(或获取)过程更容易。

该交易将在PlasmaChain上为用户提供等离子现金代币,代表他们存放的资产。用户可以以任何方式自由地在侧链上交易和使用令牌,包括将其转移给其他用户。

PlasmaChain将通过为每个块提交Merkel证书来定期检查以太坊主网络上的EPC,以验证令牌所有权的变化。

默克尔证明检查站


等离子现金链(实际上所有区块链)使用称为Merkle树的非常好的数据结构来存储单个块中的事务数据。

在比特币或以太坊块中,可能存在无数的交易。那么我们如何验证某个块是否包含事务?

想象一下,您想要在第500个块中显示事务A.一种方法是让每个人都存储所有块的原始数据,然后转到第500个块并读取事务列表,直到找到与A匹配的事务。但是,这需要维护大量的存储资源。

节省时间和空间


为了节省计算时间和存储空间,对于每个块,我们还生成了块事务的Merkle Root哈希。这些哈希值用作块的“摘要”,可用于验证。

Merkel树将事务散列在一起以表示块的Merkel根 - 固定长度的哈希表示块中的所有事务。

Plasma Cash 开发者指南(+如何使用 Loom 的 Plasma CLI)

例如,此Merkel树由四个事务组成,从A到B.每个事务首先进行哈希处理以生成哈希(A),哈希(B)等。然后,哈希(A)和哈希(B)被一起散列以产生树的另一层:哈希(哈希(A)+哈希(B))。在树的右侧,交易C和D也是如此。

因此,本例中的最终默克尔根哈希如下:哈希(哈希(H)+哈希(B))+哈希(哈希(C)+哈希(D))

由于这个树的构造是递归的,我们实际上可以使用这个根哈希和Merkel路径来创建一个证书,该证书可用于验证给定块的任何给定事务。

例如。:

Plasma Cash 开发者指南(+如何使用 Loom 的 Plasma CLI)

如果用户想要使用节点来验证事务K是否在此块中,则该节点仅需要保留块Meckelgen的列表。用户将提供(a)公司的区号,(b)交易K和(c)Merkel认证。

默克尔的证明包括Hash(K),Hash(L),Hash(IJ),Hash(MNOP)和Hash(ABCDEFGH)。节点可以从证明中计算丢失的哈希(KL),哈希(IJKL)和哈希(IJKLMNOP)。生成的块的根哈希值应与文件上的根哈希值匹配。

我们可以看到这里保存的空间:
Plasma Cash 开发者指南(+如何使用 Loom 的 Plasma CLI)

为什么这么重要?

通过使用Merkel根哈希,我们可以将区块链“备份”到另一个链,而无需复制其整个事务数据库。这意味着在存储方面,我们可以在以太坊主网络上保存PlasmaChain的整个历史记录的摘要。

PlasmaChain oracle会定期将这些摘要提交给EPC - 自上次摘要以来,所有新块都有一组Merkel根。以太坊主网络上的这个智能合约(EPC)可用于保护PlasmaChain。

等离子出口

要从PlasmaChain撤回其令牌,用户可以直接与以太坊主网络上的EPC交互,并提交Merkel证书以表明他们是令牌的当前所有者。

然后,他们进入“挑战等待期”,在此期间,任何人都可以提供证据,证明提取令牌的人不是这些令牌的有效所有者。

在此等待期结束后,用户的令牌将在以太坊主网络上可用。

等离子现金CLI

好吧,让我们再深入一点,然后尝试使用Loom发布的新的Plasma Cash CLI。

你可以在这里查看源代码:https://github.com/loomnetwork/plasma-cli

此CLI工具以npm包的形式提供,因此我们可以使用以下命令安装它:$ npm install -g plasma-cli

如果您在执行此步骤时遇到问题,可能需要确保使用的是Node v10.9.x.

在使用plasma-cli之前,我们需要使用正确的参数创建config.json文件。您可以通过从命令行传递所有这些参数来使用这些命令,但我强烈建议将它们定义为配置文件以便于使用。

合适的json对象将包含以下字段:
{  'ethPrivateKey':'',
 'dappchainPrivateKey':'',
 'plasmaAddress':'',
 'startBlock':'',
 'ethUrl':'',
 'ethEventsUrl':'',
 'dapphainUrl':'',
 'contractName':'',
 'dbPath':''
}
让我们分析每一行的含义。

ethPrivateKey: 与您的以太坊帐户关联的私钥。

dappchainPrivateKey: 与您的Loom侧链(即本例中为PlasmaChain)帐户关联的私钥。

plasmaAddress: 您连接的任何以太坊链上的以太坊等离子现金合约地址。如果连接到Rinkeby,则EPC地址为 0xd028e13a0b37e4b758b003a793cb6f0f6531ba75。

startBlock: 部署EPC的块。这用于事件过滤,因此程序只会查看其后的块。

Eth-url: 以太坊节点的URL。默认情况下,本地以太坊节点的URL为http://localhost: 8545.我建议创建一个免费的Infura.io帐户以获取简单的API URL(例如https://rinkeby.infura.io/v3/{YOUR_PROJECT_ID})。

ethEventsUrl: 以太坊事件的URL。这是一个WebSocket(与eth-url HTTP URL不同),它比多个HTTP请求更有效地传输数据,并且总体开销较低。如果您已连接到Rinkeby,请尝试使用  wss: //rinkeby.infura.io/ws。

dappchainUrl: 要与之交互的Loom侧链节点URL。对于PlasmaChain测试网络(extdev),URL为http://test-z-asia1.dappchains.com。

contractName: 这不是必需的,它只会为您提供与您交互的合同的名称; plasmacash应该工作。

dbPath: 这是一个易于访问本地存储数据的路径;对于这个字段,/tmp /pcashDB.jsob就足够了。

使用CLI传输

准备好配置文件后,我们可以使用以下命令启动Plasma Cash CLI工具:: $ plasma-cli --config config.json

您将收到一个空提醒。通常,它只是意味着它初始化CLI工具并准备好接收命令。尝试帮助并获取此新提示将接受的命令列表。

如果我们输入myCoins,我们应该看到[]提醒我们目前没有存款。然后我们在合同中存入了1000000000000,000 Wei(约0.001 ETH),将其变成我们可以在PlasmaChain上使用的货币。

注意:为此,您需要在Rinkeby帐户中使用ETH;否则,您将收到资金不足的错误消息。

$ depositETH 1000000000000000

确认交易大约需要30秒,你最终应该看到这样的事情:
Plasma Cash 开发者指南(+如何使用 Loom 的 Plasma CLI)


请注意,这是两个命令的输出:


depositETH,然后是myCoins,我使用这两个命令来验证我的货币是否正确存入。输出将具有许多< BN: x>,其表示以BigNumber格式编码的大整数(基于以太坊的交互标准)。实际上,我们只需要担心第一行,插槽:< BN: 967 ...>此号码是您的硬币ID,您将用它来转移或退出货币。

由于Plasma Cash的工作方式,当您将Wei转换为Plasma Cash令牌时,令牌代表Wei的全部价值,无法进一步拆分或合并(此功能正在开发中,将来可用)。所以现在你有一个价值0.001 ETH的硬币可供使用。您不能在某处使用0.0005 ETH或将两个0.001 ETH硬币合并为一个0.002 ETH。您必须退出并重新保存才能获得具有不同值的令牌。

如果您尝试转移ERC20或ERC721令牌,则流程相同,但您还需要提供令牌合同的地址:depositERC20< address> <量GT;或  depositERC721< address> < coinId取代。 <地址>字段将是令牌合同的地址。

要将您的货币转移给其他人,您可以使用:

转移< coinId> < newOwner>,在我们的例子中,我们的0.001 ETH硬币是coinId: 96726d ...如输出的插槽字段所示。

这种货币的接收者 - 在他们的CLI上 - 然后应该呼叫接收< coinId>确认货币的所有权。如果他们不这样做,货币仍将被列为发件人所有。

要从等离子现金系统中提取您的货币,您需要退出并最终获得货币。

退出并最终得到一枚硬币

首先,我们需要调用exitCoin< coinId>开始退出。客户将通过向您收取质疑存款来启动退出。在挑战期间收到押金作为停止错误退出的奖励。在此期间,货币的“状态”(如果您通过< coinId>或myCoins获得货币信息)为1,表示货币处于具有挑战性的时期。

在挑战期结束后,我们可以最终确定< coinId>在货币上,将其置于状态2,准备将其取出。然后输入withdraw< coinId>并提取债券以提取硬币并返还您存入的所有资金。

就这么简单!

希望通过Plasma CLI使用Plasma Cash的介绍对您有用。如果您遇到任何问题,请通过电报加入Loom SDK聊天室:https://t.me/LoomSDK,大家将很乐意为您提供帮助。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发