pool v0.5.0-alpha
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
- To simplify the setup, a single macaroon can now be specified for the connection to
lnd
. - A
Stop
RPC call and CLI command was added to properly shut down Pool. - A basic user agent string is sent when creating an account or submitting an order to distinguish usage between CLI and Lightning Terminal users.
- Pool is now licensed under the MIT license.
- A Tor proxy can be specified for the connection to the auction server.
- A
QuoteOrder
RPC call was added that calculates the order submission costs the same way the CLI does.
Contributors (Alphabetical Order)
Carla Kirk Cohen
Grisha Lyukshin
Johan T. Halseth
Mário Havel
Olaoluwa Osuntokun
Oliver Gugger
Pierre Rochard
kon