easepay-custom-signet-script

Custom Bitcoin Signet Docker Setup

Overview

This repository contains a Docker setup for running a custom Bitcoin Signet. Signet is a test network (testnet) for Bitcoin, allowing developers to test Bitcoin applications and experiments without risking real funds and without the unpredictability of the public testnet.

The provided Dockerfile and scripts automate the process of setting up a custom Signet, generating necessary keys and configuration, and running a Bitcoin node configured for this custom Signet.

Features

  • Custom Signet Configuration: Allows the creation of a private Signet with custom consensus rules.
  • Automated Key and Script Generation: Automatically generates the necessary keys and block script for the Signet.
  • Dockerized Environment: Ensures a consistent and isolated environment for running the Bitcoin node.
  • Block Mining Capabilities: Includes scripts to mine blocks on the custom Signet.

Prerequisites

  • Docker
  • Git (for cloning the repository)

Repository Contents

  • Dockerfile: Instructions for building the Docker image with Bitcoin Core and necessary dependencies.

  • generate_signet.sh: Shell script to set up the custom Signet, generate keys, define the block script, and start the Bitcoin node.

  • generate.py: Python script used for mining blocks on the custom Signet.

Setup and Usage

Building the Docker Image

  1. Clone this repository.
  2. Navigate to the repository directory.
  3. Build the Docker image:

docker build -t bitcoin-signet .

Running the Custom Signet Node

docker run -d -p 38333:38333 -p 38332:38332 bitcoin-signet

The generate_signet.sh script will execute within the container, setting up the custom Signet and starting the Bitcoin node.

** NOTE **: the signet challenge parameter (pubkey) should be generated before building the docker image. this can be done in your local machine. This approach would mean you would have a fixed public key for your Signet, which isn't such a big deal for testing. its also possible to update the generate_script.sh script to dynamically create the bitcoin.conf after generating the public key. i ran into some issues trying to do this, you may have the time, so Knock yourself out and create a PR if you get it done.

POINTERS

  • The script would first start bitcoind in regtest mode, generate the key pair, construct the signetchallenge with the new public key,
  • create the bitcoin.conf with this signetchallenge, and then restart bitcoind in Signet mode with the new configuration.

Warning: This approach is more complex but allows for a fresh public key each time you build and run the container.

Accessing the Node

  • The Bitcoin node's JSON-RPC interface will be available on port 38332 of the host machine.. This would be deployed for easy connection for all team members that needs to interact with it.

  • The Bitcoin P2P network for this Signet operates on port 38333.

Customizing the Signet

You can modify the generate_signet.sh script to change the Signet parameters, such as the block signing keys or other consensus rules.

Security Considerations

This setup is intended for development and testing purposes only. Do not use it with real funds or sensitive data. it is your responsibility to Ensure appropriate security measures are in place if exposing the node to public networks.

Contributing

Contributions to this project are welcome. Please ensure that any changes are tested with the Docker setup before submitting a pull request.

Description
No description provided
Readme 42 MiB
Languages
TypeScript 29.9%
JavaScript 24.3%
Python 23.7%
HTML 14.8%
Shell 6.1%
Other 1.2%