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.
Erlay: Bandwidth-Efficient Transaction Relay for Bitcoin

Transaction relay in Bitcoin is currently a simple scheme, any node announces transactions to every peer in its list, in turn every peer announces it to its peers and so on until the whole network is updated. This is simple but not bandwidth efficient as a transaction can reach one node multiple times through multiple peers, this ensures that there is no single point of failure but is highly inefficient.

Currently any node with 8 connections would be using about 18GB of bandwidth per month, if we increase the amount of peers, further enhancing security, we increase the usage, which would discourage some users from owning a node, according to a new research paper almost 44% of all bandwidth used is redundant.

That’s why a group of Bitcoin developers and researchers created Erlay, an efficient transaction relay protocol for Bitcoin, in simple terms the protocol works by optimizing the transaction relay while maintaining the security aspects, it reduces propagated information by using an efficient set of reconciliation method, it is also designed to withstand attacks like denial of service and timing.

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
libwally-core release_0.7.3
  • Exposed ECDH
  • Added py3.7 x86_64 linux wheels to released artifacts
  • Updated JS bindings to support latest nodejs
  • Doc typos and bug fixing.

changelist

2019-07-18
libwally-core release_0.7.2
  • Expose function to validate public key
  • Add functions to derive elements blinding keys as per Trezor
  • In wally_tx_to_bytes and wally_tx_to_hex do not accept WALLY_TX_FLAG_USE_ELEMENTS bit set in flags
2019-07-08
zap-desktop v0.5.1-beta

Bug Fixes

  • backups: do not throw skip backup error (dcd3863), closes #2571
  • deps: update all lodash variants to 4.17.14 (ed65548)
  • deps: update dependency informed to v2.11.7 (c647ec9)
  • deps: update lnd-grpc to v0.3.0-4 (98c9c89)
  • grpc: forward grpc options to getInfo (1044004)
  • i18n: ensure translation files are available (07bab24), closes #2539
  • readme: no shitcoins (43bc531)
  • readme: update screenshot of app (9795054)
  • ui: adjust sidebar variant widths (6652791)
  • ui: display correct invoice expire time (8ddc974), closes #2547
  • ui: ensure MainContent fills horizontal space (a2c47c5)
  • ui: ensure Sidebar always ontop of MainContent (5f993f1)
  • ui: implement wallet creation error handling (dfe5bcd)
  • wallet: add 1 sat buffer to fee limits (c35678b)
  • wallet: ensure routes extract from queryroutes (618ca53)
  • wallet: improve handling of invalid invoices (133aa16)
  • wallet: update suggested-peers api uri (ee2bbe0)
  • wallet: validate currency amounts as numbers (068e812)
2019-07-15
ledger-live-common v7.7.1
  • Fixes "NetworkDown" to properly uses the wording (and similarly, any error that throws inside sync was accidentally obfuscated)
  • ZEC explorer op view to use https://chain.so
  • BTC testnet explorer op view to use blockcypher
  • failsafe to ensure there is never dup accounts after an add account (mainly for mobile)
2019-07-17
ledger-live-common v7.7.0
  • Fixes "NetworkDown" to properly uses the wording (and similarly, any error that throws inside sync was accidentally obfuscated)
  • ZEC explorer op view to use https://chain.so
  • BTC testnet explorer op view to use blockcypher
  • failsafe to ensure there is never dup accounts after an add account (mainly for mobile)
2019-07-16
ledger-live-common v7.6.4
  • @ledgerhq/compressjs@1.3.2
2019-07-16
ledger-live-common v7.6.3
  • @ledgerhq/compressjs@1.3.1
2019-07-16
ledger-live-common v7.6.2
  • fork compressjs to @ledgerhq/compressjs instead of branch github dep
2019-07-16
ledger-live-common v7.6.1
  • update latest erc20 data
2019-07-16
ledger-live-common v7.6.0
  • rename nonce to salt
  • add migrateAccounts
