#run-time #module #condition #numeric #substrate #mocking #channel

no-std mock-numeric-condition

模拟数值条件运行时模块

2 个版本

0.8.9 2021年1月3日
0.8.8 2020年10月17日

#74 in #condition


2 crates 中使用

MIT 许可证

5KB

cChannel-substrate

概述

CelerPay 是一个通用的支付网络,支持高效的链下代币传输,并能够解决对链上可验证状态的任意条件依赖。此仓库实现了以 substrate 为基础的 CelerPay 运行时模块。它包括一组运行时模块,作为核心 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运行时模块

  1. 快速安装

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
  1. Rust开发环境
curl https://sh.rustup.rs -sSf | sh
rustup default stable
  1. Wasm编译
rustup install nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup default stable
  1. 安装celer-pay运行时模块
git clone [email protected]:celer-network/cChannel-substrate.git
  1. 进入cChannel-substrate的根目录

  2. 构建celer-pay运行时模块

cd ./pallets/celer-pay
cargo build --release
  1. 测试celer-pay运行时模块
cargo test -p celer-pay-module

project supported by web3 foundation grants program

依赖关系

~7MB
~133K SLoC