1个不稳定版本
0.8.9 | 2021年1月3日 |
---|
#85 in #condition
16KB
162 行
cChannel-substrate
概述
CelerPay是一个支持高效离链令牌转移并具有解决链上可验证状态任意条件依赖能力的通用支付网络。此仓库实现了CelerPay运行时模块,基于substrate。它包括一系列运行时模块,作为核心CelerPay抽象和支持模块的绑定。CelerPay运行时模块仅指定两个节点之间的交互逻辑。可以使用这些单跳原语和协议构建支付通道网络。
要了解更多关于Celer状态通道网络的信息,请参阅CelerCore技术文档。更具体地说,此页面详细介绍了我们的智能合约设计、结构和API流程。
Celer状态通道网络由Celer-pay链上运行时模块和Celer-pay离链协议组成。此存储库是Celer-pay链上运行时模块。Celer-pay离链协议尚未实现。
警告:这是一个概念验证原型。此实现尚未准备好投入生产使用。
核心概念
- 节点:通道参与者(目前仅支持双节点通道)。
- 单方向通道:从一个节点到另一个节点的单向支付通道。
- 双向通道:节点之间双向支付通道,包括两个独立的单方向通道。
- 单方向状态:描述单方向通道状态的片段数据。
- 签名单方向状态:由通道参与者签名的单方向状态,作为链上运行时模块和链下通信协议之间的桥梁数据结构。
- 条件:表示条件依赖基本单元的数据结构。
- 转移函数:一组条件上通用状态依赖的高级抽象。
- 条件支付:表示从支付源到支付目的地的实际支付的数据结构。
- 支付来源:发送支付款项的地址,即支付路径的来源。
- 支付目的地:接收支付款项的地址,即支付路径的目的地。
- 凭证条件支付结果:支付来源和支付目的地同意的条件支付的结果。
- PayRegistry:一个全局注册表,用于更新和记录所有支付结果。
- PayIdList:包含支付ID列表和一个指向下一个PayIdList的哈希指针的数据结构,用于批量多支付清算。
- 池:Pool使CelerPay的单笔交易通道开启功能得以实现。
发布特性
- 原生代币支持:用户可以指定polkadot原生代币以开启基于Substrate的通道。
- 通用状态通道:通过依赖虚拟通道解决条件状态依赖。
- 全双工通道:在双工通道中支持两个独立的单工(单向)通道,使得链下通信更加简单和高效。
- 布尔条件接口:定义返回布尔值的条件。
- 布尔AND解析逻辑:基于布尔AND逻辑解析一组条件。
- 布尔OR解析逻辑:基于布尔OR逻辑解析一组条件。
- 数字条件接口:定义返回数字值的条件。
- 数字ADD解析逻辑:基于数字ADD逻辑解析一组条件。
- 数字MAX解析逻辑:基于数字MAX逻辑解析一组条件。
- 数字MIN解析逻辑:基于数字MIN逻辑解析一组条件。
- 单笔交易通道开启:通过原生代币的资金批准,通过一笔链上交易开启通道。
- 动态提款:在通道最终确定之前,只要在挑战期间没有同伴不同意,就可以提取资金。
- 合作动态提款:当双方同伴达成一致时,跳过挑战期并在通道最终确定之前提取资金。
- 轻量级合作链上检查点:支持在链上快照签署状态的传输映射。
- 批量多通道结算:旨在通过一笔链上交易批量结算多个通道。
- 批量多支付清算:使用PayIdList在一笔链上交易中批量清算N笔支付,这只需要O(1)的链上存储和O(n/N)的链上验证来清算n笔支付。
- 合作结算:当双方同伴达成一致时,跳过挑战期并结算通道。
在Docker中运行Celer本地测试网
docker run -p 9944:9944 -p 9615:9615 thashimoto19980924/celer-network:0.8.8
从源代码构建和测试celer-pay运行时模块
- 快速安装
Mac OS,Arch或基于Debian的操作系统如Ubuntu
curl https://getsubstrate.io -sSf | bash -s -- --fast
Debian
sudo apt install -y cmake pkg-config libssl-dev git gcc build-essential clang libclang-dev
MacOS
brew install openssl cmake llvm
- Rust开发者环境
curl https://sh.rustup.rs -sSf | sh
rustup default stable
- Wasm编译
rustup install nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup default stable
- 安装celer-pay运行时模块
git clone [email protected]:celer-network/cChannel-substrate.git
-
进入cChannel-substrate的根目录
-
构建celer-pay运行时模块
cd ./pallets/celer-pay
cargo build --release
- 测试celer-pay运行时模块
cargo test -p celer-pay-module
依赖项
~7.5MB
~139K SLoC