State Channels 以太坊第2层扩容方案:状态通道、Plasma 和( 五 )


一旦子链创建好并生效后,区块生产者会周期性的向根节点合约发出提交 。也就是他们实际上在说“我提交的 X 是子链中当前最新的区块” 。这些提交被当做子链中事务的证明,记录在链上的根节点里 。
现在子链也准备好了,我们可以创建卡牌交换游戏的基本组件 。这些卡片遵循,在以太坊主链上初始化,然后由根节点转移到子链上 。这里引入了一个关键点: 可以扩展我们与基于区块链的数字资产之间的交互,但是这些资产应当是首先由以太坊主链创建的 。然后,我们将实际的游戏应用程序以智能合约的方式部署到子链上,这样子链就包含了游戏所有的逻辑和规则 。
当用户想要玩游戏时,他们只需要和子链进行交互 。他们可以持有财产( 卡牌),为了以太币购买并交换它们,与其他用户对战,以及其他游戏中允许的行为,而这些过程都不需要与主链进行交互 。因为只有很少的节点(比如,区块生产者)才需要处理交易,这样费用就会降低很多,操作也能更快 。
3 但是这种模式安全吗?
通过将操作从主链迁移到子链上的方式,我们明显可以执行更多的操作了 。但是这样安全吗?发生在子链上的交易是否具备权威性?毕竟,我们方才描述的系统只有一个中心实体控制着子链的区块生产 。这样不是中心化吗?这样公司不是随时都能窃取你的资产或者拿走你的收藏卡牌吗?
简单来说,即使是在子链中完全由一个实体完全控制区块生产的情景下,也能做出你可以随时将你的资产收回到主链上的基本承诺 。如果一个区块生产者开始表现出敌意,最坏的情况也只是强迫你离开这个子链 。
让我们来看下区块生产者表现恶劣的几种方式,同时看下会怎样处理这些情景 。
首先,假设一个区块生产者试图通过说谎欺骗你,他们可以通过创建一个伪造的新区块,声称你的资产被他们接管了 。由于他们是唯一的区块生产者,所以他们可以自由引入一个并不遵循区块链规则的新区块 。和其他区块一样,他们也得将这个区块存在的证据作为提交推送给根节点合约 。
如上所述,用户有能将他们的资产随时收回到主链上的基本保障 。在这个情景下,用户(或者代表他们权益的应用程序)会侦测到这种盗窃的企图,并在区块生产者尝试和使用他们的“被盗”资产之前撤回到主链上 。
还创建了一种防止利用欺诈的机制 。包含了一种任何人(包括你)都可以向根节点合约发布欺诈证明(fraud proof)的机制,这样就可以证明区块生产者作弊了 。这个欺诈证明会包含之前区块的信息,并且允许我们根据子链中的状态交易规则,错误的区块并不能正确接上之前的状态 。如果欺诈被证实,则子链回滚到前一个区块 。更妙的是,我们还构建了一种签出错误区块的区块生产者会被处罚的体系,这些区块生产者会因此丢失一个链上押金 。
.io/.pdf
但是提交欺诈证明需要访问底层数据,即需要用之前的实际历史区块来证明欺诈 。如果区块生产者为了防止爱丽丝能够向根节点合约提交欺诈证明,并不分享之前区块的信息怎么办?
在这种情况下,这个方案就是为了让爱丽丝收回资产并脱离子链而准备的 。根本上来说,爱丽丝向根节点合约提交了一份“欺诈证明” 。在一段任何人都可以质疑证明(比如,显示一些后面的合法区块证明实际上她消费了这些资产)的延迟时段后,爱丽丝的资产将会被移回到以太坊主链上 。
.io/.pdf
最后,区块生产者可以监察子链中的用户 。如果区块生成者愿意,他们可以直接不在其区块中不包含实际事务,从而有效阻止用户在子链上执行任何操作 。如上所述,这个解决方案再一次的直接将我们所有的资产收回到以太坊主链上 。