go-nitro
go-nitro copied to clipboard
Implementation of nitro-protocol in Go

go-nitro
Implementation of the Nitro State Channels Framework in Golang and Solidity.
go-nitro
is an implementation of a node in a nitro state channel network. It is software that:
- manages a secret "channel" key
- crafts blockchain transactions (to allow the user to join and exit the network)
- crafts, signs, and sends state channel updates to counterparties in the network
- listens to blockchain events
- listens for counterparty messages
- stores important data to allow for recovery from counterparty inactivity / malice
- understands how to perform these functions safely, without risking any funds
Usage
⚠️ Go-nitro is pre-production software ⚠️
Go-nitro can be consumed either as library code or run as an independent process and interfaced with remote procedure calls (recommended).
Contributing
Please see contributing.md
ADRs
Architectural decision records may be viewed here.
Testing
Pre-requisite: generate a TLS certificate
Run the tests from repo root:
go test ./... -count=2 -shuffle=on -timeout 1m -v -failfast
On-chain code
The on-chain component of Nitro (i.e. the solidity contracts) are housed in the nitro-protocol
directory. This directory contains an yarn workspace with a hardhat / typechain / jest toolchain.
License
Dual-licensed under MIT + Apache 2.0
go-nitro
Implementation of the Nitro State Channels Framework in Golang and Solidity.
go-nitro
is an implementation of a node in a nitro state channel network. It is software that:
- manages a secret "channel" key
- crafts blockchain transactions (to allow the user to join and exit the network)
- crafts, signs, and sends state channel updates to counterparties in the network
- listens to blockchain events
- listens for counterparty messages
- stores important data to allow for recovery from counterparty inactivity / malice
- understands how to perform these functions safely, without risking any funds
Usage
⚠️ Go-nitro is pre-production software ⚠️
Go-nitro can be consumed either as library code or run as an independent process and interfaced with remote procedure calls (recommended).
Contributing
Please see contributing.md
ADRs
Architectural decision records may be viewed here.
Testing
Pre-requisite: generate a TLS certificate
Run the tests from repo root:
go test ./... -count=2 -shuffle=on -timeout 1m -v -failfast
On-chain code
The on-chain component of Nitro (i.e. the solidity contracts) are housed in the nitro-protocol
directory. This directory contains an yarn workspace with a hardhat / typechain / jest toolchain.
License
Dual-licensed under MIT + Apache 2.0