<?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=Darosior</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=Darosior"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Darosior"/>
	<updated>2026-04-12T02:52:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=70532</id>
		<title>Wladimir van der Laan</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=70532"/>
		<updated>2025-01-15T21:23:52Z</updated>

		<summary type="html">&lt;p&gt;Darosior: My bad i mistook these dates for the dates he was maintainer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox person&lt;br /&gt;
|name=Wladimir van der Laan&lt;br /&gt;
|names=Wlad, laanwj&lt;br /&gt;
|active=2011–present&lt;br /&gt;
|residence=Eindhoven, The Netherlands&lt;br /&gt;
|knownfor=Contributions to [[Bitcoin Core]]&lt;br /&gt;
|notableworks=[[Visucore]]&amp;lt;!-- was bitcoin-qt started by laan? --&amp;gt;&lt;br /&gt;
|twitter=orionwl&lt;br /&gt;
}}&#039;&#039;&#039;Wladimir J. van der Laan&#039;&#039;&#039; is a past [[Core maintainer|maintainer]] of [[Bitcoin Core]].&lt;br /&gt;
&lt;br /&gt;
On April 7, 2014, [[Gavin Andresen]] stepped down from the position of Core maintainer and nominated Laan as his successor.&amp;lt;ref&amp;gt;{{cite web|title=Bitcoin Core Maintainer: Wladimir van der Laan|work=[[Bitcoin Foundation]]|date=7 April 2014|url=https://bitcoinfoundation.org/2014/04/bitcoin-core-maintainer-wladimir-van-der-laan/|author=[[Gavin Andresen|Andresen, Gavin]]|accessdate=19 September 2014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On January 21st, 2021, Wlad announced that he would be delegating his tasks.&amp;lt;ref&amp;gt;[https://laanwj.github.io/2021/01/21/decentralize.html The Widening Gyre on Lannwj&#039;s blog]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wladimir gradualy stepped down in the following 2 years. On February 2023 Wladimir removed his own merge privileges. &amp;lt;ref&amp;gt;[https://github.com/bitcoin/bitcoin/pull/27054 Bitcoin Core pull request #27054]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
{{s-start|Bitcoin [[Core maintainer]]|[[Gavin Andresen]]|2014–2022|No more &amp;quot;lead maintainer&amp;quot;}}&lt;br /&gt;
{{developers}}{{stub}}&lt;br /&gt;
[[Category:Core committers]]&lt;br /&gt;
[[Category:Core developers]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=70531</id>
		<title>Wladimir van der Laan</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=70531"/>
		<updated>2025-01-15T21:22:12Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox person&lt;br /&gt;
|name=Wladimir van der Laan&lt;br /&gt;
|names=Wlad, laanwj&lt;br /&gt;
|active=2011–2023&lt;br /&gt;
|residence=Eindhoven, The Netherlands&lt;br /&gt;
|knownfor=Contributions to [[Bitcoin Core]]&lt;br /&gt;
|notableworks=[[Visucore]]&amp;lt;!-- was bitcoin-qt started by laan? --&amp;gt;&lt;br /&gt;
|twitter=orionwl&lt;br /&gt;
}}&#039;&#039;&#039;Wladimir J. van der Laan&#039;&#039;&#039; is a past [[Core maintainer|maintainer]] of [[Bitcoin Core]].&lt;br /&gt;
&lt;br /&gt;
On April 7, 2014, [[Gavin Andresen]] stepped down from the position of Core maintainer and nominated Laan as his successor.&amp;lt;ref&amp;gt;{{cite web|title=Bitcoin Core Maintainer: Wladimir van der Laan|work=[[Bitcoin Foundation]]|date=7 April 2014|url=https://bitcoinfoundation.org/2014/04/bitcoin-core-maintainer-wladimir-van-der-laan/|author=[[Gavin Andresen|Andresen, Gavin]]|accessdate=19 September 2014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On January 21st, 2021, Wlad announced that he would be delegating his tasks.&amp;lt;ref&amp;gt;[https://laanwj.github.io/2021/01/21/decentralize.html The Widening Gyre on Lannwj&#039;s blog]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wladimir gradualy stepped down in the following 2 years. On February 2023 Wladimir removed his own merge privileges. &amp;lt;ref&amp;gt;[https://github.com/bitcoin/bitcoin/pull/27054 Bitcoin Core pull request #27054]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
{{s-start|Bitcoin [[Core maintainer]]|[[Gavin Andresen]]|2014–2022|No more &amp;quot;lead maintainer&amp;quot;}}&lt;br /&gt;
{{developers}}{{stub}}&lt;br /&gt;
[[Category:Core committers]]&lt;br /&gt;
[[Category:Core developers]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=69977</id>
		<title>Wladimir van der Laan</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Wladimir_van_der_Laan&amp;diff=69977"/>
		<updated>2023-12-22T15:59:10Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Wladimir stepped back from the lead maintainer role in 2022 and revoked their maintainership entirely in early 2023.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox person&lt;br /&gt;
|name=Wladimir van der Laan&lt;br /&gt;
|names=Wlad, laanwj&lt;br /&gt;
|active=2011–present&lt;br /&gt;
|residence=Eindhoven, The Netherlands&lt;br /&gt;
|knownfor=Contributions to [[Bitcoin Core]]&lt;br /&gt;
|notableworks=[[Visucore]]&amp;lt;!-- was bitcoin-qt started by laan? --&amp;gt;&lt;br /&gt;
|twitter=orionwl&lt;br /&gt;
}}&#039;&#039;&#039;Wladimir J. van der Laan&#039;&#039;&#039; is the current [[Core maintainer|maintainer]] of [[Bitcoin Core]].&lt;br /&gt;
&lt;br /&gt;
On April 7, 2014, [[Gavin Andresen]] stepped down from the position of Core maintainer and nominated Laan as his successor.&amp;lt;ref&amp;gt;{{cite web|title=Bitcoin Core Maintainer: Wladimir van der Laan|work=[[Bitcoin Foundation]]|date=7 April 2014|url=https://bitcoinfoundation.org/2014/04/bitcoin-core-maintainer-wladimir-van-der-laan/|author=[[Gavin Andresen|Andresen, Gavin]]|accessdate=19 September 2014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On January 21st, 2021, Wlad announced that he would be delegating his tasks.&amp;lt;ref&amp;gt;[https://laanwj.github.io/2021/01/21/decentralize.html The Widening Gyre on Lannwj&#039;s blog]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wladimir gradualy stepped down in the following 2 years. On February 2023 Wladimir revoked their merge privileges. &amp;lt;ref&amp;gt;[https://github.com/bitcoin/bitcoin/pull/27054 Bitcoin Core pull request #27054]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
{{s-start|Bitcoin [[Core maintainer]]|[[Gavin Andresen]]|2014–2022|No more &amp;quot;lead maintainer&amp;quot;}}&lt;br /&gt;
{{developers}}{{stub}}&lt;br /&gt;
[[Category:Core committers]]&lt;br /&gt;
[[Category:Core developers]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=69665</id>
		<title>Bech32 adoption</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=69665"/>
		<updated>2023-04-08T15:53:28Z</updated>

		<summary type="html">&lt;p&gt;Darosior: /* Software Wallets */&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 upcoming [[Taproot]] softfork will add another output type called Pay to Taproot (P2TR). P2TR outputs and future native segwit versions will be using 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}} || {{Evaluating|Dependent on BitcoinJ}} || {{Evaluating|??}} || 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}} || {{No}} || {{No}} || Tested as of v0.12.1-beta (October 2022). Tracking issue: https://github.com/breez/breezmobile/issues/946. As of April 2023, the issue is still open.&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;
| 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;
| 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}} || {{Evaluating|Support in iOS, but not Android}} || {{No}} ||&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}} || {{Evaluating|??}} || 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}}  || {{Planned}} || Work already in progress&lt;br /&gt;
|-&lt;br /&gt;
| Ballet + app || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SeedSigner || {{Yes}} || {{Yes}} || {{Planned}} || {{Evaluating|??}} ||&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;
&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;
| 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}} || {{Evaluating|??}} || {{Evaluating|??}} || https://anycoindirect.eu/en/news/details/segwit-activated&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}} || {{Planned}} || {{No}} || https://twitter.com/paoloardoino/status/1460620727342796800&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}} || {{Evaluating|??}} || {{Evaluating|??}} || https://twitter.com/Bitso/status/1203784055340314624&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;
| 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}} || {{Yes}} || {{No}} ||&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}} || {{Evaluating|??}} || {{Evaluating|??}} || https://coinmate.io/blog/important-coinmate-update/&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;
| FTX US Derivatives || {{Yes}} || {{Yes}} || {{Yes}} || {{Evaluating|??}} || Formerly LedgerX&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}} || {{Yes}} || {{No}} || {{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}} || {{Planned|Planned}} || {{Evaluating|??}} || https://www.luno.com/blog/en/post/luno-launches-support-for-bech32-addresses&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;
| 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;
| 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}} || {{No}} || {{No}} || https://twitter.com/BTCBoromir/status/1460373287792521232&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;
| Walltime || {{Yes}} || {{Yes}} || {{Evaluating|??}} || {{Evaluating|??}} || https://walltime.info&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)}} || {{Planned}} || {{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;
&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;
| [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}} || {{Acceptable|Supported but needs manual involvement}} || https://github.com/bitcoinjs/bitcoinjs-lib/issues/1522#issuecomment-887468902, https://twitter.com/junderwood4649/status/1459006392086372355&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>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68436</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68436"/>
		<updated>2021-02-16T23:06:55Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Actually nickler is fine with LOT=true&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; preferences =&lt;br /&gt;
&lt;br /&gt;
This table summarizes wether each person is fine with setting &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. [https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c source]&lt;br /&gt;
&lt;br /&gt;
This only concerns the first deployment, those in favor of a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; should a first attempt to activate&lt;br /&gt;
with &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; fail are counted as &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; here.&lt;br /&gt;
&lt;br /&gt;
Some may be fine with both choices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| roasbeef&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| elichai2&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;19&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;26&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68435</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68435"/>
		<updated>2021-02-16T22:59:41Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add Elichai Turkel opinion for ##taproot-activation :  &amp;quot;23:51 &amp;lt;elichai2&amp;gt; achow101: feel free to also add me as prefer false but OK with both.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; preferences =&lt;br /&gt;
&lt;br /&gt;
This table summarizes wether each person is fine with setting &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. [https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c source]&lt;br /&gt;
&lt;br /&gt;
This only concerns the first deployment, those in favor of a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; should a first attempt to activate&lt;br /&gt;
with &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; fail are counted as &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; here.&lt;br /&gt;
&lt;br /&gt;
Some may be fine with both choices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| roasbeef&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| elichai2&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;18&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;26&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68434</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68434"/>
		<updated>2021-02-16T22:45:41Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add roasbeef&amp;#039;s opinion from ##taproot-activation : &amp;quot;23:20 &amp;lt;roasbeef&amp;gt; uasf is just deterrence, just having the option is enough&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; preferences =&lt;br /&gt;
&lt;br /&gt;
This table summarizes wether each person is fine with setting &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. [https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c source]&lt;br /&gt;
&lt;br /&gt;
This only concerns the first deployment, those in favor of a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; should a first attempt to activate&lt;br /&gt;
with &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; fail are counted as &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; here.&lt;br /&gt;
&lt;br /&gt;
Some may be fine with both choices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| roasbeef&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;17&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;25&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68433</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68433"/>
		<updated>2021-02-16T22:25:05Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; preferences =&lt;br /&gt;
&lt;br /&gt;
This table summarizes wether each person is fine with setting &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. [https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c source]&lt;br /&gt;
&lt;br /&gt;
This only concerns the first deployment, those in favor of a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; should a first attempt to activate&lt;br /&gt;
with &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; fail are counted as &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; here.&lt;br /&gt;
&lt;br /&gt;
Some may be fine with both choices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;17&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;24&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68432</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68432"/>
		<updated>2021-02-16T22:23:51Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; preferences =&lt;br /&gt;
&lt;br /&gt;
This table summarizes wether each person is fine with setting &amp;lt;code&amp;gt;lockinontimeout&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This only concerns the first deployment, those in favor of a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; should a first attempt to activate&lt;br /&gt;
with &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; fail are counted as &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; here.&lt;br /&gt;
&lt;br /&gt;
Some may be fine with both choices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;17&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;24&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68431</id>
		<title>Taproot activation proposal 202102</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposal_202102&amp;diff=68431"/>
		<updated>2021-02-16T22:18:59Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expected timeline:&lt;br /&gt;
* 2021 March 17-31: Full node software released with Taproot activation deployment.&lt;br /&gt;
* 2021 July 23: Economic majority has upgraded. Miner signalling begins to indicate preparedness to protect the economic minority who haven’t upgraded yet.&lt;br /&gt;
* 2 weeks after 90% of hashrate signals: Taproot activates. Economic majority enforces, while miners protect the economic minority until they upgrade as well.&lt;br /&gt;
* 2022 August 1: Entire economy has upgraded.&lt;br /&gt;
&lt;br /&gt;
For explanations of the various parameters, see BIP 8.&lt;br /&gt;
&lt;br /&gt;
* name=taproot&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for Signet and tests), no reason to change (BIP8’s “bipN” recommendation not applicable due to 2 Taproot BIPs)&lt;br /&gt;
&lt;br /&gt;
* bit=2&lt;br /&gt;
** Rationale: Already used in Bitcoin Core (for tests), no reason to change&lt;br /&gt;
** Note: Bit 2 is unaffected by ongoing miner ASICBoost false-bit-spam.&lt;br /&gt;
&lt;br /&gt;
* startheight=693504 (~2021 July 23rd)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** Earliest activation (MASF) takes 4 weeks, coinciding with Bitcoin Core 0.20 Maintenance End. Therefore, a backport of Taproot to 0.20 (complex and would need validation) can be avoided.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** ~26 weeks (6.5 months) between meeting and earliest activation.&lt;br /&gt;
*** 1.5 months to prepare and release activation + 5 months for the economic majority to upgrade.&lt;br /&gt;
&lt;br /&gt;
* timeoutheight=745920 (~2022 July 22nd / 1 year after signalling begins)&lt;br /&gt;
** Rationale:&lt;br /&gt;
*** Plenty of time and community support.&lt;br /&gt;
*** Remaining economic minority can be expected to upgrade within a year.&lt;br /&gt;
&lt;br /&gt;
* lockinontime= NO CONSENSUS WAS REACHED&lt;br /&gt;
&lt;br /&gt;
* threshold=1815 (90%)&lt;br /&gt;
** Rationale 1:&lt;br /&gt;
*** High enough to ensure the Taproot chain always has a lead ahead of any invalid chains.&lt;br /&gt;
** Rationale 2:&lt;br /&gt;
*** Low enough to avoid a sudden malicious stall of activation by rented or unknown miners.&lt;br /&gt;
*** 90% of hashrate has already committed to work toward Taproot activation.&lt;br /&gt;
&lt;br /&gt;
== `lockinontimeout` preferences&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Nickname&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=true&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;LOT=false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| belcher&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| benthecarman&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| waxwing&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| hsjoberg&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fjahr&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| devrandom&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| darosior&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| andrewtoth&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| luke-jr&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| enzy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| viaj3ro&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| achow101&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| proofofkeags&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| nickler&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| satosaurian&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| eeb77f7f26eee&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| gg34&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| harding&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| jonatack&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| pox&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Billy&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| evankaloudis&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| virtu&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| criley&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| prayank&lt;br /&gt;
| X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| debit&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Murch&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| ghost43&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TOTALS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;17&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;24&#039;&#039;&#039;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=68300</id>
		<title>Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=68300"/>
		<updated>2020-12-14T19:59:23Z</updated>

		<summary type="html">&lt;p&gt;Darosior: /* version */ Add missing service flags. XTHIN was never really a thing, but listed for hysterical raisins.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page &#039;&#039;describes&#039;&#039; the behavior of the [[Original Bitcoin client|reference client]]. The Bitcoin protocol is specified by the behavior of the reference client, not by this page. In particular, while this page is quite complete in describing the [[network]] protocol, it does not attempt to list all of the rules for block or transaction validity.&lt;br /&gt;
&lt;br /&gt;
Type names used in this documentation are from the C99 standard.&lt;br /&gt;
&lt;br /&gt;
For protocol used in mining, see [[getblocktemplate]].&lt;br /&gt;
&lt;br /&gt;
==Common standards==&lt;br /&gt;
&lt;br /&gt;
=== Hashes ===&lt;br /&gt;
&lt;br /&gt;
Usually, when a hash is computed within bitcoin, it is computed twice. Most of the time [http://en.wikipedia.org/wiki/SHA-2 SHA-256] hashes are used, however [http://en.wikipedia.org/wiki/RIPEMD RIPEMD-160] is also used when a shorter hash is desirable (for example when creating a bitcoin address).&lt;br /&gt;
&lt;br /&gt;
Example of double-SHA-256 encoding of string &amp;quot;hello&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)&lt;br /&gt;
 9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)&lt;br /&gt;
&lt;br /&gt;
For bitcoin addresses (RIPEMD-160) this would give:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round is sha-256)&lt;br /&gt;
 b6a9c8c230722b7c748331a8b450f05566dc7d0f (with ripemd-160)&lt;br /&gt;
&lt;br /&gt;
=== Merkle Trees ===&lt;br /&gt;
&lt;br /&gt;
Merkle trees are binary trees of hashes. Merkle trees in bitcoin use a &#039;&#039;&#039;double&#039;&#039;&#039; SHA-256, the SHA-256 hash of the SHA-256 hash of something.&lt;br /&gt;
&lt;br /&gt;
If, when forming a row in the tree (other than the root of the tree), it would have an odd number of elements, the final double-hash is duplicated to ensure that the row has an even number of hashes.&lt;br /&gt;
&lt;br /&gt;
First form the bottom row of the tree with the ordered double-SHA-256 hashes of the byte streams of the transactions in the block.&lt;br /&gt;
&lt;br /&gt;
Then the row above it consists of half that number of hashes.  Each entry is the double-SHA-256 of the 64-byte concatenation of the corresponding two hashes below it in the tree.&lt;br /&gt;
&lt;br /&gt;
This procedure repeats recursively until we reach a row consisting of just a single double-hash.  This is the &#039;&#039;&#039;Merkle root&#039;&#039;&#039; of the tree.&lt;br /&gt;
&lt;br /&gt;
For example, imagine a block with three transactions &#039;&#039;a&#039;&#039;, &#039;&#039;b&#039;&#039; and &#039;&#039;c&#039;&#039;.   The Merkle tree is: &lt;br /&gt;
&lt;br /&gt;
 d1 = dhash(a)&lt;br /&gt;
 d2 = dhash(b)&lt;br /&gt;
 d3 = dhash(c)&lt;br /&gt;
 d4 = dhash(c)            # a, b, c are 3. that&#039;s an odd number, so we take the c twice&lt;br /&gt;
 &lt;br /&gt;
 d5 = dhash(d1 concat d2)&lt;br /&gt;
 d6 = dhash(d3 concat d4)&lt;br /&gt;
 &lt;br /&gt;
 d7 = dhash(d5 concat d6)&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
 &lt;br /&gt;
 dhash(a) = sha256(sha256(a))&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;d7&#039;&#039; is the Merkle root of the 3 transactions in this block.&lt;br /&gt;
&lt;br /&gt;
Note: Hashes in Merkle Tree displayed in the [[Block Explorer]] are of little-endian notation. For some implementations and [http://www.fileformat.info/tool/hash.htm calculations], the bytes need to be reversed before they are hashed, and again after the hashing operation.&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin uses [http://en.wikipedia.org/wiki/Elliptic_curve_cryptography Elliptic Curve] [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm Digital Signature Algorithm] ([http://en.wikipedia.org/wiki/Elliptic_Curve_DSA ECDSA]) to sign transactions. &lt;br /&gt;
&lt;br /&gt;
For [[ECDSA]] the secp256k1 curve from http://www.secg.org/sec2-v2.pdf is used.&lt;br /&gt;
&lt;br /&gt;
Public keys (in scripts) are given as 04 &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; where &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; are 32 byte big-endian integers representing the coordinates of a point on the curve or in compressed form given as &amp;lt;sign&amp;gt; &amp;lt;x&amp;gt; where &amp;lt;sign&amp;gt; is 0x02 if &#039;&#039;y&#039;&#039; is even and 0x03 if &#039;&#039;y&#039;&#039; is odd.&lt;br /&gt;
&lt;br /&gt;
Signatures use [http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER encoding] to pack the &#039;&#039;r&#039;&#039; and &#039;&#039;s&#039;&#039; components into a single byte stream (this is also what OpenSSL produces by default).&lt;br /&gt;
&lt;br /&gt;
=== Transaction Verification ===&lt;br /&gt;
Transactions are cryptographically signed records that reassign ownership of Bitcoins to new addresses.  Transactions have &#039;&#039;inputs&#039;&#039; - records which reference the funds from other previous transactions - and &#039;&#039;outputs&#039;&#039; - records which determine the new owner of the transferred Bitcoins, and which will be referenced as inputs in future transactions as those funds are respent.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;input&#039;&#039; must have a cryptographic digital signature that unlocks the funds from the prior transaction.  Only the person possessing the appropriate [[private key]] is able to create a satisfactory signature; this in effect ensures that funds can only be spent by their owners.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;output&#039;&#039; determines which Bitcoin address (or other criteria, see [[Script]]) is the recipient of the funds.&lt;br /&gt;
&lt;br /&gt;
In a transaction, the sum of all inputs must be equal to or greater than the sum of all outputs.  If the inputs exceed the outputs, the difference is considered a [[transaction fee]], and is redeemable by whoever first includes the transaction into the block chain.&lt;br /&gt;
&lt;br /&gt;
A special kind of transaction, called a [[coinbase transaction]], has no inputs.  It is created by [[miners]], and there is one coinbase transaction per block.  Because each block comes with a reward of newly created Bitcoins (e.g. 50 BTC for the first 210,000 blocks), the first transaction of a block is, with few exceptions, the transaction that grants those coins to their recipient (the miner).  In addition to the newly created Bitcoins, the coinbase transaction is also used for assigning the recipient of any transaction fees that were paid within the other transactions being included in the same block.  The coinbase transaction can assign the entire reward to a single Bitcoin address, or split it in portions among multiple addresses, just like any other transaction.  Coinbase transactions always contain outputs totalling the sum of the block reward plus all transaction fees collected from the other transactions in the same block.&lt;br /&gt;
&lt;br /&gt;
The [[coinbase transaction]] in block zero cannot be spent. This is due to a quirk of the reference client implementation that would open the potential for a block chain fork if some nodes accepted the spend and others did not&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=119645.msg1288552#msg1288552 Block 0 Network Fork]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Most Bitcoin outputs encumber the newly transferred coins with a single ECDSA private key.  The actual record saved with inputs and outputs isn&#039;t necessarily a key, but a &#039;&#039;script&#039;&#039;.  Bitcoin uses an interpreted scripting system to determine whether an output&#039;s criteria have been satisfied, with which more complex operations are possible, such as outputs that require two ECDSA signatures, or two-of-three-signature schemes.  An output that references a single Bitcoin address is a &#039;&#039;typical&#039;&#039; output; an output actually contains this information in the form of a script that requires a single ECDSA signature (see [[OP_CHECKSIG]]).  The output script specifies what must be provided to unlock the funds later, and when the time comes in the future to spend the transaction in another input, that input must provide all of the thing(s) that satisfy the requirements defined by the original output script.&lt;br /&gt;
&lt;br /&gt;
=== Addresses ===&lt;br /&gt;
&lt;br /&gt;
A bitcoin address is in fact the hash of a ECDSA public key, computed this way:&lt;br /&gt;
&lt;br /&gt;
 Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111&lt;br /&gt;
 Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))&lt;br /&gt;
 Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))&lt;br /&gt;
 Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)&lt;br /&gt;
