风险提示:理性看待区块链,提高风险意识!
技术指南 | plasma-core实现的架构
首页 > 币界资讯 > 区块链新闻 2019-05-28 13:17:58
币界网报道:

Plasma是一系列协议,允许个人轻松部署高吞吐量,安全的区块链。即使“Plasma”完全恶意行事,以太坊主链上的智能合约也可以确保用户的资金安全。这消除了对像侧链那样的可靠挂钩机制的需要。Plasma是非监管的,允许在不牺牲安全性的情况下确定可扩展性的优先级。

我们设想了许多Plasma的未来,让用户可以自由选择交易地点。因此,在发布我们的Plasma实施的同时,我们创建了PlasmaRegistry.vy。注册表允许新链通过列出其IP / DNS地址,自定义“名称”字符串及其合同地址来加入网络。注册管理机构合同会验证可信部署,因此用户可以放心,注册管理机构上的任何合同都可以安全存入 。

这篇文章主要说明Plasma目前的协议、进展和来自研究界的最新发展。

Plasma具有以下属性:

  • Plasma Cash中的“固定面额”问题。
  • 区块大小是随交易数量而变化,而不是存款数量。
  • 轻客户端证明,其以区块大小的对数进行缩放和区块线性存储,使得运算符成为系统唯一的(计算)瓶颈。
  • 退出过程,允许出口仅指定最近的事务,而不是事务及其父事务。
  • 链间原子交换,为分散交换协议奠定了基础。
  • 无限存款容量。
我们的实现遵循上述规范,提供以下内容:
  • 用Javascript编写的命令行Plasma 操作符。
  • 用Javascript编写的Plasma 客户端实现并带有命令行钱包。
  • 支持使用Vyper编写的ETH和ERC20令牌的智能合约。
  • 集成的JSON RPC,允许客户端下载和验证轻客户端证明和交易。
  • Plasma 操作员块浏览器。
  • 模拟客户端群,生成要加载测试的事务。
  • Plasma “注册”合同,列出了一组经过验证的安全合同和运营商IP地址供用户探索。
本文的其余部分将全面深入探讨我们的规范,代码所在的位置以及它的作用。

我们的Github根据MIT许可提供我们的所有实施:

plasma操作员:启动自己的plasma并部署到testnet。

plasma-core:核心plasma客户端功能 - 兼顾逻辑。

plasma-node:用于实现CLI的plasma-core的Node.js包装器

plasma-js-lib:用于构建集成plasma事务的Web应用程序的JS帮助程序。

plasma合约:PlasmaChain.vy和PlasmaRegistry.vy Vyper合约。

plasma-explorer:由运营商托管的块浏览器。

plasma-utils:用于建立plasma规格的共享实用程序。

plasma:上述组件的集成测试。

以下是plasma-core实现的架构:

plasma操作员实现的架构:

1、一般定义和数据结构

本节将介绍协议组件的术语。这些数据结构由plasma utils的库序列化进行编码和解码。在模式中可以找到每个结构的所有数据结构的精确字节/字节二进制表示。

代币ID分配

任何plasma 资产的基本单位表示为硬币,与标准的plasma cash一样,这些硬币是不可替代的,我们将代币的索引称为coinID,16字节。它们按照每个资产(ERC 20 / ETH)的存款顺序分配。值得注意的是,链中的所有资产共享相同的ID空间,即使它们是不同的ERC20或ETH。这意味着跨所有资产类(我们称之为tokenType或token)的事务共享同一个树,从而提供最大压缩。

我们通过让前4个字节引用硬币的tokenType来实现这一点,接下来的12个代表该特定tokenType的所有可能硬币。

例如:第0个tokenType始终为ETH,因此第一个ETH存款将给予存款人硬币0x00000000000000000000000000000000的支出权利。

每次存款收到的总硬币精确地(存放的令牌数量)/(最小标记面额)很多。

例如:假设tokenType 1为DAI,硬币面额为0.1 DAI,第一个存款人发送0.5 DAI。这意味着它的tokenType == 1,因此第一个存款人将从0x00000001000000000000000000000000收到coinID,包括硬币0x00000001000000000000000000000004。

面额

实际上,面额将远远低于0.1。它不直接在合同中存储面额,而是为每种标记类型存储一个小数集映射,表示存放的ERC20(或ETH的WEI)数量与收到的等离子币数量之间的小数点移位。这些计算可以在智能合约中的Depositerc20、Depositeth和FinalizeExit函数中找到。

