{"content":{"title":"以太坊Layer2扩容方案之State Channel","body":">本系列文章：\r\n[以太坊Layer2扩容方案之State Channel](https://learnblockchain.cn/article/8405)\r\n[以太坊Layer2扩容方案之Sidechain](https://learnblockchain.cn/article/8406)\r\n[以太坊Layer2扩容方案之Plasma](https://learnblockchain.cn/article/8407)\r\n[以太坊Layer2扩容方案之Rollup](https://learnblockchain.cn/article/8408)\r\n[以太坊Layer2扩容方案之Validium](https://learnblockchain.cn/article/8409)\r\n# 一 什么是通道，为什么需要通道?\r\n## 1.1 为什么需要通道?\r\n区块链随着用户量和交易量的增加，导致交易拥堵，交易速度慢，费用较高。因此，需要增加区块链的扩展性，那么通道就是扩展方案之一。\r\n\r\n## 1.2 什么是通道?\r\n第一: 通道是一种解决区块链扩容问题的方案，是一个点对点(p2p)网络或者协议，它允许通道双方可以进行多笔交易，将最后处理和计算的结果提交链上, 在链上进行签名验证和结算。通道区分为支付通道和状态通道，状态通道是在支付通道基础上衍生而来的\r\n\r\n第二: 通道通过链下交易，来减少与主链的直接交互，减轻主链的负担，也可以减少用户的成本\r\n\r\n第三: 每一条通道，由主链上的多签智能合约管理，要打开一个通道，双方需要在链上部署合约，然后存入一定数量的资产\r\n\r\n第四: 当通道建立时，双方创建一个初始状态，记录双方的初始余额(例如，Alice 5 ETH，Bob 5 ETH)。双方对初始状态进行签名并各自保存一份签名状态。初始状态可能存储在双方的本地数据库或安全存储中\r\n\r\n第五: 当关闭通道的时候，需要双方确认最终状态，生成最终状态签名。然后提交最终状态到区块链，区块链进行签名验证和结算，正式关闭通道。\r\n\r\n\r\n# 二 状态通道工作原理和流程\r\n## 2.1 创建和部署多签合约，建立通道\r\n### 2.1.1 部署多签合约\r\nL1主链需要部署多签合约来管理通道，该合约需要交易双方存入一定资金，并且锁定，直到通道关闭，结算完成，释放资金\r\n\r\n### 2.1.2 存入资金\r\n合约部署之后或者已经部署了，那么交易双方需要各存入一定数量的资金，然后资金会锁定在当前多签合约\r\n\r\n## 2.2 链下交易\r\n### 2.2.1 生成初始状态\r\n当通道建立时，双方创建一个初始状态，记录双方的初始余额(例如，Alice 5 ETH，Bob 5 ETH)。双方对初始状态进行签名并各自保存一份签名状态。初始状态可能存储在双方的本地数据库或安全存储中。\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/06/HU4xOeLO66728ade42580.png)\r\n\r\n### 2.2.2 进行交易\r\nAlice向Bob支付1 ETH。\r\n交易后，新的余额状态为：Alice 4 ETH，Bob 6 ETH。\r\n双方对新的余额状态签名确认。\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/06/LypN9lH8667290f15a214.png)\r\n\r\n### 2.2.3 多次交易\r\n双方可以继续进行多次交易，每次交易后更新余额状态并签名确认。例如，Bob向Alice支付2 ETH后，新的余额状态为：Alice 6 ETH，Bob 4 ETH。\r\n这些交易数据保存在Alice和Bob的本地，不立即提交到区块链\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/06/jaq00Len6672910f616b1.png)\r\n\r\n## 2.3 关闭通道\r\n### 2.3.1 准备关闭通道\r\n#### 2.3.1.1 确认最终状态\r\nAlice和Bob需要确认当前最新的交易状态，并确保双方都同意这个状态。这个状态记录了最新的余额分配情况(例如，Alice 6 ETH，Bob 4 ETH)。\r\n\r\n#### 2.3.1.2 生成最终状态签名\r\n双方对最终状态进行签名，生成包含最终余额和双方签名的信息\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/06/Cbig2Psu6672912b01a02.png)\r\n### 2.3.2 提交最终状态到区块链\r\nAlice和Bob中的任何一方都可以将最终状态提交到区块链。提交的内容包括最终状态的余额分配和双方的签名。\r\n### 2.3.3 验证和结算\r\n#### 2.3.3.1 验证签名\r\n在区块链上验证提交的签名，确保提交的最终状态是双方认可的。验证逻辑通常包括检查签名的有效性以及签名是否匹配最终状态。\r\n\r\n#### 2.3.3.2 余额结算\r\n验证通过后，智能合约按照最终状态的余额分配，将资金从多签名地址释放给双方。资金按最终状态的余额分配给Alice和Bob，例如：Alice 6 ETH，Bob 4 ETH。\r\n\r\n#### 2.3.3.3 标记通道关闭\r\n智能合约将通道状态标记为已关闭，防止再次提交状态。\r\n\r\n# 三 为什么通道要设计成多签合约?\r\n通道合约设计成多签合约主要是为了确保双方的资金安全，并且需要双方共同同意才能进行资金转移。这种设计提供了一层额外的安全保障，防止任何一方在没有得到对方同意的情况下独自操作资金。以下是为什么通道合约设计成多签合约的几个关键原因：\r\n## 3.1 确保资金安全\r\n在多签合约中，资金的转移需要得到多个签名的授权（通常是双方的签名）。这确保了单方面无法擅自转移资金，增强了资金的安全性。\r\n\r\n## 3.2 防止欺诈\r\n多签合约可以有效防止任何一方试图进行欺诈操作。因为任何资金的移动都需要双方签名确认，这确保了所有交易都是双方同意的。\r\n\r\n## 3.3 实现链下交易的签名确认机制\r\n多签合约允许在链下进行多次交易，每次交易后通过签名确认更新状态。最终状态在双方同意后提交到链上结算。这种机制需要双方的签名确认，确保每一步操作都是透明和被认可的。\r\n\r\n## 3.4 确保通道关闭的正确性\r\n在关闭通道时，多签合约确保最终状态的提交和结算需要双方的同意。这避免了任何一方单方面关闭通道并获取不公平的余额分配。\r\n\r\n\r\n# 四 状态通道优缺点比较\r\n## 4.1 优点\r\n第一: 交易成本低，提升了交易效率\r\n第二: 数据不上链，具有较强的隐私性\r\n第三: 存在挑战期，具有较强的安全性\r\n\r\n## 4.2 缺点\r\n第一: 存在挑战期，提现速度慢\r\n第二: 链下不支持智能合约\r\n第三: 要求交易双方必须同时在线\r\n参与方需要保持连接，在线的话能够及时接收和处理交易状态更新以及参与争议解决；如果一方试图恶意关闭通道或提交错误的状态，在线的另一方可以及时介入，通过链上的争议解决机制\r\n第四:  参与主体有限\r\n一个通道一般就2个参与方，不能太多人参与\r\n第五:  不适用于大规模网络，扩展性较差"},"author":{"user":"https://learnblockchain.cn/people/6614","address":null},"history":"bafkreigpk6ojexb2ln6tf7twjxwpp4i7tka7bxcea7d2yuiux2rtj3mxvq","timestamp":1718792081,"version":1}