2019-07-16
ledger-live-common v7.5.0
  • enable ethereum_classic update for bridge (used by mobile)
  • update redux@4.0.4
2019-07-16
ledger-live-common v7.4.0
  • Qtum segwit + bugfixes
  • Fixes scanAccountsOnDevice to interrupt everything on unsubscribe
  • update lodash and redux
  • Fixes HTTP layer to not parse/serialize JSON to avoid number problems
2019-07-16
ledger-live-common v7.3.1
  • add shortAddressPreview
  • Preserve account name when updating one
  • use crypto sha256 to hash user ids
  • throw ManagerFirmwareNotEnoughSpaceError to have more contextual info
  • fixes tests
2019-07-09
ledger-live-common v7.2.1
  • lib/user utilities and using a nonce in /get_latest_firmware
  • flow fixes
2019-07-09
ledger-live-common v7.2.0
  • ERC20 operations to use gas limit if gasUsed is zero
  • add USER_ID env
  • add getAccountContractExplorer to explorers and token address for ethereum
2019-07-09
ledger-live-common v7.1.0
  • Add useAllAmount to eth bridge
  • Update ledgerjs + includes new NoAccessToCamera error
2019-07-09
ledger-live-desktop v1.11.0

This release contains some major features, some of which only available in the experimental features in the settings.

🎊 Native SegWit is now available!

Native SegWit, also known as bech32, is a new address format for Bitcoin that is more efficient and thus reduces the requires network fees. Native SegWit addresses for Bitcoin start with bc1.

To start using native SegWit in Ledger Live, please create a new account and transfer your Bitcoin to it.

Not all exchanges or wallet providers support sending to bc1 addresses, therefore Ledger Live still allows you to create compatibility SegWit (3 addresses).

⚙ Rates in Settings

A new settings section has been introduced to show all countervalue rates used by Ledger Live to more easily understand and configure countervalue settings. Find this new section in Settings > Currencies.

Further, a lot of work has been done to improve countervalue stability.

🎊 Experimental Send Max

Sending the whole balance of an account is possible via enabling Experimental Send Max in Settings > Experimental features.

This is still experimental because ETH and XRP are not supported yet.

🎊 Experimental ERC20

> For advanced users, we are releasing ERC20 as an experimental feature. Please be aware that improvements will be made to make it less technical.

To test it you must:

  • Enable Experimental nodes in Settings > Experimental features
  • Enable Experimental Core in Settings > Experimental features
  • Add your Ethereum accounts again to update them with ERC20 functionality.