//注意:对于此版本,decimalOfsets被硬编码为0,因为我们在客户端/操作员代码中缺乏支持。

2、硬币的交易范围内

转移

事务由指定的块编号和Transfer对象数组组成,它们描述了每个事务范围的详细信息。 来自plasma-utils中的模式(长度,以字节为单位):

我们可以看到,事务中的每个Transfer都指定了tokenType,start,end,sender和recipient。

类型化和非类型化界限

上面要注意的一点是,起始值和结束值不是像coinid那样的16个字节,而是12个字节。在上述有关存款的章节中,这应该是有意义的。为了获得传输描述的实际coinID,我们将令牌字段的4个字节连接到start和end的左边。我们通常将12字节版本称为transfer的untypedStart和untypedEnd,其中连接版本称为typedStart和typedEnd。这些值也由序列化器公开。

另一个注意事项:在任何转移中,相应的coinID定义为包含start和end exclusive。也就是说,传输的确切coinID是[typedStart,typedEnd]。例如,前100个ETH硬币可以使用Transfer传输,其中transfer.token = 0,transfer.start = 0,transfer.end = 100.第二个100将具有transfer.start = 100和transfer.end = 200 。

多重和转移/交易原子性

事务模式由一个4字节的块编号组成(事务只有在特定的等离子块中包含时才有效)和一个Transfer对象数组。这意味着事务可以描述多个传输,这些传输要么全部原子执行,要么不依赖于整个事务的包含和有效性。这将成为后续版本中分散交换和碎片整理的基础。

 

序列化

如上所示,plasma-utils实现了用于数据结构的自定义序列化库。 JSON RPC和智能合约都使用由序列化程序编码的字节数组。

编码非常简单,每个值的串联,固定为模式定义的字节数。

对于涉及可变大小数组的编码,例如包含一个或多个传输的事务对象,单个字节数先于单个字节。 可以在此处找到序列化库的测试。

目前,我们有以下对象的模式:

  • Transfer
  • UnsignedTransaction
  • Signature
  • SignedTransaction
  • TransferProof
  • TransactionProof
本文转载公众号:区块链研究实验室

海纳学院的内容将围绕:区块链技术,产品社群,经济模型等全方位的知识体系输出。欢迎联系作者微信:csschan1120

上一篇: 美国蒙大拿州立法承认功能型代币豁免证券法,全球监管更进一步
下一篇: 微软在你的Excel里藏了比特币:BTC被列入货币选项
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
比特币
60850.01 USDT
¥442,209.19
-1.38%
Solana
142.79 USDT
¥1,037.68
-2.99%
Curve
0.2871 USDT
¥2.09
-0.1%
Beta Finance
0.081694 USDT
¥0.59
-16.58%
Filecoin
4.4918 USDT
¥32.64
+0.52%
狗狗币
0.1252 USDT
¥0.91
+1.29%
柚子
0.5958 USDT
¥4.33
+2.51%
Conflux
0.1663 USDT
¥1.21
-0.72%
Shiba Inu
1.725E-5 USDT
¥0.00
-1.15%
波场
0.1232 USDT
¥0.90
+0.65%
dYdX
1.404 USDT
¥10.20
+0.37%
Arweave
26.5075 USDT
¥192.64
-0.54%
最新快讯
更多
币界网最新行情晚报:LINK价格达14.22美元/枚,日内跌幅-2.02%
2024-06-29 00:41:24
比特小鹿租赁俄亥俄州工业园区来扩大其挖矿业务
2024-06-29 00:34:28
美国总统辩论结束后Solana生态Meme币TREMP市值超越BODEN
2024-06-29 00:32:00
ETH短线跌破3400USDT,24H跌幅1.1%
2024-06-29 00:28:13
美联储理事鲍曼:美国国会似乎对央行数字货币没有太多兴趣
2024-06-29 00:28:06
CoinbaseDerivatives向CFTC申请上线SHIB、LINK、AVAX、XLM和DOT期货合约
2024-06-29 00:25:06
CoinbaseDerivatives向美CFTC申请上线受监管的SHIB、LINK、AVAX、XLM和DOT期货合约
2024-06-29 00:25:06
下载币界网APP