<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manu</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manu"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Manu"/>
	<updated>2026-04-10T11:33:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=70089</id>
		<title>Bech32 adoption</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=70089"/>
		<updated>2024-04-04T20:45:37Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Hardware Wallets */ Added Krux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bech32]] is a bitcoin [[address]] format specified by [[BIP 0173]]. It is used for the native segwit version 0 output types, P2WPKH and P2WSH. The [[Taproot]] softfork added another output type called Pay to Taproot (P2TR). P2TR outputs and future native segwit versions use an updated variant of [[Bech32]], called [[Bech32m]] (specified by [[BIP 0350]]). This page tracks the adoption of [[Bech32]] and [[Bech32m]].&lt;br /&gt;
&lt;br /&gt;
Ideally wallets and services would first support &#039;&#039;sending to&#039;&#039; new addresses. When most wallets and services support sending to the new address type, people are more likely to adopt it for receiving. &lt;br /&gt;
&lt;br /&gt;
The amount of bech32 addresses on the blockchain is tracked on this website: https://p2sh.info/dashboard/db/bech32-statistics?orgId=1&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Evaluating|??}} || Maybe / Haven&#039;t checked / placeholder&lt;br /&gt;
|-&lt;br /&gt;
| {{Planned}} || The developers said they plan to&lt;br /&gt;
|-&lt;br /&gt;
| {{Acceptable|PR Merged}} || In the case of software, code has been written and merged, and it will be in next release.&lt;br /&gt;
|-&lt;br /&gt;
| {{Yes}} || Feature has been released&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software Wallets ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Armory || {{Yes}} || {{No}} || {{Planned|Planned around activation}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| AQUA || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| bcoin || {{Yes}} || {{Yes}} || {{Yes|Since 2.2.0}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bisq || {{Yes}} || {{Yes}} || {{No}} || {{No}} || As of v1.5.0 https://bisq.network/blog/bisq-v1.5.0-highlights/&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Core || {{Yes|Since 0.16.0}} || {{Yes|Since 0.16.0}} || {{Yes|Since 0.21.1}} || {{Yes|Since 22.0}} || Uses P2WPKH as default address since version [https://bitcoin.org/en/release/v0.20.0 0.20.0]. Creating P2TR addresses requires manual import for now.&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Knots || {{Yes|Since 0.16.0}} || {{Yes|Since 0.16.0}} || {{Yes|Since 0.21.1}} || {{Yes|Since 22.0}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockstream Green || {{Yes}} || {{Yes}} || {{Yes|Since Mobile 3.7.6+, Desktop 1.0.4+}} || {{Planned|Planned}} || Bech32m sending support as of [https://github.com/Blockstream/gdk/releases/tag/release_0.0.47 GDK 0.0.47]&lt;br /&gt;
|-&lt;br /&gt;
| Breadwallet || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || https://www.reddit.com/r/BRDapp/comments/9xx1hq/as_of_today_brd_fully_supports_native_segwit/&lt;br /&gt;
|-&lt;br /&gt;
| [https://play.google.com/store/apps/details?id=de.schildbach.wallet Bitcoin Wallet for Android] || {{Yes}} || {{Yes}} || {{Yes|Since 9.0}} || {{No}} || Tested as of v9.20 (October 2022)&lt;br /&gt;
|-&lt;br /&gt;
| BlueWallet || {{Yes}} || {{Yes}} || {{Yes|Since 6.2.14}} || {{No}} || Tested as of v6.3.1 (October 2022)&lt;br /&gt;
|-&lt;br /&gt;
| Breez || {{Yes}} || {{Yes}} || {{Yes}} || {{Acceptable|Yes, via the dev console}} || https://github.com/breez/breez/pull/209&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{No}} || {{No}} || {{No}} || {{No}} || wallet discontinued: https://wallet.btc.com/#/announcement&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unchained-capital/caravan Caravan] || {{Yes}} || {{Yes}} || {{Planned}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Casa || {{Yes}} || {{No}} || {{Yes}} || {{Planned}} ||&lt;br /&gt;
|-&lt;br /&gt;
| C-Lightning || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinomi || {{Yes}} || {{Yes}} || {{No}} || {{No}} || Tested as of v1.26.0 (October 2022)&lt;br /&gt;
|-&lt;br /&gt;
| [https://edge.app Edge] || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned}} || https://twitter.com/thedavidcoen/status/1696526932815523957&lt;br /&gt;
|-&lt;br /&gt;
| Electrum || {{Yes}} || {{Yes}} || {{Yes|Since 4.1.0}} || {{Planned|Planned: Descriptor-based keypath spends}} || https://github.com/spesmilo/electrum/issues/7544&lt;br /&gt;
|-&lt;br /&gt;
| Exodus || {{Yes}} || {{Yes}} || {{Yes}} || {{No|Not yet planned}} || https://support.exodus.com/article/1480-bitcoin-faqs-learn-more-about-btc#&lt;br /&gt;
|-&lt;br /&gt;
| Fully Noded || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes|Since v0.2.26}} || https://twitter.com/FullyNoded/status/1438652812410298370&lt;br /&gt;
|-&lt;br /&gt;
| Guarda Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{No|Currently not planned}} || [https://twitter.com/GuardaWallet/status/1194270398730448896 twitter announcement]&lt;br /&gt;
|-&lt;br /&gt;
| Iris Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/cryptoquick/status/1585187190627528710&lt;br /&gt;
|-&lt;br /&gt;
| JoinMarket || {{Yes}} || {{Yes}} || {{Yes|Since v0.9.5}} || {{Evaluating|??}} || &lt;br /&gt;
|-&lt;br /&gt;
| Liana || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || https://twitter.com/KLoaec/status/1685291936549044224&lt;br /&gt;
|-&lt;br /&gt;
| LND || {{Yes}} || {{Yes}} || {{Yes|Since v0.15}} || {{Yes|Since v0.15}} || The coming LND v0.15 release will introduce full P2TR support including scriptpath spends, PSBT signing, and a MuSig2 API.&lt;br /&gt;
|-&lt;br /&gt;
| Muun || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/MuunWallet/status/1459294066135474177&lt;br /&gt;
|-&lt;br /&gt;
| Mycelium || {{Yes}} || {{Yes}} || {{No}} || {{No}} || Bech32m not supported as of version 3.16.0.13, tested on October 12th, 2022. https://github.com/mycelium-com/wallet-android/issues/645&lt;br /&gt;
|-&lt;br /&gt;
| Nunchuk || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/nunchuk_io/status/1511365917808103426&lt;br /&gt;
|-&lt;br /&gt;
| Phoenix || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes|Since v2.2.0}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Samourai Wallet || {{Yes}} || {{Yes}} || {{Yes|Since v0.99.98}}  || {{No|Currently not planned}} || https://twitter.com/SamouraiWallet/status/1415788631491497985?s=20&lt;br /&gt;
|-&lt;br /&gt;
| Sparrow Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/SparrowWallet/status/1415632270434705408&lt;br /&gt;
|-&lt;br /&gt;
| Specter Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/_benkaufman/status/1431293856675508228&lt;br /&gt;
|-&lt;br /&gt;
| Trust Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{No|Not planned}} || https://github.com/trustwallet/wallet-core/releases/tag/2.6.5, https://twitter.com/catenocrypt/status/1520152930065817601&lt;br /&gt;
|-&lt;br /&gt;
| Uniblow || {{Yes}} || {{Yes}} || {{Yes | Since v1.2.2}} || {{No|Not yet planned}} || [https://github.com/bitlogik/uniblow/releases/tag/v1.2.2 release1.2.2]&lt;br /&gt;
|-&lt;br /&gt;
| Wallet of Satoshi || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || https://twitter.com/walletofsatoshi/status/1459782761472872451 &lt;br /&gt;
|-&lt;br /&gt;
| Wasabi Wallet || {{Yes}} || {{Yes}} || {{Yes | Since Wasabi 2.0}} || {{Planned|Planned: via NBitcoin}} || https://twitter.com/NicolasDorier/status/1413693010236170241 &amp;lt;br&amp;gt; https://mempool.space/testnet/tx/05a23151b6ad114fb71e851147861d6c992a438ad4f62d6f0749bc9f200ef254&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hardware Wallets ===&lt;br /&gt;
&lt;br /&gt;
Hardware wallet manufacturers typically publish a web wallet or browser add-on wallet for use with their hardware. Users can also sometimes connect their hardware wallet to a software wallet like [[Electrum]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Trezor + Trezor Suite || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || since [https://blog.trezor.io/trezor-suite-and-firmware-updates-december-2021-d1e74c3ea283 Trezor Suite 21.12.2] + Trezor Firmware 1.10.4 (Model One) / 2.4.3 (Model T)&lt;br /&gt;
|-&lt;br /&gt;
| Ledger Live (desktop app) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || Ledger Live Desktop 2.35 + Bitcoin App 2.0.0, Ledger Live Mobile support TBD. https://blockstream.info/tx/41d46e6f6e58a325eb6c913aa603f4db313f4a1db0649952f06fe2cd70546451&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey chrome app || {{No}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox Desktop app || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/_benma_/status/1504455969631350792&lt;br /&gt;
|-&lt;br /&gt;
| Trezor + Electrum || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger + Electrum || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox + Electrum || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/_benma_/status/1504458280000761857&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey + Electrum || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Archos + Electrum || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coldcard + Electrum || {{Yes}} || {{Yes}} || {{Yes}}  || {{Yes}} || https://blog.coinkite.com/edge-firmware/&lt;br /&gt;
|-&lt;br /&gt;
| Ballet + app || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SeedSigner || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/KeithMukai/status/1750547895994982906&lt;br /&gt;
|-&lt;br /&gt;
| Tangem + app|| {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockstream Jade + Blockstream Green || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Planned}} || Bech32m sending support as of [https://github.com/Blockstream/gdk/releases/tag/release_0.0.47 GDK 0.0.47] available via Blockstream Green mobile apps 3.7.6+ and desktop app 1.0.4+&lt;br /&gt;
|-&lt;br /&gt;
| Keystone || {{Yes}} || {{Acceptable|Yes, but only with BTC-only firmware}} || {{Planned|Planned for Q1 2022}} || {{Evaluating}} || https://twitter.com/KeystoneWallet/status/1460110906789031938&lt;br /&gt;
|-&lt;br /&gt;
| Foundation Passport || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Planned}} || https://twitter.com/ShrtCrct6102/status/1661102603810250761&lt;br /&gt;
|-&lt;br /&gt;
| Krux || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Planned}} || https://selfcustody.github.io/krux/getting-started/usage/using-a-single-sig-wallet/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Web Wallets / Wallet Service Providers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Beach Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || https://twitter.com/nicolasburtey/status/1556659398365401088&lt;br /&gt;
|-&lt;br /&gt;
| [https://coin.space Coin Wallet] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitGo || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || Full native segwit support on v2 platform, no plans to add native segwit support on v1 platform. Also see: https://blog.bitgo.com/native-segwit-addresses-via-bitgos-api-4946f2007be9, Taproot: https://blog.bitgo.com/taproot-support-for-bitgo-wallets-9ed97f412460&lt;br /&gt;
|-&lt;br /&gt;
| [https://bitmask.app BitMask Wallet] || {{Yes}} || Taproot Only || {{Yes}} || {{Yes}} || https://twitter.com/cryptoquick/status/1685061519653076992&lt;br /&gt;
|-&lt;br /&gt;
| Bitnob || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/bernard_parah/status/1469962690483400706&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.com web|| {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/Pellicceama/status/1563171639063629828&lt;br /&gt;
|-&lt;br /&gt;
| Fireblocks || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Planned for 2022}} ||&lt;br /&gt;
|-&lt;br /&gt;
| HolyTransaction || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://coinb.in Coinb.in] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || open source JavaScript implementation&lt;br /&gt;
|-&lt;br /&gt;
| Guarda Wallet || {{Yes}} || {{Yes}} || {{Yes}} || {{No|Currently not planned}} || https://twitter.com/GuardaWallet/status/1194270398730448896&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Exchanges ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Exchanges in alphabetical order please --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[AgoraDesk]] || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || &lt;br /&gt;
|-&lt;br /&gt;
| Anycoin Direct || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/AnycoinDirect/status/1691731011447464135&lt;br /&gt;
|-&lt;br /&gt;
| Binance || {{Yes}} || {{Yes}} || {{No}} || {{No}} || https://twitter.com/colemaktypo/status/1460337599499882502&lt;br /&gt;
|-&lt;br /&gt;
| Bitaroo || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBargain.co.uk || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin.de || {{Yes}} || {{No}} || {{No}} || {{No}} || https://twitter.com/Ben_deWaal/status/1460464528181936130&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex || {{Yes}} || {{No}} || {{Yes}} || {{No}} || https://twitter.com/kilrau/status/1752252008139018670&lt;br /&gt;
|-&lt;br /&gt;
| BitMEX || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/BitMEXResearch/status/1492152557044654082&lt;br /&gt;
|-&lt;br /&gt;
| Bitonic || {{Yes}} || {{Evaluating|??}} || {{No}} || {{Evaluating|??}} || https://twitter.com/BitcoinenNL/status/1460284373291384833&lt;br /&gt;
|-&lt;br /&gt;
| Bitpanda || {{Yes}} || {{Evaluating|??}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/christiant5r/status/1461369956252139520&lt;br /&gt;
|-&lt;br /&gt;
| Bittrex || {{No}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://www.reddit.com/r/Bitcoin/comments/gqt1m6/bittrex_does_not_even_support_withdrawals_to/&lt;br /&gt;
|-&lt;br /&gt;
| Bittylicious || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://twitter.com/Bittylicious_/status/998881327347888128&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp || {{Yes}} || {{Yes}} || {{Planned}} || {{Evaluating|??}} || https://www.bitstamp.net/article/weve-added-support-bech32-bitcoin-addresses-bitsta/&lt;br /&gt;
|-&lt;br /&gt;
| Bitso || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} || &lt;br /&gt;
|-&lt;br /&gt;
| Bitwage || {{Evaluating|??}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitwala || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitypreço || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Boltz || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || https://blog.boltz.exchange/p/introducing-taproot-swaps-putting&lt;br /&gt;
|-&lt;br /&gt;
| Bottlepay || {{Yes}} || {{Yes}} || {{No}} || {{Evaluating|??}} || https://help.bottlepay.com/en/articles/4909780-what-bitcoin-addresses-do-you-support-for-on-chain-withdrawals, https://twitter.com/Stack_Russel_UK/status/1460330265751044097&lt;br /&gt;
|-&lt;br /&gt;
| BSDEX || {{Yes}} || {{No}} || {{No}} || {{No}} || https://www.bsdex.de/en/faq/#deposit-and-withdrawal-options-which-cryptocurrency-address-formats-are-supported-in-bsdex&lt;br /&gt;
|-&lt;br /&gt;
| Bull Bitcoin || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned}} || https://twitter.com/francispouliot_/status/1464264391155666950&lt;br /&gt;
|-&lt;br /&gt;
| CardCoins.co || {{Yes}} || No deposits || {{Yes}} || No deposits || https://twitter.com/CardCoinsCo/status/1452680654030872589&lt;br /&gt;
|-&lt;br /&gt;
| CEX.IO || {{No}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase.com || {{Yes}} || {{No}} || {{No|Not a priority currently}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| CoinCorner || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/CoinCorner/status/1461360995746545667&lt;br /&gt;
|-&lt;br /&gt;
| CoinFalcon || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://coinmate.io Coinmate.io] || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://coinmate.io/cz/taproot-revolucni-upgrade-bitcoinu/&lt;br /&gt;
|-&lt;br /&gt;
| Coinsbank.com || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinygram || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Flyp.me || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| LedgerX || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || Formerly FTX US Derivatives&lt;br /&gt;
|-&lt;br /&gt;
| GDax || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://www.reddit.com/r/Bitcoin/comments/8c738k/coinbase_gdax_already_allows_sending_to_bc1/&lt;br /&gt;
|-&lt;br /&gt;
| Gemini || {{Yes}} || {{Yes}} || {{No}} || {{No}} || https://np.reddit.com/r/Bitcoin/comments/b66n0v/psa_gemini_is_full_on_with_native_segwit_and_uses/&lt;br /&gt;
|-&lt;br /&gt;
| Genesis || {{Evaluating|??}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Globitex || {{No}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| HitBTC || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Hodl Hodl || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || https://medium.com/@hodlhodl/hodl-hodl-segwit-compatible-exchange-a2231968ac56&lt;br /&gt;
|-&lt;br /&gt;
| Independent Reserve|| {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://www.independentreserve.com/bitcoin/investing&lt;br /&gt;
|-&lt;br /&gt;
| Itbit || {{Evaluating|??}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Kraken || {{Yes}} || {{No}} || {{Yes}} || {{No}} || https://blog.kraken.com/post/16740/bitcoin-taproot-address-now-supported-on-kraken/&lt;br /&gt;
|-&lt;br /&gt;
| Liberalcoins || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || https://liberalcoins.com&lt;br /&gt;
|-&lt;br /&gt;
| [[LocalBitcoins]] || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://twitter.com/LocalBitcoins/status/1322194709159301120&lt;br /&gt;
|-&lt;br /&gt;
| Luno || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/dunxen/status/1751703331620126814&lt;br /&gt;
|-&lt;br /&gt;
| Okcoin || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/Okcoin/status/1471563103049756672 &lt;br /&gt;
|-&lt;br /&gt;
| Paxful.com || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://paxful.com/support/en-us/articles/360011766520-Can-I-Withdraw-Bitcoin-from-Paxful-Wallet-to-My-External-Wallet-&lt;br /&gt;
|-&lt;br /&gt;
| PeachBitcoin.com || {{Yes}} || {{No}} || {{Yes}} || {{No}} || https://github.com/sbddesign/bech32m-adoption/pull/33&lt;br /&gt;
|-&lt;br /&gt;
| Purse.io || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex.com || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} || https://www.reddit.com/r/Bitcoin/comments/a3jhcf/you_can_now_withdraw_from_poloniex_to_bech32/&lt;br /&gt;
|-&lt;br /&gt;
| Relai || {{Yes}} || {{Yes}} || {{No}} || {{No}} || https://twitter.com/_adembilican_/status/1738602193249349880&lt;br /&gt;
|-&lt;br /&gt;
| River.com || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Robinhood.com || {{Yes}} || {{Evaluating|??}} || {{No}} || {{Evaluating|??}} || https://robinhood.com/us/en/support/articles/cryptocurrency-wallets/#Supportedaddressformatsforcryptowithdrawals&lt;br /&gt;
|-&lt;br /&gt;
| Square CashApp || {{Yes}} || {{No}} || {{Yes}} || {{Evaluating|??}} || https://cash.app/help/us/en-us/20211114-bitcoin-taproot-upgrade&lt;br /&gt;
|-&lt;br /&gt;
| StackinSat.com || {{Yes}} || No deposits || {{Yes}} || No deposits || https://twitter.com/StackinSat_FR/status/1500898826416230401&lt;br /&gt;
|-&lt;br /&gt;
| Strike || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || https://github.com/sbddesign/bech32m-adoption/pull/29&lt;br /&gt;
|-&lt;br /&gt;
| Swan || {{Yes}} || No deposits || {{Yes}} || No deposits || https://twitter.com/SwanBitcoin/status/1468318386916663298&lt;br /&gt;
|-&lt;br /&gt;
| TheRockTrading.com || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || https://twitter.com/TheRockTrading/status/976787499648512003&lt;br /&gt;
|-&lt;br /&gt;
| VBTC || {{Yes}} || {{Planned}} || {{Yes}} || {{Planned}} || https://twitter.com/VBTC_Vietnam/status/1460978196816416775&lt;br /&gt;
|-&lt;br /&gt;
| Xapo || {{Yes}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bitcoin ATM Models ===&lt;br /&gt;
&lt;br /&gt;
Hopefully when a model updates then all its ATMs everywhere will gain that feature. See https://coinatmradar.com/shop/buy-bitcoin-atm/&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Bitaccess BTM || {{Yes}} || {{Yes}} || {{Planned|Work in progress}} || {{Planned}} || https://twitter.com/DylanSeago/status/1520212294898274305&lt;br /&gt;
|-&lt;br /&gt;
| GenesisCoin || {{No}} || {{No}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| General Bytes || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || Depending on configuration. Since version 20190613 https://www.generalbytes.com/en/support/changelog&lt;br /&gt;
|-&lt;br /&gt;
| Lamassu || {{Yes}} || {{Yes|Yes (optional)}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/LamassuBTC/status/1459918440303673349&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blockchain Explorers ===&lt;br /&gt;
&lt;br /&gt;
To investigate bech32 capability, you can use mainnet TXIDs &amp;lt;code&amp;gt;4ef47f6eb681d5d9fa2f7e16336cd629303c635e8da51e425b76088be9c8744c&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;514a33f1d46179b89e1fea7bbb07b682ab14083a276979f91038369d1a8d689b&amp;lt;/code&amp;gt; or look up the addresses &amp;lt;code&amp;gt;bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bc1qc7slrfxkknqcq2jevvvkdgvrt8080852dfjewde450xdlk4ugp7szw5tk9&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Some blockchain explorers can only parse the bech32 address and display it, they don&#039;t build an index so users cannot search for bech32 addresses.&lt;br /&gt;
&lt;br /&gt;
To verify bech32m readiness, you can look up the mainnet TXID &amp;lt;code&amp;gt;b10c007c60e14f9d087e0291d4d0c7869697c6681d979c6639dbd960792b4d41&amp;lt;/code&amp;gt; on which the first output should be addressed as &amp;lt;code&amp;gt;bc1pqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqsyjer9e&amp;lt;/code&amp;gt;. Note that the superseded bech32 encoding only differs in the last six characters that encode the checksum: &amp;lt;code&amp;gt;bc1pqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqs_3wf0qm_&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See also: https://en.bitcoin.it/wiki/Category:Block_chain_browsers&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Display Bech32 !! Index Bech32 !! Display Bech32m !! Index Bech32m !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| bitaps.com || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://bitaps.com&lt;br /&gt;
|-&lt;br /&gt;
| Bitflyer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://chainflyer.bitflyer.jp&lt;br /&gt;
|-&lt;br /&gt;
| Blockbook || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://btc1.trezor.io&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.com || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://www.blockchain.com/explorer&lt;br /&gt;
|-&lt;br /&gt;
| Blockchair || {{Yes}} || {{Yes}} || {{Yes|Ready, but old txns not reindexed yet}} || {{Yes|Ready, but old txns not reindexed yet}} || https://github.com/Blockchair/Blockchair.Support/issues/567#issuecomment-966393097, https://twitter.com/Blockchair/status/1458817396433731585&lt;br /&gt;
|-&lt;br /&gt;
| Blockcypher || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || https://live.blockcypher.com/btc&lt;br /&gt;
|-&lt;br /&gt;
| Blockonomics || {{Yes}} || {{Yes}} || {{Yes}} ||  {{Yes}} || https://www.blockonomics.co&lt;br /&gt;
|-&lt;br /&gt;
| Blockpath || {{Yes}} || {{Yes}} || {{No}} || {{No}} || https://blockpath.com&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://BTC.com&lt;br /&gt;
|-&lt;br /&gt;
| Esplora || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || Open source explorer, instances are https://blockstream.info/ and https://www.localbitcoinschain.com/. [https://github.com/Blockstream/esplora/issues/323 Issue] for BIP350 support.&lt;br /&gt;
|-&lt;br /&gt;
| Insight || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || Open source explorer, instances include https://insight.bitpay.com/&lt;br /&gt;
|-&lt;br /&gt;
| Mempool || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || Open source explorer, instances include https://mempool.space https://mempool.ninja https://mempool.emzy.de https://mempool.bisq.services https://mempool.bitcoin.ninja https://mempool.bitaroo.net/&lt;br /&gt;
|-&lt;br /&gt;
| OKLink || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://www.oklink.com&lt;br /&gt;
|-&lt;br /&gt;
| OXT || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://oxt.me/&lt;br /&gt;
|-&lt;br /&gt;
| Tradeblock || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Yes, but search field rejects bech32m addresses}} || https://tradeblock.com/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
| WalletExplorer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://walletexplorer.com/&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Explorer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://bitcoinexplorer.org, https://twitter.com/BitcoinExplorer/status/1425148093977309187&lt;br /&gt;
|-&lt;br /&gt;
| BitRef || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://bitref.com&lt;br /&gt;
|-&lt;br /&gt;
| Tokenview || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://tokenview.io&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Payment Processors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Payment processors in alphabetical order please --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! P2WPKH/P2WSH Invoices !! Bech32 Withdrawal addresses !! P2TR Invoices !! Bech32m Withdrawal addresses !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://apirone.com Apirone] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || Payment notifications, merchant dashboard, plugins for Magento, WooCommerce, OpenCart 2, Opencart 3.x, Virtuemart&lt;br /&gt;
|-&lt;br /&gt;
| [https://bitaps.com Bitaps] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || Payment forwarding API, Wallet API, fault tolerance callback.&lt;br /&gt;
|-&lt;br /&gt;
| [https://btcpayserver.org BTCPay Server] || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes|Supported since 1.3.0}} || https://twitter.com/NicolasDorier/status/1432354289599451136, https://twitter.com/NicolasDorier/status/1457527754350415873&lt;br /&gt;
|-&lt;br /&gt;
| [https://coingate.com CoinGate] || {{No}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://confirmo.net CONFIRMO] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://cryptochill.com CryptoChill] || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Planned}} || Highly customizable Bitcoin and Lightning Network payment gateway and custodial wallets provider. TSS/HD wallets, API, SDK.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/nickfarrow/SatSale SatSale] || {{Yes}} || n/a || {{Yes}} || n/a || Supports any address format supported by backend Bitcoin Core. Invoices use address format configured as default there. Has no withdrawal functionality in itself, payments are received in Core wallet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mining Pools ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Payout to Bech32 !! Payout to Bech32m !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.btc.com/ BTC.com Pool] || {{No}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://ckpool.org/ Ckpool] || {{Yes}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://kano.is/ KanoPool] || {{Yes}} || {{Evaluating|??}} || [https://bitcointalk.org/index.php?topic=789369.msg53374508#msg53374508 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://luxor.tech Luxor Mining] || {{Yes}} || {{Yes}} || [https://twitter.com/LuxorTechTeam/status/1685021778005872641 Tweet]&lt;br /&gt;
|-&lt;br /&gt;
| [http://poolin.com/ Poolin] || {{Yes}} || {{Evaluating|??}} || [https://bitcointalk.org/index.php?topic=5169994.msg52184844#msg52184844 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://sbicrypto.com SBICrypto Pool] || {{Yes}} || {{Acceptable|Ready to release at activation}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://slushpool.com/ Slush Pool] || {{Yes}} || {{Planned|At activation}} || [https://twitter.com/braiins_systems/status/1432376840484794375 Tweet]&lt;br /&gt;
|-&lt;br /&gt;
| [https://ukrpool.com/ Ukr Pool] || {{Yes}} || {{Evaluating|??}} || [https://bitcointalk.org/index.php?topic=5124825.msg51358033#msg51358033 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.viabtc.com/ ViaBTC Pool] || {{No}} || {{Evaluating|??}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Language !! Send to Bech32 !! Receive to P2WPKH/P2WSH !! Send to Bech32m !! Receive to P2TR !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bitcoin/libbase58 libbase58] || C || {{No}} || n/a || {{No}} || n/a&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/MetacoSA/NBitcoin NBitcoin] || .NET || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/NicolasDorier/status/1432354289599451136&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bcoin-org/bcoin bcoin] || JS ||  {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://github.com/bcoin-org/bcoin/pull/1038&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/btcsuite btcsuite/btcutil] || Go || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || &lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bitcoinjs/bitcoinjs-lib bitcoinjs-lib] || JS || {{Yes}} || {{Yes}} || {{Yes|Yes, since v6.0.0}} || {{Yes}} || https://twitter.com/junderwood4649/status/1655457044068196358&lt;br /&gt;
|-&lt;br /&gt;
| [https://bitcoinj.github.io/ bitcoinj] || Java || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || https://github.com/bitcoinj/bitcoinj/commit/183986c9801f10f1bf46bd46621e535973d39ef8&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bitcoin-s/bitcoin-s-core bitcoin-s] || Scala || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned|Planned for 2021}} || https://twitter.com/Chris_Stewart_5/status/1459205497463136270&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/rust-bitcoin/rust-bitcoin rust-bitcoin] || Rust || {{Yes}} || {{Evaluating|??}} || {{Yes}} || {{Evaluating|??}} || https://twitter.com/RCasatta/status/1423695925252329476&lt;br /&gt;
|-&lt;br /&gt;
| [https://lightningdevkit.org Lightning Dev Kit] || Rust || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|Pending BOLT update}} || &lt;br /&gt;
|-&lt;br /&gt;
| [https://bitcoindevkit.org Bitcoin Dev Kit] || Rust || {{Yes}} || {{Yes}} || {{Yes|Yes, since [https://github.com/bitcoindevkit/bdk/releases/tag/v0.14.0 0.14.0]}} || {{Yes|Yes, since [https://github.com/bitcoindevkit/bdk/releases/tag/v0.19.0 0.19.0]}} || P2TR support is &amp;quot;experimental&amp;quot;, see [https://github.com/bitcoindevkit/bdk/pull/593 PR #593]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ElementsProject/libwally-core libwally-core] || C || {{Yes}} || {{Yes}} || {{Yes|Yes, since [https://github.com/ElementsProject/libwally-core/releases/tag/release_0.8.4 0.8.4]}} || {{Yes|Yes, since [https://github.com/ElementsProject/libwally-core/releases/tag/release_0.8.4 0.8.4]}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Blockstream/gdk GDK] || C || {{Yes}} || {{Yes}} || {{Yes|Yes, since [https://github.com/Blockstream/gdk/releases/tag/release_0.0.47 0.0.47]}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Simplexum/python-bitcointx python-bitcointx] || Python || {{Yes}} ||  {{Yes}} || {{Yes}} || {{Yes}} || https://github.com/Simplexum/python-bitcointx/issues/57&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dgarage/NBXplorer/ NBXPlorer] || C# || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://twitter.com/NicolasDorier/status/1432354822888431619&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/acinq/bitcoin-kmp  Kotlin Multiplatform Bitcoin Library] || Kotlin || {{Yes}} || {{Yes}} || {{Yes}} || {{Planned}} || https://twitter.com/realtbast/status/1458533450919649284&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/libbitcoin  Libbitcoin] || C++ || {{Yes}} || {{Evaluating|??}} || {{Yes}} || {{Evaluating|??}} || https://github.com/libbitcoin/libbitcoin-system/blob/master/include/bitcoin/system/wallet/addresses/witness_address.hpp#L41&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/chaintope/bitcoinrb Bitcoinrb] || Ruby || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || https://github.com/chaintope/bitcoinrb/wiki/Taproot&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Other Services ===&lt;br /&gt;
&lt;br /&gt;
Casinos, marketplaces, etc that let users withdraw money&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Withdrawals !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1Broker || {{Yes}} || &lt;br /&gt;
|-&lt;br /&gt;
| [https://crypto.games Crypto.Games]|| {{Yes}} || [https://bitcointalk.org/index.php?topic=750760.msg31421151#msg31421151 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| YOLOdice || {{Yes}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69703</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69703"/>
		<updated>2023-05-08T18:10:41Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Windows */  Adding more info and details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to &#039;&#039;&#039;download&#039;&#039;&#039; Tor, we recommend the &#039;&#039;&#039;Tor Expert Bundle&#039;&#039;&#039; (intended for developers who need to bundle tor with their applications), it contains only the tor and pluggable transports binaries, bridge strings, and geoip data. The latest version for Windows 64bits (x86_64) or Windows 32bits (i686) is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then &#039;&#039;&#039;extract the contents on a folder&#039;&#039;&#039; in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and &#039;&#039;&#039;create a file called &#039;&#039;torrc&#039;&#039;&#039;&#039;&#039;. Open it with Notepad, type the content below and save:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open Windows PowerShell&#039;&#039;&#039; (maybe you will need to &#039;&#039;Open as Administrator&#039;&#039;), navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and enter the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the code succeeds it will say something related to the creation of a new entry on Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see something like &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see something like &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see any &#039;&#039;LISTENING&#039;&#039; output, it means that Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
See BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get &#039;&#039;tor: Authentication cookie C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie could not be opened (check permissions)&#039;&#039; on Bitcoin &#039;&#039;debug.log&#039;&#039; this means that you need to navigate to the folder &#039;&#039;C:\Windows\ServiceProfiles\LocalService&#039;&#039; and enter &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; to verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start BitcoinCore again, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above... you may need to add &#039;&#039;All Application Packages&#039;&#039;, &#039;&#039;NETWORK SERVICE&#039;&#039;, &#039;&#039;USERS&#039;&#039;, or other security groups, with at least &amp;quot;Read &amp;amp; execute&amp;quot; in order to work).&lt;br /&gt;
&lt;br /&gt;
== Related Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.keepitsimplebitcoin.com/how-to-install-tor/ KeepItSimpleBitcoin How To Install Tor (Mac OS, Linux, Windows)] - text and video instructions including Bitcoin Core config.&lt;br /&gt;
* [https://bitcoincoredocs.com/tor.html Bitcoin Core Docs Tor] - Explanation of the Bitcoin Core configs related to Tor.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69347</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69347"/>
		<updated>2022-06-21T00:24:37Z</updated>

		<summary type="html">&lt;p&gt;Manu: added Related Resources&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to download Tor, we recommend the Windows Expert Bundle that contains just Tor and nothing else. This version, without the browser, is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then extract the contents on a folder in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and create a file called &#039;&#039;torrc&#039;&#039;. Open it with Notepad, type the content below and save the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open Windows PowerShell and navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and access the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an entry at Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if it Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see these then the Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
If you want to see on BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.keepitsimplebitcoin.com/how-to-install-tor/ KeepItSimpleBitcoin How To Install Tor (Mac OS, Linux, Windows)] - text and video instructions including Bitcoin Core config.&lt;br /&gt;
* [https://bitcoincoredocs.com/tor.html Bitcoin Core Docs Tor] - Explanation of the Bitcoin Core configs related to Tor.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69346</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69346"/>
		<updated>2022-06-21T00:20:09Z</updated>

		<summary type="html">&lt;p&gt;Manu: Adding related resources and category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to download Tor, we recommend the Windows Expert Bundle that contains just Tor and nothing else. This version, without the browser, is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then extract the contents on a folder in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and create a file called &#039;&#039;torrc&#039;&#039;. Open it with Notepad, type the content below and save the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open Windows PowerShell and navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and access the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an entry at Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if it Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see these then the Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
If you want to see on BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.keepitsimplebitcoin.com/how-to-install-tor/ KeepItSimpleBitcoin How To Install Tor (Mac OS, Linux, Windows)] - text and video instructions including Bitcoin Core config.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Electrum&amp;diff=69340</id>
		<title>Electrum</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Electrum&amp;diff=69340"/>
		<updated>2022-06-19T21:28:11Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Electrum_logo.png|400px]][[Image:Capture-Electrum404.jpg|thumb|500px|Electrum 4.0.4 on Windows 7 with showing zero balance and a connected state]]&lt;br /&gt;
&lt;br /&gt;
[https://electrum.org Electrum] is a lightweight Bitcoin client, based on a client-server protocol. &lt;br /&gt;
It was released on 5 November 2011.&lt;br /&gt;
&lt;br /&gt;
== Main features ==&lt;br /&gt;
* Encrypted wallet: the file that contains bitcoin [[private keys]] is protected with a password, and never leaves the user&#039;s computer.&lt;br /&gt;
* Deterministic key generation: If you lose your wallet file, you can recover it from its [[seed phrase|seed]]. You are protected from your own mistakes. (Note that Electrum&#039;s seed phrase is not according to the BIP39 standard.) &lt;br /&gt;
* Instant on: by default the client does not download the blockchain, it requests that information from a server. No delays, always up-to-date.&lt;br /&gt;
* Transactions are signed locally: Your private keys are not shared with the server. You do not have to trust the server with your money.&lt;br /&gt;
* [[Cold storage]]: Keeping private keys offline is supported. Has a watch-only mode for online use.&lt;br /&gt;
* [[Multi-signature]]: Dividing the power to spend coins between multiple wallets is supported.&lt;br /&gt;
* [[Hardware wallet]] integration: Many leading hardware wallets can interface with Electrum, including [[Coldcard]], [[Trezor]] and [[Ledger]].&lt;br /&gt;
* Redundancy: You are not tied to a particular server, and the server does not need to know you. One server going down doesn&#039;t cause user downtimes.&lt;br /&gt;
* No single point of failure: The server code is open source, anyone can run a server. Private keys can be exported and imported into other wallets.&lt;br /&gt;
* Firewall friendly: The client does not need to open a port, it simply polls the server for updates.&lt;br /&gt;
* Free software: MIT License. Anyone can audit the code.&lt;br /&gt;
* Written in Python. The code is short, and easy to review.&lt;br /&gt;
* Add-ons: third-party plugins are supported.&lt;br /&gt;
* Support for Bitcoin URIs, signed URIs and Bitcoin aliases&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Verifying Electrum Binaries ==&lt;br /&gt;
&lt;br /&gt;
Electrum binaries can be downloaded from https://electrum.org/#download. Next to each download link there is also a signature file which can be downloaded. The signature files are for independently verifying the Electrum files were not tampered with. This step should not be overlooked as users have reported malicious funds-stealing builds of Electeum existing in the wild.&lt;br /&gt;
&lt;br /&gt;
To verify the Electrm binaries using the signatures, you need to have GPG installed. Listed below is the process for each operating system. For all operating systems, you must have Electrum&#039;s signing key downloaded to verify the Electrum binaries. This can be downloaded from https://raw.githubusercontent.com/spesmilo/electrum/master/pubkeys/ThomasV.asc.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Windows 10 has &amp;quot;Ubuntu on Windows&amp;quot; and allows you ton follow the Linux instructions [[#Linux|below]]&lt;br /&gt;
&lt;br /&gt;
On Windows, you should install GPG4Win from this location: https://gpg4win.org/download.html. Once you run the installer, you will be presented with a &amp;quot;components choosing dialog like this:&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-Install.png]]&lt;br /&gt;
&lt;br /&gt;
Leave the boxes ticked at their defaults and go to the next step of the installer. When the installation is finished, go to the Windows Start Menu and look for a program named &amp;quot;Kleopatra&amp;quot;, and launch it. If you see the following window then GPG4Win has been successfully installed.&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-Kleopatra.png]]&lt;br /&gt;
&lt;br /&gt;
Click on the Import button, and navigate to the location you saved the Electrum signing key in (you may have to change the Filter at the bottom right to &amp;quot;All Files&amp;quot; to see the key). Then Kleopatra will give you a message requesting to certify the key:&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-Certify.png]]&lt;br /&gt;
&lt;br /&gt;
Click yes, and then tick all of the email addresses in the next window to finish the process.&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-Email.png]]&lt;br /&gt;
&lt;br /&gt;
After you close the window by clicking the Certify button, click on the Decrypt/Verify button on the main window, and select the signature corresponding to the Electrum binary you have downloaded. If verification is successful, you will get the following window. Otherwise, the signature doesn&#039;t match the binary, and you need to download both of them again, and check the URL of the site you are downloading from.&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-Verify.png|none|frame|The Kleopatra message when signature verification succeeds.]]&lt;br /&gt;
&lt;br /&gt;
[[File:GPG4Win-VerifyFail.png|none|frame|The Kleopatra error message when signature verification fails.]]&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
&lt;br /&gt;
On MacOS, you should use the GPG tools suite from GPGTools: https://gpgtools.org/. Download the .dmg file, double click on it and drag its contents to the Applications folder that appears to start the installation.&lt;br /&gt;
&lt;br /&gt;
Inside the installer, click on the Customize button, and uncheck the boxes for the Mail clients. They are not necessary to verify signatures, and are trialware.&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-Customize.png]][[File:GPGTools-Mail.png]]&lt;br /&gt;
&lt;br /&gt;
After the installer is finished, GPG Keychain should open automatically. If not, then open Finder and navigate to the Applications folder to open it yourself. You will be presented with this dialog:&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-NewKey.png]]&lt;br /&gt;
&lt;br /&gt;
GPG Keychain needs to create a keypair to certify other public keys. Choose a name, email address and password that you will remember. Leave the rest of the options at their default and click on Generate Key.&lt;br /&gt;
&lt;br /&gt;
In the main window that appears, click on the Import button to import the Electrum signing key you downloaded.&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-MainWindow.png]]&lt;br /&gt;
&lt;br /&gt;
Once it has been imported, double-click on the key to open its properties, and set its trust level to Full.&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-Properties.png]]&lt;br /&gt;
&lt;br /&gt;
Then, you can just double click inside Finder on the Electrum signature for the corresponding binary to start GPG Keychain verification which will inform you about the result and whether the signature and binary are good or not.&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-Verify.png|none|frame|The GPG Keychain message when signature verification succeeds.]]&lt;br /&gt;
&lt;br /&gt;
[[File:GPGTools-VerifyFail.png|none|frame|The GPG Keychain error message when signature verification fails.]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
On Linux, the &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; command line program is preinstalled in most distributions. If for some reason it&#039;s not, look for a package called &amp;quot;gnupg&amp;quot;, &amp;quot;gpg&amp;quot; or &amp;quot;gpg2&amp;quot; in your package manager. &lt;br /&gt;
&lt;br /&gt;
Once that&#039;s done with, you run the following GPG commands to import and trust the key which Electrum binaries are signed with, and the signature files are made from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg  --import /&amp;lt;path&amp;gt;/&amp;lt;to&amp;gt;/&amp;lt;file&amp;gt;/&amp;lt;location&amp;gt;/ThomasV.asc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:GPG-Import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --sign-key 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you download the Electrum program and its signature to the same folder, and check its authenticity with the following GPG command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --verify /&amp;lt;path&amp;gt;/&amp;lt;to&amp;gt;/&amp;lt;file&amp;gt;/&amp;lt;location&amp;gt;/&amp;lt;filename&amp;gt;.asc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the path to the signature file you downloaded. If verification succeeds, you will get output indicating that the verification was successful.&lt;br /&gt;
&lt;br /&gt;
[[File:GPG-Verify.png|none|frame|The GPG message when signature verification succeeds.]]&lt;br /&gt;
&lt;br /&gt;
[[File:GPG-Verify.png|none|frame|The GPG message when signature verification fails.]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
Documentation is hosted on http://docs.electrum.org/.&lt;br /&gt;
&lt;br /&gt;
It includes tutorials for the multi-signature, cold storage and hardware wallet features.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Electrum was announced 5 November 2011.&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=50936.0 Electrum - a new thin client]&amp;lt;/ref&amp;gt;. It has since gone through many changes in each version.&lt;br /&gt;
&lt;br /&gt;
[[Image:Capture-Electrum.png|thumb|500px|An early version of Electrum with its Qt GUI]]&lt;br /&gt;
&lt;br /&gt;
Version 1.7 added support for third-party plugins.&lt;br /&gt;
&lt;br /&gt;
Version 2.0 introduced support for the [[Trezor]] hardware wallet, TrustedCoin 2FA, [[multisig]] wallets and changed the way the wallet files are stored by using [[BIP_0032|BIP32]] derivation. These wallets are incompatible with older versions.&lt;br /&gt;
&lt;br /&gt;
Version 2.4.3 added support for the [[Hardware_wallet#KeepKey:_Your_Private_Bitcoin_Vault|KeepKey]] hardware wallet.&lt;br /&gt;
&lt;br /&gt;
Version 2.6 introduced the new Kivy GUI for the Android client.&lt;br /&gt;
&lt;br /&gt;
Version 2.7 added a fee slider, [[RBF]] functionality and support for [[Hardware_wallet#Ledger_Nano_S|Ledger Nano S]]. The wallet format has also been changed, making them incompatible with older versions.&lt;br /&gt;
&lt;br /&gt;
Version 3.0 introduced a new server protocol and support for generating [[Segwit]] wallets.&lt;br /&gt;
&lt;br /&gt;
On December 27, 2018, an advisory was published&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=5090097.0 Electrum vulnerability allows arbitrary messages, phishing]&amp;lt;/ref&amp;gt; about a phishing vulnerability where the server returns a a fake update message after a transaction is broadcasted, with a link to a phishing domain with a malicious Electrum binary. Users who ran the malicious binary reported theft of all bitcoin funds. A mitigation was applied in version 3.2.1 which renders the rich-text message in plain-text, making it less convincing.&lt;br /&gt;
&lt;br /&gt;
Version 4.0.0 introduced support for [[Lightning Network]] wallets.&lt;br /&gt;
&lt;br /&gt;
== Server software ==&lt;br /&gt;
&lt;br /&gt;
The server code is open source, anyone can run a server. There are several implementations.&lt;br /&gt;
&lt;br /&gt;
Public Electrum servers run by strangers can easily spy on Electrum users. For this reason many people run their own server. For maximum [[Full node#Why should you use a full node wallet|trustlessness, privacy and security]]; users should point Electrum to their own servers.&lt;br /&gt;
&lt;br /&gt;
=== bwt ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwt&#039;&#039;&#039; is a lightweight and performant HD wallet indexer backed by a bitcoin full node that [https://github.com/shesek/bwt#electrum-plugin can also be installed as an Electrum plugin].&lt;br /&gt;
&lt;br /&gt;
=== ElectrumX ===&lt;br /&gt;
&lt;br /&gt;
ElectrumX is the latest iteration of general purpose Electrum servers. Written in Python, it tries to be as efficient as possible to keep synchronization times low. ElectrumX is able to serve thousands of clients at once, it is suited to be an always-on server that contributes to bitcoin. Make sure that the version of ElectrumX you download supports Bitcoin. As of May 2020 some versions of ElectrumX only support [[altcoin]]s.&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/spesmilo/electrumx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- seems less relevant now... not sure&lt;br /&gt;
Interview with author: https://btcmanager.com/nobody-has-setup-an-electrum-server-for-over-a-year/ archive: https://archive.is/lUnfa --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Electrum Personal Server ===&lt;br /&gt;
&lt;br /&gt;
Electrum Personal Server has a different approach to a normal server. It is intended to be used by a single person only. Instead of creating a database of every transaction and address ever used on the bitcoin blockchain, Electrum Personal Server only tracks the user&#039;s own wallets. This allows it to be much more efficient with resources, it does not need any extra data files and is compatible with [[Bitcoin Core]]&#039;s pruning feature.&lt;br /&gt;
&lt;br /&gt;
Electrum Personal Server is probably the best way to combine Electrum&#039;s feature-richness (hardware wallet integration, multi-signature, [[seed phrase]], etc) with a [[full node]]&#039;s strong security and privacy.&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/chris-belcher/electrum-personal-server&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Thin Client Security]]&lt;br /&gt;
* [[Hardware wallet]]&lt;br /&gt;
* [[Seed phrase]]&lt;br /&gt;
* [[Multi-signature]]&lt;br /&gt;
* [[Cold storage]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://electrum.org/ Electrum] project website&lt;br /&gt;
* [https://github.com/spesmilo/electrum/ Electrum] project source&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Clients]]&lt;br /&gt;
[[Category:Open Source]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0174&amp;diff=69339</id>
		<title>BIP 0174</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0174&amp;diff=69339"/>
		<updated>2022-06-19T21:23:22Z</updated>

		<summary type="html">&lt;p&gt;Manu: Removed broken &amp;lt;tt&amp;gt; html tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{bip}}&lt;br /&gt;
{{BipMoved|bip-0174.mediawiki}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 174&lt;br /&gt;
  Layer: Applications&lt;br /&gt;
  Title: Partially Signed Bitcoin Transaction Format&lt;br /&gt;
  Author: Andrew Chow &amp;lt;achow101@gmail.com&amp;gt;&lt;br /&gt;
  Comments-Summary: No comments yet.&lt;br /&gt;
  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0174&lt;br /&gt;
  Status: Final&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 2017-07-12&lt;br /&gt;
  License: BSD-2-Clause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Abstract===&lt;br /&gt;
&lt;br /&gt;
This document proposes a binary transaction format which contains the information&lt;br /&gt;
necessary for a signer to produce signatures for the transaction and holds the&lt;br /&gt;
signatures for an input while the input does not have a complete set of signatures.&lt;br /&gt;
The signer can be offline as all necessary information will be provided in the&lt;br /&gt;
transaction.&lt;br /&gt;
&lt;br /&gt;
The generic format is described here in addition to the specification for version 0&lt;br /&gt;
of this format.&lt;br /&gt;
&lt;br /&gt;
===Copyright===&lt;br /&gt;
&lt;br /&gt;
This BIP is licensed under the 2-clause BSD license.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
Creating unsigned or partially signed transactions to be passed around to multiple&lt;br /&gt;
signers is currently implementation dependent, making it hard for people who use&lt;br /&gt;
different wallet software from being able to easily do so. One of the goals of this&lt;br /&gt;
document is to create a standard and extensible format that can be used between clients to allow&lt;br /&gt;
people to pass around the same transaction to sign and combine their signatures. The&lt;br /&gt;
format is also designed to be easily extended for future use which is harder to do&lt;br /&gt;
with existing transaction formats.&lt;br /&gt;
&lt;br /&gt;
Signing transactions also requires users to have access to the UTXOs being spent. This transaction&lt;br /&gt;
format will allow offline signers such as air-gapped wallets and hardware wallets&lt;br /&gt;
to be able to sign transactions without needing direct access to the UTXO set and without&lt;br /&gt;
risk of being defrauded.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
The Partially Signed Bitcoin Transaction (PSBT) format consists of key-value maps.&lt;br /&gt;
Each map consists of a sequence of key-value records, terminated by a 0x00 byte &amp;lt;ref&amp;gt;&#039;&#039;&#039;Why&lt;br /&gt;
is the separator here 0x00 instead of 0xff?&#039;&#039;&#039;&lt;br /&gt;
The separator here is used to distinguish between each chunk of data. A separator of 0x00 would mean that&lt;br /&gt;
the unserializer can read it as a key length of 0, which would never occur with actual keys. It can thus&lt;br /&gt;
be used as a separator and allow for easier unserializer implementation.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;psbt&amp;gt; := &amp;lt;magic&amp;gt; &amp;lt;global-map&amp;gt; &amp;lt;input-map&amp;gt;* &amp;lt;output-map&amp;gt;*&lt;br /&gt;
 &amp;lt;magic&amp;gt; := 0x70 0x73 0x62 0x74 0xFF&lt;br /&gt;
 &amp;lt;global-map&amp;gt; := &amp;lt;keypair&amp;gt;* 0x00&lt;br /&gt;
 &amp;lt;input-map&amp;gt; := &amp;lt;keypair&amp;gt;* 0x00&lt;br /&gt;
 &amp;lt;output-map&amp;gt; := &amp;lt;keypair&amp;gt;* 0x00&lt;br /&gt;
 &amp;lt;keypair&amp;gt; := &amp;lt;key&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt; := &amp;lt;keylen&amp;gt; &amp;lt;keytype&amp;gt; &amp;lt;keydata&amp;gt;&lt;br /&gt;
 &amp;lt;value&amp;gt; := &amp;lt;valuelen&amp;gt; &amp;lt;valuedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;keytype&amp;gt;&lt;br /&gt;
: A [https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer compact size] unsigned integer representing the type. This compact size unsigned integer must be minimally encoded, i.e. if the value can be represented using one byte, it must be represented as one byte. There can be multiple entries with the same &amp;lt;keytype&amp;gt; within a specific &amp;lt;map&amp;gt;, but the &amp;lt;key&amp;gt; must be unique.&lt;br /&gt;
;&amp;lt;keylen&amp;gt;&lt;br /&gt;
: The compact size unsigned integer containing the combined length of &amp;lt;keytype&amp;gt; and &amp;lt;keydata&amp;gt;&lt;br /&gt;
;&amp;lt;valuelen&amp;gt;&lt;br /&gt;
: The compact size unsigned integer containing the length of &amp;lt;valuedata&amp;gt;.&lt;br /&gt;
;&amp;lt;magic&amp;gt;&lt;br /&gt;
: Magic bytes which are ASCII for psbt &amp;lt;ref&amp;gt;&#039;&#039;&#039;Why use 4 bytes for psbt?&#039;&#039;&#039; The&lt;br /&gt;
transaction format needed to start with a 5 byte header which uniquely identifies&lt;br /&gt;
it. The first bytes were chosen to be the ASCII for psbt because that stands for&lt;br /&gt;
Partially Signed Bitcoin Transaction. &amp;lt;/ref&amp;gt; followed by a separator of 0xFF&amp;lt;ref&amp;gt;&#039;&#039;&#039;Why Use a separator after the magic bytes?&#039;&#039;&#039; The separator&lt;br /&gt;
is part of the 5 byte header for PSBT. This byte is a separator of 0xff because&lt;br /&gt;
this will cause any non-PSBT unserializer to fail to properly unserialize the PSBT&lt;br /&gt;
as a normal transaction. Likewise, since the 5 byte header is fixed, no transaction&lt;br /&gt;
in the non-PSBT format will be able to be unserialized by a PSBT unserializer.&amp;lt;/ref&amp;gt;. This integer must be serialized in most significant byte order.&lt;br /&gt;
&lt;br /&gt;
The currently defined global types are as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;keytype&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt; Description&lt;br /&gt;
! &amp;lt;valuedata&amp;gt;&lt;br /&gt;
! &amp;lt;valuedata&amp;gt; Description&lt;br /&gt;
! Versions Requiring Inclusion&lt;br /&gt;
! Versions Requiring Exclusion&lt;br /&gt;
! Versions Allowing Inclusion&lt;br /&gt;
! Parent BIP&lt;br /&gt;
|-&lt;br /&gt;
| Unsigned Transaction&lt;br /&gt;
| PSBT_GLOBAL_UNSIGNED_TX = 0x00&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;transaction&amp;gt;&lt;br /&gt;
| The transaction in network serialization. The scriptSigs and witnesses for each input must be empty. The transaction must be in the old serialization format (without witnesses).&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Extended Public Key&lt;br /&gt;
| PSBT_GLOBAL_XPUB = 0x01&lt;br /&gt;
| &amp;lt;xpub&amp;gt;&lt;br /&gt;
| The 78 byte serialized extended public key as defined by BIP 32. Extended public keys are those that can be used to derive public keys used in the inputs and outputs of this transaction. It should be the public key at the highest hardened derivation index so that the unhardened child keys used in the transaction can be derived.&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&lt;br /&gt;
| The master key fingerprint as defined by BIP 32 concatenated with the derivation path of the public key. The derivation path is represented as 32-bit little endian unsigned integer indexes concatenated with each other. The number of 32 bit unsigned integer indexes must match the depth provided in the extended public key.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Transaction Version&lt;br /&gt;
| PSBT_GLOBAL_TX_VERSION = 0x02&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| The 32-bit little endian signed integer representing the version number of the transaction being created. Note that this is not the same as the PSBT version number specified by the PSBT_GLOBAL_VERSION field.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Fallback Locktime&lt;br /&gt;
| PSBT_GLOBAL_FALLBACK_LOCKTIME = 0x03&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| The 32-bit little endian unsigned integer representing the transaction locktime to use if no inputs specify a required locktime.&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Input Count&lt;br /&gt;
| PSBT_GLOBAL_INPUT_COUNT = 0x04&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;compact size uint&amp;gt;&lt;br /&gt;
| Compact size unsigned integer representing the number of inputs in this PSBT.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Output Count&lt;br /&gt;
| PSBT_GLOBAL_OUTPUT_COUNT = 0x05&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;compact size uint&amp;gt;&lt;br /&gt;
| Compact size unsigned integer representing the number of outputs in this PSBT.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Transaction Modifiable Flags&lt;br /&gt;
| PSBT_GLOBAL_TX_MODIFIABLE = 0x06&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;8-bit uint&amp;gt;&lt;br /&gt;
| An 8 bit little endian unsigned integer as a bitfield for various transaction modification flags. Bit 0 is the Inputs Modifiable Flag and indicates whether inputs can be modified. Bit 1 is the Outputs Modifiable Flag and indicates whether outputs can be modified. Bit 2 is the Has SIGHASH_SINGLE flag and indicates whether the transaction has a SIGHASH_SINGLE signature who&#039;s input and output pairing must be preserved. Bit 2 essentially indicates that the Constructor must iterate the inputs to determine whether and how to add an input.&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| PSBT Version Number&lt;br /&gt;
| PSBT_GLOBAL_VERSION = 0xFB&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| The 32-bit little endian unsigned integer representing the version number of this PSBT. If omitted, the version number is 0.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Proprietary Use Type&lt;br /&gt;
| PSBT_GLOBAL_PROPRIETARY = 0xFC&lt;br /&gt;
| &amp;lt;identifierlen&amp;gt; &amp;lt;identifier&amp;gt; &amp;lt;subtype&amp;gt; &amp;lt;subkeydata&amp;gt;&lt;br /&gt;
| Compact size unsigned integer &amp;lt;identifierlen&amp;gt;, followed by identifier prefix of that length &amp;lt;identifer&amp;gt;, followed by a subtype &amp;lt;subtype&amp;gt;, followed by the key data itself &amp;lt;subkeydata&amp;gt;.&lt;br /&gt;
| &amp;lt;data&amp;gt;&lt;br /&gt;
| Any value data as defined by the proprietary type user.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The currently defined per-input types are defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;keytype&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt; Description&lt;br /&gt;
! &amp;lt;valuedata&amp;gt;&lt;br /&gt;
! &amp;lt;valuedata&amp;gt; Description&lt;br /&gt;
! Versions Requiring Inclusion&lt;br /&gt;
! Versions Requiring Exclusion&lt;br /&gt;
! Versions Allowing Inclusion&lt;br /&gt;
! Parent BIP&lt;br /&gt;
|-&lt;br /&gt;
| Non-Witness UTXO&lt;br /&gt;
| PSBT_IN_NON_WITNESS_UTXO = 0x00&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;transaction&amp;gt;&lt;br /&gt;
| The transaction in network serialization format the current input spends from. This should be present for inputs that spend non-segwit outputs and can be present for inputs that spend segwit outputs. An input can have both PSBT_IN_NON_WITNESS_UTXO and PSBT_IN_WITNESS_UTXO. &amp;lt;ref&amp;gt;&#039;&#039;&#039;Why can both UTXO types be provided?&#039;&#039;&#039; Many wallets began requiring the full previous transaction (i.e. PSBT_IN_NON_WITNESS_UTXO) for segwit inputs when PSBT was already in use. In order to be compatible with software which were expecting PSBT_IN_WITNESS_UTXO, both UTXO types must be allowed.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Witness UTXO&lt;br /&gt;
| PSBT_IN_WITNESS_UTXO = 0x01&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;64-bit int&amp;gt; &amp;lt;scriptPubKeylen&amp;gt; &amp;lt;scriptPubKey&amp;gt;&lt;br /&gt;
| The entire transaction output in network serialization which the current input spends from. This should only be present for inputs which spend segwit outputs, including P2SH embedded ones. An input can have both PSBT_IN_NON_WITNESS_UTXO and PSBT_IN_WITNESS_UTXO&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Partial Signature&lt;br /&gt;
| PSBT_IN_PARTIAL_SIG = 0x02&lt;br /&gt;
| &amp;lt;pubkey&amp;gt;&lt;br /&gt;
| The public key which corresponds to this signature.&lt;br /&gt;
| &amp;lt;signature&amp;gt;&lt;br /&gt;
| The signature as would be pushed to the stack from a scriptSig or witness. The signature should be a valid ECDSA signature corresponding to the pubkey that would return true when verified and not a value that would return false or be invalid otherwise (such as a NULLDUMMY).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Sighash Type&lt;br /&gt;
| PSBT_IN_SIGHASH_TYPE = 0x03&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| The 32-bit unsigned integer specifying the sighash type to be used for this input. Signatures for this input must use the sighash type, finalizers must fail to finalize inputs which have signatures that do not match the specified sighash type. Signers who cannot produce signatures with the sighash type must not provide a signature.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Redeem Script&lt;br /&gt;
| PSBT_IN_REDEEM_SCRIPT = 0x04&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;redeemScript&amp;gt;&lt;br /&gt;
| The redeemScript for this input if it has one.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Witness Script&lt;br /&gt;
| PSBT_IN_WITNESS_SCRIPT = 0x05&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;witnessScript&amp;gt;&lt;br /&gt;
| The witnessScript for this input if it has one.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| BIP 32 Derivation Path&lt;br /&gt;
| PSBT_IN_BIP32_DERIVATION = 0x06&lt;br /&gt;
| &amp;lt;pubkey&amp;gt;&lt;br /&gt;
| The public key&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&lt;br /&gt;
| The master key fingerprint as defined by BIP 32 concatenated with the derivation path of the public key. The derivation path is represented as 32 bit unsigned integer indexes concatenated with each other. Public keys are those that will be needed to sign this input.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Finalized scriptSig&lt;br /&gt;
| PSBT_IN_FINAL_SCRIPTSIG = 0x07&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;scriptSig&amp;gt;&lt;br /&gt;
| The Finalized scriptSig contains a fully constructed scriptSig with signatures and any other scripts necessary for the input to pass validation.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Finalized scriptWitness&lt;br /&gt;
| PSBT_IN_FINAL_SCRIPTWITNESS = 0x08&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;scriptWitness&amp;gt;&lt;br /&gt;
| The Finalized scriptWitness contains a fully constructed scriptWitness with signatures and any other scripts necessary for the input to pass validation.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Proof-of-reserves commitment&lt;br /&gt;
| PSBT_IN_POR_COMMITMENT = 0x09&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;porCommitment&amp;gt;&lt;br /&gt;
| The UTF-8 encoded commitment message string for the proof-of-reserves.  See [[bip-0127.mediawiki|BIP 127]] for more information.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0127.mediawiki|127]]&lt;br /&gt;
|-&lt;br /&gt;
| RIPEMD160 preimage&lt;br /&gt;
| PSBT_IN_RIPEMD160 = 0x0a&lt;br /&gt;
| &amp;lt;20-byte hash&amp;gt;&lt;br /&gt;
| The resulting hash of the preimage&lt;br /&gt;
| &amp;lt;preimage&amp;gt;&lt;br /&gt;
| The hash preimage, encoded as a byte vector, which must equal the key when run through the RIPEMD160 algorithm&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| SHA256 preimage&lt;br /&gt;
| PSBT_IN_SHA256 = 0x0b&lt;br /&gt;
| &amp;lt;32-byte hash&amp;gt;&lt;br /&gt;
| The resulting hash of the preimage&lt;br /&gt;
| &amp;lt;preimage&amp;gt;&lt;br /&gt;
| The hash preimage, encoded as a byte vector, which must equal the key when run through the SHA256 algorithm&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| HASH160 preimage&lt;br /&gt;
| PSBT_IN_HASH160 = 0x0c&lt;br /&gt;
| &amp;lt;20-byte hash&amp;gt;&lt;br /&gt;
| The resulting hash of the preimage&lt;br /&gt;
| &amp;lt;preimage&amp;gt;&lt;br /&gt;
| The hash preimage, encoded as a byte vector, which must equal the key when run through the SHA256 algorithm followed by the RIPEMD160 algorithm&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| HASH256 preimage&lt;br /&gt;
| PSBT_IN_HASH256 = 0x0d&lt;br /&gt;
| &amp;lt;32-byte hash&amp;gt;&lt;br /&gt;
| The resulting hash of the preimage&lt;br /&gt;
| &amp;lt;preimage&amp;gt;&lt;br /&gt;
| The hash preimage, encoded as a byte vector, which must equal the key when run through the SHA256 algorithm twice&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Previous TXID&lt;br /&gt;
| PSBT_IN_PREVIOUS_TXID = 0x0e&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;txid&amp;gt;&lt;br /&gt;
| 32 byte txid of the previous transaction whose output at PSBT_IN_OUTPUT_INDEX is being spent.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Spent Output Index&lt;br /&gt;
| PSBT_IN_OUTPUT_INDEX = 0x0f&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| 32 bit little endian integer representing the index of the output being spent in the transaction with the txid of PSBT_IN_PREVIOUS_TXID.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Sequence Number&lt;br /&gt;
| PSBT_IN_SEQUENCE = 0x10&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| The 32 bit unsigned little endian integer for the sequence number of this input. If omitted, the sequence number is assumed to be the final sequence number (0xffffffff).&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Required Time-based Locktime&lt;br /&gt;
| PSBT_IN_REQUIRED_TIME_LOCKTIME = 0x11&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt;&lt;br /&gt;
| 32 bit unsigned little endian integer greater than or equal to 500000000 representing the minimum Unix timestamp that this input requires to be set as the transaction&#039;s lock time.&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Required Height-based Locktime&lt;br /&gt;
| PSBT_IN_REQUIRED_HEIGHT_LOCKTIME = 0x12&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-bit uiht&amp;gt;&lt;br /&gt;
| 32 bit unsigned little endian integer less than 500000000 representing the minimum block height that this input requires to be set as the transaction&#039;s lock time.&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Key Spend Signature&lt;br /&gt;
| PSBT_IN_TAP_KEY_SIG = 0x13&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;signature&amp;gt;&lt;br /&gt;
| The 64 or 65 byte Schnorr signature for key path spending a Taproot output. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Script Spend Signature&lt;br /&gt;
| PSBT_IN_TAP_SCRIPT_SIG = 0x14&lt;br /&gt;
| &amp;lt;xonlypubkey&amp;gt; &amp;lt;leafhash&amp;gt;&lt;br /&gt;
| A 32 byte X-only public key involved in a leaf script concatenated with the 32 byte hash of the leaf it is part of.&lt;br /&gt;
| &amp;lt;signature&amp;gt;&lt;br /&gt;
| The 64 or 65 byte Schnorr signature for this pubkey and leaf combination. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Leaf Script&lt;br /&gt;
| PSBT_IN_TAP_LEAF_SCRIPT = 0x15&lt;br /&gt;
| &amp;lt;control block&amp;gt;&lt;br /&gt;
| The control block for this leaf as specified in BIP 341. The control block contains the merkle tree path to this leaf.&lt;br /&gt;
| &amp;lt;script&amp;gt; &amp;lt;8-bit uint&amp;gt;&lt;br /&gt;
| The script for this leaf as would be provided in the witness stack followed by the single byte leaf version. Note that the leaves included in this field should be those that the signers of this input are expected to be able to sign for. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Key BIP 32 Derivation Path&lt;br /&gt;
| PSBT_IN_TAP_BIP32_DERIVATION = 0x16&lt;br /&gt;
| &amp;lt;xonlypubkey&amp;gt;&lt;br /&gt;
| A 32 byte X-only public key involved in this input. It may be the internal key, or a key present in a leaf script.&lt;br /&gt;
| &amp;lt;hashes len&amp;gt; &amp;lt;leaf hash&amp;gt;* &amp;lt;4 byte fingerprint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&lt;br /&gt;
| A compact size unsigned integer representing the number of leaf hashes, followed by a list of leaf hashes, followed by the 4 byte master key fingerprint concatenated with the derivation path of the public key. The derivation path is represented as 32-bit little endian unsigned integer indexes concatenated with each other. Public keys are those needed to spend this output. The leaf hashes are of the leaves which involve this public key. The internal key does not have leaf hashes, so can be indicated with a hashes len of 0. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Internal Key&lt;br /&gt;
| PSBT_IN_TAP_INTERNAL_KEY = 0x17&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;xonlypubkey&amp;gt;&lt;br /&gt;
| The X-only pubkey used as the internal key in this output. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Merkle Root&lt;br /&gt;
| PSBT_IN_TAP_MERKLE_ROOT = 0x18&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;32-byte hash&amp;gt;&lt;br /&gt;
| The 32 byte Merkle root hash. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Proprietary Use Type&lt;br /&gt;
| PSBT_IN_PROPRIETARY = 0xFC&lt;br /&gt;
| &amp;lt;identifierlen&amp;gt; &amp;lt;identifier&amp;gt; &amp;lt;subtype&amp;gt; &amp;lt;subkeydata&amp;gt;&lt;br /&gt;
| Compact size unsigned integer &amp;lt;identifierlen&amp;gt;, followed by identifier prefix of that length &amp;lt;identifer&amp;gt;, followed by a subtype &amp;lt;subtype&amp;gt;, followed by the key data itself &amp;lt;subkeydata&amp;gt;.&lt;br /&gt;
| &amp;lt;data&amp;gt;&lt;br /&gt;
| Any value data as defined by the proprietary type user.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The currently defined per-output &amp;lt;ref&amp;gt;&#039;&#039;&#039;Why do we need per-output data?&#039;&#039;&#039; Per-output data allows signers&lt;br /&gt;
to verify that the outputs are going to the intended recipient. The output data can also be use by signers to&lt;br /&gt;
determine which outputs are change outputs and verify that the change is returning to the correct place.&amp;lt;/ref&amp;gt; types are defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;keytype&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt;&lt;br /&gt;
! &amp;lt;keydata&amp;gt; Description&lt;br /&gt;
! &amp;lt;valuedata&amp;gt;&lt;br /&gt;
! &amp;lt;valuedata&amp;gt; Description&lt;br /&gt;
! Versions Requiring Inclusion&lt;br /&gt;
! Versions Requiring Exclusion&lt;br /&gt;
! Versions Allowing Inclusion&lt;br /&gt;
! Parent BIP&lt;br /&gt;
|-&lt;br /&gt;
| Redeem Script&lt;br /&gt;
| PSBT_OUT_REDEEM_SCRIPT = 0x00&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;redeemScript&amp;gt;&lt;br /&gt;
| The redeemScript for this output if it has one.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Witness Script&lt;br /&gt;
| PSBT_OUT_WITNESS_SCRIPT = 0x01&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;witnessScript&amp;gt;&lt;br /&gt;
| The witnessScript for this output if it has one.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| BIP 32 Derivation Path&lt;br /&gt;
| PSBT_OUT_BIP32_DERIVATION = 0x02&lt;br /&gt;
| &amp;lt;public key&amp;gt;&lt;br /&gt;
| The public key&lt;br /&gt;
| &amp;lt;32-bit uint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&lt;br /&gt;
| The master key fingerprint concatenated with the derivation path of the public key. The derivation path is represented as 32-bit little endian unsigned integer indexes concatenated with each other. Public keys are those needed to spend this output.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|-&lt;br /&gt;
| Output Amount&lt;br /&gt;
| PSBT_OUT_AMOUNT = 0x03&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;64-bit int&amp;gt;&lt;br /&gt;
| 64 bit signed little endian integer representing the output&#039;s amount in satoshis.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Output Script&lt;br /&gt;
| PSBT_OUT_SCRIPT = 0x04&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;script&amp;gt;&lt;br /&gt;
| The script for this output, also known as the scriptPubKey. Must be omitted in PSBTv0. Must be provided in PSBTv2.&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| [[bip-0370.mediawiki|370]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Internal Key&lt;br /&gt;
| PSBT_OUT_TAP_INTERNAL_KEY = 0x05&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| &amp;lt;xonlypubkey&amp;gt;&lt;br /&gt;
| The X-only pubkey used as the internal key in this output.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Tree&lt;br /&gt;
| PSBT_OUT_TAP_TREE = 0x06&lt;br /&gt;
| None&lt;br /&gt;
| No key data&lt;br /&gt;
| {&amp;lt;8-bit uint depth&amp;gt; &amp;lt;8-bit uint leaf version&amp;gt; &amp;lt;scriptlen&amp;gt; &amp;lt;script&amp;gt;}*&lt;br /&gt;
| One or more tuples representing the depth, leaf version, and script for a leaf in the Taproot tree, allowing the entire tree to be reconstructed. The tuples must be in depth first search order so that the tree is correctly reconstructed. Each tuple is an 8-bit unsigned integer representing the depth in the Taproot tree for this script, an 8-bit unsigned integer representing the leaf version, the length of the script as a compact size unsigned integer, and the script itself.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Taproot Key BIP 32 Derivation Path&lt;br /&gt;
| PSBT_OUT_TAP_BIP32_DERIVATION = 0x07&lt;br /&gt;
| &amp;lt;xonlypubkey&amp;gt;&lt;br /&gt;
| A 32 byte X-only public key involved in this output. It may be the internal key, or a key present in a leaf script.&lt;br /&gt;
| &amp;lt;hashes len&amp;gt; &amp;lt;leaf hash&amp;gt;* &amp;lt;4 byte fingerprint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&lt;br /&gt;
| A compact size unsigned integer representing the number of leaf hashes, followed by a list of leaf hashes, followed by the 4 byte master key fingerprint concatenated with the derivation path of the public key. The derivation path is represented as 32-bit little endian unsigned integer indexes concatenated with each other. Public keys are those needed to spend this output. The leaf hashes are of the leaves which involve this public key. The internal key does not have leaf hashes, so can be indicated with a hashes len of 0. Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| [[bip-0371.mediawiki|371]]&lt;br /&gt;
|-&lt;br /&gt;
| Proprietary Use Type&lt;br /&gt;
| PSBT_OUT_PROPRIETARY = 0xFC&lt;br /&gt;
| &amp;lt;identifierlen&amp;gt; &amp;lt;identifier&amp;gt; &amp;lt;subtype&amp;gt; &amp;lt;subkeydata&amp;gt;&lt;br /&gt;
| Compact size unsigned integer &amp;lt;identifierlen&amp;gt;, followed by identifier prefix of that length &amp;lt;identifer&amp;gt;, followed by a subtype &amp;lt;subtype&amp;gt;, followed by the key data itself &amp;lt;subkeydata&amp;gt;.&lt;br /&gt;
| &amp;lt;data&amp;gt;&lt;br /&gt;
| Any value data as defined by the proprietary type user.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0, 2&lt;br /&gt;
| 174&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Types can be skipped when they are unnecessary. For example, if an input is a witness&lt;br /&gt;
input, then it should not have a Non-Witness UTXO key-value pair.&lt;br /&gt;
&lt;br /&gt;
If the signer encounters key-value pairs that it does not understand, it must&lt;br /&gt;
pass those key-value pairs through when re-serializing the transaction.&lt;br /&gt;
&lt;br /&gt;
All keys must have the data that they specify. If any key or value does not match the&lt;br /&gt;
specified format for that type, the PSBT must be considered invalid. For example, any&lt;br /&gt;
key that has no data except for the type specifier must only have the type specifier in&lt;br /&gt;
the key.&lt;br /&gt;
&lt;br /&gt;
===Handling Duplicated Keys===&lt;br /&gt;
&lt;br /&gt;
Keys within each scope should never be duplicated; all keys in the format are unique. PSBTs containing duplicate keys are invalid. However implementors&lt;br /&gt;
will still need to handle events where keys are duplicated when combining transactions with duplicated fields. In this event, the software may choose&lt;br /&gt;
whichever value it wishes.&amp;lt;ref&amp;gt;&#039;&#039;&#039;Why can the values be arbitrarily chosen?&#039;&#039;&#039; When there are duplicated keys, the values that can be chosen will either be&lt;br /&gt;
valid or invalid. If the values are invalid, a signer would simply produce an invalid signature and the final transaction itself would be invalid. If the&lt;br /&gt;
values are valid, then it does not matter which is chosen as either way the transaction is still valid.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Proprietary Use Type===&lt;br /&gt;
&lt;br /&gt;
For all global, per-input, and per-output maps, the type 0xFC is reserved for proprietary use.&lt;br /&gt;
The proprietary use type requires keys that follow the type with a compact size unsigned integer representing the length of the string identifer, followed by the string identifier, then a subtype, and finally any key data.&lt;br /&gt;
&lt;br /&gt;
The identifier can be any variable length string that software can use to identify whether the particular data in the proprietary type can be used by it.&lt;br /&gt;
It can also be the empty string although this is not recommended.&lt;br /&gt;
&lt;br /&gt;
The subtype is defined by the proprietary type user and can mean whatever they want it to mean.&lt;br /&gt;
The subtype must also be a compact size unsigned integer in the same form as the normal types.&lt;br /&gt;
The key data and value data are defined by the proprietary type user.&lt;br /&gt;
&lt;br /&gt;
The proprietary use type is for private use by individuals and organizations who wish to use PSBT in their processes.&lt;br /&gt;
It is useful when there are additional data that they need attached to a PSBT but such data are not useful or available for the general public.&lt;br /&gt;
The proprietary use type is not to be used by any public specification and there is no expectation that any publicly available software be able to understand any specific meanings of it and the subtypes.&lt;br /&gt;
This type must be used for internal processes only.&lt;br /&gt;
&lt;br /&gt;
==Version 0==&lt;br /&gt;
&lt;br /&gt;
Partially Signed Bitcoin Transactions version 0 is the first version of the PSBT format.&lt;br /&gt;
Version 0 PSBTs must either omit PSBT_GLOBAL_VERSION or include it and set it to 0.&lt;br /&gt;
Version 0 PSBTs must include PSBT_GLOBAL_UNSIGNED_TX, if omitted, the PSBT is invalid.&lt;br /&gt;
&lt;br /&gt;
==Roles==&lt;br /&gt;
&lt;br /&gt;
Using the transaction format involves many different roles. Multiple roles can be handled by a single entity, but each role is specialized in what it should be capable of doing.&lt;br /&gt;
&lt;br /&gt;
===Creator===&lt;br /&gt;
&lt;br /&gt;
The Creator creates a new PSBT. It must create an unsigned transaction and place it in the PSBT.&lt;br /&gt;
The Creator must create empty input and output fields.&lt;br /&gt;
&lt;br /&gt;
===Updater===&lt;br /&gt;
&lt;br /&gt;
The Updater must only accept a PSBT.&lt;br /&gt;
The Updater adds information to the PSBT that it has access to. If it has the UTXO for an input, it should add it to the PSBT.&lt;br /&gt;
The Updater should also add redeemScripts, witnessScripts, and BIP 32 derivation paths to the input and output data if it knows them.&lt;br /&gt;
&lt;br /&gt;
A single entity is likely to be both a Creator and Updater.&lt;br /&gt;
&lt;br /&gt;
===Signer===&lt;br /&gt;
&lt;br /&gt;
The Signer must only accept a PSBT.&lt;br /&gt;
The Signer must only use the UTXOs provided in the PSBT to produce signatures for inputs.&lt;br /&gt;
Before signing a non-witness input, the Signer must verify that the TXID of the non-witness UTXO matches the TXID specified in the unsigned transaction.&lt;br /&gt;
Before signing a witness input, the Signer must verify that the witnessScript (if provided) matches the hash specified in the UTXO or the redeemScript, and the redeemScript (if provided) matches the hash in the UTXO.&lt;br /&gt;
The Signer may choose to fail to sign a segwit input if a non-witness UTXO is not provided. &amp;lt;ref&amp;gt;&#039;&#039;&#039;Why would non-witness UTXOs be provided for segwit inputs?&#039;&#039;&#039; The sighash algorithm for Segwit specified in BIP 173 is known to have an issue where an attacker could trick a user to sending Bitcoin to fees if they are able to convince the user to sign a malicious transaction multiple times. This is possible because the amounts in PSBT_IN_WITNESS_UTXO of other segwit inputs can be modified without effecting the signature for a particular input. In order to prevent this kind of attack, many wallets are requiring that the full previous transaction (i.e. PSBT_IN_NON_WITNESS_UTXO) be provided to ensure that the amounts of other inputs are not being tampered with.&amp;lt;/ref&amp;gt;&lt;br /&gt;
The Signer should not need any additional data sources, as all necessary information is provided in the PSBT format.&lt;br /&gt;
The Signer must only add data to a PSBT.&lt;br /&gt;
Any signatures created by the Signer must be added as a &amp;quot;Partial Signature&amp;quot; key-value pair for the respective input it relates to.&lt;br /&gt;
If a Signer cannot sign a transaction, it must not add a Partial Signature.&lt;br /&gt;
&lt;br /&gt;
The Signer can additionally compute the addresses and values being sent, and the transaction fee,  optionally showing this data to the user as a confirmation of intent and the consequences of signing the PSBT.&lt;br /&gt;
&lt;br /&gt;
Signers do not need to sign for all possible input types. For example, a signer may choose to only sign Segwit inputs.&lt;br /&gt;
&lt;br /&gt;
A single entity is likely to be both a Signer and an Updater as it can update a PSBT with necessary information prior to signing it.&lt;br /&gt;
&lt;br /&gt;
====Data Signers Check For====&lt;br /&gt;
&lt;br /&gt;
For a Signer to only produce valid signatures for what it expects to sign, it must check that the following conditions are true:&lt;br /&gt;
&lt;br /&gt;
* If a non-witness UTXO is provided, its hash must match the hash specified in the prevout&lt;br /&gt;
* If a witness UTXO is provided, no non-witness signature may be created&lt;br /&gt;
* If a redeemScript is provided, the scriptPubKey must be for that redeemScript&lt;br /&gt;
* If a witnessScript is provided, the scriptPubKey or the redeemScript must be for that witnessScript&lt;br /&gt;
* If a sighash type is provided, the signer must check that the sighash is acceptable. If unacceptable, they must fail.&lt;br /&gt;
* If a sighash type is not provided, the signer should sign using SIGHASH_ALL, but may use any sighash type they wish.&lt;br /&gt;
&lt;br /&gt;
=====Simple Signer Algorithm=====&lt;br /&gt;
&lt;br /&gt;
A simple signer can use the following algorithm to determine what and how to sign&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sign_witness(script_code, i):&lt;br /&gt;
    for key, sighash_type in psbt.inputs[i].items:&lt;br /&gt;
        if sighash_type == None:&lt;br /&gt;
            sighash_type = SIGHASH_ALL&lt;br /&gt;
        if IsMine(key) and IsAcceptable(sighash_type):&lt;br /&gt;
            sign(witness_sighash(script_code, i, input))&lt;br /&gt;
&lt;br /&gt;
sign_non_witness(script_code, i):&lt;br /&gt;
    for key, sighash_type in psbt.inputs[i].items:&lt;br /&gt;
        if sighash_type == None:&lt;br /&gt;
            sighash_type = SIGHASH_ALL&lt;br /&gt;
        if IsMine(key) and IsAcceptable(sighash_type):&lt;br /&gt;
            sign(non_witness_sighash(script_code, i, input))&lt;br /&gt;
&lt;br /&gt;
for input,i in enumerate(psbt.inputs):&lt;br /&gt;
    if non_witness_utxo.exists:&lt;br /&gt;
        assert(sha256d(non_witness_utxo) == psbt.tx.input[i].prevout.hash)&lt;br /&gt;
        if redeemScript.exists:&lt;br /&gt;
            assert(non_witness_utxo.vout[psbt.tx.input[i].prevout.n].scriptPubKey == P2SH(redeemScript))&lt;br /&gt;
            sign_non_witness(redeemScript, i)&lt;br /&gt;
        else:&lt;br /&gt;
            sign_non_witness(non_witness_utxo.vout[psbt.tx.input[i].prevout.n].scriptPubKey, i)&lt;br /&gt;
    else if witness_utxo.exists:&lt;br /&gt;
        if redeemScript.exists:&lt;br /&gt;
            assert(witness_utxo.scriptPubKey == P2SH(redeemScript))&lt;br /&gt;
            script = redeemScript&lt;br /&gt;
        else:&lt;br /&gt;
            script = witness_utxo.scriptPubKey&lt;br /&gt;
        if IsP2WPKH(script):&lt;br /&gt;
            sign_witness(P2PKH(script[2:22]), i)&lt;br /&gt;
        else if IsP2WSH(script):&lt;br /&gt;
            assert(script == P2WSH(witnessScript))&lt;br /&gt;
            sign_witness(witnessScript, i)&lt;br /&gt;
    else:&lt;br /&gt;
        assert False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Change Detection====&lt;br /&gt;
&lt;br /&gt;
Signers may wish to display the inputs and outputs to users for extra verification.&lt;br /&gt;
In such displays, signers may wish to identify which outputs are change outputs in order to omit them to avoid additional user confusion.&lt;br /&gt;
In order to detect change, a signer can use the BIP 32 derivation paths provided in inputs and outputs as well as the extended public keys provided globally.&lt;br /&gt;
&lt;br /&gt;
For a single key output, a signer can observe whether the master fingerprint for the public key for that output belongs to itself.&lt;br /&gt;
If it does, it can then derive the public key at the specified derivation path and check whether that key is the one present in that output.&lt;br /&gt;
&lt;br /&gt;
For outputs involving multiple keys, a signer can first examine the inputs that it is signing.&lt;br /&gt;
It should determine the general pattern of the script and internally produce a representation of the policy that the script represents.&lt;br /&gt;
Such a policy can include things like how many keys are present, what order they are in, how many signers are necessary, which signers are required, etc.&lt;br /&gt;
The signer can then use the BIP 32 derivation paths for each of the pubkeys to find which global extended public key is the one that can derive that particular public key.&lt;br /&gt;
To do so, the signer would extract the derivation path to the highest hardened index and use that to lookup the public key with that index and master fingerprint.&lt;br /&gt;
The signer would construct this script policy with extended public keys for all of the inputs and outputs.&lt;br /&gt;
Change outputs would then be identified as being the outputs which have the same script policy as the inputs that are being signed.&lt;br /&gt;
&lt;br /&gt;
===Combiner===&lt;br /&gt;
&lt;br /&gt;
The Combiner can accept 1 or many PSBTs.&lt;br /&gt;
The Combiner must merge them into one PSBT (if possible), or fail.&lt;br /&gt;
The resulting PSBT must contain all of the key-value pairs from each of the PSBTs.&lt;br /&gt;
The Combiner must remove any duplicate key-value pairs, in accordance with the specification. It can pick arbitrarily when conflicts occur.&lt;br /&gt;
A Combiner must not combine two different PSBTs. PSBTs can be uniquely identified by 0x00 global transaction typed key-value pair.&lt;br /&gt;
For every type that a Combiner understands, it may refuse to combine PSBTs if it detects that there will be inconsistencies or conflicts for that type in the combined PSBT.&lt;br /&gt;
&lt;br /&gt;
The Combiner does not need to know how to interpret scripts in order to combine PSBTs. It can do so without understanding scripts or the network serialization format.&lt;br /&gt;
&lt;br /&gt;
In general, the result of a Combiner combining two PSBTs from independent participants A and B should be functionally equivalent to a result obtained from processing the original PSBT by A and then B in a sequence.&lt;br /&gt;
Or, for participants performing fA(psbt) and fB(psbt): Combine(fA(psbt), fB(psbt)) == fA(fB(psbt)) == fB(fA(psbt))&lt;br /&gt;
&lt;br /&gt;
===Input Finalizer===&lt;br /&gt;
&lt;br /&gt;
The Input Finalizer must only accept a PSBT.&lt;br /&gt;
For each input, the Input Finalizer determines if the input has enough data to pass validation. If it does, it must construct the 0x07 Finalized scriptSig and 0x08 Finalized scriptWitness and place them into the input key-value map.&lt;br /&gt;
If scriptSig is empty for an input, 0x07 should remain unset rather than assigned an empty array.&lt;br /&gt;
Likewise, if no scriptWitness exists for an input, 0x08 should remain unset rather than assigned an empty array.&lt;br /&gt;
All other data except the UTXO and unknown fields in the input key-value map should be cleared from the PSBT. The UTXO should be kept to allow Transaction Extractors to verify the final network serialized transaction.&lt;br /&gt;
&lt;br /&gt;
===Transaction Extractor===&lt;br /&gt;
&lt;br /&gt;
The Transaction Extractor must only accept a PSBT.&lt;br /&gt;
It checks whether all inputs have complete scriptSigs and scriptWitnesses by checking for the presence of 0x07 Finalized scriptSig and 0x08 Finalized scriptWitness typed records. If they do, the Transaction Extractor should construct complete scriptSigs and scriptWitnesses and encode them into network serialized transactions. Otherwise the Extractor must not modify the PSBT.&lt;br /&gt;
The Extractor should produce a fully valid, network serialized transaction if all inputs are complete.&lt;br /&gt;
&lt;br /&gt;
The Transaction Extractor does not need to know how to interpret scripts in order to extract the network serialized transaction. However it may be able to in order to validate the network serialized transaction at the same time.&lt;br /&gt;
&lt;br /&gt;
A single entity is likely to be both a Transaction Extractor and an Input Finalizer.&lt;br /&gt;
&lt;br /&gt;
==Encoding==&lt;br /&gt;
&lt;br /&gt;
A PSBT can be represented in two ways: in binary (as a file) or as a Base64 string using the encoding described in [https://tools.ietf.org/html/rfc4648#section-4 RFC4648].&lt;br /&gt;
&lt;br /&gt;
Binary PSBT files should use the .psbt file extension.&lt;br /&gt;
A MIME type name will be added to this document once one has been registered.&lt;br /&gt;
&lt;br /&gt;
==Extensibility==&lt;br /&gt;
&lt;br /&gt;
The Partially Signed Transaction format can be extended in the future by adding&lt;br /&gt;
new types for key-value pairs. Backwards compatibilty will still be maintained as those new&lt;br /&gt;
types will be ignored and passed-through by signers which do not know about them.&lt;br /&gt;
&lt;br /&gt;
===Version Numbers===&lt;br /&gt;
&lt;br /&gt;
The Version number field exists only as a safeguard in the event that a backwards incompatible change is introduced to PSBT.&lt;br /&gt;
If a parser encounters a version number it does not recognize, it should exit immediately as this indicates that the PSBT will contain types that it does not know about and cannot be ignored.&lt;br /&gt;
Current PSBTs are Version 0. Any PSBT that does not have the version field is version 0.&lt;br /&gt;
It is not expected that any backwards incompatible change will be introduced to PSBT, so it is not expected that the version field will ever actually be seen.&lt;br /&gt;
&lt;br /&gt;
Updaters and combiners that need to add a version number to a PSBT should use the highest version number required.&lt;br /&gt;
For example, if a combiner sees two PSBTs for the same transaction, one with version 0, and the other with version 1, then it should combine them and produce a PSBT with version 1.&lt;br /&gt;
If an updater is updating a PSBT and needs to add a field that is only available in version 1, then it should set the PSBT version number to 1 unless a version higher than that is already specified.&lt;br /&gt;
&lt;br /&gt;
===Procedure For New Fields===&lt;br /&gt;
&lt;br /&gt;
New fields should first be proposed on the bitcoin-dev mailing list.&lt;br /&gt;
If a field requires significant description as to its usage, it should be accompanied by a separate BIP.&lt;br /&gt;
The field must be added to the field listing tables in the Specification section.&lt;br /&gt;
Although some PSBT version 0 implementations encode types as uint8_t rather than compact size,&lt;br /&gt;
it is still safe to add &amp;gt;0xFD fields to PSBT 0, because these old parsers ignore&lt;br /&gt;
unknown fields, and &amp;lt;keytype&amp;gt; is prefixed by its length. &lt;br /&gt;
&lt;br /&gt;
===Procedure For New Versions===&lt;br /&gt;
&lt;br /&gt;
New PSBT versions must be described in a separate BIP.&lt;br /&gt;
The BIP may reference this BIP and any components of PSBT version 0 that are retained in the new version.&lt;br /&gt;
Any new fields described in the new version must be added to the field listing tables in the Specification section.&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
&lt;br /&gt;
This transaction format is designed so that it is unable to be properly unserialized&lt;br /&gt;
by normal transaction unserializers. Likewise, a normal transaction will not be&lt;br /&gt;
able to be unserialized by an unserializer for the PSBT format.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Manual CoinJoin Workflow===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;bip-0174/coinjoin-workflow.svg&amp;quot; align=&amp;quot;middle&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2-of-3 Multisig Workflow===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;bip-0174/multisig-workflow.svg&amp;quot; align=&amp;quot;middle&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Test Vectors==&lt;br /&gt;
&lt;br /&gt;
The following are invalid PSBTs:&lt;br /&gt;
&lt;br /&gt;
* Case: Network transaction, not PSBT format&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;AgAAAAEmgXE3Ht/yhek3re6ks3t4AAwFZsuzrWRkFxPKQhcb9gAAAABqRzBEAiBwsiRRI+a/R01gxbUMBD1MaRpdJDXwmjSnZiqdwlF5CgIgATKcqdrPKAvfMHQOwDkEIkIsgctFg5RXrrdvwS7dlbMBIQJlfRGNM1e44PTCzUbbezn22cONmnCry5st5dyNv+TOMf7///8C09/1BQAAAAAZdqkU0MWZA8W6woaHYOkP1SGkZlqnZSCIrADh9QUAAAAAF6kUNUXm4zuDLEcFDyTT7rk8nAOUi8eHsy4TAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT missing outputs&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab30000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT where one input has a filled scriptSig in the unsigned tx&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100fd0a010200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be4000000006a47304402204759661797c01b036b25928948686218347d89864b719e1f7fcf57d1e511658702205309eabf56aa4d8891ffd111fdf1336f3a29da866d7f8486d75546ceedaf93190121035cdc61fc7ba971c0b501a646a2a83b102cb43881217ca682dc86e2d73fa88292feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb82308000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAP0KAQIAAAACqwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QAAAAAakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpL+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAABASAA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHhwEEFgAUhdE1N/LiZUBaNNuvqePdoB+4IwgAAAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT where inputs and outputs are provided but without an unsigned tx&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab30000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8AAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with duplicate keys in an input&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab30000000001003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a010000000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQA/AgAAAAH//////////////////////////////////////////wAAAAAA/////wEAAAAAAAAAAANqAQAAAAAAAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid global transaction typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff020001550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8CAAFVAgAAAAEnmiMjpd+1H8RfIg+liw/BPh4zQnkqhdfjbNYzO1y8OQAAAAAA/////wGgWuoLAAAAABl2qRT/6cAGEJfMO2NvLLBGD6T8Qn0rRYisAAAAAAABASCVXuoLAAAAABepFGNFIA9o0YnhrcDfHE0W6o8UwNvrhyICA7E0HMunaDtq9PEjjNbpfnFn1Wn6xH8eSNR1QYRDVb1GRjBDAiAEJLWO/6qmlOFVnqXJO7/UqJBkIkBVzfBwtncUaUQtBwIfXI6w/qZRbWC4rLM61k7eYOh4W/s6qUuZvfhhUduamgEBBCIAIHcf0YrUWWZt1J89Vk49vEL0yEd042CtoWgWqO1IjVaBAQVHUiEDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYhA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9Uq4iBgOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RhC0prpnAAAAgAAAAIAEAACAIgYD3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg70QtKa6ZwAAAIAAAACABQAAgAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid input witness utxo typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac000000000002010020955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAIBACCVXuoLAAAAABepFGNFIA9o0YnhrcDfHE0W6o8UwNvrhyICA7E0HMunaDtq9PEjjNbpfnFn1Wn6xH8eSNR1QYRDVb1GRjBDAiAEJLWO/6qmlOFVnqXJO7/UqJBkIkBVzfBwtncUaUQtBwIfXI6w/qZRbWC4rLM61k7eYOh4W/s6qUuZvfhhUduamgEBBCIAIHcf0YrUWWZt1J89Vk49vEL0yEd042CtoWgWqO1IjVaBAQVHUiEDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYhA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9Uq4iBgOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RhC0prpnAAAAgAAAAIAEAACAIgYD3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg70QtKa6ZwAAAIAAAACABQAAgAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid pubkey length for input partial signature typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87210203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd46304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAEBIJVe6gsAAAAAF6kUY0UgD2jRieGtwN8cTRbqjxTA2+uHIQIDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYwQwIgBCS1jv+qppThVZ6lyTu/1KiQZCJAVc3wcLZ3FGlELQcCH1yOsP6mUW1guKyzOtZO3mDoeFv7OqlLmb34YVHbmpoBAQQiACB3H9GK1FlmbdSfPVZOPbxC9MhHdONgraFoFqjtSI1WgQEFR1IhA7E0HMunaDtq9PEjjNbpfnFn1Wn6xH8eSNR1QYRDVb1GIQPeVdHh2sgF4/iljB+/m5TALz26r+En/vykmV8m+CCDvVKuIgYDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYQtKa6ZwAAAIAAAACABAAAgCIGA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9ELSmumcAAACAAAAAgAUAAIAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid redeemscript typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a01020400220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAEBIJVe6gsAAAAAF6kUY0UgD2jRieGtwN8cTRbqjxTA2+uHIgIDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUZGMEMCIAQktY7/qqaU4VWepck7v9SokGQiQFXN8HC2dxRpRC0HAh9cjrD+plFtYLisszrWTt5g6Hhb+zqpS5m9+GFR25qaAQIEACIAIHcf0YrUWWZt1J89Vk49vEL0yEd042CtoWgWqO1IjVaBAQVHUiEDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYhA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9Uq4iBgOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RhC0prpnAAAAgAAAAIAEAACAIgYD3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg70QtKa6ZwAAAIAAAACABQAAgAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid witnessscript typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d568102050047522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAEBIJVe6gsAAAAAF6kUY0UgD2jRieGtwN8cTRbqjxTA2+uHIgIDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUZGMEMCIAQktY7/qqaU4VWepck7v9SokGQiQFXN8HC2dxRpRC0HAh9cjrD+plFtYLisszrWTt5g6Hhb+zqpS5m9+GFR25qaAQEEIgAgdx/RitRZZm3Unz1WTj28QvTIR3TjYK2haBao7UiNVoECBQBHUiEDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUYhA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9Uq4iBgOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RhC0prpnAAAAgAAAAIAEAACAIgYD3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg70QtKa6ZwAAAIAAAACABQAAgAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid pubkey in input BIP 32 derivation paths typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae210603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd10b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAEBIJVe6gsAAAAAF6kUY0UgD2jRieGtwN8cTRbqjxTA2+uHIgIDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUZGMEMCIAQktY7/qqaU4VWepck7v9SokGQiQFXN8HC2dxRpRC0HAh9cjrD+plFtYLisszrWTt5g6Hhb+zqpS5m9+GFR25qaAQEEIgAgdx/RitRZZm3Unz1WTj28QvTIR3TjYK2haBao7UiNVoEBBUdSIQOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RiED3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg71SriEGA7E0HMunaDtq9PEjjNbpfnFn1Wn6xH8eSNR1QYRDVb0QtKa6ZwAAAIAAAACABAAAgCIGA95V0eHayAXj+KWMH7+blMAvPbqv4Sf+/KSZXyb4IIO9ELSmumcAAACAAAAAgAUAAIAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid non-witness utxo typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f0000000000020000bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000107da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870107232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b20289030108da0400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAIAALsCAAAAAarXOTEBi9JfhK5AC2iEi+CdtwbqwqwYKYur7nGrZW+LAAAAAEhHMEQCIFj2/HxqM+GzFUjUgcgmwBW9MBNarULNZ3kNq2bSrSQ7AiBKHO0mBMZzW2OT5bQWkd14sA8MWUL7n3UYVvqpOBV9ugH+////AoDw+gIAAAAAF6kUD7lGNCFpa4LIM68kHHjBfdveSTSH0PIKJwEAAAAXqRQpynT4oI+BmZQoGFyXtdhS5AY/YYdlAAAAAQfaAEcwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMAUgwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gFHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4AAQEgAMLrCwAAAAAXqRS39fr0Dj1ApaRZsds1NfK3L6kh6IcBByMiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEI2gQARzBEAiBi63pVYQenxz9FrEq1od3fb3B1+xJ1lpp/OD7/94S8sgIgDAXbt0cNvy8IVX3TVscyXB7TCRPpls04QJRdsSIo2l8BRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid final scriptsig typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000020700da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870107232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b20289030108da0400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAACBwDaAEcwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMAUgwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gFHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4AAQEgAMLrCwAAAAAXqRS39fr0Dj1ApaRZsds1NfK3L6kh6IcBByMiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEI2gQARzBEAiBi63pVYQenxz9FrEq1od3fb3B1+xJ1lpp/OD7/94S8sgIgDAXbt0cNvy8IVX3TVscyXB7TCRPpls04QJRdsSIo2l8BRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid final script witness typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000107da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870107232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903020800da0400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABB9oARzBEAiB0AYrUGACXuHMyPAAVcgs2hMyBI4kQSOfbzZtVrWecmQIgc9Npt0Dj61Pc76M4I8gHBRTKVafdlUTxV8FnkTJhEYwBSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAUdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSrgABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohwEHIyIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAggA2gQARzBEAiBi63pVYQenxz9FrEq1od3fb3B1+xJ1lpp/OD7/94S8sgIgDAXbt0cNvy8IVX3TVscyXB7TCRPpls04QJRdsSIo2l8BRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid pubkey in output BIP 32 derivation paths typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000107da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870107232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b20289030108da0400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00210203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca58710d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABB9oARzBEAiB0AYrUGACXuHMyPAAVcgs2hMyBI4kQSOfbzZtVrWecmQIgc9Npt0Dj61Pc76M4I8gHBRTKVafdlUTxV8FnkTJhEYwBSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAUdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSrgABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohwEHIyIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQjaBABHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwFHMEQCIGX0W6WZi1mif/4ae+0BavHx+Q1Us6qPdFCqX1aiUQO9AiB/ckcDrR7blmgLKEtW1P/LiPf7dZ6rvgiqMPKbhROD0gFHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4AIQIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1PtnuylhxDZDGpPAAAAgAAAAIAEAACAACICAn9jmXV9Lv9VoTatAsaEsYOLZVbl8bazQoKpS2tQBRCWENkMak8AAACAAAAAgAUAAIAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid input sighash type typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100730200000001301ae986e516a1ec8ac5b4bc6573d32f83b465e23ad76167d68b38e730b4dbdb0000000000ffffffff02747b01000000000017a91403aa17ae882b5d0d54b25d63104e4ffece7b9ea2876043993b0000000017a914b921b1ba6f722e4bfa83b6557a3139986a42ec8387000000000001011f00ca9a3b00000000160014d2d94b64ae08587eefc8eeb187c601e939f9037c0203000100000000010016001462e9e982fff34dd8239610316b090cd2a3b747cb000100220020876bad832f1d168015ed41232a9ea65a1815d9ef13c0ef8759f64b5b2b278a65010125512103b7ce23a01c5b4bf00a642537cdfabb315b668332867478ef51309d2bd57f8a8751ae00&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHMCAAAAATAa6YblFqHsisW0vGVz0y+DtGXiOtdhZ9aLOOcwtNvbAAAAAAD/////AnR7AQAAAAAAF6kUA6oXrogrXQ1Usl1jEE5P/s57nqKHYEOZOwAAAAAXqRS5IbG6b3IuS/qDtlV6MTmYakLsg4cAAAAAAAEBHwDKmjsAAAAAFgAU0tlLZK4IWH7vyO6xh8YB6Tn5A3wCAwABAAAAAAEAFgAUYunpgv/zTdgjlhAxawkM0qO3R8sAAQAiACCHa62DLx0WgBXtQSMqnqZaGBXZ7xPA74dZ9ktbKyeKZQEBJVEhA7fOI6AcW0vwCmQlN836uzFbZoMyhnR471EwnSvVf4qHUa4A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid output redeemScript typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100730200000001301ae986e516a1ec8ac5b4bc6573d32f83b465e23ad76167d68b38e730b4dbdb0000000000ffffffff02747b01000000000017a91403aa17ae882b5d0d54b25d63104e4ffece7b9ea2876043993b0000000017a914b921b1ba6f722e4bfa83b6557a3139986a42ec8387000000000001011f00ca9a3b00000000160014d2d94b64ae08587eefc8eeb187c601e939f9037c0002000016001462e9e982fff34dd8239610316b090cd2a3b747cb000100220020876bad832f1d168015ed41232a9ea65a1815d9ef13c0ef8759f64b5b2b278a65010125512103b7ce23a01c5b4bf00a642537cdfabb315b668332867478ef51309d2bd57f8a8751ae00&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHMCAAAAATAa6YblFqHsisW0vGVz0y+DtGXiOtdhZ9aLOOcwtNvbAAAAAAD/////AnR7AQAAAAAAF6kUA6oXrogrXQ1Usl1jEE5P/s57nqKHYEOZOwAAAAAXqRS5IbG6b3IuS/qDtlV6MTmYakLsg4cAAAAAAAEBHwDKmjsAAAAAFgAU0tlLZK4IWH7vyO6xh8YB6Tn5A3wAAgAAFgAUYunpgv/zTdgjlhAxawkM0qO3R8sAAQAiACCHa62DLx0WgBXtQSMqnqZaGBXZ7xPA74dZ9ktbKyeKZQEBJVEhA7fOI6AcW0vwCmQlN836uzFbZoMyhnR471EwnSvVf4qHUa4A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with invalid output witnessScript typed key&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100730200000001301ae986e516a1ec8ac5b4bc6573d32f83b465e23ad76167d68b38e730b4dbdb0000000000ffffffff02747b01000000000017a91403aa17ae882b5d0d54b25d63104e4ffece7b9ea2876043993b0000000017a914b921b1ba6f722e4bfa83b6557a3139986a42ec8387000000000001011f00ca9a3b00000000160014d2d94b64ae08587eefc8eeb187c601e939f9037c00010016001462e9e982fff34dd8239610316b090cd2a3b747cb000100220020876bad832f1d168015ed41232a9ea65a1815d9ef13c0ef8759f64b5b2b278a6521010025512103b7ce23a01c5b4bf00a642537cdfabb315b668332867478ef51309d06d57f8a8751ae00&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHMCAAAAATAa6YblFqHsisW0vGVz0y+DtGXiOtdhZ9aLOOcwtNvbAAAAAAD/////AnR7AQAAAAAAF6kUA6oXrogrXQ1Usl1jEE5P/s57nqKHYEOZOwAAAAAXqRS5IbG6b3IuS/qDtlV6MTmYakLsg4cAAAAAAAEBHwDKmjsAAAAAFgAU0tlLZK4IWH7vyO6xh8YB6Tn5A3wAAQAWABRi6emC//NN2COWEDFrCQzSo7dHywABACIAIIdrrYMvHRaAFe1BIyqeploYFdnvE8Dvh1n2S1srJ4plIQEAJVEhA7fOI6AcW0vwCmQlN836uzFbZoMyhnR471EwnQbVf4qHUa4A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with unsigned tx serialized with witness serialization format&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01007802000000000101268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc78700b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab300000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHgCAAAAAAEBJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAAP7///8C09/1BQAAAAAZdqkU0MWZA8W6woaHYOkP1SGkZlqnZSCIrADh9QUAAAAAF6kUNUXm4zuDLEcFDyTT7rk8nAOUi8eHALMuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following are valid PSBTs:&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2PKH input. Outputs are empty&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab300000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2PKH input and one P2SH-P2WPKH input. First input is signed and finalized. Outputs are empty&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac000000000001076a47304402204759661797c01b036b25928948686218347d89864b719e1f7fcf57d1e511658702205309eabf56aa4d8891ffd111fdf1336f3a29da866d7f8486d75546ceedaf93190121035cdc61fc7ba971c0b501a646a2a83b102cb43881217ca682dc86e2d73fa882920001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb82308000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEHakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpIAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2PKH input which has a non-final scriptSig and has a sighash type specified. Outputs are empty&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab30000000001030401000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQMEAQAAAAAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2PKH input and one P2SH-P2WPKH input both with non-final scriptSigs. P2SH-P2WPKH input&#039;s redeemScript is available. Outputs filled.&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2SH-P2WSH input of a 2-of-2 multisig, redeemScript, witnessScript, and keypaths are available. Contains one signature.&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100550200000001279a2323a5dfb51fc45f220fa58b0fc13e1e3342792a85d7e36cd6333b5cbc390000000000ffffffff01a05aea0b000000001976a914ffe9c0061097cc3b636f2cb0460fa4fc427d2b4588ac0000000000010120955eea0b0000000017a9146345200f68d189e1adc0df1c4d16ea8f14c0dbeb87220203b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4646304302200424b58effaaa694e1559ea5c93bbfd4a89064224055cdf070b6771469442d07021f5c8eb0fea6516d60b8acb33ad64ede60e8785bfb3aa94b99bdf86151db9a9a010104220020771fd18ad459666dd49f3d564e3dbc42f4c84774e360ada16816a8ed488d5681010547522103b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd462103de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd52ae220603b1341ccba7683b6af4f1238cd6e97e7167d569fac47f1e48d47541844355bd4610b4a6ba67000000800000008004000080220603de55d1e1dac805e3f8a58c1fbf9b94c02f3dbaafe127fefca4995f26f82083bd10b4a6ba670000008000000080050000800000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFUCAAAAASeaIyOl37UfxF8iD6WLD8E+HjNCeSqF1+Ns1jM7XLw5AAAAAAD/////AaBa6gsAAAAAGXapFP/pwAYQl8w7Y28ssEYPpPxCfStFiKwAAAAAAAEBIJVe6gsAAAAAF6kUY0UgD2jRieGtwN8cTRbqjxTA2+uHIgIDsTQcy6doO2r08SOM1ul+cWfVafrEfx5I1HVBhENVvUZGMEMCIAQktY7/qqaU4VWepck7v9SokGQiQFXN8HC2dxRpRC0HAh9cjrD+plFtYLisszrWTt5g6Hhb+zqpS5m9+GFR25qaAQEEIgAgdx/RitRZZm3Unz1WTj28QvTIR3TjYK2haBao7UiNVoEBBUdSIQOxNBzLp2g7avTxI4zW6X5xZ9Vp+sR/HkjUdUGEQ1W9RiED3lXR4drIBeP4pYwfv5uUwC89uq/hJ/78pJlfJvggg71SriIGA7E0HMunaDtq9PEjjNbpfnFn1Wn6xH8eSNR1QYRDVb1GELSmumcAAACAAAAAgAQAAIAiBgPeVdHh2sgF4/iljB+/m5TALz26r+En/vykmV8m+CCDvRC0prpnAAAAgAAAAIAFAACAAAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with one P2WSH input of a 2-of-2 multisig. witnessScript, keypaths, and global xpubs are available. Contains no signatures. Outputs filled.&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01005202000000019dfc6628c26c5899fe1bd3dc338665bfd55d7ada10f6220973df2d386dec12760100000000ffffffff01f03dcd1d000000001600147b3a00bfdc14d27795c2b74901d09da6ef133579000000004f01043587cf02da3fd0088000000097048b1ad0445b1ec8275517727c87b4e4ebc18a203ffa0f94c01566bd38e9000351b743887ee1d40dc32a6043724f2d6459b3b5a4d73daec8fbae0472f3bc43e20cd90c6a4fae000080000000804f01043587cf02da3fd00880000001b90452427139cd78c2cff2444be353cd58605e3e513285e528b407fae3f6173503d30a5e97c8adbc557dac2ad9a7e39c1722ebac69e668b6f2667cc1d671c83cab0cd90c6a4fae000080010000800001012b0065cd1d000000002200202c5486126c4978079a814e13715d65f36459e4d6ccaded266d0508645bafa6320105475221029da12cdb5b235692b91536afefe5c91c3ab9473d8e43b533836ab456299c88712103372b34234ed7cf9c1fea5d05d441557927be9542b162eb02e1ab2ce80224c00b52ae2206029da12cdb5b235692b91536afefe5c91c3ab9473d8e43b533836ab456299c887110d90c6a4fae0000800000008000000000220603372b34234ed7cf9c1fea5d05d441557927be9542b162eb02e1ab2ce80224c00b10d90c6a4fae0000800100008000000000002202039eff1f547a1d5f92dfa2ba7af6ac971a4bd03ba4a734b03156a256b8ad3a1ef910ede45cc500000080000000800100008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAFICAAAAAZ38ZijCbFiZ/hvT3DOGZb/VXXraEPYiCXPfLTht7BJ2AQAAAAD/////AfA9zR0AAAAAFgAUezoAv9wU0neVwrdJAdCdpu8TNXkAAAAATwEENYfPAto/0AiAAAAAlwSLGtBEWx7IJ1UXcnyHtOTrwYogP/oPlMAVZr046QADUbdDiH7h1A3DKmBDck8tZFmztaTXPa7I+64EcvO8Q+IM2QxqT64AAIAAAACATwEENYfPAto/0AiAAAABuQRSQnE5zXjCz/JES+NTzVhgXj5RMoXlKLQH+uP2FzUD0wpel8itvFV9rCrZp+OcFyLrrGnmaLbyZnzB1nHIPKsM2QxqT64AAIABAACAAAEBKwBlzR0AAAAAIgAgLFSGEmxJeAeagU4TcV1l82RZ5NbMre0mbQUIZFuvpjIBBUdSIQKdoSzbWyNWkrkVNq/v5ckcOrlHPY5DtTODarRWKZyIcSEDNys0I07Xz5wf6l0F1EFVeSe+lUKxYusC4ass6AIkwAtSriIGAp2hLNtbI1aSuRU2r+/lyRw6uUc9jkO1M4NqtFYpnIhxENkMak+uAACAAAAAgAAAAAAiBgM3KzQjTtfPnB/qXQXUQVV5J76VQrFi6wLhqyzoAiTACxDZDGpPrgAAgAEAAIAAAAAAACICA57/H1R6HV+S36K6evaslxpL0DukpzSwMVaiVritOh75EO3kXMUAAACAAAAAgAEAAIAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with unknown types in the inputs.&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a010000000000000af00102030405060708090f0102030405060708090a0b0c0d0e0f0000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAD8CAAAAAf//////////////////////////////////////////AAAAAAD/////AQAAAAAAAAAAA2oBAAAAAAAACvABAgMEBQYHCAkPAQIDBAUGBwgJCgsMDQ4PAAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with `PSBT_GLOBAL_XPUB`.&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009d0100000002710ea76ab45c5cb6438e607e59cc037626981805ae9e0dfd9089012abb0be5350100000000ffffffff190994d6a8b3c8c82ccbcfb2fba4106aa06639b872a8d447465c0d42588d6d670000000000ffffffff0200e1f505000000001976a914b6bc2c0ee5655a843d79afedd0ccc3f7dd64340988ac605af405000000001600141188ef8e4ce0449eaac8fb141cbf5a1176e6a088000000004f010488b21e039e530cac800000003dbc8a5c9769f031b17e77fea1518603221a18fd18f2b9a54c6c8c1ac75cbc3502f230584b155d1c7f1cd45120a653c48d650b431b67c5b2c13f27d7142037c1691027569c503100008000000080000000800001011f00e1f5050000000016001433b982f91b28f160c920b4ab95e58ce50dda3a4a220203309680f33c7de38ea6a47cd4ecd66f1f5a49747c6ffb8808ed09039243e3ad5c47304402202d704ced830c56a909344bd742b6852dccd103e963bae92d38e75254d2bb424502202d86c437195df46c0ceda084f2a291c3da2d64070f76bf9b90b195e7ef28f77201220603309680f33c7de38ea6a47cd4ecd66f1f5a49747c6ffb8808ed09039243e3ad5c1827569c5031000080000000800000008000000000010000000001011f00e1f50500000000160014388fb944307eb77ef45197d0b0b245e079f011de220202c777161f73d0b7c72b9ee7bde650293d13f095bc7656ad1f525da5fd2e10b11047304402204cb1fb5f869c942e0e26100576125439179ae88dca8a9dc3ba08f7953988faa60220521f49ca791c27d70e273c9b14616985909361e25be274ea200d7e08827e514d01220602c777161f73d0b7c72b9ee7bde650293d13f095bc7656ad1f525da5fd2e10b1101827569c5031000080000000800000008000000000000000000000220202d20ca502ee289686d21815bd43a80637b0698e1fbcdbe4caed445f6c1a0a90ef1827569c50310000800000008000000080000000000400000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJ0BAAAAAnEOp2q0XFy2Q45gflnMA3YmmBgFrp4N/ZCJASq7C+U1AQAAAAD/////GQmU1qizyMgsy8+y+6QQaqBmObhyqNRHRlwNQliNbWcAAAAAAP////8CAOH1BQAAAAAZdqkUtrwsDuVlWoQ9ea/t0MzD991kNAmIrGBa9AUAAAAAFgAUEYjvjkzgRJ6qyPsUHL9aEXbmoIgAAAAATwEEiLIeA55TDKyAAAAAPbyKXJdp8DGxfnf+oVGGAyIaGP0Y8rmlTGyMGsdcvDUC8jBYSxVdHH8c1FEgplPEjWULQxtnxbLBPyfXFCA3wWkQJ1acUDEAAIAAAACAAAAAgAABAR8A4fUFAAAAABYAFDO5gvkbKPFgySC0q5XljOUN2jpKIgIDMJaA8zx9446mpHzU7NZvH1pJdHxv+4gI7QkDkkPjrVxHMEQCIC1wTO2DDFapCTRL10K2hS3M0QPpY7rpLTjnUlTSu0JFAiAthsQ3GV30bAztoITyopHD2i1kBw92v5uQsZXn7yj3cgEiBgMwloDzPH3jjqakfNTs1m8fWkl0fG/7iAjtCQOSQ+OtXBgnVpxQMQAAgAAAAIAAAACAAAAAAAEAAAAAAQEfAOH1BQAAAAAWABQ4j7lEMH63fvRRl9CwskXgefAR3iICAsd3Fh9z0LfHK57nveZQKT0T8JW8dlatH1Jdpf0uELEQRzBEAiBMsftfhpyULg4mEAV2ElQ5F5rojcqKncO6CPeVOYj6pgIgUh9JynkcJ9cOJzybFGFphZCTYeJb4nTqIA1+CIJ+UU0BIgYCx3cWH3PQt8crnue95lApPRPwlbx2Vq0fUl2l/S4QsRAYJ1acUDEAAIAAAACAAAAAgAAAAAAAAAAAAAAiAgLSDKUC7iiWhtIYFb1DqAY3sGmOH7zb5MrtRF9sGgqQ7xgnVpxQMQAAgAAAAIAAAACAAAAAAAQAAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with global unsigned tx that has 0 inputs and 0 outputs&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01000a0000000000000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAAoAAAAAAAAAAAAAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: PSBT with 0 inputs&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01004c020000000002d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAEwCAAAAAALT3/UFAAAAABl2qRTQxZkDxbrChodg6Q/VIaRmWqdlIIisAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4ezLhMAAAAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fails Signer checks&lt;br /&gt;
&lt;br /&gt;
* Case: A Witness UTXO is provided for a non-witness input&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac0000000000010122d3dff505000000001976a914d48ed3110b94014cb114bd32d6f4d066dc74256b88ac0001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEBItPf9QUAAAAAGXapFNSO0xELlAFMsRS9Mtb00GbcdCVriKwAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: redeemScript with non-witness UTXO does not match the scriptPubKey&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000220202dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752af2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8872202023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d2010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU210gwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gEBAwQBAAAAAQRHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq8iBgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfxDZDGpPAAAAgAAAAIAAAACAIgYC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtcQ2QxqTwAAAIAAAACAAQAAgAABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohyICAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBAQMEAQAAAAEEIgAgjCNTFzdDtZXftKB7crqOQuN5fadOh/59nXSX47ICiQMBBUdSIQMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3CECOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnNSriIGAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zENkMak8AAACAAAAAgAMAAIAiBgMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3BDZDGpPAAAAgAAAAIACAACAACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: redeemScript with witness UTXO does not match the scriptPubKey&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000220202dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8872202023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d2010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028900010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU210gwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gEBAwQBAAAAAQRHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4iBgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfxDZDGpPAAAAgAAAAIAAAACAIgYC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtcQ2QxqTwAAAIAAAACAAQAAgAABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohyICAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBAQMEAQAAAAEEIgAgjCNTFzdDtZXftKB7crqOQuN5fadOh/59nXSX47ICiQABBUdSIQMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3CECOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnNSriIGAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zENkMak8AAACAAAAAgAMAAIAiBgMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3BDZDGpPAAAAgAAAAIACAACAACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Case: witnessScript with witness UTXO does not match the redeemScript&lt;br /&gt;
** Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000220202dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8872202023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d2010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ad2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU210gwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gEBAwQBAAAAAQRHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4iBgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfxDZDGpPAAAAgAAAAIAAAACAIgYC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtcQ2QxqTwAAAIAAAACAAQAAgAABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohyICAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBAQMEAQAAAAEEIgAgjCNTFzdDtZXftKB7crqOQuN5fadOh/59nXSX47ICiQMBBUdSIQMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3CECOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnNSrSIGAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zENkMak8AAACAAAAAgAMAAIAiBgMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3BDZDGpPAAAAgAAAAIACAACAACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The private keys in the tests below are derived from the following master private key:&lt;br /&gt;
&lt;br /&gt;
* Extended Private Key: &amp;lt;pre&amp;gt;tprv8ZgxMBicQKsPd9TeAdPADNnSyH9SSUUbTVeFszDE23Ki6TBB5nCefAdHkK8Fm3qMQR6sHwA56zqRmKmxnHk37JkiFzvncDqoKmPWubu7hDF&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Seed: &amp;lt;pre&amp;gt;cUkG8i1RFfWGWy5ziR11zJ5V4U4W3viSFCfyJmZnvQaUsd1xuF3T&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A creator creating a PSBT for a transaction which creates the following outputs:&lt;br /&gt;
&lt;br /&gt;
* scriptPubKey: 0014d85c2b71d0060b09c9886aeb815e50991dda124d, Amount: 1.49990000&lt;br /&gt;
* scriptPubKey: 001400aea9a2e5f0f876a588df5546e8742d1d87008f, Amount: 1.00000000&lt;br /&gt;
&lt;br /&gt;
and spends the following inputs:&lt;br /&gt;
&lt;br /&gt;
* TXID: 75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858, Index: 0&lt;br /&gt;
* TXID: 1dea7cd05979072a3578cab271c02244ea8a090bbb46aa680a65ecd027048d83, Index: 1&lt;br /&gt;
&lt;br /&gt;
must create this PSBT:&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f000000000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAAAAAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given the above PSBT, an updater with only the following:&lt;br /&gt;
&lt;br /&gt;
* Redeem Scripts:&lt;br /&gt;
** 5221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae&lt;br /&gt;
** 00208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903&lt;br /&gt;
* Witness Scripts:&lt;br /&gt;
** 522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae&lt;br /&gt;
* Previous Transactions:&lt;br /&gt;
** &amp;lt;pre&amp;gt;0200000000010158e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd7501000000171600145f275f436b09a8cc9a2eb2a2f528485c68a56323feffffff02d8231f1b0100000017a914aed962d6654f9a2b36608eb9d64d2b260db4f1118700c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88702483045022100a22edcc6e5bc511af4cc4ae0de0fcd75c7e04d8c1c3a8aa9d820ed4b967384ec02200642963597b9b1bc22c75e9f3e117284a962188bf5e8a74c895089046a20ad770121035509a48eb623e10aace8bfd0212fdb8a8e5af3c94b0b133b95e114cab89e4f7965000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;lt;pre&amp;gt;0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Public Keys&lt;br /&gt;
** Key: 029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f, Derivation Path: m/0&#039;/0&#039;/0&#039;&lt;br /&gt;
** Key: 02dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7, Derivation Path: m/0&#039;/0&#039;/1&#039;&lt;br /&gt;
** Key: 03089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc, Derivation Path: m/0&#039;/0&#039;/2&#039;&lt;br /&gt;
** Key: 023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73, Derivation Path: m/0&#039;/0&#039;/3&#039;&lt;br /&gt;
** Key: 03a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca58771, Derivation Path: m/0&#039;/0&#039;/4&#039;&lt;br /&gt;
** Key: 027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b50051096, Derivation Path: m/0&#039;/0&#039;/5&#039;&lt;br /&gt;
&lt;br /&gt;
Must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHAQQiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEFR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuIgYCOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnMQ2QxqTwAAAIAAAACAAwAAgCIGAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcENkMak8AAACAAAAAgAIAAIAAIgIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1Ptnuylh3EQ2QxqTwAAAIAAAACABAAAgAAiAgJ/Y5l1fS7/VaE2rQLGhLGDi2VW5fG2s0KCqUtrUAUQlhDZDGpPAAAAgAAAAIAFAACAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An updater which adds SIGHASH_ALL to the above PSBT must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABAwQBAAAAAQRHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4iBgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfxDZDGpPAAAAgAAAAIAAAACAIgYC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtcQ2QxqTwAAAIAAAACAAQAAgAABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohwEDBAEAAAABBCIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQVHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4iBgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8OcxDZDGpPAAAAgAAAAIADAACAIgYDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwQ2QxqTwAAAIAAAACAAgAAgAAiAgOppMN/WZbTqiXbrGtXCvBlA5RJKUJGCzVHU+2e7KWHcRDZDGpPAAAAgAAAAIAEAACAACICAn9jmXV9Lv9VoTatAsaEsYOLZVbl8bazQoKpS2tQBRCWENkMak8AAACAAAAAgAUAAIAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given the above updated PSBT, a signer that supports SIGHASH_ALL for P2PKH and P2WPKH spends and uses RFC6979 for nonce generation and has the following keys:&lt;br /&gt;
* cP53pDbR5WtAD8dYAW9hhTjuvvTVaEiQBdrz9XPrgLBeRFiyCbQr (m/0&#039;/0&#039;/0&#039;)&lt;br /&gt;
* cR6SXDoyfQrcp4piaiHE97Rsgta9mNhGTen9XeonVgwsh4iSgw6d (m/0&#039;/0&#039;/2&#039;)&lt;br /&gt;
must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000002202029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e887220203089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgf0cwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMAQEDBAEAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHIgIDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtxHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwEBAwQBAAAAAQQiACCMI1MXN0O1ld+0oHtyuo5C43l9p06H/n2ddJfjsgKJAwEFR1IhAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcIQI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc1KuIgYCOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnMQ2QxqTwAAAIAAAACAAwAAgCIGAwidwQx6xttU+RMpr2FzM9s4jOrQwjH3IzedG5kDCwLcENkMak8AAACAAAAAgAIAAIAAIgIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1Ptnuylh3EQ2QxqTwAAAIAAAACABAAAgAAiAgJ/Y5l1fS7/VaE2rQLGhLGDi2VW5fG2s0KCqUtrUAUQlhDZDGpPAAAAgAAAAIAFAACAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given the above updated PSBT, a signer with the following keys:&lt;br /&gt;
* cT7J9YpCwY3AVRFSjN6ukeEeWY6mhpbJPxRaDaP5QTdygQRxP9Au (m/0&#039;/0&#039;/1&#039;)&lt;br /&gt;
* cNBc3SWUip9PPm1GjRoLEJT6T41iNzCYtD7qro84FMnM5zEqeJsE (m/0&#039;/0&#039;/3&#039;)&lt;br /&gt;
must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f618765000000220202dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8872202023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d2010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU210gwRQIhAPYQOLMI3B2oZaNIUnRvAVdyk0IIxtJEVDk82ZvfIhd3AiAFbmdaZ1ptCgK4WxTl4pB02KJam1dgvqKBb2YZEKAG6gEBAwQBAAAAAQRHUiEClYO/Oa4KYJdHrRma3dY0+mEIVZ1sXNObTCGD8auW4H8hAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXUq4iBgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfxDZDGpPAAAAgAAAAIAAAACAIgYC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtcQ2QxqTwAAAIAAAACAAQAAgAABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohyICAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zRzBEAiBl9FulmYtZon/+GnvtAWrx8fkNVLOqj3RQql9WolEDvQIgf3JHA60e25ZoCyhLVtT/y4j3+3Weq74IqjDym4UTg9IBAQMEAQAAAAEEIgAgjCNTFzdDtZXftKB7crqOQuN5fadOh/59nXSX47ICiQMBBUdSIQMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3CECOt2QTz1tz1nduQaw3uI1Kbf/ue1Q5ehhUZJoYCIfDnNSriIGAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zENkMak8AAACAAAAAgAMAAIAiBgMIncEMesbbVPkTKa9hczPbOIzq0MIx9yM3nRuZAwsC3BDZDGpPAAAAgAAAAIACAACAACICA6mkw39ZltOqJdusa1cK8GUDlEkpQkYLNUdT7Z7spYdxENkMak8AAACAAAAAgAQAAIAAIgICf2OZdX0u/1WhNq0CxoSxg4tlVuXxtrNCgqlLa1AFEJYQ2QxqTwAAAIAAAACABQAAgAA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given both of the above PSBTs, a combiner must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000002202029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01220202dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d7483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01010304010000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e887220203089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f012202023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e73473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d2010103040100000001042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgf0cwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMASICAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAQEDBAEAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHIgIDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtxHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwEiAgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc0cwRAIgZfRbpZmLWaJ//hp77QFq8fH5DVSzqo90UKpfVqJRA70CIH9yRwOtHtuWaAsoS1bU/8uI9/t1nqu+CKow8puFE4PSAQEDBAEAAAABBCIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQVHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4iBgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8OcxDZDGpPAAAAgAAAAIADAACAIgYDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwQ2QxqTwAAAIAAAACAAgAAgAAiAgOppMN/WZbTqiXbrGtXCvBlA5RJKUJGCzVHU+2e7KWHcRDZDGpPAAAAgAAAAIAEAACAACICAn9jmXV9Lv9VoTatAsaEsYOLZVbl8bazQoKpS2tQBRCWENkMak8AAACAAAAAgAUAAIAA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given the above PSBT, an input finalizer must create this PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000107da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8870107232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b20289030108da0400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAABB9oARzBEAiB0AYrUGACXuHMyPAAVcgs2hMyBI4kQSOfbzZtVrWecmQIgc9Npt0Dj61Pc76M4I8gHBRTKVafdlUTxV8FnkTJhEYwBSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAUdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSrgABASAAwusLAAAAABepFLf1+vQOPUClpFmx2zU18rcvqSHohwEHIyIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQjaBABHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwFHMEQCIGX0W6WZi1mif/4ae+0BavHx+Q1Us6qPdFCqX1aiUQO9AiB/ckcDrR7blmgLKEtW1P/LiPf7dZ6rvgiqMPKbhROD0gFHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4AIgIDqaTDf1mW06ol26xrVwrwZQOUSSlCRgs1R1Ptnuylh3EQ2QxqTwAAAIAAAACABAAAgAAiAgJ/Y5l1fS7/VaE2rQLGhLGDi2VW5fG2s0KCqUtrUAUQlhDZDGpPAAAAgAAAAIAFAACAAA==&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given the above PSBT, a transaction extractor must create this Bitcoin transaction:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;0200000000010258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd7500000000da00473044022074018ad4180097b873323c0015720b3684cc8123891048e7dbcd9b55ad679c99022073d369b740e3eb53dcefa33823c8070514ca55a7dd9544f157c167913261118c01483045022100f61038b308dc1da865a34852746f015772934208c6d24454393cd99bdf2217770220056e675a675a6d0a02b85b14e5e29074d8a25a9b5760bea2816f661910a006ea01475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752aeffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d01000000232200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f000400473044022062eb7a556107a7c73f45ac4ab5a1dddf6f7075fb1275969a7f383efff784bcb202200c05dbb7470dbf2f08557dd356c7325c1ed30913e996cd3840945db12228da5f01473044022065f45ba5998b59a27ffe1a7bed016af1f1f90d54b3aa8f7450aa5f56a25103bd02207f724703ad1edb96680b284b56d4ffcb88f7fb759eabbe08aa30f29b851383d20147522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given these two PSBTs with unknown key-value pairs:&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a0100000000000af00102030405060708090f0102030405060708090a0b0c0d0e0f000af00102030405060708090f0102030405060708090a0b0c0d0e0f000af00102030405060708090f0102030405060708090a0b0c0d0e0f00&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAD8CAAAAAf//////////////////////////////////////////AAAAAAD/////AQAAAAAAAAAAA2oBAAAAAAAK8AECAwQFBgcICQ8BAgMEBQYHCAkKCwwNDg8ACvABAgMEBQYHCAkPAQIDBAUGBwgJCgsMDQ4PAArwAQIDBAUGBwgJDwECAwQFBgcICQoLDA0ODwA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a0100000000000af00102030405060708100f0102030405060708090a0b0c0d0e0f000af00102030405060708100f0102030405060708090a0b0c0d0e0f000af00102030405060708100f0102030405060708090a0b0c0d0e0f00&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAD8CAAAAAf//////////////////////////////////////////AAAAAAD/////AQAAAAAAAAAAA2oBAAAAAAAK8AECAwQFBgcIEA8BAgMEBQYHCAkKCwwNDg8ACvABAgMEBQYHCBAPAQIDBAUGBwgJCgsMDQ4PAArwAQIDBAUGBwgQDwECAwQFBgcICQoLDA0ODwA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A combiner which orders keys lexicographically must produce the following PSBT:&lt;br /&gt;
&lt;br /&gt;
* Bytes in Hex: &amp;lt;pre&amp;gt;70736274ff01003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a0100000000000af00102030405060708090f0102030405060708090a0b0c0d0e0f0af00102030405060708100f0102030405060708090a0b0c0d0e0f000af00102030405060708090f0102030405060708090a0b0c0d0e0f0af00102030405060708100f0102030405060708090a0b0c0d0e0f000af00102030405060708090f0102030405060708090a0b0c0d0e0f0af00102030405060708100f0102030405060708090a0b0c0d0e0f00&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Base64 String: &amp;lt;pre&amp;gt;cHNidP8BAD8CAAAAAf//////////////////////////////////////////AAAAAAD/////AQAAAAAAAAAAA2oBAAAAAAAK8AECAwQFBgcICQ8BAgMEBQYHCAkKCwwNDg8K8AECAwQFBgcIEA8BAgMEBQYHCAkKCwwNDg8ACvABAgMEBQYHCAkPAQIDBAUGBwgJCgsMDQ4PCvABAgMEBQYHCBAPAQIDBAUGBwgJCgsMDQ4PAArwAQIDBAUGBwgJDwECAwQFBgcICQoLDA0ODwrwAQIDBAUGBwgQDwECAwQFBgcICQoLDA0ODwA=&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference implementation==&lt;br /&gt;
&lt;br /&gt;
The reference implementation of the PSBT format is available at https://github.com/achow101/bitcoin/tree/psbt.&lt;br /&gt;
&lt;br /&gt;
==Acknowledgements==&lt;br /&gt;
&lt;br /&gt;
Special thanks to Pieter Wuille for suggesting that such a transaction format should be made&lt;br /&gt;
and for coming up with the name and abbreviation of PSBT.&lt;br /&gt;
&lt;br /&gt;
Thanks to Pieter Wuille, Gregory Maxwell, Jonathan Underwood, Daniel Cousens and those who commented on the bitcoin-dev mailing list for additional comments&lt;br /&gt;
and suggestions for improving this proposal.&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Original_Bitcoin_client&amp;diff=69338</id>
		<title>Original Bitcoin client</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Original_Bitcoin_client&amp;diff=69338"/>
		<updated>2022-06-19T20:38:27Z</updated>

		<summary type="html">&lt;p&gt;Manu: link broken, added archive.org version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Satoshi [[Clients|client]]&#039;&#039;&#039; or the &#039;&#039;&#039;Satoshi code&#039;&#039;&#039; refers to [[bitcoind]], bitcoin-client, bitcoin-qt and [[Bitcoin Core]]. This is in honor of [[Satoshi Nakamoto]] for creating [[Bitcoin]].&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;In the most widest sense:&lt;br /&gt;
&amp;lt;dd&amp;gt;All releases of bitcoin-x.y.z (starting 2009) and future official releases by the [https://bitcoin.org/en/development &amp;quot;bitcoin core developers&amp;quot;].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;In the narrow sense:&lt;br /&gt;
&amp;lt;dd&amp;gt;Only the bitcoin releases up to version 0.3.19 which Satoshi Nakamoto himself was chief and main developer. He retired afterwards (end of 2010) completely from this project. With the next release also [[Testnet]] was reset with a new genesis block.&lt;br /&gt;
&amp;lt;dt&amp;gt;Original Satoshi clients:&lt;br /&gt;
&amp;lt;dd&amp;gt;Only the bitcoin releases 0.1.0 up to 0.1.5 which supported only Windows 2000 / Windows NT and Windows XP (perhaps Windows Vista). The next bitcoin release 0.2.0 from Dec 2009, nearly a year later, starts to support Linux and the [https://bitcointalk.org/index.php?topic=5.0 community] got more and more actively involved in the development.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
For history, one of the earliest available proof of a running bitcoin-0.1.0 with a [https://web.archive.org/web/20130521105629/http://sourceforge.net/mailarchive/attachment.php?list_name=bitcoin-list&amp;amp;message_id=da7b3ce30901101113v2ec6bf61xf018265479eb7faf%40mail.gmail.com&amp;amp;counter=1 human readable debug log]. &lt;br /&gt;
There might have been also (private) earlier client code before 0.1.0 available only to Satoshi Nakamoto.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Running Bitcoin]]&lt;br /&gt;
* [[Bitcoind#History of official bitcoind (and predecessor) releases|History of Bitcoind]]&lt;br /&gt;
* [[Original_Bitcoin_client/API_calls_list|Original Bitcoin client API]]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69336</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69336"/>
		<updated>2022-06-17T21:28:08Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Tor network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
[[Bitcoin Core]] versions prior to 0.8.0 also could send [[IP Transactions]] to these nodes. If you included your bitcoin address in the &amp;quot;message&amp;quot; field, you might have had your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
BitcoinCore will automatically use Tor if it is available at default (&#039;&#039;127.0.0.1:9050&#039;&#039;), to use Bitcoin-Qt over Tor hidden services &#039;&#039;&#039;only&#039;&#039;&#039;, in a terminal/console enter:&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -onlynet=tor&lt;br /&gt;
&lt;br /&gt;
To use Bitcoin with one specific Tor node, run&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -connect=abcde.onion&lt;br /&gt;
, where abcde.onion needs to be substituted with one of the [[Fallback_Nodes#Tor_nodes|Tor nodes below]]. These parameters can be added to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]] to make them permanent.&lt;br /&gt;
&lt;br /&gt;
More details on how to execute BitcoinCore with Tor see [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]]. You can find detailed information on running clients and hidden services within Tor in the [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md documentation].&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2017-11-15.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.moneypot.com || [https://www.moneypot.com moneypot] || 212.47.228.216 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2015-09-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| node.bitcoin.xxx || [http://www.bitcoin.xxx Bitcoin.xxx] || 66.228.49.201 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-08-28 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.coinprism.com || [[Coinprism]] || 137.116.225.142 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-04-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.evolyn.net || Evolyn || 85.214.251.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-01-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 67.186.224.85 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2013-11-13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| archivum.info || Ferraro Ltd.|| 88.198.58.172 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| www.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.181 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ns2.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.182 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coin.soul-dev.com || Soul-Dev || || || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 91.121.205.50 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.bitgroup.cc || BitGroup || 198.211.116.191 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode2.bitgroup.cc || BitGroup || 162.243.120.138 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode3.bitgroup.cc || BitGroup || 95.85.8.237 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.xiro.co || Xiro Labs || 91.121.108.61 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 185.122.57.203 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coinno.de  || jaknam ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 82.165.44.44 || anonymous ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin1.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| blockchainnode.meulie.net || [[User:Evert|Evert]] ||  ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| fullnode.fybsg.com || Nagato ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 62.210.66.227 ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| homeplex.tk || [[User:Victorsueca|Victorsueca]] || 90.165.120.190 ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] || 91.121.83.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 2601:7:6680:2ac:4d29:40ff:7513:fcc7 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 11-13-2013 (MDY) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| caffeinator.net || [[User:Atrophy|Atrophy]] ||  ||  || {{Fallback Nodes/Node Up}} || 2013-05-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 2001:41d0:1:d632::1 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 2a06:8ec0:3::1:2e47 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||  No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 2001:bc8:c087:2001::1 ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] ||  ||  ||  ||  ||&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2018-10-24.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| nkf5e6b7pl4jfd4a.onion || BlueMatt || Up || 2018-10-24 || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;br /&gt;
* [https://getaddr.bitnodes.io/ Bitnodes project]&lt;br /&gt;
* [https://blockchain.info/connected-nodes Recently connected nodes at blockchain.info]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Hidden_Service&amp;diff=69335</id>
		<title>Hidden Service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Hidden_Service&amp;diff=69335"/>
		<updated>2022-06-17T21:27:11Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tor can also provide anonymity to websites and other servers. Servers configured to receive inbound connections only through Tor are called hidden services. Rather than utilizing a server&#039;s IP address (and thus its network location,) a hidden service is accessed through its .onion address. The Tor network understands these addresses and can route data to and from hidden services, even to those hosted behind firewall or network address translators (NAT), while preserving the anonymity of both parties. Tor is necessary to access hidden services.&lt;br /&gt;
&lt;br /&gt;
Hidden services have been deployed on the Tor network since 2004. Other than the database that stores the hidden-service descriptors, Tor is decentralized by design; there is no direct readable list of all hidden services, although a number of hidden services catalog publicly known onion addresses.&lt;br /&gt;
&lt;br /&gt;
Because hidden services do not use exit nodes, connection to a hidden service is encrypted end-to-end and not subject to eavesdropping. Contrary to popular opinion, this makes an additional traditional TLS layer atop a hidden service not only redundant, but also pointless. There are, however, security issues involving Tor hidden services. For example, services that are reachable through Tor hidden services &#039;&#039;and&#039;&#039; the public Internet, are susceptible to correlation attacks and thus not perfectly hidden. Other pitfalls include misconfigured services (e.g. identifying information included by default in web server error responses), uptime and downtime statistics, intersection attacks, and user error.&lt;br /&gt;
&lt;br /&gt;
Hidden services can help users store and transact bitcoin with relative privacy and safety.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tor]]&lt;br /&gt;
* [[Setting_up_a_Tor_hidden_service]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69334</id>
		<title>Tor</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69334"/>
		<updated>2022-06-17T21:26:35Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Bitcoin Core */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Tor&#039;&#039;&#039; is a distributed &#039;onion&#039; network, that makes it more difficult for an adversary to track any one peer on the network.  Tor also is very useful to access the &#039;uncensored&#039; internet in countries such as China and Iran. Bitcoin&#039;s security model assumes that your node is well connected to the rest of the network, so even in less-censored countries using bitcoin over both Tor and clearnet can avoid being partitioned from the network by the internet service provider. Preserving privacy means not only hiding the content of messages, but also hiding who is talking to whom (traffic analysis). Tor provides anonymous connections that are strongly resistant to both eavesdropping and traffic analysis.&lt;br /&gt;
&lt;br /&gt;
Bitcoin can run easily on the Tor network. &lt;br /&gt;
&lt;br /&gt;
=Tor installation &amp;amp; use=&lt;br /&gt;
&#039;&#039;todo explain: onion routing (how tor network helps to anonymize), encryption used, exit nodes, routers&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please follow the instructions provided with installation files and read the [http://www.torproject.org/download/download.html.en#warning list of warnings]. &#039;&#039;Tor doesn&#039;t magically anonymize all your traffic just because you install it.&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Down the page you can find examples how to configure applications to use Tor to anonymize the origin of your traffic.&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.torproject.org/docs/tor-doc-windows.html.en This] is a detailed installation guide for Windows. Before you setup Bitcoin or mIRC to use Tor, please install Tor and start in.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-tor-running.png]] On the taskbar of your compute you&#039;ll see a small green onion when Tor is running.&lt;br /&gt;
[[{{ns:file}}:20110109-bitcoin-mirc-vidalia.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note on 2022&#039;&#039;&#039;: This project that executes Tor service on Windows with the above interface, and display an icon on the taskbar is called Tor Vidalia Bundle and it&#039;s not maintained anymore, deprecated and not recommended. To see how to configure Tor service on Linx or Windows check [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]].&lt;br /&gt;
&lt;br /&gt;
= Bitcoin Core =&lt;br /&gt;
&lt;br /&gt;
See [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]], &#039;&#039;see also [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md Bitcoin Core instructions for Tor]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==GUI==&lt;br /&gt;
Once you have your Tor client up &amp;amp; running, you can configure your Bitcoin client to use it.&amp;lt;br /&amp;gt;&lt;br /&gt;
Select in menu Settings -&amp;gt; Options&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-options.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect through socks 4 proxy&amp;quot; with the address 127.0.0.1 and port 9050 (the Tor default port number)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-client-tor-as-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configuring an application to use Tor is also called to torify it.&lt;br /&gt;
(needs a brief howto here)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;the note about bitcoin-otc promote on a more appropriate place in this page? reference to trading and IRC&#039;&#039;&lt;br /&gt;
Conducting business using [[bitcoin-otc]] can be done more anonymously when directly connected to a Freenode IRC hidden service.&lt;br /&gt;
&lt;br /&gt;
==bitcoind==&lt;br /&gt;
&lt;br /&gt;
Run bitcoind with -proxy=127.0.0.1:9050 (or whatever your SocksPort is).&lt;br /&gt;
&lt;br /&gt;
bitcoind will detect that you are using a proxy on 9050 and will force the &amp;quot;nolisten&amp;quot; flag.  If you are not running tor on 9050, you need to set &amp;quot;nolisten&amp;quot; manually otherwise you will listen on your public IP and possibly reveal that you are running a node.&lt;br /&gt;
&lt;br /&gt;
=Hidden services=&lt;br /&gt;
[[Hidden Service| Hidden services]] run within the Tor network and can be connected to using the -connect= parameter to bitcoind so long as bitcoin is configured to use a Tor proxy. Bitcoin users do not need to use hidden services, since Tor can be used to increase anonymity of normal internet traffic, including bitcoin connections, but there are some technical reasons why hidden services may be beneficial; for more information see the Tor project&#039;s documentation.&lt;br /&gt;
&lt;br /&gt;
Services are listed at [[Fallback_Nodes#Tor_network]] along with instructions for using them.&lt;br /&gt;
&lt;br /&gt;
=Pooled Mining=&lt;br /&gt;
&lt;br /&gt;
Some mining pools are available as a hidden service on the tor network.  Any pool can be reached over tor.  The general methodology here is to tell your mining client to use your local Tor proxy.  This is client specific but there are some helpful hints.&lt;br /&gt;
&lt;br /&gt;
==Linux / BSD==&lt;br /&gt;
&lt;br /&gt;
Any client can have its traffic routed via Tor by using the torify command and invoking the miner with that.  Another method is to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
==Windows / OS X==&lt;br /&gt;
&lt;br /&gt;
It is possible to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
=mIRC=&lt;br /&gt;
&lt;br /&gt;
mIRC is a popular IRC client. This is a guide how to connect to Freenode IRC using Tor + SASL + mIRC.&amp;lt;br /&amp;gt;&lt;br /&gt;
==Register your nick with freenode nickserv&amp;lt;br /&amp;gt;==&lt;br /&gt;
Freenode only allows SASL authenticated users to connect to the onion IRC server. SASL authentication works only with a registered nickname.&amp;lt;br /&amp;gt;&lt;br /&gt;
Connect to Freenode IRC without using tor &amp;amp; execute&amp;lt;br /&amp;gt;&lt;br /&gt;
/msg nickserv register &amp;lt;password&amp;gt; &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
You will see something like this&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- An email containing nickname activation instructions has been sent to &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- If you do not complete registration within one day, your nickname will expire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To finish your nick registration go the provided email and copy/paste the command from e-mail to irc.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add SASL support to your mIRC installation&amp;lt;br /&amp;gt;==&lt;br /&gt;
Download the SASL.dll and sasl.mrc files and copy them to your mIRC installation directory&amp;lt;br /&amp;gt;&lt;br /&gt;
Load sasl.mrc script (Alt + R to open script editor, Ctrl + L to load file, browse to sasl.mrc, press OK or &amp;quot;save &amp;amp; exit&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-script-loaded.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Type /dialog -m SASL.main SASL.main to open the SASL connection manager.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-dialog.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Add Freenode entry.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-manager.png]][[{{ns:file}}:20110109-sasl-manager-network.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Network is Freenode.&amp;lt;br /&amp;gt;&lt;br /&gt;
Username and NS Password must match your nickserv reservation.&amp;lt;br /&amp;gt;&lt;br /&gt;
Auth Type can be PLAIN&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setup mIRC to use Tor&amp;lt;br /&amp;gt;==&lt;br /&gt;
Add the entry for Freenode onion IRC server&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-onion-irc-add.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configure mIRC to use a Proxy (your local Tor proxy)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-mirc-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Now you should be able to connect.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://www.bitcointalk.org/index.php?topic=2602 Bitcoin forum where this topic is discussed]&lt;br /&gt;
&lt;br /&gt;
=How Tor works=&lt;br /&gt;
Unlike Freenet, I2P, etc., Tor&#039;s security is very well-defined. While weaknesses do exist (described below), they have been known since Tor was created, and new weaknesses of significance are not expected.&lt;br /&gt;
&lt;br /&gt;
Tor sends TCP packets over 3 (normal) or 7 (hidden services) Tor relays. This is why it is so slow: your packet might have to go through 100 computers (counting Internet routers) before it reaches its destination. Tor uses multiple &#039;&#039;layers&#039;&#039; of encryption that are &#039;&#039;pulled away&#039;&#039; for each node. Hence the name &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;O&#039;&#039;&#039;nion &#039;&#039;&#039;R&#039;&#039;&#039;outer, which is always capitalized as &#039;&#039;&#039;Tor&#039;&#039;&#039;, and never TOR or t.o.r.&lt;br /&gt;
&lt;br /&gt;
Say that I want to connect to bitcoin.org through Tor. I first select three Tor relays that I know about. Then, I send a message to my ISP that looks like this:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of Relay1&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay1&amp;gt;&lt;br /&gt;
When Relay1 receives this, he decrypts the payload using his private key. The payload contains this:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay2&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay2&amp;gt;&lt;br /&gt;
Relay2 decrypts his payload:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay3&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay3&amp;gt;&lt;br /&gt;
Relay3 receives the real TCP payload, which he sends to the destination:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of destination&amp;gt;&lt;br /&gt;
 &amp;lt;Unencrypted payload&amp;gt;&lt;br /&gt;
The payload is not and can not be further encrypted by Tor. However, if the protocol itself uses encryption (HTTPS, SSH, etc.), the data will be encrypted. This means that the last node (the &#039;&#039;exit node&#039;&#039;) can see everything you do on HTTP sites, and can steal your passwords if they are transmitted unencrypted. Many people become exit nodes just so they can view this information -- Tor is much more dangerous than open WiFi for snooping!&lt;br /&gt;
&lt;br /&gt;
The encryption arrangement described above ensures that no single Tor node knows both the sender and the destination. Relay1 and your ISP know that you are using Tor and sending a packet at a certain time, but they don&#039;t know what you&#039;re sending or who you&#039;re sending to. Relay3 knows exactly what you&#039;re sending, but he can&#039;t determine who is sending it because Relay2 and Relay1 are blocking him. All three relays need to work together in order to conclusively connect the sender and the destination.&lt;br /&gt;
&lt;br /&gt;
However, Tor is weak to a &#039;&#039;timing attack&#039;&#039; that allows only two participants in certain positions to determine the sender with high accuracy. Consider this Tor connection:&lt;br /&gt;
 Sender &amp;lt;-&amp;gt; S-ISP &amp;lt;-&amp;gt; Relay1 &amp;lt;-&amp;gt; Relay2 &amp;lt;-&amp;gt; Relay3 &amp;lt;-&amp;gt; D-ISP &amp;lt;-&amp;gt; Destination&lt;br /&gt;
If the sender&#039;s ISP (S-ISP) and the destination are working together, they can record the size and times of packets sent and received. Over a large number of packets, they can determine with very high accuracy that the sender is, in fact, the person sending packets to the destination. This requires active surveillance or detailed logging by both sides. Relay1 can also perform the same role as S-ISP.&lt;br /&gt;
&lt;br /&gt;
Additionally, more configurations are possible if the underlying connection is not encrypted (normal HTTP, for example):&lt;br /&gt;
*S-ISP &amp;amp; Relay3&lt;br /&gt;
*Relay1 &amp;amp; Relay3&lt;br /&gt;
*S-ISP &amp;amp; D-ISP&lt;br /&gt;
*Relay1 &amp;amp; D-ISP&lt;br /&gt;
This second set can always see that the sender is connected to the destination, but they can only see what the sender is doing on the site if the connection is not encrypted. (Pathnames are encrypted in HTTPS.)&lt;br /&gt;
&lt;br /&gt;
Because the first relay (the &#039;&#039;entry node&#039;&#039;) is a weak point in the connection, Tor takes certain defensive measures. When you first start Tor, it chooses three &#039;&#039;entry guards&#039;&#039; that don&#039;t change for the entire time that you run Tor. You will always use one of those three unless one goes down. If all of those nodes are safe and your ISP is safe, then you are OK.&lt;br /&gt;
&lt;br /&gt;
These timing attacks are of special importance to Bitcoin because anyone can be the &amp;quot;destination&amp;quot; in a connection. Packets are broadcast to every peer in the Bitcoin network. This might allow your ISP alone to associate your transactions to you without much difficulty. However, a timing attack relies on receiving at least several dozen packets from the sender, so the &amp;quot;destination&amp;quot; might actually have to be one of your direct Bitcoin peers. It&#039;s not too difficult to flood the Bitcoin network with peers, though. Because of this attack, it is wise to use an [[EWallet]] instead of the Bitcoin client when using Tor.&lt;br /&gt;
&lt;br /&gt;
To discover Tor relays, Tor uses a centralized directory server model. There are nine authoritative directory servers. To become a relay, you register with one of these. The directory servers share their data and produce a &#039;&#039;network status consensus&#039;&#039; document every so often containing all Tor nodes. Tor clients don&#039;t connect directly to the authoritative directory servers -- they connect to one of many &#039;&#039;directory mirrors&#039;&#039;, which have a copy of the network status consensus. Since there is no peer-to-peer bootstrap mechanism in Tor, the entire network can be destroyed if half of the authoritative directory servers are destroyed, and the entire network can be subverted if half of the authoritative directory servers become evil.&lt;br /&gt;
&lt;br /&gt;
Hidden services allow both the sender and destination to remain anonymous. A hidden service connection is made like this:&lt;br /&gt;
*The destination tells several Tor relays to act as &#039;&#039;introduction points&#039;&#039; for the hidden service. The destination stays connected to all of these introduction points through a regular three-node Tor circuit.&lt;br /&gt;
*The destination registers these introduction points on a Tor DHT. The introduction points are associated with the first 16 characters of an encoded SHA-1 hash of the destination&#039;s key. This is the information in .onion addresses. The use of SHA-1 is a possible weakness.&lt;br /&gt;
*The sender creates a four-node Tor circuit. The fourth node is called the &#039;&#039;rendezvous point&#039;&#039;.&lt;br /&gt;
*The sender searches the DHT for the introduction points of the desired hidden service. The sender connects to one through a regular three-node Tor circuit and, through the introduction point, tells the destination about the rendezvous point he has chosen.&lt;br /&gt;
*The destination connects to the rendezvous point over a three-node Tor circuit. The sender and destination are now in contact over a seven-node connection.&lt;br /&gt;
&lt;br /&gt;
For clients, hidden services are more secure than encrypted Tor HTTPS connections because:&lt;br /&gt;
*If the destination remains anonymous, they are less likely to become controlled by an evil party.&lt;br /&gt;
*The destination&#039;s ISP isn&#039;t involved as they are in the HTTPS case. Only these configurations are possible for a timing attack:&lt;br /&gt;
**S-ISP &amp;amp; Destination&lt;br /&gt;
**Relay1 &amp;amp; Destination&lt;br /&gt;
&lt;br /&gt;
Running a hidden service is more dangerous, however. A simple intersection attack can be performed by the hidden service&#039;s ISP alone:&lt;br /&gt;
*Your Internet service is cut off.&lt;br /&gt;
*If the hidden service went down at that exact moment, you are unmasked.&lt;br /&gt;
The same sort of timing attacks as above are also possible.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.usenix.org/events/sec04/tech/full_papers/dingledine/dingledine_html/index.html Tor design paper] for more info.&lt;br /&gt;
&lt;br /&gt;
=Exchange Restrictions=&lt;br /&gt;
&lt;br /&gt;
Some exchanges will treat activity occurring through Tor with greater precautions.  For instance, the now-defunct Mt. Gox signup sheet read:&lt;br /&gt;
: Please be advised that accessing your account via the Tor network and/or public proxies may result in a temporary suspension of your account, and having to submit AML documents.&lt;br /&gt;
&lt;br /&gt;
=External Tor Hidden Services=&lt;br /&gt;
&lt;br /&gt;
* [irc://p4fsi4ockecnea7l.onion Freenode hidden service]&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
* [http://tor.eff.org/ Tor project]&lt;br /&gt;
* [http://www.torproject.org/docs/tor-doc-windows.html.en Tor installation guide - Windows]&lt;br /&gt;
* [https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorFAQ Tor FAQ]&lt;br /&gt;
* [http://www.torproject.org/about/overview.html.en how Tor works - overview]&lt;br /&gt;
* [http://freenode.net/irc_servers.shtml#tor Freenode over Tor info]&lt;br /&gt;
* [http://wiki.honk-honk.org/wiki/SaslServ#mIRC howto enable SASL in mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/SASL.dll SASL.dll library for mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/sasl.mrc sasl script for mIRC]&lt;br /&gt;
* [http://freenode.net/sasl/ Freenode resources on SASL]&lt;br /&gt;
&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69333</id>
		<title>Tor</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69333"/>
		<updated>2022-06-17T21:24:18Z</updated>

		<summary type="html">&lt;p&gt;Manu: /* Tor installation &amp;amp; use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Tor&#039;&#039;&#039; is a distributed &#039;onion&#039; network, that makes it more difficult for an adversary to track any one peer on the network.  Tor also is very useful to access the &#039;uncensored&#039; internet in countries such as China and Iran. Bitcoin&#039;s security model assumes that your node is well connected to the rest of the network, so even in less-censored countries using bitcoin over both Tor and clearnet can avoid being partitioned from the network by the internet service provider. Preserving privacy means not only hiding the content of messages, but also hiding who is talking to whom (traffic analysis). Tor provides anonymous connections that are strongly resistant to both eavesdropping and traffic analysis.&lt;br /&gt;
&lt;br /&gt;
Bitcoin can run easily on the Tor network. &lt;br /&gt;
&lt;br /&gt;
=Tor installation &amp;amp; use=&lt;br /&gt;
&#039;&#039;todo explain: onion routing (how tor network helps to anonymize), encryption used, exit nodes, routers&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please follow the instructions provided with installation files and read the [http://www.torproject.org/download/download.html.en#warning list of warnings]. &#039;&#039;Tor doesn&#039;t magically anonymize all your traffic just because you install it.&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Down the page you can find examples how to configure applications to use Tor to anonymize the origin of your traffic.&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.torproject.org/docs/tor-doc-windows.html.en This] is a detailed installation guide for Windows. Before you setup Bitcoin or mIRC to use Tor, please install Tor and start in.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-tor-running.png]] On the taskbar of your compute you&#039;ll see a small green onion when Tor is running.&lt;br /&gt;
[[{{ns:file}}:20110109-bitcoin-mirc-vidalia.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note on 2022&#039;&#039;&#039;: This project that executes Tor service on Windows with the above interface, and display an icon on the taskbar is called Tor Vidalia Bundle and it&#039;s not maintained anymore, deprecated and not recommended. To see how to configure Tor service on Linx or Windows check [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]].&lt;br /&gt;
&lt;br /&gt;
= Bitcoin Core =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See also [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md Bitcoin Core instructions for Tor]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==GUI==&lt;br /&gt;
Once you have your Tor client up &amp;amp; running, you can configure your Bitcoin client to use it.&amp;lt;br /&amp;gt;&lt;br /&gt;
Select in menu Settings -&amp;gt; Options&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-options.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect through socks 4 proxy&amp;quot; with the address 127.0.0.1 and port 9050 (the Tor default port number)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-client-tor-as-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configuring an application to use Tor is also called to torify it.&lt;br /&gt;
(needs a brief howto here)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;the note about bitcoin-otc promote on a more appropriate place in this page? reference to trading and IRC&#039;&#039;&lt;br /&gt;
Conducting business using [[bitcoin-otc]] can be done more anonymously when directly connected to a Freenode IRC hidden service.&lt;br /&gt;
&lt;br /&gt;
==bitcoind==&lt;br /&gt;
&lt;br /&gt;
Run bitcoind with -proxy=127.0.0.1:9050 (or whatever your SocksPort is).&lt;br /&gt;
&lt;br /&gt;
bitcoind will detect that you are using a proxy on 9050 and will force the &amp;quot;nolisten&amp;quot; flag.  If you are not running tor on 9050, you need to set &amp;quot;nolisten&amp;quot; manually otherwise you will listen on your public IP and possibly reveal that you are running a node.&lt;br /&gt;
&lt;br /&gt;
=Hidden services=&lt;br /&gt;
[[Hidden Service| Hidden services]] run within the Tor network and can be connected to using the -connect= parameter to bitcoind so long as bitcoin is configured to use a Tor proxy. Bitcoin users do not need to use hidden services, since Tor can be used to increase anonymity of normal internet traffic, including bitcoin connections, but there are some technical reasons why hidden services may be beneficial; for more information see the Tor project&#039;s documentation.&lt;br /&gt;
&lt;br /&gt;
Services are listed at [[Fallback_Nodes#Tor_network]] along with instructions for using them.&lt;br /&gt;
&lt;br /&gt;
=Pooled Mining=&lt;br /&gt;
&lt;br /&gt;
Some mining pools are available as a hidden service on the tor network.  Any pool can be reached over tor.  The general methodology here is to tell your mining client to use your local Tor proxy.  This is client specific but there are some helpful hints.&lt;br /&gt;
&lt;br /&gt;
==Linux / BSD==&lt;br /&gt;
&lt;br /&gt;
Any client can have its traffic routed via Tor by using the torify command and invoking the miner with that.  Another method is to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
==Windows / OS X==&lt;br /&gt;
&lt;br /&gt;
It is possible to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
=mIRC=&lt;br /&gt;
&lt;br /&gt;
mIRC is a popular IRC client. This is a guide how to connect to Freenode IRC using Tor + SASL + mIRC.&amp;lt;br /&amp;gt;&lt;br /&gt;
==Register your nick with freenode nickserv&amp;lt;br /&amp;gt;==&lt;br /&gt;
Freenode only allows SASL authenticated users to connect to the onion IRC server. SASL authentication works only with a registered nickname.&amp;lt;br /&amp;gt;&lt;br /&gt;
Connect to Freenode IRC without using tor &amp;amp; execute&amp;lt;br /&amp;gt;&lt;br /&gt;
/msg nickserv register &amp;lt;password&amp;gt; &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
You will see something like this&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- An email containing nickname activation instructions has been sent to &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- If you do not complete registration within one day, your nickname will expire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To finish your nick registration go the provided email and copy/paste the command from e-mail to irc.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add SASL support to your mIRC installation&amp;lt;br /&amp;gt;==&lt;br /&gt;
Download the SASL.dll and sasl.mrc files and copy them to your mIRC installation directory&amp;lt;br /&amp;gt;&lt;br /&gt;
Load sasl.mrc script (Alt + R to open script editor, Ctrl + L to load file, browse to sasl.mrc, press OK or &amp;quot;save &amp;amp; exit&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-script-loaded.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Type /dialog -m SASL.main SASL.main to open the SASL connection manager.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-dialog.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Add Freenode entry.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-manager.png]][[{{ns:file}}:20110109-sasl-manager-network.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Network is Freenode.&amp;lt;br /&amp;gt;&lt;br /&gt;
Username and NS Password must match your nickserv reservation.&amp;lt;br /&amp;gt;&lt;br /&gt;
Auth Type can be PLAIN&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setup mIRC to use Tor&amp;lt;br /&amp;gt;==&lt;br /&gt;
Add the entry for Freenode onion IRC server&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-onion-irc-add.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configure mIRC to use a Proxy (your local Tor proxy)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-mirc-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Now you should be able to connect.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://www.bitcointalk.org/index.php?topic=2602 Bitcoin forum where this topic is discussed]&lt;br /&gt;
&lt;br /&gt;
=How Tor works=&lt;br /&gt;
Unlike Freenet, I2P, etc., Tor&#039;s security is very well-defined. While weaknesses do exist (described below), they have been known since Tor was created, and new weaknesses of significance are not expected.&lt;br /&gt;
&lt;br /&gt;
Tor sends TCP packets over 3 (normal) or 7 (hidden services) Tor relays. This is why it is so slow: your packet might have to go through 100 computers (counting Internet routers) before it reaches its destination. Tor uses multiple &#039;&#039;layers&#039;&#039; of encryption that are &#039;&#039;pulled away&#039;&#039; for each node. Hence the name &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;O&#039;&#039;&#039;nion &#039;&#039;&#039;R&#039;&#039;&#039;outer, which is always capitalized as &#039;&#039;&#039;Tor&#039;&#039;&#039;, and never TOR or t.o.r.&lt;br /&gt;
&lt;br /&gt;
Say that I want to connect to bitcoin.org through Tor. I first select three Tor relays that I know about. Then, I send a message to my ISP that looks like this:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of Relay1&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay1&amp;gt;&lt;br /&gt;
When Relay1 receives this, he decrypts the payload using his private key. The payload contains this:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay2&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay2&amp;gt;&lt;br /&gt;
Relay2 decrypts his payload:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay3&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay3&amp;gt;&lt;br /&gt;
Relay3 receives the real TCP payload, which he sends to the destination:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of destination&amp;gt;&lt;br /&gt;
 &amp;lt;Unencrypted payload&amp;gt;&lt;br /&gt;
The payload is not and can not be further encrypted by Tor. However, if the protocol itself uses encryption (HTTPS, SSH, etc.), the data will be encrypted. This means that the last node (the &#039;&#039;exit node&#039;&#039;) can see everything you do on HTTP sites, and can steal your passwords if they are transmitted unencrypted. Many people become exit nodes just so they can view this information -- Tor is much more dangerous than open WiFi for snooping!&lt;br /&gt;
&lt;br /&gt;
The encryption arrangement described above ensures that no single Tor node knows both the sender and the destination. Relay1 and your ISP know that you are using Tor and sending a packet at a certain time, but they don&#039;t know what you&#039;re sending or who you&#039;re sending to. Relay3 knows exactly what you&#039;re sending, but he can&#039;t determine who is sending it because Relay2 and Relay1 are blocking him. All three relays need to work together in order to conclusively connect the sender and the destination.&lt;br /&gt;
&lt;br /&gt;
However, Tor is weak to a &#039;&#039;timing attack&#039;&#039; that allows only two participants in certain positions to determine the sender with high accuracy. Consider this Tor connection:&lt;br /&gt;
 Sender &amp;lt;-&amp;gt; S-ISP &amp;lt;-&amp;gt; Relay1 &amp;lt;-&amp;gt; Relay2 &amp;lt;-&amp;gt; Relay3 &amp;lt;-&amp;gt; D-ISP &amp;lt;-&amp;gt; Destination&lt;br /&gt;
If the sender&#039;s ISP (S-ISP) and the destination are working together, they can record the size and times of packets sent and received. Over a large number of packets, they can determine with very high accuracy that the sender is, in fact, the person sending packets to the destination. This requires active surveillance or detailed logging by both sides. Relay1 can also perform the same role as S-ISP.&lt;br /&gt;
&lt;br /&gt;
Additionally, more configurations are possible if the underlying connection is not encrypted (normal HTTP, for example):&lt;br /&gt;
*S-ISP &amp;amp; Relay3&lt;br /&gt;
*Relay1 &amp;amp; Relay3&lt;br /&gt;
*S-ISP &amp;amp; D-ISP&lt;br /&gt;
*Relay1 &amp;amp; D-ISP&lt;br /&gt;
This second set can always see that the sender is connected to the destination, but they can only see what the sender is doing on the site if the connection is not encrypted. (Pathnames are encrypted in HTTPS.)&lt;br /&gt;
&lt;br /&gt;
Because the first relay (the &#039;&#039;entry node&#039;&#039;) is a weak point in the connection, Tor takes certain defensive measures. When you first start Tor, it chooses three &#039;&#039;entry guards&#039;&#039; that don&#039;t change for the entire time that you run Tor. You will always use one of those three unless one goes down. If all of those nodes are safe and your ISP is safe, then you are OK.&lt;br /&gt;
&lt;br /&gt;
These timing attacks are of special importance to Bitcoin because anyone can be the &amp;quot;destination&amp;quot; in a connection. Packets are broadcast to every peer in the Bitcoin network. This might allow your ISP alone to associate your transactions to you without much difficulty. However, a timing attack relies on receiving at least several dozen packets from the sender, so the &amp;quot;destination&amp;quot; might actually have to be one of your direct Bitcoin peers. It&#039;s not too difficult to flood the Bitcoin network with peers, though. Because of this attack, it is wise to use an [[EWallet]] instead of the Bitcoin client when using Tor.&lt;br /&gt;
&lt;br /&gt;
To discover Tor relays, Tor uses a centralized directory server model. There are nine authoritative directory servers. To become a relay, you register with one of these. The directory servers share their data and produce a &#039;&#039;network status consensus&#039;&#039; document every so often containing all Tor nodes. Tor clients don&#039;t connect directly to the authoritative directory servers -- they connect to one of many &#039;&#039;directory mirrors&#039;&#039;, which have a copy of the network status consensus. Since there is no peer-to-peer bootstrap mechanism in Tor, the entire network can be destroyed if half of the authoritative directory servers are destroyed, and the entire network can be subverted if half of the authoritative directory servers become evil.&lt;br /&gt;
&lt;br /&gt;
Hidden services allow both the sender and destination to remain anonymous. A hidden service connection is made like this:&lt;br /&gt;
*The destination tells several Tor relays to act as &#039;&#039;introduction points&#039;&#039; for the hidden service. The destination stays connected to all of these introduction points through a regular three-node Tor circuit.&lt;br /&gt;
*The destination registers these introduction points on a Tor DHT. The introduction points are associated with the first 16 characters of an encoded SHA-1 hash of the destination&#039;s key. This is the information in .onion addresses. The use of SHA-1 is a possible weakness.&lt;br /&gt;
*The sender creates a four-node Tor circuit. The fourth node is called the &#039;&#039;rendezvous point&#039;&#039;.&lt;br /&gt;
*The sender searches the DHT for the introduction points of the desired hidden service. The sender connects to one through a regular three-node Tor circuit and, through the introduction point, tells the destination about the rendezvous point he has chosen.&lt;br /&gt;
*The destination connects to the rendezvous point over a three-node Tor circuit. The sender and destination are now in contact over a seven-node connection.&lt;br /&gt;
&lt;br /&gt;
For clients, hidden services are more secure than encrypted Tor HTTPS connections because:&lt;br /&gt;
*If the destination remains anonymous, they are less likely to become controlled by an evil party.&lt;br /&gt;
*The destination&#039;s ISP isn&#039;t involved as they are in the HTTPS case. Only these configurations are possible for a timing attack:&lt;br /&gt;
**S-ISP &amp;amp; Destination&lt;br /&gt;
**Relay1 &amp;amp; Destination&lt;br /&gt;
&lt;br /&gt;
Running a hidden service is more dangerous, however. A simple intersection attack can be performed by the hidden service&#039;s ISP alone:&lt;br /&gt;
*Your Internet service is cut off.&lt;br /&gt;
*If the hidden service went down at that exact moment, you are unmasked.&lt;br /&gt;
The same sort of timing attacks as above are also possible.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.usenix.org/events/sec04/tech/full_papers/dingledine/dingledine_html/index.html Tor design paper] for more info.&lt;br /&gt;
&lt;br /&gt;
=Exchange Restrictions=&lt;br /&gt;
&lt;br /&gt;
Some exchanges will treat activity occurring through Tor with greater precautions.  For instance, the now-defunct Mt. Gox signup sheet read:&lt;br /&gt;
: Please be advised that accessing your account via the Tor network and/or public proxies may result in a temporary suspension of your account, and having to submit AML documents.&lt;br /&gt;
&lt;br /&gt;
=External Tor Hidden Services=&lt;br /&gt;
&lt;br /&gt;
* [irc://p4fsi4ockecnea7l.onion Freenode hidden service]&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
* [http://tor.eff.org/ Tor project]&lt;br /&gt;
* [http://www.torproject.org/docs/tor-doc-windows.html.en Tor installation guide - Windows]&lt;br /&gt;
* [https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorFAQ Tor FAQ]&lt;br /&gt;
* [http://www.torproject.org/about/overview.html.en how Tor works - overview]&lt;br /&gt;
* [http://freenode.net/irc_servers.shtml#tor Freenode over Tor info]&lt;br /&gt;
* [http://wiki.honk-honk.org/wiki/SaslServ#mIRC howto enable SASL in mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/SASL.dll SASL.dll library for mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/sasl.mrc sasl script for mIRC]&lt;br /&gt;
* [http://freenode.net/sasl/ Freenode resources on SASL]&lt;br /&gt;
&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69332</id>
		<title>Tor</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Tor&amp;diff=69332"/>
		<updated>2022-06-17T21:24:05Z</updated>

		<summary type="html">&lt;p&gt;Manu: Adding info about Tor Vidalia Bundle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Tor&#039;&#039;&#039; is a distributed &#039;onion&#039; network, that makes it more difficult for an adversary to track any one peer on the network.  Tor also is very useful to access the &#039;uncensored&#039; internet in countries such as China and Iran. Bitcoin&#039;s security model assumes that your node is well connected to the rest of the network, so even in less-censored countries using bitcoin over both Tor and clearnet can avoid being partitioned from the network by the internet service provider. Preserving privacy means not only hiding the content of messages, but also hiding who is talking to whom (traffic analysis). Tor provides anonymous connections that are strongly resistant to both eavesdropping and traffic analysis.&lt;br /&gt;
&lt;br /&gt;
Bitcoin can run easily on the Tor network. &lt;br /&gt;
&lt;br /&gt;
=Tor installation &amp;amp; use=&lt;br /&gt;
&#039;&#039;todo explain: onion routing (how tor network helps to anonymize), encryption used, exit nodes, routers&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please follow the instructions provided with installation files and read the [http://www.torproject.org/download/download.html.en#warning list of warnings]. &#039;&#039;Tor doesn&#039;t magically anonymize all your traffic just because you install it.&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Down the page you can find examples how to configure applications to use Tor to anonymize the origin of your traffic.&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.torproject.org/docs/tor-doc-windows.html.en This] is a detailed installation guide for Windows. Before you setup Bitcoin or mIRC to use Tor, please install Tor and start in.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-tor-running.png]] On the taskbar of your compute you&#039;ll see a small green onion when Tor is running.&lt;br /&gt;
[[{{ns:file}}:20110109-bitcoin-mirc-vidalia.png]]&lt;br /&gt;
&lt;br /&gt;
Note on 2022: This project that executes Tor service on Windows with the above interface, and display an icon on the taskbar is called Tor Vidalia Bundle and it&#039;s not maintained anymore, deprecated and not recommended. To see how to configure Tor service on Linx or Windows check [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]].&lt;br /&gt;
&lt;br /&gt;
= Bitcoin Core =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See also [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md Bitcoin Core instructions for Tor]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==GUI==&lt;br /&gt;
Once you have your Tor client up &amp;amp; running, you can configure your Bitcoin client to use it.&amp;lt;br /&amp;gt;&lt;br /&gt;
Select in menu Settings -&amp;gt; Options&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-options.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect through socks 4 proxy&amp;quot; with the address 127.0.0.1 and port 9050 (the Tor default port number)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110108-btc-client-tor-as-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configuring an application to use Tor is also called to torify it.&lt;br /&gt;
(needs a brief howto here)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;the note about bitcoin-otc promote on a more appropriate place in this page? reference to trading and IRC&#039;&#039;&lt;br /&gt;
Conducting business using [[bitcoin-otc]] can be done more anonymously when directly connected to a Freenode IRC hidden service.&lt;br /&gt;
&lt;br /&gt;
==bitcoind==&lt;br /&gt;
&lt;br /&gt;
Run bitcoind with -proxy=127.0.0.1:9050 (or whatever your SocksPort is).&lt;br /&gt;
&lt;br /&gt;
bitcoind will detect that you are using a proxy on 9050 and will force the &amp;quot;nolisten&amp;quot; flag.  If you are not running tor on 9050, you need to set &amp;quot;nolisten&amp;quot; manually otherwise you will listen on your public IP and possibly reveal that you are running a node.&lt;br /&gt;
&lt;br /&gt;
=Hidden services=&lt;br /&gt;
[[Hidden Service| Hidden services]] run within the Tor network and can be connected to using the -connect= parameter to bitcoind so long as bitcoin is configured to use a Tor proxy. Bitcoin users do not need to use hidden services, since Tor can be used to increase anonymity of normal internet traffic, including bitcoin connections, but there are some technical reasons why hidden services may be beneficial; for more information see the Tor project&#039;s documentation.&lt;br /&gt;
&lt;br /&gt;
Services are listed at [[Fallback_Nodes#Tor_network]] along with instructions for using them.&lt;br /&gt;
&lt;br /&gt;
=Pooled Mining=&lt;br /&gt;
&lt;br /&gt;
Some mining pools are available as a hidden service on the tor network.  Any pool can be reached over tor.  The general methodology here is to tell your mining client to use your local Tor proxy.  This is client specific but there are some helpful hints.&lt;br /&gt;
&lt;br /&gt;
==Linux / BSD==&lt;br /&gt;
&lt;br /&gt;
Any client can have its traffic routed via Tor by using the torify command and invoking the miner with that.  Another method is to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
==Windows / OS X==&lt;br /&gt;
&lt;br /&gt;
It is possible to set the http_proxy environment variable as some miners use libraries which support that.&lt;br /&gt;
&lt;br /&gt;
=mIRC=&lt;br /&gt;
&lt;br /&gt;
mIRC is a popular IRC client. This is a guide how to connect to Freenode IRC using Tor + SASL + mIRC.&amp;lt;br /&amp;gt;&lt;br /&gt;
==Register your nick with freenode nickserv&amp;lt;br /&amp;gt;==&lt;br /&gt;
Freenode only allows SASL authenticated users to connect to the onion IRC server. SASL authentication works only with a registered nickname.&amp;lt;br /&amp;gt;&lt;br /&gt;
Connect to Freenode IRC without using tor &amp;amp; execute&amp;lt;br /&amp;gt;&lt;br /&gt;
/msg nickserv register &amp;lt;password&amp;gt; &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
You will see something like this&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- An email containing nickname activation instructions has been sent to &amp;lt;email&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
-NickServ- If you do not complete registration within one day, your nickname will expire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To finish your nick registration go the provided email and copy/paste the command from e-mail to irc.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add SASL support to your mIRC installation&amp;lt;br /&amp;gt;==&lt;br /&gt;
Download the SASL.dll and sasl.mrc files and copy them to your mIRC installation directory&amp;lt;br /&amp;gt;&lt;br /&gt;
Load sasl.mrc script (Alt + R to open script editor, Ctrl + L to load file, browse to sasl.mrc, press OK or &amp;quot;save &amp;amp; exit&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-script-loaded.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Type /dialog -m SASL.main SASL.main to open the SASL connection manager.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-dialog.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Add Freenode entry.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-sasl-manager.png]][[{{ns:file}}:20110109-sasl-manager-network.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Network is Freenode.&amp;lt;br /&amp;gt;&lt;br /&gt;
Username and NS Password must match your nickserv reservation.&amp;lt;br /&amp;gt;&lt;br /&gt;
Auth Type can be PLAIN&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setup mIRC to use Tor&amp;lt;br /&amp;gt;==&lt;br /&gt;
Add the entry for Freenode onion IRC server&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-onion-irc-add.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Configure mIRC to use a Proxy (your local Tor proxy)&amp;lt;br /&amp;gt;&lt;br /&gt;
[[{{ns:file}}:20110109-mirc-proxy.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Now you should be able to connect.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://www.bitcointalk.org/index.php?topic=2602 Bitcoin forum where this topic is discussed]&lt;br /&gt;
&lt;br /&gt;
=How Tor works=&lt;br /&gt;
Unlike Freenet, I2P, etc., Tor&#039;s security is very well-defined. While weaknesses do exist (described below), they have been known since Tor was created, and new weaknesses of significance are not expected.&lt;br /&gt;
&lt;br /&gt;
Tor sends TCP packets over 3 (normal) or 7 (hidden services) Tor relays. This is why it is so slow: your packet might have to go through 100 computers (counting Internet routers) before it reaches its destination. Tor uses multiple &#039;&#039;layers&#039;&#039; of encryption that are &#039;&#039;pulled away&#039;&#039; for each node. Hence the name &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;O&#039;&#039;&#039;nion &#039;&#039;&#039;R&#039;&#039;&#039;outer, which is always capitalized as &#039;&#039;&#039;Tor&#039;&#039;&#039;, and never TOR or t.o.r.&lt;br /&gt;
&lt;br /&gt;
Say that I want to connect to bitcoin.org through Tor. I first select three Tor relays that I know about. Then, I send a message to my ISP that looks like this:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of Relay1&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay1&amp;gt;&lt;br /&gt;
When Relay1 receives this, he decrypts the payload using his private key. The payload contains this:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay2&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay2&amp;gt;&lt;br /&gt;
Relay2 decrypts his payload:&lt;br /&gt;
 Send to this Tor node: &amp;lt;Relay3&amp;gt;&lt;br /&gt;
 &amp;lt;Encrypted data for Relay3&amp;gt;&lt;br /&gt;
Relay3 receives the real TCP payload, which he sends to the destination:&lt;br /&gt;
 Send to this IP: &amp;lt;IP of destination&amp;gt;&lt;br /&gt;
 &amp;lt;Unencrypted payload&amp;gt;&lt;br /&gt;
The payload is not and can not be further encrypted by Tor. However, if the protocol itself uses encryption (HTTPS, SSH, etc.), the data will be encrypted. This means that the last node (the &#039;&#039;exit node&#039;&#039;) can see everything you do on HTTP sites, and can steal your passwords if they are transmitted unencrypted. Many people become exit nodes just so they can view this information -- Tor is much more dangerous than open WiFi for snooping!&lt;br /&gt;
&lt;br /&gt;
The encryption arrangement described above ensures that no single Tor node knows both the sender and the destination. Relay1 and your ISP know that you are using Tor and sending a packet at a certain time, but they don&#039;t know what you&#039;re sending or who you&#039;re sending to. Relay3 knows exactly what you&#039;re sending, but he can&#039;t determine who is sending it because Relay2 and Relay1 are blocking him. All three relays need to work together in order to conclusively connect the sender and the destination.&lt;br /&gt;
&lt;br /&gt;
However, Tor is weak to a &#039;&#039;timing attack&#039;&#039; that allows only two participants in certain positions to determine the sender with high accuracy. Consider this Tor connection:&lt;br /&gt;
 Sender &amp;lt;-&amp;gt; S-ISP &amp;lt;-&amp;gt; Relay1 &amp;lt;-&amp;gt; Relay2 &amp;lt;-&amp;gt; Relay3 &amp;lt;-&amp;gt; D-ISP &amp;lt;-&amp;gt; Destination&lt;br /&gt;
If the sender&#039;s ISP (S-ISP) and the destination are working together, they can record the size and times of packets sent and received. Over a large number of packets, they can determine with very high accuracy that the sender is, in fact, the person sending packets to the destination. This requires active surveillance or detailed logging by both sides. Relay1 can also perform the same role as S-ISP.&lt;br /&gt;
&lt;br /&gt;
Additionally, more configurations are possible if the underlying connection is not encrypted (normal HTTP, for example):&lt;br /&gt;
*S-ISP &amp;amp; Relay3&lt;br /&gt;
*Relay1 &amp;amp; Relay3&lt;br /&gt;
*S-ISP &amp;amp; D-ISP&lt;br /&gt;
*Relay1 &amp;amp; D-ISP&lt;br /&gt;
This second set can always see that the sender is connected to the destination, but they can only see what the sender is doing on the site if the connection is not encrypted. (Pathnames are encrypted in HTTPS.)&lt;br /&gt;
&lt;br /&gt;
Because the first relay (the &#039;&#039;entry node&#039;&#039;) is a weak point in the connection, Tor takes certain defensive measures. When you first start Tor, it chooses three &#039;&#039;entry guards&#039;&#039; that don&#039;t change for the entire time that you run Tor. You will always use one of those three unless one goes down. If all of those nodes are safe and your ISP is safe, then you are OK.&lt;br /&gt;
&lt;br /&gt;
These timing attacks are of special importance to Bitcoin because anyone can be the &amp;quot;destination&amp;quot; in a connection. Packets are broadcast to every peer in the Bitcoin network. This might allow your ISP alone to associate your transactions to you without much difficulty. However, a timing attack relies on receiving at least several dozen packets from the sender, so the &amp;quot;destination&amp;quot; might actually have to be one of your direct Bitcoin peers. It&#039;s not too difficult to flood the Bitcoin network with peers, though. Because of this attack, it is wise to use an [[EWallet]] instead of the Bitcoin client when using Tor.&lt;br /&gt;
&lt;br /&gt;
To discover Tor relays, Tor uses a centralized directory server model. There are nine authoritative directory servers. To become a relay, you register with one of these. The directory servers share their data and produce a &#039;&#039;network status consensus&#039;&#039; document every so often containing all Tor nodes. Tor clients don&#039;t connect directly to the authoritative directory servers -- they connect to one of many &#039;&#039;directory mirrors&#039;&#039;, which have a copy of the network status consensus. Since there is no peer-to-peer bootstrap mechanism in Tor, the entire network can be destroyed if half of the authoritative directory servers are destroyed, and the entire network can be subverted if half of the authoritative directory servers become evil.&lt;br /&gt;
&lt;br /&gt;
Hidden services allow both the sender and destination to remain anonymous. A hidden service connection is made like this:&lt;br /&gt;
*The destination tells several Tor relays to act as &#039;&#039;introduction points&#039;&#039; for the hidden service. The destination stays connected to all of these introduction points through a regular three-node Tor circuit.&lt;br /&gt;
*The destination registers these introduction points on a Tor DHT. The introduction points are associated with the first 16 characters of an encoded SHA-1 hash of the destination&#039;s key. This is the information in .onion addresses. The use of SHA-1 is a possible weakness.&lt;br /&gt;
*The sender creates a four-node Tor circuit. The fourth node is called the &#039;&#039;rendezvous point&#039;&#039;.&lt;br /&gt;
*The sender searches the DHT for the introduction points of the desired hidden service. The sender connects to one through a regular three-node Tor circuit and, through the introduction point, tells the destination about the rendezvous point he has chosen.&lt;br /&gt;
*The destination connects to the rendezvous point over a three-node Tor circuit. The sender and destination are now in contact over a seven-node connection.&lt;br /&gt;
&lt;br /&gt;
For clients, hidden services are more secure than encrypted Tor HTTPS connections because:&lt;br /&gt;
*If the destination remains anonymous, they are less likely to become controlled by an evil party.&lt;br /&gt;
*The destination&#039;s ISP isn&#039;t involved as they are in the HTTPS case. Only these configurations are possible for a timing attack:&lt;br /&gt;
**S-ISP &amp;amp; Destination&lt;br /&gt;
**Relay1 &amp;amp; Destination&lt;br /&gt;
&lt;br /&gt;
Running a hidden service is more dangerous, however. A simple intersection attack can be performed by the hidden service&#039;s ISP alone:&lt;br /&gt;
*Your Internet service is cut off.&lt;br /&gt;
*If the hidden service went down at that exact moment, you are unmasked.&lt;br /&gt;
The same sort of timing attacks as above are also possible.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.usenix.org/events/sec04/tech/full_papers/dingledine/dingledine_html/index.html Tor design paper] for more info.&lt;br /&gt;
&lt;br /&gt;
=Exchange Restrictions=&lt;br /&gt;
&lt;br /&gt;
Some exchanges will treat activity occurring through Tor with greater precautions.  For instance, the now-defunct Mt. Gox signup sheet read:&lt;br /&gt;
: Please be advised that accessing your account via the Tor network and/or public proxies may result in a temporary suspension of your account, and having to submit AML documents.&lt;br /&gt;
&lt;br /&gt;
=External Tor Hidden Services=&lt;br /&gt;
&lt;br /&gt;
* [irc://p4fsi4ockecnea7l.onion Freenode hidden service]&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
* [http://tor.eff.org/ Tor project]&lt;br /&gt;
* [http://www.torproject.org/docs/tor-doc-windows.html.en Tor installation guide - Windows]&lt;br /&gt;
* [https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorFAQ Tor FAQ]&lt;br /&gt;
* [http://www.torproject.org/about/overview.html.en how Tor works - overview]&lt;br /&gt;
* [http://freenode.net/irc_servers.shtml#tor Freenode over Tor info]&lt;br /&gt;
* [http://wiki.honk-honk.org/wiki/SaslServ#mIRC howto enable SASL in mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/SASL.dll SASL.dll library for mIRC]&lt;br /&gt;
* [http://honk-honk.org/SASL/sasl.mrc sasl script for mIRC]&lt;br /&gt;
* [http://freenode.net/sasl/ Freenode resources on SASL]&lt;br /&gt;
&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69331</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69331"/>
		<updated>2022-06-17T21:20:29Z</updated>

		<summary type="html">&lt;p&gt;Manu: Adding link to bitcoin.conf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to download Tor, we recommend the Windows Expert Bundle that contains just Tor and nothing else. This version, without the browser, is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then extract the contents on a folder in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and create a file called &#039;&#039;torrc&#039;&#039;. Open it with Notepad, type the content below and save the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open Windows PowerShell and navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and access the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an entry at Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if it Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see these then the Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
If you want to see on BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69330</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69330"/>
		<updated>2022-06-17T21:07:00Z</updated>

		<summary type="html">&lt;p&gt;Manu: adding info about Tor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
[[Bitcoin Core]] versions prior to 0.8.0 also could send [[IP Transactions]] to these nodes. If you included your bitcoin address in the &amp;quot;message&amp;quot; field, you might have had your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
BitcoinCore will automatically use Tor if it is available at default (&#039;&#039;127.0.0.1:9050&#039;&#039;), to use Bitcoin-Qt over Tor hidden services &#039;&#039;&#039;only&#039;&#039;&#039;, in a terminal/console enter:&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -onlynet=tor&lt;br /&gt;
&lt;br /&gt;
To use Bitcoin with one specific Tor node, run&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -connect=abcde.onion&lt;br /&gt;
, where abcde.onion needs to be substituted with one of the [[Fallback_Nodes#Tor_nodes|Tor nodes below]]. These parameters can be added to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]] to make them permanent.&lt;br /&gt;
&lt;br /&gt;
You can find detailed information on running clients and hidden services within Tor in the [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md documentation].&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2017-11-15.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.moneypot.com || [https://www.moneypot.com moneypot] || 212.47.228.216 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2015-09-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| node.bitcoin.xxx || [http://www.bitcoin.xxx Bitcoin.xxx] || 66.228.49.201 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-08-28 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.coinprism.com || [[Coinprism]] || 137.116.225.142 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-04-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.evolyn.net || Evolyn || 85.214.251.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-01-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 67.186.224.85 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2013-11-13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| archivum.info || Ferraro Ltd.|| 88.198.58.172 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| www.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.181 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ns2.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.182 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coin.soul-dev.com || Soul-Dev || || || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 91.121.205.50 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.bitgroup.cc || BitGroup || 198.211.116.191 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode2.bitgroup.cc || BitGroup || 162.243.120.138 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode3.bitgroup.cc || BitGroup || 95.85.8.237 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.xiro.co || Xiro Labs || 91.121.108.61 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 185.122.57.203 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coinno.de  || jaknam ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 82.165.44.44 || anonymous ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin1.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| blockchainnode.meulie.net || [[User:Evert|Evert]] ||  ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| fullnode.fybsg.com || Nagato ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 62.210.66.227 ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| homeplex.tk || [[User:Victorsueca|Victorsueca]] || 90.165.120.190 ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] || 91.121.83.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 2601:7:6680:2ac:4d29:40ff:7513:fcc7 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 11-13-2013 (MDY) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| caffeinator.net || [[User:Atrophy|Atrophy]] ||  ||  || {{Fallback Nodes/Node Up}} || 2013-05-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 2001:41d0:1:d632::1 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 2a06:8ec0:3::1:2e47 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||  No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 2001:bc8:c087:2001::1 ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] ||  ||  ||  ||  ||&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2018-10-24.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| nkf5e6b7pl4jfd4a.onion || BlueMatt || Up || 2018-10-24 || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;br /&gt;
* [https://getaddr.bitnodes.io/ Bitnodes project]&lt;br /&gt;
* [https://blockchain.info/connected-nodes Recently connected nodes at blockchain.info]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69329</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69329"/>
		<updated>2022-06-17T21:03:07Z</updated>

		<summary type="html">&lt;p&gt;Manu: Specifying Linux sessions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to bitcoin.conf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Linux Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to download Tor, we recommend the Windows Expert Bundle that contains just Tor and nothing else. This version, without the browser, is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then extract the contents on a folder in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and create a file called &#039;&#039;torrc&#039;&#039;. Open it with Notepad, type the content below and save the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open Windows PowerShell and navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and access the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an entry at Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if it Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see these then the Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
If you want to see on BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69328</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69328"/>
		<updated>2022-06-17T20:52:22Z</updated>

		<summary type="html">&lt;p&gt;Manu: Adding Windows instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, the instructions are presented at the end.&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to bitcoin.conf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
First you need to download Tor, we recommend the Windows Expert Bundle that contains just Tor and nothing else. This version, without the browser, is located [https://www.torproject.org/download/tor/ here on torproject.org].&lt;br /&gt;
&lt;br /&gt;
Then extract the contents on a folder in a place that your user can access, like &#039;&#039;%UserProfile%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On your Windows Explorer go to that folder and create a file called &#039;&#039;torrc&#039;&#039;. Open it with Notepad, type the content below and save the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open Windows PowerShell and navigate to the extracted folder (ex.: &#039;&#039;cd C:\Users\MyUserName\torExpertBundle&#039;&#039;), and access the folder &#039;&#039;Tor&#039;&#039; (ie.: &#039;&#039;cd Tor&#039;&#039;). Type &#039;&#039;dir&#039;&#039; you should see some files and &#039;&#039;tor.exe&#039;&#039; among them. So type the code below (remember to change the folder accordingly to where you extracted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tor.exe --service install -options -f &amp;quot;C:\Users\MyUserName\torExpertBundle\Tor\torrc&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an entry at Windows Services. Access Windows Services by pressing the Windows button and typing &#039;&#039;services&#039;&#039; then enter. You should see &#039;&#039;Tor Win32 Service (Provides an anonymous Internet communication system)&#039;&#039; on the list. Check if the status is &#039;&#039;Running&#039;&#039; and initialization type is &#039;&#039;Automatic&#039;&#039;. To verify if it Tor is really working as a service, open Windows PowerShell then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9050&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9050 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -aon | findstr &amp;quot;:9051&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see &#039;&#039;:9051 LISTENING&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;  TCP    127.0.0.1:9051         0.0.0.0:0              LISTENING       4000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see these then the Tor service is not working properly and this issue may be related to Windows permissions on the folder you extracted. To fix it go to where you extracted the Tor Expert Bundle and check the top folder &#039;&#039;Properties &amp;gt; Security &amp;gt; Advanced&#039;&#039; and verify if in the Permissions tab you have &#039;&#039;SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039;, if not click &#039;&#039;Add&#039;&#039;, click on the link &#039;&#039;Select a Secure Entity and type &#039;&#039;SERVICE&#039;&#039; (all letters in UPPERCASE) then hit enter and select &#039;&#039;Full Control&#039;&#039; (Try to start the Tor service again in Windows Services, if it doesn&#039;t work, try adding &#039;&#039;SYSTEM&#039;&#039; and &#039;&#039;LOCAL SERVICE&#039;&#039; with &#039;&#039;Full Control&#039;&#039; on folder permissions and repeat the tests above).&lt;br /&gt;
&lt;br /&gt;
If you want to see on BitcoinCore &#039;&#039;debug.log&#039;&#039; file what is happening on the communication with the Tor service, edit your &#039;&#039;bitcoin.conf&#039;&#039; file and add this line at the end &#039;&#039;debug=tor&#039;&#039;, then restart BitcoinCore. If everything is ok, you should see something like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;2022-06-13T21:45:32Z Config file arg: debug=&amp;quot;tor&amp;quot;&lt;br /&gt;
2022-06-13T21:45:44Z torcontrol thread start&lt;br /&gt;
2022-06-13T21:45:44Z tor: Reading cached private key from C:\YourBitcoinFolder\onion_v3_private_key&lt;br /&gt;
2022-06-13T21:45:44Z tor: Successfully connected!&lt;br /&gt;
2022-06-13T21:45:44Z tor: Connected to Tor version 0.4.x.x&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: COOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Supported authentication method: SAFECOOKIE&lt;br /&gt;
2022-06-13T21:45:44Z tor: Using SAFECOOKIE authentication, reading cookie authentication from C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\tor\control_auth_cookie&lt;br /&gt;
2022-06-13T21:45:44Z Leaving InitialBlockDownload (latching to false)&lt;br /&gt;
2022-06-13T21:45:44Z tor: SAFECOOKIE authentication challenge successful&lt;br /&gt;
2022-06-13T21:45:44Z tor: AUTHCHALLENGE ServerHash xxxxx ServerNonce xxxxx&lt;br /&gt;
2022-06-13T21:45:44Z tor: Authentication successful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69327</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69327"/>
		<updated>2022-06-17T19:01:23Z</updated>

		<summary type="html">&lt;p&gt;Manu: Bitcoin since v22 only supports Tor v3 addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, but the instructions would be rather different. (If you&#039;ve done it on Windows, consider adding the instructions to this page.)&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that since version 22.0 Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support Tor hidden service version 2 (ie. short onion addresses), only support Tor version 3 hidden services (Tor v3, ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to bitcoin.conf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69326</id>
		<title>Setting up a Tor hidden service</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Setting_up_a_Tor_hidden_service&amp;diff=69326"/>
		<updated>2022-06-17T18:52:22Z</updated>

		<summary type="html">&lt;p&gt;Manu: Changed max outgoing connections from 8 to 10 (two additional outbound connections since 0.19.0)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use a Bitcoin [[full node]] over Tor, then usually it will only be able to make outgoing connections. Therefore, you will only get a maximum of 10 total connections. This is fine, and is not something you usually need to worry about, but if your computer is often online and you want to be a big help to the network, you can run a Tor hidden service in order to accept incoming connections over Tor.&lt;br /&gt;
&lt;br /&gt;
Note that there is no need to forward port 8333 when using a Tor hidden service. The hidden service will cause most firewalls and NAT setups to be bypassed. For this reason, running a Tor hidden service is also a good idea if you want incoming connections but are for some reason unable to forward port 8333.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
These instructions are for Linux. It is possible to do on Windows, but the instructions would be rather different. (If you&#039;ve done it on Windows, consider adding the instructions to this page.)&lt;br /&gt;
&lt;br /&gt;
You need Tor (at least version 0.2.7.1). Figure out where your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt; file is (&amp;lt;tt&amp;gt;/etc/tor/torrc&amp;lt;/tt&amp;gt; is one possibility). This guide assumes default Tor settings. This guide assumes that Tor is running under the user and group &amp;lt;tt&amp;gt;tor&amp;lt;/tt&amp;gt;, which will usually be the case if you install Tor using your distro&#039;s package manager. Note that Bitcoin &#039;&#039;&#039;does not&#039;&#039;&#039; support hidden service version 3 (ie. long onion addresses).&lt;br /&gt;
&lt;br /&gt;
You need Bitcoin Core (or similar). For method 1, you need at least version 0.12.0. Find &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt; in your [[data directory]].&lt;br /&gt;
&lt;br /&gt;
=== Method 1 (recommended) ===&lt;br /&gt;
&lt;br /&gt;
This sets up an automatic hidden service that is initiated by Bitcoin Core. On the first startup of &amp;lt;tt&amp;gt;bitcoind&amp;lt;/tt&amp;gt; after configuring Bitcoin Core to use Tor ControlPort as follows, Bitcoin Core will generate a file called &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; in the [[data directory]]. The file &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; contains the private key needed to generate your unique &amp;lt;tt&amp;gt;XXXXXXX.onion&amp;lt;/tt&amp;gt; address. KEEP THIS SAFE. If someone copies this file they can run a server with your .onion address. Also, if you delete this file, the next time bitcoind loads it will generate a new key file and &amp;lt;tt&amp;gt;xxxxxxxx.onion&amp;lt;/tt&amp;gt; address. Note that while a malicious party cannot necessarily associate the server with you as a person, as long as your server has the same xxxx.onion address they will know it is run by the same person. For absolute security delete &amp;lt;tt&amp;gt;onion_private_key&amp;lt;/tt&amp;gt; at each reboot or some frequent interval.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ControlPort 9051&lt;br /&gt;
CookieAuthentication 1&lt;br /&gt;
CookieAuthFileGroupReadable 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to figure out what user bitcoind or bitcoin-qt is running as. Run the following command while Bitcoin is running:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps -eo user,group,comm |egrep &#039;bitcoind|bitcoin-qt&#039; |awk &#039;{print &amp;quot;Bitcoin user: &amp;quot; $1}&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Write down the reported user.&lt;br /&gt;
&lt;br /&gt;
Run the following command as root, which adds your Bitcoin user to the tor group. Replace BITCOIN_USER with the actual user name found above:&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -a -G tor BITCOIN_USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point your node will work over Tor without further configuartion. Bitcoin Core v0.12 and later automatically tries to connect to Tor via the ControlPort if &amp;lt;tt&amp;gt;listen=1&amp;lt;/tt&amp;gt; is set in &amp;lt;tt&amp;gt;bitcoin.conf&amp;lt;/tt&amp;gt;. By default Bitcoin Core will usually connect over the regular Internet as well as allow connections to and from the Tor hidden service. This will help other users who wish to submit transactions to the bitcoin network securely and obscurely, but transactions you submit could theoretically be traced back to your ip address. If you want Bitcoin Core to only connect via Tor (for anonymity), add these lines to bitcoin.conf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing so will make your specific bitcoind node arguably more secure because it will never have an unencrypted connection to another node, but if everyone used &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt; nobody on the onion bitcoin chain would be able to communicate with the clearnet chain. It is essential that some nodes access both clearnet and Tor. If you need to submit bitcoin transactions to the network with the highest level of obscurity, use &amp;lt;tt&amp;gt;onlynet=onion&amp;lt;/tt&amp;gt;. If you only wish to give access to your node to other Tor users, do not use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now restart Tor, and then Bitcoin Core. At some point during startup in &amp;lt;tt&amp;gt;~/.bitcoin/debug.log&amp;lt;/tt&amp;gt; you will see &lt;br /&gt;
&amp;lt;pre&amp;gt;tor: Got service ID XXXXXXXXXXX, advertising service XXXXXXXXXXX.onion:8333&amp;lt;/pre&amp;gt; This is the .onion address of your server. You should eventually get incoming connections via the hidden service.&lt;br /&gt;
&lt;br /&gt;
=== Method 2 ===&lt;br /&gt;
&lt;br /&gt;
This sets up a manual hidden service controlled by the tor daemon. The hidden service address (xxxx.onion). Note that as in method 1, your xxxxx.onion address will stay the same until you delete your key file. Someone tracking you can&#039;t necessarily associate the xxxx.onion with you, but they will know it is run by the same person or entity.&lt;br /&gt;
&lt;br /&gt;
Add these lines to your &amp;lt;tt&amp;gt;torrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;HiddenServiceDir /var/lib/tor/bitcoin-service/&lt;br /&gt;
HiddenServicePort 8333 127.0.0.1:8333&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Tor. As root, run &amp;lt;tt&amp;gt;cat /var/lib/tor/bitcoin-service/hostname&amp;lt;/tt&amp;gt;. Your onion address will be reported. If it didn&#039;t work, then probably your distro&#039;s version of Tor doesn&#039;t actually use &amp;lt;tt&amp;gt;/var/lib/tor&amp;lt;/tt&amp;gt; for this purpose. You should try to figure out the correct HiddenServiceDir location.&lt;br /&gt;
&lt;br /&gt;
In the following steps, replace ONION_ADDR with the onion address reported above.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t care about anonymity and are only looking to help the network, add the following lines to bitcoin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;onion=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
externalip=ONION_ADDR&lt;br /&gt;
discover=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will allow you to accept connections both via your onion address and your IP address (if you have port 8333 forwarded), and Tor will only be used for connections to and from Tor hidden services.&lt;br /&gt;
&lt;br /&gt;
If you care about anonymity, &#039;&#039;&#039;instead&#039;&#039;&#039; of the above, add the following lines to bitcoin.conf to use Tor for everything:&lt;br /&gt;
&amp;lt;pre&amp;gt;proxy=127.0.0.1:9050&lt;br /&gt;
listen=1&lt;br /&gt;
bind=127.0.0.1&lt;br /&gt;
externalip=ONION_ADDR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you additionally want Bitcoin Core to only connect out to Tor &#039;&#039;hidden services&#039;&#039;, also add this line (not particularly recommended):&lt;br /&gt;
&amp;lt;pre&amp;gt;onlynet=onion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart Bitcoin Core. You should eventually get incoming connections via your hidden service.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0032&amp;diff=69325</id>
		<title>BIP 0032</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0032&amp;diff=69325"/>
		<updated>2022-06-17T16:23:31Z</updated>

		<summary type="html">&lt;p&gt;Manu: Fixed derivation.png image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{bip}}&lt;br /&gt;
{{BipMoved|bip-0032.mediawiki}}&lt;br /&gt;
&lt;br /&gt;
RECENT CHANGES:&lt;br /&gt;
* (16 Apr 2013) Added private derivation for i ≥ 0x80000000 (less risk of parent private key leakage)&lt;br /&gt;
* (30 Apr 2013) Switched from multiplication by I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; to addition of I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; (faster, easier implementation)&lt;br /&gt;
* (25 May 2013) Added test vectors&lt;br /&gt;
* (15 Jan 2014) Rename keys with index ≥ 0x80000000 to hardened keys, and add explicit conversion functions.&lt;br /&gt;
* (24 Feb 2017) Added test vectors for hardened derivation with leading zeros&lt;br /&gt;
* (4 Nov 2020) Added new test vectors for hardened derivation with leading zeros&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 32&lt;br /&gt;
  Layer: Applications&lt;br /&gt;
  Title: Hierarchical Deterministic Wallets&lt;br /&gt;
  Author: Pieter Wuille &amp;lt;pieter.wuille@gmail.com&amp;gt;&lt;br /&gt;
  Comments-Summary: No comments yet.&lt;br /&gt;
  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0032&lt;br /&gt;
  Status: Final&lt;br /&gt;
  Type: Informational&lt;br /&gt;
  Created: 2012-02-11&lt;br /&gt;
  License: BSD-2-Clause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This document describes hierarchical deterministic wallets (or &amp;quot;HD Wallets&amp;quot;): wallets which can be shared partially or entirely with different systems, each with or without the ability to spend coins.&lt;br /&gt;
&lt;br /&gt;
The specification is intended to set a standard for deterministic wallets that can be interchanged between different clients. Although the wallets described here have many features, not all are required by supporting clients.&lt;br /&gt;
&lt;br /&gt;
The specification consists of two parts. In a first part, a system for deriving a tree of keypairs from a single seed is presented. The second part demonstrates how to build a wallet structure on top of such a tree.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This BIP is licensed under the 2-clause BSD license.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
The Bitcoin reference client uses randomly generated keys. In order to avoid the necessity for a backup after every transaction, (by default) 100 keys are cached in a pool of reserve keys. Still, these wallets are not intended to be shared and used on several systems simultaneously. They support hiding their private keys by using the wallet encrypt feature and not sharing the password, but such &amp;quot;neutered&amp;quot; wallets lose the power to generate public keys as well.&lt;br /&gt;
&lt;br /&gt;
Deterministic wallets do not require such frequent backups, and elliptic curve mathematics permit schemes where one can calculate the public keys without revealing the private keys. This permits for example a webshop business to let its webserver generate fresh addresses (public key hashes) for each order or for each customer, without giving the webserver access to the corresponding private keys (which are required for spending the received funds).&lt;br /&gt;
&lt;br /&gt;
However, deterministic wallets typically consist of a single &amp;quot;chain&amp;quot; of keypairs. The fact that there is only one chain means that sharing a wallet happens on an all-or-nothing basis. However, in some cases one only wants some (public) keys to be shared and recoverable. In the example of a webshop, the webserver does not need access to all public keys of the merchant&#039;s wallet; only to those addresses which are used to receive customer&#039;s payments, and not for example the change addresses that are generated when the merchant spends money. Hierarchical deterministic wallets allow such selective sharing by supporting multiple keypair chains, derived from a single root.&lt;br /&gt;
&lt;br /&gt;
==Specification: Key derivation==&lt;br /&gt;
&lt;br /&gt;
===Conventions===&lt;br /&gt;
&lt;br /&gt;
In the rest of this text we will assume the public key cryptography used in Bitcoin, namely elliptic curve cryptography using the field and curve parameters defined by secp256k1 (http://www.secg.org/sec2-v2.pdf). Variables below are either:&lt;br /&gt;
* Integers modulo the order of the curve (referred to as n).&lt;br /&gt;
* Coordinates of points on the curve.&lt;br /&gt;
* Byte sequences.&lt;br /&gt;
&lt;br /&gt;
Addition (+) of two coordinate pair is defined as application of the EC group operation.&lt;br /&gt;
Concatenation (||) is the operation of appending one byte sequence onto another.&lt;br /&gt;
&lt;br /&gt;
As standard conversion functions, we assume:&lt;br /&gt;
* point(p): returns the coordinate pair resulting from EC point multiplication (repeated application of the EC group operation) of the secp256k1 base point with the integer p.&lt;br /&gt;
* ser&amp;lt;sub&amp;gt;32&amp;lt;/sub&amp;gt;(i): serialize a 32-bit unsigned integer i as a 4-byte sequence, most significant byte first.&lt;br /&gt;
* ser&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(p): serializes the integer p as a 32-byte sequence, most significant byte first.&lt;br /&gt;
* ser&amp;lt;sub&amp;gt;P&amp;lt;/sub&amp;gt;(P): serializes the coordinate pair P = (x,y) as a byte sequence using SEC1&#039;s compressed form: (0x02 or 0x03) || ser&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(x), where the header byte depends on the parity of the omitted y coordinate.&lt;br /&gt;
* parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(p): interprets a 32-byte sequence as a 256-bit number, most significant byte first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Extended keys===&lt;br /&gt;
&lt;br /&gt;
In what follows, we will define a function that derives a number of child keys from a parent key. In order to prevent these from depending solely on the key itself, we extend both private and public keys first with an extra 256 bits of entropy. This extension, called the chain code, is identical for corresponding private and public keys, and consists of 32 bytes.&lt;br /&gt;
&lt;br /&gt;
We represent an extended private key as (k, c), with k the normal private key, and c the chain code. An extended public key is represented as (K, c), with K = point(k) and c the chain code.&lt;br /&gt;
&lt;br /&gt;
Each extended key has 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; normal child keys, and 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; hardened child keys. Each of these child keys has an index. The normal child keys use indices 0 through 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;-1. The hardened child keys use indices 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; through 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;-1. To ease notation for hardened key indices, a number i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt; represents i+2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Child key derivation (CKD) functions===&lt;br /&gt;
&lt;br /&gt;
Given a parent extended key and an index i, it is possible to compute the corresponding child extended key. The algorithm to do so depends on whether the child is a hardened key or not (or, equivalently, whether i ≥ 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;), and whether we&#039;re talking about private or public keys.&lt;br /&gt;
&lt;br /&gt;
====Private parent key &amp;amp;rarr; private child key====&lt;br /&gt;
&lt;br /&gt;
The function CKDpriv((k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;), i) &amp;amp;rarr; (k&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) computes a child extended private key from the parent extended private key:&lt;br /&gt;
* Check whether i ≥ 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; (whether the child is a hardened key).&lt;br /&gt;
** If so (hardened child): let I = HMAC-SHA512(Key = c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, Data = 0x00 || ser&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;) || ser&amp;lt;sub&amp;gt;32&amp;lt;/sub&amp;gt;(i)). (Note: The 0x00 pads the private key to make it 33 bytes long.)&lt;br /&gt;
** If not (normal child): let I = HMAC-SHA512(Key = c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, Data = ser&amp;lt;sub&amp;gt;P&amp;lt;/sub&amp;gt;(point(k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;)) || ser&amp;lt;sub&amp;gt;32&amp;lt;/sub&amp;gt;(i)).&lt;br /&gt;
* Split I into two 32-byte sequences, I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; and I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* The returned child key k&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) + k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt; (mod n).&lt;br /&gt;
* The returned chain code c&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* In case parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) ≥ n or k&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; = 0, the resulting key is invalid, and one should proceed with the next value for i. (Note: this has probability lower than 1 in 2&amp;lt;sup&amp;gt;127&amp;lt;/sup&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
The HMAC-SHA512 function is specified in [http://tools.ietf.org/html/rfc4231 RFC 4231].&lt;br /&gt;
&lt;br /&gt;
====Public parent key &amp;amp;rarr; public child key====&lt;br /&gt;
&lt;br /&gt;
The function CKDpub((K&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;), i) &amp;amp;rarr; (K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) computes a child extended public key from the parent extended public key. It is only defined for non-hardened child keys.&lt;br /&gt;
* Check whether i ≥ 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; (whether the child is a hardened key).&lt;br /&gt;
** If so (hardened child): return failure&lt;br /&gt;
** If not (normal child): let I = HMAC-SHA512(Key = c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, Data = ser&amp;lt;sub&amp;gt;P&amp;lt;/sub&amp;gt;(K&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;) || ser&amp;lt;sub&amp;gt;32&amp;lt;/sub&amp;gt;(i)).&lt;br /&gt;
* Split I into two 32-byte sequences, I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; and I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* The returned child key K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is point(parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;)) + K&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* The returned chain code c&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* In case parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) ≥ n or K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is the point at infinity, the resulting key is invalid, and one should proceed with the next value for i.&lt;br /&gt;
&lt;br /&gt;
====Private parent key &amp;amp;rarr; public child key====&lt;br /&gt;
&lt;br /&gt;
The function N((k, c)) &amp;amp;rarr; (K, c) computes the extended public key corresponding to an extended private key (the &amp;quot;neutered&amp;quot; version, as it removes the ability to sign transactions).&lt;br /&gt;
* The returned key K is point(k).&lt;br /&gt;
* The returned chain code c is just the passed chain code.&lt;br /&gt;
&lt;br /&gt;
To compute the public child key of a parent private key:&lt;br /&gt;
* N(CKDpriv((k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;), i)) (works always).&lt;br /&gt;
* CKDpub(N(k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;, c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;), i) (works only for non-hardened child keys).&lt;br /&gt;
The fact that they are equivalent is what makes non-hardened keys useful (one can derive child public keys of a given parent key without knowing any private key), and also what distinguishes them from hardened keys. The reason for not always using non-hardened keys (which are more useful) is security; see further for more information.&lt;br /&gt;
&lt;br /&gt;
====Public parent key &amp;amp;rarr; private child key====&lt;br /&gt;
&lt;br /&gt;
This is not possible.&lt;br /&gt;
&lt;br /&gt;
===The key tree===&lt;br /&gt;
&lt;br /&gt;
The next step is cascading several CKD constructions to build a tree. We start with one root, the master extended key m. By evaluating CKDpriv(m,i) for several values of i, we get a number of level-1 derived nodes. As each of these is again an extended key, CKDpriv can be applied to those as well.&lt;br /&gt;
&lt;br /&gt;
To shorten notation, we will write CKDpriv(CKDpriv(CKDpriv(m,3&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;),2),5) as m/3&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/2/5. Equivalently for public keys, we write CKDpub(CKDpub(CKDpub(M,3),2),5) as M/3/2/5. This results in the following identities:&lt;br /&gt;
* N(m/a/b/c) = N(m/a/b)/c = N(m/a)/b/c = N(m)/a/b/c = M/a/b/c.&lt;br /&gt;
* N(m/a&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/b/c) = N(m/a&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/b)/c = N(m/a&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;)/b/c.&lt;br /&gt;
However, N(m/a&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;) cannot be rewritten as N(m)/a&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;, as the latter is not possible.&lt;br /&gt;
&lt;br /&gt;
Each leaf node in the tree corresponds to an actual key, while the internal nodes correspond to the collections of keys that descend from them. The chain codes of the leaf nodes are ignored, and only their embedded private or public key is relevant. Because of this construction, knowing an extended private key allows reconstruction of all descendant private keys and public keys, and knowing an extended public key allows reconstruction of all descendant non-hardened public keys.&lt;br /&gt;
&lt;br /&gt;
===Key identifiers===&lt;br /&gt;
&lt;br /&gt;
Extended keys can be identified by the Hash160 (RIPEMD160 after SHA256) of the serialized ECDSA public key K, ignoring the chain code. This corresponds exactly to the data used in traditional Bitcoin addresses. It is not advised to represent this data in base58 format though, as it may be interpreted as an address that way (and wallet software is not required to accept payment to the chain key itself).&lt;br /&gt;
&lt;br /&gt;
The first 32 bits of the identifier are called the key fingerprint.&lt;br /&gt;
&lt;br /&gt;
===Serialization format===&lt;br /&gt;
&lt;br /&gt;
Extended public and private keys are serialized as follows:&lt;br /&gt;
* 4 byte: version bytes (mainnet: 0x0488B21E public, 0x0488ADE4 private; testnet: 0x043587CF public, 0x04358394 private)&lt;br /&gt;
* 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 derived keys, ....&lt;br /&gt;
* 4 bytes: the fingerprint of the parent&#039;s key (0x00000000 if master key)&lt;br /&gt;
* 4 bytes: child number. This is ser&amp;lt;sub&amp;gt;32&amp;lt;/sub&amp;gt;(i) for i in x&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; = x&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;/i, with x&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; the key being serialized. (0x00000000 if master key)&lt;br /&gt;
* 32 bytes: the chain code&lt;br /&gt;
* 33 bytes: the public key or private key data (ser&amp;lt;sub&amp;gt;P&amp;lt;/sub&amp;gt;(K) for public keys, 0x00 || ser&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(k) for private keys)&lt;br /&gt;
&lt;br /&gt;
This 78 byte structure can be encoded like other Bitcoin data in Base58, by first adding 32 checksum bits (derived from the double SHA-256 checksum), and then converting to the Base58 representation. This results in a Base58-encoded string of up to 112 characters. Because of the choice of the version bytes, the Base58 representation will start with &amp;quot;xprv&amp;quot; or &amp;quot;xpub&amp;quot; on mainnet, &amp;quot;tprv&amp;quot; or &amp;quot;tpub&amp;quot; on testnet.&lt;br /&gt;
&lt;br /&gt;
Note that the fingerprint of the parent only serves as a fast way to detect parent and child nodes in software, and software must be willing to deal with collisions. Internally, the full 160-bit identifier could be used.&lt;br /&gt;
&lt;br /&gt;
When importing a serialized extended public key, implementations must verify whether the X coordinate in the public key data corresponds to a point on the curve. If not, the extended public key is invalid.&lt;br /&gt;
&lt;br /&gt;
===Master key generation===&lt;br /&gt;
&lt;br /&gt;
The total number of possible extended keypairs is almost 2&amp;lt;sup&amp;gt;512&amp;lt;/sup&amp;gt;, but the produced keys are only 256 bits long, and offer about half of that in terms of security. Therefore, master keys are not generated directly, but instead from a potentially short seed value.&lt;br /&gt;
&lt;br /&gt;
* Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.&lt;br /&gt;
* Calculate I = HMAC-SHA512(Key = &amp;quot;Bitcoin seed&amp;quot;, Data = S)&lt;br /&gt;
* Split I into two 32-byte sequences, I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; and I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;.&lt;br /&gt;
* Use parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) as master secret key, and I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; as master chain code.&lt;br /&gt;
In case parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) is 0 or parse&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;(I&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;) ≥ n, the master key is invalid.&lt;br /&gt;
&lt;br /&gt;
[[File:BIP32-derivation.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Specification: Wallet structure==&lt;br /&gt;
&lt;br /&gt;
The previous sections specified key trees and their nodes. The next step is imposing a wallet structure on this tree. The layout defined in this section is a default only, though clients are encouraged to mimic it for compatibility, even if not all features are supported.&lt;br /&gt;
&lt;br /&gt;
===The default wallet layout===&lt;br /&gt;
&lt;br /&gt;
An HDW is organized as several &#039;accounts&#039;. Accounts are numbered, the default account (&amp;quot;&amp;quot;) being number 0. Clients are not required to support more than one account - if not, they only use the default account.&lt;br /&gt;
&lt;br /&gt;
Each account is composed of two keypair chains: an internal and an external one. The external keychain is used to generate new public addresses, while the internal keychain is used for all other operations (change addresses, generation addresses, ..., anything that doesn&#039;t need to be communicated). Clients that do not support separate keychains for these should use the external one for everything.&lt;br /&gt;
* m/i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/0/k corresponds to the k&#039;th keypair of the external chain of account number i of the HDW derived from master m.&lt;br /&gt;
* m/i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/k corresponds to the k&#039;th keypair of the internal chain of account number i of the HDW derived from master m.&lt;br /&gt;
&lt;br /&gt;
===Use cases===&lt;br /&gt;
&lt;br /&gt;
====Full wallet sharing: m====&lt;br /&gt;
&lt;br /&gt;
In cases where two systems need to access a single shared wallet, and both need to be able to perform spendings, one needs to share the master private extended key. Nodes can keep a pool of N look-ahead keys cached for external chains, to watch for incoming payments. The look-ahead for internal chains can be very small, as no gaps are to be expected here. An extra look-ahead could be active for the first unused account&#039;s chains - triggering the creation of a new account when used. Note that the name of the account will still need to be entered manually and cannot be synchronized via the block chain.&lt;br /&gt;
&lt;br /&gt;
====Audits: N(m/*)====&lt;br /&gt;
&lt;br /&gt;
In case an auditor needs full access to the list of incoming and outgoing payments, one can share all account public extended keys. This will allow the auditor to see all transactions from and to the wallet, in all accounts, but not a single secret key.&lt;br /&gt;
&lt;br /&gt;
====Per-office balances: m/i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
When a business has several independent offices, they can all use wallets derived from a single master. This will allow the headquarters to maintain a super-wallet that sees all incoming and outgoing transactions of all offices, and even permit moving money between the offices.&lt;br /&gt;
&lt;br /&gt;
====Recurrent business-to-business transactions: N(m/i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/0)====&lt;br /&gt;
&lt;br /&gt;
In case two business partners often transfer money, one can use the extended public key for the external chain of a specific account (M/i h/0) as a sort of &amp;quot;super address&amp;quot;, allowing frequent transactions that cannot (easily) be associated, but without needing to request a new address for each payment.&lt;br /&gt;
Such a mechanism could also be used by mining pool operators as variable payout address.&lt;br /&gt;
&lt;br /&gt;
====Unsecure money receiver: N(m/i&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/0)====&lt;br /&gt;
&lt;br /&gt;
When an unsecure webserver is used to run an e-commerce site, it needs to know public addresses that are used to receive payments. The webserver only needs to know the public extended key of the external chain of a single account. This means someone illegally obtaining access to the webserver can at most see all incoming payments but will not be able to steal the money, will not (trivially) be able to distinguish outgoing transactions, nor be able to see payments received by other webservers if there are several.&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
&lt;br /&gt;
To comply with this standard, a client must at least be able to import an extended public or private key, to give access to its direct descendants as wallet keys. The wallet structure (master/account/chain/subchain) presented in the second part of the specification is advisory only, but is suggested as a minimal structure for easy compatibility - even when no separate accounts or distinction between internal and external chains is made. However, implementations may deviate from it for specific needs; more complex applications may call for a more complex tree structure.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
&lt;br /&gt;
In addition to the expectations from the EC public-key cryptography itself:&lt;br /&gt;
* Given a public key K, an attacker cannot find the corresponding private key more efficiently than by solving the EC discrete logarithm problem (assumed to require 2&amp;lt;sup&amp;gt;128&amp;lt;/sup&amp;gt; group operations).&lt;br /&gt;
the intended security properties of this standard are:&lt;br /&gt;
* Given a child extended private key (k&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) and the integer i, an attacker cannot find the parent private key k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt; more efficiently than a 2&amp;lt;sup&amp;gt;256&amp;lt;/sup&amp;gt; brute force of HMAC-SHA512.&lt;br /&gt;
* Given any number (2 ≤ N ≤ 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;-1) of (index, extended private key) tuples (i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;,(k&amp;lt;sub&amp;gt;i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;)), with distinct i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;s, determining whether they are derived from a common parent extended private key (i.e., whether there exists a (k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;) such that for each j in (0..N-1) CKDpriv((k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;),i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;)=(k&amp;lt;sub&amp;gt;i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;i&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;)), cannot be done more efficiently than a 2&amp;lt;sup&amp;gt;256&amp;lt;/sup&amp;gt; brute force of HMAC-SHA512.&lt;br /&gt;
Note however that the following properties do not exist:&lt;br /&gt;
* Given a parent extended public key (K&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;) and a child public key (K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;), it is hard to find i.&lt;br /&gt;
* Given a parent extended public key (K&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;,c&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;) and a non-hardened child private key (k&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;), it is hard to find k&amp;lt;sub&amp;gt;par&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Implications===&lt;br /&gt;
&lt;br /&gt;
Private and public keys must be kept safe as usual. Leaking a private key means access to coins - leaking a public key can mean loss of privacy.&lt;br /&gt;
&lt;br /&gt;
Somewhat more care must be taken regarding extended keys, as these correspond to an entire (sub)tree of keys.&lt;br /&gt;
&lt;br /&gt;
One weakness that may not be immediately obvious, is that knowledge of a parent extended public key plus any non-hardened private key descending from it is equivalent to knowing the parent extended private key (and thus every private and public key descending from it). This means that extended public keys must be treated more carefully than regular public keys.&lt;br /&gt;
It is also the reason for the existence of hardened keys, and why they are used for the account level in the tree. This way, a leak of account-specific (or below) private key never risks compromising the master or other accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test Vectors==&lt;br /&gt;
&lt;br /&gt;
===Test vector 1===&lt;br /&gt;
&lt;br /&gt;
Seed (hex): 000102030405060708090a0b0c0d0e0f&lt;br /&gt;
* Chain m&lt;br /&gt;
** ext pub: xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8&lt;br /&gt;
** ext prv: xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw&lt;br /&gt;
** ext prv: xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1&lt;br /&gt;
** ext pub: xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ&lt;br /&gt;
** ext prv: xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/2&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5&lt;br /&gt;
** ext prv: xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptWmT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/2&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/2&lt;br /&gt;
** ext pub: xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV&lt;br /&gt;
** ext prv: xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/2&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/2/1000000000&lt;br /&gt;
** ext pub: xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy&lt;br /&gt;
** ext prv: xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76&lt;br /&gt;
&lt;br /&gt;
===Test vector 2===&lt;br /&gt;
&lt;br /&gt;
Seed (hex): fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542&lt;br /&gt;
* Chain m&lt;br /&gt;
** ext pub: xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB&lt;br /&gt;
** ext prv: xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U&lt;br /&gt;
* Chain m/0&lt;br /&gt;
** ext pub: xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH&lt;br /&gt;
** ext prv: xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt&lt;br /&gt;
* Chain m/0/2147483647&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a&lt;br /&gt;
** ext prv: xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9&lt;br /&gt;
* Chain m/0/2147483647&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1&lt;br /&gt;
** ext pub: xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon&lt;br /&gt;
** ext prv: xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef&lt;br /&gt;
* Chain m/0/2147483647&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/2147483646&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL&lt;br /&gt;
** ext prv: xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc&lt;br /&gt;
* Chain m/0/2147483647&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1/2147483646&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/2&lt;br /&gt;
** ext pub: xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt&lt;br /&gt;
** ext prv: xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j&lt;br /&gt;
&lt;br /&gt;
===Test vector 3===&lt;br /&gt;
&lt;br /&gt;
These vectors test for the retention of leading zeros. See [https://github.com/bitpay/bitcore-lib/issues/47 bitpay/bitcore-lib#47] and [https://github.com/iancoleman/bip39/issues/58 iancoleman/bip39#58] for more information.&lt;br /&gt;
&lt;br /&gt;
Seed (hex): 4b381541583be4423346c643850da4b320e46a87ae3d2a4e6da11eba819cd4acba45d239319ac14f863b8d5ab5a0d0c64d2e8a1e7d1457df2e5a3c51c73235be&lt;br /&gt;
* Chain m&lt;br /&gt;
** ext pub: xpub661MyMwAqRbcEZVB4dScxMAdx6d4nFc9nvyvH3v4gJL378CSRZiYmhRoP7mBy6gSPSCYk6SzXPTf3ND1cZAceL7SfJ1Z3GC8vBgp2epUt13&lt;br /&gt;
** ext prv: xprv9s21ZrQH143K25QhxbucbDDuQ4naNntJRi4KUfWT7xo4EKsHt2QJDu7KXp1A3u7Bi1j8ph3EGsZ9Xvz9dGuVrtHHs7pXeTzjuxBrCmmhgC6&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y&lt;br /&gt;
** ext prv: xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L&lt;br /&gt;
&lt;br /&gt;
===Test vector 4===&lt;br /&gt;
&lt;br /&gt;
These vectors test for the retention of leading zeros. See [https://github.com/btcsuite/btcutil/issues/172 btcsuite/btcutil#172] for more information.&lt;br /&gt;
&lt;br /&gt;
Seed (hex): 3ddd5602285899a946114506157c7997e5444528f3003f6134712147db19b678&lt;br /&gt;
* Chain m&lt;br /&gt;
** ext pub: xpub661MyMwAqRbcGczjuMoRm6dXaLDEhW1u34gKenbeYqAix21mdUKJyuyu5F1rzYGVxyL6tmgBUAEPrEz92mBXjByMRiJdba9wpnN37RLLAXa&lt;br /&gt;
** ext prv: xprv9s21ZrQH143K48vGoLGRPxgo2JNkJ3J3fqkirQC2zVdk5Dgd5w14S7fRDyHH4dWNHUgkvsvNDCkvAwcSHNAQwhwgNMgZhLtQC63zxwhQmRv&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub69AUMk3qDBi3uW1sXgjCmVjJ2G6WQoYSnNHyzkmdCHEhSZ4tBok37xfFEqHd2AddP56Tqp4o56AePAgCjYdvpW2PU2jbUPFKsav5ut6Ch1m&lt;br /&gt;
** ext prv: xprv9vB7xEWwNp9kh1wQRfCCQMnZUEG21LpbR9NPCNN1dwhiZkjjeGRnaALmPXCX7SgjFTiCTT6bXes17boXtjq3xLpcDjzEuGLQBM5ohqkao9G&lt;br /&gt;
* Chain m/0&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;/1&amp;lt;sub&amp;gt;H&amp;lt;/sub&amp;gt;&lt;br /&gt;
** ext pub: xpub6BJA1jSqiukeaesWfxe6sNK9CCGaujFFSJLomWHprUL9DePQ4JDkM5d88n49sMGJxrhpjazuXYWdMf17C9T5XnxkopaeS7jGk1GyyVziaMt&lt;br /&gt;
** ext prv: xprv9xJocDuwtYCMNAo3Zw76WENQeAS6WGXQ55RCy7tDJ8oALr4FWkuVoHJeHVAcAqiZLE7Je3vZJHxspZdFHfnBEjHqU5hG1Jaj32dVoS6XLT1&lt;br /&gt;
&lt;br /&gt;
===Test vector 5===&lt;br /&gt;
&lt;br /&gt;
These vectors test that invalid extended keys are recognized as invalid.&lt;br /&gt;
&lt;br /&gt;
* xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5fTtTQBm (pubkey version / prvkey mismatch)&lt;br /&gt;
* xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzFGTQQD3dC4H2D5GBj7vWvSQaaBv5cxi9gafk7NF3pnBju6dwKvH (prvkey version / pubkey mismatch)&lt;br /&gt;
* xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6Txnt3siSujt9RCVYsx4qHZGc62TG4McvMGcAUjeuwZdduYEvFn (invalid pubkey prefix 04)&lt;br /&gt;
* xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzFGpWnsj83BHtEy5Zt8CcDr1UiRXuWCmTQLxEK9vbz5gPstX92JQ (invalid prvkey prefix 04)&lt;br /&gt;
* xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6N8ZMMXctdiCjxTNq964yKkwrkBJJwpzZS4HS2fxvyYUA4q2Xe4 (invalid pubkey prefix 01)&lt;br /&gt;
* xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzFAzHGBP2UuGCqWLTAPLcMtD9y5gkZ6Eq3Rjuahrv17fEQ3Qen6J (invalid prvkey prefix 01)&lt;br /&gt;
* xprv9s2SPatNQ9Vc6GTbVMFPFo7jsaZySyzk7L8n2uqKXJen3KUmvQNTuLh3fhZMBoG3G4ZW1N2kZuHEPY53qmbZzCHshoQnNf4GvELZfqTUrcv (zero depth with non-zero parent fingerprint)&lt;br /&gt;
* xpub661no6RGEX3uJkY4bNnPcw4URcQTrSibUZ4NqJEw5eBkv7ovTwgiT91XX27VbEXGENhYRCf7hyEbWrR3FewATdCEebj6znwMfQkhRYHRLpJ (zero depth with non-zero parent fingerprint)&lt;br /&gt;
* xprv9s21ZrQH4r4TsiLvyLXqM9P7k1K3EYhA1kkD6xuquB5i39AU8KF42acDyL3qsDbU9NmZn6MsGSUYZEsuoePmjzsB3eFKSUEh3Gu1N3cqVUN (zero depth with non-zero index)&lt;br /&gt;
* xpub661MyMwAuDcm6CRQ5N4qiHKrJ39Xe1R1NyfouMKTTWcguwVcfrZJaNvhpebzGerh7gucBvzEQWRugZDuDXjNDRmXzSZe4c7mnTK97pTvGS8 (zero depth with non-zero index)&lt;br /&gt;
* DMwo58pR1QLEFihHiXPVykYB6fJmsTeHvyTp7hRThAtCX8CvYzgPcn8XnmdfHGMQzT7ayAmfo4z3gY5KfbrZWZ6St24UVf2Qgo6oujFktLHdHY4 (unknown extended key version)&lt;br /&gt;
* DMwo58pR1QLEFihHiXPVykYB6fJmsTeHvyTp7hRThAtCX8CvYzgPcn8XnmdfHPmHJiEDXkTiJTVV9rHEBUem2mwVbbNfvT2MTcAqj3nesx8uBf9 (unknown extended key version)&lt;br /&gt;
* xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzF93Y5wvzdUayhgkkFoicQZcP3y52uPPxFnfoLZB21Teqt1VvEHx (private key 0 not in 1..n-1)&lt;br /&gt;
* xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzFAzHGBP2UuGCqWLTAPLcMtD5SDKr24z3aiUvKr9bJpdrcLg1y3G (private key n not in 1..n-1)&lt;br /&gt;
* xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6Q5JXayek4PRsn35jii4veMimro1xefsM58PgBMrvdYre8QyULY (invalid pubkey 020000000000000000000000000000000000000000000000000000000000000007)&lt;br /&gt;
* xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHL (invalid checksum)&lt;br /&gt;
&lt;br /&gt;
==Acknowledgements==&lt;br /&gt;
&lt;br /&gt;
* Gregory Maxwell for the original idea of type-2 deterministic wallets, and many discussions about it.&lt;br /&gt;
* Alan Reiner for the implementation of this scheme in Armory, and the suggestions that followed from that.&lt;br /&gt;
* Eric Lombrozo for reviewing and revising this BIP.&lt;br /&gt;
* Mike Caldwell for the version bytes to obtain human-recognizable Base58 strings.&lt;/div&gt;</summary>
		<author><name>Manu</name></author>
	</entry>
</feed>