Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

bitcoin-testing-tools

This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:

  • a bitcoin node that mines bitcoin on a custom signet
  • a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
  • a core-lightning node

Preparation

First of all, you have o make sure that port 60602 is reachable from all over the internet.

On ubuntu you can install ufw with

sudo apt install -y ufw

Then you need to set some default configuration and enable the firewall:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable

After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:

sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'

Usage

Miner

The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run

docker-compose -f docker-compose_miner_signet.yml up

From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:

# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"

in order to replace the default parameters in the make-node.sh file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".

Node

Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh file and it must be run with source make-node.sh. After, the "node" client can then run the docker compose command:

docker-compose -f docker-compose_node_signet.yml up

Electrum wallet

Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet flag and must be connected to the custom electrum server.

git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet

At this point, create a new wallet and then go to Tools --> Network, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602. Now, you can get a new address from the Electrum wallet and move some coin with

docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'

Core-Lightning

By running the get-cln-strings.sh make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000

About

A testing framework for bitcoin applications and software

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages