<?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=Kalle</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=Kalle"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Kalle"/>
	<updated>2026-04-23T13:15:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=70066</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=70066"/>
		<updated>2024-02-28T15:03:09Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Signet&#039;&#039;&#039; ([[BIP 0325]]) is a 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;
NOTE: signet (VI) was merged into the master branch of Bitcoin Core as of https://github.com/bitcoin/bitcoin/pull/18267&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/bitcoin/bitcoin&lt;br /&gt;
$ cd bitcoin&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/bips/blob/master/bip-0325.mediawiki BIP-325]&lt;br /&gt;
&lt;br /&gt;
===Faucets===&lt;br /&gt;
&lt;br /&gt;
* https://signetfaucet.com/&lt;br /&gt;
* https://alt.signetfaucet.com (the same [https://signetfaucet.bublina.eu.org here])&lt;br /&gt;
&lt;br /&gt;
Faucet source code, if you want your own:&lt;br /&gt;
&lt;br /&gt;
* https://github.com/stepansnigirev/tinyfaucet.git (python)&lt;br /&gt;
* https://github.com/jsarenik/bitcoin-faucet-shell (POSIX shell)&lt;br /&gt;
&lt;br /&gt;
===Block explorers===&lt;br /&gt;
&lt;br /&gt;
* https://explorer.bc-2.jp/&lt;br /&gt;
* https://mempool.space/signet&lt;br /&gt;
* https://ex.signet.bublina.eu.org&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 -wallet=&amp;quot;test&amp;quot;&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;5121...51ae&amp;lt;/code&amp;gt;. Where &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; stands for &amp;lt;code&amp;gt;THE_REAL_PUBKEY&amp;lt;/code&amp;gt; (see above).&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 -regtest 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=5121...51ae # fill in THE_REAL_PUBKEY&amp;quot; &amp;gt; $datadir/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=$datadir -wallet=&amp;quot;test&amp;quot;&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&#039;re going to get an issuer up and running to mine blocks.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to provide a value for &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; which is the mining target and is inversely proportional to the difficulty. This will allow us to set the average time between mined blocks.&lt;br /&gt;
&lt;br /&gt;
We can use the &amp;lt;code&amp;gt;calibrate&amp;lt;/code&amp;gt; command to give us the &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; for an average mining time of 10 min (600 s):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli&amp;quot; calibrate --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --seconds=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Referring to our &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; value with the variable &amp;lt;code&amp;gt;$NBITS&amp;lt;/code&amp;gt;, we need to specify &amp;lt;code&amp;gt;--set-block-time&amp;lt;/code&amp;gt; when mining the first block in a new signet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --set-block-time=$(date +%s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then mine the first block to that address. (Note that you may need to create a wallet first.)&lt;br /&gt;
&lt;br /&gt;
To keep the mining ongoing from there, aiming for blocks arriving every 10 minutes on average, we can run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --ongoing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
===Example Script===&lt;br /&gt;
&lt;br /&gt;
A full example script can be found at https://en.bitcoin.it/wiki/Signet:Custom:Script&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=69447</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=69447"/>
		<updated>2022-09-19T14:02:50Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Signet&#039;&#039;&#039; ([[BIP 0325]]) is a 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;
NOTE: signet (VI) was merged into the master branch of Bitcoin Core as of https://github.com/bitcoin/bitcoin/pull/18267&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/bitcoin/bitcoin&lt;br /&gt;
$ cd bitcoin&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/bips/blob/master/bip-0325.mediawiki BIP-325]&lt;br /&gt;
&lt;br /&gt;
===Faucets===&lt;br /&gt;
&lt;br /&gt;
* https://signetfaucet.com/&lt;br /&gt;
* https://alt.signetfaucet.com (the same [https://signetfaucet.bublina.eu.org here])&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;
* https://github.com/jsarenik/bitcoin-faucet-shell (POSIX shell)&lt;br /&gt;
&lt;br /&gt;
===Block explorers===&lt;br /&gt;
&lt;br /&gt;
* https://explorer.bc-2.jp/&lt;br /&gt;
* https://mempool.space/signet&lt;br /&gt;
* https://ex.signet.bublina.eu.org&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 -wallet=&amp;quot;test&amp;quot;&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;5121...51ae&amp;lt;/code&amp;gt;. Where &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; stands for &amp;lt;code&amp;gt;THE_REAL_PUBKEY&amp;lt;/code&amp;gt; (see above).&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 -regtest 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=5121...51ae # fill in THE_REAL_PUBKEY&amp;quot; &amp;gt; $datadir/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=$datadir -wallet=&amp;quot;test&amp;quot;&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&#039;re going to get an issuer up and running to mine blocks.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to provide a value for &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; which is the mining target and is inversely proportional to the difficulty. This will allow us to set the average time between mined blocks.&lt;br /&gt;
&lt;br /&gt;
We can use the &amp;lt;code&amp;gt;calibrate&amp;lt;/code&amp;gt; command to give us the &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; for an average mining time of 10 min (600 s):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli&amp;quot; calibrate --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --seconds=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Referring to our &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; value with the variable &amp;lt;code&amp;gt;$NBITS&amp;lt;/code&amp;gt;, we need to specify &amp;lt;code&amp;gt;--set-block-time&amp;lt;/code&amp;gt; when mining the first block in a new signet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --set-block-time=$(date +%s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then mine the first block to that address. (Note that you may need to create a wallet first.)&lt;br /&gt;
&lt;br /&gt;
To keep the mining ongoing from there, aiming for blocks arriving every 10 minutes on average, we can run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --ongoing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
===Example Script===&lt;br /&gt;
&lt;br /&gt;
A full example script can be found at https://en.bitcoin.it/wiki/Signet:Custom:Script&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68442</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68442"/>
		<updated>2021-02-23T03:02:54Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Signet&#039;&#039;&#039; ([[BIP 0325]]) is a 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;
NOTE: signet (IV) was merged into the master branch of Bitcoin Core as of https://github.com/bitcoin/bitcoin/pull/18267&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/bitcoin/bitcoin&lt;br /&gt;
$ cd bitcoin&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/bips/blob/master/bip-0325.mediawiki BIP-325]&lt;br /&gt;
&lt;br /&gt;
===Faucets===&lt;br /&gt;
&lt;br /&gt;
* https://signetfaucet.com/&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;
* https://mempool.space/signet&lt;br /&gt;
&lt;br /&gt;
==Custom Signet==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Until it is merged into master branch, you may first need to check-out (or merge) the code referred in https://github.com/bitcoin/bitcoin/pull/19937 in order to get the script &amp;lt;code&amp;gt;contrib/signet/miner&amp;lt;/code&amp;gt;.&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 -wallet=&amp;quot;test&amp;quot;&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;5121...51ae&amp;lt;/code&amp;gt;. Where &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; stands for &amp;lt;code&amp;gt;THE_REAL_PUBKEY&amp;lt;/code&amp;gt; (see above).&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 -regtest 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=5121...51ae # fill in THE_REAL_PUBKEY&amp;quot; &amp;gt; $datadir/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=$datadir -wallet=&amp;quot;test&amp;quot;&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&#039;re going to get an issuer up and running to mine blocks.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to provide a value for &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; which is the mining target and is inversely proportional to the difficulty. This will allow us to set the average time between mined blocks.&lt;br /&gt;
&lt;br /&gt;
We can use the &amp;lt;code&amp;gt;calibrate&amp;lt;/code&amp;gt; command to give us the &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; for an average mining time of 10 min (600 s):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli&amp;quot; calibrate --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --seconds=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Referring to our &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; value with the variable &amp;lt;code&amp;gt;$NBITS&amp;lt;/code&amp;gt;, we need to specify &amp;lt;code&amp;gt;--set-block-time&amp;lt;/code&amp;gt; when mining the first block in a new signet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --set-block-time=$(date +%s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then mine the first block to that address. (Note that you may need to create a wallet first.)&lt;br /&gt;
&lt;br /&gt;
To keep the mining ongoing from there, aiming for blocks arriving every 10 minutes on average, we can run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --ongoing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
===Example Script===&lt;br /&gt;
&lt;br /&gt;
A full example script can be found at https://en.bitcoin.it/wiki/Signet:Custom:Script&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68441</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68441"/>
		<updated>2021-02-23T02:59:46Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Removed old pull request links and added link to BIP.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Signet&#039;&#039;&#039; ([[BIP 0325]]) is a 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;
NOTE: signet (IV) was merged into the master branch of Bitcoin Core as of https://github.com/bitcoin/bitcoin/pull/18267&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/bitcoin/bitcoin&lt;br /&gt;
$ cd bitcoin&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/bips/blob/master/bip-0325.mediawiki BIP-325]&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;
* https://mempool.space/signet&lt;br /&gt;
&lt;br /&gt;
==Custom Signet==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Until it is merged into master branch, you may first need to check-out (or merge) the code referred in https://github.com/bitcoin/bitcoin/pull/19937 in order to get the script &amp;lt;code&amp;gt;contrib/signet/miner&amp;lt;/code&amp;gt;.&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 -wallet=&amp;quot;test&amp;quot;&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;THE_REAL_PUBKEY&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;5121...51ae&amp;lt;/code&amp;gt;. Where &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; stands for &amp;lt;code&amp;gt;THE_REAL_PUBKEY&amp;lt;/code&amp;gt; (see above).&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 -regtest 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=5121...51ae # fill in THE_REAL_PUBKEY&amp;quot; &amp;gt; $datadir/bitcoin.conf&lt;br /&gt;
$ ./bitcoind -datadir=$datadir -wallet=&amp;quot;test&amp;quot;&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&#039;re going to get an issuer up and running to mine blocks.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to provide a value for &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; which is the mining target and is inversely proportional to the difficulty. This will allow us to set the average time between mined blocks.&lt;br /&gt;
&lt;br /&gt;
We can use the &amp;lt;code&amp;gt;calibrate&amp;lt;/code&amp;gt; command to give us the &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; for an average mining time of 10 min (600 s):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli&amp;quot; calibrate --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --seconds=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Referring to our &amp;lt;code&amp;gt;nbits&amp;lt;/code&amp;gt; value with the variable &amp;lt;code&amp;gt;$NBITS&amp;lt;/code&amp;gt;, we need to specify &amp;lt;code&amp;gt;--set-block-time&amp;lt;/code&amp;gt; when mining the first block in a new signet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --set-block-time=$(date +%s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then mine the first block to that address. (Note that you may need to create a wallet first.)&lt;br /&gt;
&lt;br /&gt;
To keep the mining ongoing from there, aiming for blocks arriving every 10 minutes on average, we can run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../contrib/signet/miner --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate --address $ADDR --grind-cmd=&amp;quot;./bitcoin-util grind&amp;quot; --nbits=$NBITS --ongoing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
===Example Script===&lt;br /&gt;
&lt;br /&gt;
A full example script can be found at https://en.bitcoin.it/wiki/Signet:Custom:Script&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68409</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68409"/>
		<updated>2021-02-09T04:12:53Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68399</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68399"/>
		<updated>2021-02-01T04:09:31Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki. [temporarily broken, under repair, do not remove this link]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68398</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=68398"/>
		<updated>2021-02-01T04:08:30Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Reverted edits by Furunodo (talk) to last revision by Kalle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68209</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68209"/>
		<updated>2020-10-02T06:14:44Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Run issuer */&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 an issuer using &amp;lt;code&amp;gt;bitcoin-util&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/generate.py --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate 0 --address $ADDR --grind-cmd=&#039;./bitcoin-util grind&#039; --block-time=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then start mining to that address, aiming for blocks arriving every 10 minutes on average. (Note that you may need to create a wallet first.)&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68208</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68208"/>
		<updated>2020-10-01T10:15:36Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &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 an issuer using [code]bitcoin-util[/code]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress); ../contrib/signet/generate.py --cli=&amp;quot;./bitcoin-cli -datadir=$datadir&amp;quot; generate 0 --address $ADDR --grind-cmd=&#039;./bitcoin-util grind&#039; --block-time=600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create an address, and then start mining to that address, aiming for blocks arriving every 10 minutes on average.&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68199</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68199"/>
		<updated>2020-09-18T06:14:22Z</updated>

		<summary type="html">&lt;p&gt;Kalle: `-signet_*` → `-signet*`&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68191</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68191"/>
		<updated>2020-09-08T06:25:38Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Global network VI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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;-signet_challenge=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;-signet_challenge&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;
