During my initial research period at UAB, I began developing a replica of the real Bitcoin mainnet. While this might sound unusual—especially given the existence of testnet and regtest networks—there’s a clear reason behind it.
This initiative emerged from the team’s need to identify unique transaction fingerprints left by various wallet software and to cluster addresses based on the tools used to generate them. Since many wallets offer limited or no support for testnet or regtest environments, this situation led us to create a full-featured, mainnet-like environment instead.
The implemented mainnet is built directly from the original Bitcoin Core source code, but it operates in complete isolation from the real Bitcoin network.

  • Which are the benefits?
    • Total control over the chain logseq.order-list-type:: number
      • Enables operations in a “distributed-nature” environment without the challenges of being truly distributed.
      • Supports large-scale transaction testing
    • Easy to deploy, as every node runs inside a Docker container logseq.order-list-type:: number
    • Software and Hardware testing compatible only with mainnet logseq.order-list-type:: number
    • Zero-cost transactions logseq.order-list-type:: number

  • Which are the requirements?
    • Segwit and Taproot must be enabled from the genesis block, as their activation heights affect transaction validation. If a Segwit or Taproot address appears before its expected height, the node would consider it invalid.
    • The network must remain fully isolated from the internet to prevent synchronization with the original Bitcoin blockchain.
  • Architecture
    • We can define three critical node types:
      • Full Node: Ensures consensus on the chain.
      • Router Node: Manages connections between peers.
      • Miner Node: Mines a block when a transaction is sent to the network. 
  • Each node is contained in a custom Ubuntu-based Docker image with Bitcoin Core 24.0.1 inside. The image is approximately5.11 GB in size. These Docker containers are generated using a Dockerfile, which downloads the minimum requirements to execute Bitcoin Core. In general terms, the Dockerfile clones the Bitcoin source code, modifies a couple of files, and compiles it. Then, it copies the bitcoin.conf and mining scripts, finally exposing port 8333 for the Bitcoin protocol.
  • The two modified files are: – chainparams.cpp: Modified to implement SegWit and Taproot from the genesis block. – mining.cpp: Modified to remove initial block validation, allowing the mining template to be received even when it’s not fully synchronized.
  • An entrypoint is created to ensure the service runs with only the minimum permissions and allows Docker to start only if the bitcoindservice is active.

  • Configuring bitcoin.conf
    • bitcoin.conf is the configuration file used by the Bitcoin Core daemon to run your node with specific parameters.
    • So, how should we configure our bitcoin.conf file to achive this bedtest? Actually, it’s quite simple—just ensure the following settings:
      • rpcallowip: Limit access to the Docker network (or, if you want to connect with an external IP, you can specify that IP).
      • paytxfee: Since the blockchain doesn’t contain any data, the fee estimation algorithm may fail. We must set the fee manually, e.g., 0.0001 BTC.
      • minimumchainwork: Set to 0 since this new mainnet will not have any work yet.
      • txindex: Set to 1 to enable indexing transaction searches (useful for testing but not mandatory).
  • You can play on generating your own bitcoin.conf here 🙂

  • Network
    • Each Docker container is generated within a Docker network, which limits its connections and prevents it from connecting to anything outside the network. The connection between nodes is established through the addnode configuration, which connects each node to the router node. 
  • Additionally, there are several ways to interact with this network, but it must always remain disconnected from peers on the real mainnet. In our setup, we’ve defined an isolated node on a separate network and configured the settings to allow connections only between my host and the other node in the external network.
  • Of course, you can connect several software wallets to the blockchain via RPC calls. However, all connections must come from an endpoint where RPC calls are allowed by our node.

  • Mining
    • You can mine in several ways. Since the difficulty is set to 1, it shouldn’t be very difficult to find a block with a decent mining script. You can find an example script in the GitHub source, though we don’t recommend using it, as it’s not very competitive. That’s why we switched to using an ASIC miner.

  • Add-ons
    • Just like on the real Bitcoin network, you can always add services to your node. In our case, we needed a faucet to freely get bitcoins when necessary, and a block explorer to track transactions.
    • Faucet
      • To create the faucet, we implemented a simple Node.js server that sends and receives information from a node.
      • Although the image below shows two separate nodes to manage coins (one for mining and one for the faucet), we could combine them so the faucet always has enough balance to distribute. Everything was containerized in Docker for easier deployment. 
  • Block Explorer
    • If desired, you can also implement a block explorer. We deployed a Dockerized version of Mempool Space locally to enhance our ability to explore blocks and transactions.
  • How to build it
    • Alright, the real fun begins now, how do we build it and actually use it? You’ve got a detailed guide over on the GitHub README, but let me break it down for you here 🙂
    • Prerequisites
      • Docker (v20.10 or higher recommended)
    • Installation
      • Method 1: Download the Image from GitHub Container Registry
        • You can directly pull the pre-built Docker image and run the setup script without building the image from source following these steps:
          • # Pull the image from the GitHub Container Registry docker pull ghcr.io/niktowcode/mainnet_testbed:1.0 # Clone the repository git clone https://github.com/NiktowCode/BTC-Labnet.git cd BTC-Labnet # Run the script to set up Docker containers (commenting out the build step): ./start.sh
      • Method 2: Build from Source
        • Follow these steps to build the image from source:
          • # Clone the repository: git clone https://github.com/NiktowCode/BTC-Labnet.git cd BTC-Labnet # Run the script to set up Docker containers: ./start.sh
          • After execution, three interconnected Bitcoin nodes (bc-node1, bc-node2, and bc-node3) will be created.
    • Setup Process
      • Building a Customized Docker Image for Bitcoin-Core
        • Modify Bitcoin-Core: Adjust the Bitcoin-Core code to enable SegWit and Taproot.
        • Create a Dockerfile: Use your own Dockerfile to build your custom Bitcoin-Core image.
        • Build the Docker Image: Run the following command:docker build -t bitcoin .
      • Setting Up the Docker Network
        • Create a Docker bridge network docker network create -d bridge bitcoin_network
      • Running Bitcoin Nodes
        • Start your Bitcoin node:docker run -it -d --network bitcoin_network --name bc-node1 -p 8333:8333 -p 8332:8332 bitcoin -printtoconsole -txindex=1 -reindex

  • As you can see, installing it isn’t too complicated. While the build does compile Bitcoin Core, so it might take a few minutes, once it’s done… you’ll have all the power to do whatever you want with your Bitcoin blockchain clone