(See known issues #2172)

Other features

  • Improve Ethereum Gas Limit, calculate it when the address changes, show when it's loading.
  • Account hierarchy so ERC20 tokens can be part of a parent account
  • Possibility to choose ETH as a countervalue
  • Accounts: Better sorting interface
  • Add ETH Ropsten network in Developer Mode.

Bug fixes

  • Fixes XST transactions
  • Fixes Bitcoin fee calculation in the fee-per-byte field
  • Fixes some price overflow cases
  • Polishes in Portfolio distribution section
  • The % delta calculation uses the first non-zero point of the range
  • Various other fixes in user experience
2019-07-09
Samurai Wallet 0.99.82

sha256 hash: 8cf7858e10d908e288b9846c067a0396f538a6b67effcbc8fed8f1dfaca4ffe5

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

Pair Samourai to Dojo (create wallet) 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-07-16
Samurai Wallet 0.99.81

sha256 hash: 073fa50552c07449538bc402519a237eb72f02ecf102bf8a415287a5dda05932

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

Pair Samourai to Dojo (create wallet) 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-07-11
BTC Pay Server v1.0.3.124 2019-07-15
BTC Pay Server v1.0.3.123 2019-07-13
BTC Pay Server v1.0.3.122 2019-07-12
BTC Pay Server v1.0.3.121 2019-07-12
ptarmigan v0.2.3
  • REST APIs need API Token
  • update DB version
    • -70
  • update library
    • mbed TLS 2.16.2
    • bitcoinj v0.15.2
  • some bug fix
2019-07-12
WalletWasabi v1.1.6

Summary

This release, similarly to the previous one, consists mostly of stability improvements. Notable improvements are the implementation of the complete Coldcard PSBT workflow, adding a countdown to the CoinJoin tab that shows the next force start of a round, fixed most "spent issues," adding new options to the Settings page, and opportunistic change consolidation in CoinJoins.

Newbie Guide

While setting up Wasabi is straightforward, even a Linux wizard with the longest beard can get stuck on the most basic tasks. Consider taking a look at the Installation Instructions guide.

Advanced Guide

If you want to build Wasabi from source code or update the source code check out these instructions.

From version 1.1.3 Wasabi also introduces reproducible builds: Deterministic Build Guide

FAQ

  • Can I use my own Tor instance, instead of Wasabi's built in one? If you already have Tor, and it is running, then Wasabi will try to use that first. If it is not running, then Wasabi will use its built-in Tor.
  • Requirements? x64, linux, >win7, >osx.10.12.

Release Notes

2019-07-07

RFC

type rfc # title date status
bip X New BIP: Logarithm of transaction fee limits block size 2019-07-20 Update
bip X BIP-XXXX: Signet 2019-07-20 Update
bip bip-0155 BIP 155: addrv2 BIP proposal 2019-07-18 Update
bip bip-0143 BIP 143: Remove duplicated 'the' 2019-07-18 Update
bip bip-0173 BIP 173: Remove duplicated 'the' 2019-07-18 New PR
bip X Update english.txt 2019-07-14 Closed
bip bip-0174 bip174: add global xpub field 2019-07-10 Merged
bip bip-0301 BIP 301: Blind Merged Mining (Consensus layer) 2019-07-09 Update
bip bip-0174 BIP174: Include suggested sighash check 2019-07-09 Update
bip bip-0002 [Trivial] BIP2, BIP16: fix typos 2019-07-09 Update
bip bip-0158 BIP-158: Remove some remaining "extended" mentions 2019-07-09 Update
bip bip-0158 BIP 158: remove old reference to extended filter type 2019-07-09 Update
bolt routing gossip [WIP] BOLT 7: Inventory-based gossip 2019-07-20 Update
bolt routing gossip BOLT07: correct gossip_timestamp_range to gossip_timstamp_filter 2019-07-19 Merged
bolt routing gossip BOLT07: Inventory Gossip 2019-07-19 Update
bolt X BOLT #7: Correct indentation typo in channel_update message 2019-07-19 Update
bolt X CONTRIBUTING.md: first draft of how to write and change spec. 2019-07-19 Update
bolt X option_static_remotekey: first draft. 2019-07-19 Update
bolt X Simple tooling fixes 2019-07-19 New PR
bolt X Base AMP 2019-07-19 Update
bolt onion routing bolt04: Variable `hop_payload` for the sphinx onion 2019-07-19 Update
bolt X BOLT #7: receiving node requirements related to timestamp for channel_update message 2019-07-18 Merged
bolt routing gossip BOLT7: extend channel range queries with optional fields 2019-07-18 Update
bolt X TLV testcases 2019-07-18 Update
bolt routing gossip BOLT 7: update interpretation of `complete` field within query messages 2019-07-18 Update
bolt transport BOLT-08: replace RFC 7539 with RFC 8439 2019-07-18 New Issue
bolt routing gossip BOLT 07: delay announcement_signatures by max(6, min_depth) confs 2019-07-17 Update
bolt routing gossip BOLT7: Signing channel updates with the same timestamp may get you bl… 2019-07-17 Closed
bolt X [RFC] Push Invoices 2019-07-17 Update
bolt payment encoding BOLT11: Clarification on n field 2019-07-17 Merged
bolt onion routing BOLT 4, 9, 11: Base Atomic Multipath Payments. 2019-07-17 Closed
bolt X tools: update CSV generator to output fields for tlv's and subtypes 2019-07-17 Update
bolt messaging BOLT 1: Add a TLV stream extension to existing messages. 2019-07-17 Update
bolt routing gossip BOLT07: don't send historical updates for gossip_timestamp_filter 2019-07-16 Update
bolt messaging BOLT01: swap CompactSize for BigSize in TLV format 2019-07-16 Update
bolt X Feature bit unification and renaming 2019-07-15 Update
bolt X Added Internal Link to Glossary 2019-07-15 Merged
bolt onchain BOLT 5 : data_loss let you salvage received HTLC on remote commitment 2019-07-12 Closed
bolt onion routing BOLT 04: Add failure code for invalid payload. 2019-07-12 Update
bolt transactions BOLT 3 : remove localpubkey and remote_delayedpubkey references 2019-07-11 Update
bolt peer protocol BOLT 2: remove local/remote from reestablish field names. 2019-07-11 Update
bolt routing gossip BOLT 7: move the rational of `short_channel_id` to the definition 2019-07-11 Merged
bolt routing gossip BOLT7: (announcement_signatures) Fail channel if `short_channel_id` not correct. 2019-07-11 Update
bolt X Transport layer key rotation race condition 2019-07-09 Closed
bolt X Update .aspell.en.pws 2019-07-09 Closed
bolt X Rephrase last node payload requirements 2019-07-09 Update
bolt X Change opcode reference format 2019-07-09 Merged
bolt features BOLT9: Format table 2019-07-09 Update
bolt payment encoding BOLT 11: fix link 2019-07-09 Merged
bolt messaging BOLT 1: Remove git conflict marker 2019-07-09 Merged
bolt X Remove `<<< HEAD` from previous git merge 2019-07-09 Closed
bolt messaging BOLT 1: Spec field formatting and parsing 2019-07-09 Merged
bolt X Waiting room for feature assignments 2019-07-08 Update
bolt messaging BOLT01: TLV proposal 2019-07-08 Merged
bolt routing gossip Draft: BOLT7: The `route_price_update` Message 2019-07-08 Update
bolt transactions BOLT 3: Explicit description of implicitly enforced timelocks on HTLC outputs 2019-07-08 Update
bolt X option_data_loss_protect: concretely define `my_current_per_commitment_point` 2019-07-08 Update
slip X add Xchain application 2019-07-20 New PR
slip slip-0039 SLIP-0039: having weight on some share? 2019-07-18 Closed
slip slip-0044 Update slip-0044.md 2019-07-18 Merged
slip slip-0044 slip-0044: add VESTX 2019-07-17 Merged
slip slip-0044 slip-0044: add ZVC 2019-07-15 Merged
slip slip-0044 Assign bip-044 number to Skycoin 2019-07-14 Update
slip slip-0039 SLIP-0039: Need for Key Generation Date (aka Birthday) 2019-07-12 Closed
slip slip-0044 Update slip-0044.md (Adding SnowGem) 2019-07-12 Update
slip X Add cruzbit 2019-07-12 Merged
slip slip-0044 slip-0044: add MED 2019-07-12 Merged
slip X Add Vidulum 2019-07-11 Merged
slip X Added ABBC constant 2019-07-10 Merged
slip slip-0044 SLIP-044: Correct the official symbol of ndau to XND 2019-07-09 Merged
slip X add LambdaStorage 2019-07-09 Merged
slip slip-0044 slip-0044: add MCASH 2019-07-09 Merged
slip slip-0044 Add CPUchain on BIP-44 2019-07-08 Merged
slip X Add SonicX 2019-07-08 Merged
slip X Patch 2 2019-07-08 Closed
slip X Added XNOS and NOLLAR 2019-07-08 Merged