Jump to content
hash.bg - биткойн форум

admin

Administrators
  • Мнения

    392
  • Присъединил/а се

  • Последно посещение

  • Days Won

    17

admin last won the day on Юни 4

admin had the most liked content!

1 Последовател

Относно admin

  • Ранг
    Administrator

Profile Information

  • Gender
    Not Telling

Последни посетители

3025 профилни разглеждания
  1. 0.20.0 Release Notes Bitcoin Core version 0.20.0 is now available from: https://bitcoincore.org/bin/bitcoin-core-0.20.0/ This release includes new features, various bug fixes and performance improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: https://github.com/bitcoin/bitcoin/issues To receive security and update notifications, please subscribe to: https://bitcoincore.org/en/list/announcements/join/ How to Upgrade If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes in some cases), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). Upgrading directly from a version of Bitcoin Core that has reached its EOL is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Core are generally supported. Compatibility Bitcoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them. It is not recommended to use Bitcoin Core on unsupported systems. From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no longer supported. Additionally, Bitcoin Core does not yet change appearance when macOS “dark mode” is activated. Known Bugs The process for generating the source code release (“tarball”) has changed in an effort to make it more complete, however, there are a few regressions in this release: The generated configure script is currently missing, and you will need to install autotools and run ./autogen.sh before you can run ./configure. This is the same as when checking out from git. Instead of running make simply, you should instead run BITCOIN_GENBUILD_NO_GIT=1 make. Notable changes P2P and network changes Removal of BIP61 reject network messages from Bitcoin Core The -enablebip61 command line option to enable BIP61 has been removed. (#17004) This feature has been disabled by default since Bitcoin Core version 0.18.0. Nodes on the network can not generally be trusted to send valid messages (including reject messages), so this should only ever be used when connected to a trusted node. Please use the alternatives recommended below if you rely on this removed feature: Testing or debugging of implementations of the Bitcoin P2P network protocol should be done by inspecting the log messages that are produced by a recent version of Bitcoin Core. Bitcoin Core logs debug messages (-debug=<category>) to a stream (-printtoconsole) or to a file (-debuglogfile=<debug.log>). Testing the validity of a block can be achieved by specific RPCs: submitblock getblocktemplate with 'mode' set to 'proposal' for blocks with potentially invalid POW Testing the validity of a transaction can be achieved by specific RPCs: sendrawtransaction testmempoolaccept Wallets should not assume a transaction has propagated to the network just because there are no reject messages. Instead, listen for the transaction to be announced by other peers on the network. Wallets should not assume a lack of reject messages means a transaction pays an appropriate fee. Instead, set fees using fee estimation and use replace-by-fee to increase a transaction’s fee if it hasn’t confirmed within the desired amount of time. The removal of BIP61 reject message support also has the following minor RPC and logging implications: testmempoolaccept and sendrawtransaction no longer return the P2P reject code when a transaction is not accepted to the mempool. They still return the verbal reject reason. Log messages that previously reported the reject code when a transaction was not accepted to the mempool now no longer report the reject code. The reason for rejection is still reported. Updated RPCs The RPCs which accept descriptors now accept the new sortedmulti(...) descriptor type which supports multisig scripts where the public keys are sorted lexicographically in the resulting script. (#17056) The walletprocesspsbt and walletcreatefundedpsbt RPCs now include BIP32 derivation paths by default for public keys if we know them. This can be disabled by setting the bip32derivs parameter to false. (#17264) The bumpfee RPC’s parameter totalFee, which was deprecated in 0.19, has been removed. (#18312) The bumpfee RPC will return a PSBT when used with wallets that have private keys disabled. (#16373) The getpeerinfo RPC now includes a mapped_as field to indicate the mapped Autonomous System used for diversifying peer selection. See the -asmap configuration option described below in New Settings. (#16702) The createmultisig and addmultisigaddress RPCs now return an output script descriptor for the newly created address. (#18032) Build System OpenSSL is no longer used by Bitcoin Core. (#17265) BIP70 support has been fully removed from Bitcoin Core. The --enable-bip70 option remains, but it will throw an error during configure. (#17165) glibc 2.17 or greater is now required to run the release binaries. This retains compatibility with RHEL 7, CentOS 7, Debian 8 and Ubuntu 14.04 LTS. (#17538) The source code archives that are provided with gitian builds no longer contain any autotools artifacts. Therefore, to build from such source, a user should run the ./autogen.sh script from the root of the unpacked archive. This implies that autotools and other required packages are installed on the user’s system. (#18331) New settings New rpcwhitelist and rpcwhitelistdefault configuration parameters allow giving certain RPC users permissions to only some RPC calls. (#12763) A new -asmap configuration option has been added to diversify the node’s network connections by mapping IP addresses Autonomous System Numbers (ASNs) and then limiting the number of connections made to any single ASN. See issue #16599, PR #16702, and the bitcoind help for more information. This option is experimental and subject to removal or breaking changes in future releases, so the legacy /16 prefix mapping of IP addresses remains the default. (#16702) Updated settings All custom settings configured when Bitcoin Core starts are now written to the debug.log file to assist troubleshooting. (#16115) Importing blocks upon startup via the bootstrap.dat file no longer occurs by default. The file must now be specified with -loadblock=<file>. (#17044) The -debug=db logging category has been renamed to -debug=walletdb to distinguish it from coindb. The -debug=db option has been deprecated and will be removed in the next major release. (#17410) The -walletnotify configuration parameter will now replace any %w in its argument with the name of the wallet generating the notification. This is not supported on Windows. (#13339) Removed settings The -whitelistforcerelay configuration parameter has been removed after it was discovered that it was rendered ineffective in version 0.13 and hasn’t actually been supported for almost four years. (#17985) GUI changes The “Start Bitcoin Core on system login” option has been removed on macOS. (#17567) In the Peers window, the details for a peer now displays a Mapped AS field to indicate the mapped Autonomous System used for diversifying peer selection. See the -asmap configuration option in New Settings, above. (#18402) A “known bug” announced in the release notes of version 0.18 has been fixed. The issue affected anyone who simultaneously used multiple Bitcoin Core wallets and the GUI coin control feature. (#18894) For watch-only wallets, creating a new transaction in the Send screen or fee bumping an existing transaction in the Transactions screen will automatically copy a Partially-Signed Bitcoin Transaction (PSBT) to the system clipboard. This can then be pasted into an external program such as HWI for signing. Future versions of Bitcoin Core should support a GUI option for finalizing and broadcasting PSBTs, but for now the debug console may be used with the finalizepsbt and sendrawtransaction RPCs. (#16944, #17492) Wallet The wallet now by default uses bech32 addresses when using RPC, and creates native segwit change outputs. (#16884) The way that output trust was computed has been fixed, which affects confirmed/unconfirmed balance status and coin selection. (#16766) The gettransaction, listtransactions and listsinceblock RPC responses now also include the height of the block that contains the wallet transaction, if any. (#17437) The getaddressinfo RPC has had its label field deprecated (re-enable for this release using the configuration parameter -deprecatedrpc=label). The labels field is altered from returning JSON objects to returning a JSON array of label names (re-enable previous behavior for this release using the configuration parameter -deprecatedrpc=labelspurpose). Backwards compatibility using the deprecated configuration parameters is expected to be dropped in the 0.21 release. (#17585, #17578) Documentation changes Bitcoin Core’s automatically-generated source code documentation is now available at https://doxygen.bitcoincore.org. (#17596) Low-level changes Utilities The bitcoin-cli utility used with the -getinfo parameter now returns a headers field with the number of downloaded block headers on the best headers chain (similar to the blocks field that is also returned) and a verificationprogress field that estimates how much of the best block chain has been synced by the local node. The information returned no longer includes the protocolversion, walletversion, and keypoololdest fields. (#17302, #17650) The bitcoin-cli utility now accepts a -stdinwalletpassphrase parameter that can be used when calling the walletpassphrase and walletpassphrasechange RPCs to read the passphrase from standard input without echoing it to the terminal, improving security against anyone who can look at your screen. The existing -stdinrpcpass parameter is also updated to not echo the passphrase. (#13716) Command line Command line options prefixed with main/test/regtest network names like -main.port=8333 -test.server=1 previously were allowed but ignored. Now they trigger “Invalid parameter” errors on startup. (#17482) New RPCs The dumptxoutset RPC outputs a serialized snapshot of the current UTXO set. A script is provided in the contrib/devtools directory for generating a snapshot of the UTXO set at a particular block height. (#16899) The generatetodescriptor RPC allows testers using regtest mode to generate blocks that pay an arbitrary output script descriptor. (#16943) Updated RPCs The verifychain RPC default values are now static instead of depending on the command line options or configuration file (-checklevel, and -checkblocks). Users can pass in the RPC arguments explicitly when they don’t want to rely on the default values. (#18541) The getblockchaininfo RPC’s verificationprogress field will no longer report values higher than 1. Previously it would occasionally report the chain was more than 100% verified. (#17328) Tests It is now an error to use an unqualified walletdir=path setting in the config file if running on testnet or regtest networks. The setting now needs to be qualified as chain.walletdir=path or placed in the appropriate [chain] section. (#17447) -fallbackfee was 0 (disabled) by default for the main chain, but 0.0002 by default for the test chains. Now it is 0 by default for all chains. Testnet and regtest users will have to add fallbackfee=0.0002 to their configuration if they weren’t setting it and they want it to keep working like before. (#16524) Build system Support is provided for building with the Android Native Development Kit (NDK). (#16110) 0.20.0 change log Mining #18742 miner: Avoid stack-use-after-return in validationinterface (MarcoFalke) Block and transaction handling #15283 log: Fix UB with bench on genesis block (instagibbs) #16507 feefilter: Compute the absolute fee rather than stored rate (instagibbs) #16688 log: Add validation interface logging (jkczyz) #16805 log: Add timing information to FlushStateToDisk() (jamesob) #16902 O(1) OP_IF/NOTIF/ELSE/ENDIF script implementation (sipa) #16945 introduce CChainState::GetCoinsCacheSizeState (jamesob) #16974 Walk pindexBestHeader back to ChainActive().Tip() if it is invalid (TheBlueMatt) #17004 Remove REJECT code from CValidationState (jnewbery) #17080 Explain why fCheckDuplicateInputs can not be skipped and remove it (MarcoFalke) #17328 GuessVerificationProgress: cap the ratio to 1 (darosior) #17399 Templatize ValidationState instead of subclassing (jkczyz) #17407 node: Add reference to mempool in NodeContext (MarcoFalke) #17708 prevector: Avoid misaligned member accesses (ajtowns) #17850,#17896,#17957,#18021,#18021,#18112 Serialization improvements (sipa) #17925 Improve UpdateTransactionsFromBlock with Epochs (JeremyRubin) #18002 Abstract out script execution out of VerifyWitnessProgram() (sipa) #18388 Make VerifyWitnessProgram use a Span stack (sipa) #18433 serialization: prevent int overflow for big Coin::nHeight (pierreN) #18500 chainparams: Bump assumed valid hash (MarcoFalke) #18551 Do not clear validationinterface entries being executed (sipa) P2P protocol and network code #15437 Remove BIP61 reject messages (MarcoFalke) #16702 Supply and use asmap to improve IP bucketing in addrman (naumenkogs) #16851 Continue relaying transactions after they expire from mapRelay (ajtowns) #17164 Avoid allocating memory for addrKnown where we don’t need it (naumenkogs) #17243 tools: add PoissonNextSend method that returns mockable time (amitiuttarwar) #17251 SocketHandler logs peer id for close and disconnect (Sjors) #17573 Seed RNG with precision timestamps on receipt of net messages (TheBlueMatt) #17624 Fix an uninitialized read in ProcessMessage(…, “tx”, …) when receiving a transaction we already have (practicalswift) #17754 Don’t allow resolving of std::string with embedded NUL characters. Add tests (practicalswift) #17758 Fix CNetAddr::IsRFC2544 comment + tests (tynes) #17812 config, net, test: Asmap feature refinements and functional tests (jonatack) #17951 Use rolling bloom filter of recent block txs for AlreadyHave() check (sdaftuar) #17985 Remove forcerelay of rejected txs (MarcoFalke) #18023 Fix some asmap issues (sipa) #18054 Reference instead of copy in BlockConnected range loop (jonatack) #18376 Fix use-after-free in tests (vasild) #18454 Make addr relay mockable, add test (MarcoFalke) #18458 Add missing cs_vNodes lock (MarcoFalke) #18506 Hardcoded seeds update for 0.20 (laanwj) #18808 Drop unknown types in getdata (jnewbery) #18962 Only send a getheaders for one block in an INV (jnewbery) Wallet #13339 Replace %w by wallet name in -walletnotify script (promag) #15931 Remove GetDepthInMainChain dependency on locked chain interface (ariard) #16373 bumpfee: Return PSBT when wallet has privkeys disabled (instagibbs) #16524 Disable -fallbackfee by default (jtimon) #16766 Make IsTrusted scan parents recursively (JeremyRubin) #16884 Change default address type to bech32 (instagibbs) #16911 Only check the hash of transactions loaded from disk (achow101) #16923 Handle duplicate fileid exception (promag) #17056 descriptors: Introduce sortedmulti descriptor (achow101) #17070 Avoid showing GUI popups on RPC errors (MarcoFalke) #17138 Remove wallet access to some node arguments (jnewbery) #17237 LearnRelatedScripts only if KeepDestination (promag) #17260 Split some CWallet functions into new LegacyScriptPubKeyMan (achow101) #17261 Make ScriptPubKeyMan an actual interface and the wallet to have multiple (achow101) #17290 Enable BnB coin selection for preset inputs and subtract fee from outputs (achow101) #17373 Various fixes and cleanup to keypool handling in LegacyScriptPubKeyMan and CWallet (achow101) #17410 Rename db log category to walletdb (like coindb) (laanwj) #17444 Avoid showing GUI popups on RPC errors (take 2) (MarcoFalke) #17447 Make -walletdir network only (promag) #17537 Cleanup and move opportunistic and superfluous TopUp()s (achow101) #17553 Remove out of date comments for CalculateMaximumSignedTxSize (instagibbs) #17568 Fix when sufficient preset inputs and subtractFeeFromOutputs (achow101) #17677 Activate watchonly wallet behavior for LegacySPKM only (instagibbs) #17719 Document better -keypool as a look-ahead safety mechanism (ariard) #17843 Reset reused transactions cache (fjahr) #17889 Improve CWallet:MarkDestinationsDirty (promag) #18034 Get the OutputType for a descriptor (achow101) #18067 Improve LegacyScriptPubKeyMan::CanProvide script recognition (ryanofsky) #18115 Pass in transactions and messages for signing instead of exporting the private keys (achow101) #18192,#18546 Bugfix: Wallet: Safely deal with change in the address book (luke-jr) #18204 descriptors: Improve descriptor cache and cache xpubs (achow101) #18274 rpc/wallet: Initialize nFeeRequired to avoid using garbage value on failure (kallewoof) #18312 Remove deprecated fee bumping by totalFee (jonatack) #18338 Fix wallet unload race condition (promag) RPC and other APIs #12763 Add RPC Whitelist Feature from #12248 (JeremyRubin) #13716 cli: -stdinwalletpassphrase and non-echo stdin passwords (kallewoof) #16689 Add missing fields to wallet rpc help output (ariard) #16821 Fix bug where duplicate PSBT keys are accepted (erasmospunk) #16899 UTXO snapshot creation (dumptxoutset) #17156 psbt: Check that various indexes and amounts are within bounds (achow101) #17264 Set default bip32derivs to true for psbt methods (Sjors) #17283 improve getaddressinfo test coverage, help, code docs (jonatack) #17302 cli: Add “headers” and “verificationprogress” to -getinfo (laanwj) #17318 replace asserts in RPC code with CHECK_NONFATAL and add linter (adamjonas) #17437 Expose block height of wallet transactions (promag) #17519 Remove unused COINBASE_FLAGS (narula) #17578 Simplify getaddressinfo labels, deprecate previous behavior (jonatack) #17585 deprecate getaddressinfo label (jonatack) #17746 Remove vector copy from listtransactions (promag) #17809 Auto-format RPCResult (MarcoFalke) #18032 Output a descriptor in createmultisig and addmultisigaddress (achow101) #18122 Update validateaddress RPCExamples to bech32 (theStack) #18208 Change RPCExamples to bech32 (yusufsahinhamza) #18268 Remove redundant types from descriptions (docallag) #18346 Document an RPCResult for all calls; Enforce at compile time (MarcoFalke) #18396 Add missing HelpExampleRpc for getblockfilter (theStack) #18398 Fix broken RPCExamples for waitforblock(height) (theStack) #18444 Remove final comma for last entry of fixed-size arrays/objects in RPCResult (luke-jr) #18459 Remove unused getbalances() code (jonatack) #18484 Correctly compute redeemScript from witnessScript for signrawtransaction (achow101) #18487 Fix rpcRunLater race in walletpassphrase (promag) #18499 Make rpc documentation not depend on call-time rpc args (MarcoFalke) #18532 Avoid initialization-order-fiasco on static CRPCCommand tables (MarcoFalke) #18541 Make verifychain default values static, not depend on global args (MarcoFalke) #18809 Do not advertise dumptxoutset as a way to flush the chainstate (MarcoFalke) #18814 Relock wallet only if most recent callback (promag) GUI #15023 Restore RPC Console to non-wallet tray icon menu (luke-jr) #15084 Don’t disable the sync overlay when wallet is disabled (benthecarman) #15098 Show addresses for “SendToSelf” transactions (hebasto) #15756 Add shortcuts for tab tools (promag) #16944 create PSBT with watch-only wallet (Sjors) #16964 Change sendcoins dialogue Yes to Send (instagibbs) #17068 Always generate bitcoinstrings.cpp on make translate (D4nte) #17096 Rename debug window (Zero-1729) #17105 Make RPCConsole::TabTypes an enum class (promag) #17125 Add toolTip and placeholderText to sign message fields (dannmat) #17165 Remove BIP70 support (fanquake) #17180 Improved tooltip for send amount field (JeremyCrookshank) #17186 Add placeholder text to the sign message field (Danny-Scott) #17195 Send amount placeholder value (JeremyCrookshank) #17226 Fix payAmount tooltip in SendCoinsEntry (promag) #17360 Cleaning up hide button tool tip (Danny-Scott) #17446 Changed tooltip for ‘Label’ & ‘Message’ text fields to be more clear (dannmat) #17453 Fix intro dialog labels when the prune button is toggled (hebasto) #17474 Bugfix: GUI: Recognise NETWORK_LIMITED in formatServicesStr (luke-jr) #17492 Bump fee returns PSBT on clipboard for watchonly-only wallets (instagibbs) #17567 Remove macOS start on login code (fanquake) #17587 Show watch-only balance in send screen (Sjors) #17694 Disable 3rd-party tx-urls when wallet disabled (brakmic) #17696 Force set nPruneSize in QSettings after the intro dialog (hebasto) #17702 Move static placeholder texts to forms (laanwj) #17826 Log Qt related info (hebasto) #17886 Restore English translation option (achow101) #17906 Set CConnman byte counters earlier to avoid uninitialized reads (ryanofsky) #17935 Hide HD & encryption icons when no wallet loaded (brakmic) #17998 Shortcut to close ModalOverlay (emilengler) #18007 Bugfix: GUI: Hide the HD/encrypt icons earlier so they get re-shown if another wallet is open (luke-jr) #18060 Drop PeerTableModel dependency to ClientModel (promag) #18062 Fix unintialized WalletView::progressDialog (promag) #18091 Pass clientmodel changes from walletframe to walletviews (jonasschnelli) #18101 Fix deprecated QCharRef usage (hebasto) #18121 Throttle GUI update pace when -reindex (hebasto) #18123 Fix race in WalletModel::pollBalanceChanged (ryanofsky) #18160 Avoid Wallet::GetBalance in WalletModel::pollBalanceChanged (promag) #18360 Bump transifex slug and update English translations for 0.20 (laanwj) #18402 Display mapped AS in peers info window (jonatack) #18492 Translations update pre-branch (laanwj) #18549 Fix Window -> Minimize menu item (hebasto) #18578 Fix leak in CoinControlDialog::updateView (promag) #18894 Fix manual coin control with multiple wallets loaded (promag) Build system #16667 Remove mingw linker workaround from win gitian descriptor (fanquake) #16669 Use new fork of osslsigncode for windows gitian signing (fanquake) #16949 Only pass –disable-dependency-tracking to packages that understand it (fanquake) #17008 Bump libevent to 2.1.11 in depends (stefanwouldgo) #17029 gitian: Various improvements for windows descriptor (dongcarl) #17033 Disable _FORTIFY_SOURCE when enable-debug (achow101) #17057 Switch to upstream libdmg-hfsplus (fanquake) #17066 Remove workaround for ancient libtool (hebasto) #17074 Added double quotes (mztriz) #17087 Add variable printing target to Makefiles (dongcarl) #17118 depends macOS: point –sysroot to SDK (Sjors) #17231 Fix boost mac cross build with clang 9+ (theuni) #17265 Remove OpenSSL (fanquake) #17284 Update retry to current version (RandyMcMillan) #17308 nsis: Write to correct filename in first place (dongcarl) #17324,#18099 Update univalue subtree (MarcoFalke) #17398 Update leveldb to 1.22+ (laanwj) #17409 Avoid hardcoded libfaketime dir in gitian (MarcoFalke) #17466 Fix C{,XX} pickup (dongcarl) #17483 Set gitian arch back to amd64 (MarcoFalke) #17486 Make Travis catch unused variables (Sjors) #17538 Bump minimum libc to 2.17 for release binaries (fanquake) #17542 Create test utility library from src/test/util/ (brakmic) #17545 Remove libanl.so.1 from ALLOWED_LIBRARIES (fanquake) #17547 Fix configure report about qr (hebasto) #17569 Allow export of environ symbols and work around rv64 toolchain issue (laanwj) #17647 lcov: filter depends from coverage reports (nijynot) #17658 Add ability to skip building qrencode (fanquake) #17678 Support for S390X and POWER targets (MarcoFalke) #17682 util: Update tinyformat to upstream (laanwj) #17698 Don’t configure xcb_proto (fanquake) #17730 Remove Qt networking features (fanquake) #17738 Remove linking librt for backwards compatibility (fanquake) #17740 Remove configure checks for win libraries we don’t link against (fanquake) #17741 Included test_bitcoin-qt in msvc build (sipsorcery) #17756 Remove WINDOWS_BITS from build system (fanquake) #17769 Set AC_PREREQ to 2.69 (fanquake) #17880 Add -Wdate-time to Werror flags (fanquake) #17910 Remove double LIBBITCOIN_SERVER linking (fanquake) #17928 Consistent use of package variable (Bushstar) #17933 guix: Pin Guix using guix time-machine (dongcarl) #17948 pass -fno-ident in Windows gitian descriptor (fanquake) #18003 Remove –large-address-aware linker flag (fanquake) #18004 Don’t embed a build-id when building libdmg-hfsplus (fanquake) #18051 Fix behavior when ALLOW_HOST_PACKAGES unset (hebasto) #18059 Add missing attributes to Win installer (fanquake) #18104 Skip i686 build by default in guix and gitian (MarcoFalke) #18107 Add cov_fuzz target (MarcoFalke) #18135 Add –enable-determinism configure flag (fanquake) #18145 Add Wreturn-type to Werror flags, check on more Travis machines (Sjors) #18264 Remove Boost Chrono (fanquake) #18290 Set minimum Automake version to 1.13 (hebasto) #18320 guix: Remove now-unnecessary gcc make flag (dongcarl) #18331 Use git archive as source tarball (hebasto) #18397 Fix libevent linking for bench_bitcoin binary (hebasto) #18426 scripts: Previous_release: improve behaviour on failed download (theStack) #18429 Remove double LIBBITCOIN_SERVER from bench-Makefile (brakmic) #18528 Create test_fuzz library from src/test/fuzz/fuzz.cpp (brakmic) #18558 Fix boost detection for arch armv7l (hebasto) #18598 gitian: Add missing automake package to gitian-win-signer.yml (achow101) #18676 Check libevent minimum version in configure script (hebasto) #18945 Ensure source tarball has leading directory name (laanwj) Platform support #16110 Add Android NDK support (icota) #16392 macOS toolchain update (fanquake) #16569 Increase init file stop timeout (setpill) #17151 Remove OpenSSL PRNG seeding (Windows, Qt only) (fanquake) #17365 Update README.md with working Android targets and API levels (icota) #17521 Only use D-Bus with Qt on linux (fanquake) #17550 Set minimum supported macOS to 10.12 (fanquake) #17592 Appveyor install libevent[thread] vcpkg (sipsorcery) #17660 Remove deprecated key from macOS Info.plist (fanquake) #17663 Pass -dead_strip_dylibs to ld on macOS (fanquake) #17676 Don’t use OpenGL in Qt on macOS (fanquake) #17686 Add -bind_at_load to macOS hardened LDFLAGS (fanquake) #17787 scripts: Add macho pie check to security-check.py (fanquake) #17800 random: don’t special case clock usage on macOS (fanquake) #17863 scripts: Add macho dylib checks to symbol-check.py (fanquake) #17899 msvc: Ignore msvc linker warning and update to msvc build instructions (sipsorcery) #17916 windows: Enable heap terminate-on-corruption (fanquake) #18082 logging: Enable thread_local usage on macos (fanquake) #18108 Fix .gitignore policy in build_msvc directory (hebasto) #18295 scripts: Add macho lazy bindings check to security-check.py (fanquake) #18358 util: Fix compilation with mingw-w64 7.0.0 (fanquake) #18359 Fix sysctl() detection on macOS (fanquake) #18364 random: remove getentropy() fallback for macOS < 10.12 (fanquake) #18395 scripts: Add pe dylib checking to symbol-check.py (fanquake) #18415 scripts: Add macho tests to test-security-check.py (fanquake) #18425 releases: Update with new Windows code signing certificate (achow101) #18702 Fix ASLR for bitcoin-cli on Windows (fanquake) Tests and QA #12134 Build previous releases and run functional tests (Sjors) #13693 Add coverage to estimaterawfee and estimatesmartfee (Empact) #13728 lint: Run the ci lint stage on mac (Empact) #15443 Add getdescriptorinfo functional test (promag) #15888 Add wallet_implicitsegwit to test the ability to transform keys between address types (luke-jr) #16540 Add ASSERT_DEBUG_LOG to unit test framework (MarcoFalke) #16597 travis: Run full test suite on native macos (Sjors) #16681 Use self.chain instead of ‘regtest’ in all current tests (jtimon) #16786 add unit test for wallet watch-only methods involving PubKeys (theStack) #16943 Add generatetodescriptor RPC (MarcoFalke) #16973 Fix combine_logs.py for AppVeyor build (mzumsande) #16975 Show debug log on unit test failure (MarcoFalke) #16978 Seed test RNG context for each test case, print seed (MarcoFalke) #17009, #17018, #17050, #17051, #17071, #17076, #17083, #17093, #17109, #17113, #17136, #17229, #17291, #17357, #17771, #17777, #17917, #17926, #17972, #17989, #17996, #18009, #18029, #18047, #18126, #18176, #18206, #18353, #18363, #18407, #18417, #18423, #18445, #18455, #18565 Add fuzzing harnesses (practicalswift) #17011 ci: Use busybox utils for one build (MarcoFalke) #17030 Fix Python Docstring to include all Args (jbampton) #17041 ci: Run tests on arm (MarcoFalke) #17069 Pass fuzzing inputs as constant references (practicalswift) #17091 Add test for loadblock option and linearize scripts (fjahr) #17108 fix “tx-size-small” errors after default address change (theStack) #17121 Speed up wallet_backup by whitelisting peers (immediate tx relay) (theStack) #17124 Speed up wallet_address_types by whitelisting peers (immediate tx relay) (theStack) #17140 Fix bug in blockfilter_index_tests (jimpo) #17199 use default address type (bech32) for wallet_bumpfee tests (theStack) #17205 ci: Enable address sanitizer (asan) stack-use-after-return checking (practicalswift) #17206 Add testcase to simulate bitcoin schema in leveldb (adamjonas) #17209 Remove no longer needed UBSan suppressions (issues fixed). Add documentation (practicalswift) #17220 Add unit testing for the CompressScript function (adamjonas) #17225 Test serialisation as part of deserialisation fuzzing. Test round-trip equality where possible (practicalswift) #17228 Add RegTestingSetup to setup_common (MarcoFalke) #17233 travis: Run unit and functional tests on native arm (MarcoFalke) #17235 Skip unnecessary fuzzer initialisation. Hold ECCVerifyHandle only when needed (practicalswift) #17240 ci: Disable functional tests on mac host (MarcoFalke) #17254 Fix script_p2sh_tests OP_PUSHBACK2/4 missing (adamjonas) #17267 bench: Fix negative values and zero for -evals flag (nijynot) #17275 pubkey: Assert CPubKey’s ECCVerifyHandle precondition (practicalswift) #17288 Added TestWrapper class for interactive Python environments (jachiang) #17292 Add new mempool benchmarks for a complex pool (JeremyRubin) #17299 add reason checks for non-standard txs in test_IsStandard (theStack) #17322 Fix input size assertion in wallet_bumpfee.py (instagibbs) #17327 Add rpc_fundrawtransaction logging (jonatack) #17330 Add shrinkdebugfile=0 to regtest bitcoin.conf (sdaftuar) #17340 Speed up fundrawtransaction test (jnewbery) #17345 Do not instantiate CAddrDB for static call CAddrDB::Read() (hebasto) #17362 Speed up wallet_avoidreuse, add logging (jonatack) #17363 add “diamond” unit test to MempoolAncestryTests (theStack) #17366 Reset global args between test suites (MarcoFalke) #17367 ci: Run non-cross-compile builds natively (MarcoFalke) #17378 TestShell: Fix typos & implement cleanups (jachiang) #17384 Create new test library (MarcoFalke) #17387 wallet_importmulti: use addresses of the same type as being imported (achow101) #17388 Add missing newline in util_ChainMerge test (ryanofsky) #17390 Add util_ArgParsing test (ryanofsky) #17420 travis: Rework cache_err_msg (MarcoFalke) #17423 ci: Make ci system read-only on the git work tree (MarcoFalke) #17435 check custom ancestor limit in mempool_packages.py (theStack) #17455 Update valgrind suppressions (practicalswift) #17461 Check custom descendant limit in mempool_packages.py (theStack) #17469 Remove fragile assert_memory_usage_stable (MarcoFalke) #17470 ci: Use clang-8 for fuzzing to run on aarch64 ci systems (MarcoFalke) #17480 Add unit test for non-standard txs with too large scriptSig (theStack) #17497 Skip tests when utils haven’t been compiled (fanquake) #17502 Add unit test for non-standard bare multisig txs (theStack) #17511 Add bounds checks before base58 decoding (sipa) #17517 ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le (MarcoFalke) #17522 Wait until mempool is loaded in wallet_abandonconflict (MarcoFalke) #17532 Add functional test for non-standard txs with too large scriptSig (theStack) #17541 Add functional test for non-standard bare multisig txs (theStack) #17555 Add unit test for non-standard txs with wrong nVersion (dspicher) #17571 Add libtest_util library to msvc build configuration (sipsorcery) #17591 ci: Add big endian platform - s390x (elichai) #17593 Move more utility functions into test utility library (mzumsande) #17633 Add option –valgrind to run the functional tests under Valgrind (practicalswift) #17635 ci: Add centos 7 build (hebasto) #17641 Add unit test for leveldb creation with unicode path (sipsorcery) #17674 Add initialization order fiasco detection in Travis (practicalswift) #17675 Enable tests which are incorrectly skipped when running test_runner.py --usecli (practicalswift) #17685 Fix bug in the descriptor parsing fuzzing harness (descriptor_parse) (practicalswift) #17705 re-enable CLI test support by using EncodeDecimal in json.dumps() (fanquake) #17720 add unit test for non-standard “scriptsig-not-pushonly” txs (theStack) #17767 ci: Fix qemu issues (MarcoFalke) #17793 ci: Update github actions ci vcpkg cache on msbuild update (hebasto) #17806 Change filemode of rpc_whitelist.py (emilengler) #17849 ci: Fix brew python link (hebasto) #17851 Add std::to_string to list of locale dependent functions (practicalswift) #17893 Fix double-negative arg test (hebasto) #17900 ci: Combine 32-bit build with centos 7 build (theStack) #17921 Test OP_CSV empty stack fail in feature_csv_activation.py (theStack) #17931 Fix p2p_invalid_messages failing in Python 3.8 because of warning (elichai) #17947 add unit test for non-standard txs with too large tx size (theStack) #17959 Check specific reject reasons in feature_csv_activation.py (theStack) #17984 Add p2p test for forcerelay permission (MarcoFalke) #18001 Updated appveyor job to checkout a specific vcpkg commit ID (sipsorcery) #18008 fix fuzzing using libFuzzer on macOS (fanquake) #18013 bench: Fix benchmarks filters (elichai) #18018 reset fIsBareMultisigStd after bare-multisig tests (fanquake) #18022 Fix appveyor test_bitcoin build of *.raw (MarcoFalke) #18037 util: Allow scheduler to be mocked (amitiuttarwar) #18056 ci: Check for submodules (emilengler) #18069 Replace ‘regtest’ leftovers by self.chain (theStack) #18081 Set a name for CI Docker containers (fanquake) #18109 Avoid hitting some known minor tinyformat issues when fuzzing strprintf(…) (practicalswift) #18155 Add harness which fuzzes EvalScript and VerifyScript using a fuzzed signature checker (practicalswift) #18159 Add –valgrind option to test/fuzz/test_runner.py for running fuzzing test cases under valgrind (practicalswift) #18166 ci: Run fuzz testing test cases (bitcoin-core/qa-assets) under valgrind to catch memory errors (practicalswift) #18172 Transaction expiry from mempool (0xB10C) #18181 Remove incorrect assumptions in validation_flush_tests (MarcoFalke) #18183 Set catch_system_errors=no on boost unit tests (MarcoFalke) #18195 Add cost_of_change parameter assertions to bnb_search_test (yancyribbens) #18209 Reduce unneeded whitelist permissions in tests (MarcoFalke) #18211 Disable mockforward scheduler unit test for now (MarcoFalke) #18213 Fix race in p2p_segwit (MarcoFalke) #18224 Make AnalyzePSBT next role calculation simple, correct (instagibbs) #18228 Add missing syncwithvalidationinterfacequeue (MarcoFalke) #18247 Wait for both veracks in add_p2p_connection (MarcoFalke) #18249 Bump timeouts to accomodate really slow disks (MarcoFalke) #18255 Add bad-txns-*-toolarge test cases to invalid_txs (MarcoFalke) #18263 rpc: change setmocktime check to use IsMockableChain (gzhao408) #18285 Check that wait_until returns if time point is in the past (MarcoFalke) #18286 Add locale fuzzer to FUZZERS_MISSING_CORPORA (practicalswift) #18292 fuzz: Add assert(script == decompressed_script) (MarcoFalke) #18299 Update FUZZERS_MISSING_CORPORA to enable regression fuzzing for all harnesses in master (practicalswift) #18300 fuzz: Add option to merge input dir to test runner (MarcoFalke) #18305 Explain why test logging should be used (MarcoFalke) #18306 Add logging to wallet_listsinceblock.py (jonatack) #18311 Bumpfee test fix (instagibbs) #18314 Add deserialization fuzzing of SnapshotMetadata (utxo_snapshot) (practicalswift) #18319 fuzz: Add missing ECC_Start to key_io test (MarcoFalke) #18334 Add basic test for BIP 37 (MarcoFalke) #18350 Fix mining to an invalid target + ensure that a new block has the correct hash internally (TheQuantumPhysicist) #18378 Bugfix & simplify bn2vch using int.to_bytes (sipa) #18393 Don’t assume presence of __builtin_mul_overflow(…) in MultiplicationOverflow(…) fuzzing harness (practicalswift) #18406 add executable flag for rpc_estimatefee.py (theStack) #18420 listsinceblock block height checks (jonatack) #18430 ci: Only clone bitcoin-core/qa-assets when fuzzing (MarcoFalke) #18438 ci: Use homebrew addon on native macos (hebasto) #18447 Add coverage for script parse error in ParseScript (pierreN) #18472 Remove unsafe BOOST_TEST_MESSAGE (MarcoFalke) #18474 check that peer is connected when calling sync_* (MarcoFalke) #18477 ci: Use focal for fuzzers (MarcoFalke) #18481 add BIP37 ‘filterclear’ test to p2p_filter.py (theStack) #18496 Remove redundant sync_with_ping after add_p2p_connection (jonatack) #18509 fuzz: Avoid running over all inputs after merging them (MarcoFalke) #18510 fuzz: Add CScriptNum::getint coverage (MarcoFalke) #18514 remove rapidcheck integration and tests (fanquake) #18515 Add BIP37 remote crash bug [CVE-2013-5700] test to p2p_filter.py (theStack) #18516 relax bumpfee dust_to_fee txsize an extra vbyte (jonatack) #18518 fuzz: Extend descriptor fuzz test (MarcoFalke) #18519 fuzz: Extend script fuzz test (MarcoFalke) #18521 fuzz: Add process_messages harness (MarcoFalke) #18529 Add fuzzer version of randomized prevector test (sipa) #18534 skip backwards compat tests if not compiled with wallet (fanquake) #18540 wallet_bumpfee assertion fixup (jonatack) #18543 Use one node to avoid a race due to missing sync in rpc_signrawtransaction (MarcoFalke) #18561 Properly raise FailedToStartError when rpc shutdown before warmup finished (MarcoFalke) #18562 ci: Run unit tests sequential once (MarcoFalke) #18563 Fix unregister_all_during_call cleanup (ryanofsky) #18566 Set -use_value_profile=1 when merging fuzz inputs (MarcoFalke) #18757 Remove enumeration of expected deserialization exceptions in ProcessMessage(…) fuzzer (practicalswift) #18878 Add test for conflicted wallet tx notifications (ryanofsky) #18975 Remove const to work around compiler error on xenial (laanwj) Documentation #16947 Doxygen-friendly script/descriptor.h comments (ch4ot1c) #16983 Add detailed info about Bitcoin Core files (hebasto) #16986 Doxygen-friendly CuckooCache comments (ch4ot1c) #17022 move-only: Steps for “before major release branch-off” (MarcoFalke) #17026 Update bips.md for default bech32 addresses in 0.20.0 (MarcoFalke) #17081 Fix Makefile target in benchmarking.md (theStack) #17102 Add missing indexes/blockfilter/basic to doc/files.md (MarcoFalke) #17119 Fix broken bitcoin-cli examples (andrewtoth) #17134 Add switch on enum example to developer notes (hebasto) #17142 Update macdeploy README to include all files produced by make deploy (za-kk) #17146 github: Add warning for bug reports (laanwj) #17157 Added instructions for how to add an upsteam to forked repo (dannmat) #17159 Add a note about backporting (carnhofdaki) #17169 Correct function name in ReportHardwareRand() (fanquake) #17177 Describe log files + consistent paths in test READMEs (fjahr) #17239 Changed miniupnp links to https (sandakersmann) #17281 Add developer note on c_str() (laanwj) #17285 Bip70 removal follow-up (fjahr) #17286 Fix help-debug -checkpoints (ariard) #17309 update MSVC instructions to remove Qt OpenSSL linking (fanquake) #17339 Add template for good first issues (michaelfolkson) #17351 Fix some misspellings (RandyMcMillan) #17353 Add ShellCheck to lint tests dependencies (hebasto) #17370 Update doc/bips.md with recent changes in master (MarcoFalke) #17393 Added regtest config for linearize script (gr0kchain) #17411 Add some better examples for scripted diff (laanwj) #17503 Remove bitness from bitcoin-qt help message and manpage (laanwj) #17539 Update and improve Developer Notes (hebasto) #17561 Changed MiniUPnPc link to https in dependencies.md (sandakersmann) #17596 Change doxygen URL to doxygen.bitcoincore.org (laanwj) #17598 Update release process with latest changes (MarcoFalke) #17617 Unify unix epoch time descriptions (jonatack) #17637 script: Add keyserver to verify-commits readme (emilengler) #17648 Rename wallet-tool references to bitcoin-wallet (hel-o) #17688 Add “ci” prefix to CONTRIBUTING.md (hebasto) #17751 Use recommended shebang approach in documentation code block (hackerrdave) #17752 Fix directory path for secp256k1 subtree in developer-notes (hackerrdave) #17772 Mention PR Club in CONTRIBUTING.md (emilengler) #17804 Misc RPC help fixes (MarcoFalke) #17819 Developer notes guideline on RPCExamples addresses (jonatack) #17825 Update dependencies.md (hebasto) #17873 Add to Doxygen documentation guidelines (jonatack) #17907 Fix improper Doxygen inline comments (Empact) #17942 Improve fuzzing docs for macOS users (fjahr) #17945 Fix doxygen errors (Empact) #18025 Add missing supported rpcs to doc/descriptors.md (andrewtoth) #18070 Add note about brew doctor (givanse) #18125 Remove PPA note from release-process.md (fanquake) #18170 Minor grammatical changes and flow improvements (travinkeith) #18212 Add missing step in win deployment instructions (dangershony) #18219 Add warning against wallet.dat re-use (corollari) #18253 Correct spelling errors in comments (Empact) #18278 interfaces: Describe and follow some code conventions (ryanofsky) #18283 Explain rebase policy in CONTRIBUTING.md (MarcoFalke) #18340 Mention MAKE=gmake workaround when building on a BSD (fanquake) #18341 Replace remaining literal BTC with CURRENCY_UNIT (domob1812) #18342 Add fuzzing quickstart guides for libFuzzer and afl-fuzz (practicalswift) #18344 Fix nit in getblockchaininfo (stevenroose) #18379 Comment fix merkle.cpp (4d55397500) #18382 note the costs of fetching all pull requests (vasild) #18391 Update init and reduce-traffic docs for -blocksonly (glowang) #18464 Block-relay-only vs blocksonly (MarcoFalke) #18486 Explain new test logging (MarcoFalke) #18505 Update webchat URLs in README.md (SuriyaaKudoIsc) #18513 Fix git add argument (HashUnlimited) #18577 Correct scripted-diff example link (yahiheb) #18589 Fix naming of macOS SDK and clarify version (achow101) Miscellaneous #15600 lockedpool: When possible, use madvise to avoid including sensitive information in core dumps (luke-jr) #15934 Merge settings one place instead of five places (ryanofsky) #16115 On bitcoind startup, write config args to debug.log (LarryRuane) #16117 util: Replace boost sleep with std sleep (MarcoFalke) #16161 util: Fix compilation errors in support/lockedpool.cpp (jkczyz) #16802 scripts: In linearize, search for next position of magic bytes rather than fail (takinbo) #16889 Add some general std::vector utility functions (sipa) #17049 contrib: Bump gitian descriptors for 0.20 (MarcoFalke) #17052 scripts: Update copyright_header script to include additional files (GChuf) #17059 util: Simplify path argument for cblocktreedb ctor (hebasto) #17191 random: Remove call to RAND_screen() (Windows only) (fanquake) #17192 util: Add check_nonfatal and use it in src/rpc (MarcoFalke) #17218 Replace the LogPrint function with a macro (jkczyz) #17266 util: Rename decodedumptime to parseiso8601datetime (elichai) #17270 Feed environment data into RNG initializers (sipa) #17282 contrib: Remove accounts from bash completion (fanquake) #17293 Add assertion to randrange that input is not 0 (JeremyRubin) #17325 log: Fix log message for -par=1 (hebasto) #17329 linter: Strip trailing / in path for git-subtree-check (jnewbery) #17336 scripts: Search for first block file for linearize-data with some block files pruned (Rjected) #17361 scripts: Lint gitian descriptors with shellcheck (hebasto) #17482 util: Disallow network-qualified command line options (ryanofsky) #17507 random: mark RandAddPeriodic and SeedPeriodic as noexcept (fanquake) #17527 Fix CPUID subleaf iteration (sipa) #17604 util: Make schedulebatchpriority advisory only (fanquake) #17650 util: Remove unwanted fields from bitcoin-cli -getinfo (malevolent) #17671 script: Fixed wget call in gitian-build.py (willyko) #17699 Make env data logging optional (sipa) #17721 util: Don’t allow base58 decoding of non-base58 strings. add base58 tests (practicalswift) #17750 util: Change getwarnings parameter to bool (jnewbery) #17753 util: Don’t allow base32/64-decoding or parsemoney(…) on strings with embedded nul characters. add tests (practicalswift) #17823 scripts: Read suspicious hosts from a file instead of hardcoding (sanjaykdragon) #18162 util: Avoid potential uninitialized read in formatiso8601datetime(int64_t) by checking gmtime_s/gmtime_r return value (practicalswift) #18167 Fix a violation of C++ standard rules where unions are used for type-punning (TheQuantumPhysicist) #18225 util: Fail to parse empty string in parsemoney (MarcoFalke) #18270 util: Fail to parse whitespace-only strings in parsemoney(…) (instead of parsing as zero) (practicalswift) #18316 util: Helpexamplerpc formatting (jonatack) #18357 Fix missing header in sync.h (promag) #18412 script: Fix script_err_sig_pushonly error string (theStack) #18416 util: Limit decimal range of numbers parsescript accepts (pierreN) #18503 init: Replace URL_WEBSITE with PACKAGE_URL (MarcoFalke) #18526 Remove PID file at the very end (hebasto) #18553 Avoid non-trivial global constants in SHA-NI code (sipa) #18665 Do not expose and consider -logthreadnames when it does not work (hebasto) Credits Thanks to everyone who directly contributed to this release: 0xb10c 251 4d55397500 Aaron Clauson Adam Jonas Albert Amiti Uttarwar Andrew Chow Andrew Toth Anthony Towns Antoine Riard Ava Barron Ben Carman Ben Woosley Block Mechanic Brian Solon Bushstar Carl Dong Carnhof Daki Cory Fields Daki Carnhof Dan Gershony Daniel Kraft dannmat Danny-Scott darosior David O’Callaghan Dominik Spicher Elichai Turkel Emil Engler emu Fabian Jahr fanquake Filip Gospodinov Franck Royer Gastón I. Silva gchuf Gleb Naumenko Gloria Zhao glowang Gr0kchain Gregory Sanders hackerrdave Harris hel0 Hennadii Stepanov ianliu Igor Cota James Chiang James O’Beirne Jan Beich Jan Sarenik Jeffrey Czyz Jeremy Rubin JeremyCrookshank Jim Posen John Bampton John L. Jegutanis John Newbery Jon Atack Jon Layton Jonas Schnelli João Barbosa Jorge Timón Karl-Johan Alm kodslav Larry Ruane Luke Dashjr malevolent MapleLaker marcaiaf MarcoFalke Marius Kjærstad Mark Erhardt Mark Tyneway Martin Erlandsson Martin Zumsande Matt Corallo Matt Ward Michael Folkson Michael Polzer Micky Yun Chan Neha Narula nijynot naumenkogs NullFunctor Peter Bushnell pierrenn Pieter Wuille practicalswift randymcmillan Rjected Russell Yanofsky Samer Afach Samuel Dobson Sanjay K Sebastian Falbesoner setpill Sjors Provoost Stefan Richter stefanwouldgo Steven Roose Suhas Daftuar Suriyaa Sundararuban TheCharlatan Tim Akinbo Travin Keith tryphe Vasil Dimov Willy Ko Wilson Ccasihue S Wladimir J. van der Laan Yahia Chiheb Yancy Ribbens Yusuf Sahin HAMZA Zakk Zero As well as to everyone that helped with translations on Transifex. View the full article
  2. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest May 22, 2020 From the desk of Arthur Hayes Co-founder & CEO, BitMEX From The BitMEX Research Desk Life with SARS-CoV-2 Abstract: The following article is written by guest writer, Leo Weese. Leo explains the potential long term impacts of COVID-19 on culture, work, health and the economy & finance. He concludes by saying that some jurisdictions like Hong Kong or Singapore may attempt to eradicate the virus, while others in the West may attempt to slow it down such that health systems can manage. The changes we are seeing today may be more permanent than some expect. (Propaganda image on display in Sham Shui Po, Hong Kong) Ethereum 2.0 Abstract: We examine Ethereum 2.0, which is set to launch as early as July 2020, assuming there are no further delays. However, the launch may not be as important of an event as it sounds. Initially, Ethereum 2.0 will mostly operate as a test network for the new proof of stake consensus system. Most of the economic activity and smart contracts will remain on the original Ethereum network, which will continue to exist as a parallel system to Ethereum 2.0. There will be a one way peg, where Eth1 can be transferred into Eth2, but the reverse will not be possible. Given the decision to scale via sharding, we believe Ethereum has little choice other than to attempt this incredibly complex multi year transition to a new network. (The Shard building in London) From The Desk Of Arthur Hayes In The Beginning There Was House (Source: Space Ibiza Nightclub) In the beginning there was Jack. And Jack had a groove. And from this groove came the groove of all grooves. And while one day, viciously throwing down on his box, Jack boldly declared "Let there be house!" And house music was born. I dream of thumping house music, neon lights, and mental disorientation during my daily bike rides or trail runs. Back to reality. A lot has happened since my last missive. My pocket rockets continue to rescue my portfolio from bad bets on energy and shipping. And I continue to put some sheckles to work purchasing optionality, anticipating a stronk dollar. I’m long the following FX options: EURUSD 1.00 strike 1yr Puts USDKRW 1600 strike 1yr Calls USDCNH 8.00 strike 2yr Calls I dabble in equity options as well. The double top near the 62% retracement from the recent low on the SPX speaks to me. It whispers of a 2,200 retest this fall. I also have a cheeky SPY Sep20 220 Strike Put position. I’m perfectly content to be dead wrong on this call. If SPX can rally past 3,000 on its way to retesting its ATH while 30% of the developed world is collecting glorified food stamps, risk on bitches! As an aside, my mother and her family grew up quite poor, and her and her siblings used food stamps. Those stamps were literally physical stamps, and carried with them an obvious visual stigma at checkout. Now that many more use them, it’s a sleek debit card thingy, and you would never know who is on the dole. That’s some economic progress... During the endless downtime of COVID lockdown, I enjoy listening to and reading commentary from various legendary macro hedge fund traders. Stan Druckenmiller’s recent interview with The Economic Club of New York, and a recent interview in 13D with Lacy Hunt are two standouts. The moral of the story is that negative interest rates destroy a banking system. The US bank lobby has kept the negative interest rate barbarians at the gate, but when the Treasury needs to borrow trillions every quarter, why shouldn’t they be paid for the privilege? That is something both Donkeys and Elephants can agree on. It won’t take much for prudish Powell to relent to the base desires of popularly elected demagogues. That’s great news for physical gold and gold miners. When rates go negative in the US, watch this space. Gold yields nothing, which is a usual barb thrown by the economic orthodoxy. But if cash in the bank costs you money, and cash in the mattress can be expropriated by a stark raving mad unemployed gun toting deplorable, then you might want to call Dorothy and take a skip, hop and a jump down the yellow brick road. I quite enjoyed the Real Vision interview with Hugh Hendry. The man is a legend, full stop. The non-consensus view they discuss, of a future where equity skew transitions from put over to call over, is something I will be keeping my eye on. The trade there might be selling crash puts to fund a way out of the money long dated calls in a zero cost manner. I think I’m going to go quite large on that one, but I will walk you through that when I get there. Writing these digests presents an opportunity to spitball my thoughts. Hopefully they remain coherent once they reach my word processor and I catch myself in intellectual fallacies before I do more harm to my capital. Bitcoin Baby Paul Tudor Jones (“PTJ”) is a trader with a capital fucking T. His homage to why inflation is coming and Bitcoin is a possible way to outperform inflation in the coming years is very important because it removes career risk from fund managers owning Bitcoin risk. Let’s step through the career path of the average trader who becomes the average money manager. I use my own journey into financial services and beyond to illustrate my point. I was by no means an exemplary employee or very profitable trader. My background and accomplishments were nothing more or less than average. Attend an “elite” university. UPenn / Wharton is the biggest feeder school into American high finance (with a long aaah sound - if you don’t sound like a douchebag you aren’t saying it right). It doesn’t really matter what your major is or if you learned anything. If you can hold your liquor and socialise well, you can get a job on the Street. Some of the biggest bad asses of 20th century finance went to Penn: Milken, Perlman, Wynn etc. Their names dot buildings and programs (unless they got a little touchy feely and got #MeToo’d). The Deutsche Bank Hong Kong office flew out some sales and trading personnel to host on-campus interviews. At the time, I was the social chair of my fraternity. I threw parties at clubs in downtown Philly as a way to earn money for the house and to have fun. I knew basically every club in the city as I went out Wed to Sat. After the day’s interviews, the bankers invited the kids they liked out to dinner. I made the cut, and was invited to some Philly restaurant with other kids from Penn. After dinner the bankers wanted to go out, during my interview I expressed my love of partying in Hong Kong. As a “test” one of the MD’s asked me to recommend some places to party afterwards. Fast forward, we are all drunk as fuck in a Philly house club downtown. REKT. (This MD got me into the graduate program, and we are friends to this day). Now that you have a junior level trading job, you must survive not getting fired as an analyst or associate. Depending on the bank, around 50%-75% never make it past associate. I made it 5 years into my trading career before I got the axe as an associate. Survival is a combination of choosing the right desk, and not pissing people off politically. I chose equities. Bad call, always choose fixed income. There are exceptions to this rule, but the big dogs trade bonds and credit derivatives. You want risk big enough to blow up the bank. You never will get paid unless you can swing the bat. Getting PAID is an interesting concept in finance. Even a shitty analyst these days makes $100k - $200k per year at a large bulge bracket bank. On average the American banks pay the best, Goldman, JPM, BAML, and Citi. But your curve tops out pretty quick. A very prescient and funny DB deriv sales Canadian once quipped, “everyone has a bullet with their name on it, you are just waiting to get shot”. You need to last long enough to have one or two years where you can make a few million bucks, and then it’s up to how you trade your PA which determines whether you can escape the rat race of a trading floor. Your job consists of doing what you’re told, and making sure people perceive you well. Perception as a competent banker is your most and only important asset. If people in your silo perceive you well, when / if you get let go you can get back into the industry. Assuming you can survive long enough to become a VP, this usually takes 5 to 7 years, now you can start really earning money. You are now up to bat. It’s time to earn some duckets. If you are any good at your job, you become attractive to the buy side as well. This is supposedly the golden ticket. I say “supposedly” because while you can make a lot of money as a hedge fund trader, most hedge funds lose money and these losses are usually out of your control as a common grunt. As the junior trader or PM, you don’t get a cut of the 2% management fee. You get a lower salary than you would on the sell side, and hopefully a much higher bonus. The 2% management fee goes to running the fund, and the leftover is there for the GPs. The goal of asset management is raising assets first, making money second. Would you rather earn 2% on 100 billion under management every year regardless of performance, or 20% of profits assuming you are above your high water mark? If, for whatever reason, you believe that you are such hot shit that you can manage other people’s money and don’t mind the risk, then you break out on your own. Now you get all the points on the package. The only problem is that you need to convince people to hand you their hard earned capital. Nothing about your career path is exceptional in any way. You aren’t a brain surgeon, any type of engineer, or a well-regarded public servant. You went to a nice school, got a well-paying job, and survived. But now you want 2% on AUM and 20% of returns. Potential investors will look at your past returns and work history to form an opinion on whether in the future you can make them money. Again, being average is the goal. To be an average money manager, and by definition most money managers are average, you must zig and zag like the herd. If the herd believes in adj-EBITDA you believe in it too. If the herd believes in purchasing mezzanine CLO’s filled with CCC bonds masquerading as AAA, you slurp that shit. If the herd believes that 7.5 billion people willingly inject themselves with the first ever coronavirus vaccine developed by humanity in under 1 year, you bend over and take it first. And finally, if the herd hates Bitcoin because it is supposedly nothing more than “magic internet money owned by anarchists, drug dealers, and terrorists”, then you shun the best performing asset since 2009. As with all walks of life, there are a few truly exceptional money managers. They first preserve your capital, and second, earn a positive absolute return. PTJ is one of them. Average money managers pour over the writings of the gods, and try desperately to think like they do. But we know in the back of our mind, they are average. They are average and average pays fucking gloriously. Why would you want to be extraordinary and expose yourself to career risk. The exceptional investor invests in heretical themes, and sells once those themes become orthodox. The average investor invests in orthodox themes, and sells once those themes become irrelevant. In 2010 would you believe the Facebook newsfeed to be a more powerful news source and advertising dollar vacuum than the venerable New York Times, Wall Street Journal etc.? In 2020 do you believe that only advertising spend will continue to inexorably rise when 30% of the rich world has no job? 2010 FB IPO opens at $38 (Social Media is media … Heresy) 15 May 2020 FB closes at $211 (Social Media is media … Orthodoxy) 2010 – 2020 Return +455% 15 May 2030 FB ??? (Social Media is media … Stupid lah) LPs and money managers want to believe they go against the grain. But not really. A heretical idea is an orthodox idea entered into early. Being early is as bad as being wrong. Exceptional investors are able to find the financial instrument or portfolio construction that allows them to be early and not lose too much capital in the process. Cheap convexity is hard to find, and that’s why there are only a handful of truly successful money managers. PTJ announced, via an investor letter and Bloomberg fluff piece, that his fund holds futures contracts. Traders always talk their book, once they have truly right-sized their position. The game now is to use the infallibility aura gained from past successes to force the sheeple to convert a heretical idea into orthodoxy. Then you dump on the mother fuckers. So an investing legend announced to the world his fund now owns Bitcoin … futures. Game, blouses. How To Trade It Holding physical Bitcoin in size is risky and difficult. The amount of money spent by the top exchanges on security is non-trivial. Therefore if there is a fiat margined derivative that gives them the same exposure, they hold that instead. Any hedge fund’s prime broker will have an account at the CME. Voila, they can now gain long exposure to Bitcoin. Let’s assume a fund uses zero leverage. The leverage is very low on the CME Bitcoin futures contract anyway. The cost of going long futures and rolling each month will be expressed in the futures term structure or curve. I use back minus front as the roll pricing convention. That means if the roll is positive the curve is in contango. As a result there is a cost to roll each month if you are a long holder and the curve is in contango. If the cost to roll each month is greater than the cost to properly secure a large amount of Bitcoin (assume large is >$100mm notional), then a fund would consider self or third-party custody. I posit that the difference in cost has to be extremely large before it makes sense to onboard the risk of custodying crypto to your fund operations. The thundering herd of wanna-be macro fund managers will be demonstratively evident if the CME curve blows out into a massive contango over the non-US platforms. The CME curve should trade richer than all other Bitcoin futures platforms. The reason is collateral. The dominant Bitcoin perpetual swap and futures are margined in Bitcoin. Some platforms cross margin between USDT and Bitcoin. The CME only allows USD, and some FCM’s margin shorts at over 100%. That is extremely expensive. Futures sellers are arbitrageurs capturing the positive carry (sell futures, buy spot, earn carry, it’s that easy … kinda). They hedge themselves by purchasing spot; however, they must come up with double the amount of capital in some cases to fund their trade. Therefore their ROE is halved relative to a Bitcoin margined derivative at 1x leverage. Also a 1x leveraged short perp swap or XBT futures position is long convexity in XBT terms and mathematically cannot be liquidated regardless of how high the price rises. When the CME allows Bitcoin to be used as margin, the dislocation should lessen but will not disappear. I doubt the CME will lower initial margin from 40% to 1% to match BitMEX and other platforms. Therefore the short side will demand higher and higher premiums to supply the incoming macro hedgies their long Bitcoin exposure. If indeed PTJ nudged his average brethren to follow in his footsteps, any meaningful portfolio allocation will appear in rising CME open interest and a steep contango curve. If PTJ isn’t enough, maybe a few other legends will catch the Bitcoin bug and come play in our “magic internet money simulacra”. Average Ain’t So Bad Being an average fund manager ain’t a bad gig. If you know how to shake your rotund Dorsia-fed belly correctly, 2% of billions can fund a very nice lifestyle. The average fund manager who just bought the index outperformed all the so-called contrarians. That is why many of the greats of yesteryear shutdown. The problem is when your skills are average but your ambition is greatness. That is the definition of career risk. Stay in your lane, and financial services is a kind mistress. Don’t let my musings on my portfolio confuse you that I have any deep insights into the future. I approach my PA as an exercise in intellectual gambling. It keeps me interested in the markets and gives me something to talk about. There is nothing better than finishing a day shredding Hokkaiko Jay Pow, and relaxing in the onsen with your boys talking stonks while sipping on a Sapporo Classic. Now let’s get back to business… And, in this house, the keeper is Jack. Now some of you who might wonder, “Who is Jack, and what is it that Jack does?” Jack is the one who gives you the power to jack your body! Jack is the one who gives you the power to do the snake. Jack is the one who gives you the key to the wiggly worm. Jack is the one who learns you how to walk your body. Jack is the one that can bring nations and nations of all Jackers together under one house. You may be black, you may be white; you may be Jew or Gentile. It don’t make a difference in OUR House. And this is fresh. See y’all mother fuckers at the Clerrrbbb! Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
  3. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest April 9, 2020 From the desk of Arthur Hayes Co-founder & CEO, BitMEX From The BitMEX Research Desk Inflation Is Coming Abstract: We evaluate the impact of Coronavirus on the economy and financial markets. The response to the virus will mark a significant economic regime change, from monetary policy to central bank funded fiscal expansion. Eventually, there will be one clear winner under this new regime: inflation. Economic circumstances could look like the 1970s, with volatile inflationary expectations. This regime change and inflation will be something financial markets find difficult to tolerate. In this environment, Bitcoin could be given its biggest opportunity, in its short lifetime. (Image modified from HBO’s Game of Thrones: “Winter is Coming” – House Stark) Central Bank Digital Currency Abstract: We analyse the idea of Central Bank Digital Currency (CBDC). We divide the concept into two distinct ideas: i) Banning physical cash, and, ii) Allowing retail customers to have deposits directly with the central bank. We conclude that although in some ways the two policies complement each other, they have vastly different economic consequences. The former would increase credit expansion, and the latter would cause contraction. Due to the deflationary nature of allowing the public to hold electronic deposits at their central bank, we think financial regulators are unlikely to allow these CBDC schemes to succeed in any meaningful way. Who Funds Bitcoin Development? Abstract: We compile a list of the main organisations and individuals funding open source Bitcoin and Lightning development. Based on the data we have compiled, Blockstream and Lightning Labs are the largest contributors to open source development in the space, while as far as contributors to Bitcoin Core goes, Chaincode Labs is currently the largest financial supporter of development. We conclude that the situation is more healthy than it has been in the past, with respect to the availability of finance, transparency, and the degree of distribution among financial backers. Mining Incentives (Part 4): The Impact Of The Halvening Abstract: We evaluate the impact the block reward halving, which is due to take place in a few weeks’ time, may have on the Bitcoin mining industry. Assuming a constant Bitcoin price and excluding the impact of transaction fees, mining industry revenue should fall by around 50%. However, this is not necessarily the case for the network hashrate. The decline in the network hashrate is determined not only by the decline in block rewards, but also the interrelationship between the difficulty adjustment mechanism and the mining industry structure. Based on the current industry structure and assuming the Bitcoin price does not change, we predict that the halvening might cause the network hashrate to decline by around 30% to 35%. From The Desk Of Arthur Hayes Choose your Fiction Forky (Source: Pixar Animation Studios) Shazaam! You snap your fingers and COVID has disappeared, you can exit lockdown and continue on with your life. How do you feel? Are you as optimistic as you were in January? Do you trust your government to put your health and safety first? Do you trust your government to tell you the truth in a timely manner, or will it juke the stats when it suits them? Do you trust the media to speak truth to power? Will you wash your hands once an hour furiously, or blithely touch your eyes, nose, and mouth with zero fucks given? If, once we’re out of this, you can honestly say that everything has gone back to how it was in early January of this year, then happy days. It may well be that we are in for a V-shaped economic recovery. But if, as I believe, your world view has fundamentally changed, the fictions that underpinned your life have shifted dramatically. As we consider the most important price, the price of money and its nature, predicting the collective fiction we believe in becomes of utmost importance. Money, true money, which is divorced from industrial utility, is nothing more than a fiction that allows us to exchange labour and capital efficiently so that real goods and services can be produced. Without this fiction … the conveniences of modern society would cease to exist. There are three prevalent monetary fictions whose interrelationships post-COVID will completely change. Government Fiat, aka The USD = Fiction + Violence We know the USD has value because contracts and taxes owed will be collected at the barrel of a gun if necessary. The dollar derives value from a strong belief the United States can raise taxes to pay back its debts. Gold = Fiction + Physical Scarcity Gold has no widespread industrial use case. It is just shiny, physically scarce, malleable, and has captivated human attention for millennia. Therefore it has value. Bitcoin = Fiction + Cryptographic Scarcity Bitcoin has value because a piece of open source code is collectively run by many guarantees that only 21 million units will ever exist. Therefore it has value. After the senseless destruction of human lives in WWII, the victors sat down in Bretton Woods and created the modern financial system underpinned by the USD. We still are under the yoke of the USD today. The USD used to be worth its weight in gold, $35/oz to be exact until 1971. Tricky Dick wanted to fight a war while giving out goodies at home. Free Shit, Vote for Me! That’s the best way to win any election. However, he couldn’t stomach a run on the nation’s gold so he severed the relationship. Since then, the value of USD has depended entirely on trust. Fast forward to January 2020. The US has the most liquid financial market and is completely open to all capital. All major commodities and trade is priced in dollars. Therefore if you are a country or company doing international business you must have access to those dollars. That’s great for everyone when the beat is going strong. The Federal Reserve has a global obligation to keep dollars in good, cheap supply. That is why they have FX swap lines with the major central banks. The world is short the dollar and only demure academic-looking Federal Reserve governors can provide them. Countries and companies can easily earn dollars by selling knick knacks to rich Americans. 70% of American GDP is driven by consumption. It makes the world go round. Hundreds of millions of peasants have been lifted out of abject poverty so that they can produce cheap iPhones, AirJordans, or F150s, all so the parent “American” company can enjoy record profit margins. Europeans are not far behind in their consumption. Europe and America combined represents the global demand for goods. Absent them, who the fuck is going to buy this dog shit at insane markups? Deng Xiaoping on his Southern Tour unleashed the Chinese upon the world after a hundred year hiatus. They began powering the luxury goods, travel, and education sectors after gaining serious wealth from the offshoring of manufacturing from West to East. Sorry for waxing philosophical, I’m no modern day Thoreau and I certainly don’t live on a pond. Keeping it simple: China sells shit in dollars that Americans and Europeans buy. Uh oh, COVID... China shut down production to fight the virus, meaning no dollar income. Then Americans and Europeans caught it and shut down their economies, meaning no more demand. Once China “opened” again for business and started making stuff, there were no orders from the West as they were all watching PornHub at home and ordering GrubHub. If they aren’t vegging-out, they’re worried about when their next paycheck will arrive to pay for fuck-off expensive medical care. The moral of this sorry tale is that China ain’t earning dollars. And they are not alone. No major manufacturing or services hub is earning any dollars. But they need them to pay for raw commodities and to pay back their dollar liabilities. It would be all gravy if their central bank could print dollars, but Mon Dieu! They cannot lah. A mini EM currency meltdown occurred at the tail end of March. The Fed’s response was to offer swap lines to additional central banks, but not China. That has eased the pressure a bit. But take a look at the CDX EM HY CDS spread. It looks like a West Hollywood blowout hairdo. The conventional wisdom is that the Fed can print money until the dollar gets cheap enough. But US banks tend to hoard USD and refuse to lend. There are a variety of regulatory reasons why they cannot, and why take the risk during a global depression. Better to be safe and make sure your balance sheet is rock solid. Simple simple. The Fed can print as much USD as it likes, but the companies and countries that need it the most will not get it. The most important one is China. China’s currency is not convertible and in the eyes of Western Europe and America, it was responsible for this virus. Whether that is true or not is not the point. Do you think for a second any US politician would stand up and ask the Fed to print money so the Chinese economy can survive the COVID pandemic? The virus supposedly originated in a Wuhan live animal market. The West believes Beijing downplayed or lied about its severity. Then, all of a sudden, it shut the country because it was a serious problem. Too bad a few million infected Chinese travelled the world and started the party. Truth is not the point here; the narrative rules all. This is an election year, and China bashing is in full swing. Cue The Seinfield Soup Nazi, “No dollars for you”. The USD is STRONK and will destroy the global economy. The only country that can credibly enact the appropriate amount of fiscal stimulus to weather the storm is the US. No other country has the option to depreciate their currency to the degree necessary to generate economic activity at a level which honours the credit in the system and promises to their plebes. Remember that all raw commodities are priced in dollars, if you print too much money to monetise your government debt, your currency craters and inflation runs rampant. At that point, the Jacobins enter the street and you better not be munching on a cake. That summarises how I see events playing out over the next decade. I have no idea on timing, but the strong USD will break the back of the global economy and force a reset. The question is what the new system will look like. Gaze into my portfolio to see my soul: Long USDCNH 2y 8.00 calls Long USDKRW 1y 1600 calls Long CDX EM CDSI Sprd (I don’t have this on yet, but I’m waiting for my levels on the rebound in markets) Central banks will devalue against a hard digital asset. What that digital asset is, I have no clue. But, it may include a linkage to bitcoin. The USD fiction is over. It’s time for a new mental crutch. Do you believe in Physical or Cryptographic scarcity? After a societal fetish for all things fiat, the pendulum will swing wildly towards what is hard and scarce. Traditionally investors expect a weak gold or bitcoin price when the dollar is strong. But dollars cannot be had, and trust in government Frankenstein currencies will evaporate. Gold is the historical best choice. It also is widely owned by central banks. The best way to rebase a currency is an extremely high gold price. This happened during the 1970’s oil crisis, and the Fed raised interest rates to a level where it became silly to own gold when you could earn 20% investing in US Government debt. This time around, the Fed cannot raise rates. That would destroy the finances of the USG who must hand goodies to all. Remember this is now QE 4 Da People / QE 4eva. The US electorate will not tolerate another exclusively financial services bailout. They will get paid to sit at home, watch NetFlix, aka the Tiger King, and refrain from using their assault rifles to initiate a modern day Whiskey Rebellion. Therefore, there is not an alternative asset that entices people away from gold as the legacy of Bretton Woods system breaks down. The stock market of the Land of the Free will become a political tool. The US Treasury powered by the Fed will buy all government and corporate debt. They will buy equities. They will buy consumer loans. You would think that stocks are the place to be if the government is buying the Index. But let’s remember the Nikkei in 1989. The BOJ now owns upwards of 30% of the Japanese equity market, and the Nikkei is still 50% below it’s ATH. And I’m only speaking in nominal terms. Try deflating that by the BOJ balance sheet … REKT. The once mighty US stock market will be a corral of zombie big corporates who had the connections to suck from the teat of the US tax payer. That wouldn’t be so bad if inflation can be kept at bay. However, as the world recovers we have an infinite amount of fiat currency chasing a finite supply of real goods. SMEs represent 60 - 80% of most countries' economies. These companies, due to their small size and limited connections, pay a high price for credit if it can be obtained. Even with all the well meaning government SME lending programs, a large portion of SMEs will no longer be in existence by the time they can actually access the funds. Complex systems do not recover in a linear fashion. Therefore, an infinite amount of pledged fiscal and monetary assistance will chase non-existent supply. That leads to inflation. Global stock markets will also become political tools, not efficient allocators of capital. The wrong signals will be sent, the wrong goods will be produced. Can the hipsters handle a $40 smashed avo toast? The best inflation hedge of human civilization to date, gold, will be repriced higher. It’s the only thing you can own if you believe in Fiction + Physical scarcity. How high can it go? Take the ratio of the total amount of credit to base money. That multiplier serves as guidance to a possible future for gold. Another possible outcome is the creation of a digital financial non-USD dominated system. If they dare to come out in the open field and defend the [dollar] standard as a good thing, we shall fight them to the uttermost, having behind us the producing masses of the nation and the world. Having behind us the commercial interests and the laboring interests and all the toiling masses, we shall answer their demands for a [dollar] standard by saying to them, you shall not press down upon the brow of labor this crown of thorns. You shall not crucify mankind upon a cross of [the USD]. - Satoshi Nakamoto’s Democratic Convention Speech 2020 Will a cabal of central banks rebase their currency using a digital hard crypto? Maybe. Could there be a basket of digital fiat currencies where the central banks hold a sufficient amount of gold? Maybe. All I know is the setup for bitcoin, the hardest form of digital money, could not be better. All manners of trust have evaporated. In order to solve for demand and supply destruction, governments will embark on the greatest fiscal stimulus binge the world has ever seen. It will not be paid for by tax receipts, it can’t be because 30% of the population is out of a job, it will be paid for by the printing press. The kicker is that, in order to hand money directly to the people, governments will have to digitise their currencies. That will educate the populace on digital money. Once they understand fiat digital money, they will seek out the hard version to avert the ravages of inflation. If you believed that Libra could educate the masses on the joys of digital currencies, just imagine when everyone on Basic spends their food stamps via a mobile app. Remember, the supply of goods will be insufficient because of the SME destruction during the global shutdown. Inflation in what you need, deflation in what you want. Digital finance meets wealth preservation equals Bitcoin. ‘Nuff said. That was a lot of words to get to that conclusion. Now let’s trade it. Correlation One In a global margin call, the market will find leverage and punish it. In a global margin call, all liquid assets will be sold to finance holdings of illiquid ones. In a global margin call, correlation = 1. We are in the midst of a global margin call on all risky assets. The reason why every asset class gets the stick is that weak hands used leverage to juice their short volatility strategies. The BitMEX open interest halved. Leveraged traders got carried out. Platforms who lent dollars to miners against bitcoin (errbody needs dollars), force sold as the market puked. Leverage was punished, just like in every other asset class. However on a relative basis, Bitcoin in Q1 still outperformed the S&P 500. Its correlation with SPX reached a local high. Leverage was extinguished on the downside. The BitMEX XBTUSD swap open interest is rebuilding slowly and, as traders get their sea legs and inflation expectations adjust, the search for inflation hedges will begin in earnest. This is Act One of a global rebalancing. Every pocket of pricing distortion brought about by leverage will be exploited. Buy the dip at your peril. Bitcoin will be owned unlevered. Could the price retest $3,000, absolutely. As the SPX rolls over and tests 2,000 expect all asset classes to puke again. As violent as the Q1 collapse in asset values was, we have almost 100 years of imbalances to unwind the ancien regime. My end of 2020 price target remains $20,000. Everyone knows the shift is upon us, that is why central bankers and politicians will throw all of their tools at this problem. And I will reiterate, that is inflationary because more fiat money will chase a flat to declining supply of real goods and labour. There are only two things to own during the transition to whatever the new system is and that is gold and bitcoin. If you think I’m full of shit, or a stark-raving Cassandra, remember what you believed in pre and post-COVID. Can your mental model revert back to January 2020? I will take my inflation adjusted pocket rockets (gold and bitcoin), and call your Bretton Woods seven two off suit. All in, mother fuckers. Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
  4. Световната криза, причинена от корона вирусът и надутият финансов балон, е вероятно повратния момент за биткойн по пътя му на световна резервна валута. Материалът Мокрият сън на всички биткойн фенове се сбъдва…. е публикуван за пръв път на Hash.bg. View the full article
  5. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest March 12, 2020 From the desk of Arthur Hayes Co-founder & CEO, BitMEX From The BitMEX Research Desk January 2020 Report Into The Cryptocurrency Exchange Industry (From CryptoCompare) Abstract: For the second time, we present CryptoCompare’s in-depth report into the cryptocurrency exchange ecosystem. The review focuses on spot exchange volumes, crypto derivatives trading data, market segmentation by exchange fee models and crypto to crypto vs fiat to crypto volumes. There is also an analysis of bitcoin trading into various fiats and stablecoins, an additional overview of top crypto exchange rankings by spot trading volume, as well as a focus on how volumes have developed historically for the top trans-fee mining and decentralized exchanges. Figure 1 – ETH Daily Perpetual Futures Product Volumes From The Desk Of Arthur Hayes Tradin’ in My Jammies Bananas in Pyjamas (Source: Australian Broadcasting Corp) Tuesday, March 3rd I’m in my jammies at an urban ryokan in Tokyo about to PTFO. Before I descend into dreamscape, I must call my banker and attempt to place an investment grade index CDS (credit default swap) trade. Unlike crypto, I can only trade this index during US market hours. Therefore, I’m holding my phone like a schmuck trying to put a limit order in for the open. This ryokan vibe and the yukata have put me in a reflective mood. I read a piece in Global Macro Investor in early February, and all I have thought about since is buying IG CDS index protection. The article made me pick up the phone to my banker to ask if I could trade CDS. Following an hour long teach-in, I was almost cleared. I had to physically sign some docs, which was difficult because I have been spending the better part of this northern hemispheric Winter in the mountains of Japan. Last month, the index was at 44bps. Now it’s trading north of 70bps, and since the corona fear spread the trade has ripped in my face. Wednesday, March 4th The G7 have spoken, and things didn’t work out quite like I’d expected. I thought the markets might calm and trade higher on hopes of a further central bank stimulus. And then the IG index spread might tighten before hitting my bid. The Fed freaked and announced an emergency cut of 50bps. All the market could do is shrug and buzz the Bogdanoff twins to continue the dump. Luckily I got filled on my CDS. This is the day I decided in my head the central bank omnipotence bubble popped. Many market commentators have arrived at the same conclusion and expressed themselves eloquently on various blogs and research pieces. But you have to personally believe before you spring into action. This might as well be my religion du jour. It’s go time. I loaded up on some USDCNH 24 month 8.00 calls and some HYG Dec 20 65.00 puts. I thought the China and US high yield corporate credit would be feeling max pain in the upcoming deflationary disco. I also dumped my energy ETFs and bought some more uranium and gold miners. My portfolio is losing money. But y’all really don’t care about what traditional assets and exotic derivatives I am trading. What you want to know is When Lambo? When Moon? I put this out there to describe my current state of mind. Nothing shows the true nature of a trader’s soul than what is and what is not in his portfolio. Thursday, March 12th I’m writing this in steamy Singapore. The energy complex is reeling from the Saudi vs. Russia oil price prize fight. Europe is about to look like Wuhan, and Trump just announced the US would refuse flights from continental Europe. Shit is getting real. So while you are hunting for toilet paper, surgical masks, and hand sanitizer let’s talk about how our fearless leaders will “Protect” us … maybe? And how the high priests of finance will stimulate the economy in the face of a global twin demand and supply shock. Fiscal Policy to the Rescue The Fed meets again next week. They are almost out of bullets. They only have 100bps of room left before rates hit zero. They can obviously take rates negative, but as we have seen with various other central banks it is not very effective. Since the narrative has turned on them quickly, I say the Fed should “Relax”, in the words of Duran Duran, for what is sure to come. But no one really knows whether or not monetary policy can cure a simultaneous supply and demand shock. Fiscal measures like the Make Work projects and other transfer payments are more difficult, politically, to implement these days. Central bankers, due to an aura of invincibility and perceived independence, can change course unilaterally and quickly. That is why, since the GFC, policy makers have leaned on them to jumpstart the economy. The central bank pontiffs are no more effective than the European barber-surgeons of the Middle Ages. If a twin demand and supply shock affects the global economy, then rate cuts can do nothing to staunch an economic bloodletting. Once they are done, rates will go to zero everywhere. That is obviously very bullish for certain safe haven assets. Gold, sovereign credit, and possibly Bitcoin will be buoyed by more liquidity. Bitcoin is more a question mark than a certainty. I believe it will perform well with more liquidity sloshing around the system, but that needs to be proven. The real inflation will only begin once governing bodies get religious about fiscal policy, and the only two governments that matter in this situation are China and the US. In China, Beijing will abandon their efforts to contain credit growth in order to make sure economic activity hits their 2020 GDP targets, which I believe are around 6%. They will allow banks to lend to SOE’s that build infrastructure, and lend to private real estate companies. Most of these projects will be wasteful and inefficient, but the numbers will be hit and jobs secured. The externalities will be comrades rushing to their favourite inflation hedge. Apartments are already extremely expensive relative to median income, and food inflation is up and to the right. Those on the wealthy coasts definitely know about Bitcoin, and I expect the OTC trading platforms to receive large inflows of RMB seeking a home in the large cap magic internet money manifestations. Because the PBOC shut down the visible BTCCNY order books, they can claim with a straight face that on the margin Chinese punters are not expressing their fear of inflation and distrust with the government via their purchases of Bitcoin. Fine by me as long as number go up. In America, Trump is fighting for his political life right now. He underplayed the seriousness of the virus. But Joe sixpack (definitely not his stomach, check the fridge first), is on high alert because now the televised spectacle of tall men dribbling balls is cancelled. Trump loves debt, and will launch some sort of fiscal bazooka in an attempt to keep the SPX at all time highs. Imagine this: in American society where both parents work, what happens when schools close? Can cash strapped families afford daycare? Will daycares even open? What about single parents, how will they cope? Even if parents now work from home, imagine the productivity drain. It’s very difficult to work and take care of bored children. Maybe pharma companies will get a boost from parents looking to dope their kids into silence. That’s just one example of the troubles facing society as certain services are no longer available due to public health concerns. The conclusion is that consumers won’t be spending, and that is the biggest ill for the American economy. Remember that shortly after 9/11 President Bush encouraged the nation to keep shopping. Taxes won’t be going up … I hope … so in order to fund these programs central banks will directly monetise government debt. All hail Modern Monetary Theory (MMT). Simply, this piece of economic sophistry posits that printing money somehow isn’t bad but generates growth. It will be the academic buttress for direct monetisation of government debt worldwide. The end game is always inflation, then Jubilee. This Debt Jubilee is an admission of failure by governments and central banks and it takes many forms, like the rebasing of global currencies with hard money, such as Gold, or the cancellation of the previous regime’s debts by a new administration. Credit claims that cannot be repaid due to insufficient growth and productivity will be extinguished in some chaotic fashion. This isn’t something that will happen this year, it will play out over the next decade. Jubilee has started in Italy. Mortgage payments are on hold. While that sounds great for homeowners, someone’s debt is another person’s asset. As Russell Buffalino would say, “The Virus; it’s what it is…” It is what it is. I am not a medical professional. I have no idea what the impact will be. Only the narrative matters. And the outpouring of negative sentiment over a demand and supply shock as governments shut their doors and economies is what matters. That fear will be the pin that pops the trust bubble of central bank prowess. Back to Bitcoin Will Bitcoin act as a safe haven as macroeconomic volatility returns? Even though it’s trading below $8,000, Bitcoin has outperformed most global equity indices in 2020. However, you gotta go down to go up. The fear and uncertainty facing humanity is enough to inspire a global margin call. Bitcoin will not escape. While I don’t believe we will revisit $3,000, max pain probably resides somewhere between $6,000 to $7,000 Bitcoin. Any crypto hedge fund that allows quarterly or less liquidity will be getting distress calls. They will be dumping coins into a falling market. That will push the price lower on the margin. I know all you HODLers say you love “cheap coins”, but will you really back up the truck if the S&P is flirting with 2,000? We shall see. As central bank printing presses switch into beast mode, Bitcoin should enjoy a nice run back through $10,000 towards $20,000 by year end. Each central bank will cut rates to zero and announce open ended quantitative easing. But initially just like in 2008 and 2009, what seems like a no-brainer - central bank prints and risk assets like Gold and Bitcoin appreciate - will not transpire. The time to back up the truck is when the futures basis goes flat or negative. That will signal an evaporation of optimism. Then you must surf the tidal wave of free money, and begin buying crypto with both hands. First fill your Bitcoin handbags, then acquire all the other dog shit … even CRipple might pop. Long live volatility, and stay healthy. Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
  6. Корона вирусът прерастна в световна пандемия, която ще предизвика шок в социалния, икономическия и дори политическия световен ред. Ако се замислим, ще видим, че рисковете от този шок са не по-малко опасни от риска за здравето ни. В тази статия ще опиша как крипто-индустрията, посредством така наречените stable coins, ни... Материалът Корона вирус: как да се спасим от вероятния банков колапс е публикуван за пръв път на Hash.bg. View the full article
  7. 0.19.1 Release Notes Bitcoin Core version 0.19.1 is now available from: https://bitcoincore.org/bin/bitcoin-core-0.19.1/ This minor release includes various bug fixes and performance improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: https://github.com/bitcoin/bitcoin/issues To receive security and update notifications, please subscribe to: https://bitcoincore.org/en/list/announcements/join/ How to Upgrade If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). Upgrading directly from a version of Bitcoin Core that has reached its EOL is possible, but it might take some time if the datadir needs to be migrated. Old wallet versions of Bitcoin Core are generally supported. Compatibility Bitcoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not recommended to use Bitcoin Core on unsupported systems. Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them. From Bitcoin Core 0.17.0 onwards, macOS versions earlier than 10.10 are no longer supported, as Bitcoin Core is now built using Qt 5.9.x which requires macOS 10.10+. Additionally, Bitcoin Core does not yet change appearance when macOS “dark mode” is activated. In addition to previously supported CPU platforms, this release’s pre-compiled distribution provides binaries for the RISC-V platform. 0.19.1 change log Wallet #17643 Fix origfee return for bumpfee with feerate arg (instagibbs) #16963 Fix unique_ptr usage in boost::signals2 (promag) #17258 Fix issue with conflicted mempool tx in listsinceblock (adamjonas, mchrostowski) #17924 Bug: IsUsedDestination shouldn’t use key id as script id for ScriptHash (instagibbs) #17621 IsUsedDestination should count any known single-key address (instagibbs) #17843 Reset reused transactions cache (fjahr) RPC and other APIs #17687 cli: Fix fatal leveldb error when specifying -blockfilterindex=basic twice (brakmic) #17728 require second argument only for scantxoutset start action (achow101) #17445 zmq: Fix due to invalid argument and multiple notifiers (promag) #17524 psbt: handle unspendable psbts (achow101) #17156 psbt: check that various indexes and amounts are within bounds (achow101) GUI #17427 Fix missing qRegisterMetaType for size_t (hebasto) #17695 disable File->CreateWallet during startup (fanquake) #17634 Fix comparison function signature (hebasto) #18062 Fix unintialized WalletView::progressDialog (promag) Tests and QA #17416 Appveyor improvement - text file for vcpkg package list (sipsorcery) #17488 fix “bitcoind already running” warnings on macOS (fanquake) #17980 add missing #include to fix compiler errors (kallewoof) Platform support #17736 Update msvc build for Visual Studio 2019 v16.4 (sipsorcery) #17364 Updates to appveyor config for VS2019 and Qt5.9.8 + msvc project fixes (sipsorcery) #17887 bug-fix macos: give free bytes to F_PREALLOCATE (kallewoof) Miscellaneous #17897 init: Stop indexes on shutdown after ChainStateFlushed callback (jimpo) #17450 util: Add missing headers to util/fees.cpp (hebasto) #17654 Unbreak build with Boost 1.72.0 (jbeich) #17857 scripts: Fix symbol-check & security-check argument passing (fanquake) #17762 Log to net category for exceptions in ProcessMessages (laanwj) #18100 Update univalue subtree (MarcoFalke) Credits Thanks to everyone who directly contributed to this release: Aaron Clauson Adam Jonas Andrew Chow Fabian Jahr fanquake Gregory Sanders Harris Hennadii Stepanov Jan Beich Jim Posen João Barbosa Karl-Johan Alm Luke Dashjr MarcoFalke Michael Chrostowski Russell Yanofsky Wladimir J. van der Laan As well as to everyone that helped with translations on Transifex. View the full article
  8. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest February 4, 2020 From the desk of Arthur Hayes Co-founder & CEO, BitMEX BitMEX XRPUSD Perpetual Swap Launch We are launching our new XRPUSD Perpetual Swap at 0400 UTC, 5 February 2020. Key contract specs: Symbol: XRPUSD Expiry Date: Perpetual Bitcoin Multiplier: 0.0002 XBT (20,000 Satoshis) XBT Contract Value: XRPUSD Price * Bitcoin Multiplier (20,000 Sat/$1) Underlying: .BXRP Max Leverage: 50x Funding Min/Max: -0.75% to 0.75% Session Interval: 8 hours Keep an eye on our blog for more details. From The BitMEX Research Desk Growth In The Level Of Precision Of Bitcoin Spending Abstract: In this report we analyse and discuss the average level of precision (round numbers) in Bitcoin transaction output values. We evaluated almost 1.3 billion Bitcoin outputs with non-zero values since the network was launched, representing a total value of over 5.4 billion bitcoin of spend, worth over US$12 trillion. We then placed these transaction outputs into buckets, based on the degree of precision. The level of precision has maintained a strong upward trajectory in the last decade. Currently over 70% of Bitcoin outputs use the highest available degree of precision (one satoshi), while the equivalent figure in 2012 was around 40%. Since 2019 only 0.6% of outputs spend an integer number of Bitcoin, compared to around 10% in 2012. We conclude that the primary driver for this may be the increased prevalence of fiat denominated payments, compared to the higher level of experimental usage of the network in the past. The data also suggests the Bitcoiner dream of achieving unit of account status is nowhere in sight, at least for now. Figure 1 – Proportion of Bitcoin outputs by value precision bucket (Source: BitMEX Research, Bitcoin blockchain) (Notes: Up to block height 613,999, excludes outputs with a value of zero, outputs are in groups of 1,000 blocks) Lightning Network (Part 7) – Proportion Of Public vs Private Channels Abstract: Following on from our January 2020 piece on our database of at least 60,000 non-cooperative lightning network channel closures, we were asked how many of these were public channels vs private ones. We have used the 1ml.com database of public lightning channels and cross referenced it with our dataset of non-cooperative channel closures. We conclude that around 28% of non-cooperative closures related to private channels. This 28% figure may be a reasonable proxy for the total proportion of private channels on the wider lightning network. Estimated proportion of public vs private channels on the lightning network (Source: BitMEX Research, 1ml.com) (Notes: Based on data from non-cooperative closures identified by the sweep methodology only) From The Desk Of Arthur Hayes When Options? Part 2 The above image has nothing to do with options. But it’s deep into ski season, and I’m loving the powder. I already spent a few thousand words talking about the crypto derivatives market structure. Now, let’s talk about 2020. Crypto Derivatives 2020 Roadmap While speculators’ needs are well met via the crypto delta one products on the market, there remain those who want to earn a yield on their coin, those who need to pay bills in fiat without selling coin, and those who need to smooth out their future return profile. Chasing Yield Due to the relative low volatility and range bound price action, the new crypto and decentralised finance (DeFi) crowd now demand yield. Their “shitcoin” ain’t pumping, so they might as well lend it and earn something for their troubles. Because there are not safe crypto bonds in which to invest, it is almost impossible to earn yield. While a traditional bond market for crypto does not exist, speculators are always looking to borrow money. They must borrow money to short sell crypto, and they must borrow money to trade with. The challenge is to create crypto inventory in a price neutral fashion. I will focus on Bitcoin because it has the most developed and liquid derivatives markets. The easiest way to create Bitcoin inventory is by buying Bitcoin and selling a future against it. Here are the steps: Sell 100,000 USD, buy 10 Bitcoin. Sell 100,000 contracts of the BitMEX March 2020 futures contract, XBTH20. Now you have completely removed any price risk. Assume you only use 50% leverage. That means you must deposit 5 Bitcoin on BitMEX. Lend out 5 Bitcoin OTC via a trusted counterparty, and in return receive USD as collateral. Currently most lending is over collateralised so you will receive over 100% of the value in USD or USD stablecoin. If XBTH20 trades at a discount, you will price the loan at such a rate to cover your hedging costs. If XBTH20 trades at a premium, you will earn yield via the futures premium and the loan rate. You must monitor your liquidation price. If the market rises, you can “create” more Bitcoin to post as margin by selling fiat, purchasing Bitcoin, and selling futures. In a bull market, the premium should expand, therefore, creation of Bitcoin earns positive carry. As the loan balances for Bitcoin lenders increase, the loan rates will resemble the quarterly futures per annum percentage basis. This is a great strategy for someone who abhors Bitcoin price volatility. What about those already holding Bitcoin? What yield can they earn from their inert magic internet money? One strategy which will become more prevalent in 2020 is Call Overwrite. Assume the following: You own some Bitcoin and would like to earn yield by selling upside out of the money call options. You currently hold 100 XBT. Spot = $5,000 1 month $6,000 strike call option = $500 Trade: Sell 100 call options Payoff: Income today: $50,000 (this could be structured to receive Bitcoin as the premium) Bitcoin Price Rises: If XBT settles above $6,000 in one month, you deliver 100 XBT, you receive $600,000. Bitcoin Price Falls: If XBT settles below $6,000 in one month, you deliver nothing, you receive nothing. This trade nets you a 10% yield in one month. You would like to hold onto your Bitcoin as the price goes higher; however, if it pops 20% in a month you are happy to surrender your Bitcoin. You are already holding Bitcoin therefore if the price tanks and you show a mark-to-market loss, you still get paid the premium. If the price rises you cash out at a good level, and you receive premium income. Who would buy this? As I mentioned before, speculators would rather trade XBTUSD than paying 20% for an upside call option. However, if you are chasing yield, you will not be very price-sensitive. If the fair value is 12% per month, but you receive 10% will you really care? The alternative is to continue munching on your doughnut. In essence, a price-insensitive yield high-fructose corn syrup junkie will sell implied volatility too cheap. The price-sensitive volatility trader is in the business of purchasing options where the implied volatility is less than future realised volatility. These vol traders make money by delta hedging throughout the life of the option. If this sounds like whale to you, it’s a sign you should not be purchasing these options. This is a win-win structure for both buyer and seller. These trades will be negotiated OTC. Custodians of Bitcoin will sell calls in size to large market makers. These custodians will then offer a monthly yield to customers who allow them to encumber their Bitcoin. Finally, there is a real revenue stream open to crypto custodians. Miners Getting Smart Hobbiest Bitcoin mining died when ASICs were introduced in 2013. The ever-increasing CAPEX requirements dictated that miners must operate at large scale to remain profitable. At a certain size, a miner can roughly predict how many coins they will mine over a short time period. Unless the miner has a solid balance sheet filled with fiat ready to pay operating costs, they continuously battle to obtain fiat without selling Bitcoin. The market for Bitcoin collateralised fiat loans was born out of this need. There is no derivative component to this trade. However, miners could earn income to pay OPEX by writing calls against future Bitcoin to be mined. Assumptions: You are a miner that must pay electricity and other operating costs at the end of each month. You are fairly confident that you can produce 100 Bitcoin over the next month. You enter into the below trade to earn fiat income to pay your month-end bills. Spot = $5,000 1 month $6,000 strike call option = $500 Trade: Sell 100 call options Payoff: Income today: $50,000, part or all of which is used to pay OPEX. Bitcoin Price Rises: If XBT settles above $6,000 in one month, you deliver 100 XBT, you receive $600,000. Bitcoin Price Falls: If XBT settles below $6,000 in one month, you deliver nothing, you receive nothing. Similar to the Bitcoin holder, the miner is relatively price / implied volatility insensitive. The miner’s main concern is meeting his monthly fiat bills. If the premium offered meets these goals, the miner is happy. One hiccup is how to margin this trade. Miners will only receive the total 100 Bitcoin at month end. However, the trader needs to begin to delta hedge this option immediately. This requires a belief that the miner will absolutely deliver the full amount of Bitcoin in one month if call settles in the money. If trust can be built between mining farms with a long operating history and large trading houses, liquidity could enter this market rather quickly. Floating Rate Bitcoin Note Another interesting cohort of mining wannabes are fiat holders who want to earn a yield. One month spans roughly two difficulty adjustment periods. With proper confidence on one-month future price and hashrate, you could roughly predict how much money a $1 million investment in the most efficient miners would yield each month. You could offer a floating rate note where the rate fixes monthly. The product could be called the Floating Rate Bitcoin Note (FRBN). The yield for each period would be set based on the hashrate and price at the beginning of the month. If Bitcoin rips a hole in space time on the upside, USD mining returns will be much higher. If the price takes a digger, the promoter might be producing coins below cost. The 30 day hashrate volatility is much lower than Bitcoin. Therefore, the risk which must be hedged is that of price. To hedge his downside, the promoter needs to purchase a put option where the strike price is near to his cost of production. Cost = Electricity Costs + Datacenter Rent + Mining Rig Depreciation In order to finance the purchase of the put option, the promoter can sell an upside out of the money call option. The collar structure is zero cost. If such an option structure were available, the promoter could confidently set the monthly floating rate. Assumptions: You are the promoter selling a Floating Rate Bitcoin Note. For the next period, the FRBN pays 3%. You sell $1 million worth of FRBNs. To hedge your price risk, you enter into the below zero-cost collar structure. Cost = $3,500 Hashrate is constant over next two difficulty adjustments. 1 month projected Bitcoin earnings = 100 Spot = $5,000 1 month $6,000 strike call option = $500 1 month $4,000 strike put option = $500 Payoff: Cost today: +$50,000 from selling calls, -$50,000 from buying puts = zero Bitcoin Price Rises: If the price above $60,000 in one month, you deliver 100 XBT, you receive $600,000. The put option expires worthless. Mining Profit: $600,000 - $350,000 (marginal cost of producing 100 XBT) = $250,000 Yield: $250,000 / $1,000,000 = 25% Promoter Profit: 25% - 3% (FRBN guaranteed yield) = 22% * $1,000,000 = $220,000 Bitcoin Price Falls: If the price is below $4,000 in one month, you deliver 100 XBT, you receive $400,000. The call option expires worthless. Mining Profit: $400,000 - $350,000 = $50,000 Yield: $50,000 / $1,000,000 = 5% Promoter Profit: 5% - 3% = 2% * 1,000,000 = $2,000 The other side of this trade is a large trading desk. You as the promoter must buy a $4,000 strike put option to ensure you are profitable on the downside. You are less concerned with the strike price of the call option as long as the call income covers put cost. The trading desk will play with the strike price of the call option to ensure that they can profitably hedge the delta of the zero-cost collar options structure. OTC is King OTC spot trading firms cleaned up in 2017. Today only those with the mightiest balance sheets remain. Spreads narrowed due to competition, and volumes plunged. Spot trading is almost always perfectly competitive after enough time elapses. I shed no tears for gullible investors who ploughed money into OTC shops at a revenue multiple greater than 1x. The only IP present was a telegram chat room. There is definitely a demand for these types of yield and cash flow structured option trades. These trades cannot be executed on-screen given the current liquidity and margining requirements of crypto options trading platforms. OTC shops that actually employ intelligent traders have an opportunity in 2020 to grow their profit margins. Those that can price and trade an options structure, then hedge its greeks profitably without having to farm out the vanilla components to the wider market will be met with YUGE demand. As the OTC market grows, volumes in short-dated vanilla calls and puts will grow. This is how the screen will gain liquidity. 2020 Gonna be Interesting War, elections, and viruses have already made their way into the 2020 consciousness. Your health and the political system you “enjoy” maybe completely upended by the end of the year. What do you buy when you’re fearful and what do you sell? Those traders who anticipate what the herd believes is safe and toxic will profit bigly this year. After almost ten years of volatility suppression supported by central bank money printing, life appears to be rearing its unpredictable noggin. Bitcoin needs to prove it is worth its salt as a true safe haven asset is macroeconomic volatility. Crypto traders will rejoice as the low volume phase wanes. Those who demand income from their silicon enabled monetary instrument will be able to sell volume and clip a coupon. It’s like being on Oprah, errbody gets something from heightened Bitcoin volatility. Congratulations if you actually read the entire series. I’ll check-in before the summer holidays with an assessment on how the derivatives markets tackled Winter and Spring 2020. Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
  9. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest January 13, 2020 From the desk of Arthur Hayes Co-founder & CEO, BitMEX From The BitMEX Research Desk The Bitcoin Cash Hardfork – Three Interrelated Incidents Abstract: The 15 May 2019 Bitcoin Cash hardfork appears to have suffered from three significant interrelated problems. A weakness exploited by an “attack transaction”, which caused miners to produce empty blocks. The uncertainty surrounding the empty blocks may have caused concern among some miners, who may have tried to mine on the original non-hardfork chain, causing a consensus chainsplit. There appears to have been a plan by developers and miners to recover funds accidentally sent to SegWit addresses and the above weakness may have scuppered this plan. This failure may have resulted in a deliberate and coordinated 2 block chain re-organisation. Based on our calculations, around 3,392 BCH may have been successfully double spent in an orchestrated transaction reversal. However, the only victim with respect to these double spent coins could have been the original “thief”. Illustration of the Bitcoin Cash network splits on 15 May 2019 (Source: BitMEX Research) (Notes: Graphical illustration of the split) ForkMonitor: Unexpected Inflation Detection and Warning System Abstract: ForkMonitor has now implemented unexpected inflation detection and warning systems for Bitcoin. The block reward is currently 12.5 bitcoin, which means that no more than 12.5 new bitcoin should be created each block. Some of the ForkMonitor nodes now calculate the total coin supply each block, using the gettxoutsetinfo RPC call. If the total coin supply increases by more than 12.5 bitcoin, warnings systems are initiated. This service potentially provides additional assurances to network participants about the supply of Bitcoin at any given time. (Source: ForkMonitor.info) Bitcoin’s Block Timestamp Protection Rules Abstract: We examine two of Bitcoin’s little-known rules, designed to stop nefarious miners from manipulating the block timestamps and achieving unfairly high mining rewards. We discuss why constants such as the two-hour MAX_FUTURE_BLOCK_TIME value may have been chosen and how this value may have particular implications for Bitcoin Cash. We conclude that Bitcoin’s time protection rules appear reasonably effective, an impressive feat, considering the lack of a functioning network when the rules were implemented. (Source: Pexels) Bitcoin Cash’s October 2019 Hashrate Volatility Increase Abstract: We look at the recent elevated level of hashrate volatility on the Bitcoin Cash network. We note that the apparent cyclical nature of the oscillations may indicate a form of manipulation, although we found no direct evidence of such behavior. We conclude that there are no easy solutions to Bitcoin Cash’s hashrate volatility issue, on the other hand the negative impact on the usability of the coin has been marginal so far. The best course of action in the short term may be to be patient and research possible solutions, unless a particular cause becomes more apparent. Bitcoin Cash Hashrate Estimate- (8 hour rolling average) – PH/s (Source: BitMEX Research) (Notes: Eight hour periods were chosen to maximise the visual impact of the apparent hashrate oscillations. Hashrate data calculated by using the difficulty and block timestamps) Announcing txstats.com Abstract: BitMEX Research and Coin Metrics are happy to announce the release of txstats.com, the successor to P2SH.info, an independent project created by Coin Metrics’ Lead Data Engineer, Antoine Le Calvez. Bitcoin stored by P2SH address type(Screenshot from txstats.com) Benford’s Law & Cryptocurrency Trading Data Abstract: In this report we examine Benford’s law, a mathematical rule which describes the frequency of the leading digit in various real world sequences of numbers. We look at various datasets from the cryptocurrency ecosystem, such as coin prices and trading volume data. We explain that this mathematical concept should not be looked at in isolation and that a strong understanding of the underlying economics is necessary to draw strong conclusions. We note that for a minority of trading platforms, notably OKEX and HitBTC, the reported trading volume figures appear to result in a distribution which does not follow Benford’s law. However, this pattern does not imply inappropriate manipulation of the data and there are many potential legitimate explanations for the unexpected distributions. (Ben Affleck explaining to Anna Kendrick the abnormally high occurrence of the digit 3, potentially indicating financial fraud, in the 2016 Hollywood movie “The Accountant”. Screen captured 41 minutes and 40 seconds into the film) Bitcoin’s Initial Block Download Abstract: We test the performance of Bitcoin Core by successfully conducting 35 initial block downloads (IBDs) and recording the amount of time the node takes to synchronize with the network. We used software releases in the period spanning from 2012 to 2019. The results show a considerable and consistent improvement in the performance of the software, but also a high degree of variance. Even with the latest computer hardware, older versions of Bitcoin struggled to get past the pickup in transaction volume which occured in the 2015 to 2016 period. Therefore we conclude that without the software enhancements, an initial synchronization today could be almost impossible. Figure 1 – Bitcoin Initial Block Download Time (Days) – Average Of 3 Attempts (Source: BitMEX Research) (Notes: Synchronization up to block 602,707. Further details in the notes below) Lightning Network (Part 5) – BitMEX Research Launches Penalty Transaction Alert System Abstract: ForkMonitor has launched a Lightning Network penalty transaction alert system, available at https://forkmonitor.info/lightning. Unfortunately, it is possible the alerts could be manipulated, for instance by users artificially generating this transaction type on two nodes they control. On the other hand, our new alert system should capture every failed theft attempt on the Lightning Network, in real time. This may be a useful feature to those monitoring the health and development of the Lightning Network and additionally it could be useful to individual users concerned about their channels. (Source: Pexels.com) I CAN has IPO Abstract: In contrast to the apparent management difficulties at Bitmain, in a shrewd piece of corporate finance, cryptocurrency ASIC manufacturer Canaan Creative successfully raised $90m in an IPO in November 2019, at a very attractive valuation from the company’s perspective. From Canaan’s point of view, the timing appears impeccable, right before the release of a set of financial results likely to show a loss in 2019, a Bitcoin price decline and the 2020 halvening which should reduce mining revenue. Quarterly disclosures in the prospectus illustrate extreme volatility in sales, which appear more volatile than both cryptocurrency prices and mining farm operation financials. The shares are down 43% since the listing, moving towards what we would consider a more attractive valuation for investors. Canaan’s sharp share price decline since the IPO vs Bitcoin(Source: Bloomberg) Build Systems & Security – Bitcoin Is Improving Abstract: This piece is written by Bitcoin Core contributor and BitMEX Research guest writer, Michael Ford. Michael is the recipient of the HDR Global Trading Limited Bitcoin development grant of US$60,000 per annum. In this report, Michael explains recent Bitcoin Core build system improvements and how he has been involved in removing third party software dependencies, such as OpenSSL. The number of packages built in Bitcoin Core 0.19.99 is down 44% since Bitcoin Core 0.13.2 and the build time has fallen 42% since the peak, to 135 seconds, according to Michael’s tests. This work has improved the security of the software, by reducing the attack surface and improved software performance. Bitcoin Core Dependencies – Build Time (Source: Michael Ford’s analysis) (Notes: Only requires packages, excludes downloading. Make -C depends -j8 NO_QT=1 NO_UPNP=1 etc, Conducted on MacOS) Lightning Network (Part 6) – Over 60,000 Non-Cooperative Channel Closures Abstract: In our sixth piece on the lightning network, we provide new data about its growth and size. We reveal statistics about private channels, often produced by mobile wallets, which are not normally included in traditional network metrics. We primarily focus on non-cooperative channel closures and a database we have constructed, which we believe contains all such transactions. Our database illustrates that non-cooperative channel closures are relatively common and that lightning network usage is higher than expected. Main Findings: The number of lightning network non-cooperative channel closures in Bitcoin’s history is over 60,000. Over 1,000 Bitcoin has been spent in non-cooperative channel closure transactions. (Lightning strikes the city of New York. Source: Pexels) From The Desk Of Arthur Hayes When Options? Part 1 These are the three questions any self-respecting crypto punter asks themselves: When moon? When lambo? When liquid options? If I knew the answers to questions 1 and 2, HDR Long Term Capital Management would not be a figment of my imagination, but a fee guzzling hedge fund posting returns that rival Renaissance Technologies. By the way, I recently read somewhere that since its inception, Ren Tech earned over $100 billion in net gains AFTER fees of 4 and 40. Jim Simons is the Samuel L Jackson of investing; he is one bad ass mother fucker. As the CEO of the largest crypto derivatives trading platform, I do however have a somewhat informed opinion on the third question. For those of you ringing in 2020 with a resolve to read even less text and more Instagram, here is the summary: The liquid crypto delta one trading products obviate the need for traders to rush into traditional screen options trading platforms like in traditional asset classes. That does not mean that volatility products will not pick up liquidity. As more participants rediscover the need to smooth out volatile cash flows and earn yield on their Bitcoin, both insurance and yield products with embedded options will become popular. These structured products will lead the way towards a more mature crypto derivatives market, and that liquidity will leak into vanilla options traded by sophisticated traders. BitMEX will be present in the areas of the market where we can add value. Delta One Dominance Traders use delta one products to obtain leveraged directional exposure to an asset. Traders always want more leverage when they are prescient; that’s how you earn more ducats. Traditional trading platforms and exchanges, baring shady CFD brokers / bucket shops, offer limited leverage. Unless you are a very large hedge fund, bank, or financial institution, you will not have access to a large amount of leverage. Exchanges endeavor to protect their seat holders who are on the hook for bankrupt traders by limiting leverage. The most liquid equity futures contract globally is the CME’s Globex S&P E-mini contract. I believe the maintenance margin offered by the exchange equates to max 5x leverage. 5x leverage ain’t the nuts when a large daily move in the underlying is considered 1%. Brokers may offer higher leverage trading FX pairs, but obtaining 100x or greater leverage is getting increasingly difficult. Even if you can obtain high leverage, these exchanges or brokers do not limit your liability. When the Swiss National Bank removed the CHF/EUR peg in January 2015, a few shops sued customers for large losses. That’s not a good look. Since the options are either low leverage offered at the exchange level, or high leverage offered by a broker, with the risk of total financial ruin, traders in search of safe leverage must resort to options. By purchasing out of the money (OTM) call and put options, traders can enjoy much higher leverage and limited liability. The OTM options will trade cheap because the strike price is far enough away from the current spot price to dampen the premium. You pay less for an outcome that is less likely to happen. If the trader is wrong, he only loses the premium. This way, traders construct leveraged positive convexity trades. The other, and arguably more important facet which will reduce the premium is low observed volatility levels for equities, fixed income, and currencies. If the asset price moves very little and is OTM, the premium will be cheaper, which offers larger gearing. As a result of this market structure, options appeal to speculators. In turn, speculators bring the gift of liquidity on both sides of a market. Life is all about discovering cheap convexity. Traditional asset class options markets offer convexity, leverage, and safety to speculators. Delta one products offer none of these characteristics, therefore, speculators add a significant amount of liquidity and open interest to the options markets. Crypto derivatives feature a completely different market structure. Suing your customers is bad business and almost impossible when the margin currency, Bitcoin, is barely recognised as real money. As a result, all platforms adopted a limited liability stance from the outset. You can only lose your initial margin on BitMEX, no matter how big your position is. Nothing in life is free, unless you are a politician running for election. If traders can only lose what they put in, then in volatile and jumpy markets, winners cannot enjoy their full unrealised profit. There will be situations where the market gaps up or down and the platform does not possess enough equity to pay out winners in full. That is where the socialised loss system plays a role. The socialised loss system ensures the platform is solvent under all market conditions. Crypto trading platforms did not start by selling seats to well-heeled institutions willing to put their balance sheets on the line so punters can go 100x on one of the most volatile assets in human history. I can only speak for BitMEX, but if Bitcoin goes to zero or infinity in one tick, we will be solvent. That is how much safety our socialised loss system provides. A limited liability and socialised loss margin system sounds attractive in theory, but without the third piece, the insurance fund, it is still deficient. In a two-trader system where one person is long and other side short, the maximum return on equity (ROE) is 100%. That is because you can only win what the other side has placed as margin. This platform could offer 1,000x leverage and it would still be a nothing burger. The leverage is irrelevant if you can’t raise your ROE substantially above 100%. An additional pot of funds which pays out winners when the losers go bankrupt is needed to raise ROE above 100%. Traditional exchanges partner with a clearinghouse which provides such a backstop from guarantee bonds. Usually seat holders must purchase these bonds; in return they receive a fee on every trade. However, if I came to you in 2015 and asked you to give me some Bitcoin to help traders use 100x leverage, you probably would have suffered a myocardial infarction laughing at my expense. Therefore, BitMEX and other platforms had to find another source of funds to backstop the market. The insurance fund is that pool of money. The BitMEX insurance fund currently holds approximately 33,500 Bitcoin. Pop goes the weasel, with an insurance fund the potential ROE in a socialised system rises above 100%. Mathematically the larger the insurance fund the larger the potential ROE of a new trade becomes. The other factor that influences the potential ROE is the number of traders on a platform who have different price expectations on the long and short side. The more punters, the greater chance that a liquidation order will be cleared in the market at better than bankruptcy price. As a result, the insurance fund will grow. Assume that all crypto derivatives platforms have the same number of active users. (I could posit that BitMEX has the most, but I can’t verify that without knowing the active user base of all competitors. And alas I don’t have that information.) The only public data which all socialised loss platforms post is their insurance fund. BitMEX has the largest fund. Therefore, on BitMEX a trader will have the highest pre-trade potential ROE. If we assume a non-zero insurance fund balance, then the crypto delta one markets begin to confer some juicy convexity for traders. Consider this: Traders can only lose what they put in. That means their downside loss is capped. Traders can make more when they are right than when they are wrong, regardless of going long or short. That means their return profile is always positively convex. Traders can use high leverage. In essence, the crypto capital market structure has wrapped options into a delta one product. The return profile of a crypto future or swap hasn’t changed. On the leveraged notional, a 1% rise in price equals a 1% rise in the contract. However, on an ROE basis the trader has purchased an option with the premium as the initial margin. Crypto Options Various crypto platforms have over the years offered options markets. While the liquidity is definitely better than five years ago when I entered the space, it still is pretty illiquid. Many traders lament the lack of “proper” liquid screen market of calls and puts of various strikes. Traders who cut their teeth trading equity and fx options want the same trading weapons in crypto. However, the crypto option is a breech loaded musket compared to the crypto perpetual swap Gatling gun. Charge that hill if you dare. Trading options is orders of magnitude more complicated than trading futures and swaps. Delta, Vega, Theta, Rho, Gamma, dVega / dVol, I could go on with the alphabet letter soup of the option greeks. I still remember the weekly quizzes on options math and the greeks the MD would give me during my internship on the derivatives sales desk at Deutsche Bank. Given volatility sales and trading desks employ tens of thousands but not millions, most traders of all stripes barely understand how these markets are priced. Case in point, one day I was sitting with a trader who traded Variance Swaps. A Variance Swap allows the trader to have constant vega across all strikes. If you don’t know what that means, this story will be comforting. The trader had a fancy spreadsheet which calculated all the option greeks and told him his daily PNL. All he had to do was vigorously press F9 to generate quotes. I asked him how those were calculated. He responded that he didn’t know, the quants made the spreadsheet and he just followed it blindly. Moral of the story, this shit is complicated. Strike one! Traders will always do what is easiest if they can generate the same return profile. Crypto volatility is very high. We are currently in a low volatility regime and 30 day realised volatility is around 40%. When pricing an option, the higher the volatility the more expensive the call or put. Therefore, option buyers, the speculators, must post high amounts of capital to obtain convex trades. In order to be cheaper than the BitMEX XBTUSD perpetual swap, the most liquid crypto derivatives product, the premium must be less than 1%. That is not possible when the underlying asset has such a high realised volatility. Strike two! Traders will always gravitate to the product with the most leverage. Market makers, I haven’t forgotten about you. For every buyer there is a seller. Writing options is a tough business. If the volatility is high, margin requirements for writers of options will be very expensive. Market makers must be able to write naked options while quoting. Writing naked call options on an asset that popped 40% in a few hours when Xi Jinping mentioned the word “blockchain” is risky. As a result, the margining systems employed by various platforms are extremely conservative. The same set of crypto market makers quote crypto delta one and options products. They must decide how to allocate their capital. If the option requires more capital due to margin requirements and has less flow because it’s less understood and offers less leverage, they will provide less liquidity. If the brave speculator turns up to trade an option and you can drive a Tesla pickup truck through the spread, she will hightail it back to XBTUSD. Strike three, and you are out! Traders prefer the liquid to the illiquid derivative. I hope you enjoyed a nice primer on the crypto derivatives market structure and why delta one products will be preferred to options by speculators. Delta One: High leverage Limited liability which translates into a max loss of 100% of initial margin, but a max upside that vastly exceeds 100%. Also known as positive convexity. Liquidity Options: High premiums because of high implied volatility, which translates into low leverage or gearing. Limited liability as you can only lose your premium. Illiquid After laying out what won’t work, in the next voluminous installment I will get into my views on what sort of option / volatility products will become popular in 2020. Glossary of Terms For those of you who didn’t get any of what I just said, here’s a glossary. Delta – The change in the value of a derivative contract with respect to the price of the underlying asset. Delta One – Derivatives where delta equals one. This term will be used to refer to futures and swaps products of the crypto space. I was a practicing delta one trader during my time working for the man. Socialised Loss System – This is the dominant margining system used by all liquid crypto derivatives platforms. In this system, if there is not enough money to pay out winners due to bankrupt losers, the winners’ unrealized profit is reduced, or their position is closed early. Initial Margin / Limited Liability – A complement to the socialised loss system. Traders can only lose a position’s initial margin. The trading platform cannot go after other financial assets held outside of its system. This is different than most brokers offering any sort of derivatives / leveraged trading, they can and will go after the entirety of a traders’ financial net worth if losses exceed the initial margin. Insurance Fund – This is the guarantee fund attached to a socialised loss system. On BitMEX, if you are liquidated, the system takes over your position and closes it in the market. If there is equity left over after closure, those funds are deposited into the insurance fund. The losers pay into the fund with their leftover equity. The fund is tapped when a liquidation order cannot be closed at a price which is above its bankruptcy price. Volatility Products – Derivatives where the delta is greater than one. This term will be used to refer to options products of all stripes. When trading options, you are not just trading directionally but also for convexity and yield. Convexity – This is the asymmetric nature of a payoff curve. A positively convex trade is one where you make more money when you are right than when you are wrong, assuming the same asset price movement on the up or downside. Buying an option is a positively convex trade. A negatively convex trade is one where you lose more money when you are wrong than when you are right, assuming the same asset price movement on the up or downside. Selling or writing an option is a negatively convex trade. Convexity is not free, the price for this return profile is the premium attached to any option. Yield – A trade that yields a fixed known payoff by expiry. Selling a covered call option is a yield trade. E.g. A miner expects to produce 100 Bitcoin in one year sells 100 $10,000 Strike December 2020 Bitcoin / USD Call Options and receives 20 Bitcoin premium from the buyer. The miner knows a priori that this trade will yield 20 Bitcoin of income regardless of where the price of Bitcoin settles in one year. I am doing these concepts a disservice via these curt descriptions, but I am cognizant of a burning desire on behalf of punters to read as little as possible while still trading profitably. Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
  10. Не е тайна, че на този етап Биткойн не е достатъчно анонимен. Или поне не дотолкова, доколкото ни се иска. Това е така, защото блокчейнът е публичен и видим за всички. Широко разпространено мнение е, че Биткойн и останалите криптовалути се използват основно за трансфер на средства от нелегална дейност.... Материалът PayNyms и Биткойн анонимността е публикуван за пръв път на Hash.bg. View the full article
  11. Bitcoin Core version 0.19.0.1 is now available from: https://bitcoincore.org/bin/bitcoin-core-0.19.0.1/ This release includes new features, various bug fixes and performance improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: https://github.com/bitcoin/bitcoin/issues To receive security and update notifications, please subscribe to: https://bitcoincore.org/en/list/announcements/join/ How to Upgrade If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). Upgrading directly from a version of Bitcoin Core that has reached its EOL is possible, but might take some time if the datadir needs to be migrated. Old wallet versions of Bitcoin Core are generally supported. Compatibility Bitcoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not recommended to use Bitcoin Core on unsupported systems. Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them. From 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn’t support versions of macOS older than 10.10. Additionally, Bitcoin Core does not yet change appearance when macOS “dark mode” is activated. Users running macOS Catalina may need to “right-click” and then choose “Open” to open the Bitcoin Core .dmg. This is due to new signing requirements imposed by Apple, which the Bitcoin Core project does not yet adhere too. Notable changes New user documentation Reduce memory suggests configuration tweaks for running Bitcoin Core on systems with limited memory. (#16339) New RPCs getbalances returns an object with all balances (mine, untrusted_pending and immature). Please refer to the RPC help of getbalances for details. The new RPC is intended to replace getbalance, getunconfirmedbalance, and the balance fields in getwalletinfo. These old calls and fields may be removed in a future version. (#15930, #16239) setwalletflag sets and unsets wallet flags that enable or disable features specific to that existing wallet, such as the new avoid_reuse feature documented elsewhere in these release notes. (#13756) getblockfilter gets the BIP158 filter for the specified block. This RPC is only enabled if block filters have been created using the -blockfilterindex configuration option. (#14121) New settings -blockfilterindex enables the creation of BIP158 block filters for the entire blockchain. Filters will be created in the background and currently use about 4 GiB of space. Note: this version of Bitcoin Core does not serve block filters over the P2P network, although the local user may obtain block filters using the getblockfilter RPC. (#14121) Updated settings whitebind and whitelist now accept a list of permissions to provide peers connecting using the indicated interfaces or IP addresses. If no permissions are specified with an address or CIDR network, the implicit default permissions are the same as previous releases. See the bitcoind -help output for these two options for details about the available permissions. (#16248) Users setting custom dbcache values can increase their setting slightly without using any more real memory. Recent changes reduced the memory use by about 9% and made chainstate accounting more accurate (it was underestimating the use of memory before). For example, if you set a value of “450” before, you may now set a value of “500” to use about the same real amount of memory. (#16957) Updated RPCs Note: some low-level RPC changes mainly useful for testing are described in the Low-level Changes section below. sendmany no longer has a minconf argument. This argument was not well-specified and would lead to RPC errors even when the wallet’s coin selection succeeded. Users who want to influence coin selection can use the existing -spendzeroconfchange, -limitancestorcount, -limitdescendantcount and -walletrejectlongchains configuration arguments. (#15596) getbalance and sendtoaddress, plus the new RPCs getbalances and createwallet, now accept an “avoid_reuse” parameter that controls whether already used addresses should be included in the operation. Additionally, sendtoaddress will avoid partial spends when avoid_reuse is enabled even if this feature is not already enabled via the -avoidpartialspends command line flag because not doing so would risk using up the “wrong” UTXO for an address reuse case. (#13756) RPCs which have an include_watchonly argument or includeWatching option now default to true for watch-only wallets. Affected RPCs are: getbalance, listreceivedbyaddress, listreceivedbylabel, listtransactions, listsinceblock, gettransaction, walletcreatefundedpsbt, and fundrawtransaction. (#16383) listunspent now returns a “reused” bool for each output if the wallet flag “avoid_reuse” is enabled. (#13756) getblockstats now uses BlockUndo data instead of the transaction index, making it much faster, no longer dependent on the -txindex configuration option, and functional for all non-pruned blocks. (#14802) utxoupdatepsbt now accepts a descriptors parameter that will fill out input and output scripts and keys when known. P2SH-witness inputs will be filled in from the UTXO set when a descriptor is provided that shows they’re spending segwit outputs. See the RPC help text for full details. (#15427) sendrawtransaction and testmempoolaccept no longer accept a allowhighfees parameter to fail mempool acceptance if the transaction fee exceeds the value of the configuration option -maxtxfee. Now there is a hardcoded default maximum feerate that can be changed when calling either RPC using a maxfeerate parameter. (#15620) getmempoolancestors, getmempooldescendants, getmempoolentry, and getrawmempool no longer return a size field unless the configuration option -deprecatedrpc=size is used. Instead a new vsize field is returned with the transaction’s virtual size (consistent with other RPCs such as getrawtransaction). (#15637) getwalletinfo now includes a scanning field that is either false (no scanning) or an object with information about the duration and progress of the wallet’s scanning historical blocks for transactions affecting its balances. (#15730) gettransaction now accepts a third (boolean) argument verbose. If set to true, a new decoded field will be added to the response containing the decoded transaction. This field is equivalent to RPC decoderawtransaction, or RPC getrawtransaction when verbose is passed. (#16185, #16866, #16873) createwallet accepts a new passphrase parameter. If set, this will create the new wallet encrypted with the given passphrase. If unset (the default) or set to an empty string, no encryption will be used. (#16394) getchaintxstats RPC now returns the additional key of window_final_block_height. (#16695) getmempoolentry now provides a weight field containing the transaction weight as defined in BIP141. (#16647) The getnetworkinfo and getpeerinfo commands now contain a new field with decoded network service flags. (#16786) getdescriptorinfo now returns an additional checksum field containing the checksum for the unmodified descriptor provided by the user (that is, before the descriptor is normalized for the descriptor field). (#15986) joinpsbts now shuffles the order of the inputs and outputs of the resulting joined PSBT. Previously, inputs and outputs were added in the order PSBTs were provided. This made it easy to correlate inputs to outputs, representing a privacy leak. (#16512) walletcreatefundedpsbt now signals BIP125 Replace-by-Fee if the -walletrbf configuration option is set to true. (#15911) GUI changes The GUI wallet now provides bech32 addresses by default. The user may change the address type during invoice generation using a GUI toggle, or the default address type may be changed with the -addresstype configuration option. (#15711, #16497) In 0.18.0, a ./configure flag was introduced to allow disabling BIP70 support in the GUI (support was enabled by default). In 0.19.0, this flag is now disabled by default. If you want to compile Bitcoin Core with BIP70 support in the GUI, you can pass --enable-bip70 to ./configure. (#15584) Deprecated or removed configuration options -mempoolreplacement is removed, although default node behavior remains the same. This option previously allowed the user to prevent the node from accepting or relaying BIP125 transaction replacements. This is different from the remaining configuration option -walletrbf. (#16171) Deprecated or removed RPCs bumpfee no longer accepts a totalFee option unless the configuration parameter deprecatedrpc=totalFee is specified. This parameter will be fully removed in a subsequent release. (#15996) bumpfee has a new fee_rate option as a replacement for the deprecated totalFee. (#16727) generate is now removed after being deprecated in Bitcoin Core 0.18. Use the generatetoaddress RPC instead. (#15492) P2P changes BIP 61 reject messages were deprecated in v0.18. They are now disabled by default, but can be enabled by setting the -enablebip61 command line option. BIP 61 reject messages will be removed entirely in a future version of Bitcoin Core. (#14054) To eliminate well-known denial-of-service vectors in Bitcoin Core, especially for nodes with spinning disks, the default value for the -peerbloomfilters configuration option has been changed to false. This prevents Bitcoin Core from sending the BIP111 NODE_BLOOM service flag, accepting BIP37 bloom filters, or serving merkle blocks or transactions matching a bloom filter. Users who still want to provide bloom filter support may either set the configuration option to true to re-enable both BIP111 and BIP37 support or enable just BIP37 support for specific peers using the updated -whitelist and -whitebind configuration options described elsewhere in these release notes. For the near future, lightweight clients using public BIP111/BIP37 nodes should still be able to connect to older versions of Bitcoin Core and nodes that have manually enabled BIP37 support, but developers of such software should consider migrating to either using specific BIP37 nodes or an alternative transaction filtering system. (#16152) By default, Bitcoin Core will now make two additional outbound connections that are exclusively used for block-relay. No transactions or addr messages will be processed on these connections. These connections are designed to add little additional memory or bandwidth resource requirements but should make some partitioning attacks more difficult to carry out. (#15759) Miscellaneous CLI Changes The testnet field in bitcoin-cli -getinfo has been renamed to chain and now returns the current network name as defined in BIP70 (main, test, regtest). (#15566) Low-level changes RPC getblockchaininfo no longer returns a bip9_softforks object. Instead, information has been moved into the softforks object and an additional type field describes how Bitcoin Core determines whether that soft fork is active (e.g. BIP9 or BIP90). See the RPC help for details. (#16060) getblocktemplate no longer returns a rules array containing CSV and segwit (the BIP9 deployments that are currently in active state). (#16060) getrpcinfo now returns a logpath field with the path to debug.log. (#15483) Tests The regression test chain enabled by the -regtest command line flag now requires transactions to not violate standard policy by default. This is the same default used for mainnet and makes it easier to test mainnet behavior on regtest. Note that the testnet still allows non-standard txs by default and that the policy can be locally adjusted with the -acceptnonstdtxn command line flag for both test chains. (#15891) Configuration A setting specified in the default section but not also specified in a network-specific section (e.g. testnet) will now produce an error preventing startup instead of just a warning unless the network is mainnet. This prevents settings intended for mainnet from being applied to testnet or regtest. (#15629) On platforms supporting thread_local, log lines can be prefixed with the name of the thread that caused the log. To enable this behavior, use -logthreadnames=1. (#15849) Network When fetching a transaction announced by multiple peers, previous versions of Bitcoin Core would sequentially attempt to download the transaction from each announcing peer until the transaction is received, in the order that those peers’ announcements were received. In this release, the download logic has changed to randomize the fetch order across peers and to prefer sending download requests to outbound peers over inbound peers. This fixes an issue where inbound peers could prevent a node from getting a transaction. (#14897, #15834) If a Tor hidden service is being used, Bitcoin Core will be bound to the standard port 8333 even if a different port is configured for clearnet connections. This prevents leaking node identity through use of identical non-default port numbers. (#15651) Mempool and transaction relay Allows one extra single-ancestor transaction per package. Previously, if a transaction in the mempool had 25 descendants, or it and all of its descendants were over 101,000 vbytes, any newly-received transaction that was also a descendant would be ignored. Now, one extra descendant will be allowed provided it is an immediate descendant (child) and the child’s size is 10,000 vbytes or less. This makes it possible for two-party contract protocols such as Lightning Network to give each participant an output they can spend immediately for Child-Pays-For-Parent (CPFP) fee bumping without allowing one malicious participant to fill the entire package and thus prevent the other participant from spending their output. (#15681) Transactions with outputs paying v1 to v16 witness versions (future segwit versions) are now accepted into the mempool, relayed, and mined. Attempting to spend those outputs remains forbidden by policy (“non-standard”). When this change has been widely deployed, wallets and services can accept any valid bech32 Bitcoin address without concern that transactions paying future segwit versions will become stuck in an unconfirmed state. (#15846) Legacy transactions (transactions with no segwit inputs) must now be sent using the legacy encoding format, enforcing the rule specified in BIP144. (#14039) Wallet When in pruned mode, a rescan that was triggered by an importwallet, importpubkey, importaddress, or importprivkey RPC will only fail when blocks have been pruned. Previously it would fail when -prune has been set. This change allows setting -prune to a high value (e.g. the disk size) without the calls to any of the import RPCs failing until the first block is pruned. (#15870) When creating a transaction with a fee above -maxtxfee (default 0.1 BTC), the RPC commands walletcreatefundedpsbt and fundrawtransaction will now fail instead of rounding down the fee. Be aware that the feeRate argument is specified in BTC per 1,000 vbytes, not satoshi per vbyte. (#16257) A new wallet flag avoid_reuse has been added (default off). When enabled, a wallet will distinguish between used and unused addresses, and default to not use the former in coin selection. When setting this flag on an existing wallet, rescanning the blockchain is required to correctly mark previously used destinations. Together with “avoid partial spends” (added in Bitcoin Core v0.17.0), this can eliminate a serious privacy issue where a malicious user can track spends by sending small payments to a previously-paid address that would then be included with unrelated inputs in future payments. (#13756) Build system changes Python >=3.5 is now required by all aspects of the project. This includes the build systems, test framework and linters. The previously supported minimum (3.4), was EOL in March 2019. (#14954) The minimum supported miniUPnPc API version is set to 10. This keeps compatibility with Ubuntu 16.04 LTS and Debian 8 libminiupnpc-dev packages. Please note, on Debian this package is still vulnerable to CVE-2017-8798 (in jessie only) and CVE-2017-1000494 (both in jessie and in stretch). (#15993) 0.19.0 change log Consensus #16128 Delete error-prone CScript constructor only used with FindAndDelete (instagibbs) #16060 Bury bip9 deployments (jnewbery) Policy #15557 Enhance bumpfee to include inputs when targeting a feerate (instagibbs) #15846 Make sending to future native witness outputs standard (sipa) Block and transaction handling #15632 Remove ResendWalletTransactions from the Validation Interface (jnewbery) #14121 Index for BIP 157 block filters (jimpo) #15141 Rewrite DoS interface between validation and net_processing (sdaftuar) #15880 utils and libraries: Replace deprecated Boost Filesystem functions (hebasto) #15971 validation: Add compile-time checking for negative locking requirement in LimitValidationInterfaceQueue (practicalswift) #15999 init: Remove dead code in LoadChainTip (MarcoFalke) #16015 validation: Hold cs_main when reading chainActive in RewindBlockIndex (practicalswift) #16056 remove unused magic number from consistency check (instagibbs) #16171 Remove -mempoolreplacement to prevent needless block prop slowness (TheBlueMatt) #15894 Remove duplicated “Error: “ prefix in logs (hebasto) #14193 validation: Add missing mempool locks (MarcoFalke) #15681 Allow one extra single-ancestor transaction per package (TheBlueMatt) #15305 [validation] Crash if disconnecting a block fails (sdaftuar) #16471 log correct messages when CPFP fails (jnewbery) #16433 txmempool: Remove unused default value MemPoolRemovalReason::UNKNOWN (MarcoFalke) #13868 Remove unused fScriptChecks parameter from CheckInputs (Empact) #16421 Conservatively accept RBF bumps bumping one tx at the package limits (TheBlueMatt) #16854 Prevent UpdateTip log message from being broken up (stevenroose) #16956 validation: Make GetWitnessCommitmentIndex public (MarcoFalke) #16713 Ignore old versionbit activations to avoid ‘unknown softforks’ warning (jnewbery) #17002 chainparams: Bump assumed chain params (MarcoFalke) #16849 Fix block index inconsistency in InvalidateBlock() (sdaftuar) P2P protocol and network code #15597 Generate log entry when blocks messages are received unexpectedly (pstratem) #15654 Remove unused unsanitized user agent string CNode::strSubVer (MarcoFalke) #15689 netaddress: Update CNetAddr for ORCHIDv2 (dongcarl) #15834 Fix transaction relay bugs introduced in #14897 and expire transactions from peer in-flight map (sdaftuar) #15651 torcontrol: Use the default/standard network port for Tor hidden services, even if the internal port is set differently (luke-jr) #16188 Document what happens to getdata of unknown type (MarcoFalke) #15649 Add ChaCha20Poly1305@Bitcoin AEAD (jonasschnelli) #16152 Disable bloom filtering by default (TheBlueMatt) #15993 Drop support of the insecure miniUPnPc versions (hebasto) #16197 Use mockable time for tx download (MarcoFalke) #16248 Make whitebind/whitelist permissions more flexible (NicolasDorier) #16618 [Fix] Allow connection of a noban banned peer (NicolasDorier) #16631 Restore default whitelistrelay to true (NicolasDorier) #15759 Add 2 outbound block-relay-only connections (sdaftuar) #15558 Don’t query all DNS seeds at once (sipa) #16999 0.19 seeds update (laanwj) Wallet #15288 Remove wallet -> node global function calls (ryanofsky) #15491 Improve log output for errors during load (gwillen) #13541 wallet/rpc: sendrawtransaction maxfeerate (kallewoof) #15680 Remove resendwallettransactions RPC method (jnewbery) #15508 Refactor analyzepsbt for use outside RPC code (gwillen) #15747 Remove plethora of Get*Balance (MarcoFalke) #15728 Refactor relay transactions (jnewbery) #15639 bitcoin-wallet tool: Drop libbitcoin_server.a dependency (ryanofsky) #15853 Remove unused import checkpoints.h (MarcoFalke) #15780 add cachable amounts for caching credit/debit values (kallewoof) #15778 Move maxtxfee from node to wallet (jnewbery) #15901 log on rescan completion (andrewtoth) #15917 Avoid logging no_such_file_or_directory error (promag) #15452 Replace CScriptID and CKeyID in CTxDestination with dedicated types (instagibbs) #15870 Only fail rescan when blocks have actually been pruned (MarcoFalke) #15006 Add option to create an encrypted wallet (achow101) #16001 Give WalletModel::UnlockContext move semantics (sipa) #15741 Batch write imported stuff in importmulti (achow101) #16144 do not encrypt wallets with disabled private keys (mrwhythat) #15024 Allow specific private keys to be derived from descriptor (meshcollider) #13756 “avoid_reuse” wallet flag for improved privacy (kallewoof) #16226 Move ismine to the wallet module (achow101) #16239 wallet/rpc: follow-up clean-up/fixes to avoid_reuse (kallewoof) #16286 refactoring: wallet: Fix GCC 7.4.0 warning (hebasto) #16257 abort when attempting to fund a transaction above -maxtxfee (Sjors) #16237 Have the wallet give out destinations instead of keys (achow101) #16322 Fix -maxtxfee check by moving it to CWallet::CreateTransaction (promag) #16361 Remove redundant pre-TopUpKeypool check (instagibbs) #16244 Move wallet creation out of the createwallet rpc into its own function (achow101) #16227 Refactor CWallet’s inheritance chain (achow101) #16208 Consume ReserveDestination on successful CreateTransaction (instagibbs) #16301 Use CWallet::Import* functions in all import* RPCs (achow101) #16402 Remove wallet settings from chainparams (MarcoFalke) #16415 Get rid of PendingWalletTx class (ryanofsky) #15588 Log the actual wallet file version and no longer publicly expose the “version” record (achow101) #16399 Improve wallet creation (fjahr) #16475 Enumerate walletdb keys (MarcoFalke) #15709 Do not add “setting” key as unknown (Bushstar) #16451 Remove CMerkleTx (jnewbery) #15906 Move min_depth and max_depth to coin control (amitiuttarwar) #16502 Drop unused OldKey (promag) #16394 Allow createwallet to take empty passwords to make unencrypted wallets (achow101) #15911 Use wallet RBF default for walletcreatefundedpsbt (Sjors) #16503 Remove p2pEnabled from Chain interface (ariard) #16557 restore coinbase and confirmed/conflicted checks in SubmitMemoryPoolAndRelay() (jnewbery) #14934 Descriptor expansion cache clarifications (Sjors) #16383 rpcwallet: default include_watchonly to true for watchonly wallets (jb55) #16542 Return more specific errors about invalid descriptors (achow101) #16572 Fix Char as Bool in Wallet (JeremyRubin) #16753 extract PubKey from P2PK script with Solver (theStack) #16716 Use wallet name instead of pointer on unload/release (promag) #16185 gettransaction: add an argument to decode the transaction (darosior) #16745 Translate all initErrors in CreateWalletFromFile (MarcoFalke) #16792 Assert that the HRP is lowercase in Bech32::Encode (meshcollider) #16624 encapsulate transactions state (ariard) #16830 Cleanup walletinitinterface.h (hebasto) #16796 Fix segfault in CreateWalletFromFile (MarcoFalke) #16866 Rename ‘decode’ argument in gettransaction method to ‘verbose’ (jnewbery) #16727 Explicit feerate for bumpfee (instagibbs) #16609 descriptor: fix missed m_script_arg arg renaming in #14934 (fanquake) RPC and other APIs #15492 remove deprecated generate method (Sjors) #15566 cli: Replace testnet with chain and return network name as per bip70 (fanquake) #15564 cli: Remove duplicate wallet fields from -getinfo (fanquake) #15642 Remove deprecated rpc warnings (jnewbery) #15637 Rename size to vsize in mempool related calls (fanquake) #15620 Uncouple non-wallet rpcs from maxTxFee global (MarcoFalke) #15616 Clarify decodescript RPCResult doc (MarcoFalke) #15669 Fix help text for signtransactionwithXXX (torkelrogstad) #15596 Ignore sendmany::minconf as dummy value (MarcoFalke) #15755 remove unused var in rawtransaction.cpp (Bushstar) #15746 RPCHelpMan: Always name dictionary keys (MarcoFalke) #15748 remove dead mining code (jnewbery) #15751 Speed up deriveaddresses for large ranges (sipa) #15770 Validate maxfeerate with AmountFromValue (promag) #15474 rest/rpc: Make mempoolinfo atomic (promag) #15463 Speedup getaddressesbylabel (promag) #15784 Remove dependency on interfaces::Chain in SignTransaction (ariard) #15323 Expose g_is_mempool_loaded via getmempoolinfo (Empact) #15932 Serialize in getblock without cs_main (MarcoFalke) #15930 Add balances RPC (MarcoFalke) #15730 Show scanning details in getwalletinfo (promag) #14802 faster getblockstats using BlockUndo data (FelixWeis) #14984 Speedup getrawmempool when verbose=true (promag) #16071 Hint for importmulti in help output of importpubkey and importaddress (kristapsk) #16063 Mention getwalletinfo where a rescan is triggered (promag) #16024 deriveaddresses: Correction of descriptor checksum in RPC example (ccapo) #16217 getrawtransaction: inform about blockhash argument when lookup fails (darosior) #15427 Add support for descriptors to utxoupdatepsbt (sipa) #16262 Allow shutdown while in generateblocks (pstratem) #15483 Adding a ‘logpath’ entry to getrpcinfo (darosior) #16325 Clarify that block count means height excl genesis (MarcoFalke) #16326 add new utxoupdatepsbt arguments to the CRPCCommand and CPRCCvertParam tables (jnewbery) #16332 Add logpath description for getrpcinfo (instagibbs) #16240 JSONRPCRequest-aware RPCHelpMan (kallewoof) #15996 Deprecate totalfee argument in bumpfee (instagibbs) #16467 sendrawtransaction help privacy note (jonatack) #16596 Fix getblocktemplate CLI example (emilengler) #15986 Add checksum to getdescriptorinfo (sipa) #16647 add weight to getmempoolentry output (fanquake) #16695 Add window final block height to getchaintxstats (leto) #16798 Refactor rawtransaction_util’s SignTransaction to separate prevtx parsing (achow101) #16285 Improve scantxoutset response and help message (promag) #16725 Don’t show addresses or P2PK in decoderawtransaction (NicolasDorier) #16787 Human readable network services (darosior) #16251 Improve signrawtransaction error reporting (ajtowns) #16873 fix regression in gettransaction (jonatack) #16512 Shuffle inputs and outputs after joining psbts (achow101) #16521 Use the default maxfeerate value as BTC/kB (Remagpie) #16817 Fix casing in getblockchaininfo to be inline with other fields (dangershony) #17131 fix -rpcclienttimeout 0 option (fjahr) #17249 Add missing deque include to fix build (jbeich) #17368 cli: fix -getinfo output when compiled with no wallet (fanquake) GUI #15464 Drop unused return values in WalletFrame (promag) #15614 Defer removeAndDeleteWallet when no modal widget is active (promag) #15711 Generate bech32 addresses by default (MarcoFalke) #15829 update request payment button text and tab description (fanquake) #15874 Resolve the qt/guiutil <-> qt/optionsmodel CD (251Labs) #15371 Uppercase bech32 addresses in qr codes (benthecarman) #15928 Move QRImageWidget to its own file-pair (luke-jr) #16113 move coin control “OK” to the right hand side of the dialog (fanquake) #16090 Add vertical spacer to peer detail widget (JosuGZ) #15886 qt, wallet: Revamp SendConfirmationDialog (hebasto) #16263 Use qInfo() if no error occurs (hebasto) #16153 Add antialiasing to traffic graph widget (JosuGZ) #16350 Remove unused guard (hebasto) #16106 Sort wallets in open wallet menu (promag) #16291 Stop translating PACKAGE_NAME (MarcoFalke) #16380 Remove unused bits from the service flags enum (MarcoFalke) #16379 Fix autostart filenames on Linux for testnet/regtest (hebasto) #16366 init: Use InitError for all errors in bitcoind/qt (MarcoFalke) #16436 Do not create payment server if -disablewallet option provided (hebasto) #16514 Remove unused RPCConsole::tabFocus (promag) #16497 Generate bech32 addresses by default (take 2, fixup) (MarcoFalke) #16349 Remove redundant WalletController::addWallet slot (hebasto) #16578 Do not pass in command line arguments to QApplication (achow101) #16612 Remove menu icons (laanwj) #16677 remove unused PlatformStyle::TextColorIcon (fanquake) #16694 Ensure transaction send error is always visible (fanquake) #14879 Add warning messages to the debug window (hebasto) #16708 Replace obsolete functions of QSslSocket (hebasto) #16701 Replace functions deprecated in Qt 5.13 (hebasto) #16706 Replace deprecated QSignalMapper by lambda expressions (hebasto) #16707 Remove obsolete QModelIndex::child() (hebasto) #16758 Replace QFontMetrics::width() with TextWidth() (hebasto) #16760 Change uninstall icon on Windows (GChuf) #16720 Replace objc_msgSend() function calls with the native Objective-C syntax (hebasto) #16788 Update transifex slug for 0.19 (laanwj) #15450 Create wallet menu option (achow101) #16735 Remove unused menu items for Windows and Linux (GChuf) #16826 Do additional character escaping for wallet names and address labels (achow101) #15529 Add Qt programs to msvc build (updated, no code changes) (sipsorcery) #16714 add prune to intro screen with smart default (Sjors) #16858 advise users not to switch wallets when opening a BIP70 URI (jameshilliard) #16822 Create wallet menu option follow-ups (jonatack) #16882 Re-generate translations before 0.19.0 (MarcoFalke) #16928 Rename address checkbox back to bech32 (MarcoFalke) #16837 Fix {C{,XX},LD}FLAGS pickup (dongcarl) #16971 Change default size of intro frame (emilengler) #16988 Periodic translations update (laanwj) #16852 When BIP70 is disabled, get PaymentRequest merchant using string search (achow101) #16952 make sure to update the UI when deleting a transaction (jonasschnelli) #17031 Prevent processing duplicate payment requests (promag) #17135 Make polling in ClientModel asynchronous (promag) #17120 Fix start timer from non QThread (promag) #17257 disable font antialiasing for QR image address (fanquake) Build system #14954 Require python 3.5 (MarcoFalke) #15580 native_protobuf: avoid system zlib (dongcarl) #15601 Switch to python3 (take 3) (MarcoFalke) #15581 Make less assumptions about build env (dongcarl) #14853 latest RapidCheck (fanquake) #15446 Improve depends debuggability (dongcarl) #13788 Fix –disable-asm for newer assembly checks/code (luke-jr) #12051 add missing debian contrib file to tarball (puchu) #15919 Remove unused OpenSSL includes to make it more clear where OpenSSL is used (practicalswift) #15978 .gitignore: Don’t ignore depends patches (dongcarl) #15939 gitian: Remove windows 32 bit build (MarcoFalke) #15239 scripts and tools: Move non-linux build source tarballs to “bitcoin-binaries/version” directory (hebasto) #14047 Add HKDF_HMAC256_L32 and method to negate a private key (jonasschnelli) #16051 add patch to common dependencies (fanquake) #16049 switch to secure download of all dependencies (Kemu) #16059 configure: Fix thread_local detection (dongcarl) #16089 add ability to skip building zeromq (fanquake) #15844 Purge libtool archives (dongcarl) #15461 update to Boost 1.70 (Sjors) #16141 remove GZIP export from gitian descriptors (fanquake) #16235 Cleaned up and consolidated msbuild files (no code changes) (sipsorcery) #16246 MSVC: Fix error in debug mode (Fix #16245) (NicolasDorier) #16183 xtrans: Configure flags cleanup (dongcarl) #16258 [MSVC]: Create the config.ini as part of bitcoind build (NicolasDorier) #16271 remove -Wall from rapidcheck build flags (fanquake) #16309 [MSVC] allow user level project customization (NicolasDorier) #16308 [MSVC] Copy build output to src/ automatically after build (NicolasDorier) #15457 Check std::system for -[alert block wallet]notify (Sjors) #16344 use #if HAVE_SYSTEM instead of defined(HAVE_SYSTEM) (Sjors) #16352 prune dbus from depends (fanquake) #16270 expat 2.2.7 (fanquake) #16408 Prune X packages (dongcarl) #16386 disable unused Qt features (fanquake) #16424 Treat -Wswitch as error when –enable-werror (MarcoFalke) #16441 remove qt libjpeg check from bitcoin_qt.m4 (fanquake) #16434 Specify AM_CPPFLAGS for ZMQ (domob1812) #16534 add Qt Creator Makefile.am.user to .gitignore (Bushstar) #16573 disable building libsecp256k1 benchmarks (fanquake) #16533 disable libxcb extensions (fanquake) #16589 Remove unused src/obj-test folder (MarcoFalke) #16435 autoconf: Sane --enable-debug defaults (dongcarl) #16622 echo property tests status during build (jonatack) #16611 Remove src/obj directory from repository (laanwj) #16371 ignore macOS make deploy artefacts & add them to clean-local (fanquake) #16654 build: update RapidCheck Makefile (jonatack) #16370 cleanup package configure flags (fanquake) #16746 msbuild: Ignore linker warning (sipsorcery) #16750 msbuild: adds bench_bitcoin to auto generated project files (sipsorcery) #16810 guix: Remove ssp spec file hack (dongcarl) #16477 skip deploying plugins we dont use in macdeployqtplus (fanquake) #16413 Bump QT to LTS release 5.9.8 (THETCR) #15584 disable BIP70 support by default (fanquake) #16871 make building protobuf optional in depends (fanquake) #16879 remove redundant sed patching (fanquake) #16809 zlib: Move toolchain options to configure (dongcarl) #15146 Solve SmartOS FD_ZERO build issue (Empact) #16870 update boost macros to latest upstream for improved error reporting (fanquake) #16982 Factor out qt translations from build system (laanwj) #16926 Add OpenSSL termios fix for musl libc (nmarley) #16927 Refresh ZeroMQ 4.3.1 patch (nmarley) #17005 Qt version appears only if GUI is being built (ch4ot1c) #16468 Exclude depends/Makefile in .gitignore (promag) Tests and QA #15296 Add script checking for deterministic line coverage in unit tests (practicalswift) #15338 ci: Build and run tests once on freebsd (MarcoFalke) #15479 Add .style.yapf (MarcoFalke) #15534 lint-format-strings: open files sequentially (fix for OS X) (gwillen) #15504 fuzz: Link BasicTestingSetup (shared with unit tests) (MarcoFalke) #15473 bench: Benchmark mempooltojson (MarcoFalke) #15466 Print remaining jobs in test_runner.py (stevenroose) #15631 mininode: Clearer error message on invalid magic bytes (MarcoFalke) #15255 Remove travis_wait from lint script (gkrizek) #15686 make pruning test faster (jnewbery) #15533 .style.yapf: Set column_limit=160 (MarcoFalke) #15660 Overhaul p2p_compactblocks.py (sdaftuar) #15495 Add regtests for HTTP status codes (domob1812) #15772 Properly log named args in authproxy (MarcoFalke) #15771 Prevent concurrency issues reading .cookie file (promag) #15693 travis: Switch to ubuntu keyserver to avoid timeouts (MarcoFalke) #15629 init: Throw error when network specific config is ignored (MarcoFalke) #15773 Add BitcoinTestFramework::sync_* methods (MarcoFalke) #15797 travis: Bump second timeout to 33 minutes, add rationale (MarcoFalke) #15788 Unify testing setups for fuzz, bench, and unit tests (MarcoFalke) #15352 Reduce noise level in test_bitcoin output (practicalswift) #15779 Add wallet_balance benchmark (MarcoFalke) #15843 fix outdated include in blockfilter_index_tests (jamesob) #15866 Add missing syncwithvalidationinterfacequeue to wallet_import_rescan (MarcoFalke) #15697 Make swap_magic_bytes in p2p_invalid_messages atomic (MarcoFalke) #15895 Avoid re-reading config.ini unnecessarily (luke-jr) #15896 feature_filelock, interface_bitcoin_cli: Use PACKAGE_NAME in messages rather than hardcoding Bitcoin Core (luke-jr) #15897 QA/mininode: Send all headers upfront in send_blocks_and_test to avoid sending an unconnected one (luke-jr) #15696 test_runner: Move feature_pruning to base tests (MarcoFalke) #15869 Add settings merge test to prevent regresssions (ryanofsky) #15758 Add further tests to wallet_balance (MarcoFalke) #15841 combine_logs: append node stderr and stdout if it exists (MarcoFalke) #15949 test_runner: Move pruning back to extended (MarcoFalke) #15927 log thread names by default in functional tests (jnewbery) #15664 change default Python block serialization to witness (instagibbs) #15988 Add test for ArgsManager::GetChainName (ryanofsky) #15963 Make random seed logged and settable (jnewbery) #15943 Fail if RPC has been added without tests (MarcoFalke) #16036 travis: Run all lint scripts even if one fails (scravy) #13555 parameterize adjustment period in versionbits_computeblockversion (JBaczuk) #16079 wallet_balance.py: Prevent edge cases (stevenroose) #16078 replace tx hash with txid in rawtransaction test (LongShao007) #16042 Bump MAX_NODES to 12 (MarcoFalke) #16124 Limit Python linting to files in the repo (practicalswift) #16143 Mark unit test blockfilter_index_initial_sync as non-deterministic (practicalswift) #16214 travis: Fix caching issues (MarcoFalke) #15982 Make msg_block a witness block (MarcoFalke) #16225 Make coins_tests/updatecoins_simulation_test deterministic (practicalswift) #16236 fuzz: Log output even if fuzzer failed (MarcoFalke) #15520 cirrus: Run extended test feature_pruning (MarcoFalke) #16234 Add test for unknown args (MarcoFalke) #16207 stop generating lcov coverage when functional tests fail (asood123) #16252 Log to debug.log in all unit tests (MarcoFalke) #16289 Add missing ECC_Stop() in GUI rpcnestedtests.cpp (jonasschnelli) #16278 Remove unused includes (practicalswift) #16302 Add missing syncwithvalidationinterfacequeue to wallet_balance test (MarcoFalke) #15538 wallet_bumpfee.py: Make sure coin selection produces change (instagibbs) #16294 Create at most one testing setup (MarcoFalke) #16299 bench: Move generated data to a dedicated translation unit (promag) #16329 Add tests for getblockchaininfo.softforks (MarcoFalke) #15687 tool wallet test coverage for unexpected writes to wallet (jonatack) #16267 bench: Benchmark blocktojson (fanatid) #14505 Add linter to make sure single parameter constructors are marked explicit (practicalswift) #16338 Disable other targets when enable-fuzz is set (qmma70) #16334 rpc_users: Also test rpcauth.py with password (dongcarl) #15282 Replace hard-coded hex tx with class in test framework (stevenroose) #16390 Add –filter option to test_runner.py (promag) #15891 Require standard txs in regtest by default (MarcoFalke) #16374 Enable passing wildcard test names to test runner from root (jonatack) #16420 Fix race condition in wallet_encryption test (jonasschnelli) #16422 remove redundant setup in addrman_tests (zenosage) #16438 travis: Print memory and number of cpus (MarcoFalke) #16445 Skip flaky p2p_invalid_messages test on macOS (fjahr) #16459 Fix race condition in example_test.py (sdaftuar) #16464 Ensure we don’t generate a too-big block in p2sh sigops test (sdaftuar) #16491 fix deprecated log.warn in feature_dbcrash test (jonatack) #15134 Switch one of the Travis jobs to an unsigned char environment (-funsigned-char) (practicalswift) #16505 Changes verbosity of msbuild from quiet to normal in the appveyor script (sipsorcery) #16293 Make test cases separate functions (MarcoFalke) #16470 Fail early on disconnect in mininode.wait_for_* (MarcoFalke) #16277 Suppress output in test_bitcoin for expected errors (gertjaap) #16493 Fix test failures (MarcoFalke) #16538 Add missing sync_blocks to feature_pruning (MarcoFalke) #16509 Adapt test framework for chains other than “regtest” (MarcoFalke) #16363 Add test for BIP30 duplicate tx (MarcoFalke) #16535 Explain why -whitelist is used in feature_fee_estimation (MarcoFalke) #16554 only include and use OpenSSL where it’s actually needed (BIP70) (fanquake) #16598 Remove confusing hash256 function in util (elichai) #16595 travis: Use extended 90 minute timeout when available (MarcoFalke) #16563 Add unit test for AddTimeData (mzumsande) #16561 Use colors and dots in test_runner.py output only if standard output is a terminal (practicalswift) #16465 Test p2sh-witness and bech32 in wallet_import_rescan (MarcoFalke) #16582 Rework ci (Use travis only as fallback env) (MarcoFalke) #16633 travis: Fix test_runner.py timeouts (MarcoFalke) #16646 Run tests with UPnP disabled (fanquake) #16623 ci: Add environment files for all settings (MarcoFalke) #16656 fix rpc_setban.py race (jonasschnelli) #16570 Make descriptor tests deterministic (davereikher) #16404 Test ZMQ notification after chain reorg (promag) #16726 Avoid common Python default parameter gotcha when mutable dict/list:s are used as default parameter values (practicalswift) #16739 ci: Pass down $makejobs to test_runner.py, other improvements (MarcoFalke) #16767 Check for codespell in lint-spelling.sh (kristapsk) #16768 Make lint-includes.sh work from any directory (kristapsk) #15257 Scripts and tools: Bump flake8 to 3.7.8 (Empact) #16804 Remove unused try-block in assert_debug_log (MarcoFalke) #16850 servicesnames field in getpeerinfo and getnetworkinfo (darosior) #16551 Test that low difficulty chain fork is rejected (MarcoFalke) #16737 Establish only one connection between nodes in rpc_invalidateblock (MarcoFalke) #16845 Add notes on how to generate data/wallets/high_minversion (MarcoFalke) #16888 Bump timeouts in slow running tests (MarcoFalke) #16864 Add python bech32 impl round-trip test (instagibbs) #16865 add some unit tests for merkle.cpp (soroosh-sdi) #14696 Add explicit references to related CVE’s in p2p_invalid_block test (lucash-dev) #16907 lint: Add DisabledOpcodeTemplates to whitelist (MarcoFalke) #16898 Remove connect_nodes_bi (MarcoFalke) #16917 Move common function assert_approx() into util.py (fridokus) #16921 Add information on how to add Vulture suppressions (practicalswift) #16920 Fix extra_args in wallet_import_rescan.py (MarcoFalke) #16918 Make PORT_MIN in test runner configurable (MarcoFalke) #16941 travis: Disable feature_block in tsan run due to oom (MarcoFalke) #16929 follow-up to rpc: default maxfeerate value as BTC/kB (jonatack) #16959 ci: Set $host before setting fallback values (MarcoFalke) #16961 Remove python dead code linter (laanwj) #16931 add unittests for CheckProofOfWork (soroosh-sdi) #16991 Fix service flag comparison check in rpc_net test (luke-jr) (laanwj) #16987 Correct docstring param name (jbampton) #17015 Explain QT_QPA_PLATFORM for gui tests (MarcoFalke) #17006 Enable UBSan for Travis fuzzing job (practicalswift) #17086 Fix fs_tests for unknown locales (carnhofdaki) #15903 appveyor: Write @PACKAGE_NAME@ to config (MarcoFalke) #16742 test: add executable flag for wallet_watchonly.py (theStack) #16740 qa: Relax so that the subscriber is ready before publishing zmq messages (#16740) Miscellaneous #15335 Fix lack of warning of unrecognized section names (AkioNak) #15528 contrib: Bump gitian descriptors for 0.19 (MarcoFalke) #15609 scripts and tools: Set ‘distro’ explicitly (hebasto) #15519 Add Poly1305 implementation (jonasschnelli) #15643 contrib: Gh-merge: include acks in merge commit (MarcoFalke) #15838 scripts and tools: Fetch missing review comments in github-merge.py (nkostoulas) #15920 lint: Check that all wallet args are hidden (MarcoFalke) #15849 Thread names in logs and deadlock debug tools (jamesob) #15650 Handle the result of posix_fallocate system call (lucayepa) #15766 scripts and tools: Upgrade gitian image before signing (hebasto) #15512 Add ChaCha20 encryption option (XOR) (jonasschnelli) #15968 Fix portability issue with pthreads (grim-trigger) #15970 Utils and libraries: fix static_assert for macro HAVE_THREAD_LOCAL (orientye) #15863 scripts and tools: Ensure repos are up-to-date in gitian-build.py (hebasto) #15224 Add RNG strengthening (10ms once every minute) (sipa) #15840 Contrib scripts: Filter IPv6 by ASN (abitfan) #13998 Scripts and tools: gitian-build.py improvements and corrections (hebasto) #15236 scripts and tools: Make –setup command independent (hebasto) #16114 contrib: Add curl as a required program in gitian-build.py (fanquake) #16046 util: Add type safe gettime (MarcoFalke) #15703 Update secp256k1 subtree to latest upstream (sipa) #16086 contrib: Use newer config.guess & config.sub in install_db4.sh (fanquake) #16130 Don’t GPG sign intermediate commits with github-merge tool (stevenroose) #16162 scripts: Add key for michael ford (fanquake) to trusted keys list (fanquake) #16201 devtools: Always use unabbreviated commit IDs in github-merge.py (laanwj) #16112 util: Log early messages (MarcoFalke) #16223 devtools: Fetch and display ACKs at sign-off time in github-merge (laanwj) #16300 util: Explain why the path is cached (MarcoFalke) #16314 scripts and tools: Update copyright_header.py script (hebasto) #16158 Fix logic of memory_cleanse() on MSVC and clean up docs (real-or-random) #14734 fix an undefined behavior in uint::SetHex (kazcw) #16327 scripts and tools: Update ShellCheck linter (hebasto) #15277 contrib: Enable building in guix containers (dongcarl) #16362 Add bilingual_str type (hebasto) #16481 logs: add missing space (harding) #16581 sipsorcery gitian key (sipsorcery) #16566 util: Refactor upper/lowercase functions (kallewoof) #16620 util: Move resolveerrmsg to util/error (MarcoFalke) #16625 scripts: Remove github-merge.py (fanquake) #15864 Fix datadir handling (hebasto) #16670 util: Add join helper to join a list of strings (MarcoFalke) #16665 scripts: Move update-translations.py to maintainer-tools repo (fanquake) #16730 Support serialization of std::vector<bool> (sipa) #16556 Fix systemd service file configuration directory setup (setpill) #15615 Add log output during initial header sync (jonasschnelli) #16774 Avoid unnecessary “Synchronizing blockheaders” log messages (jonasschnelli) #16489 log: harmonize bitcoind logging (jonatack) #16577 util: Cbufferedfile fixes and unit test (LarryRuane) #16984 util: Make thread names shorter (hebasto) #17038 Don’t rename main thread at process level (laanwj) #17184 util: Filter out macos process serial number (hebasto) #17095 util: Filter control characters out of log messages (laanwj) #17085 init: Change fallback locale to C.UTF-8 (laanwj) #16957 9% less memory: make SaltedOutpointHasher noexcept (martinus) #17449 fix uninitialized variable nMinerConfirmationWindow (bitcoinVBR) Documentation #15514 Update Transifex links (fanquake) #15513 add “sections” info to example bitcoin.conf (fanquake) #15530 Move wallet lock annotations to header (MarcoFalke) #15562 remove duplicate clone step in build-windows.md (fanquake) #15565 remove release note fragments (fanquake) #15444 Additional productivity tips (Sjors) #15577 Enable TLS in link to chris.beams.io (JeremyRand) #15604 release note for disabling reject messages by default (jnewbery) #15611 Add Gitian key for droark (droark) #15626 Update ACK description in CONTRIBUTING.md (jonatack) #15603 Add more tips to productivity.md (gwillen) #15683 Comment for seemingly duplicate LIBBITCOIN_SERVER (Bushstar) #15685 rpc-mining: Clarify error messages (MarcoFalke) #15760 Clarify sendrawtransaction::maxfeerate==0 help (MarcoFalke) #15659 fix findFork comment (r8921039) #15718 Improve netaddress comments (dongcarl) #15833 remove out-of-date comment on pay-to-witness support (r8921039) #15821 Remove upgrade note in release notes from EOL versions (MarcoFalke) #15267 explain AcceptToMemoryPoolWorker’s coins_to_uncache (jamesob) #15887 Align code example style with clang-format (hebasto) #15877 Fix -dustrelayfee= argument docs grammar (keepkeyjon) #15908 Align MSVC build options with Linux build ones (hebasto) #15941 Add historical release notes for 0.18.0 (laanwj) #15794 Clarify PR guidelines w/re documentation (dongcarl) #15607 Release process updates (jonatack) #14364 Clarify -blocksdir usage (sangaman) #15777 Add doxygen comments for keypool classes (jnewbery) #15820 Add productivity notes for dummy rebases (dongcarl) #15922 Explain how to pass in non-fundamental types into functions (MarcoFalke) #16080 build/doc: update bitcoin_config.h packages, release process (jonatack) #16047 analyzepsbt description in doc/psbt.md (jonatack) #16039 add release note for 14954 (fanquake) #16139 Add riscv64 to outputs list in release-process.md (JeremyRand) #16140 create security policy (narula) #16164 update release process for SECURITY.md (jonatack) #16213 Remove explicit mention of versions from SECURITY.md (MarcoFalke) #16186 doc/lint: Fix spelling errors identified by codespell 1.15.0 (Empact) #16149 Rework section on ACK in CONTRIBUTING.md (MarcoFalke) #16196 Add release notes for 14897 & 15834 (MarcoFalke) #16241 add rapidcheck to vcpkg install list (fanquake) #16243 Remove travis badge from readme (MarcoFalke) #16256 remove orphaned header in developer notes (jonatack) #15964 Improve build-osx document formatting (giulio92) #16313 Fix broken link in doc/build-osx.md (jonatack) #16330 Use placeholder instead of key expiration date (hebasto) #16339 add reduce-memory.md (fanquake) #16347 Include static members in Doxygen (dongcarl) #15824 Improve netbase comments (dongcarl) #16430 Update bips 35, 37 and 111 status (MarcoFalke) #16455 Remove downgrading warning in release notes, per 0.18 branch (MarcoFalke) #16484 update labels in CONTRIBUTING.md (MarcoFalke) #16483 update Python command in msvc readme (sipsorcery) #16504 Add release note for the deprecated totalFee option of bumpfee (promag) #16448 add note on precedence of options in bitcoin.conf (fanquake) #16536 Update and extend benchmarking.md (ariard) #16530 Fix grammar and punctuation in developer notes (Tech1k) #16574 Add historical release notes for 0.18.1 (laanwj) #16585 Update Markdown syntax for bdb packages (emilengler) #16586 Mention other ways to conserve memory on compilation (MarcoFalke) #16605 Add missing contributor to 0.18.1 release notes (meshcollider) #16615 Fix typos in COPYRIGHT (gapeman) #16626 Fix spelling error chache -> cache (nilswloewen) #16587 Improve versionbits.h documentation (ariard) #16643 Add ZMQ dependencies to the Fedora build instructions (hebasto) #16634 Refer in rpcbind doc to the manpage (MarcoFalke) #16555 mention whitelist is inbound, and applies to blocksonly (Sjors) #16645 initial RapidCheck property-based testing documentation (jonatack) #16691 improve depends prefix documentation (fanquake) #16629 Add documentation for the new whitelist permissions (NicolasDorier) #16723 Update labels in CONTRIBUTING.md (hebasto) #16461 Tidy up shadowing section (promag) #16621 add default bitcoin.conf locations (GChuf) #16752 Delete stale URL in test README (michaelfolkson) #14862 Declare BLOCK_VALID_HEADER reserved (MarcoFalke) #16806 Add issue templates for bug and feature request (MarcoFalke) #16857 Elaborate need to re-login on Debian-based after usermod for Tor group (clashicly) #16863 Add a missing closing parenthesis in the bitcoin-wallet’s help (darosior) #16757 CChainState return values (MarcoFalke) #16847 add comments clarifying how local services are advertised (jamesob) #16812 Fix whitespace errs in .md files, bitcoin.conf, and Info.plist.in (ch4ot1c) #16885 Update tx-size-small comment with relevant CVE disclosure (instagibbs) #16900 Fix doxygen comment for SignTransaction in rpc/rawtransaction_util (MarcoFalke) #16914 Update homebrew instruction for doxygen (Sjors) #16912 Remove Doxygen intro from src/bitcoind.cpp (ch4ot1c) #16960 replace outdated OpenSSL comment in test README (fanquake) #16968 Remove MSVC update step from translation process (laanwj) #16953 Improve test READMEs (fjahr) #16962 Put PR template in comments (laanwj) #16397 Clarify includeWatching for fundrawtransaction (stevenroose) #15459 add how to calculate blockchain and chainstate size variables to release process (marcoagner) #16997 Update bips.md for 0.19 (laanwj) #17001 Remove mention of renamed mapBlocksUnlinked (MarcoFalke) #17014 Consolidate release notes before 0.19.0 (move-only) (MarcoFalke) #17111 update bips.md with buried BIP9 deployments (MarcoFalke) Credits Thanks to everyone who directly contributed to this release: 251 Aaron Clauson Akio Nakamura Alistair Mann Amiti Uttarwar Andrew Chow andrewtoth Anthony Towns Antoine Riard Aseem Sood Ben Carman Ben Woosley bpay Carl Dong Carnhof Daki Chris Capobianco Chris Moore Chuf clashic clashicly Cory Fields Daki Carnhof Dan Gershony Daniel Edgecumbe Daniel Kraft Daniel McNally darosior David A. Harding David Reikher Douglas Roark Elichai Turkel Emil Emil Engler ezegom Fabian Jahr fanquake Felix Weis Ferdinando M. Ametrano fridokus gapeman GChuf Gert-Jaap Glasbergen Giulio Lombardo Glenn Willen Graham Krizek Gregory Sanders grim-trigger gwillen Hennadii Stepanov Jack Mallers James Hilliard James O’Beirne Jan Beich Jeremy Rubin JeremyRand Jim Posen John Bampton John Newbery Jon Atack Jon Layton Jonas Schnelli Jonathan “Duke” Leto João Barbosa Joonmo Yang Jordan Baczuk Jorge Timón Josu Goñi Julian Fleischer Karl-Johan Alm Kaz Wesley keepkeyjon Kirill Fomichev Kristaps Kaupe Kristian Kramer Larry Ruane Lenny Maiorani LongShao007 Luca Venturini lucash-dev Luke Dashjr marcoagner MarcoFalke marcuswin Martin Ankerl Martin Zumsande Matt Corallo MeshCollider Michael Folkson Miguel Herranz Nathan Marley Neha Narula nicolas.dorier Nils Loewen nkostoulas NullFunctor orient Patrick Strateman Peter Bushnell Peter Wagner Pieter Wuille practicalswift qmma r8921039 RJ Rybarczyk Russell Yanofsky Samuel Dobson Sebastian Falbesoner setpill shannon1916 Sjors Provoost soroosh-sdi Steven Roose Suhas Daftuar tecnovert THETCR Tim Ruffing Tobias Kaderle Torkel Rogstad Ulrich Kempken whythat William Casarin Wladimir J. van der Laan zenosage As well as everyone that helped translating on Transifex. View the full article
  12. Дори и да не е отразено в цената на Биткойн (няма драстичен спад) две от най-големите борси за деривати – Deribit и BitMEX, имат тежко денонощие. Двата проблема са от различно естество. Проблемът за Deribit се появи около 23:00 часа снощи вечер (31.10.2017). Поради вътрешна грешка в калкулирането на техния... Материалът Тежки 20 часа за най-големите крипто борси за деривати е публикуван за пръв път на Hash.bg. View the full article
  13. Някои от най-големите крипто борси в света, включително Kraken, Coinbase, Circle Internet Financial and Bittrex, сформираха екип с цел разработване на система за оценяване на редица крипто валути, които могат да бъдат идентифицирани като ценни книжа от Комисията по ценни книжа и борси (SEC). Компаниите искат да покажат на комисията,... Материалът CRC разработва платформа за оценяване на токени е публикуван за пръв път на Hash.bg. View the full article
  14. Bitcoin Core version 0.18.1 is now available from: https://bitcoincore.org/bin/bitcoin-core-0.18.1/ This is a new minor version release, including new features, various bug fixes and performance improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: https://github.com/bitcoin/bitcoin/issues To receive security and update notifications, please subscribe to: https://bitcoincore.org/en/list/announcements/join/ How to Upgrade If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). The first time you run version 0.15.0 or newer, your chainstate database will be converted to a new format, which will take anywhere from a few minutes to half an hour, depending on the speed of your machine. Note that the block database format also changed in version 0.8.0 and there is no automatic upgrade code from before version 0.8 to version 0.15.0 or later. Upgrading directly from 0.7.x and earlier without redownloading the blockchain is not supported. However, as usual, old wallet versions are still supported. Compatibility Bitcoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not recommended to use Bitcoin Core on unsupported systems. Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them. From 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn’t support versions of macOS older than 10.10. Additionally, Bitcoin Core does not yet change appearance when macOS “dark mode” is activated. Known issues Wallet GUI For advanced users who have both (1) enabled coin control features, and (2) are using multiple wallets loaded at the same time: The coin control input selection dialog can erroneously retain wrong-wallet state when switching wallets using the dropdown menu. For now, it is recommended not to use coin control features with multiple wallets loaded. 0.18.1 change log P2P protocol and network code #15990 Add tests and documentation for blocksonly (MarcoFalke) #16021 Avoid logging transaction decode errors to stderr (MarcoFalke) #16405 fix: tor: Call event_base_loopbreak from the event’s callback (promag) #16412 Make poll in InterruptibleRecv only filter for POLLIN events (tecnovert) Wallet #15913 Add -ignorepartialspends to list of ignored wallet options (luke-jr) RPC and other APIs #15991 Bugfix: fix pruneblockchain returned prune height (jonasschnelli) #15899 Document iswitness flag and fix bug in converttopsbt (MarcoFalke) #16026 Ensure that uncompressed public keys in a multisig always returns a legacy address (achow101) #14039 Disallow extended encoding for non-witness transactions (sipa) #16210 add 2nd arg to signrawtransactionwithkey examples (dooglus) #16250 signrawtransactionwithkey: report error when missing redeemScript/witnessScript (ajtowns) GUI #16044 fix the bug of OPEN CONFIGURATION FILE on Mac (shannon1916) #15957 Show “No wallets available” in open menu instead of nothing (meshcollider) #16118 Enable open wallet menu on setWalletController (promag) #16135 Set progressDialog to nullptr (promag) #16231 Fix open wallet menu initialization order (promag) #16254 Set AA_EnableHighDpiScaling attribute early (hebasto) #16122 Enable console line edit on setClientModel (promag) #16348 Assert QMetaObject::invokeMethod result (promag) Build system #15985 Add test for GCC bug 90348 (sipa) #15947 Install bitcoin-wallet manpage (domob1812) #15983 build with -fstack-reuse=none (MarcoFalke) Tests and QA #15826 Pure python EC (sipa) #15893 Add test for superfluous witness record in deserialization (instagibbs) #14818 Bugfix: test/functional/rpc_psbt: Remove check for specific error message that depends on uncertain assumptions (luke-jr) #15831 Add test that addmultisigaddress fails for watchonly addresses (MarcoFalke) Documentation #15890 Remove text about txes always relayed from -whitelist (harding) Miscellaneous #16095 Catch by reference not value in wallettool (kristapsk) #16205 Replace fprintf with tfm::format (MarcoFalke) Credits Thanks to everyone who directly contributed to this release: Andrew Chow Anthony Towns Chris Moore Daniel Kraft David A. Harding fanquake Gregory Sanders Hennadii Stepanov John Newbery Jonas Schnelli João Barbosa Kristaps Kaupe Luke Dashjr MarcoFalke MeshCollider Pieter Wuille shannon1916 tecnovert Wladimir J. van der Laan As well as everyone that helped translating on Transifex. View the full article
  15. style="margin: 0;color: black;"> View this email in a browser BitMEX Crypto Trader Digest June 28, 2019 From the desk of Arthur Hayes Co-founder & CEO, BitMEX From The BitMEX Security Team Important Security Advisory Update, June 2019 We have observed an increased number of unauthorised attempts to access customer accounts. We would like to remind all customers and users to please protect your BitMEX and personal accounts by: using strong and unique passwords; enabling Two-Factor Authentication (2FA) for all your accounts; and using a password manager. Asia Blockchain Summit 2019 in Taipei On 27 June 2019, we set a new record for crypto: >$1B open interest on XBTUSD, >$13B traded on XBTUSD, >$16B on all BitMEX products. Yet, Nouriel Roubini still believes that cryptocurrencies are a farce. Watch him face-to-face next week in Taipei's Asia Blockchain Summit vs our CEO, Arthur Hayes. All Hail Libra Obviously BitMEX must weigh in on the implications of Facebook's new Libra project. BitMEX Research and myself have differing views on what Libra is, and its future implications for the financial services industry. I hope that our analysis stands out above all the other pundits offering their opinions on the same topic. From The BitMEX Research Team Facebook Takes on ETF Giant Blackrock, with a Fixed Income ETF called Libra Abstract: In a bold move, social networking giant Facebook, has challenged the traditional finance and ETF industry, with its “Libra coin", or as we call it the "Libra ETF". We note that there are many unanswered questions about Libra, which may lack transparency, when compared to traditional ETFs. Another key disadvantage of Libra is that unlike with legacy ETFs, investment income is not distributed to unit holders. We conclude that although Libra has significant disadvantages when compared to traditional ETF products, Facebook's wide consumer reach with platforms such as Whatsapp and Instagram could give Libra a key commercial advantage. (Facebook vs Blackrock – The battle for the ETFs) Overview The structure of Libra is analogous to the popular Exchange Traded Fund (ETF) model, where unit holders are entitled to the financial returns of a basket of financial assets. The units are tradable on exchanges and a select group of authorised participants are able to create and redeem units using the underlying assets. As we pointed out in our February 2019 piece, the ETF industry has enjoyed considerable growth in the last decade or so, in particular in the area of fixed income (See figure 1 below). In June 2019, in a bombshell moment for the ETF industry and challenge for the established players such as Blackrock and Vanguard, social media and internet conglomerate Facebook, entered the game. In a direct challenge to Blackrocks’s “iShares Core U.S. Aggregate Bond ETF” (AGG), Facebook announced plans to launch a new ETF, the “Libra ETF”, also focused on fixed income and government bonds. Figure 1 – Size of the Top Bond ETFs Targeting US Investors – US$ Billion (Source: BitMEX Research, Bloomberg) (Note: The chart represents the sum of the market capitalisations of the following bond ETFs: iShares Core U.S. Aggregate Bond ETF, Vanguard Total Bond Market ETF, iShares iBoxx $ Investment Grade Corporate Bond ETF, Vanguard Short-Term Corporate Bond ETF, Vanguard Short-Term Bond ETF, Vanguard Intermediate-Term Corporate Bond ETF, iShares J.P. Morgan USD Emerging Markets Bond ETF, Vanguard Total International Bond ETF, iShares MBS Bond ETF, iShares iBoxx $ High Yield Corporate Bond ETF, PIMCO Enhanced Short Maturity Strategy Fund, Vanguard Intermediate-Term Bond ETF, iShares Short-Term Corporate Bond ETF, SPDR Barclays High Yield Bond ETF, iShares Short Maturity Bond ETF) Comparing the new ETF structure with the traditional space In figure 2 below, we have analysed and compared the new innovative Libra ETF to a traditional ETF, Blackrock’s iShares Core US Aggregate Bond ETF (AGG). Our analysis shows that, although the Libra product is new, much of the relevant information, such as transparency of the holdings and frequency of the publication of the NAV, has not yet been disclosed. The analysis also highlights that Libra may suffer from unnecessary complexity with respect to portfolio management. The fund appears to be managed by the Libra Association, which consists of many entities in multiple industries across the globe. These same entities are responsible for issuing the ETF and the list of companies is set to expand further. At the same time, the investment mandate is unclear. In contrast Blackrock’s fixed income ETF product has a clear investment mandate, to track the Bloomberg Barclays U.S. Aggregate Bond Index, which is managed independently of the ETF issuer. Perhaps the most significant disadvantage of the Libra product, is that unit holders do not appear to be entitled to receive the investment income. This contrasts unfavourably with Blackrock’s product, which focuses on an almost identical asset class and has an investment yield of around 2.6%. Defenders of Libra could point out that the expenses need to be covered from somewhere and that the Libra’s expense fee is not yet disclosed. However, the ETF industry is already highly competitive, with Blackrock charging an expense fee of just 0.05%. This expense fee is far lower than the expected investment yield of the product, at around 2.6% and therefore the Libra ETF may not be price competitive, a key potential disadvantage for potential investors. Figure 2 – Libra ETF vs iShares Core U.S. Aggregate Bond ETF (AGG) – Detailed Comparison Libra ETF iShares Core U.S. Aggregate Bond ETF (AGG) Launch date June 2019 September 2003 Issuer The Libra Association/Facebook Blackrock Assets Under Management Unknown US$63.5 billion Asset class Fixed Income Bank deposits and government securities in currencies from stable and reputable central banks Fixed income – Investment grade government and corporate bonds Underlying Index Unknown/Not applicable Bloomberg Barclays U.S. Aggregate Bond Index Portfolio managers The Libra Association, based in Switzerland will manage the reserve. The investment mandate is not currently disclosed. The current members are as follows: Mastercard PayPal PayU (Naspers’ fintech arm) Stripe Visa Booking Holdings eBay Facebook/Calibra Farfetch Lyft MercadoPago Spotify Uber Iliad Vodafone Group Anchorage Bison Trails Coinbase Xapo Andreessen Horowitz Breakthrough Initiatives Ribbit Capital Thrive Capital Union Square Ventures Creative Destruction Lab, Kiva Mercy Corps Women’s World Banking James Mauro and Scott Radell, with a clear constrained mandate to track the index Fees Unknown 0.05% Investment yield Unknown 2.6% Use of investment income Unit holders are not entitled to investment income Investment income will: first go to support the operating expenses of the association — to fund investments in the growth and development of the ecosystem, grants to nonprofit and multilateral organizations, engineering research, etc. Once that is covered, part of the remaining returns will go to pay dividends to early investors in the Libra Investment Token for their initial contribution Attributable to ETF unit holders Available exchanges Currently None The Libra Association will encourage the listing of Libra on multiple regulated electronic exchanges throughout the world NYSE Creation/redemption basket size Unknown 100,000 units Authorized Participants (entities able to create and redeem units) Authorized resellers, not currently disclosed Investment Banks Fund auditor Unknown PwC Information about holdings and Net Asset value (NAV) Unknown Full disclosure (Published daily) (Sources: iShares, Libra) We have also analysed the two alternatives from a technical perspective. As figure 3 below indicates, the key difference is that control of Libra tokens may in part be managed by digital signatures. As long as no whitelist of addresses is implemented, this may provide some advantages: Pseudonymity A limited amount of censorship resistance Relatively easy integration with cryptocurrency exchanges However, as we mentioned in our Tether report in February 2018, history has shown that these characteristics can cause platforms to ultimately face a choice between implementing KYC or face being shut down by the authorities. Facebook has already censored politically controversial figures on its main platform, therefore it may appear likely the extent to which Libra ETF units are managed by public private key cryptography is significantly constrained or eventually becomes phased out. Figure 3 – Technical and cryptographic considerations Libra ETF iShares Core U.S. Aggregate Bond ETF (AGG) Consensus system Not applicable (An ETF does not require a consensus system) Blockchain Not relevant (Grouping records of ETF transactions into a chain of blocks linked together by hashing, is inconsequential for ETFs) Control of units based on digital signature Possibly: The Libra Blockchain is pseudonymous and allows users to hold one or more addresses that are not linked to their real-world identity No (Sources: iShares, Libra) Conclusion Despite the key disadvantage, namely that Libra unit holders are not entitled to the investment income, many industry analysts are carefully examining the impact Libra could have on the traditional ETF industry and existing electronic payment systems. While our comparison to ETFs is a bit tongue and cheek, it does highlight that the structure of the product has similar attributes to existing financial products. We therefore think it is an appropriate comparison, and if Libra wants to be competitive, it should emulate some of the governance and fee characteristics of traditional ETFs. However, Libra could attract clients due to integration with platforms such as Facebook, Whatsapp and Instagram. If Libra does retain the property of allowing coins to be controlled by private keys, this is an interesting development and the coin is likely to gain share from tokens such as Tether. However, in our view, in the long run, it is likely Libra either disables this feature or makes it technically difficult, such that only a tiny minority of users have these “non-custodial” wallets. If that happens, Libra is nothing more than a high fee ETF. Libra: Zuck Me Gently The event horizon has passed. With Libra, Facebook begins its foray into the digital asset industry. Before I begin my analysis, let’s get one thing straight; Libra is not decentralised nor censorship resistant. Libra is not a cryptocurrency. Libra will destroy all stablecoins, but who gives a fuck. I shed no tears for all those projects that somehow believed there was value in a an unheard-of sponsor creating a fiat money market fund that rode on a blockchain. Libra could lay commercial banks and central banks low. It might reduce their usefulness to a dumb regulated warehouse for digital fiat money. And that is exactly what should happen to these institutions in a digital age. Why Do Commercial Banks Exist? Banks came about during a time of great danger for members of the human society. In feudal Europe you most likely worked dawn-till-dusk on the farm. Any meagre savings you or your feudal lord amassed were constantly under siege. Given that money was physical in nature, if you or your lord left the protection of the town, theft was likely. Safety of assets has been the most important value proposition for traditional banks. They could store physical assets and records safely in their vaults. Therefore, governments and wealthy individuals stored money and assets with banks. Banks were and are engaged in a massive confidence game. That is why bank building edifices portray a certain fortified grandeur. In a generation, your assets will still be there, intact and ready for use. Through their partnership with the government, banks obtain a license to issue credit and expand the money supply. They also rely on the legalised violence of the government to enforce contracts. Don’t pay the bank back, they will confiscate the encumbered asset. Should you defy the courts, a government goon will happily press boot to neck, and ensure your compliance. In the last decade, human civilisation’s money and assets quickly transitioned from analogue to digital representations. Money and representations of ownership travel electronically rather than on the back of a horse. If assets and money are now digital, do we need institutions that provide physical rather than digital security? As we have seen, commercial banks are terrible at securing digital information. Pick your large too-big-to-fail bank, and there will be a story about the “leakage” (euphemism for “we have no fucking clue how to safeguard your digital property”) of customer data. Whoever has the customer, has the value Previously banks held the most valuable information about customers. They had your whole financial history, and information about where you lived and what you bought. In the past ten years, social media companies through voluntary actions of their users, amassed the most amount of personal information in human history. We share every detail of our lives on Facebook, Instagram, Google, Twitter, WeChat, LINE, Kakao Talk etc. We send billions of messages on centralised chat programs controlled by those same institutions as well. They now own the customer. The modern consumer technology companies own billions of the wealthiest customers’ data. Previous to now, these companies made money on advertising and selling a product. But as with all businesses, once you are successful capturing customers, you start offering financial services. Facebook has almost 2 billion daily active users. It makes complete sense to own the financial existence of their chattel. That is Libra. Libra Deconstructed Libra is a stablecoin backed by a basket of fiat currencies. The fiat currencies sit in a dumb regulated commercial bank. Libra allows a privileged few the ability to create and redeem Libra at its Net Asset Value (NAV). Libra rides on a blockchain where certain parties operate permissioned nodes. These parties included VC firms, technology companies, retail merchants, cryptocurrency exchanges, and most importantly commercial banks and credit card processors. Libra may invest into short term government bonds, or into anything the Foundation board allows. The income earned is not passed onto the pleb Libra users, but the node operators and Libra investment token investors. The Foundation is the governing body of the Libra ecosystem. The members are selected based on the industries they represent, and their economic investment into the ecosystem. Libra does not connect real-world identities to addresses. However, you can bet that converting assets into Libra will encounter KYC. And let’s be clear, any request from a government agency to freeze a transaction will be met with compliance. Therefore, do not use Libra to buy your mood-altering substance(s) of choice. Impact on Consumers Many of Facebook’s users reside in places with low financial services penetration. Imagine a world where a Filipina helper can purchase goods sold in Europe with Libra. She most likely does not have great banking services where she works as an overseas foreign worker. Therefore, purchasing goods from foreign countries over the internet is difficult. With Libra, there is no issue. The merchant in Europe receives payment in a basket of fiat currencies they already deal with. This transaction can happen completely inside of one of Facebook’s social media properties like Instagram or Whatsapp. Facebook or a new financial services company it creates, can issue loans at the point of sale denominated in Libra. A user can opt-in to allow Facebook to use all its data on the individual to compute a credit score. Using that credit score, Facebook will lend Libra at a rate to purchase goods from merchants selling on the Facebook platform. Voila, the poorest members of our global society can experience the joys of purchasing mass-produced Chinese knick-knacks on credit. Welcome to Pax Americana! Impact on Commercial Banks Commercial banks make money lending. They use retail deposits to make these loans. Unfortunately, in this digital age, they no longer have the best information set about these retail depositors. The social media companies do. Therefore, the Facebook, Google, and Alibaba’s of the world can originate a loan cheaper and offer a lower interest rate than a commercial bank. Libra and the plethora of copycats to come, allow technology companies to use a digital fiat representation in their ecosystems to extend credit and offer all of the most profitable banking products at a much lower cost. These global tech behemoths have billions of free cash flow on their balance sheets to lend. Commercial banks can become node operators or regulated warehouses for the reserve assets of the stablecoin in question. There is still economic value in both of these verticals, but consumer technology companies will now sell the most profitable financial products themselves. Any bank should be on notice, Libra and its clones are existential threats to their business models. Many will cheer as banks’ profit centers are eviscerated. But maybe society is trading one devil for another. Impact on Central Banks Commercial banks are not needed at their current largesse in a digital economy. With Libra, Facebook is assuming the role of a central bank. The Libra reserve is managed by a third-party foundation. The reserve managers choose the fiat currency weights, and how funds are invested. Sounds a lot like the job scorecard of a central bank governor. Consumer tech companies can now issue, from their own balance sheet, credit directly to consumers. The only difference with this model is that they, for now, are not able to actually create money like commercial banks. This is the flow: 1. Take retained fiat earnings, and exchange for Libra with an authorised primary dealer. 2. Lend Libra to your customer in exchange for a good or service you offer. 3. Obtain Libra + interest in Libra back from your customer. 4. Sell Libra in exchange for fiat with an authorised primary dealer. The money supply does not expand. That is the one major divergence from how a central bank issues credit into an economy. Central banks’ lending in most cases increases the aggregate supply of money. Why trust a few crusty old men and women to manage the monetary health of the global economy. Let’s trust Zuck! I have no love lost for US Representative Maxine Waters’ idiotic statements and actions on the US House Financial Services Committee. But her and other government officials’ outbursts of concern are not driven by altruistic feelings towards their subjects, but rather a fear of the upending of the financial services industry that lines their pockets and keeps them in office. The speed at which government officials rushed to admonish Libra tells you there is some potential positive value to human society embedded in the project. Libra and Financial Privacy It is amusing to see how many people rushed to complain about the potential loss of financial freedom Libra could represent. This fear is misplaced, financial privacy is already non-existent, nor will it ever exist in a digital fiat money system. Whether it be Facebook, The Fed, or The PBOC, centralised electronic fiat money is coming - cash will be outlawed. The great thing about the launch of Libra is that it forces those concerned about the loss of financial privacy to explore alternatives. Bitcoin and other cryptocurrencies will benefit as curious plebs contemplate how secure financial privacy in this new digital age. Libra and the conversations it sparked, is the best news for Bitcoin. Two billion people will now embrace and potentially be frightened of a corporate overlord controlling their financial wellbeing. Curiosity is the best food for the Bitcoin bull market. Through their investments in augmented and virtual reality, it appears that Facebook wishes to create a completely new digital world. Libra could be the financial mana that powers this virtual existence. Let’s hope that while we are vegetating in our haptic pods, our physical shells don’t get Zucked too hard. Please Zuck me gently, and Zuck me long time. Risk Disclaimer This article should not be copied or reproduced in whole or in part. The information contained in this article does not constitute research or a recommendation. Neither BitMEX nor any of its affiliates make any representation or warranty, as to the accuracy or completeness of the statements or any information contained in this article and any liability therefor (including in respect of direct, indirect or consequential loss or damage) is expressly disclaimed. This is not providing any financial, economic, legal, accounting or tax advice or recommendations. In addition, the receipt of this article is not to be taken as constituting the giving of investment advice nor to constitute such person a client of BitMEX. Contact Us | Subscribe | Unsubscribe
×
×
  • Създай нов...