Leave a Reply

POKERBET2WIN Link Game Online x Building Your Own Mainnet – DISCRYPT

POKERBET2WIN menghadirkan sudut baca yang unik saat link game online dipadukan dengan building your own mainnet. Kombinasi ini memberi kesan teknis sekaligus praktis, sehingga pembaca bisa menangkap arah pembahasan sejak awal.

Di DISCRYPT, fokusnya ada pada cara memahami koneksi, alur akses, dan struktur mainnet yang dibangun sendiri tanpa keluar dari tema judul. Pendekatan seperti ini membantu menjelaskan kenapa istilah link game online terasa berbeda ketika dikaitkan dengan mainnet.

Kalau Anda ingin melihat bagaimana POKERBET2WIN merangkai tema tersebut dengan gaya yang lebih rapi dan terarah, lanjutkan membaca di DISCRYPT. Perspektifnya dibuat ringan, tetapi tetap relevan dengan inti pembahasan.

TESLA388 THREADS77 THREADS777 TIARA99 TIGER88 TIGER888 TIGERBET88 TIGERBET888 TIKET88 TIKTOK303 TIKTOK77 TIKTOK777 TIS138 TITAN77SLOT TOBA4D TOGEL212 TOGEL234 TOGEL2D TOGEL303 TOGEL388 TOGEL68 TOGEL777 TOGEL911 TOGEL99 TOGELKITA TOKO99 TOKYO138 TOKYO303 TOP888 TOPAGEN TOPSLOT138 TOTO303 TOTO338 TOTO66 TOTO95 TOTO96 TOTO98 TOTO988 TOTOBET88 TOTOSLOT88 TOYOTA4D TOYOTA777 TRIK777 TULUS4D TUMPAH123 TUMPAH138 TUMPAH168 TUMPAH4D TUMPAH77 TUMPAH777 TUMPAH88 TUMPAH888 TUMPAH99 TUMPAHJP TUMPAHSLOT TUPAI4D TWIN88 UANG123 UANG138 UANG365 UANG777 UANG88 UANGBM88 UANGSLOT88 ULTRA303 UNGGUL88 UNIK77 UNO123 UNTUNG168 UNTUNG77 URA338 USAHA138 USAHA77 USAHA777 USAHA88 USAHA888 USD4D USERNESIA USLOT88 OLX188 VARIO138 VEGAS188 VEGAS303 VEGAS805 VEGAS888 VEGASBET88 VEGASSLOT777 VEGASSLOT88 VEGASWIN VENOM4D VENUS88 VESPA4D VGSLOT VIN4D VIP123 VIP77 VIP88 VIPBET888 VIPSLOT88 VIRAL138 VIRAL77 VIRTOTO VIRTUAL88 VISA88 VIVA77 VIVA88 WAHYU88 WAKANDA4D WAKTOTO WALET789 WARGA138 WARISAN4D WARNET99 WARUNG123 WARUNG27 WARUNG4D WARUNG777 WARUNG88 WARUNG99 WARUNGHOKY88 WASLOT88 WAYANG123 WAYANG77 WAYANG888 WD303 WEBSLOT WEDE89SLOT WG138 WINSPORT777 XOXE88 YAKIN4D YAMAHA4D YOK633 ZEUS128 ZEUS178 ZEUS365 ZEUS777 ZEUS888 ZIPO4DSLOT ZIPPO88 ZONA138 ZONA4D ZONA777 ZONAGAMING77 ZOOM777 MAFIASLOT GLX MPO IDNTOTO UG HKBGAMING OZZOGAMING QQ SLOT PULSA SLOTGOPAY SLOTOVO LINKSLOT SLOTRTP SLOTREZEKI NOMPLOK REZEKI NOMPLOK TOTOMACAU TOTOMACAU1 TOTOMACAU2 TOTOMACAU3 TOTOMACAU4 HONGKONGPOOLS SYDNEYPOOLS SINGAPOREPOOLS SCATTER99 TORPEDO99 BOSSLOT138 PUSAT69 DOMPET69 BONUS200 PEPE77 BETGACOR303 TORNADO88 SIBAYAK99 ASIAJITU LIVESCORE BERSATUTOTO CRYSTALSLOT CRYSTALTOTO TOPBET4D LAWU88 NOWGOAL SPBO UNOGOAL OTAKUDESU LK21 LAYARKACA21 GUDANGMOVIES AFB88 ALLBET GA28 FASTSPIN VPOWER WORLDMATCH SPINIX ONLYPLAY NEXTSPIN SPINOMENAL SIMPLEPLAY OMAHA SUPERBULL QQSPIRIT SAKONG VESATRADE BET365 FUN88 DAFABET BWIN 1XBET BETWAY SKYBET 90BOLA AISCORE BGIBOLA BOLA009 BOLASIAR FLASHSCORE GOALOO SLOTGG SENANGSLOT77 SYAIRHK SLOT BCA SLOT MANIA SLOT THAILAND SLOT GACOR SLOT ASIA SLOT TOTO SLOT MAXWIN SLOT HONGKONG SLOT TAIWAN SLOT KAMBOJA SLOT VIETNAM SLOT JEPANG SLOT DUBAI SLOT BSI SLOT DANAMON SLOT OVO SLOT DANA SLOT GOPAY SLOT LINKAJA SLOT BNI SLOT AMERIKA SLOT DEMO SLOT MAHJONG JUDI BOLA SLOT ZEUS SLOT PRINCESS SLOT BONANZA RAJASLOT303 SLOT SULE PADANGTOGEL SLOTREJEKI KODOKEMAS77 55KBET PKTOTO 33HBET 55TBET 66EBET EETOTO PETRUK303 EN777 76KBET 22RBET 75WBET 56XBET TOTO176 CUAN123 BANTENGMERAH DESA88 WIN88 SULTANLOTRE WAJIK88 ULARSLOTO77 AGEN126 LOTREONLINE PUSATLOTRE SURGALOTRE SAHABATLOTRE VIVATOGEL TOGELVIRAL JUNIORTOGEL TOTO AMERIKA MIKAMI88 TOGEL MACAU TOGEL HONGKONG TOGEL SYDNEY TOGEL JAPAN TOGEL CHINA TOGEL CAMBODIA TOGEL SINGAPORE TOGEL PCSO TOGEL TAIWAN TOGEL HK TOGEL SDY TOGEL SGP DATA HK PAITO HONGKONG PAITO SYDNEY PAITO SINGAPORE PAITO HK PAITO SDY PAITO SGP PAITO MACAU PAITO JAPAN PAITO TAIWAN BUKU MIMPI SCATTER HITAM SCATTER MERAH SCATTER GOLD SCATTER PINK RTP LIVE GOKILBET TAHU69 APT188 SONIC55 yaotogel tkrejeki99 crown4d petik168 slot princess slot olympus slot bonanza slot sule slot dubai buruemas aqua138 kodokemas77 cerdas138 bursa138 motor138 galeri55 pro77 ligabola888 promoslot vip88 main88 judislot join77 toto988 wd303 subur4d toto96 ularsloto77 ga28 jago55 okgas tebak777 jos4dslot id gacor receh123 gokilbet joker286 OMEGABET88 MANDIRI88 HUJANTOTO MAMIBET KING99 CUANHOKI OASISTOTO MINION88 OPPOTOTO DEVIL666 OMUTOTO ONETOGEL RAYA123 PAMANTOTO UUS77 KUDA4D BETON88 MPL77 NIX777 SULETOGEL EKOTOTO EUROTOTO TIKTAKTOTO JEBOLTOTO CONGTOTO SALJUTOTO NAGA138 MPO1212 FUN4D BYON388 BET138 33WBET 77RABBIT slot1212 slot1221 slot128 slot1388 slot600 slot700 slot8000 slot888ku slot889 slotbola slotbonus sloter77 slotfafa slotguru slothoki88 slotjackpot slotkilat77 slotking99 slotmpo slotrezeki slottogel88 slotwin77 glx mpo ug hkbgaming ozzogaming qq slotovo linkslot slotrezeki nomplok rezeki nomplok totomacau1 totomacau2 totomacau3 totomacau4 sydneypools bonus200 serverslot livescore bersatutoto crystalslot crystaltoto polisislot topbet4d lawu88 anti rungkad otakudesu samehadaku lk21 gudangmovies slot freespin scatter merah scatter pink scatter gold slot asia slot habanero rtp live slot zeus toto amerika togel cambodia togel china togel hk togel sdy togel sgp togel taiwan togel inggris togel japan togel california togel buffalo togel sydney togel atlanta togel florida togel wisconsin togel oregon togel germany togel singapore togel bullseye togel pcso togel portland togel bogota keluaran cambodia keluaran china keluaran taiwan keluaran inggris keluaran hongkong keluaran california keluaran buffalo keluaran atlanta keluaran florida keluaran wisconsin keluaran oregon keluaran germany keluaran singapore keluaran bullseye keluaran pcso keluaran portland keluaran bogota raja slot slot cq9 slot live22 slot playstar slot mahjong nex4d wbet afb88 we casino fastspin we1 poker vpower worldmatch mario club spinix onlyplay 9 gaming united gaming nextspin spinomenal simpleplay omaha superbull qqspirit sakong ultimate keno vesatrade bola tangkas wild bandito ws168 POKERBET2WIN Link Game Online x Building Your Own Mainnet – DISCRYPT