All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 Charon - 2020-05-29 ⚠️
Added persistence module to persist channel state data and handle client shutdowns/restarts, as well as disconnects/reconnects.
- Persistence:
- Persister, Restorer, ChannelIterator interfaces to allow for multiple
persistence implementations.
- sortedkv implementation provided (in-memory and LevelDB).
- States and signatures are constantly persisted while channels progress.
- Clients restore all saved channels on startup. State is synchronized with peers.
Client.OnNewChannel
callback registration to deal with restored channels.
- Persister, Restorer, ChannelIterator interfaces to allow for multiple
persistence implementations.
- Wallet interface for account unlocking abstraction.
- Used during persistence to restore secret keys for signing.
- Implemented for the Ethereum and simulated backend.
- Peer disconnect/reconnect handling.
Channel.UpdateBy
functional channel update method for better usability.
- License changed to Apache 2.0.
- Replaced
Channel.ListenUpdates
andClient.HandleChannelProposals
withClient.Handle(ProposalHandler, UpdateHandler)
- a single common handler routine per client. - Adapted client to new persistence layer and wallet.
- Made Ethereum interactions idempotent (increased safety).
- Moved subpackage
db
topkg/sortedkv
. - Swapped Balance dimensions of type
channel.Allocation
. - Random type generators in package
channel/test
now accept options to customize random data generation. - Channels now get automatically closed when peers disconnect (and restored on reconnect).
- Ethereum backend: No funding transactions for zero own initial channel balances.
0.2.0 Belinda - 2020-03-23 ⚠️
Added direct disputes and watcher for two-party ledger channels, much polishing (refactors, bug fixes, documentation).
- Ledger state channel disputes and watcher.
channel.Adjudicator
interface and Ethereum implementation for registering channel states and withdrawing concluded channels.- Ethereum contracts for disputes
- Public Github wiki
- Godoc
- Changelog
- TravisCI
- goreportcard
- codeclimate
- TCP and unix socket
peer.Dialer
andListener
implementations. Eventually
tester inpkg/test
to repeatedly run tests until they succeed.- Concurrent testing tool in
pkg/test
to be able to callrequire
in tests with multiple go routines.
client.New
now needs aFunder
andAdjudicator
, instead of aSettler
.Serializable
renamed toSerializer
.- Unified backend imports.
pkg/io/test/bytewiseReader
toiotest.OneByteReader
.- Improved peer message handling mechanism.
- Consistent handling of
nil
arguments in exported functions. - Many refactors to improve the overall code quality and documentation.
- Updated Ethereum contract bindings to newest version.
wallet.Wallet
interface andsim
backend implementation - it was never used.ethereum
andsim/wallet.NewAddressFromBytes
- onlywallet.DecodeAddress
should be used to create anAddress
from bytes.channel/machine
Phase subscription logic.channel.Settler
interface and backend implementations - replaced byAdjudicator
.
- Reduced cyclomatic complexity of complex functions.
- Deadlock in two-party payment channel test.
- Ethereum backend test timeouts and instabilities.
- Many minor bug fixes, mainly concurrency issues in tests.
0.1.0 Ariel - 2019-12-20 ⚠️
Initial release.
- Two-party ledger state channels.
- Cooperatively settling two-party ledger channels.
- Ethereum blockchain backend.
- Logrus logging backend.
⚠️ : This release is not suited for practical use with real money.