&lt;br /&gt;
The Base58 encoding used is home made, and has some differences. Especially, leading zeroes are kept as single zeroes when conversion happens.&lt;br /&gt;
&lt;br /&gt;
== Common structures ==&lt;br /&gt;
&lt;br /&gt;
Almost all integers are encoded in little endian. Only IP or port number are encoded big endian.&lt;br /&gt;
&lt;br /&gt;
=== Message structure ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || magic || uint32_t || Magic value indicating message origin network, and used to seek to next message when stream state is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 12 || command || char[12] || ASCII string identifying the packet content, NULL padded (non-NULL padding results in packet rejected)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || length || uint32_t || Length of payload in number of bytes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || checksum || uint32_t || First 4 bytes of sha256(sha256(payload))&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || The actual data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Known magic values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Network !! Magic value !! Sent over wire as&lt;br /&gt;
|-&lt;br /&gt;
| main || 0xD9B4BEF9 || F9 BE B4 D9&lt;br /&gt;
|-&lt;br /&gt;
| testnet/regtest || 0xDAB5BFFA || FA BF B5 DA&lt;br /&gt;
|-&lt;br /&gt;
| testnet3 || 0x0709110B || 0B 11 09 07&lt;br /&gt;
|-&lt;br /&gt;
| signet(default) || 0x40CF030A || 0A 03 CF 40&lt;br /&gt;
|-&lt;br /&gt;
| namecoin || 0xFEB4BEF9 || F9 BE B4 FE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length integer ===&lt;br /&gt;
&lt;br /&gt;
Integer can be encoded depending on the represented value to save space.&lt;br /&gt;
Variable length integers always precede an array/vector of a type of data that may vary in length.&lt;br /&gt;
Longer numbers are encoded in little endian.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Storage length !! Format&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 0xFD || 1 || uint8_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xFFFF || 3 || 0xFD followed by the length as uint16_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xFFFF FFFF || 5 || 0xFE followed by the length as uint32_t&lt;br /&gt;
|-&lt;br /&gt;
| - || 9 || 0xFF followed by the length as uint64_t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you&#039;re reading the Satoshi client code (BitcoinQT) it refers to this encoding as a &amp;quot;CompactSize&amp;quot;. Modern Bitcoin Core also has the VARINT macro which implements an even more compact integer for the purpose of local storage (which is incompatible with &amp;quot;CompactSize&amp;quot; described here). VARINT is not a part of the protocol.&lt;br /&gt;
&lt;br /&gt;
=== Variable length string ===&lt;br /&gt;
&lt;br /&gt;
Variable length string can be stored using a variable length integer followed by the string itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || length || [[Protocol_documentation#Variable_length_integer|var_int]] || Length of the string&lt;br /&gt;
|-&lt;br /&gt;
| ? || string || char[] || The string itself (can be empty)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network address ===&lt;br /&gt;
&lt;br /&gt;
When a network address is needed somewhere, this structure is used. Network addresses are not prefixed with a timestamp in the version message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || time || uint32 || the Time (version &amp;gt;= 31402). &#039;&#039;&#039;Not present in version message.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || same service(s) listed in [[#version|version]]&lt;br /&gt;
|-&lt;br /&gt;
| 16 || IPv6/4 || char[16] || IPv6 address. Network byte order. The original client only supported IPv4 and only read the last 4 bytes to get the IPv4 address. However, the IPv4 address is written into the message as a 16 byte [http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses IPv4-mapped IPv6 address]&lt;br /&gt;
(12 bytes &#039;&#039;00 00 00 00  00 00 00 00  00 00 FF FF&#039;&#039;, followed by the 4 bytes of the IPv4 address).&lt;br /&gt;
|-&lt;br /&gt;
| 2 || port || uint16_t || port number, network byte order&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of Network address structure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0010   00 00 FF FF 0A 00 00 01  20 8D                    ........ .&lt;br /&gt;
&lt;br /&gt;
Network address:&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK: see services listed under version command)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv6: ::ffff:a00:1 or IPv4: 10.0.0.1&lt;br /&gt;
 20 8D                                           - Port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Vectors ===&lt;br /&gt;
&lt;br /&gt;
Inventory vectors are used for notifying other nodes about objects they have or data which is being requested.&lt;br /&gt;
&lt;br /&gt;
Inventory vectors consist of the following data format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || type || uint32_t || Identifies the object type linked to this inventory&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the object&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The object type is currently defined as one of the following possibilities:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ERROR || Any data of with this number may be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 1 || MSG_TX || Hash is related to a transaction&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MSG_BLOCK || Hash is related to a data block&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MSG_FILTERED_BLOCK || Hash of a block header; identical to MSG_BLOCK.  Only to be used in getdata message. Indicates the reply should be a merkleblock message rather than a block message; this only works if a bloom filter has been set. See BIP 37 for more info.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MSG_CMPCT_BLOCK || Hash of a block header; identical to MSG_BLOCK.  Only to be used in getdata message. Indicates the reply should be a cmpctblock message. See BIP 152 for more info.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40000001 || MSG_WITNESS_TX || Hash of a transaction with witness data. See BIP 144 for more info.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40000002 || MSG_WITNESS_BLOCK || Hash of a block with witness data. See BIP 144 for more info.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40000003 || MSG_FILTERED_WITNESS_BLOCK || Hash of a block with witness data. Only to be used in getdata message. Indicates the reply should be a merkleblock message rather than a block message; this only works if a bloom filter has been set. See BIP 144 for more info.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other Data Type values are considered reserved for future implementations.&lt;br /&gt;
&lt;br /&gt;
=== Block Headers ===&lt;br /&gt;
&lt;br /&gt;
Block headers are sent in a headers packet in response to a getheaders message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Block version information (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Will overflow in 2106&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Unix_time#Notable_events_in_Unix_time&amp;lt;/ref&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || txn_count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of transaction entries, this value is always 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cf. [[Block hashing algorithm]]&lt;br /&gt;
&lt;br /&gt;
=== Differential encoding === &lt;br /&gt;
Several uses of CompactSize below are &amp;quot;differentially encoded&amp;quot;. For these, instead of using raw indexes, the number encoded is the difference between the current index and the previous index, minus one. For example, a first index of 0 implies a real index of 0, a second index of 0 thereafter refers to a real index of 1, etc.&lt;br /&gt;
&lt;br /&gt;
=== PrefilledTransaction ===&lt;br /&gt;
&lt;br /&gt;
A PrefilledTransaction structure is used in HeaderAndShortIDs to provide a list of a few transactions explicitly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Name !! Type !! Size !! Encoding || Purpose&lt;br /&gt;
|-&lt;br /&gt;
| index || [[Protocol_documentation#Variable_length_integer|CompactSize]] || 1, 3 bytes || Compact Size, differentially encoded since the last PrefilledTransaction in a list || The index into the block at which this transaction is&lt;br /&gt;
|-&lt;br /&gt;
| tx || Transaction || variable || As encoded in [[Protocol_documentation#tx|tx messages]] || The transaction which is in the block at index index.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== HeaderAndShortIDs ===&lt;br /&gt;
&lt;br /&gt;
A HeaderAndShortIDs structure is used to relay a block header, the short transactions IDs used for matching already-available transactions, and a select few transactions which we expect a peer may be missing.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Name !! Type !! Size !! Encoding || Purpose&lt;br /&gt;
|-&lt;br /&gt;
| header || Block header || 80 bytes || First 80 bytes of the block as defined by the encoding used by &amp;quot;block&amp;quot; messages	|| The header of the block being provided&lt;br /&gt;
|-&lt;br /&gt;
| nonce	|| uint64_t || 8 bytes || Little Endian || A nonce for use in short transaction ID calculations&lt;br /&gt;
|-&lt;br /&gt;
| shortids_length || [[Protocol_documentation#Variable_length_integer|CompactSize]] || 1 or 3 bytes || As used to encode array lengths elsewhere || The number of short transaction IDs in shortids (ie block tx count - prefilledtxn_length)&lt;br /&gt;
|-&lt;br /&gt;
| shortids || List of 6-byte integers || 6*shortids_length bytes || Little Endian || The [[Protocol_documentation#Short_transaction_ID|short transaction IDs]] calculated from the transactions which were not provided explicitly in prefilledtxn&lt;br /&gt;
|-&lt;br /&gt;
| prefilledtxn_length || [[Protocol_documentation#Variable_length_integer|CompactSize]] || 1 or 3 bytes || As used to encode array lengths elsewhere || The number of prefilled transactions in prefilledtxn (ie block tx count - shortids_length)&lt;br /&gt;
|-&lt;br /&gt;
| prefilledtxn || List of PrefilledTransactions || variable size*prefilledtxn_length || As defined by [[Protocol_documentation#PrefilledTransaction|PrefilledTransaction]] definition, above || Used to provide the coinbase transaction and a select few which we expect a peer may be missing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== BlockTransactionsRequest ===&lt;br /&gt;
&lt;br /&gt;
A BlockTransactionsRequest structure is used to list transaction indexes in a block being requested.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Name !! Type !! Size !! Encoding || Purpose&lt;br /&gt;
|-&lt;br /&gt;
| blockhash || Binary blob || 32 bytes || The output from a double-SHA256 of the block header, as used elsewhere || The blockhash of the block which the transactions being requested are in&lt;br /&gt;
|-&lt;br /&gt;
| indexes_length || [[Protocol_documentation#Variable_length_integer|CompactSize]] || 1 or 3 bytes || As used to encode array lengths elsewhere || The number of transactions being requested&lt;br /&gt;
|-&lt;br /&gt;
| indexes || List of [[Protocol_documentation#Variable_length_integer|CompactSizes]] || 1 or 3 bytes*indexes_length || [[Protocol_documentation#Differential_encoding|Differentially encoded]] || The indexes of the transactions being requested in the block&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== BlockTransactions ===&lt;br /&gt;
&lt;br /&gt;
A BlockTransactions structure is used to provide some of the transactions in a block, as requested.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Name !! Type !! Size !! Encoding || Purpose&lt;br /&gt;
|-&lt;br /&gt;
| blockhash || Binary blob || 32 bytes || The output from a double-SHA256 of the block header, as used elsewhere || The blockhash of the block which the transactions being provided are in&lt;br /&gt;
|-&lt;br /&gt;
| transactions_length || [[Protocol_documentation#Variable_length_integer|CompactSize]] || 1 or 3 bytes || As used to encode array lengths elsewhere || The number of transactions provided&lt;br /&gt;
|-&lt;br /&gt;
| transactions || List of Transactions || variable || As encoded in [[Protocol_documentation#tx|tx messages]] || The transactions provided&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Short transaction ID ===&lt;br /&gt;
&lt;br /&gt;
Short transaction IDs are used to represent a transaction without sending a full 256-bit hash. They are calculated by:&lt;br /&gt;
&lt;br /&gt;
# single-SHA256 hashing the block header with the nonce appended (in little-endian)&lt;br /&gt;
# Running SipHash-2-4 with the input being the transaction ID and the keys (k0/k1) set to the first two little-endian 64-bit integers from the above hash, respectively.&lt;br /&gt;
# Dropping the 2 most significant bytes from the SipHash output to make it 6 bytes.&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
== Message types ==&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
&lt;br /&gt;
When a node creates an outgoing connection, it will immediately [[Version Handshake|advertise]] its version. The remote node will respond with its version. No further communication is possible until both peers have exchanged their version.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Identifies protocol version being used by the node&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || bitfield of features to be enabled for this connection&lt;br /&gt;
|-&lt;br /&gt;
| 8 || timestamp || int64_t || standard UNIX timestamp in seconds&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_recv || [[#Network address|net_addr]] || The network address of the node receiving this message&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields below require version ≥ 106&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_from || [[#Network address|net_addr]] || The network address of the node emitting this message&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || Node random nonce, randomly generated every time a version packet is sent. This nonce is used to detect connections to self.&lt;br /&gt;
|-&lt;br /&gt;
| ? || user_agent || [[#Variable length string|var_str]] || [https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki User Agent] (0x00 if string is 0 bytes long)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || start_height || int32_t || The last block received by the emitting node&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields below require version ≥ 70001&lt;br /&gt;
|-&lt;br /&gt;
| 1 || relay || bool || Whether the remote peer should announce relayed transactions or not, see [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 0037]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;verack&amp;quot; packet shall be sent if the version packet was accepted.&lt;br /&gt;
&lt;br /&gt;
The following services are currently assigned:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NODE_NETWORK || This node can be asked for full blocks instead of just headers.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || NODE_GETUTXO || See [https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki BIP 0064]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || NODE_BLOOM   || See [https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki BIP 0111]&lt;br /&gt;
|-&lt;br /&gt;
| 8 || NODE_WITNESS   || See [https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki BIP 0144]&lt;br /&gt;
|-&lt;br /&gt;
| 16 || NODE_XTHIN  || Never formally proposed (as a BIP), and discontinued. Was historically sporadically seen on the network.&lt;br /&gt;
|-&lt;br /&gt;
| 64 || NODE_COMPACT_FILTERS || See [https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki BIP 0157]&lt;br /&gt;
|-&lt;br /&gt;
| 1024 || NODE_NETWORK_LIMITED   || See [https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki BIP 0159]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of version message (OBSOLETE EXAMPLE: This example lacks a checksum and user-agent):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 73  69 6F 6E 00 00 00 00 00   ....version.....&lt;br /&gt;
0010   55 00 00 00 9C 7C 00 00  01 00 00 00 00 00 00 00   U....|..........&lt;br /&gt;
0020   E6 15 10 4D 00 00 00 00  01 00 00 00 00 00 00 00   ...M............&lt;br /&gt;
0030   00 00 00 00 00 00 00 00  00 00 FF FF 0A 00 00 01   ................&lt;br /&gt;
0040   20 8D 01 00 00 00 00 00  00 00 00 00 00 00 00 00   ................&lt;br /&gt;
0050   00 00 00 00 FF FF 0A 00  00 02 20 8D DD 9D 20 2C   .......... ... ,&lt;br /&gt;
0060   3A B4 57 13 00 55 81 01  00                        :.W..U...&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 55 00 00 00                                                                   - Payload is 85 bytes long&lt;br /&gt;
                                                                               - No checksum in version message until 20 February 2012. See https://bitcointalk.org/index.php?topic=55852.0&lt;br /&gt;
Version message:&lt;br /&gt;
 9C 7C 00 00                                                                   - 31900 (version 0.3.19)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 E6 15 10 4D 00 00 00 00                                                       - Mon Dec 20 21:50:14 EST 2010&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 20 8D - Recipient address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 02 20 8D - Sender address info - see Network Address&lt;br /&gt;
 DD 9D 20 2C 3A B4 57 13                                                       - Node random unique ID&lt;br /&gt;
 00                                                                            - &amp;quot;&amp;quot; sub-version string (string is 0 bytes long)&lt;br /&gt;
 55 81 01 00                                                                   - Last block sending node has is block #98645&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a modern (60002) protocol version client advertising itself to a local peer...&lt;br /&gt;
&lt;br /&gt;
Newer protocol includes the checksum now, this is from a mainline (satoshi) client during &lt;br /&gt;
an outgoing connection to another local client, notice that it does not fill out the &lt;br /&gt;
address information at all when the source or destination is &amp;quot;unroutable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0000   f9 be b4 d9 76 65 72 73 69 6f 6e 00 00 00 00 00  ....version.....&lt;br /&gt;
0010   64 00 00 00 35 8d 49 32 62 ea 00 00 01 00 00 00  d...5.I2b.......&lt;br /&gt;
0020   00 00 00 00 11 b2 d0 50 00 00 00 00 01 00 00 00  .......P........&lt;br /&gt;
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff  ................&lt;br /&gt;
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0050   00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00  ................&lt;br /&gt;
0060   3b 2e b3 5d 8c e6 17 65 0f 2f 53 61 74 6f 73 68  ;..]...e./Satosh&lt;br /&gt;
0070   69 3a 30 2e 37 2e 32 2f c0 3e 03 00              i:0.7.2/.&amp;gt;..&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 64 00 00 00                                                                   - Payload is 100 bytes long&lt;br /&gt;
 35 8d 49 32                                                                   - payload checksum (little endian)&lt;br /&gt;
&lt;br /&gt;
Version message:&lt;br /&gt;
 62 EA 00 00                                                                   - 60002 (protocol version 60002)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 11 B2 D0 50 00 00 00 00                                                       - Tue Dec 18 10:12:33 PST 2012&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 - Recipient address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 - Sender address info - see Network Address&lt;br /&gt;
 3B 2E B3 5D 8C E6 17 65                                                       - Node ID&lt;br /&gt;
 0F 2F 53 61 74 6F 73 68 69 3A 30 2E 37 2E 32 2F                               - &amp;quot;/Satoshi:0.7.2/&amp;quot; sub-version string (string is 15 bytes long)&lt;br /&gt;
 C0 3E 03 00                                                                   - Last block sending node has is block #212672&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== verack ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;verack&#039;&#039; message is sent in reply to &#039;&#039;[[#version|version]]&#039;&#039;.  This message consists of only a [[#Message structure|message header]] with the command string &amp;quot;verack&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hexdump of the verack message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 61  63 6B 00 00 00 00 00 00   ....verack......&lt;br /&gt;
0010   00 00 00 00 5D F6 E0 E2                            ........&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                          - Main network magic bytes&lt;br /&gt;
 76 65 72 61  63 6B 00 00 00 00 00 00 - &amp;quot;verack&amp;quot; command&lt;br /&gt;
 00 00 00 00                          - Payload is 0 bytes long&lt;br /&gt;
 5D F6 E0 E2                          - Checksum (little endian)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== addr ===&lt;br /&gt;
&lt;br /&gt;
Provide information on known nodes of the network. Non-advertised nodes should be forgotten after typically 3 hours&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of address entries (max: 1000)&lt;br /&gt;
|-&lt;br /&gt;
| 30x? || addr_list || (uint32_t + [[#Network address|net_addr]])[] || Address of other nodes on the network. version &amp;lt; 209 will only read the first one. The uint32_t is a timestamp (see note below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Starting version 31402, addresses are prefixed with a timestamp. If no timestamp is present, the addresses should not be relayed to other peers, unless it is indeed confirmed they are up.&lt;br /&gt;
&lt;br /&gt;
Hexdump example of &#039;&#039;addr&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 61 64 64 72  00 00 00 00 00 00 00 00   ....addr........&lt;br /&gt;
0010   1F 00 00 00 ED 52 39 9B  01 E2 15 10 4D 01 00 00   .....R9.....M...&lt;br /&gt;
0020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 FF   ................&lt;br /&gt;
0030   FF 0A 00 00 01 20 8D                               ..... .&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                     - Main network magic bytes&lt;br /&gt;
 61 64 64 72  00 00 00 00 00 00 00 00            - &amp;quot;addr&amp;quot;&lt;br /&gt;
 1F 00 00 00                                     - payload is 31 bytes long&lt;br /&gt;
 ED 52 39 9B                                     - payload checksum (little endian)&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
 01                                              - 1 address in this message&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
 E2 15 10 4D                                     - Mon Dec 20 21:50:10 EST 2010 (only when version is &amp;gt;= 31402)&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK service - see version message)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv4: 10.0.0.1, IPv6: ::ffff:10.0.0.1 (IPv4-mapped IPv6 address)&lt;br /&gt;
 20 8D                                           - port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inv ===&lt;br /&gt;
&lt;br /&gt;
Allows a node to advertise its knowledge of one or more objects. It can be received unsolicited, or in reply to &#039;&#039;getblocks&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum 50,000 entries, which is just over 1.8 megabytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getdata ===&lt;br /&gt;
&lt;br /&gt;
getdata is used in response to inv, to retrieve the content of a specific object, and is usually sent after receiving an &#039;&#039;inv&#039;&#039; packet, after filtering known elements. It can be used to retrieve transactions, but only if they are in the memory pool or relay set - arbitrary access to transactions in the chain is not allowed to avoid having clients start to depend on nodes having full transaction indexes (which modern nodes do not).&lt;br /&gt;
&lt;br /&gt;
Payload (maximum 50,000 entries, which is just over 1.8 megabytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== notfound ===&lt;br /&gt;
&lt;br /&gt;
notfound is a response to a getdata, sent if any requested data items could not be relayed, for example, because the requested transaction was not in the memory pool or relay set.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getblocks ===&lt;br /&gt;
&lt;br /&gt;
Return an &#039;&#039;inv&#039;&#039; packet containing the list of blocks starting right after the last known hash in the block locator object, up to hash_stop or 500 blocks, whichever comes first. &lt;br /&gt;
&lt;br /&gt;
The locator hashes are processed by a node in the order as they appear in the message. If a block hash is found in the node&#039;s main chain, the list of its children is returned back via the &#039;&#039;inv&#039;&#039; message and the remaining locators are ignored, no matter if the requested limit was reached, or not.&lt;br /&gt;
&lt;br /&gt;
To receive the next blocks hashes, one needs to issue getblocks again with a new block locator object. Keep in mind that some clients may provide blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_documentation#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block; set to zero to get as many blocks as possible (500)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To create the block locator hashes, keep pushing hashes until you go back to the genesis block. After pushing 10 hashes back, the step backwards doubles every loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From libbitcoin which is under AGPL&lt;br /&gt;
std::vector&amp;lt;size_t&amp;gt; block_locator_indexes(size_t top_height)&lt;br /&gt;
{&lt;br /&gt;
    std::vector&amp;lt;size_t&amp;gt; indexes;&lt;br /&gt;
&lt;br /&gt;
    // Modify the step in the iteration.&lt;br /&gt;
    int64_t step = 1;&lt;br /&gt;
&lt;br /&gt;
    // Start at the top of the chain and work backwards.&lt;br /&gt;
    for (auto index = (int64_t)top_height; index &amp;gt; 0; index -= step)&lt;br /&gt;
    {&lt;br /&gt;
        // Push top 10 indexes first, then back off exponentially.&lt;br /&gt;
        if (indexes.size() &amp;gt;= 10)&lt;br /&gt;
            step *= 2;&lt;br /&gt;
&lt;br /&gt;
        indexes.push_back((size_t)index);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //  Push the genesis block index.&lt;br /&gt;
    indexes.push_back(0);&lt;br /&gt;
    return indexes;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that it is allowed to send in fewer known hashes down to a minimum of just one hash. However, the purpose of the block locator object is to detect a wrong branch in the caller&#039;s main chain. If the peer detects that you are off the main chain, it will send in block hashes which are earlier than your last known block. So if you just send in your last known hash and it is off the main chain, the peer starts over at block #1.&lt;br /&gt;
&lt;br /&gt;
=== getheaders ===&lt;br /&gt;
&lt;br /&gt;
Return a &#039;&#039;headers&#039;&#039; packet containing the headers of blocks starting right after the last known hash in the block locator object, up to hash_stop or 2000 blocks, whichever comes first. To receive the next block headers, one needs to issue getheaders again with a new block locator object. Keep in mind that some clients may provide headers of blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_documentation#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block header; set to zero to get as many blocks as possible (2000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the block locator object in this packet, the same rules apply as for the [[Protocol_documentation#getblocks|getblocks]] packet.&lt;br /&gt;
&lt;br /&gt;
=== tx ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tx&#039;&#039; describes a bitcoin transaction, in reply to &#039;&#039;[[#getdata|getdata]]&#039;&#039;. When a bloom filter is applied &#039;&#039;tx&#039;&#039; objects are sent automatically for matching transactions following the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Transaction data format version (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 0 or 2 || flag || optional uint8_t[2] || If present, always 0001, and indicates the presence of witness data&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_in count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of Transaction inputs (never zero)&lt;br /&gt;
|-&lt;br /&gt;
| 41+ || tx_in || tx_in[] || A list of 1 or more transaction inputs or sources for coins&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_out count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of Transaction outputs&lt;br /&gt;
|-&lt;br /&gt;
| 9+ || tx_out || tx_out[] || A list of 1 or more transaction outputs or destinations for coins&lt;br /&gt;
|-&lt;br /&gt;
| 0+ || tx_witnesses || tx_witness[] || A list of witnesses, one for each input; omitted if &#039;&#039;flag&#039;&#039; is omitted above&lt;br /&gt;
|-&lt;br /&gt;
| 4 || lock_time || uint32_t || The block number or timestamp at which this transaction is unlocked:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Not locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 500000000  || Block number at which this transaction is unlocked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;= 500000000 || UNIX timestamp at which this transaction is unlocked&lt;br /&gt;
|}&lt;br /&gt;
If all TxIn inputs have final (0xffffffff) sequence numbers then lock_time is irrelevant. Otherwise, the transaction may not be added to a block until after lock_time (see [[NLockTime]]).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
TxIn consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 36 || previous_output || outpoint || The previous output transaction reference, as an OutPoint structure&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || script length || [[Protocol_documentation#Variable_length_integer|var_int]] || The length of the signature script&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature script || uchar[] || Computational Script for confirming transaction authorization&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [http://bitcoin.stackexchange.com/q/2025/323 sequence] || uint32_t || Transaction version as defined by the sender. Intended for &amp;quot;replacement&amp;quot; of transactions when information is updated before inclusion into a block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The OutPoint structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || The hash of the referenced transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index of the specific output in the transaction. The first output is 0, etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Script structure consists of a series of pieces of information and operations related to the value of the transaction.&lt;br /&gt;
&lt;br /&gt;
(Structure to be expanded in the future… see script.h and script.cpp and [[Script]] for more information)&lt;br /&gt;
&lt;br /&gt;
The TxOut structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || value || int64_t || Transaction Value&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || pk_script length || [[Protocol_documentation#Variable_length_integer|var_int]] || Length of the pk_script&lt;br /&gt;
|-&lt;br /&gt;
| ? || pk_script || uchar[] || Usually contains the public key as a Bitcoin script setting up conditions to claim this output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The TxWitness structure consists of a [[Protocol_documentation#Variable_length_integer|var_int]] count of witness data components, followed by (for each witness data component) a [[Protocol_documentation#Variable_length_integer|var_int]] length of the component and the raw component data itself.&lt;br /&gt;
&lt;br /&gt;
Example &#039;&#039;tx&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000000	F9 BE B4 D9 74 78 00 00  00 00 00 00 00 00 00 00   ....tx..........&lt;br /&gt;
000010	02 01 00 00 E2 93 CD BE  01 00 00 00 01 6D BD DB   .............m..&lt;br /&gt;
000020	08 5B 1D 8A F7 51 84 F0  BC 01 FA D5 8D 12 66 E9   .[...Q........f.&lt;br /&gt;
000030	B6 3B 50 88 19 90 E4 B4  0D 6A EE 36 29 00 00 00   .;P......j.6)...&lt;br /&gt;
000040	00 8B 48 30 45 02 21 00  F3 58 1E 19 72 AE 8A C7   ..H0E.!..X..r...&lt;br /&gt;
000050	C7 36 7A 7A 25 3B C1 13  52 23 AD B9 A4 68 BB 3A   .6zz%;..R#...h.:&lt;br /&gt;
000060	59 23 3F 45 BC 57 83 80  02 20 59 AF 01 CA 17 D0   Y#?E.W... Y.....&lt;br /&gt;
000070	0E 41 83 7A 1D 58 E9 7A  A3 1B AE 58 4E DE C2 8D   .A.z.X.z...XN...&lt;br /&gt;
000080	35 BD 96 92 36 90 91 3B  AE 9A 01 41 04 9C 02 BF   5...6..;...A....&lt;br /&gt;
000090	C9 7E F2 36 CE 6D 8F E5  D9 40 13 C7 21 E9 15 98   .~.6.m...@..!...&lt;br /&gt;
0000A0	2A CD 2B 12 B6 5D 9B 7D  59 E2 0A 84 20 05 F8 FC   *.+..].}Y... ...&lt;br /&gt;
0000B0	4E 02 53 2E 87 3D 37 B9  6F 09 D6 D4 51 1A DA 8F   N.S..=7.o...Q...&lt;br /&gt;
0000C0	14 04 2F 46 61 4A 4C 70  C0 F1 4B EF F5 FF FF FF   ../FaJLp..K.....&lt;br /&gt;
0000D0	FF 02 40 4B 4C 00 00 00  00 00 19 76 A9 14 1A A0   ..@KL......v....&lt;br /&gt;
0000E0	CD 1C BE A6 E7 45 8A 7A  BA D5 12 A9 D9 EA 1A FB   .....E.z........&lt;br /&gt;
0000F0	22 5E 88 AC 80 FA E9 C7  00 00 00 00 19 76 A9 14   &amp;quot;^...........v..&lt;br /&gt;
000100	0E AB 5B EA 43 6A 04 84  CF AB 12 48 5E FD A0 B7   ..[.Cj.....H^...&lt;br /&gt;
000110	8B 4E CC 52 88 AC 00 00  00 00                     .N.R......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                       - main network magic bytes&lt;br /&gt;
 74 78 00 00 00 00 00 00 00 00 00 00               - &amp;quot;tx&amp;quot; command&lt;br /&gt;
 02 01 00 00                                       - payload is 258 bytes long&lt;br /&gt;
 E2 93 CD BE                                       - payload checksum (little endian)&lt;br /&gt;
&lt;br /&gt;
Transaction:&lt;br /&gt;
 01 00 00 00                                       - version&lt;br /&gt;
&lt;br /&gt;
Inputs:&lt;br /&gt;
 01                                                - number of transaction inputs&lt;br /&gt;
&lt;br /&gt;
Input 1:&lt;br /&gt;
 6D BD DB 08 5B 1D 8A F7  51 84 F0 BC 01 FA D5 8D  - previous output (outpoint)&lt;br /&gt;
 12 66 E9 B6 3B 50 88 19  90 E4 B4 0D 6A EE 36 29&lt;br /&gt;
 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
 8B                                                - script is 139 bytes long&lt;br /&gt;
&lt;br /&gt;
 48 30 45 02 21 00 F3 58  1E 19 72 AE 8A C7 C7 36  - signature script (scriptSig)&lt;br /&gt;
 7A 7A 25 3B C1 13 52 23  AD B9 A4 68 BB 3A 59 23&lt;br /&gt;
 3F 45 BC 57 83 80 02 20  59 AF 01 CA 17 D0 0E 41&lt;br /&gt;
 83 7A 1D 58 E9 7A A3 1B  AE 58 4E DE C2 8D 35 BD&lt;br /&gt;
 96 92 36 90 91 3B AE 9A  01 41 04 9C 02 BF C9 7E&lt;br /&gt;
 F2 36 CE 6D 8F E5 D9 40  13 C7 21 E9 15 98 2A CD&lt;br /&gt;
 2B 12 B6 5D 9B 7D 59 E2  0A 84 20 05 F8 FC 4E 02&lt;br /&gt;
 53 2E 87 3D 37 B9 6F 09  D6 D4 51 1A DA 8F 14 04&lt;br /&gt;
 2F 46 61 4A 4C 70 C0 F1  4B EF F5&lt;br /&gt;
&lt;br /&gt;
 FF FF FF FF                                       - sequence&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
 02                                                - 2 Output Transactions&lt;br /&gt;
&lt;br /&gt;
Output 1:&lt;br /&gt;
 40 4B 4C 00 00 00 00 00                           - 0.05 BTC (5000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12  - pk_script&lt;br /&gt;
 A9 D9 EA 1A FB 22 5E 88  AC&lt;br /&gt;
&lt;br /&gt;
Output 2:&lt;br /&gt;
 80 FA E9 C7 00 00 00 00                           - 33.54 BTC (3354000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 0E AB 5B EA 43  6A 04 84 CF AB 12 48 5E  - pk_script&lt;br /&gt;
 FD A0 B7 8B 4E CC 52 88  AC&lt;br /&gt;
&lt;br /&gt;
Locktime:&lt;br /&gt;
 00 00 00 00                                       - lock time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== block ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block&#039;&#039;&#039; message is sent in response to a getdata message which requests transaction information from a block hash.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Block version information (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A Unix timestamp recording when this block was created (Currently limited to dates before the year 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated [[Difficulty|difficulty target]] being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || txn_count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of transaction entries&lt;br /&gt;
|-&lt;br /&gt;
| ? || txns || tx[] || Block transactions, in format of &amp;quot;tx&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SHA256 hash that identifies each block (and which must have a run of 0 bits) is calculated from the first 6 fields of this structure (version, prev_block, merkle_root, timestamp, bits, nonce, and standard SHA256 padding, making two 64-byte chunks in all) and &#039;&#039;not&#039;&#039; from the complete block. To calculate the hash, only two chunks need to be processed by the SHA256 algorithm. Since the &#039;&#039;nonce&#039;&#039; field is in the second chunk, the first chunk stays constant during mining and therefore only the second chunk needs to be processed. However, a Bitcoin hash is the hash of the hash, so two SHA256 rounds are needed for each mining iteration.&lt;br /&gt;
See [[Block hashing algorithm]] for details and an example.&lt;br /&gt;
&lt;br /&gt;
=== headers ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;headers&#039;&#039; packet returns block headers in response to a &#039;&#039;getheaders&#039;&#039; packet. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of block headers&lt;br /&gt;
|-&lt;br /&gt;
| 81x? || headers || [[Protocol_documentation#Block_Headers|block_header]][] || [[Protocol_documentation#Block_Headers|Block headers]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the block headers in this packet include a transaction count (a var_int, so there can be more than 81 bytes per header) as opposed to the block headers that are hashed by miners.&lt;br /&gt;
&lt;br /&gt;
=== getaddr ===&lt;br /&gt;
&lt;br /&gt;
The getaddr message sends a request to a node asking for information about known active peers to help with finding potential nodes in the network. The response to receiving this message is to transmit one or more addr messages with one or more peers from a database of known active peers. The typical presumption is that a node is likely to be active if it has been sending a message within the last three hours.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
=== mempool ===&lt;br /&gt;
&lt;br /&gt;
The mempool message sends a request to a node asking for information about transactions it has verified but which have not yet confirmed. The response to receiving this message is an inv message containing the transaction hashes for all the transactions in the node&#039;s mempool.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
It is specified in [https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki BIP 35]. Since [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 37], if a [[Protocol_documentation#filterload.2C_filteradd.2C_filterclear.2C_merkleblock|bloom filter]] is loaded, only transactions matching the filter are replied.&lt;br /&gt;
&lt;br /&gt;
=== checkorder ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== submitorder ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== reply ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== ping ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;ping&#039;&#039; message is sent primarily to confirm that the TCP/IP connection is still valid. An error in transmission is presumed to be a closed connection and the address is removed as a current peer.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || random nonce&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pong ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;pong&#039;&#039; message is sent in response to a &#039;&#039;ping&#039;&#039; message. In modern protocol versions, a &#039;&#039;pong&#039;&#039; response is generated using a nonce included in the ping.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || nonce from ping&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== reject===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;reject&#039;&#039; message is sent when messages are rejected.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || message || var_str || type of message rejected&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ccode || char || code relating to rejected message&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || reason || var_str || text version of reason for rejection&lt;br /&gt;
|-&lt;br /&gt;
| 0+ || data || char || Optional extra data provided by some errors.  Currently, all errors which provide this field fill it with the TXID or block header hash of the object being rejected, so the field is 32 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CCodes&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || REJECT_MALFORMED|| &lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || REJECT_INVALID ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || REJECT_OBSOLETE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || REJECT_DUPLICATE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || REJECT_NONSTANDARD ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x41 || REJECT_DUST ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x42 || REJECT_INSUFFICIENTFEE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x43 || REJECT_CHECKPOINT ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== filterload, filteradd, filterclear, merkleblock ===&lt;br /&gt;
&lt;br /&gt;
These messages are related to Bloom filtering of connections and are defined in [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 0037].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nTweak || uint32_t || A random value to add to the seed value in the hash function used by the bloom filter.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || nFlags || uint8_t || A set of flags that control how matched items are added to the filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below. The flags control the update behaviour of the matching algorithm.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Block version information, based upon the software version creating this block (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash_count || [[Protocol_documentation#Variable_length_integer|var_int]] || The number of hashes to follow&lt;br /&gt;
|-&lt;br /&gt;
| 32x? || hashes || char[32] || Hashes in depth-first order&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || flag_bytes || [[Protocol_documentation#Variable_length_integer|var_int]] || The size of flags (in bytes) to follow&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || Flag bits, packed per 8 in a byte, least significant bit first. Extra 0 bits are padded on to reach full byte size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt;, transactions matching the bloom filter are automatically sent in &#039;&#039;[[#tx|tx]]&#039;&#039; messages.&lt;br /&gt;
&lt;br /&gt;
A guide to creating a bloom filter, loading a merkle block, and parsing a partial merkle block tree can be found in the [https://bitcoin.org/en/developer-examples#creating-a-bloom-filter Developer Examples].&lt;br /&gt;
&lt;br /&gt;
=== alert ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Support for [[Alert system|alert messages]] has been removed from bitcoin core in March 2016. Read more [https://bitcoin.org/en/alert/2016-11-01-alert-retirement here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An [[Alert system|&#039;&#039;&#039;alert&#039;&#039;&#039;]] is sent between nodes to send a general notification message throughout the network. If the alert can be confirmed with the signature as having come from the core development group of the Bitcoin software, the message is suggested to be displayed for end-users. Attempts to perform transactions, particularly automated transactions through the client, are suggested to be halted. The text in the Message string should be relayed to log files and any user interfaces.&lt;br /&gt;
&lt;br /&gt;
Alert format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || Serialized alert payload&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature || uchar[] || An ECDSA signature of the message&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The developers of Satoshi&#039;s client use this public key for signing alerts:&lt;br /&gt;
 04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284&lt;br /&gt;
 (hash) 1AGRxqDa5WjUKBwHB9XYEjmkv1ucoUUy1s&lt;br /&gt;
&lt;br /&gt;
The payload is serialized into a uchar[] to ensure that versions using incompatible alert formats can still relay alerts among one another. The current alert payload format is:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Version || int32_t || Alert format version&lt;br /&gt;
|-&lt;br /&gt;
| 8 || RelayUntil || int64_t || The timestamp beyond which nodes should stop relaying this alert&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Expiration || int64_t || The timestamp beyond which this alert is no longer in effect and should be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ID || int32_t || A unique ID number for this alert&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Cancel || int32_t || All alerts with an ID number less than or equal to this number should be cancelled: deleted and not accepted in the future&lt;br /&gt;
|-&lt;br /&gt;
| ? || setCancel || set&amp;lt;int32_t&amp;gt; || All alert IDs contained in this set should be cancelled as above&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MinVer || int32_t || This alert only applies to versions greater than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MaxVer || int32_t || This alert only applies to versions less than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| ? || setSubVer || set&amp;lt;string&amp;gt; || If this set contains any elements, then only nodes that have their subVer contained in this set are affected by the alert. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Priority || int32_t || Relative priority compared to other alerts&lt;br /&gt;
|-&lt;br /&gt;
| ? || Comment || string || A comment on the alert that is not displayed&lt;br /&gt;
|-&lt;br /&gt;
| ? || StatusBar || string || The alert message that is displayed to the user&lt;br /&gt;
|-&lt;br /&gt;
| ? || Reserved || string || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: &#039;&#039;&#039;set&amp;lt;&#039;&#039;type&#039;&#039;&amp;gt;&#039;&#039;&#039; in the table above is a [[#Variable length integer | variable length integer]] followed by the number of fields of the given &#039;&#039;type&#039;&#039; (either int32_t or [[#Variable length string | variable length string]])&lt;br /&gt;
&lt;br /&gt;
Sample alert (no message header):&lt;br /&gt;
 73010000003766404f00000000b305434f00000000f2030000f1030000001027000048ee0000&lt;br /&gt;
 0064000000004653656520626974636f696e2e6f72672f666562323020696620796f75206861&lt;br /&gt;
 76652074726f75626c6520636f6e6e656374696e672061667465722032302046656272756172&lt;br /&gt;
 79004730450221008389df45f0703f39ec8c1cc42c13810ffcae14995bb648340219e353b63b&lt;br /&gt;
 53eb022009ec65e1c1aaeec1fd334c6b684bde2b3f573060d5b70c3a46723326e4e8a4f1&lt;br /&gt;
 &lt;br /&gt;
 Version: 1&lt;br /&gt;
 RelayUntil: 1329620535&lt;br /&gt;
 Expiration: 1329792435&lt;br /&gt;
 ID: 1010&lt;br /&gt;
 Cancel: 1009&lt;br /&gt;
 setCancel: &amp;lt;empty&amp;gt;&lt;br /&gt;
 MinVer: 10000&lt;br /&gt;
 MaxVer: 61000&lt;br /&gt;
 setSubVer: &amp;lt;empty&amp;gt;&lt;br /&gt;
 Priority: 100&lt;br /&gt;
 Comment: &amp;lt;empty&amp;gt;&lt;br /&gt;
 StatusBar: &amp;quot;See bitcoin.org/feb20 if you have trouble connecting after 20 February&amp;quot;&lt;br /&gt;
 Reserved: &amp;lt;empty&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendheaders ===&lt;br /&gt;
&lt;br /&gt;
Request for Direct headers announcement. &lt;br /&gt;
&lt;br /&gt;
Upon receipt of this message, the node is be permitted, but not required, to announce new blocks by &#039;&#039;&#039;headers&#039;&#039;&#039; command (instead of &#039;&#039;&#039;inv&#039;&#039;&#039; command).&lt;br /&gt;
&lt;br /&gt;
This message is supported by the protocol version &amp;gt;= 70012 or Bitcoin Core version &amp;gt;= 0.12.0.&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki BIP 130] for more information.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== feefilter ===&lt;br /&gt;
&lt;br /&gt;
The payload is always 8 bytes long and it encodes 64 bit integer value (LSB / little endian) of &#039;&#039;&#039;feerate&#039;&#039;&#039;.&lt;br /&gt;
The value represents a minimal fee and is expressed in satoshis per 1000 bytes.&lt;br /&gt;
&lt;br /&gt;
Upon receipt of a &amp;quot;feefilter&amp;quot; message, the node will be permitted, but not required, to filter transaction invs for transactions that fall below the feerate provided in the feefilter message interpreted as satoshis per kilobyte.&lt;br /&gt;
&lt;br /&gt;
The fee filter is additive with a bloom filter for transactions so if an SPV client were to load a bloom filter and send a feefilter message, transactions would only be relayed if they passed both filters.&lt;br /&gt;
&lt;br /&gt;
Inv&#039;s generated from a mempool message are also subject to a fee filter if it exists.&lt;br /&gt;
&lt;br /&gt;
Feature discovery is enabled by checking protocol version &amp;gt;= 70013&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki BIP 133] for more information.&lt;br /&gt;
&lt;br /&gt;
=== sendcmpct ===&lt;br /&gt;
&lt;br /&gt;
# The sendcmpct message is defined as a message containing a 1-byte integer followed by a 8-byte integer where pchCommand == &amp;quot;sendcmpct&amp;quot;.&lt;br /&gt;
# The first integer SHALL be interpreted as a boolean (and MUST have a value of either 1 or 0)&lt;br /&gt;
# The second integer SHALL be interpreted as a little-endian version number. Nodes sending a sendcmpct message MUST currently set this value to 1.&lt;br /&gt;
# Upon receipt of a &amp;quot;sendcmpct&amp;quot; message with the first and second integers set to 1, the node SHOULD announce new blocks by sending a cmpctblock message.&lt;br /&gt;
# Upon receipt of a &amp;quot;sendcmpct&amp;quot; message with the first integer set to 0, the node SHOULD NOT announce new blocks by sending a cmpctblock message, but SHOULD announce new blocks by sending invs or headers, as defined by BIP130.&lt;br /&gt;
# Upon receipt of a &amp;quot;sendcmpct&amp;quot; message with the second integer set to something other than 1, nodes MUST treat the peer as if they had not received the message (as it indicates the peer will provide an unexpected encoding in &lt;br /&gt;
# cmpctblock, and/or other, messages). This allows future versions to send duplicate sendcmpct messages with different versions as a part of a version handshake for future versions.&lt;br /&gt;
# Nodes SHOULD check for a protocol version of &amp;gt;= 70014 before sending sendcmpct messages.&lt;br /&gt;
# Nodes MUST NOT send a request for a MSG_CMPCT_BLOCK object to a peer before having received a sendcmpct message from that peer.&lt;br /&gt;
&lt;br /&gt;
This message is only supported by protocol version &amp;gt;= 70014&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== cmpctblock ===&lt;br /&gt;
&lt;br /&gt;
# The cmpctblock message is defined as as a message containing a serialized [[Protocol_documentation#HeaderAndShortIDs|HeaderAndShortIDs]] message and pchCommand == &amp;quot;cmpctblock&amp;quot;.&lt;br /&gt;
# Upon receipt of a cmpctblock message after sending a sendcmpct message, nodes SHOULD calculate the [[Protocol_documentation#Short_transaction_ID|short transaction ID]] for each unconfirmed transaction they have available (ie in their mempool) and compare each to each short transaction ID in the cmpctblock message.&lt;br /&gt;
# After finding already-available transactions, nodes which do not have all transactions available to reconstruct the full block SHOULD request the missing transactions using a getblocktxn message.&lt;br /&gt;
# A node MUST NOT send a cmpctblock message unless they are able to respond to a getblocktxn message which requests every transaction in the block.&lt;br /&gt;
# A node MUST NOT send a cmpctblock message without having validated that the header properly commits to each transaction in the block, and properly builds on top of the existing chain with a valid proof-of-work. A node MAY send a cmpctblock before validating that each transaction in the block validly spends existing [[UTXO]] set entries.&lt;br /&gt;
&lt;br /&gt;
This message is only supported by protocol version &amp;gt;= 70014&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== getblocktxn ===&lt;br /&gt;
&lt;br /&gt;
# The getblocktxn message is defined as as a message containing a serialized [[Protocol_documentation#BlockTransactionsRequest|BlockTransactionsRequest]] message and pchCommand == &amp;quot;getblocktxn&amp;quot;.&lt;br /&gt;
# Upon receipt of a properly-formatted getblocktxnmessage, nodes which recently provided the sender of such a message a cmpctblock for the block hash identified in this message MUST respond with an appropriate [[Protocol_documentation#blocktxn|blocktxn]] message. Such a blocktxn message MUST contain exactly and only each transaction which is present in the appropriate block at the index specified in the getblocktxn indexes list, in the order requested.&lt;br /&gt;
&lt;br /&gt;
This message is only supported by protocol version &amp;gt;= 70014&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
=== blocktxn ===&lt;br /&gt;
&lt;br /&gt;
# The blocktxn message is defined as as a message containing a serialized [[Protocol_documentation#BlockTransactions|BlockTransactions]] message and pchCommand == &amp;quot;blocktxn&amp;quot;.&lt;br /&gt;
# Upon receipt of a properly-formatted requested blocktxn message, nodes SHOULD attempt to reconstruct the full block by:&lt;br /&gt;
# Taking the prefilledtxn transactions from the original [[Protocol_documentation#cmpctblock|cmpctblock]] and placing them in the marked positions.&lt;br /&gt;
# For each short transaction ID from the original [[Protocol_documentation#cmpctblock|cmpctblock]], in order, find the corresponding transaction either from the blocktxn message or from other sources and place it in the first available position in the block.&lt;br /&gt;
# Once the block has been reconstructed, it shall be processed as normal, keeping in mind that short transaction IDs are expected to occasionally collide, and that nodes MUST NOT be penalized for such collisions, wherever they appear.&lt;br /&gt;
&lt;br /&gt;
This message is only supported by protocol version &amp;gt;= 70014&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki BIP 152] for more information.&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
See [[script]].&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[Hardfork Wishlist]]&lt;br /&gt;
* [https://bitcoin.org/en/developer-documentation Developer Documentation on bitcoin.org]&lt;br /&gt;
* Bitcoin dissectors for Wireshark: https://github.com/lbotsch/wireshark-bitcoin https://github.com/op-sig/bitcoin-wireshark-dissector&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[zh-cn:协议说明]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68205</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68205"/>
		<updated>2020-09-22T11:03:10Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &amp;quot;Bitcoin&amp;#039;s block chain&amp;quot; is often interpreted as the mainnet&amp;#039;s one. Signet uses a different one.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for Bitcoin which adds an additional signature requirement to block validation. Signet is similar in nature to [[testnet]], but more reliable and centrally controlled. There is a default signet network (&amp;quot;Signet Global Test Net VI&amp;quot; as of this writing), but anyone can run their own signet network at their whim.&lt;br /&gt;
&lt;br /&gt;
Run bitcoind with the &amp;lt;code&amp;gt;-signet&amp;lt;/code&amp;gt; flag to use the default global signet (or put &amp;lt;code&amp;gt;signet=1&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;bitcoin.conf&amp;lt;/code&amp;gt; file). If you wish to use a [[#Custom Signet|custom signet]], you need to provide the block challenge (aka the block script) using &amp;lt;code&amp;gt;-signetchallenge=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signetseednode=&amp;lt;host&amp;gt;[:&amp;lt;port&amp;gt;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Differences==&lt;br /&gt;
&lt;br /&gt;
* Default Bitcoin network protocol listen port is 38333 (instead of 8333)&lt;br /&gt;
* Default RPC connection port is 38332 (instead of 8332)&lt;br /&gt;
* A different value of ADDRESSVERSION field ensures no signet Bitcoin addresses will work on the production network. (0x6F rather than 0x00)&lt;br /&gt;
* The protocol message header bytes are *dynamically generated* based on the block challenge, i.e. every signet is different; the header for the current default signet is &amp;lt;code&amp;gt;0x0A03CF40&amp;lt;/code&amp;gt; (that is reversed e.g. in Rust variables) (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;), but see [[#Genesis_Block_and_Message_Header]]&lt;br /&gt;
* Genesis block has timestamp 1598918400, nonce 52613770, and difficulty 0x1e0377ae.&lt;br /&gt;
* Segwit is always enabled&lt;br /&gt;
* Additional consensus requirement that the coinbase witness commitment contains an extended signet commitment, which is a script satisfying the block script (usually a k-of-n multisig)&lt;br /&gt;
&lt;br /&gt;
==Why run Signet?==&lt;br /&gt;
&lt;br /&gt;
* You are an Instructor, and want to run a controlled Bitcoin network environment for teaching purposes.&lt;br /&gt;
* You are a Software Developer, and want to test your software.&lt;br /&gt;
* You want to try out experimental changes that you want to implement in Bitcoin.&lt;br /&gt;
* You want to test long-term running software and don&#039;t want to deal with tens of thousands of block reorgs, or days of no blocks being mined, as is the case with Testnet.&lt;br /&gt;
* You want an easy way to test double spends (signet plans to include support for automated double spends, where you provide two conflicting transactions and they are mined in order, with a reorg happening between them).&lt;br /&gt;
&lt;br /&gt;
==Genesis Block and Message Header==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message header. The message header is the 4 first bytes of the sha256d-hash of the block challenge, as a single script push operation. I.e. if the block challenge is 37 bytes, the message start would be sha256d(0x25 || challenge)[0..3].&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
===Fetch and compile signet===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git clone https://github.com/kallewoof/bitcoin.git signet&lt;br /&gt;
$ cd signet&lt;br /&gt;
$ git checkout signet&lt;br /&gt;
$ ./autogen.sh&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make -j5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create bitcoin.conf file and start up the daemon===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd src&lt;br /&gt;
$ mkdir signet&lt;br /&gt;
$ echo &amp;quot;signet=1&lt;br /&gt;
daemon=1&amp;quot; &amp;gt; signet/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=signet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Verify that you&#039;re connected===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet getconnectioncount&lt;br /&gt;
***SHOULD BE MORE THAN ZERO***&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet getblockcount&lt;br /&gt;
***SHOULD BE MORE THAN ZERO***&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get some coins===&lt;br /&gt;
&lt;br /&gt;
There is a command line tool you can use to get coins directly to your instance of Signet, assuming you are on the default network. You can also use the faucet online with an address of yours.&lt;br /&gt;
&lt;br /&gt;
====Using online faucet====&lt;br /&gt;
&lt;br /&gt;
You first need an address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet getnewaddress&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then go to a faucet, e.g. https://signet.bc-2.jp and enter your address.&lt;br /&gt;
&lt;br /&gt;
====Using the command line tool====&lt;br /&gt;
&lt;br /&gt;
The tool is in &amp;lt;code&amp;gt;contrib/signet&amp;lt;/code&amp;gt; and is called &amp;lt;code&amp;gt;getcoins.sh&amp;lt;/code&amp;gt;. You can optionally provide a path to &amp;lt;code&amp;gt;bitcoin-cli&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;--cmd=[path]&amp;lt;/code&amp;gt; and a compatible faucet using &amp;lt;code&amp;gt;--faucet=[url]&amp;lt;/code&amp;gt; followed by any number of arguments to &amp;lt;code&amp;gt;bitcoin-cli&amp;lt;/code&amp;gt;. The script attempts to autodetect these if left out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../contrib/signet&lt;br /&gt;
$ ./getcoins.sh -datadir=../../src/signet&lt;br /&gt;
Payment of 10.00000000 BTC sent with txid c0bfa...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Check that you received the coins===&lt;br /&gt;
&lt;br /&gt;
Check your faucet transaction confirming at e.g. https://explorer.bc-2.jp and then send coins around to people and/or use signet for testing your wallet/etc.&lt;br /&gt;
&lt;br /&gt;
You can immediately see the amount using &amp;lt;code&amp;gt;getunconfirmedbalance&amp;lt;/code&amp;gt; i.e.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../../src # if you were in contrib/signet&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet getunconfirmedbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also see info about the transaction that the faucet gave you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet gettransaction THETXID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has confirmed, you should see it in &amp;lt;code&amp;gt;getbalance&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -datadir=signet getbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bitcoin/bitcoin/pull/18267 Pull request #18267 to Bitcoin Core]&lt;br /&gt;
* [https://github.com/rust-bitcoin/rust-bitcoin/pull/291 Pull request #291 to Rust-Bitcoin]&lt;br /&gt;
* [https://gist.github.com/kallewoof/98b6d8dbe126d2b6f47da0ddccd2aa5a Github gist explaining how to get started]&lt;br /&gt;
&lt;br /&gt;
===Faucets===&lt;br /&gt;
&lt;br /&gt;
* https://signet.bc-2.jp/&lt;br /&gt;
&lt;br /&gt;
Can also ping @kallewoof on IRC (freenode)/Twitter.&lt;br /&gt;
&lt;br /&gt;
Faucet source code, if you want your own:&lt;br /&gt;
&lt;br /&gt;
* https://github.com/kallewoof/bitcoin-faucet.git (node.js and mongodb)&lt;br /&gt;
* https://github.com/stepansnigirev/tinyfaucet.git (python)&lt;br /&gt;
&lt;br /&gt;
===Block explorers===&lt;br /&gt;
&lt;br /&gt;
* https://explorer.bc-2.jp/&lt;br /&gt;
&lt;br /&gt;
==Custom Signet==&lt;br /&gt;
&lt;br /&gt;
Creating your own signet involves a couple of steps: generate keys used for signing, define the block script, start up a node running on the new signet, and import the private key in order to sign blocks.&lt;br /&gt;
&lt;br /&gt;
===Generating keys used for signing a block===&lt;br /&gt;
&lt;br /&gt;
The most straightforward way is to simply start up a regtest node and then generating a new key from there.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd PATHTOBITCOIN/bitcoin/src&lt;br /&gt;
$ ./bitcoind -regtest -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -regtest getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -regtest dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -regtest getaddressinfo $ADDR | grep pubkey&lt;br /&gt;
  &amp;quot;pubkey&amp;quot;: &amp;quot;02c60c3940e5REDACTEDbd0148cd&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to jot down the privkey (&amp;lt;code&amp;gt;echo $PRIVKEY&amp;lt;/code&amp;gt;) and the pubkey (here &amp;lt;code&amp;gt;02c60...&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
===Defining the block script===&lt;br /&gt;
&lt;br /&gt;
The block script is just like any old Bitcoin script, but the most common type is a k-of-n multisig. Here we will do a 1-of-1 multisig with our single pubkey above. Our script becomes&lt;br /&gt;
* &amp;lt;code&amp;gt;51&amp;lt;/code&amp;gt; &amp;quot;1&amp;quot; (signature count)&lt;br /&gt;
* &amp;lt;code&amp;gt;21&amp;lt;/code&amp;gt; Push 0x21=33 bytes (the length of our pubkey above)&lt;br /&gt;
* &amp;lt;code&amp;gt;02c60c3940e5REDACTEDbd0148cd&amp;lt;/code&amp;gt; (our pubkey)&lt;br /&gt;
* &amp;lt;code&amp;gt;51&amp;lt;/code&amp;gt; &amp;quot;1&amp;quot; (pubkey count)&lt;br /&gt;
* &amp;lt;code&amp;gt;ae&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;OP_CHECKMULTISIG&amp;lt;/code&amp;gt; opcode&lt;br /&gt;
&lt;br /&gt;
Put together, our &amp;lt;code&amp;gt;-signetchallenge&amp;lt;/code&amp;gt; value becomes &amp;lt;code&amp;gt;512102c60c3940e5REDACTEDbd0148cd51ae&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Start up a node (issuer)===&lt;br /&gt;
&lt;br /&gt;
For the network to be useful, it needs to be generating blocks at decent intervals, so let&#039;s start up a node that does that (it may be useful to also use that node as a seed node for other peers).&lt;br /&gt;
&lt;br /&gt;
Note that we are importing &amp;lt;code&amp;gt;$PRIVKEY&amp;lt;/code&amp;gt; at the end; any node that needs to issue blocks must import the privkey we generated above, or it will fail to sign blocks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -signet stop&lt;br /&gt;
$ datadir=$HOME/signet-custom&lt;br /&gt;
$ mkdir $datadir&lt;br /&gt;
$ echo &amp;quot;signet=1&lt;br /&gt;
[signet]&lt;br /&gt;
daemon=1&lt;br /&gt;
signetchallenge=512102c60c3940e5REDACTEDbd0148cd51ae&amp;quot; &amp;gt; $datadir/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=$datadir&lt;br /&gt;
$ ./bitcoin-cli -datadir=$datadir importprivkey $PRIVKEY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you run into errors above, you may have a different signet running, which is blocking the ports. Either stop that, or set port and rpcport in the &amp;lt;code&amp;gt;$datadir/bitcoin.conf&amp;lt;/code&amp;gt; file under the &amp;lt;code&amp;gt;[signet]&amp;lt;/code&amp;gt; section and try again from the &amp;lt;code&amp;gt;bitcoind&amp;lt;/code&amp;gt; part above.&lt;br /&gt;
&lt;br /&gt;
===Run issuer===&lt;br /&gt;
&lt;br /&gt;
Lastly, we start the issuer script located in &amp;lt;code&amp;gt;contrib/signet&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../contrib/signet&lt;br /&gt;
$ ./issuer.sh 540 ../../src/bitcoin-cli -datadir=$datadir&lt;br /&gt;
- checking node status&lt;br /&gt;
- 23:51:01: node OK with 0 connection(s)&lt;br /&gt;
- 23:51:01: mining at maximum capacity with 540 second delay between each block&lt;br /&gt;
- 23:51:01: hit ^C to stop&lt;br /&gt;
- 23:51:01: generating next block&lt;br /&gt;
- 23:51:08: mined block 1 0000321422407052c06fef1eacbee402571787c9828051981adfbb5d50a2330a to 0 peer(s); idling for 540 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script will keep on mining blocks every 540 seconds (actually it will take about 60 seconds to generate a block after the difficulty has stabilized, so you should be seeing one block every 600 seconds) until you hit ctrl-C. It may be a good idea to run this in a screen, so you can check back on it occasionally.&lt;br /&gt;
&lt;br /&gt;
You may also want to run the issuer with a lower idle time initially, so you get some mature coinbase outputs faster.&lt;br /&gt;
&lt;br /&gt;
Next is to have your friends/colleagues/etc join the network by setting the &amp;lt;code&amp;gt;signetchallenge&amp;lt;/code&amp;gt; to the same as above, and connecting to your node.&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Script&amp;diff=68066</id>
		<title>Script</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Script&amp;diff=68066"/>
		<updated>2020-07-25T20:53:07Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add a link to Miniscript description on Sipa&amp;#039;s website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin uses a scripting system for [[transactions]]. [[Wikipedia:FORTH|Forth]]-like, &#039;&#039;&#039;Script&#039;&#039;&#039; is simple, stack-based, and processed from left to right. It is intentionally not Turing-complete, with no loops.&lt;br /&gt;
&lt;br /&gt;
A script is essentially a list of instructions recorded with each transaction that describe how the next person wanting to spend the Bitcoins being transferred can gain access to them.  The script for a typical Bitcoin transfer to destination Bitcoin address D simply encumbers future spending of the bitcoins with two things: the spender must provide&lt;br /&gt;
# a public key that, when hashed, yields destination address D embedded in the script, and&lt;br /&gt;
# a signature to prove ownership of the private key corresponding to the public key just provided.&lt;br /&gt;
&lt;br /&gt;
Scripting provides the flexibility to change the parameters of what&#039;s needed to spend transferred Bitcoins.  For example, the scripting system could be used to require two private keys, or a combination of several keys, or even no keys at all.&lt;br /&gt;
&lt;br /&gt;
A transaction is valid if nothing in the combined script triggers failure and the top stack item is True (non-zero) when the script exits.  The party that originally &#039;&#039;sent&#039;&#039; the Bitcoins now being spent dictates the script operations that will occur &#039;&#039;last&#039;&#039; in order to release them for use in another transaction.  The party wanting to spend them must provide the input(s) to the previously recorded script that results in the combined script completing execution with a true value on the top of the stack.&lt;br /&gt;
&lt;br /&gt;
This document is for information purposes only. De facto, Bitcoin script is defined by the code run by the network to check the validity of blocks.&lt;br /&gt;
&lt;br /&gt;
The stacks hold byte vectors.&lt;br /&gt;
When used as numbers, byte vectors are interpreted as little-endian variable-length integers with the most significant bit determining the sign of the integer.&lt;br /&gt;
Thus 0x81 represents -1.&lt;br /&gt;
0x80 is another representation of zero (so called negative 0).&lt;br /&gt;
Positive 0 is represented by a null-length vector.&lt;br /&gt;
Byte vectors are interpreted as Booleans where False is represented by any representation of zero and True is represented by any representation of non-zero.&lt;br /&gt;
&lt;br /&gt;
Leading zeros in an integer and negative zero are allowed in blocks but get rejected by the stricter requirements which standard full nodes put on transactions before retransmitting them.&lt;br /&gt;
Byte vectors on the stack are not allowed to be more than 520 bytes long. Opcodes which take integers and bools off the stack require that they be no more than 4 bytes long, but addition and subtraction can overflow and result in a 5 byte integer being put on the stack.&lt;br /&gt;
&lt;br /&gt;
== Opcodes ==&lt;br /&gt;
This is a list of all Script words, also known as opcodes, commands, or functions.&lt;br /&gt;
&lt;br /&gt;
There are some words which existed in very early versions of Bitcoin but were removed out of concern that the client might have a bug in their implementation. This fear was motivated by a bug found in OP_LSHIFT that could crash any Bitcoin node if exploited and by other bugs that allowed anyone to spend anyone&#039;s bitcoins. The removed opcodes are sometimes said to be &amp;quot;disabled&amp;quot;, but this is something of a misnomer because there is &#039;&#039;absolutely no way&#039;&#039; for anyone using Bitcoin to use these opcodes (they simply &#039;&#039;do not exist anymore&#039;&#039; in the protocol), and there are also no solid plans to ever re-enable all of these opcodes. They are listed here for historical interest only.&lt;br /&gt;
&lt;br /&gt;
New opcodes can be added by means of a carefully designed and executed [[softfork]] using OP_NOP1-OP_NOP10.&lt;br /&gt;
&lt;br /&gt;
False is zero or negative zero (using any number of bytes) or an empty array, and True is anything else.&lt;br /&gt;
&lt;br /&gt;
=== Constants ===&lt;br /&gt;
When talking about scripts, these value-pushing words are usually omitted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_0, OP_FALSE&lt;br /&gt;
|0&lt;br /&gt;
|0x00&lt;br /&gt;
|Nothing.&lt;br /&gt;
|(empty value)&lt;br /&gt;
|An empty array of bytes is pushed onto the stack. (This is not a no-op: an item is added to the stack.)&lt;br /&gt;
|-&lt;br /&gt;
|N/A&lt;br /&gt;
|1-75&lt;br /&gt;
|0x01-0x4b&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next &#039;&#039;opcode&#039;&#039; bytes is data to be pushed onto the stack&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA1&lt;br /&gt;
|76&lt;br /&gt;
|0x4c&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next byte contains the number of bytes to be pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA2&lt;br /&gt;
|77&lt;br /&gt;
|0x4d&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next two bytes contain the number of bytes to be pushed onto the stack in little endian order.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA4&lt;br /&gt;
|78&lt;br /&gt;
|0x4e&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next four bytes contain the number of bytes to be pushed onto the stack in little endian order.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1NEGATE&lt;br /&gt;
|79&lt;br /&gt;
|0x4f&lt;br /&gt;
|Nothing.&lt;br /&gt;
| -1&lt;br /&gt;
|The number -1 is pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1, OP_TRUE&lt;br /&gt;
|81&lt;br /&gt;
|0x51&lt;br /&gt;
|Nothing.&lt;br /&gt;
|1&lt;br /&gt;
|The number 1 is pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2-OP_16&lt;br /&gt;
|82-96&lt;br /&gt;
|0x52-0x60&lt;br /&gt;
|Nothing.&lt;br /&gt;
|2-16&lt;br /&gt;
|The number in the word name (2-16) is pushed onto the stack.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flow control ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOP&lt;br /&gt;
|97&lt;br /&gt;
|0x61&lt;br /&gt;
|Nothing&lt;br /&gt;
|Nothing&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|OP_IF&lt;br /&gt;
|99&lt;br /&gt;
|0x63&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|If the top stack value is not False, the statements are executed. The top stack value is removed.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOTIF&lt;br /&gt;
|100&lt;br /&gt;
|0x64&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; notif [statements] [else [statements]]* endif&lt;br /&gt;
|If the top stack value is False, the statements are executed. The top stack value is removed.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ELSE&lt;br /&gt;
|103&lt;br /&gt;
|0x67&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|If the preceding OP_IF or OP_NOTIF or OP_ELSE was not executed then these statements are and if the preceding OP_IF or OP_NOTIF or OP_ELSE was executed then these statements are not. &lt;br /&gt;
|-&lt;br /&gt;
|OP_ENDIF&lt;br /&gt;
|104&lt;br /&gt;
|0x68&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|Ends an if/else block. All blocks must end, or the transaction is &#039;&#039;&#039;invalid&#039;&#039;&#039;. An OP_ENDIF without OP_IF earlier is also &#039;&#039;&#039;invalid&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERIFY&lt;br /&gt;
|105&lt;br /&gt;
|0x69&lt;br /&gt;
|True / false&lt;br /&gt;
|Nothing / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039; if top stack value is not true.  The top stack value is removed.&lt;br /&gt;
|-&lt;br /&gt;
|[[OP_RETURN]]&lt;br /&gt;
|106&lt;br /&gt;
|0x6a&lt;br /&gt;
|Nothing&lt;br /&gt;
|&#039;&#039;fail&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039;. Since bitcoin 0.9, a standard way of attaching extra data to transactions is to add a zero-value output with a scriptPubKey consisting of OP_RETURN followed by data. Such outputs are provably unspendable and specially discarded from storage in the UTXO set, reducing their cost to the network. Since [https://bitcoin.org/en/release/v0.12.0#relay-any-sequence-of-pushdatas-in-opreturn-outputs-now-allowed 0.12], standard relay rules allow a single output with OP_RETURN, that contains any sequence of push statements (or OP_RESERVED&amp;lt;ref&amp;gt;see code for IsPushOnly [https://github.com/bitcoin/bitcoin/blob/bccb4d29a8080bf1ecda1fc235415a11d903a680/src/script/script.cpp#L232]&amp;lt;/ref&amp;gt;) after the OP_RETURN provided the total scriptPubKey length is at most 83 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stack ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_TOALTSTACK&lt;br /&gt;
|107&lt;br /&gt;
|0x6b&lt;br /&gt;
|x1&lt;br /&gt;
|(alt)x1&lt;br /&gt;
|Puts the input onto the top of the alt stack. Removes it from the main stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_FROMALTSTACK&lt;br /&gt;
|108&lt;br /&gt;
|0x6c&lt;br /&gt;
|(alt)x1&lt;br /&gt;
|x1&lt;br /&gt;
|Puts the input onto the top of the main stack. Removes it from the alt stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_IFDUP&lt;br /&gt;
|115&lt;br /&gt;
|0x73&lt;br /&gt;
|x&lt;br /&gt;
|x / x x&lt;br /&gt;
|If the top stack value is not 0, duplicate it.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DEPTH&lt;br /&gt;
|116&lt;br /&gt;
|0x74&lt;br /&gt;
|Nothing&lt;br /&gt;
|&amp;lt;Stack size&amp;gt;&lt;br /&gt;
|Puts the number of stack items onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DROP&lt;br /&gt;
|117&lt;br /&gt;
|0x75&lt;br /&gt;
|x&lt;br /&gt;
|Nothing&lt;br /&gt;
|Removes the top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DUP&lt;br /&gt;
|118&lt;br /&gt;
|0x76&lt;br /&gt;
|x&lt;br /&gt;
|x x&lt;br /&gt;
|Duplicates the top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NIP&lt;br /&gt;
|119&lt;br /&gt;
|0x77&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2&lt;br /&gt;
|Removes the second-to-top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_OVER&lt;br /&gt;
|120&lt;br /&gt;
|0x78&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x1 x2 x1&lt;br /&gt;
|Copies the second-to-top stack item to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PICK&lt;br /&gt;
|121&lt;br /&gt;
|0x79&lt;br /&gt;
|xn ... x2 x1 x0 &amp;lt;n&amp;gt;&lt;br /&gt;
|xn ... x2 x1 x0 xn&lt;br /&gt;
|The item &#039;&#039;n&#039;&#039; back in the stack is copied to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ROLL&lt;br /&gt;
|122&lt;br /&gt;
|0x7a&lt;br /&gt;
|xn ... x2 x1 x0 &amp;lt;n&amp;gt;&lt;br /&gt;
|... x2 x1 x0 xn&lt;br /&gt;
|The item &#039;&#039;n&#039;&#039; back in the stack is moved to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ROT&lt;br /&gt;
|123&lt;br /&gt;
|0x7b&lt;br /&gt;
|x1 x2 x3&lt;br /&gt;
|x2 x3 x1&lt;br /&gt;
|The top three items on the stack are rotated to the left.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SWAP&lt;br /&gt;
|124&lt;br /&gt;
|0x7c&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2 x1&lt;br /&gt;
|The top two items on the stack are swapped.&lt;br /&gt;
|-&lt;br /&gt;
|OP_TUCK&lt;br /&gt;
|125&lt;br /&gt;
|0x7d&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2 x1 x2&lt;br /&gt;
|The item at the top of the stack is copied and inserted before the second-to-top item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DROP&lt;br /&gt;
|109&lt;br /&gt;
|0x6d&lt;br /&gt;
|x1 x2&lt;br /&gt;
|Nothing&lt;br /&gt;
|Removes the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DUP&lt;br /&gt;
|110&lt;br /&gt;
|0x6e&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x1 x2 x1 x2&lt;br /&gt;
|Duplicates the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_3DUP&lt;br /&gt;
|111&lt;br /&gt;
|0x6f&lt;br /&gt;
|x1 x2 x3&lt;br /&gt;
|x1 x2 x3 x1 x2 x3&lt;br /&gt;
|Duplicates the top three stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2OVER&lt;br /&gt;
|112&lt;br /&gt;
|0x70&lt;br /&gt;
|x1 x2 x3 x4&lt;br /&gt;
|x1 x2 x3 x4 x1 x2&lt;br /&gt;
|Copies the pair of items two spaces back in the stack to the front.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2ROT&lt;br /&gt;
|113&lt;br /&gt;
|0x71&lt;br /&gt;
|x1 x2 x3 x4 x5 x6&lt;br /&gt;
|x3 x4 x5 x6 x1 x2&lt;br /&gt;
|The fifth and sixth items back are moved to the top of the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2SWAP&lt;br /&gt;
|114&lt;br /&gt;
|0x72&lt;br /&gt;
|x1 x2 x3 x4&lt;br /&gt;
|x3 x4 x1 x2&lt;br /&gt;
|Swaps the top two pairs of items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Splice ===&lt;br /&gt;
&lt;br /&gt;
If any opcode marked as disabled is present in a script, it must abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_CAT&lt;br /&gt;
|126&lt;br /&gt;
|0x7e&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Concatenates two strings. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_SUBSTR&lt;br /&gt;
|127&lt;br /&gt;
|0x7f&lt;br /&gt;
|in begin size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Returns a section of a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_LEFT&lt;br /&gt;
|128&lt;br /&gt;
|0x80&lt;br /&gt;
|in size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Keeps only characters left of the specified point in a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_RIGHT&lt;br /&gt;
|129&lt;br /&gt;
|0x81&lt;br /&gt;
|in size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Keeps only characters right of the specified point in a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_SIZE&lt;br /&gt;
|130&lt;br /&gt;
|0x82&lt;br /&gt;
|in&lt;br /&gt;
|in size&lt;br /&gt;
|Pushes the string length of the top element of the stack (without popping it).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bitwise logic ===&lt;br /&gt;
&lt;br /&gt;
If any opcode marked as disabled is present in a script, it must abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_INVERT&lt;br /&gt;
|131&lt;br /&gt;
|0x83&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Flips all of the bits in the input. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_AND&lt;br /&gt;
|132&lt;br /&gt;
|0x84&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;and&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_OR&lt;br /&gt;
|133&lt;br /&gt;
|0x85&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;or&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_XOR&lt;br /&gt;
|134&lt;br /&gt;
|0x86&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;exclusive or&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_EQUAL&lt;br /&gt;
|135&lt;br /&gt;
|0x87&lt;br /&gt;
|x1 x2&lt;br /&gt;
|True / false&lt;br /&gt;
|Returns 1 if the inputs are exactly equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_EQUALVERIFY&lt;br /&gt;
|136&lt;br /&gt;
|0x88&lt;br /&gt;
|x1 x2&lt;br /&gt;
|Nothing / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|Same as OP_EQUAL, but runs OP_VERIFY afterward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Arithmetic ===&lt;br /&gt;
&lt;br /&gt;
Note: Arithmetic inputs are limited to signed 32-bit integers, but may overflow their output.&lt;br /&gt;
&lt;br /&gt;
If any input value for any of these commands is longer than 4 bytes, the script must abort and fail. &lt;br /&gt;
If any opcode marked as &#039;&#039;disabled&#039;&#039; is present in a script - it must also abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_1ADD&lt;br /&gt;
|139&lt;br /&gt;
|0x8b&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|1 is added to the input.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1SUB&lt;br /&gt;
|140&lt;br /&gt;
|0x8c&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|1 is subtracted from the input.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2MUL&lt;br /&gt;
|141&lt;br /&gt;
|0x8d&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|The input is multiplied by 2. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DIV&lt;br /&gt;
|142&lt;br /&gt;
|0x8e&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|The input is divided by 2. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_NEGATE&lt;br /&gt;
|143&lt;br /&gt;
|0x8f&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|The sign of the input is flipped.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ABS&lt;br /&gt;
|144&lt;br /&gt;
|0x90&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|The input is made positive.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOT&lt;br /&gt;
|145&lt;br /&gt;
|0x91&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|If the input is 0 or 1, it is flipped. Otherwise the output will be 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_0NOTEQUAL&lt;br /&gt;
|146&lt;br /&gt;
|0x92&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|Returns 0 if the input is 0. 1 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ADD&lt;br /&gt;
|147&lt;br /&gt;
|0x93&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|a is added to b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SUB&lt;br /&gt;
|148&lt;br /&gt;
|0x94&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|b is subtracted from a.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MUL&lt;br /&gt;
|149&lt;br /&gt;
|0x95&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|a is multiplied by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_DIV&lt;br /&gt;
|150&lt;br /&gt;
|0x96&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|a is divided by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_MOD&lt;br /&gt;
|151&lt;br /&gt;
|0x97&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Returns the remainder after dividing a by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_LSHIFT&lt;br /&gt;
|152&lt;br /&gt;
|0x98&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Shifts a left b bits, preserving sign. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_RSHIFT&lt;br /&gt;
|153&lt;br /&gt;
|0x99&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Shifts a right b bits, preserving sign. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_BOOLAND&lt;br /&gt;
|154&lt;br /&gt;
|0x9a&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|If both a and b are not 0, the output is 1. Otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_BOOLOR&lt;br /&gt;
|155&lt;br /&gt;
|0x9b&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|If a or b is not 0, the output is 1. Otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMEQUAL&lt;br /&gt;
|156&lt;br /&gt;
|0x9c&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if the numbers are equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMEQUALVERIFY&lt;br /&gt;
|157&lt;br /&gt;
|0x9d&lt;br /&gt;
|a b&lt;br /&gt;
|Nothing / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|Same as OP_NUMEQUAL, but runs OP_VERIFY afterward.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMNOTEQUAL&lt;br /&gt;
|158&lt;br /&gt;
|0x9e&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if the numbers are not equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_LESSTHAN&lt;br /&gt;
|159&lt;br /&gt;
|0x9f&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is less than b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_GREATERTHAN&lt;br /&gt;
|160&lt;br /&gt;
|0xa0&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is greater than b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_LESSTHANOREQUAL&lt;br /&gt;
|161&lt;br /&gt;
|0xa1&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is less than or equal to b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_GREATERTHANOREQUAL&lt;br /&gt;
|162&lt;br /&gt;
|0xa2&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is greater than or equal to b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MIN&lt;br /&gt;
|163&lt;br /&gt;
|0xa3&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns the smaller of a and b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MAX&lt;br /&gt;
|164&lt;br /&gt;
|0xa4&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns the larger of a and b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_WITHIN&lt;br /&gt;
|165&lt;br /&gt;
|0xa5&lt;br /&gt;
|x min max&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if x is within the specified range (left-inclusive), 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Crypto ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_RIPEMD160&lt;br /&gt;
|166&lt;br /&gt;
|0xa6&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using RIPEMD-160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SHA1&lt;br /&gt;
|167&lt;br /&gt;
|0xa7&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using SHA-1.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SHA256&lt;br /&gt;
|168&lt;br /&gt;
|0xa8&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using SHA-256.&lt;br /&gt;
|-&lt;br /&gt;
|OP_HASH160&lt;br /&gt;
|169&lt;br /&gt;
|0xa9&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed twice: first with SHA-256 and then with RIPEMD-160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_HASH256&lt;br /&gt;
|170&lt;br /&gt;
|0xaa&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed two times with SHA-256.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CODESEPARATOR&lt;br /&gt;
|171&lt;br /&gt;
|0xab&lt;br /&gt;
|Nothing&lt;br /&gt;
|Nothing&lt;br /&gt;
|All of the signature checking words will only match signatures to the data after the most recently-executed OP_CODESEPARATOR.&lt;br /&gt;
|-&lt;br /&gt;
|[[OP_CHECKSIG]]&lt;br /&gt;
|172&lt;br /&gt;
|0xac&lt;br /&gt;
|sig pubkey&lt;br /&gt;
|True / false&lt;br /&gt;
|The entire transaction&#039;s outputs, inputs, and script (from the most recently-executed OP_CODESEPARATOR to the end) are hashed. The signature used by OP_CHECKSIG must be a valid signature for this hash and public key. If it is, 1 is returned, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKSIGVERIFY&lt;br /&gt;
|173&lt;br /&gt;
|0xad&lt;br /&gt;
|sig pubkey&lt;br /&gt;
|Nothing / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|Same as OP_CHECKSIG, but OP_VERIFY is executed afterward.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKMULTISIG&lt;br /&gt;
|174&lt;br /&gt;
|0xae&lt;br /&gt;
|x sig1 sig2 ... &amp;lt;number of signatures&amp;gt; pub1 pub2 &amp;lt;number of public keys&amp;gt;&lt;br /&gt;
|True / False&lt;br /&gt;
|Compares the first signature against each public key until it finds an ECDSA match. Starting with the subsequent public key, it compares the second signature against each remaining public key until it finds an ECDSA match. The process is repeated until all signatures have been checked or not enough public keys remain to produce a successful result.  All signatures need to match a public key. Because public keys are not checked again if they fail any signature comparison, signatures must be placed in the scriptSig using the same order as their corresponding public keys were placed in the scriptPubKey or redeemScript.  If all signatures are valid, 1 is returned, 0 otherwise. Due to a bug, one extra unused value is removed from the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKMULTISIGVERIFY&lt;br /&gt;
|175&lt;br /&gt;
|0xaf&lt;br /&gt;
|x sig1 sig2 ... &amp;lt;number of signatures&amp;gt; pub1 pub2 ... &amp;lt;number of public keys&amp;gt;&lt;br /&gt;
|Nothing / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|Same as OP_CHECKMULTISIG, but OP_VERIFY is executed afterward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Locktime ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKLOCKTIMEVERIFY (previously OP_NOP2)&lt;br /&gt;
|177&lt;br /&gt;
|0xb1&lt;br /&gt;
|x&lt;br /&gt;
|x / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039; if the top stack item is greater than the transaction&#039;s nLockTime field, otherwise script evaluation continues as though an OP_NOP was executed. Transaction is also invalid if 1. the stack is empty; or 2. the top stack item is negative; or 3. the top stack item is greater than or equal to 500000000 while the transaction&#039;s nLockTime field is less than 500000000, or vice versa; or 4. the input&#039;s nSequence field is equal to 0xffffffff. The precise semantics are described in [https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki BIP 0065].&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKSEQUENCEVERIFY (previously OP_NOP3)&lt;br /&gt;
|178&lt;br /&gt;
|0xb2&lt;br /&gt;
|x&lt;br /&gt;
|x / &#039;&#039;fail&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039; if the relative lock time of the input (enforced by [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP 0068] with nSequence) is not equal to or longer than the value of the top stack item. The precise semantics are described in [https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki BIP 0112].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Pseudo-words===&lt;br /&gt;
These words are used internally for assisting with transaction matching. They are invalid if used in actual scripts.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUBKEYHASH&lt;br /&gt;
|253&lt;br /&gt;
|0xfd&lt;br /&gt;
|Represents a public key hashed with OP_HASH160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUBKEY&lt;br /&gt;
|254&lt;br /&gt;
|0xfe&lt;br /&gt;
|Represents a public key compatible with OP_CHECKSIG.&lt;br /&gt;
|-&lt;br /&gt;
|OP_INVALIDOPCODE&lt;br /&gt;
|255&lt;br /&gt;
|0xff&lt;br /&gt;
|Matches any opcode that is not yet assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reserved words ===&lt;br /&gt;
Any opcode not assigned is also reserved. Using an unassigned opcode makes the transaction &#039;&#039;&#039;invalid&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!When used...&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED&lt;br /&gt;
|80&lt;br /&gt;
|0x50&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid&#039;&#039;&#039; unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_VER&lt;br /&gt;
|98&lt;br /&gt;
|0x62&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid&#039;&#039;&#039; unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERIF&lt;br /&gt;
|101&lt;br /&gt;
|0x65&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid even when occuring in an unexecuted OP_IF branch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERNOTIF&lt;br /&gt;
|102&lt;br /&gt;
|0x66&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid even when occuring in an unexecuted OP_IF branch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED1&lt;br /&gt;
|137&lt;br /&gt;
|0x89&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid&#039;&#039;&#039; unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED2&lt;br /&gt;
|138&lt;br /&gt;
|0x8a&lt;br /&gt;
|&#039;&#039;&#039;Transaction is invalid&#039;&#039;&#039; unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOP1, OP_NOP4-OP_NOP10&lt;br /&gt;
|176, 179-185&lt;br /&gt;
|0xb0, 0xb3-0xb9&lt;br /&gt;
|The word is ignored. Does not mark transaction as invalid.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Script examples ==&lt;br /&gt;
The following is a list of interesting scripts.&lt;br /&gt;
When notating scripts, data to be pushed to the stack is generally enclosed in angle brackets&lt;br /&gt;
and data push commands are omitted.&lt;br /&gt;
Non-bracketed words are opcodes.&lt;br /&gt;
These examples include the “OP_” prefix, but it is permissible to omit it.&lt;br /&gt;
Thus&lt;br /&gt;
“&amp;lt;pubkey1&amp;gt; &amp;lt;pubkey2&amp;gt; OP_2 OP_CHECKMULTISIG”&lt;br /&gt;
may be abbreviated to&lt;br /&gt;
“&amp;lt;pubkey1&amp;gt; &amp;lt;pubkey2&amp;gt; 2 CHECKMULTISIG”.&lt;br /&gt;
Note that there is a small number of standard script forms that are relayed from node to node;&lt;br /&gt;
non-standard scripts are accepted if they are in a block, but nodes will not relay them.&lt;br /&gt;
&lt;br /&gt;
=== Standard Transaction to Bitcoin address (pay-to-pubkey-hash) ===&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To demonstrate how scripts look on the wire, here is a raw scriptPubKey:&lt;br /&gt;
&amp;lt;pre&amp;gt;  76       A9             14&lt;br /&gt;
OP_DUP OP_HASH160    Bytes to push&lt;br /&gt;
&lt;br /&gt;
89 AB CD EF AB BA AB BA AB BA AB BA AB BA AB BA AB BA AB BA   88         AC&lt;br /&gt;
                      Data to push                     OP_EQUALVERIFY OP_CHECKSIG&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: scriptSig is in the input of the spending transaction and scriptPubKey is in the output of the previously unspent i.e. &amp;quot;available&amp;quot; transaction.&lt;br /&gt;
&lt;br /&gt;
Here is how each word is processed:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
| &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| scriptSig and scriptPubKey are combined.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Constants are added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Top stack item is duplicated.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt;&lt;br /&gt;
|&amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Top stack item is hashed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt; &amp;lt;pubKeyHash&amp;gt;&lt;br /&gt;
|OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Constant added.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
|OP_CHECKSIG&lt;br /&gt;
| Equality is checked between the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Signature is checked for top two stack items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Obsolete pay-to-pubkey transaction ===&lt;br /&gt;
&lt;br /&gt;
OP_CHECKSIG is used directly without first hashing the public key.&lt;br /&gt;
This was used by early versions of Bitcoin where people paid directly to IP addresses, before Bitcoin addresses were introduced.&lt;br /&gt;
scriptPubKeys of this transaction form are still recognized as payments to user by Bitcoin Core.&lt;br /&gt;
The disadvantage of this transaction form is that the whole public key needs to be known in advance, implying longer payment addresses, and that it provides less protection in the event of a break in the ECDSA signature algorithm.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checking process:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|scriptSig and scriptPubKey are combined.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_CHECKSIG&lt;br /&gt;
|Constants are added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Signature is checked for top two stack items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Provably Unspendable/Prunable Outputs ===&lt;br /&gt;
&lt;br /&gt;
The standard way to mark a transaction as provably unspendable is with a scriptPubKey of the following form:&lt;br /&gt;
&lt;br /&gt;
  scriptPubKey: OP_RETURN {zero or more ops}&lt;br /&gt;
&lt;br /&gt;
OP_RETURN immediately marks the script as invalid, guaranteeing that no scriptSig exists that could possibly spend that output. Thus the output can be immediately pruned from the [[UTXO|UTXO set]] even if it has not been spent. [http://blockexplorer.com/tx/eb31ca1a4cbd97c2770983164d7560d2d03276ae1aee26f12d7c2c6424252f29 eb31ca1a4cbd97c2770983164d7560d2d03276ae1aee26f12d7c2c6424252f29] is an example: it has a single output of zero value, thus giving the full 0.125BTC fee to the miner who mined the transaction without adding an entry to the UTXO set. You can also use OP_RETURN to add data to a transaction without the data ever appearing in the UTXO set, as seen in 1a2e22a717d626fc5db363582007c46924ae6b28319f07cb1b907776bd8293fc; [[P2Pool]] does this with the share chain hash txout in the coinbase of blocks it creates.&lt;br /&gt;
&lt;br /&gt;
=== Freezing funds until a time in the future ===&lt;br /&gt;
&lt;br /&gt;
Using OP_CHECKLOCKTIMEVERIFY it is possible to make funds provably unspendable until a certain point in the future.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: &amp;lt;expiry time&amp;gt; OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
| &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;expiry time&amp;gt; OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| scriptSig and scriptPubKey are combined.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;expiry time&amp;gt;&lt;br /&gt;
| OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Constants are added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;expiry time&amp;gt;&lt;br /&gt;
| OP_DROP OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Top stack item is checked against the current time or block height.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Top stack item is removed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Top stack item is duplicated.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt;&lt;br /&gt;
|&amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Top stack item is hashed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt; &amp;lt;pubKeyHash&amp;gt;&lt;br /&gt;
|OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Constant added.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
|OP_CHECKSIG&lt;br /&gt;
| Equality is checked between the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Signature is checked for top two stack items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Transaction puzzle ===&lt;br /&gt;
&lt;br /&gt;
Transaction a4bfa8ab6435ae5f25dae9d89e4eb67dfa94283ca751f393c1ddc5a837bbc31b is an interesting puzzle.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: OP_HASH256 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 OP_EQUAL&lt;br /&gt;
 scriptSig: &amp;lt;data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To spend the transaction you need to come up with some data such that hashing the data twice results in the given hash.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
|&amp;lt;data&amp;gt; OP_HASH256 &amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data&amp;gt;&lt;br /&gt;
|OP_HASH256 &amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|scriptSig added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data_hash&amp;gt;&lt;br /&gt;
|&amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|The data is hashed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data_hash&amp;gt; &amp;lt;given_hash&amp;gt;&lt;br /&gt;
|OP_EQUAL&lt;br /&gt;
|The given hash is pushed to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|The hashes are compared, leaving true on the stack.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This transaction was successfully spent by 09f691b2263260e71f363d1db51ff3100d285956a40cc0e4f8c8c2c4a80559b1. The required data happened to be the [[Genesis block]], and the given hash in the script was the genesis block header hashed twice with SHA-256. Note that while transactions like this are fun, they are not secure, because they do not contain any signatures and thus any transaction attempting to spend them can be replaced with a different transaction sending the funds somewhere else.&lt;br /&gt;
&lt;br /&gt;
=== Incentivized finding of hash collisions ===&lt;br /&gt;
&lt;br /&gt;
In 2013 Peter Todd created scripts that result in true if a hash collision is found. Bitcoin addresses resulting from these scripts can have money sent to them. If someone finds a hash collision they can spend the bitcoins on that address, so this setup acts as an incentive for somebody to do so.&lt;br /&gt;
&lt;br /&gt;
For example the SHA1 script:&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: OP_2DUP OP_EQUAL OP_NOT OP_VERIFY OP_SHA1 OP_SWAP OP_SHA1 OP_EQUAL&lt;br /&gt;
 scriptSig: &amp;lt;preimage1&amp;gt; &amp;lt;preimage2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the bitcointalk thread &amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=293382.0 bitcointalk forum thread on the hash collision bounties]&amp;lt;/ref&amp;gt; and reddit thread&amp;lt;ref&amp;gt;https://www.reddit.com/r/Bitcoin/comments/1mavh9/trustless_bitcoin_bounty_for_sha1_sha256_etc/&amp;lt;/ref&amp;gt; for more details.&lt;br /&gt;
&lt;br /&gt;
In February 2017 the SHA1 bounty worth 2.48 bitcoins was claimed.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Transactions]]&lt;br /&gt;
* [[Contracts]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
*[https://bitcoin.sipa.be/miniscript] - Miniscript: a language for writing (a subset of) Bitcoin Scripts in a structured way, enabling analysis, composition, generic signing and more.&lt;br /&gt;
*[https://github.com/siminchen/bitcoinIDE Bitcoin IDE] – Bitcoin Script for dummies&lt;br /&gt;
*[https://webbtc.com/script Bitcoin Debug Script Execution] – web tool which executes a script opcode-by-opcode&lt;br /&gt;
*[http://www.crmarsh.com/script-playground/ Script Playground] — convert Script to JavaScript&lt;br /&gt;
*[https://bitauth.com/ide BitAuth IDE] — an Integrated Development Environment for Bitcoin Authentication&lt;br /&gt;
&amp;lt;sup&amp;gt;(cf. &amp;quot;[http://bitcoin.stackexchange.com/q/42576/4334 Online Bitcoin Script simulator or debugger?]&amp;quot;)&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Testnet&amp;diff=66974</id>
		<title>Testnet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Testnet&amp;diff=66974"/>
		<updated>2019-10-31T22:27:22Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Correct a typo about the executable name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;testnet&#039;&#039;&#039; is an alternative Bitcoin [[block chain]], to be used for testing. Testnet coins are separate and distinct from actual bitcoins, and are never supposed to have any value. This allows application developers or bitcoin testers to experiment, without having to use real bitcoins or worrying about breaking the main bitcoin chain.&lt;br /&gt;
&lt;br /&gt;
Run bitcoin-qt or bitcoind with the -testnet flag to use the testnet (or put testnet=1 in the bitcoin.conf file).&lt;br /&gt;
&lt;br /&gt;
There have been three generations of testnet. Testnet2 was just the first testnet reset with a different genesis block, because people were starting to trade testnet coins for real money. &#039;&#039;&#039;Testnet3&#039;&#039;&#039; is the current test network. It was introduced with the 0.7 release, introduced a third genesis block, a new rule to avoid the &amp;quot;difficulty was too high, is now too low, and transactions take too long to verify&amp;quot; problem, and contains blocks with edge-case transactions designed to test implementation compatibility. On the December 21 of 2015 SegNet was deployed, to test the Wuille&#039;s Segregated Witness proposal.&lt;br /&gt;
&lt;br /&gt;
==Differences==&lt;br /&gt;
* Default Bitcoin network protocol listen port is 18333 (instead of 8333)&lt;br /&gt;
* Default RPC connection port is 18332 (instead of 8332)&lt;br /&gt;
* Bootstrapping uses different DNS seeds.&lt;br /&gt;
* A different value of ADDRESSVERSION field ensures no testnet Bitcoin addresses will work on the production network. (0x6F rather than 0x00)&lt;br /&gt;
* The protocol message header bytes are 0x0B110907 (instead of 0xF9BEB4D9) &lt;br /&gt;
* Minimum [[difficulty]] of 1.0 on testnet is equal to difficulty of 0.5 on mainnet. This means that the mainnet-equivalent of any testnet difficulty is half the testnet difficulty. In addition, if no block has been found in 20 minutes, the difficulty automatically resets back to the minimum for a single block, after which it returns to its previous value.&lt;br /&gt;
* A new genesis block&lt;br /&gt;
* The IsStandard() check is disabled so that non-standard transactions can be experimented with.&lt;br /&gt;
&lt;br /&gt;
==Genesis Block==&lt;br /&gt;
&lt;br /&gt;
Testnet uses a different genesis block to the main network. You can find it [https://www.biteasy.com/testnet/blocks/000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943 here] or [http://blockexplorer.com/testnet/b/0 here].&lt;br /&gt;
The testnet was [https://github.com/gavinandresen/bitcoin-git/commit/feeb761ba07af74a7cd78b8c8f7c2a961fd9ea1c reset with a new genesis block] for the 0.7 bitcoin release.&lt;br /&gt;
&lt;br /&gt;
==Size==&lt;br /&gt;
Testnet receives less transactions than the main block chain and is typically much smaller in size. As of January 2018 the size of the data on disk was 14GB, containing data for about 6 years worth of testnet activity. Downloading this data required about 12GB of network activity peaking at 2MB/s rate of transfer.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
* [https://bitcointalk.org/?topic=4483.0 Testnet in a box forum topic]&lt;br /&gt;
* [https://sourceforge.net/projects/bitcoin/files/Bitcoin/testnet-in-a-box/ Testnet-In-A-Box self-contained testnet]&lt;br /&gt;
* [https://github.com/freewil/bitcoin-testnet-box Forked/Updated testnet-box]&lt;br /&gt;
&lt;br /&gt;
===Wallets===&lt;br /&gt;
&lt;br /&gt;
Online testnet wallets to help you test your application.&lt;br /&gt;
&lt;br /&gt;
* [http://testnetwallet.com/ TestnetWallet.com]&lt;br /&gt;
* [https://CoPay.io/ CoPay.io] wallet supports TestNet accounts&lt;br /&gt;
&lt;br /&gt;
===Faucets===&lt;br /&gt;
&lt;br /&gt;
Once you&#039;re done with your test coins, it is a nice gesture to send them back to the faucets, so they become available to other developers.&lt;br /&gt;
* [http://tbtc.bitaps.com bitaps.com Testnet Faucet + double spend test tool]&lt;br /&gt;
* [http://bitcoinfaucet.uo1.net/ UO1 Testnet Faucet]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.mycelium.testnetwallet Mycelium Testnet Wallet for Android with integrated Testnet &amp;quot;faucet&amp;quot; function (Local Trader)]&lt;br /&gt;
* [https://testnet-faucet.mempool.co mempool.co testnet3 Faucet]&lt;br /&gt;
&lt;br /&gt;
Offline (2018-09-06):&lt;br /&gt;
&lt;br /&gt;
* [http://tpfaucet.appspot.com/ TP&#039;s TestNet Faucet]&lt;br /&gt;
* [http://kuttler.eu/bitcoin/btc/faucet/ nkuttler&#039;s Bitcoin Testnet Faucet], transactions are made through Joinmarket, a [[CoinJoin]] implementation&lt;br /&gt;
* [https://testnet.manu.backend.hamburg/faucet flyingkiwi&#039;s TestNet Faucet]&lt;br /&gt;
&lt;br /&gt;
Offline (2016-08-07):&lt;br /&gt;
&lt;br /&gt;
* [http://faucet.luis.im/ luis.im Mojocoin Testnet3 Faucet]&lt;br /&gt;
* [https://accounts.blockcypher.com/testnet-faucet BlockCypher Testnet Faucet], also provided as a [http://dev.blockcypher.com/#faucets Testnet faucet API] for test automation&lt;br /&gt;
&lt;br /&gt;
===Block explorers===&lt;br /&gt;
* [http://tbtc.bitaps.com/ Bitcoin Testnet Explorer on bitaps.com]&lt;br /&gt;
* [https://www.biteasy.com/testnet/blocks Biteasy.com Testnet Blockexplorer]&lt;br /&gt;
* [http://testnet.blockchain.info Blockchain.info Testnet Explorer]&lt;br /&gt;
* [http://tbtc.blockr.io/ Bitcoin Testnet on Blockr.io]&lt;br /&gt;
* [https://test-insight.bitpay.com/ Bitcoin Testnet on insight.bitpay.com]&lt;br /&gt;
* [https://www.blocktrail.com/tBTC BlockTrail Testnet Explorer, Testnet API and Testnet Faucet]&lt;br /&gt;
* [https://live.blockcypher.com/btc-testnet/ BlockCypher Testnet Explorer]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Hash_Time_Locked_Contracts&amp;diff=66754</id>
		<title>Hash Time Locked Contracts</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Hash_Time_Locked_Contracts&amp;diff=66754"/>
		<updated>2019-09-23T18:02:29Z</updated>

		<summary type="html">&lt;p&gt;Darosior: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Hash Time Locked Contract&#039;&#039;&#039; or &#039;&#039;&#039;HTLC&#039;&#039;&#039; is a class of payments that use [[hashlock]]s and [[timelock]]s to require that the receiver of a payment either acknowledge receiving the payment prior to a deadline by generating cryptographic proof of payment or forfeit the ability to claim the payment, returning it to the payer.&amp;lt;ref name=&amp;quot;russell_htlc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cryptographic proof of payment the receiver generates can then be used to trigger other actions in other payments, making HTLCs a powerful technique for producing&lt;br /&gt;
conditional payments in Bitcoin.&lt;br /&gt;
&lt;br /&gt;
== HTLCs in cross-chain atomic swaps ==&lt;br /&gt;
&lt;br /&gt;
[[Atomic cross-chain trading]] allows some amount of one cryptocurrency (such as bitcoin on [[mainnet]]) to be traded for some amount of cryptocurrency on another block chain (such as bitcoin on a [[sidechain]]).&lt;br /&gt;
&lt;br /&gt;
Descriptions of cross-chain atomic swaps are probably the origin of the technique now called HTLCs.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
== HTLCs in payment channels ==&lt;br /&gt;
&lt;br /&gt;
[[Payment channels]] already use timelocks, and it can be relatively simple conceptually to extend them with hashlocks. This provides the useful benefit of making payments routable across two or more payment channels, as done in the Lightning Network &amp;lt;ref name=&amp;quot;lightning_network_htlc&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
# Alice opens a payment channel to Bob, and Bob opens a payment channel to Charlie.  &lt;br /&gt;
# Alice wants to buy something from Charlie for 1000 satoshis.&lt;br /&gt;
# Charlie generates a random number and generates its SHA256 hash.  Charlie gives that hash to Alice.&lt;br /&gt;
# Alice uses her payment channel to Bob to pay him 1,000 satoshis, but she adds the hash Charlie gave her to the payment along with an extra condition: in order for Bob to claim the payment, he has to provide the data which was used to produce that hash.&lt;br /&gt;
# Bob uses his payment channel to Charlie to pay Charlie 1,000 satoshis, and Bob adds a copy of the same condition that Alice put on the payment she gave Bob.&lt;br /&gt;
# Charlie has the original data that was used to produce the hash (called a pre-image), so Charlie can use it to finalize his payment and fully receive the payment from Bob.  By doing so, Charlie necessarily makes the pre-image available to Bob.&lt;br /&gt;
# Bob uses the pre-image to finalize his payment from Alice&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;russell_htlc&amp;quot;&amp;gt;[https://rusty.ozlabs.org/?p=462 Lightning Networks Part II: Hashed Timelock Contracts (HTLCs)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;lightning_network_htlc&amp;quot;&amp;gt;[https://lightning.network/lightning-network-paper.pdf#page=30 Hashed Timelock Contract (HTLC) in the Lightning Network paper]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Hash_Time_Locked_Contracts&amp;diff=66753</id>
		<title>Hash Time Locked Contracts</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Hash_Time_Locked_Contracts&amp;diff=66753"/>
		<updated>2019-09-23T17:59:45Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add a reference to the Lightning Network paper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Hash Time Locked Contract&#039;&#039;&#039; or &#039;&#039;&#039;HTLC&#039;&#039;&#039; is a class of payments that use [[hashlock]]s and [[timelock]]s to require that the receiver of a payment either acknowledge receiving the payment prior to a deadline by generating cryptographic proof of payment or forfeit the ability to claim the payment, returning it to the payer.&amp;lt;ref name=&amp;quot;russell_htlc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cryptographic proof of payment the receiver generates can then be used to trigger other actions in other payments, making HTLCs a powerful technique for producing&lt;br /&gt;
conditional payments in Bitcoin.&lt;br /&gt;
&lt;br /&gt;
== HTLCs in cross-chain atomic swaps ==&lt;br /&gt;
&lt;br /&gt;
[[Atomic cross-chain trading]] allows some amount of one cryptocurrency (such as bitcoin on [[mainnet]]) to be traded for some amount of cryptocurrency on another block chain (such as bitcoin on a [[sidechain]]).&lt;br /&gt;
&lt;br /&gt;
Descriptions of cross-chain atomic swaps are probably the origin of the technique now called HTLCs.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
== HTLCs in payment channels ==&lt;br /&gt;
&lt;br /&gt;
[[Payment channels]] already use timelocks, and it can be relatively simple conceptually to extend them with hashlocks.  This provides the useful benefit of making payments routable across two or more payment channels.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
# Alice opens a payment channel to Bob, and Bob opens a payment channel to Charlie.  &lt;br /&gt;
# Alice wants to buy something from Charlie for 1000 satoshis.&lt;br /&gt;
# Charlie generates a random number and generates its SHA256 hash.  Charlie gives that hash to Alice.&lt;br /&gt;
# Alice uses her payment channel to Bob to pay him 1,000 satoshis, but she adds the hash Charlie gave her to the payment along with an extra condition: in order for Bob to claim the payment, he has to provide the data which was used to produce that hash.&lt;br /&gt;
# Bob uses his payment channel to Charlie to pay Charlie 1,000 satoshis, and Bob adds a copy of the same condition that Alice put on the payment she gave Bob.&lt;br /&gt;
# Charlie has the original data that was used to produce the hash (called a pre-image), so Charlie can use it to finalize his payment and fully receive the payment from Bob.  By doing so, Charlie necessarily makes the pre-image available to Bob.&lt;br /&gt;
# Bob uses the pre-image to finalize his payment from Alice&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;russell_htlc&amp;quot;&amp;gt;[https://rusty.ozlabs.org/?p=462 Lightning Networks Part II: Hashed Timelock Contracts (HTLCs)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;lightning_network_htlc&amp;quot;&amp;gt;[https://lightning.network/lightning-network-paper.pdf#page=30]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66750</id>
		<title>NLockTime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66750"/>
		<updated>2019-09-23T13:00:58Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add more details about the lock time interpretation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nLockTime&#039;&#039;&#039; is a parameter of a transaction, that, if any input indicates so (by having nSequence not equal to UINT_MAX), mandates a minimal time (specified in either unix time or block height), before which the transaction cannot be accepted into a block.  If all inputs in a transaction have nSequence equal to UINT_MAX, then nLockTime is ignored.&lt;br /&gt;
&lt;br /&gt;
Since [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68], the lock time can either be absolute or relative. Given a transaction,&lt;br /&gt;
* If the most significant bit (&amp;lt;code&amp;gt;1&amp;lt;&amp;lt;31&amp;lt;/code&amp;gt;) of the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; field is set (if the lock time is absolute)&lt;br /&gt;
** If &amp;lt;code&amp;gt;nLockTime &amp;lt; 500000000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Specifies the block number at which this transaction can be spent&lt;br /&gt;
** Otherwise&lt;br /&gt;
*** Specifies the UNIX timestamp at which this transaction can be spent&lt;br /&gt;
* Otherwise (if the lock time is relative)&lt;br /&gt;
** If the 23rd bit (&amp;lt;code&amp;gt;1&amp;lt;&amp;lt;22&amp;lt;/code&amp;gt;) is not set&lt;br /&gt;
*** The last 16 bits of the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; field specify a relative time in units of 512 seconds. The transaction can only be included in a block if &amp;lt;code&amp;gt;spending_tx_block_time &amp;gt; spent_tx_block_time + nLockTime * 512&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Otherwise&lt;br /&gt;
*** The last 16 bits of the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; field specify a relative block height before which the transaction can not be included in a block. In other words it can be included if &amp;lt;code&amp;gt;spending_tx_block_height &amp;gt; spent_tx_block_height + nLockTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* lock_time in [[Protocol_specification#tx|the protocol specification]]&lt;br /&gt;
* [[Timelock]]&lt;br /&gt;
* [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68]&lt;br /&gt;
* The CHECKLOCKTIMEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki BIP65]&lt;br /&gt;
* The CHECKSEQUENCEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-00112.mediawiki BIP112]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
{{lowercase}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66749</id>
		<title>NLockTime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66749"/>
		<updated>2019-09-23T12:49:59Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Correct the BIP68 additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nLockTime&#039;&#039;&#039; is a parameter of a transaction, that, if any input indicates so (by having nSequence not equal to UINT_MAX), mandates a minimal time (specified in either unix time or block height), before which the transaction cannot be accepted into a block.  If all inputs in a transaction have nSequence equal to UINT_MAX, then nLockTime is ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68], the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; can specify a relative lock time. Given a transaction,&lt;br /&gt;
* If the most significant bit (1&amp;lt;&amp;lt;31) is not set&lt;br /&gt;
** If the 23rd bit (1&amp;lt;&amp;lt;22) is set&lt;br /&gt;
*** The last 16 bits of the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; field specify a relative time in units of 512 seconds. The transaction can only be included in a block if &amp;lt;code&amp;gt;spending_tx_block_time &amp;gt; spent_tx_block_time + nLockTime * 512&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Otherwise&lt;br /&gt;
*** The last 16 bits of the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; field specify a relative block height before which the transaction can not be included in a block. In other words it can be included if &amp;lt;code&amp;gt;spending_tx_block_height &amp;gt; spent_tx_block_height + nLockTime&amp;lt;/code&amp;gt;&lt;br /&gt;
* Otherwise&lt;br /&gt;
** the transaction can be included in any block&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* lock_time in [[Protocol_specification#tx|the protocol specification]]&lt;br /&gt;
* [[Timelock]]&lt;br /&gt;
* [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68]&lt;br /&gt;
* The CHECKLOCKTIMEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki BIP65]&lt;br /&gt;
* The CHECKSEQUENCEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-00112.mediawiki BIP112]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
{{lowercase}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66748</id>
		<title>NLockTime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=NLockTime&amp;diff=66748"/>
		<updated>2019-09-23T11:47:03Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Updated the page to reflect the actual consensus meaning of the `nLockTime` field.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nLockTime&#039;&#039;&#039; is a parameter of a transaction, that, if any input indicates so (by having nSequence not equal to UINT_MAX), mandates a minimal time (specified in either unix time or block height), before which the transaction cannot be accepted into a block.  If all inputs in a transaction have nSequence equal to UINT_MAX, then nLockTime is ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68], a new meaning has been given to the &#039;&#039;&#039;nLockTime&#039;&#039;&#039; and &#039;&#039;&#039;nSequence&#039;&#039;&#039; fields. Given a transaction,&lt;br /&gt;
* If the most significant bit (1&amp;lt;&amp;lt;31) is set&lt;br /&gt;
** If the 23rd bit (1&amp;lt;&amp;lt;22) is set&lt;br /&gt;
*** Specifies a time in units of 512 seconds. The transaction can only be included in a block if &amp;lt;code&amp;gt;block_time &amp;gt; nLockTime * 512&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Otherwise&lt;br /&gt;
*** Specifies a block height before which the transaction can not be included in a block.&lt;br /&gt;
* Otherwise&lt;br /&gt;
** the transaction can be included in any block&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* lock_time in [[Protocol_specification#tx|the protocol specification]]&lt;br /&gt;
* [[Timelock]]&lt;br /&gt;
* [https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68]&lt;br /&gt;
* The CHECKLOCKTIMEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki BIP65]&lt;br /&gt;
* The CHECKSEQUENCEVERIFY opcode in [https://github.com/bitcoin/bips/blob/master/bip-00112.mediawiki BIP112]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
{{lowercase}}&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=66733</id>
		<title>Bech32 adoption</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=66733"/>
		<updated>2019-09-19T16:02:09Z</updated>

		<summary type="html">&lt;p&gt;Darosior: /* Exchanges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bech32]] is a new bitcoin [[address]] format specified by [[BIP 0173]]. This page tracks the adoption of [[Bech32]].&lt;br /&gt;
&lt;br /&gt;
Ideally wallets and services would first support &#039;&#039;sending to&#039;&#039; bech32 addresses. After almost everything can send to, then people may be willing to adopt bech32 widely 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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Core || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Knots || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Armory || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| JoinMarket || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| GreenAddress || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Breadwallet || {{Yes}} || {{No}} || https://twitter.com/udiWertheimer/status/975810157941796864&lt;br /&gt;
|-&lt;br /&gt;
| Samourai Wallet || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinomi || {{Yes}} || {{Yes}} || [https://www.reddit.com/r/Bitcoin/comments/865qn1/coinomi_wallet_beta_has_segwit_support/ reddit source]&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Casa || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Mycelium || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://play.google.com/store/apps/details?id=de.schildbach.wallet Bitcoin Wallet for Android] || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Wasabi Wallet || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trust Wallet || {{Yes}} || {{Yes}} || [https://trustwallet.com/blog/trust-wallet-adds-support-for-btc-ltc-bch official blog]&lt;br /&gt;
|-&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Trezor web wallet || {{Acceptable|PR Merged}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger chrome app || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger Live (desktop app) || {{Yes}} || {{Yes}} || Experimental feature&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey chrome app || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox Desktop app || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trezor + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Archos + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coldcard + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Web Wallets ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Coinapult  || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coin.Space || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitGo || {{Yes}} || {{Yes}} || Full support on v2 platform, no plans to add support on v1 platform. Also see: https://blog.bitgo.com/native-segwit-addresses-via-bitgos-api-4946f2007be9&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.info web wallet || {{Yes}} || {{No}} || https://twitter.com/provoost/status/1037802325874761728&lt;br /&gt;
|-&lt;br /&gt;
| HolyTransaction || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://coinb.in Coinb.in] || {{Yes}} || {{Yes}} || open source JavaScript implementation&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1Fox || {{Yes}} || {{No}} || https://1fox.com/?c=en/content/blog&amp;amp;id=12&lt;br /&gt;
|-&lt;br /&gt;
| Anycoin Direct || {{Yes}} || {{No}} || https://anycoindirect.eu/en/news/details/segwit-activated&lt;br /&gt;
|-&lt;br /&gt;
| BitBargain.co.uk || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin.de || {{Yes}} || {{No}} || https://bitcoinblog.de/2018/08/10/bitcoin-de-aktiviert-segwit-kunden-sparen-gebuehren/&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitMEX || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bittylicious || {{Yes}} || {{No}} || https://twitter.com/Bittylicious_/status/998881327347888128&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitwage || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bisq || {{No}} || {{No}} || https://github.com/bisq-network/bisq-desktop/issues/1139 https://bisq.community/t/bech32-address-support/6521&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase.com || {{Yes}} || {{No}} || https://twitter.com/diogorsergio/status/983052769262292992 (Note that Coinbase commerce does not support sending to bech32)&lt;br /&gt;
|-&lt;br /&gt;
| CoinFalcon || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinfloor || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinsbank.com || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Flyp.me || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| GDax || {{Yes}} || {{No}} || https://www.reddit.com/r/Bitcoin/comments/8c738k/coinbase_gdax_already_allows_sending_to_bc1/&lt;br /&gt;
|-&lt;br /&gt;
| Gemini || {{Yes}} || {{Yes}} || 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}} ||&lt;br /&gt;
|-&lt;br /&gt;
| HitBTC || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Hodl Hodl || {{Yes}} || {{Yes}} || https://medium.com/@hodlhodl/hodl-hodl-segwit-compatible-exchange-a2231968ac56&lt;br /&gt;
|-&lt;br /&gt;
| Itbit || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Kraken || {{Yes}} || {{No}} || https://twitter.com/krakenfx/status/1060306827848470528&lt;br /&gt;
|-&lt;br /&gt;
| Liberalcoins || {{Yes}} || {{Yes}} || https://liberalcoins.com&lt;br /&gt;
|-&lt;br /&gt;
| Localbitcoins.com || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Paxful.com || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex.com || {{Yes}} || {{No}} || https://www.reddit.com/r/Bitcoin/comments/a3jhcf/you_can_now_withdraw_from_poloniex_to_bech32/&lt;br /&gt;
|-&lt;br /&gt;
| TheRockTrading.com || {{Yes}} || {{Yes}} || https://twitter.com/TheRockTrading/status/976787499648512003&lt;br /&gt;
|-&lt;br /&gt;
| Walltime || {{Yes}} || {{Yes}} || https://walltime.info&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| GenesisCoin || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| General Bytes || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Lamassu Douro || {{No}} || {{No}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blockchain Explorers ===&lt;br /&gt;
&lt;br /&gt;
For trying these out 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;. And 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;
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 !! Index !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Apirone.com || {{Yes}} || {{Yes}} || Bitcoin Block Explorer with SegWit support https://apirone.com&lt;br /&gt;
|-&lt;br /&gt;
| bitaps.com || {{Yes}} || {{Yes}} || https://bitaps.com&lt;br /&gt;
|-&lt;br /&gt;
| Bitflyer || {{Yes}} || {{Yes}} || https://chainflyer.bitflyer.jp/&lt;br /&gt;
|-&lt;br /&gt;
| Bitupper Explorer || {{Yes}} || {{Yes}} || https://bitupper.com/en/explorer/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.info || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockchair || {{Yes}} || {{Yes}} || https://blockchair.com/&lt;br /&gt;
|-&lt;br /&gt;
| Blockcypher || {{No}} || {{No}} || https://live.blockcypher.com/btc&lt;br /&gt;
|-&lt;br /&gt;
| Blockonomics || {{Yes}} || {{Yes}} || https://www.blockonomics.co&lt;br /&gt;
|-&lt;br /&gt;
| Blockpath || {{Yes}} || {{Yes}} || https://blockpath.com&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{Yes}} || {{Yes}} || https://BTC.com&lt;br /&gt;
|-&lt;br /&gt;
| Esplora || {{Yes}} || {{Yes}} || Open source explorer, instances are https://blockstream.info/ and https://www.localbitcoinschain.com/&lt;br /&gt;
|-&lt;br /&gt;
| chaindex || {{Yes}} || {{Yes}} || https://chaindex.com/blockchain/&lt;br /&gt;
|-&lt;br /&gt;
| Insight || {{No}} || {{No}} || Open source explorer, instances include https://insight.bitpay.com/&lt;br /&gt;
|-&lt;br /&gt;
| OXT || {{Yes}} || {{Yes}} || https://oxt.me/&lt;br /&gt;
|-&lt;br /&gt;
| Tradeblock || {{No}} || {{No}} || https://tradeblock.com/bitcoin&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 !! Invoice addresses !! Withdrawal addresses !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://apirone.com Apirone] || {{Yes}} || {{Yes}} || Payment notifications, Merchant dashboard, Bitcoin plugins for Magento, WooCommerce, OpenCart 2, Opencart 3.x, Virtuemart etc.&lt;br /&gt;
|-&lt;br /&gt;
| [https://bitaps.com Bitaps] || {{Yes}} || {{Yes}} || Payment forwarding API, Wallet API, fault tolerance callback.&lt;br /&gt;
|-&lt;br /&gt;
| [https://coingate.com CoinGate] || {{No}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://cryptochill.com CryptoChill] || {{Yes}} || {{Yes}} || Highly customizable Bitcoin and Lightning Network payment gateway. Multi-sig, HD wallets, API, SDK.&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 !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.btc.com/ BTC.com Pool] || {{No}} || &lt;br /&gt;
|-&lt;br /&gt;
| [http://ckpool.org/ Ckpool] || {{Yes}} || &lt;br /&gt;
|-&lt;br /&gt;
| [https://kano.is/ KanoPool] || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://poolin.com/ Poolin] || {{Yes}} || [https://bitcointalk.org/index.php?topic=5169994.msg52184844#msg52184844 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://slushpool.com/ Slush Pool] || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://ukrpool.com/ Ukr Pool] || {{Yes}} || [https://bitcointalk.org/index.php?topic=5124825.msg51358033#msg51358033 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.viabtc.com/ ViaBTC Pool] || {{No}} ||&lt;br /&gt;
|}&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;
| Crypto-Games.net || {{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;
=== References ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=66720</id>
		<title>Bech32 adoption</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Bech32_adoption&amp;diff=66720"/>
		<updated>2019-09-16T15:44:29Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Add that armory supports sending to bech32 addresses : https://bitcointalk.org/index.php?topic=5088934.0.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bech32]] is a new bitcoin [[address]] format specified by [[BIP 0173]]. This page tracks the adoption of [[Bech32]].&lt;br /&gt;
&lt;br /&gt;
Ideally wallets and services would first support &#039;&#039;sending to&#039;&#039; bech32 addresses. After almost everything can send to, then people may be willing to adopt bech32 widely 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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Core || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin Knots || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Armory || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| JoinMarket || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| GreenAddress || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Breadwallet || {{Yes}} || {{No}} || https://twitter.com/udiWertheimer/status/975810157941796864&lt;br /&gt;
|-&lt;br /&gt;
| Samourai Wallet || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinomi || {{Yes}} || {{Yes}} || [https://www.reddit.com/r/Bitcoin/comments/865qn1/coinomi_wallet_beta_has_segwit_support/ reddit source]&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Casa || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Mycelium || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://play.google.com/store/apps/details?id=de.schildbach.wallet Bitcoin Wallet for Android] || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Wasabi Wallet || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trust Wallet || {{Yes}} || {{Yes}} || [https://trustwallet.com/blog/trust-wallet-adds-support-for-btc-ltc-bch official blog]&lt;br /&gt;
|-&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Trezor web wallet || {{Acceptable|PR Merged}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger chrome app || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger Live (desktop app) || {{Yes}} || {{Yes}} || Experimental feature&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey chrome app || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox Desktop app || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trezor + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Ledger + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitBox + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| KeepKey + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Archos + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coldcard + Electrum || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Web Wallets ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Send to !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Coinapult  || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coin.Space || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitGo || {{Yes}} || {{Yes}} || Full support on v2 platform, no plans to add support on v1 platform. Also see: https://blog.bitgo.com/native-segwit-addresses-via-bitgos-api-4946f2007be9&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.info web wallet || {{Yes}} || {{No}} || https://twitter.com/provoost/status/1037802325874761728&lt;br /&gt;
|-&lt;br /&gt;
| HolyTransaction || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://coinb.in Coinb.in] || {{Yes}} || {{Yes}} || open source JavaScript implementation&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1Fox || {{Yes}} || {{No}} || https://1fox.com/?c=en/content/blog&amp;amp;id=12&lt;br /&gt;
|-&lt;br /&gt;
| Anycoin Direct || {{Yes}} || {{No}} || https://anycoindirect.eu/en/news/details/segwit-activated&lt;br /&gt;
|-&lt;br /&gt;
| BitBargain.co.uk || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin.de || {{Yes}} || {{No}} || https://bitcoinblog.de/2018/08/10/bitcoin-de-aktiviert-segwit-kunden-sparen-gebuehren/&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BitMEX || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bittylicious || {{Yes}} || {{No}} || https://twitter.com/Bittylicious_/status/998881327347888128&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitwage || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bisq || {{No}} || {{No}} || https://github.com/bisq-network/bisq-desktop/issues/1139 https://bisq.community/t/bech32-address-support/6521&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase.com || {{Yes}} || {{No}} || https://twitter.com/diogorsergio/status/983052769262292992&lt;br /&gt;
|-&lt;br /&gt;
| CoinFalcon || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinfloor || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinsbank.com || {{Yes}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Flyp.me || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| GDax || {{Yes}} || {{No}} || https://www.reddit.com/r/Bitcoin/comments/8c738k/coinbase_gdax_already_allows_sending_to_bc1/&lt;br /&gt;
|-&lt;br /&gt;
| Gemini || {{Yes}} || {{Yes}} || 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}} ||&lt;br /&gt;
|-&lt;br /&gt;
| HitBTC || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Hodl Hodl || {{Yes}} || {{Yes}} || https://medium.com/@hodlhodl/hodl-hodl-segwit-compatible-exchange-a2231968ac56&lt;br /&gt;
|-&lt;br /&gt;
| Itbit || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Kraken || {{Yes}} || {{No}} || https://twitter.com/krakenfx/status/1060306827848470528&lt;br /&gt;
|-&lt;br /&gt;
| Liberalcoins || {{Yes}} || {{Yes}} || https://liberalcoins.com&lt;br /&gt;
|-&lt;br /&gt;
| Localbitcoins.com || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Paxful.com || {{Evaluating|??}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex.com || {{Yes}} || {{No}} || https://www.reddit.com/r/Bitcoin/comments/a3jhcf/you_can_now_withdraw_from_poloniex_to_bech32/&lt;br /&gt;
|-&lt;br /&gt;
| TheRockTrading.com || {{Yes}} || {{Yes}} || https://twitter.com/TheRockTrading/status/976787499648512003&lt;br /&gt;
|-&lt;br /&gt;
| Walltime || {{Yes}} || {{Yes}} || https://walltime.info&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 !! Create/receive !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| GenesisCoin || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| General Bytes || {{No}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Lamassu Douro || {{No}} || {{No}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blockchain Explorers ===&lt;br /&gt;
&lt;br /&gt;
For trying these out 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;. And 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;
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 !! Index !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Apirone.com || {{Yes}} || {{Yes}} || Bitcoin Block Explorer with SegWit support https://apirone.com&lt;br /&gt;
|-&lt;br /&gt;
| bitaps.com || {{Yes}} || {{Yes}} || https://bitaps.com&lt;br /&gt;
|-&lt;br /&gt;
| Bitflyer || {{Yes}} || {{Yes}} || https://chainflyer.bitflyer.jp/&lt;br /&gt;
|-&lt;br /&gt;
| Bitupper Explorer || {{Yes}} || {{Yes}} || https://bitupper.com/en/explorer/bitcoin&lt;br /&gt;
|-&lt;br /&gt;
| blockchain.info || {{Yes}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockchair || {{Yes}} || {{Yes}} || https://blockchair.com/&lt;br /&gt;
|-&lt;br /&gt;
| Blockcypher || {{No}} || {{No}} || https://live.blockcypher.com/btc&lt;br /&gt;
|-&lt;br /&gt;
| Blockonomics || {{Yes}} || {{Yes}} || https://www.blockonomics.co&lt;br /&gt;
|-&lt;br /&gt;
| Blockpath || {{Yes}} || {{Yes}} || https://blockpath.com&lt;br /&gt;
|-&lt;br /&gt;
| BTC.com || {{Yes}} || {{Yes}} || https://BTC.com&lt;br /&gt;
|-&lt;br /&gt;
| Esplora || {{Yes}} || {{Yes}} || Open source explorer, instances are https://blockstream.info/ and https://www.localbitcoinschain.com/&lt;br /&gt;
|-&lt;br /&gt;
| chaindex || {{Yes}} || {{Yes}} || https://chaindex.com/blockchain/&lt;br /&gt;
|-&lt;br /&gt;
| Insight || {{No}} || {{No}} || Open source explorer, instances include https://insight.bitpay.com/&lt;br /&gt;
|-&lt;br /&gt;
| OXT || {{Yes}} || {{Yes}} || https://oxt.me/&lt;br /&gt;
|-&lt;br /&gt;
| Tradeblock || {{No}} || {{No}} || https://tradeblock.com/bitcoin&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 !! Invoice addresses !! Withdrawal addresses !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://apirone.com Apirone] || {{Yes}} || {{Yes}} || Payment notifications, Merchant dashboard, Bitcoin plugins for Magento, WooCommerce, OpenCart 2, Opencart 3.x, Virtuemart etc.&lt;br /&gt;
|-&lt;br /&gt;
| [https://bitaps.com Bitaps] || {{Yes}} || {{Yes}} || Payment forwarding API, Wallet API, fault tolerance callback.&lt;br /&gt;
|-&lt;br /&gt;
| [https://coingate.com CoinGate] || {{No}} || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://cryptochill.com CryptoChill] || {{Yes}} || {{Yes}} || Highly customizable Bitcoin and Lightning Network payment gateway. Multi-sig, HD wallets, API, SDK.&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 !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.btc.com/ BTC.com Pool] || {{No}} || &lt;br /&gt;
|-&lt;br /&gt;
| [http://ckpool.org/ Ckpool] || {{Yes}} || &lt;br /&gt;
|-&lt;br /&gt;
| [https://kano.is/ KanoPool] || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://poolin.com/ Poolin] || {{Yes}} || [https://bitcointalk.org/index.php?topic=5169994.msg52184844#msg52184844 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://slushpool.com/ Slush Pool] || {{Yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://ukrpool.com/ Ukr Pool] || {{Yes}} || [https://bitcointalk.org/index.php?topic=5124825.msg51358033#msg51358033 bitcointalk source]&lt;br /&gt;
|-&lt;br /&gt;
| [https://pool.viabtc.com/ ViaBTC Pool] || {{No}} ||&lt;br /&gt;
|}&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;
| Crypto-Games.net || {{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;
=== References ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Lightning_Network&amp;diff=66643</id>
		<title>Lightning Network</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Lightning_Network&amp;diff=66643"/>
		<updated>2019-07-19T09:41:05Z</updated>

		<summary type="html">&lt;p&gt;Darosior: Corrected a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lightning Network&#039;&#039;&#039; is a proposed implementation of [[Hashed Timelock Contracts]] (HTLCs) with bi-directional [[payment channels]] which allows payments to be securely routed across multiple peer-to-peer payment channels.&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;&amp;gt;[https://lightning.network/lightning-network-paper.pdf Lightning Network paper, v0.5.9.1]&amp;lt;br&amp;gt;Joseph Poon &amp;amp; Thaddeus Dryja&amp;lt;br&amp;gt;&#039;&#039;Retrieved 2016-04-10&#039;&#039;&amp;lt;/ref&amp;gt;  This allows the formation of a network where any peer on the network can pay any other peer even if they don&#039;t directly have a channel open between each other. As of March 2019, there were more than 37,000 channels carrying more than 764 bitcoins.&amp;lt;ref name=&amp;quot;p2sh_data&amp;quot;&amp;gt;[https://p2sh.info/dashboard/db/lightning-network?orgId=1&amp;amp;from=1514764800000&amp;amp;to=1550915801588 Lightning Network - Sum of channels value]&amp;lt;br&amp;gt;Lightning Network - Sum of channels value&amp;lt;br&amp;gt;&#039;&#039;Retrieved 2019-03-08&#039;&#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key features == &lt;br /&gt;
Key features of the Lightning Network proposal include,&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Rapid payments:&#039;&#039;&#039; payments within an established channel can be made almost as fast as data can travel over the Internet between the two peers.&lt;br /&gt;
* &#039;&#039;&#039;No third-party trust:&#039;&#039;&#039; the two peers in a channel pay each other directly using regular Bitcoin transactions (of which only one is broadcast) so at no point does any third party control their funds.&lt;br /&gt;
* &#039;&#039;&#039;Reduced blockchain load:&#039;&#039;&#039; only channel open transactions, channel close transactions, and (hopefully infrequent) anti-fraud respends need to be committed to the blockchain, allowing all other payments within Lightning Network channels to remain uncommitted.  This allows Lightning Network users to make frequent payments secured by Bitcoin without placing excessive load on full nodes which must process every transaction on the blockchain.&lt;br /&gt;
* &#039;&#039;&#039;Channels can stay open indefinitely:&#039;&#039;&#039; as long as the two parties in the channel continue to cooperate with each other, the channel can stay open indefinitely -- there is no mandatory timeout period.  This can further reduce the load on the blockchain as well as allow the fees for opening and closing the channel to be amortized over a longer period of time.&lt;br /&gt;
* &#039;&#039;&#039;Rapid cooperative closes:&#039;&#039;&#039; if both parties cooperate, a channel can be closed immediately (with the parties likely wanting to wait for one or more confirmations to ensure the channel closed in the correct state). Non-cooperative closes (such as when one party disappears) are also possible but they take longer.&lt;br /&gt;
* &#039;&#039;&#039;Outsourceable enforcement:&#039;&#039;&#039; if one party closes a channel in an old state in an attempt to steal money, the other party has to act within a defined period of time to block the attempted theft.  This function can be outsourced to a third-party without giving them control over any funds, allowing wallets to safely go offline for periods longer than the defined period.&lt;br /&gt;
* &#039;&#039;&#039;Onion-style routing:&#039;&#039;&#039; payment routing information can be encrypted in a nested fashion so that intermediary nodes only know who they received a routable payment from and who to send it to next, preventing those intermediary nodes from knowing who the originator or destination is (provided the intermediaries didn&#039;t compare records).&lt;br /&gt;
* &#039;&#039;&#039;Multisignature capable:&#039;&#039;&#039; each party can require that their payments into the channel be signed by multiple keys&amp;lt;ref name=&amp;quot;poon_multisig&amp;quot;&amp;gt;[https://lists.linuxfoundation.org/pipermail/lightning-dev/2016-January/000403.html 2-of-3 Instant Escrow, or How to Do &amp;quot;2-of-3 Multisig Contract&amp;quot; Equivalent on Lightning]&amp;lt;br&amp;gt;Joseph Poon&amp;lt;br&amp;gt;&#039;&#039;Retrieved 2016-04-11&#039;&#039;&amp;lt;/ref&amp;gt;, giving them access to additional security techniques.&lt;br /&gt;
* &#039;&#039;&#039;Securely cross blockchains:&#039;&#039;&#039; payments can be routed across more than one blockchain (including altcoins and sidechains) as long as all the chains support the same hash function to use for the hash lock, as well as the ability to create time locks.&lt;br /&gt;
* &#039;&#039;&#039;Sub-satoshi payments:&#039;&#039;&#039; payments can be made conditional upon the outcome of a random event, allowing probabilistic payments.&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt;  For example, Alice can pay Bob 0.1 satoshi by creating a 1-satoshi payment with 10-to-1 odds so that 90% of the time she does this she pays him 0 satoshis and 10% of the time she pays him 1 satoshi for an average payment of 0.1 satoshis.&lt;br /&gt;
* &#039;&#039;&#039;Single-funded channels:&#039;&#039;&#039; when Alice needs to send a payment to Bob and doesn&#039;t currently have a way to pay him through the Lightning Network (whether because she can&#039;t reach him or because she doesn&#039;t have enough money in an existing channel), she can make a regular on-chain payment that establishes a channel without Bob needing to add any of his funds to the channel. Alice only uses 12 bytes more than she would for a non-Lightning direct payment and Bob would only need about 25 more [[segwit]] virtual bytes to close the channel than he would had he received a non-Lightning direct payment.&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This section attempts to document the most frequently used terms found in Lightning Network literature that may not be familiar to a general technical audience, including both the new terms created by Lightning Network designers as well as pre-existing terms that may not be well known from Bitcoin, cryptography, network routing, and other fields.&lt;br /&gt;
&lt;br /&gt;
The list below should be in alphabetical order. Any commonly-used synonyms or analogs for a term are placed in parenthesis after the term.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bi-directional payment channel:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; a payment channel where payments can flow both directions, from Alice to Bob and back to Alice. This is contrasted with Spillman-style and CLTV-style payment channels where payments can only go one direction and once Alice has paid Bob all of the bitcoins she deposited in the channel funding transaction, the channel is no longer useful and so will be closed.&lt;br /&gt;
* &#039;&#039;&#039;Breach Remedy Transaction:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; the transaction Alice creates when Mallory attempts to steal her money by having an old version of the channel state committed to the blockchain. Alice&#039;s breach remedy transaction spends all the money that Mallory received but which Mallory can&#039;t spend yet because his unilateral spend is still locked by a relative locktime using &amp;lt;code&amp;gt;OP_CSV&amp;lt;/code&amp;gt;. This is the third of the maximum of three on-chain transactions needed to maintain a Lightning channel; it only needs to be used in the case of attempted fraud (contract breach).&lt;br /&gt;
* &#039;&#039;&#039;Channel&#039;&#039;&#039; (Lightning channel&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt;, payment channel&amp;lt;ref name=&amp;quot;spillman_channel&amp;quot;&amp;gt;[https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2013-April/002433.html Anti DoS for tx replacement]&amp;lt;br&amp;gt;Jeremy Spillman&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt;) a communication channel that allows two parties to make many secure payments between each other in exchange for making only a few transactions on the blockchain.&lt;br /&gt;
* &#039;&#039;&#039;Commitment Transaction:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; a transaction created collaboratively by Alice and Bob each time they update the state of the channel; it records their current balances within the channel. The &#039;&#039;&#039;Initial Commitment Transaction&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; is the first of these transactions; it records the initial balances within the channel. This is the second of the maximum of three on-chain transactions needed to maintain a Lightning channel; it can be combined with a &#039;&#039;funding transaction&#039;&#039; for a new channel under the cooperative conditions necessary to create an &#039;&#039;exercise settlement transaction&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Contract:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;szabo_smart_contracts&amp;quot;&amp;gt;[http://szabo.best.vwh.net/smart_contracts_idea.html The Idea of Smart Contracts]&amp;lt;br&amp;gt;Nick Szabo&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; an agreement between two or more entities to use Bitcoin transactions in a certain way, usually a way that allows Bitcoin&#039;s automated consensus to enforce some or all terms in the contract. Often called a &#039;&#039;smart contract&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;CSV:&#039;&#039;&#039; (&amp;lt;code&amp;gt;OP_CheckSequenceVerify&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OP_CSV&amp;lt;/code&amp;gt;)&amp;lt;ref name=&amp;quot;bip68&amp;quot;/&amp;gt; a opcode that allows an output to conditionally specify how long it must be part of the blockchain before an input spending it may be added to the blockchain. See &#039;&#039;relative locktime.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Delivery Transaction:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; not really a transaction but rather the name for the outputs in the &#039;&#039;commitment transaction&#039;&#039; which Alice and Bob receive if one of them closes the channel unilaterally in the correct (current) state. If the channel is closed in an old state (indicating possible fraud), a &#039;&#039;breach remedy transaction&#039;&#039; will be generated from the output that would have paid the party closing the channel. If the channel is closed cooperatively, they&#039;ll create an &#039;&#039;exercise settlement transaction&#039;&#039; instead.&lt;br /&gt;
* &#039;&#039;&#039;Dispute period:&#039;&#039;&#039; (dispute resolution period&amp;lt;ref name=&amp;quot;poon_time_bitcoin_ln&amp;quot;&amp;gt;[https://lightning.network/lightning-network-presentation-time-2015-07-06.pdf Time, Bitcoin, and the Lightning Network]&amp;lt;br&amp;gt;Joseph Poon&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt;) the period of time that Alice has to get her &#039;&#039;breach remedy transaction&#039;&#039; added to the blockchain after Mallory has an old &#039;&#039;commitment transaction&#039;&#039; added to the blockchain. If the dispute period ends without a breach remedy transaction being added to the blockchain, Mallory can spend the funds he received from the old commitment transaction.&lt;br /&gt;
* &#039;&#039;&#039;Dual-funded channel:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;&amp;gt;[https://docs.google.com/presentation/d/1G4xchDGcO37DJ2lPC_XYyZIUkJc2khnLrCaZXgvDN0U/edit?pref=2&amp;amp;pli=1#slide=id.g85f425098_0_2 LN as a Directed Graph: Single-Funded Channel Topology]&amp;lt;br&amp;gt;Thaddeus Dryja&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; a channel opened by a &#039;&#039;funding transaction&#039;&#039; containing inputs from both Alice and Bob. Compare to a &#039;&#039;single-funded channel&#039;&#039; where only Alice&#039;s inputs contribute to the balance of the channel.&lt;br /&gt;
* &#039;&#039;&#039;Encumbrance:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[http://chimera.labs.oreilly.com/books/1234000001802/ch02.html Mastering Bitcoin, Chapter 2: How Bitcoin Works]&amp;lt;br&amp;gt;Andreas Antonopoulos&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; a generic name for any conditions that must be satisfied before a bitcoin output may be spent. Early Bitcoin transactions placed all their conditions in the scriptPubKey; later the introduction of P2SH allowed conditions to be added in a redeemScript which the scriptPubKey committed to; the introduction of soft fork [[segwit]] will add a similar mechanism for detached conditions that the scriptPubKey commits to; in addition, there are even more novel ways to add conditions to outputs that are discussed but rarely used. The term &amp;amp;quot;encumbrance&amp;amp;quot; allows specifying what the conditions do without fussing over exactly where the conditions appear in a serialized transaction.&lt;br /&gt;
* &#039;&#039;&#039;Exercise Settlement Transaction:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; a form of the &#039;&#039;commitment transaction&#039;&#039; created cooperatively by Alice and Bob when they want to close their channel together. Unlike a regular commitment transaction, none of the outputs on an exercise settlement transaction are time locked, allowing them to be immediately respent.&lt;br /&gt;
* &#039;&#039;&#039;Exhausted:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; (exhausted channel) a payment channel where no additional payments can be made in one direction (such as from Alice to Bob). The person controlling the exhausted side of a Lightning channel loses nothing from fraudulently trying to commit an old channel state, so allowing a channel to become exhausted (or too near to being exhausted) is unpreferable. (Exception: channels can be securely started in an exhausted state, such as a &#039;&#039;single-funded channel.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Full push:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; when Alice pays the full amount of the channel to Bob in the &#039;&#039;initial commitment transaction&#039;&#039;, which &#039;&#039;exhausts&#039;&#039; the channel without incentivizing fraud because Alice doesn&#039;t have a previous &#039;&#039;commitment transaction&#039;&#039; that she can broadcast. This term is used in the context of a &#039;&#039;single-funded transaction&#039;&#039; and stands in contrast to an &#039;&#039;overpayment&#039;&#039; where Alice deposits more than she pays Bob in that initial payment so that she can continue to use the channel without needing to &#039;&#039;rebalance&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Funding Transaction:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; (deposit transaction) a transaction created collaboratively by Alice and Bob to open a Lightning channel. In a single-funded channel, Alice provides all the funding;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; in a dual-funded channel, Alice and Bob both provide some funding. This is the first of the maximum of three on-chain transactions needed to maintain a Lightning channel; it can be combined with a commitment transaction from a previous channel being closed under cooperative conditions.&lt;br /&gt;
* &#039;&#039;&#039;Half-signed:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; a transaction input which requires two signatures to be added to the blockchain but which only has one signature attached. (More generally, this could be any input that has fewer signatures attached than it needs to be added to the blockchain.)&lt;br /&gt;
* &#039;&#039;&#039;Hash lock:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[https://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg05135.html BIP - Hash Locked Transaction]&amp;lt;br&amp;gt;Tier Nolan&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; an encumbrance to a transaction output that requires the pre-image used to generate a particular hash be provided in order to spend the output. In Lightning, this is used to allow payments to be routable without needing to trust the intermediaries.&lt;br /&gt;
* &#039;&#039;&#039;HTLC:&#039;&#039;&#039; (Hashed Timelocked Contract&amp;lt;ref name=&amp;quot;russell_deployable_lightning&amp;quot;&amp;gt;[https://github.com/ElementsProject/lightning/raw/master/doc/deployable-lightning.pdf Reaching the Ground with Lightning]&amp;lt;br&amp;gt;Rusty Russell&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt;) a contract such as that used in a Lightning Channel where both a &#039;&#039;hash lock&#039;&#039; and a &#039;&#039;time lock&#039;&#039; are used, the hash lock being used to allow Alice to route payments to Bob even through a Mallory that neither of them trust, and the time lock being used to prevent Mallory from stealing back any payments he made to Alice within the channel (provided Alice enforces the contract).&lt;br /&gt;
* &#039;&#039;&#039;Intermediary:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; When Bob has one channel open with Alice and another channel open with Charlie, Bob can serve as an intermediary for transferring payments between Alice and Charlie. With Lightning payments being secured with a &#039;&#039;hash lock,&#039;&#039; Bob can&#039;t steal the payment from Alice to Charlie when it travels through Bob&#039;s node. Lightning payments can securely travel through a theoretically unlimited number of intermediaries.&lt;br /&gt;
* &#039;&#039;&#039;Limbo channel:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; an optional special state for a Lightning channel where it cannot be immediately closed by one or both of the parties unilaterally (it can still be immediately closed cooperatively). This is used in particular for &#039;&#039;PLIPPs.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Multisig:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;bitcoin_0_1_code&amp;quot;/&amp;gt; (multisignature, m-of-n multisig) a transaction output that requires signatures from at least one of a set of two or more different private keys. Used in Lightning to give both Alice and Bob control over their individual funds within a channel by requiring both of them sign &#039;&#039;commitment transactions&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Node:&#039;&#039;&#039; (Lightning node&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt;) a wallet with one or more open Lightning channels. This should not be confused with a Bitcoin [[full node]] that validates Bitcoin blocks, although a full node&#039;s wallet may also be simultaneously used as a Lightning node to the advantage of the Lightning network user.&lt;br /&gt;
* &#039;&#039;&#039;Overfunding:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; in a &#039;&#039;single-funded channel,&#039;&#039; Alice deposits more bitcoins into the channel than she pays Bob in the initial payment, allowing her to make additional payments through the Lightning network. This stands in contrast to a &#039;&#039;full push&#039;&#039; where Alice only deposits enough to pay Bob in the initial payment.&lt;br /&gt;
* &#039;&#039;&#039;PILPP:&#039;&#039;&#039; (Pre-Image Length Probabilistic Payments&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt;) a specific type of &#039;&#039;probabilistic payment&#039;&#039; within a payment channel where Alice creates string with a random length and Bob guesses the length; if he guesses correctly, Alice has to pay him; if he guesses incorrectly, Alice gets to keep her money.&lt;br /&gt;
* &#039;&#039;&#039;Pre-image:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Image_%28mathematics%29#Inverse_image Image (mathematics)]&amp;lt;br&amp;gt;English Wikipedia contributors&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; (R&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt;) data input into a hash function, which produces a hash of the pre-image. Inputting the same pre-image into the same hash function will always produce the same hash; Lightning uses this feature to create &#039;&#039;hash locks&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Probabilistic Payment:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[[Nanopayments]]&amp;lt;br&amp;gt;Bitcoin Wiki contributors&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; a payment where Alice only pays Bob if some event outside of Alice&#039;s and Bob&#039;s control occurs in Bob&#039;s favor. Probabilistic payments are usually proposed for scenarios where payments can&#039;t conveniently be made small enough for technical reasons (such as not being able to pay less than 1 satoshi) or economic reasons (such as having to pay a transaction fee for every on-chain payment, making small payments uneconomical). See &#039;&#039;PLIPP&#039;&#039; for a specific type of probabilistic payment possible within a Lightning channel.&lt;br /&gt;
* &#039;&#039;&#039;R:&#039;&#039;&#039; the variable commonly used&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; in formulas to represent a &#039;&#039;pre-image&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Rebalance:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[https://blockstream.com/2015/09/01/lightning-network/ The Lightning Network: What Is It and What&#039;s Happening?]&amp;lt;br&amp;gt;Rusty Russell&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; a cooperative process between Alice and Bob when they adjust their balances within the channel. This happens with every payment in a Lightning channel and is only noteworthy because single-directional channels (such as Spillman-style and CLTV-style channels) are unable to rebalance and so must close as soon as Alices has paid Bob all the bitcoins she deposited into the channel. See &#039;&#039;bi-directional payment channels.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Relative locktime:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;bip68&amp;quot;/&amp;gt; the ability to specify when a transaction output may be spent relative to the block that included that transaction output. Enabled by BIP68 and made scriptable by BIP112. Lightning uses relative locktime to ensure &#039;&#039;breach remedy transactions&#039;&#039; may be broadcast within a time period starting from when an old &#039;&#039;commitment transaction&#039;&#039; is added to the blockchain; by making this a relative locktime (instead of an absolute date or block height), Lightning channels don&#039;t have a hard deadline for when they need to close and so can stay open indefinitely as long as the participants continue to cooperate.&lt;br /&gt;
* &#039;&#039;&#039;Revocable Sequence Maturity Contract (RSMC):&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; a &#039;&#039;contract&#039;&#039; used in Lightning to revoke the previous &#039;&#039;commitment transaction&#039;&#039;. This is allowed through mutual consent in Lightning by both parties signing a new commitment transaction and releasing the data necessary to create &#039;&#039;breach remedy transactions&#039;&#039; for the previous commitment transaction. This property allows Lightning to support &#039;&#039;bi-directional payment channels&#039;&#039;, recover from failed &#039;&#039;HTLC&#039;&#039; routing attempts without needing to commit to the blockchain, as well as provide advanced features such as &#039;&#039;PILPPs.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Single-funded channel:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;dryja_directed_graph&amp;quot;/&amp;gt; a channel opened by a &#039;&#039;funding transaction&#039;&#039; containing only inputs from Alice. Compare to a &#039;&#039;dual-funded channel&#039;&#039; where Alice and Bob both contribute inputs to the initial balance of the channel.&lt;br /&gt;
* &#039;&#039;&#039;Timelock:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[http://rusty.ozlabs.org/?p=450 Lightning Networks Part I: Revocable Transactions]&amp;lt;br&amp;gt;Rusty Russell&amp;lt;br&amp;gt;2016-04-17&amp;lt;/ref&amp;gt; either an encumbrance to a transaction that prevents that transaction from being added to the blockchain before a particular time or block height (as is the case with [[nLockTime]], or an encumbrance that prevents a spend from a transaction output from being added to the blockchain before a particular time or block height (as is the case of OP_CLTV, consensus enforced sequence number relative locktime, and OP_CSV). In Lightning, this is used to prevent malicious intermediaries from holding other users&#039; funds hostages as well as to allow victims of attempted theft to submit breach remedy transactions before the thief can respend the funds he stole.&lt;br /&gt;
* &#039;&#039;&#039;TTL:&#039;&#039;&#039; (Time To Live&amp;lt;ref&amp;gt;[http://lists.linuxfoundation.org/pipermail/lightning-dev/2015-July/000019.html Re: Routing on the Lightning Network?]&amp;lt;br&amp;gt;Rusty Russell&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt;) when Alice pays Bob with a &#039;&#039;hash locked&#039;&#039; in-channel payment that&#039;s ultimately intended for Charlie, she specifies how long Bob has to deliver the payment (its time to live) before the payment becomes invalid. When Bob pays Charlie with his own in-channel payment that has the same hash lock, Bob specifies a slightly shorter amount of time that Charlie has to reveal the pre-image that unlocks the hash lock before Bob&#039;s payment becomes invalid. This ensures that either Bob receives the data necessary to remove the hash lock from the payment he received from Alice or the payment he made to Charlie is invalidated; Alice gets the same guarantee that either the payment she made to Bob ultimate goes through to Charlie or her payment to Bob is invalidated.&lt;br /&gt;
* &#039;&#039;&#039;Unilateral:&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ln_pdf&amp;quot;/&amp;gt; any action performed by only one of the participants in a channel without requesting or needing permission from the other participant. Lightning allows channels to be closed unilaterally (so Alice can close the channel by herself if Bob becomes unresponsive) and attempted fraud can be penalized unilaterally (so Alice can take any bitcoins Mallory tried to steal when he broadcast an old &#039;&#039;commitment transaction&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;UTXO:&#039;&#039;&#039;&amp;lt;ref&amp;gt;[https://bitcoin.org/en/glossary/unspent-transaction-output Unspent Transaction Output (UTXO)]&amp;lt;br&amp;gt;Bitcoin.org Developer Glossary&amp;lt;br&amp;gt;Retrieved 2016-04-17&amp;lt;/ref&amp;gt; (Unspent Transaction Output) spendable bitcoins. A transaction output lists a bitcoin amount and the conditions (called an &#039;&#039;encumbrance&#039;&#039;) that need to be fulfilled in order to spend those bitcoins. Once those bitcoins have been spent on the blockchain, no other transaction in the same blockchain can spend the same bitcoins, so an Uspent Transaction Output (UTXO) is bitcoins that can be spent.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Payment channels]]&lt;br /&gt;
* [[Hashed Timelock Contracts]]&lt;br /&gt;
* [[Off-Chain Transactions]]&lt;br /&gt;
* [http://dev.lightning.community/resources/index.html Lightning Lab&#039;s list of resources]&lt;br /&gt;
* [https://github.com/dan-da/lightning-nodes/blob/master/README.md List of network nodes].&lt;br /&gt;
* [https://www.reddit.com/r/Bitcoin/comments/7pwna9/lightning_network_megathread/ Lightning Network Megathread on Reddit]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bitcoin_0_1_code&amp;quot;&amp;gt;[http://satoshi.nakamotoinstitute.org/code/ Bitcoin 0.1 code]&amp;lt;br&amp;gt;Satoshi Nakamoto&amp;lt;br&amp;gt;Retrieved 2016-04-11&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bip68&amp;quot;&amp;gt;[https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki BIP68: Relative lock-time using consensus-enforced sequence numbers]&amp;lt;br&amp;gt;Mark Friedenbach,   BtcDrak, Nicolas Dorier, and kinoshitajona&amp;lt;br&amp;gt;Retrieved 2016-04-12&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Scalability]]&lt;br /&gt;
[[Category:Privacy]]&lt;/div&gt;</summary>
		<author><name>Darosior</name></author>
	</entry>
</feed>