signet_challenge=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;signet_challenge&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68172</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68172"/>
		<updated>2020-08-28T09:50:13Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 V&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;-signet_challenge=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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;-signet_challenge&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;
signet_challenge=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;signet_challenge&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68171</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68171"/>
		<updated>2020-08-28T07:15:20Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Generating keys used for signing a block */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 V&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68170</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68170"/>
		<updated>2020-08-28T07:14:09Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 V&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68169</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68169"/>
		<updated>2020-08-28T07:13:42Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Use testnet prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 V&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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; this is the same as testnet)&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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68135</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=68135"/>
		<updated>2020-08-11T09:14:50Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Update to reflect test net V&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 V&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67384</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67384"/>
		<updated>2020-03-18T09:28:11Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67373</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67373"/>
		<updated>2020-03-10T07:58:20Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (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 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67372</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67372"/>
		<updated>2020-03-10T07:58:08Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Genesis Block and Message Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;), but see [[#Genesis_Block_and_Message_Start]]&lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67371</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67371"/>
		<updated>2020-03-10T07:57:38Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;), but see [[#Genesis_Block_and_Message_Start]]&lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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 Start==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message start. The message start 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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67370</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67370"/>
		<updated>2020-03-10T07:57:15Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;), but see #Genesis_Block_and_Message_Start&lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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 Start==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message start. The message start 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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67356</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67356"/>
		<updated>2020-03-09T11:01:30Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0x7EC653A5&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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 Start==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message start. The message start 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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67343</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67343"/>
		<updated>2020-03-05T09:29:00Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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 Start==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message start. The message start 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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67342</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67342"/>
		<updated>2020-03-05T09:28:41Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Switch to proposed changes in https://github.com/bitcoin/bips/pull/900&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 IV&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and the genesis nonce using &amp;lt;code&amp;gt;-signet_genesisnonce=&amp;lt;number&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block has timestamp 1534313275, nonce 100123, and difficulty 0x1e2adc28.&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 Start==&lt;br /&gt;
&lt;br /&gt;
All signet networks share the same genesis block, but have a different message start. The message start 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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67313</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67313"/>
		<updated>2020-02-05T14:17:48Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 III&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and the genesis nonce using &amp;lt;code&amp;gt;-signet_genesisnonce=&amp;lt;number&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript and genesis nonce (it is proof of work valid, but does not contain a signet commitment)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is provided (&amp;lt;code&amp;gt;621297&amp;lt;/code&amp;gt; for SGNIII), and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.19&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/16411 Pull request #16411 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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&amp;lt;/code&amp;gt; value becomes &amp;lt;code&amp;gt;512102c60c3940e5REDACTEDbd0148cd51ae&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Grinding the genesis nonce===&lt;br /&gt;
&lt;br /&gt;
Since the genesis block needs to be proof-of-work valid, we need to actually mine it. This is not a problem though, because Signet difficulty starts out quite low, so it should only take a few seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -signet grindblock 512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
12345&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The genesis nonce is &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;. Together with the block script, this defines our new Signet network!&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;
signet_blockscript=512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
signet_genesisnonce=12345&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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67312</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67312"/>
		<updated>2020-02-05T14:16:20Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Faucets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 III&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and the genesis nonce using &amp;lt;code&amp;gt;-signet_genesisnonce=&amp;lt;number&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript and genesis nonce (it is proof of work valid, but does not contain a signet commitment)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is provided (&amp;lt;code&amp;gt;621297&amp;lt;/code&amp;gt; for SGNIII), and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.19&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/kallewoof/bitcoin/pull/4 WIP pull request]&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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&amp;lt;/code&amp;gt; value becomes &amp;lt;code&amp;gt;512102c60c3940e5REDACTEDbd0148cd51ae&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Grinding the genesis nonce===&lt;br /&gt;
&lt;br /&gt;
Since the genesis block needs to be proof-of-work valid, we need to actually mine it. This is not a problem though, because Signet difficulty starts out quite low, so it should only take a few seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -signet grindblock 512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
12345&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The genesis nonce is &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;. Together with the block script, this defines our new Signet network!&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;
signet_blockscript=512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
signet_genesisnonce=12345&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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67136</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=67136"/>
		<updated>2020-01-04T02:13:29Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet ([[BIP 0325]]) is a proposed new test network for the Bitcoin [[block chain]] 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 III&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and the genesis nonce using &amp;lt;code&amp;gt;-signet_genesisnonce=&amp;lt;number&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript and genesis nonce (it is proof of work valid, but does not contain a signet commitment)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is provided (&amp;lt;code&amp;gt;621297&amp;lt;/code&amp;gt; for SGNIII), and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.19&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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet 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;-signet_blockscript&amp;lt;/code&amp;gt; value becomes &amp;lt;code&amp;gt;512102c60c3940e5REDACTEDbd0148cd51ae&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Grinding the genesis nonce===&lt;br /&gt;
&lt;br /&gt;
Since the genesis block needs to be proof-of-work valid, we need to actually mine it. This is not a problem though, because Signet difficulty starts out quite low, so it should only take a few seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -signet grindblock 512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
12345&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The genesis nonce is &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;. Together with the block script, this defines our new Signet network!&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;
signet_blockscript=512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
signet_genesisnonce=12345&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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66666</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66666"/>
		<updated>2019-08-19T04:15:14Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 III&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and the genesis nonce using &amp;lt;code&amp;gt;-signet_genesisnonce=&amp;lt;number&amp;gt;&amp;lt;/code&amp;gt;, and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript and genesis nonce (it is proof of work valid, but does not contain a signet commitment)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is provided (&amp;lt;code&amp;gt;621297&amp;lt;/code&amp;gt; for SGNIII), and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&amp;lt;/code&amp;gt; value becomes &amp;lt;code&amp;gt;512102c60c3940e5REDACTEDbd0148cd51ae&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Grinding the genesis nonce===&lt;br /&gt;
&lt;br /&gt;
Since the genesis block needs to be proof-of-work valid, we need to actually mine it. This is not a problem though, because Signet difficulty starts out quite low, so it should only take a few seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bitcoin-cli -signet grindblock 512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
12345&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The genesis nonce is &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;. Together with the block script, this defines our new Signet network!&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;
signet_blockscript=512102c60c3940e5REDACTEDbd0148cd51ae&lt;br /&gt;
signet_genesisnonce=12345&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;signet_blockscript&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;signet_genesisnonce&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66641</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66641"/>
		<updated>2019-07-16T04:25:17Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Using the command line tool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 II&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript (and is thus not actually valid)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66629</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66629"/>
		<updated>2019-07-11T12:12:53Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Start up a node (issuer) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 II&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript (and is thus not actually valid)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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;. It takes the path to &amp;lt;code&amp;gt;bitcoin-cli&amp;lt;/code&amp;gt; and an optional &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;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../contrib/signet&lt;br /&gt;
$ ./getcoins.sh ../../src/bitcoin-cli -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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&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;
signet_blockscript=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;signet_blockscript&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66625</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66625"/>
		<updated>2019-07-11T03:44:18Z</updated>

		<summary type="html">&lt;p&gt;Kalle: /* Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 II&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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;
* Address prefixes are different: pubkey=&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; (125), p2sh=&amp;lt;code&amp;gt;0x57&amp;lt;/code&amp;gt; (87), privkey=&amp;lt;code&amp;gt;0xD9&amp;lt;/code&amp;gt; (217)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript (and is thus not actually valid)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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;. It takes the path to &amp;lt;code&amp;gt;bitcoin-cli&amp;lt;/code&amp;gt; and an optional &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;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../contrib/signet&lt;br /&gt;
$ ./getcoins.sh ../../src/bitcoin-cli -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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&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;
signet_blockscript=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;
===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;signet_blockscript&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66624</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66624"/>
		<updated>2019-07-10T12:57:48Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 II&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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 testnet Bitcoin addresses will work on the production network. (&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript (and is thus not actually valid)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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;. It takes the path to &amp;lt;code&amp;gt;bitcoin-cli&amp;lt;/code&amp;gt; and an optional &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;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ../contrib/signet&lt;br /&gt;
$ ./getcoins.sh ../../src/bitcoin-cli -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/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&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;
signet_blockscript=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;
===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;signet_blockscript&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66623</id>
		<title>Signet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Signet&amp;diff=66623"/>
		<updated>2019-07-10T08:05:54Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Created page with &amp;quot;Signet is a proposed new test network for the Bitcoin block chain which adds an additional signature requirement to block validation. Signet is similar in nature to test...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Signet is a proposed new test network for the Bitcoin [[block chain]] 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 II&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;-signet_blockscript=&amp;lt;hex&amp;gt;&amp;lt;/code&amp;gt; and preferably also at least one seed node using &amp;lt;code&amp;gt;-signet_seednode=&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 testnet Bitcoin addresses will work on the production network. (&amp;lt;code&amp;gt;0x7D&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The protocol message header bytes are &amp;lt;code&amp;gt;0xF0C7706A&amp;lt;/code&amp;gt; (instead of &amp;lt;code&amp;gt;0xF9BEB4D9&amp;lt;/code&amp;gt;) &lt;br /&gt;
* Genesis block is generated based on the signet blockscript (and is thus not actually valid)&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==&lt;br /&gt;
&lt;br /&gt;
Each signet network has its own genesis block. The coinbase signature of the genesis block for a signet network with the blockscript &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is calculated as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sha256(sha256(S))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the output is simply&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    OP_RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nTime is &amp;lt;code&amp;gt;1534313275&amp;lt;/code&amp;gt;, the nonce is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, and the nBits (difficulty target) is &amp;lt;code&amp;gt;0x1e2adc28&amp;lt;/code&amp;gt; (POW limit &amp;lt;code&amp;gt;00002adc28cf53b63c82faa55d83e40ac63b5f100aa5d8df62a429192f9e8ce5&amp;lt;/code&amp;gt;).&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-0.18&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;
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;
Then see your transaction be confirmed at an explorer, e.g. https://explorer.bc-2.jp.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/kallewoof/bitcoin/pull/4 WIP pull request]&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;
===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 signet instance 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 -signet -daemon&lt;br /&gt;
$ ADDR=$(./bitcoin-cli -signet getnewaddress)&lt;br /&gt;
$ PRIVKEY=$(./bitcoin-cli -signet dumpprivkey $ADDR)&lt;br /&gt;
$ ./bitcoin-cli -signet getaddressinfo $PRIVKEY | 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;-signet_blockscript&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;
signet_blockscript=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;
===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;signet_blockscript&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>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65373</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65373"/>
		<updated>2018-05-18T03:00:09Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65372</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65372"/>
		<updated>2018-05-18T01:47:53Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#ff0000; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#ff0;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em;&amp;quot;&amp;gt;Upgrade Complete&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Report issues on #bitcoin-wiki on freenode.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65369</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65369"/>
		<updated>2018-05-17T03:30:34Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#ff0000; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#ff0;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em;&amp;quot;&amp;gt;Scheduled Upgrade&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The server will undergo extended maintenance 24:00 UTC (midnight leading into Friday). Expect downtime and breakage. Report issues on #bitcoin-wiki on freenode.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65367</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65367"/>
		<updated>2018-05-15T23:40:50Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#ff0000; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#ff0;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em;&amp;quot;&amp;gt;Upgrade Postponed&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The scheduled upgrade has been postponed temporarily. A new scheduled date will appear here soon.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65366</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65366"/>
		<updated>2018-05-15T23:14:54Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#ff0000; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#ff0;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em;&amp;quot;&amp;gt;Scheduled Upgrade!&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The server is undergoing maintenance. Expect downtime and possibly temporary breakage for the next couple of hours.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65365</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Main_Page&amp;diff=65365"/>
		<updated>2018-05-15T07:27:20Z</updated>

		<summary type="html">&lt;p&gt;Kalle: Notice about scheduled maintenance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#ff0000; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#ff0;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em;&amp;quot;&amp;gt;Scheduled Upgrade!&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The server will undergo extended maintenance May 16 2018 at 1:00 am UTC. Expect downtime and possibly temporary breakage.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ddd;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:61%; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        &amp;quot;WELCOME TO BITCOIN&amp;quot; AND ARTICLE COUNT        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; white-space:nowrap; color:#000;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:162%; border:none; margin:0; padding:.1em; color:#000;&amp;quot;&amp;gt;Welcome to the [[Bitcoin]] Wiki,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;top:+0.2em; font-size:95%;&amp;quot;&amp;gt;for all your Bitcoin information needs.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;width:100%; text-align:center; font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] pages. Established April 14, 2010.&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This wiki is maintained by the Bitcoin community.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--        PORTAL LIST ON RIGHT-HAND SIDE        --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:39%;&amp;quot; |&amp;lt;center&amp;gt;{{ERN}}&amp;lt;/center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:none; background:none; font-size:120%; font-weight: bold; font-family: &#039;Ubuntu&#039;, sans-serif; text-align: center;&amp;quot;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://bitcoin.org/ Bitcoin.org]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Forums]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[IRC channels|Chatrooms]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TODAY&#039;S FEATURED ARTICLE; DID YOU KNOW        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:55%; border:1px solid #cef2e0; background:#f6e5f1; vertical-align:top; color:#000;&amp;quot; |&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px;&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-tfa-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Bitcoin&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;&amp;quot; | &amp;lt;div id=&amp;quot;mp-tfa&amp;quot; style=&amp;quot;padding:2px 5px&amp;quot;&amp;gt;{{MainPage_Intro}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-dyk-h2&amp;quot; style=&amp;quot;margin:3px; background:#e9caef; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Why?&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;{{MainPage_Reasons}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
&amp;lt;!--        IN THE NEWS; ON THIS DAY        --&amp;gt;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:45%; border:1px solid #cedff2; background:#f6e5f1; vertical-align:top;&amp;quot;|&lt;br /&gt;
{| id=&amp;quot;mp-right&amp;quot; style=&amp;quot;width:100%; vertical-align:top; background:#f6e5f1;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;Topic central&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_Topics}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2 id=&amp;quot;mp-otd-h2&amp;quot; style=&amp;quot;margin:3px; background:#efc1e2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;&amp;quot;&amp;gt;FAQ&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding:2px 5px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-otd&amp;quot;&amp;gt;{{MainPage_FAQ}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[mw:Help:Formatting|Help]]&#039;&#039;&#039; - Documentation on wiki editing.&lt;br /&gt;
* &#039;&#039;&#039;[[BW:About|About]]&#039;&#039;&#039; - Information on this site.&lt;br /&gt;
* &#039;&#039;&#039;[http://dump.bitcoin.it/ Dumps]&#039;&#039;&#039; - Backup this wiki.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63505</id>
		<title>Segwit support</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63505"/>
		<updated>2017-06-22T02:57:24Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039; This list is not yet complete.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developers/businesses: Please add a row for yourself in the applicable table to reflect your positions. If for some reason you don&#039;t already have a wiki account that can edit the page, make an account and ask luke-jr for help if you get caught in the anti-spam.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{No}} || doesn&#039;t support (but might or might not go along with it with sufficient community support)&lt;br /&gt;
|-&lt;br /&gt;
| {{Deficient}} || okay with the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Evaluating}} || still evaluating the idea&lt;br /&gt;
|-&lt;br /&gt;
| {{AccJuly}} || it is a workable solution, provided it is activated before August 1 (and therefore BIP148-compatible)&lt;br /&gt;
|-&lt;br /&gt;
| {{Wanting}} || positively likes the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Weak}} || better than nothing at all&lt;br /&gt;
|-&lt;br /&gt;
| {{Acceptable}} || it is a workable solution&lt;br /&gt;
|-&lt;br /&gt;
| {{Prefer}} || it is what he would choose if it was only up to him and no outside influences&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Developers==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- README: please keep alphabetically ordered by surname! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that support for a given proposal does not mean developers support merging it into Core or any other specific codebase.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 | Developer&lt;br /&gt;
! rowspan=2 | Aff* &amp;lt;!-- Using one year before the the creation date of this page as the benchmark. Do not list yourself as affiliated with a project that you haven&#039;t made meaningful contributions to since then.  --&amp;gt;&lt;br /&gt;
! Segwit itself&lt;br /&gt;
! colspan=3 | Deployment methods&lt;br /&gt;
! colspan=2 | Hardfork bundles (Silbert agreement)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki BIP 141] !! [https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki BIP 148] !! [https://github.com/bitcoin/bips/blob/master/bip-0149.mediawiki BIP 149] !! [https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki BIP 91] || Segwit2x || [https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014445.html COOP]&lt;br /&gt;
|-&lt;br /&gt;
| Karl-Johan Alm || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bryan Bishop || || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| ฿tcDrak || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Chow || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wang Chun || [[F2Pool]] || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{Acceptable}} || {{AccJuly}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo || Core || {{Prefer}} || {{No}} || || {{Acceptable}} || {{No|LOL}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Johnathan Corgan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr || Core || {{Prefer}} || {{Prefer}} || {{No}} || {{AccJuly}} || {{No}} || {{Deficient}}&lt;br /&gt;
|-&lt;br /&gt;
| Christian Decker || c-lightning || {{Prefer}} || {{Acceptable}} ||  ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Dorier || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{AccJuly}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Thaddeus Dryja || lit || {{Prefer}} || {{No}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marco Falke || Core || {{Prefer}} || {{Deficient}} || {{Prefer}} || {{Deficient}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Mark Friedenbach || BIP 68/112 || {{Prefer}} || {{Prefer}} || {{No}} || {{AccJuly}} || {{No|LOL}} || {{No|Nope}}&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janik || Core || {{Prefer}} || {{No}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Kerin || Core || {{Prefer}} || {{Wanting}} || {{Prefer}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johnson Lau || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Eric Lombrozo || || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{AccJuly}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Greg Maxwell || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Alex Morcos || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| nopara73 || TumbleBit || {{Weak}} || {{Wanting}} || {{Prefer}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Laolu &amp;quot;roasbeef&amp;quot; Osuntokun || lnd || {{Prefer}} || || || || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Jeremy Rubin || Core || {{Prefer}} || {{Deficient}} || {{No}} || {{AccJuly}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pavol &amp;quot;stick&amp;quot; Rusnak || [[TREZOR]] || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{AccJuly}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Rusty Russell || c-lightning || {{Prefer}} || {{Prefer}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Gregory Sanders || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Jonas Schnelli || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Strateman || Core || {{Prefer}} ||  ||  ||  || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Paul Sztorc ||  || {{Prefer}} || {{Deficient}} || {{Wanting}} || {{AccJuly}} || {{Evaluating}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Taaki || libbtc || {{Acceptable}} || {{Prefer}} ||  ||  || {{No}} || {{No}} &lt;br /&gt;
|-&lt;br /&gt;
| Jorge Timon || Core || {{Prefer}} || {{No}} || {{Prefer}} || {{Deficient}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Peter Todd || Core || {{Prefer}} || {{Acceptable}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Warren Togami || Elements || {{Prefer}} || {{Prefer}} || {{Acceptable}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir van der Laan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Leo Wandersleb || Mycelium || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{AccJuly}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille || Core || {{Prefer}} || || || || {{No}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;affiliation&amp;quot; is an optional field for the company or project the individual is associated with, that most qualifies the person to comment on the matter and is not meant as a company or project endorsement of the individual&#039;s position.&lt;br /&gt;
&lt;br /&gt;
==Businesses==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When adding companies below, sources for each position MUST be provided.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 | Company &lt;br /&gt;
! rowspan=2 | Service&lt;br /&gt;
! Segwit itself&lt;br /&gt;
! colspan=3 | Deployment methods&lt;br /&gt;
! colspan=2 | Hardfork bundles (Silbert agreement)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki BIP 141] !! [https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki BIP 148] !! [https://github.com/bitcoin/bips/blob/master/bip-0149.mediawiki BIP 149] !! [https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki BIP 91] || Segwit2x || [https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014445.html COOP]&lt;br /&gt;
|-&lt;br /&gt;
| Abra || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitcoin India || exchange/miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| BitcoinReminder.com || service || {{Prefer}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;&amp;gt;[https://bitcoinreminder.com/informations/poli BitcoinReminder.com&#039;s position on scaling proposals]&amp;lt;/ref&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;/&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;/&amp;gt; || {{Weak}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;/&amp;gt; || {{No|LOL}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;/&amp;gt; || {{No}}&amp;lt;ref name=&amp;quot;bitcoinreminder_com&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex || exchange || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitfury || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}} || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitmain || miner || {{AccJuly}}&amp;lt;ref name=&amp;quot;bitmain&amp;quot;&amp;gt;[https://blog.bitmain.com/en/uahf-contingency-plan-uasf-bip148/ Bitmain&#039;s plot against BIP148]&amp;lt;/ref&amp;gt; || {{No}} || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;bitmain&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitonic/BL3P.eu || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;&amp;gt;[https://bitonic.nl/en/news/138/our-position-on-scaling-proposals Bitonic&#039;s position on scaling proposals]&amp;lt;/ref&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{Weak}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{No|LOL}}&amp;lt;ref name=&amp;quot;bitonic&amp;quot;/&amp;gt; || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bitpay || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || {{No}} || || {{Prefer}} || {{Prefer}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitrated || reputation || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitrated&amp;quot;&amp;gt;[https://twitter.com/bitrated/status/876805892003553281]&amp;lt;/ref&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitrated&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;bitrated&amp;quot; /&amp;gt; || {{AccJuly}}&amp;lt;ref name=&amp;quot;bitrated&amp;quot; /&amp;gt; || {{No}}&amp;lt;ref name=&amp;quot;bitrated&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;[https://medium.com/@shesek/why-i-dont-support-the-compromise-efforts-9d73a8cce6be Why I don’t support horse-trading compromises for Bitcoin protocol development]&amp;lt;/ref&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitrefill || merchant || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitsquare || exchange || {{Prefer}} || {{Prefer}}&amp;lt;ref name=&amp;quot;bitsquare&amp;quot;&amp;gt;[https://forum.bitsquare.io/t/bitsquare-will-support-uasf-bitcoin-not-bitmaincoin/2265 Bitsquare will support UASF Bitcoin not BitMainCoin]&amp;lt;/ref&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bitsquare&amp;quot;/&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bittylicious || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/Bittylicious_/status/867305106668224513 Bittylicious answer on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Blockchain.info || wallet || {{Acceptable}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| blockonomics || || {{Prefer}} || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/blockonomics_co/status/851738251509497856 blockonomics announcement on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Bustabit|| gambling || {{Prefer}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;&amp;gt;[https://www.bustabit.com/statement-on-forks Bustabit Statement on Bitcoin Forks]&amp;lt;/ref&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;/&amp;gt; || || || {{AccJuly}}&amp;lt;ref name=&amp;quot;bustabit&amp;quot;/&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Ciphrex || wallet / dev stack || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase || wallet || {{Acceptable}}&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;/&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| CoinGate || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| CoinJar || wallet || || {{Evaluating}}&amp;lt;ref&amp;gt;[https://twitter.com/GetCoinJar/status/875581525730787329 CoinJar answer on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinkite || || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| coinomi || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| DigitalBitbox || wallet(hardware) || {{Prefer}} || {{Acceptable}} || {{Prefer}}|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| Échange de Montréal || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot; /&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Electrum || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kraken || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| LightningASIC || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| OneHash || betting || {{Prefer}}&amp;lt;ref&amp;gt;[https://blog.onehash.com/sick-of-presidential-election-3f1a2defbbbf OneHash, &amp;quot;Sick of presidential election ?!&amp;quot;]&amp;lt;/ref&amp;gt; || || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex || exchange || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Slushpool || miner || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| TheRockTrading || exchange || || {{Evaluating}}&amp;lt;ref&amp;gt;[https://twitter.com/TheRockTrading/status/872464394034315269 @TheRockTrading message on Twitter]&amp;lt;/ref&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Vaultoro || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Acceptable}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || {{AccJuly}} || {{AccJuly}}&amp;lt;ref name=&amp;quot;silbert&amp;quot; /&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Walltime || exchange || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Xapo || wallet || {{Prefer}}&amp;lt;ref name=&amp;quot;coindance&amp;quot; /&amp;gt; || || || {{Prefer}} || {{Prefer}}&amp;lt;ref&amp;gt;[https://twitter.com/tedmrogers/status/867362691370954752 Tweet by president of Xapo]&amp;lt;/ref&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bccore_swadoption&amp;quot;&amp;gt;[https://bitcoincore.org/en/segwit_adoption/ Bitcoin Core&#039;s Segwit adoption list]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;coindance&amp;quot;&amp;gt;[https://coin.dance/poli Coin Dance, &amp;quot;Global Bitcoin Political Support &amp;amp; Public Opinion&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;silbert&amp;quot;&amp;gt;[https://medium.com/@DCGco/bitcoin-scaling-agreement-at-consensus-2017-133521fe9a77 Digital Currency Group, &amp;quot;Bitcoin Scaling Agreement at Consensus 2017&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;echangedemontreal&amp;quot;&amp;gt;[https://twitter.com/echangedemtl/status/875781093261271040 Échange de Montréal on twitter]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63384</id>
		<title>Segwit support</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63384"/>
		<updated>2017-06-14T23:52:57Z</updated>

		<summary type="html">&lt;p&gt;Kalle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039; This list is not yet complete.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developers: Please add a row for yourself to reflect your positions. If for some reason you don&#039;t already have a wiki account that can edit the page, make an account and ask luke-jr for help if you get caught in the anti-spam.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{No}} || doesn&#039;t support (but might or might not go along with it with sufficient community support)&lt;br /&gt;
|-&lt;br /&gt;
| {{Deficient}} || okay with the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Evaluating}} || still evaluating the idea&lt;br /&gt;
|-&lt;br /&gt;
| {{AccJuly}} || it is a workable solution, provided it is activated before August 1 (and therefore BIP148-compatible)&lt;br /&gt;
|-&lt;br /&gt;
| {{Wanting}} || positively likes the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Weak}} || better than nothing at all&lt;br /&gt;
|-&lt;br /&gt;
| {{Acceptable}} || it is a workable solution&lt;br /&gt;
|-&lt;br /&gt;
| {{Prefer}} || it is what he would choose if it was only up to him and no outside influences&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- README: please keep alphabetically ordered by surname! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that support for BIP148 does not mean developers support merging it into Core.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 colspan=2 | Developer &amp;amp; affiliation* &amp;lt;!-- Using one year before the the creation date of this page as the benchmark. Do not list yourself as affiliated with a project that you haven&#039;t made meaningful contributions to since then.  --&amp;gt;&lt;br /&gt;
! Segwit itself&lt;br /&gt;
! colspan=3 | Deployment methods&lt;br /&gt;
! colspan=2 | Hardfork bundles (Silbert agreement)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki BIP 141] !! [https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki BIP 148] !! [https://github.com/bitcoin/bips/blob/master/bip-0149.mediawiki BIP 149] !! [https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki BIP 91] || Segwit2x || [https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014445.html COOP]&lt;br /&gt;
|-&lt;br /&gt;
| ฿tcDrak || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bryan Bishop || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Chow || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo || Core || {{Prefer}} || {{No}} || || {{Acceptable}} || {{No|LOL}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Johnathan Corgan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr || Core || {{Prefer}} || {{Prefer}} || {{No}} || {{AccJuly}} || {{No}} || {{Deficient}}&lt;br /&gt;
|-&lt;br /&gt;
| Christian Decker || Core || {{Prefer}} || {{Acceptable}} ||  ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Dorier || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{AccJuly}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Marco Falke || Core || {{Prefer}} || {{Deficient}} || {{Prefer}} || {{Deficient}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Mark Friedenbach || BIP 68/112 || {{Prefer}} || {{Prefer}} || {{No}} || {{AccJuly}} || {{No|LOL}} || {{No|Nope}}&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janik || Core || {{Prefer}} || {{No}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Kerin || Core || {{Prefer}} || {{Wanting}} || {{Prefer}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johnson Lau || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Eric Lombrozo || || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Greg Maxwell || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Alex Morcos || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Pavol &amp;quot;stick&amp;quot; Rusnak || Trezor || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Rusty Russell || c-lightning || {{Prefer}} || {{Prefer}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Gregory Sanders || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Jonas Schnelli || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jorge Timon || Core || {{Prefer}} || {{No}} || {{Prefer}} || {{Deficient}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Peter Todd || Core || {{Prefer}} || {{Acceptable}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Warren Togami || Elements || {{Prefer}} || {{Prefer}} || {{Acceptable}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir van der Laan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Leo Wandersleb || Mycelium || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille || Core || {{Prefer}} || || || || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Karl-Johan Alm || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;affiliation&amp;quot; is an optional field for the company or project the individual is associated with, that most qualifies the person to comment on the matter and is not meant as a company or project endorsement of the individual&#039;s position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039; This list is not yet complete, nor completely vetted by the parties listed for accuracy.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 colspan=2 | Company &lt;br /&gt;
! Segwit itself&lt;br /&gt;
! colspan=3 | Deployment methods&lt;br /&gt;
! colspan=2 | Hardfork bundles (Silbert agreement)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki BIP 141] !! [https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki BIP 148] !! [https://github.com/bitcoin/bips/blob/master/bip-0149.mediawiki BIP 149] !! [https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki BIP 91] || Segwit2x || [https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014445.html COOP]&lt;br /&gt;
|-&lt;br /&gt;
| Bitfury || miner || {{Prefer}} || {{Acceptable}} || || || {{AccJuly}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Coinbase || wallet || {{Prefer}} || {{Evaluating}} || {{Weak}}  ||  || {{AccJuly}} || &lt;br /&gt;
|-&lt;br /&gt;
| Xapo || wallet || {{Prefer}} || {{Evaluating}} ||  ||  || {{AccJuly}} || &lt;br /&gt;
|-&lt;br /&gt;
| Blockchain.info || wallet || {{Prefer}} || {{Evaluating}} || {{Weak}} ||  || {{AccJuly}} || &lt;br /&gt;
|-&lt;br /&gt;
| Kraken || exchange || {{Prefer}} || {{Acceptable}}  || ||  || {{AccJuly}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitstamp|| exchange  || {{Prefer}} || {{Acceptable}}  || ||  || {{Acceptable}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitfinex|| exchange  || {{Prefer}} || {{Acceptable}}  || ||  || {{Acceptable}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitpay|| wallet || {{Prefer}} || {{No}} || ||  || {{Prefer}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Localbitcoins|| exchange || {{Prefer}} || {{Acceptable}} || {{Weak}} ||  || {{AccJuly}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Poloniex|| exchange || {{Prefer}} || {{Wanting}} || ||  || {{AccJuly}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Bitmain|| miner || {{No}} || {{No}} || ||  || {{Prefer}} ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kalle</name></author>
	</entry>
</feed>