Perun Polkadot Pallet provides go-perun state channels for all Substrate compatible blockchains.
Using it in your blockchain means to include it just like any other Substrate Pallet.
src/
tests/
- Cargo.toml module info and dependencies
A channel is opened by depositing funds for it into the contract by calling Deposit
.
The participants of the channel can then do as many off-chain channel updates as they want.
When all participants come to the conclusion that the channel should be closed, they set the final flag on the channel state, and call ConcludeFinal
.
All of them can then withdraw the outcome by calling Withdraw
.
Dispute. If the participants do not arrive at a final channel state off-chain, they need to resolve a dispute on-chain.
This allows any participant to enforce the last valid state, i.e., the mutually-signed state with the highest version number.
A dispute is initiated by calling Dispute
with the latest available state.
A registered state can be refuted within a specified challenge period by calling Dispute
with a newer state.
After the challenge period, the dispute can be concluded by calling Conclude
and the funds can be withdrawn.
On-chain progression. This is an optional phase for channels with an app. It takes place after the dispute registration and allows to update the channel state without full consenus by calling the function Progress
.
The tests require at least rust version 1.52.0
and can be run with:
cargo test
or in docker:
# Run this each time you change something.
docker build -t perun .
docker run --rm perun
The benchmarks use cryptographic primitives which are only available in a Substrate node.
A node is provided by the Polkadot Node repo of which this repo is a sub-repo.
Have a look there for instructions on how to run the benchmarks.
The in-code documentation can be opened with:
cargo doc --no-deps --open --package pallet-perun
The development of this project is supported by the Web3 Foundation through the Open Grants Program.
The development of the go-perun library is supported by the German Ministry of Education and Science (BMBF) through a Startup Secure grant.
This software is still under development. The authors take no responsibility for any loss of digital assets or other damage caused by the use of it.
Copyright 2022 PolyCrypt GmbH.
Use of the source code is governed by the Apache 2.0 license that can be found in the LICENSE file.