Bitcoin Optech Newsletter #49
This week’s newsletter describes the proposed Erlay protocol that could significantly reduce the overhead of relaying unconfirmed transactions between nodes, summarizes an executive briefing by Bitrefill CEO Sergej Kotliar about LN, and lists some recent changes to the COSHV proposal described last week. Also included are our regular sections on bech32 sending support and notable code changes in popular Bitcoin infrastructure projects.
Bitcoin Optech Newsletter #48
This week’s newsletter describes the new proposed OP_CHECKOUTPUTSHASHVERIFY opcode, covers continued discussion of Taproot, and links to a video presentation about handling increasing Bitcoin transaction fees. Also included are our regular sections on bech32 sending support, top-voted Bitcoin StackExchange questions and answers, and notable changes in popular Bitcoin infrastructure projects.

Newsletters

Releases

project release date
ledger-live-common v6.9.0
  • Add getTransactionStatus
  • Fix up LibcoreEthereumAccountBridge for erc20 and useAllAmount
  • getAccountBridge(account,parentAccount) signature to enforce being ready for erc20
2019-06-19
ledger-live-common v6.8.0
  • libcore: fixes "Unknown wrapping OperationType" warning
  • manager app list to return the associated currency
2019-06-18
ledger-live-common v6.7.0
  • Do not generate tokenAccounts array if there are no tokens
2019-06-18
ledger-live-common v6.6.2
  • Fixes mistake to count fee in ERC20 op
2019-06-14
ledger-live-common v6.6.0
  • add optimistic erc20 operation support (+ pendingOperations in token accounts)
  • toOperationRaw/fromOperationRaw to include subOperations by flag
  • downgrade ripple-lib because breaking changes in previous bump
  • add a generic addPendingOperation
2019-06-13
ledger-live-common v6.5.0
  • add getAccountUnit
  • bridge introduces a method prepareTransaction(account, transaction): Promise<transaction> that will complete information for the transaction to be ready. We will use that to fill the gasLimit info. In the future we can unify more stuff in that, like fetching the available fees. We will brainstorm more internally, how often we need to resync with such function / where to do it & do we need more precise lifecycles (before/after?). I think this is the most tricky UI part of our whole application because a lot of mutual dependencies between fields and behavior differences between coins.
  • it also makes libcore bridge ready to use for ERC20
2019-06-13
ledger-live-common v6.4.1
  • add optional setTokenAccount in bridge
  • Add getMainAccount and getAccountCurrency
2019-06-11
ledger-live-common v6.4.0
  • Added useAllAmount field to Transaction
  • fixes explorers for ETC
2019-06-11
ledger-live-common v6.3.0
  • Introduced disableCountervalue on all Currency types
  • single EXPLORER env (v2/v3 urls are now unified)
  • Support ethereum ropsten
  • lazy load libcore in tool
2019-06-07
ledger-live-common v6.2.0

Breaking

  • change Token#parentCurrency to be a Currency type

Bugfix

  • distribution: Switch from ticker to id to fixes accidentally merging tBTC with BTC.

Features

  • libcore ETC
  • add sortAccountsComparatorFromOrder
  • add comparatorSortAccounts
  • add flattenSortAccounts
  • add nestedSortAccounts
  • failsafe to make sure encodeAccountId components don't use ':'

