Skip to content

pool v0.5.0-alpha

Compare
Choose a tag to compare
@Roasbeef Roasbeef released this 26 May 16:59
· 437 commits to master since this release
2e85746

This marks the 5th major release of poold! This release includes initial support for the new sidecar channels feature, adds a new SelfBalance field to Bid orders to allow dual funded channels, adds a new endpoint for observing real-time market data, and includes several bug fixes!

Verifying the Release

In order to verify the release, you'll need to have gpg or gpg2 installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:

curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import

Once you have the required PGP keys, you can verify the release (assuming manifest-v0.5.0-alpha.txt and manifest-v0.5.0-alpha.txt.asc are in the current directory) with:

gpg --verify manifest-v0.5.0-alpha.txt.asc

You should see the following if the verification was successful:

gpg: assuming signed data in 'manifest-v0.5.0-alpha.txt'
gpg: Signature made Wed May 26 00:04:18 2021 PDT
gpg:                using RSA key 60A1FA7DA5BFF08BDCBBE7903BBD59E99B280306
gpg: Good signature from "Olaoluwa Osuntokun <laolu32@gmail.com>" [ultimate]

That will verify the signature of the manifest file, which ensures integrity and authenticity of the archive you've downloaded locally containing the binaries. Next, depending on your operating system, you should then re-compute the sha256 hash of the archive with shasum -a 256 <filename>, compare it with the corresponding one in the manifest file, and ensure they match exactly.

Verifying the Release Binaries

Our release binaries are fully reproducible. Third parties are able to verify that the release binaries were produced properly without having to trust the release manager(s). See our reproducible builds guide for how this can be achieved. The release binaries are compiled with go1.15.5, which is required by verifiers to arrive at the same ones.

The make release command can be used to ensure one rebuilds with all the same flags used for the release. If one wishes to build for only a single platform, then make release sys=<OS-ARCH> tag=<tag> can be used.

Finally, you can also verify the tag itself with the following command:

The signature on the tag itself can be verified with:

git verify-tag v0.5.0-alpha

Building the Contained Release

Users are able to rebuild the target release themselves without having to fetch any of the dependencies. In order to do so, assuming that vendor.tar.gz and poold-source-v0.5.0-alpha.tar.gz are in the current directory, follow these steps:

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.5.0-alpha.tar.gz
GO111MODULE=on go install -v -mod=vendor ./cmd/poold
GO111MODULE=on go install -v -mod=vendor ./cmd/pool

The -mod=vendor flag tells the go build command that it doesn't need to fetch the dependencies, and instead, they're all enclosed in the local vendor directory.

Additionally, it's now possible to use the enclosed release.sh script to bundle a release for a specific system like so:

make release sys="linux-arm64 darwin-amd64"

Release Notes

RPC Changes

New GetInfo RPC

A new GetInfo RPC call was added that shows useful information:

  • Version of the trader daemon and synced block height
  • Own node rating and batch/account/order summary
  • Current market statistics (see below)
  • The state of the --newnodesonly flag.
  • Auctioneer connection and LSAT token statistics

Market Information within GetInfo

The GetInfo call has been enhanced to include additional information related to the current market depth interest in the auction. The new field present in the GetInfo response looks something like:

       "market_info": {
                "2016": {
                        "num_asks": [
                                {
                                        "tier": "TIER_0",
                                        "value": 112
                                },
                                {
                                        "tier": "TIER_1",
                                        "value": 65
                                }
                        ],
                        "num_bids": [
                                {
                                        "tier": "TIER_0",
                                        "value": 3
                                },
                                {
                                        "tier": "TIER_1",
                                        "value": 34
                                }
                        ],
                        "ask_open_interest_units": [
                                {
                                        "tier": "TIER_0",
                                        "value": 1308
                                },
                                {
                                        "tier": "TIER_1",
                                        "value": 11204
                                }
                        ],
                        "bid_open_interest_units": [
                                {
                                        "tier": "TIER_0",
                                        "value": 15
                                },
                                {
                                        "tier": "TIER_1",
                                        "value": 5874
                                }
                        ]
                }
        }

Bug Fixes

A bug has been fixed that would cause Python gRPC clients to be unable to connect to the main auctioneer server.

If the main Pool database is locked by another instance of poold an error is now returned instead of blocking indefinitely.

Market Order Enhancements

Sidecar Channels

This release includes preliminary support for sidecar channels! Sidecar channels are a new order variant that allows a party Alice to buy a channel for another peer Bob, using Carol as the source of inbound liquidity. Sidecar channels allows users to be on boarded directly onto Lightning with a minimal amount of on-chain transactions, as each funded channel is batched along-side a normal auction batch.

A series of new RPCs have been added to permit the creation and registration of a sidecar ticket. Once negotiation has been completed (either automatically or manually) a bid with a new field set is submitted to the marketplace. After the bid has been matched, during execution rather than creating a channel between the marker and taker, the maker establishes a connection to the sidecar channel recipient to complete the funding flow. All parties fully verify the integrity of any proposed channel or funding states to ensure the new contract is executed properly.

Check out out high level walk through for more information on how sidecar channels work in practice.

Dual Funding Support

Bid orders have gained a new self_chan_balance field that allows the taker of a liquidity match to also commit funds to the channel. These funds are debited from their on-chain Pool account, and are made available in the channel via the use of the existing push_amt field in the BOLT funding protocol. The end result is channels that start out as balanced (potentially 50/50) enabling a cheaper way for a node to allocate outbound bandwidth and gain inbound bandwidth when compared to submitting an ask and a bid.

Miscellaneous improvements

Contributors (Alphabetical Order)

Carla Kirk Cohen
Grisha Lyukshin
Johan T. Halseth
Mário Havel
Olaoluwa Osuntokun
Oliver Gugger
Pierre Rochard
kon