构建Plasma链0x1
Plasma是由Joseph Poon和Vitalik Buterin提出的区块链扩展解决方案,利用子链回报根链(以太坊) 的方式来提高交易流量,并最小化小链通常伴随的安全考量。OMG (OmiseGO) 的分布式交易所将采Plasma的设计。我们将利用Plasma 支援可扩展且完全链上的交易所,在不牺牲安全性下。本文我将会描述我们如何构建Plasma。
目标:产生不需要依赖自己安全性的区块链
安全性会构建在使用者离开子链,当有错误发生。以下说明如何工作:
如果有无效的交易被包含在子链,那所有用户必须七天内离开。 如果用户无法存取子链,但他所在子链的区块已递交到母链,用户必须要能重新存取子链,所以要能检查有效性,或是在七天内离开该子链。 提款(撤离)会参照之前交易的产生顺序进行处理,从未花费的UTXO 选择最旧的交易,参照其在母链所在区块的最小高度会优先于之后的区块。这可使最新的无效交易,在处理的优先权低于急于提款离开的旧交易。 只在交易的拥有者确认其交易在母链上已被转换且确认时,交易才被视为有效。
Responsibility Breakdown (任务拆分)
Client (客户端) — 监看Ethereum 且运行子链,当侦测到诈欺的行为就立即离开。 Child chain (子链) — 监看在Ethereum 上deposit 的行为,并执行所有与该子链目前状态相关的计算。 Root chain (根链) — 透过智能合约锚钉子链在Ethereum 链上,处理子链上要存款与离开(提款)的业务,当收到足够的资讯进行确认与处理,或是拒绝诈欺的提款(离开)。 Parent chain (母链) — 作用是保护子链,在MVP 上母链等同于根链。但在最终版本上,子链上可能会有多个母链,但只有一个根链。
Deposits (存款)
为了使用Plasma 链,使用者需要将他们的资产(以太币或代币) 从母链移动到子链,为了进行存款,使用者将他们资产转移到适当的Plsama 智能合约,该合约运行在以太坊上。
在MVP 中,存款的行为有所简化,不同于Plasma 白皮书中般复杂。在Plasma 上的存款会立即被纪录到子链的母链纪录上,并且没有机会取消存款。相比于取消存款,使用者可以更希望能立刻提款。
对存款方没有额外风险, 一旦转移资产的合约交易被确认,则可提领资产。即使在子链上没有反映相应的存款,存款方仍可提领他们的资产。
Withdrawals (提款)
为了将资金转回母链,使用者可以进行提款。使用者可能只是简单地将资金转回到母链并持有。或当使用者侦测到有故障的子链时,可以进行提款,使用者可能失去资金,如果未能即使反应的话。
有两类的提款行为,第一类是简单地提款(simple withdrawals),子链上的单一参与方进行提款,第二类则是,多个参与方同时进行大量提款(mass withdrawals ),大量提款因为较为复杂,会在之后的文章说明。
当使用者要从Plasma 链提领资金,提领依交易被产生的顺序(先来的先离开) 而被提款离开,提款流程会在挑战期结束后完成,在挑战期间,任何人都可以提出欺诈行为的证据。
Simple Withdrawals (简单地提款)
简单提款包含下列四个步骤:
使用者向母链上的智能合约递交提款请求。 提款请求会进入一段时间的挑战期,在此期间,任何人都可向智能合约递交双花的支付证据,证明该提领请求是无效的。如果挑战成功,则尝试提款退出的使用者将无法提领。 如果提款请求被发现是无效的,提领者会被处罚,回报者会被奖励。如果在挑战期结束前没有收到成功的挑战,那提领者提领成功。目前背后的经济激励设计尚未完成。
Finality (最终性)
有两种型态的最终性:
子链的最终性(Child chain finality) — 取决于子链使用的共识演算法,我们选择PoS 根链的最终性(Root chain finality) — 取决于根链使用的共识演算法,以太坊目前使用PoW
子链的最终性和安全性取决于根链,所有Plasma 链的安全保证假设来自以太坊正常工作
关于Plasma MVP 的一些事项
目前使用Proof of Authority, PoS 将会之后加上 不使用保证金来处罚诈欺 如果有个无效的交易被包含进子链,需要每个人立即退出子链 子链会依赖于以太坊本身的最终性(区块确认数)
Plasma 的MVP 面向
理解其对于以太坊主链扩展性的潜力 被用来建立OMG分布式交易所,为主流金融使用预备
随着OmiseGO 进一步对Plasma 的发展,这个设计会演进并扩展到Plasma 和OmiseGO 白皮书中描述的其他功能。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。