After running Celer state channel network on the Ethereum mainnet for one and a half years, we are now excited to announce the release of the Celer state channel substrate modules built by our developer community, which mark our first milestone to introduce generalized state channel as a layer-2 scaling solution to Polkadot. These modules can be used to start a new parachain to host and operate state channels. Other substrates can also import these modules to become compatible to send conditional payments and resolve off-chain state transition dependencies.
Our release comes with two substrate modules: a generalized payment channel that supports efficient off-chain token transfer with conditions on on-chain verifiable states, an application state channel framework that can express any logic to produce outcomes to serve as payment conditions. More details of the celer state channel architecture can be found here.
What features are supported in this release?
The generic payment state channel substrate module has achieved 100% feature parity with our state channel contracts on Ethereum, which includes a full-duplex channel with all necessary operations for the full channel life cycle. Namely the following:
- Native token Support: users can specify polkadot native token to open a Substrate-based channel.
- Generalized State Channel: resolves conditional state dependency by relying on dependent virtual channels.
- Fully Duplex Channel: supports two independent simplex (single-direction) channels in a duplex channel, which makes off-chain communications much simpler and more efficient.
- Boolean Condition Interface: defines the condition that returns boolean value.
- Boolean AND Resolution Logic: resolves a group of conditions based on boolean AND logic.
- Boolean OR Resolution Logic: resolves a group of conditions based on boolean OR logic.
- Numeric Condition Interface: defines the condition that returns numeric value.
- Numeric ADD Resolution Logic: resolves a group of conditions based on numeric ADD logic.
- Numeric MAX Resolution Logic: resolves a group of conditions based on numeric MAX logic.
- Numeric MIN Resolution Logic: resolves a group of conditions based on numeric MIN logic.
- Single-transaction Channel Opening: opens channel with a single on-chain transaction through funds approval for native token.
- Dynamic Withdraw: withdraws fund before channel finalized as long as no peers disagree during challenge period.
- Cooperative Dynamic Withdraw: skips challenge period and withdraws fund before channel finalized when both peers reach an agreement.
- Lightweight cooperative on-chain checkpoint: support snapshotting transfer map of co-signed states on-chain.
- Batch Multi-Channel Settlements: intends to settle multiple channels in one batch with a single on-chain transaction.
- Batch Multi-Payment Clearing: clears N payments in one batch with a single on-chain transaction using PayIdList, which only requires O(1) on-chain storage and O(n/N) on-chain verifications to clear n payments.
- Cooperative Settle: skips challenge period and settles a channel when both peers reach an agreement.
One difference is that instead of using protobuf, the substrate state channel module currently uses parity-scale-codec for state channel messages. We have provided a docker image and demo client to test the core functionalities of the payment channel.
Our ongoing work will support accelerated cross-parachain fast transactions with liquidity providers backing the multi-hop state channel transaction. This will enable faster “chain-hopping” with low-cost micro payments among Polkadot parachains and complement the existing cross-chain infrastructure provided by Polkadot. To achieve that, we are working on XCMP and potentially SPREE integration, and adding functionality to accept tokens from other parachains to use in the Celer state channel substrate parachain for deposits and liquidity. We also plan to release the Off-chain Service Provider plugin for Polkadot in the future releases.
This will make Celer network a bridging infrastructure to support efficient and fast asset transfers between different parachains in Polkadot.