Technical

  • Bump libcore in tool
  • Split src/account.js into src/account/*
2019-06-07
ledger-live-desktop v1.10.2
This release fixes a USB bug, improving connectivity issues for some users. Please uncheck Experimental USB in Settings > Experimental features if you were using Experimental USB.

🐛 Bug fixes

  • Fixed Repair tool.
  • Fixed USB connectivity issues after switching apps.
2019-06-19
ledger-live-desktop v1.10.0

🎊 Features

  • Added distribution and market values of crypto assets.
  • Assets can now be valued in Bitcoin.
  • Various polishes.

🐛 Bug fixes

  • Ethereum Gas limit field is no longer blocked on 21000, fixing a regression.

👨‍🔬 Experimental

  • Native SegWit support is available in the Experimental settings! Known issue: you must clear the cache after sending funds. Please consider operation and balance information to be incorrect until the cache is cleared, a fix is underway.
2019-06-10
ledgerjs v4.62.0
  • Fixes hw-transport-node-hid-singleton close()
2019-06-18
Samurai Wallet 0.99.74

sha256 hash: 5370f7aaefd1fe86e870f82d060e5970a23e9c364044636b105dc71202f99ee5

*** stealth launch, remote commands, SIM switch detection removed until further notice ***

Spend from post-mix Whirlpool PayNym UI updated Whirlpool GUI pairing Tor support for additional architectures New network screen UI New balance screen UI Tor integrated in-app, Tor 0.3.5.8 #Cahoots Easter Egg: 2-wallet coinjoins: Stowaway (payjoin spend), STONEWALLx2 Display transaction entropy pre-spend PayNym: 1-touch "refund" & "pay again" nLockTime staggered Ricochet label your utxos Stowaway on testnet: 2-wallet coinjoin testbed (PayJoin/P2EP) updated fee selection updated spend & receive UI sign messages from Address Calculator txTenna integration bitcoin only, no fiat fx PayNym may use Segwit addresses offline mode address calculation tools PayNym address calculation tool updated receive screen updated transaction sequence: compose-sign-broadcast display wallet amounts by address type full BIP84/bech32 support STONEWALL spend Ricochet 2.0 multi-hop spend sweep BIP84 (Bech32) & BIP49 (P2SH-P2WPKH) private keys displays YPUB of BIP49 account, ZPUB of BIP84 account OXT transaction view batch send improved fee selection & display support for PayNym.is BIP47 payment code directory optional setting: like-typed outputs (better privacy) vs all segwit outputs (lower fees) block utxo of non-broadcast transactions push any signed transaction (hex format) via 'broadcast transaction hex' in settings sign messages with Segwit (P2SH-P2WPKH) privkey like-typed inputs (p2pkh or segwit) will match type of outputs (wallet balance permitting) real time alert if wallet is being "dusted" (ie. incoming tx >546 & <1000) all utxo are now "blockable" and will not be spent if so marked optionally show redeem script of Segwit utxo full support for Segwit (P2SH-P2WPKH) Mule tools (offline transactions) balance & utxo via Samourai backend API fork detection read, validate, sweep OpenDime Segwit & UASF block explorers new metadata format improved wallet recovery UI/UX 0-fee tx possible using trusted node Custom fee lower limit now 1 sat/b Sign messages w/ any utxo privkey Exchange rate modifs (replace Bitcoin Average by Bitfinex) Updated launch icon Optionally show privkey of utxo Opt-in RBF (replace-by-fee) CPFP (child-pays-for-parent) for unconfirmed sent transactions CPFP (child-pays-for-parent) for unconfirmed received transactions display up-to-date miners' fees allow custom fee on spend PoW check when using trusted node spend via preferred trusted full node UTXO list dynamic fee for BIP47 notif tx

2019-06-14
Samurai Wallet 0.99.73

sha256 hash: 8449d8200d7d43e8ee5c1c180009b474f290a31ee0cb08af858caeb10d26024e

*** stealth launch, remote commands, SIM switch detection removed until further notice ***

Spend from post-mix Whirlpool PayNym UI updated Whirlpool GUI pairing Tor support for additional architectures New network screen UI New balance screen UI Tor integrated in-app, Tor 0.3.5.8 #Cahoots Easter Egg: 2-wallet coinjoins: Stowaway (payjoin spend), STONEWALLx2 Display transaction entropy pre-spend PayNym: 1-touch "refund" & "pay again" nLockTime staggered Ricochet label your utxos Stowaway on testnet: 2-wallet coinjoin testbed (PayJoin/P2EP) updated fee selection updated spend & receive UI sign messages from Address Calculator txTenna integration bitcoin only, no fiat fx PayNym may use Segwit addresses offline mode address calculation tools PayNym address calculation tool updated receive screen updated transaction sequence: compose-sign-broadcast display wallet amounts by address type full BIP84/bech32 support STONEWALL spend Ricochet 2.0 multi-hop spend sweep BIP84 (Bech32) & BIP49 (P2SH-P2WPKH) private keys displays YPUB of BIP49 account, ZPUB of BIP84 account OXT transaction view batch send improved fee selection & display support for PayNym.is BIP47 payment code directory optional setting: like-typed outputs (better privacy) vs all segwit outputs (lower fees) block utxo of non-broadcast transactions push any signed transaction (hex format) via 'broadcast transaction hex' in settings sign messages with Segwit (P2SH-P2WPKH) privkey like-typed inputs (p2pkh or segwit) will match type of outputs (wallet balance permitting) real time alert if wallet is being "dusted" (ie. incoming tx >546 & <1000) all utxo are now "blockable" and will not be spent if so marked optionally show redeem script of Segwit utxo full support for Segwit (P2SH-P2WPKH) Mule tools (offline transactions) balance & utxo via Samourai backend API fork detection read, validate, sweep OpenDime Segwit & UASF block explorers new metadata format improved wallet recovery UI/UX 0-fee tx possible using trusted node Custom fee lower limit now 1 sat/b Sign messages w/ any utxo privkey Exchange rate modifs (replace Bitcoin Average by Bitfinex) Updated launch icon Optionally show privkey of utxo Opt-in RBF (replace-by-fee) CPFP (child-pays-for-parent) for unconfirmed sent transactions CPFP (child-pays-for-parent) for unconfirmed received transactions display up-to-date miners' fees allow custom fee on spend PoW check when using trusted node spend via preferred trusted full node UTXO list dynamic fee for BIP47 notif tx

2019-06-11
BTC Pay Server v1.0.3.118 2019-06-18
BTC Pay Server v1.0.3.117 2019-06-13
BTC Pay Server v1.0.3.116 2019-06-11
BTC Pay Server v1.0.3.115 2019-06-11
BTC Pay Server v1.0.3.114 2019-06-06
lnd v0.7.0-beta-rc1

This release marks a new major release of lnd that includes several important bug fixes, an improved payment API, pathfinding enhancements, faster initial sync times, support for fee bumping on sweeps, and an initial rollout of altruistic watchtowers. As always, users are highly encouraged to upgrade to this new version.

Database migrations

This version includes two migrations, the first is in channel.db which modifies the structure of the payment tracking data to support the refactored router and its ability to reliably display payments via the RPC. The migration should look like this:

2019-06-14 21:54:53.576 [INF] LTND: Version: 0.7.0-beta commit=v0.7.0-beta-rc1, build=production, logging=default
2019-06-14 21:54:53.579 [INF] LTND: Active chain: Bitcoin (network=mainnet)
2019-06-14 21:54:53.583 [INF] CHDB: Checking for schema update: latest_version=9, db_version=8
2019-06-14 21:54:53.586 [INF] CHDB: Performing database schema migration
2019-06-14 21:54:53.586 [INF] CHDB: Applying migration #9
2019-06-14 21:54:53.586 [INF] CHDB: Migrating outgoing payments to new bucket structure
2019-06-14 21:54:53.586 [INF] CHDB: Migration of outgoing payment bucket structure completed!

The second migration is in wallet.db, which prunes redundant block data already being stored by the underlying backend. The migration should look like this:

2019-06-14 21:54:53.744 [INF] LNWL: Applying wallet address manager migration #8
2019-06-14 21:54:53.746 [INF] LNWL: Removing block hash entries beyond maximum reorg depth of 10000 from current tip 580748

Once updated, it will not be possible to return to an older version of lnd.

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/bitconner/pgp_keys.asc | gpg --import

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

gpg --verify manifest-v0.7.0-beta.txt.sig

You should see the following if the verification was successful:

gpg: assuming signed data in &#39;manifest-v0.7.0-beta-rc1.txt&#39;       
gpg: Signature made Fri Jun 14 14:24:37 2019 PDT                  
gpg:                using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7                                                           
gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#34; [ultimate]  

That will verify the signature on the main manifest page which ensures integrity and authenticity of the binaries you've downloaded locally. Next, depending on your operating system you should then re-calculate the sha256 sum of the binary, and compare that with the following hashes (which are included in the manifest file):

a0af101b730d3f30cb85d46ce9b70f639ed845318deb72f08196714974a9a4f7  lnd-darwin-386-v0.7.0-beta-rc1.tar.gz
2385d2dcdcf2df7623d51611074968ecc575943e7fd06e0c31821d4454ff1cc4  lnd-darwin-amd64-v0.7.0-beta-rc1.tar.gz
ba584ff4528b7a8e91785c2b53258fcae795d8faa2ab5f71b74a0111ac1ea885  lnd-dragonfly-amd64-v0.7.0-beta-rc1.tar.gz
e19ee77f5c680b3dd9cdd9286273ae076f653e31a930ec2e268ac38a2102c11a  lnd-freebsd-386-v0.7.0-beta-rc1.tar.gz
210f1977bd9e6c1904a9ef215575e7ec43bb52775d04f7e431d9919c1df3c31c  lnd-freebsd-amd64-v0.7.0-beta-rc1.tar.gz
4a1b7783e928ac56887b874851595983e62414a95e67bbd422052a7a75b4a760  lnd-freebsd-arm-v0.7.0-beta-rc1.tar.gz
034570245b113074d9b1ccaf6f74b5fe16d2cd06ba97fe357cd8d77dd3d2f744  lnd-linux-386-v0.7.0-beta-rc1.tar.gz
6cb52c42c6b837b8dda35124cb74c591b3f9167f92e73d0e3ea46b359cb5bdf4  lnd-linux-amd64-v0.7.0-beta-rc1.tar.gz
5f4666a9c12e578c41faea4868cd5ea447dfa0e80ce7a282eced36e1205df968  lnd-linux-arm64-v0.7.0-beta-rc1.tar.gz
0573093e4d84213941adab88cc5cd604f9b3e1344a28bb7b8894d2302fa05022  lnd-linux-armv6-v0.7.0-beta-rc1.tar.gz
24f4860d44d726a0e2fb14c5a368d521637b9ecc009b552a8ce987b0b28f3544  lnd-linux-armv7-v0.7.0-beta-rc1.tar.gz
4ea4e15e4b15c8c2ad86590c30315200090dcb74173448e394e3e4e4dae78415  lnd-linux-mips64-v0.7.0-beta-rc1.tar.gz
4bc989aececec53c42f8d8338e3f25358b0e05de94223259f6222b6230a1c498  lnd-linux-mips64le-v0.7.0-beta-rc1.tar.gz
876996e045ad241b594048223069be2f96dc8c4d46aaf81d7e3c47327c3b6ecc  lnd-linux-ppc64-v0.7.0-beta-rc1.tar.gz
d402847b1efeb039aa72fbf20320df30161a7aa3dca54b09de4b29c8f499f03a  lnd-netbsd-386-v0.7.0-beta-rc1.tar.gz
4cb2996dfb5fa42a9a771f0631631f102080512d406d942d5816ecc9c1d5705e  lnd-netbsd-amd64-v0.7.0-beta-rc1.tar.gz
4e7dd42d39e81cdbfb2de14f67415e0c3c986eeaa7d9ed9ec029b7d6bf963f73  lnd-openbsd-386-v0.7.0-beta-rc1.tar.gz
8bf0514c74d80584d87544f07a2e520ca9311ef7a1a6e42e9029ac8fcb3b533b  lnd-openbsd-amd64-v0.7.0-beta-rc1.tar.gz
f13d1628ccba4bc963e7ed2a81be0ed0cd6c9c11ea71a4a7a68a4ff01d2a4d0b  lnd-source-v0.7.0-beta-rc1.tar.gz
04b0768147197846603a0465b962c6fec3dfb315e3b446b0d148620a81e8266c  lnd-windows-386-v0.7.0-beta-rc1.zip
1a9ee1d3e30e69e14cb00ef982e0a63d05ed39f74e3fc7d3a16b31efe8685a89  lnd-windows-amd64-v0.7.0-beta-rc1.zip
21098c814a77dfdff0bf53329f8337ee69b49fa27829507402934a60147a9dcc  vendor.tar.gz

One can use the shasum -a 256 <file name="" here=""> tool in order to re-compute the sha256 hash of the target binary for your operating system. The produced hash should be compared with the hashes listed above and they should match exactly.

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

git verify-tag v0.7.0-beta

The binaries are compiled with go1.12.6 and include the following build tags: autopilotrpc, signrpc, walletrpc, chainrpc, invoicesrpc, and routerrpc.

Building the Contained Release

With this new version of lnd, we've modified our release process to ensure the bundled release is now fully self contained. As a result, with only the attached payload with this release, users will be able to rebuild the target release themselves without having to fetch any of the dependencies. Note that at this stage, binaries aren't yet fully reproducible (even with go modules). This is due to the fact that by default, Go will include the full directory path where the binary was built in the binary itself. As a result, unless your file system exactly mirrors the machine used to build the binary, you'll get a different binary, as it includes artifacts from your local file system. This will be fixed in go1.13, and before then we may modify our release system to do this automatically.

In order to re-build from scratch, assuming that vendor.tar.gz and lnd-source-v0.7.0-beta.tar.gz are in the current directory:

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.7.0-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.7.0-beta&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.7.0-beta&#34; ./cmd/lncli

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:

LNDBUILDSYS=&#34;linux-arm64 darwin-amd64&#34; ./release.sh

⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️

Release Notes

Coming soon…

Changelog

The full list of changes since 0.6.1-beta can be found here:

Contributors (Alphabetical Order)

AdamISZ chokoboko Conner Fromknecht Daniel McNally Federico Bond Francisco Calderón Geoff Taylor Johan T. Halseth John Griffith Joost Jager Matt Drollette michael1011 Neevai Esinly Olaoluwa Osuntokun Turtle Valentine Wallace Wilmer Paulino Xavi Soler Yaacov Akiba Slama

/conner@lightning.engineering

2019-06-18

RFC

type rfc # title date status
bip bip-0039 Add brazilian portuguese wordlist to BIP39 2019-06-19 Closed
bip X Promote Draft->Final BIPs: 60 and 64 2019-06-13 Update
bip bip-0158 BIP 158: Updated Golomb-Rice Coded sets Reference Implementation link 2019-06-13 Update
bip bip-0158 BIP 158: remove old reference to extended filter type 2019-06-13 New PR
bip bip-0136 BIP 136: Bech32 Encoded Tx Position References 2019-06-13 Merged
bip bip-0001 Create repository for translate Brazilian Portuguese BIP001 2019-06-12 Update
bip bip-0174 bip174: add global xpub field 2019-06-11 Update
bip bip-0038 [bip38] Consistent hyphenation usage 2019-06-10 Update
bolt onion routing bolt04: Variable `hop_payload` for the sphinx onion 2019-06-19 Update
bolt X BOLT #7: receiving node requirements related to timestamp for channel_update message 2019-06-19 Update
bolt peer protocol BOLT 02: clarify that announcement_signatures is a BOLT 7 msg 2019-06-19 Update
bolt onion routing bolt04: Multi-frame sphinx onion routing proposal 2019-06-18 Closed
bolt messaging BOLT 1: Spec field formatting and parsing 2019-06-18 Update
bolt messaging BOLT01: TLV proposal 2019-06-17 Update
bolt X I can has extension? 2019-06-17 Update
bolt payment encoding BOLT11 Use formal grammar to express invoice format 2019-06-15 Update
bolt X Single-option large channel proposal 2019-06-14 Update
bolt X tools: update CSV generator to output fields for tlv's and subtypes 2019-06-14 Update
bolt routing gossip [WIP] BOLT 7: Inventory-based gossip 2019-06-14 Update
bolt onion routing BOLT 4: Merge final_expiry_too_soon into incorrect_or_unknown_payment 2019-06-12 Update
bolt routing gossip BOLT7: extend channel range queries with optional fields 2019-06-11 Update
bolt X Feature bit unification and renaming 2019-06-10 Update
bolt X Onion format variation a-la @roasbeef (vs #593) 2019-06-10 Closed
bolt X Specify tlv format 2019-06-10 Closed
bolt onion routing BOLT4: Correct hop count clarification 2019-06-06 Update
bolt peer protocol BOLT 2: Must not send identical fee changes 2019-06-06 Update
slip slip-0039 SLIP-0039 Credit? 2019-06-19 New Issue
slip slip-0044 Add QLC for QLC Chain in slip-0044 2019-06-19 Update
slip X Fix Ycash name typo 2019-06-18 Merged
slip X Add YCash(YEC) 2019-06-17 Merged
slip slip-0044 Adding Auxilium coin to slip-0044 2019-06-16 Merged
slip slip-0077 Create slip-0077.md 2019-06-15 Update
slip slip-0044 slip-0044: add DECENT (DCT) 2019-06-13 Merged
slip slip-0048 slip-0048: add DECENT (DCT) 2019-06-12 Merged
slip X Add VBank coin 2019-06-11 Closed
slip slip-0044 Update slip-0044.md 2019-06-11 Closed
slip slip-0044 Update slip-0044.md 2019-06-11 Merged
slip X Updated symbol of Hedera HBAR from HBAR to XHB 2019-06-10 Merged
slip X mtns added No.513 2019-06-08 Merged