Gibt es eine Sandbox in Bitcoin zum Testen?

Gibt es in Bitcoin eine Sandbox zum Testen, damit ich Beispiel-Bitcoins ohne Mining erstellen und Transaktionen zu Testzwecken durchführen kann?

Antworten (3)

Testnet ist wirklich schwer (Hunderte von Gigabyte), dazu gibt es jetzt eine leichtere Alternative: signet. Es gibt auch ein reines lokales Netzwerk namens regtest, das ich in einen eigenen Abschnitt gesteckt habe. Abschließend erkläre ich txindex, was eine nützliche Option ist, um einen eigenen Mini-Block-Explorer zu haben.

Signet

Um es zu verwenden, starten Sie zuerst Bitcoin mit der Option:

bitcoind -signet

Es muss synchronisiert werden, aber es wird viel schneller sein als Testnet, da die Kette vor kurzem gestartet wurde und zum Zeitpunkt des Schreibens nur etwa 27000 Blöcke hat:

% bitcoin-cli -signet getblockchaininfo
{
  "chain": "signet",
  "blocks": 26029

Sie können verwenden bitcoin-cli -signet getnewaddress, um eine neue Adresse zu erhalten, die Sie in den Faucet einfügen können: https://signet.bc-2.jp/ (wenn es sich beschwert, dass Sie keine Brieftasche haben, siehe nächster Abschnitt). Beachten Sie, dass signetAdressen ebenso tbwie Testnet-Adressen mit beginnen (was als "vom Menschen lesbares Präfix" bezeichnet wird, hrp).

% bitcoin-cli -signet listunspent
[
  {
    "txid": "9484eff65e5c33f601a8d6446859ffbc6ba59ffd53dca564d66a7c09e040c26a",
    "address": "tb1q7x3nnyskqmgrj9hp95fgfg75fz50x4khay3s0t",
    "amount": 10.00000000,
    "confirmations": 3,

Wenn Sie nicht sofort etwas sehen, warten Sie etwas. Sobald die Transaktion eintrifft, sehen Sie, dass der Bestätigungszähler in regelmäßigen Abständen ansteigt. Signet hat viel regelmäßigere Blöcke als Testnet.

Regtest

Regtest ist nicht wirklich ein Netzwerk, da es nicht für die öffentliche Nutzung gedacht ist. Die Kette beginnt mit der Entstehung und der Arbeitsnachweis ist effektiv deaktiviert, sodass Sie einfach Ihre eigenen Blöcke abbauen können. Dies ist nützlich, wenn Sie Reorgs und ähnliches testen müssen, was Sie mit signet nicht tun können.

% bitcoind -regtest

Lassen Sie es in einem separaten Terminalfenster laufen.

Jetzt sollten Sie eine leere Kette haben:

% bitcoin-cli -regtest getblockchaininfo
{
  "chain": "regtest",
  "blocks": 0,

Lassen Sie uns nun sehen, ob Sie eine Brieftasche haben:

% bitcoin-cli -regtest getwalletinfo          
error code: -18
error message:
No wallet is loaded.

Wenn Sie eine solche Fehlermeldung erhalten, erstellen Sie eine Brieftasche:

% bitcoin-cli -regtest createwallet testwallet
{
  "name": "testwallet",
  "warning": ""
}

Jetzt können Sie eine neue Adresse erstellen:

% bitcoin-cli -regtest getnewaddress          
bcrt1q0qx0d7prvrd64s3e3trq39fet7jwdecstw5tzu

Beachten Sie, dass die oben erwähnte HRP jetzt "bcrt", "bitcoin regtest" ist.

Mining einige Münzen

Das ist richtig, CPU-Mining lebt und ist gesund ;) Tatsächlich hat regtest nur Blöcke, wenn Sie selbst welche generieren. Das ist schön zum Testen, Sie haben Zeit, es herauszufinden.

Sie können direkt auf das Wallet minen (sogenannte Coinbase-Ausgänge , möglicherweise haben Sie von einer nach diesen benannten Firma gehört). Hier verwende ich die Shell, um eine Adresse einzufügen, die mit dem Befehl von oben generiert wurde (sollte auch in PowerShell unter Windows funktionieren):

% bitcoin-cli -regtest generatetoaddress 10 $(bitcoin-cli -regtest getnewaddress)
[
  "2e25176b5122a3d16eca11355b2807ebf99e8ef3cf01e32634417baf47cb9a4b",
  "3e8136a62d513925a075700e92789d70da67d5b3dd986e936d65b12a3ba53c72",
  "55ca10e3932a9087259a3826148aa660e09b69b63fe84d6a81bc4e57de052060",
  "4864e894662693ae7e32cb0d2a8bc3ad94c4f5e67e109873555bc5f7b5c166bc",
  "0de8a4bfb5fa5a38fba39dcf9fe360e3382e6fa56c226553c30736525bea659e",
  "69e3a04724793b90de126358a99f297b821cac83b9be12f3d569effd73729199",
  "3eb2a83540ce04ef75f5258359ee1695fa0b2e6cbc04a078f85e3182cd500004",
  "35e39307638bca2db359ee8fa6930fbbf20e5d465882c50e05c05e2510ca2e28",
  "12f2b855729929aa091a7cffccb66886a6c406c7855f8851c25ab162b17455f1",
  "2414f3ddfa767aa1916f296066d35ae58c828b49e84542c57509e7161201b746"
]

Wir haben einige Bitcoins geschürft, aber man muss bedenken, dass es eine „Münzenreife“ gibt, was bedeutet, dass Münzen nicht sofort nach dem Schürfen verwendet werden können, auch nicht bei Regtest.

Nachdem Sie also diese 10 Blöcke geschürft haben, werden Sie sehen, dass die Brieftasche immer noch keine nicht ausgegebenen Ausgaben meldet:

% bitcoin-cli -regtest listunspent
[
]

Um die Münzen zu reifen, schürfen Sie hundert Blöcke mehr (ich lasse die Ausgabe weg, es ist nur der obige Befehl mit 100anstelle von 10), und Sie werden die Münzen sehen, die im ersten Befehl abgebaut wurden:

% bitcoin-cli -regtest listunspent
  {
    "txid": "6fe92df06b95a20db44f989471483802a9aebc56e93057dca9fe0546445d35ff",
    "vout": 0,
    "address": "bcrt1qlu9a5687f3m4ct3r5ndlwy8juppgghysy2s67f",
    "label": "",
    "scriptPubKey": "0014ff0bda68fe4c775c2e23a4dbf710f2e042845c90",
    "amount": 50.00000000,
    "confirmations": 110,
    "spendable": true,
    "solvable": true,
    "desc": "wpkh([a45ff478/0'/0'/2']02ebc0275e56ecca4a80d6a6ff7d7ab884c972cff9db9a91b9bb3681741624d41a)#rgeusc6u",
   

Es wird zehn solche tx geben, weil die zehn Blöcke, die wir ursprünglich abgebaut haben, alle ausgereift sind. Sie haben Bestätigungszahlen von 101 bis 110.

Bitcoin-Ausgabe verarbeiten mitjq

Beachten Sie, wie Sie standardmäßige JSON-Tools verwenden können, um Informationen aus der bitcoin-cliAusgabe zu extrahieren.

Beispielsweise können wir die Anzahl der nicht ausgegebenen Wallet-Ausgaben überprüfen. Im Beispiel aus dem vorherigen Abschnitt haben wir 110 Blöcke abgebaut, die jeweils einen Coinbase-Ausgang für das Core-Wallet haben. Aber nur die ersten 10 sind ausgereift:

% bitcoin-cli -regtest listunspent | jq length
10

Fangen Sie von vorne an, nukleieren Sie die Kette

Möglicherweise möchten Sie Ihre Testumgebung vor und/oder nach dem Ausführen eines Tests zurücksetzen. Mit regtest können Sie die gesamte Blockchain entfernen. Beenden Sie also den bitcoindProzess, den wir oben gestartet haben. Sie können einfach das regtest-Verzeichnis löschen, aber seien Sie sehr vorsichtig, dass Sie nicht das falsche löschen (eigentlich sollten Sie nicht einmal echte (Mainnet-)Münzen in dem Dateisystem haben, von dem aus Sie Ihre Tests ausführen ).

% rm -rf ~/.bitcoin/regtest/

Dies ist kein echtes Zurücksetzen auf die Werkseinstellungen, denn wenn Sie eine Konfiguration in haben ~/.bitcoin/bitcoin.conf, würde diese immer noch geladen werden. Wenn also etwas unerwartet immer noch funktioniert, überprüfen Sie Ihre Konfiguration.

Das Löschen einer Signet-Blockchain ist weniger sinnvoll, da Sie nach dem Neustart genau dieselbe Kette herunterladen würden (es sei denn, etwas ist schrecklich kaputt). Um also eine saubere Signet-Testumgebung zu gewährleisten, löschen Sie vielleicht einfach alles außer blocks, zB chainstate, walletsund indexes.

Txindex, Ihr eigener Block-Explorer

Bitcoin Core hat eine nette Funktion, mit der Sie Informationen zu einer beliebigen Transaktion nachschlagen können. Aber Sie müssen es zuerst aktivieren. Um dies zu tun, schreiben Sie txindex=1in ~/.bitcoin/bitcoin.conf, möglicherweise in einen regtestoder signet-Abschnitt, obwohl ich es nur auf der obersten Ebene platziert habe, da meine Mainnet-Münzen woanders sind, und es für alle Tests nützlich ist.

Jetzt, mit aktiviertem txindex, können Sie Informationen über beispielsweise die erste Transaktion von Block 1 (direkt nach Genesis) abrufen:

bitcoin-cli -signet decoderawtransaction $(
  bitcoin-cli -signet getrawtransaction $(
    bitcoin-cli -signet getblock $(
      bitcoin-cli -signet getblockhash 1
    ) | jq -r '.tx[0]'
  )
)

Sie erhalten zum Beispiel das Ausgabeskript, mit dem diese Coins gesperrt wurden:

  ...
  "vout": [
    {
      "value": 50.00000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "0 9243f727dd5343293eb83174324019ec16c2630f",

Der Schritt „getrawtransaction“ erfordert txindex.

Dies ähnelt den Informationen, die Sie in einem Block-Explorer sehen. In diesem Beispiel habe ich signet verwendet (das einen öffentlichen Block-Explorer hat ), aber für regtest steht Ihnen offensichtlich kein Block-Explorer zur Verfügung, daher könnte txindex nützlich sein.

Vielen Dank, dass Sie sich meiner Herausforderung gestellt und alles getan haben!

Installieren Sie zuerst die Software (bitcoin-qt), indem Sie die folgenden Schritte ausführen:

sudo apt-add-repository ppa:luke-jr/bitcoincore
sudo apt-get update    
sudo apt-get install bitcoin-qt

laufen:

bitcoin-qt -testnet

Da testnetes riesig ist, wie @Janus Troelsen vorschlägt, gibt es eine leichtere Version ( signet):

bitcoin-qt -signet

bitcoin-qt testnet

Klicken Sie auf die ReceiveSchaltfläche im Screenshot, um die zu erhaltenaddress

Gehen Sie zum Link http://tpfaucet.appspot.com/ und geben Sie die addresszu bekommen testnet bitcoins.

Ich habe es erfolgreich installiert. Möglicherweise müssen Sie laufensudo apt update

Sie können Testnet verwenden, es ist eine separate Kette: https://en.bitcoin.it/wiki/Testnet

bitcoinsKann ich ohne ? erstellen mining. wenn nicht, wie man dann bitcoinminttestnet
Es gibt Bitcoin-"Faucets" für Testnet-Bitcoins. tpfaucet.appspot.com
bitcoinWenn Sie / bitcoindmit testnet ausführen möchten , verwenden Sie einfach -testnetflag.
@KarelBílek vielen Dank für deine Hilfe. aber ich habe immer noch 0.00btc guthaben
@KarelBílek im Terminal laufe ichbitcoin-qt -testnet
@KarelBílek der Link tpfaucet.appspot.com hat gut funktioniert. Vielen Dank... :)))
Ist dann alles in Ordnung? :)