Gibt es in Bitcoin eine Sandbox zum Testen, damit ich Beispiel-Bitcoins ohne Mining erstellen und Transaktionen zu Testzwecken durchführen kann?
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.
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 signet
Adressen ebenso tb
wie 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 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.
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 100
anstelle 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.
jq
Beachten Sie, wie Sie standardmäßige JSON-Tools verwenden können, um Informationen aus der bitcoin-cli
Ausgabe 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
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 bitcoind
Prozess, 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
, wallets
und indexes
.
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=1
in ~/.bitcoin/bitcoin.conf
, möglicherweise in einen regtest
oder 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.
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 testnet
es riesig ist, wie @Janus Troelsen vorschlägt, gibt es eine leichtere Version ( signet
):
bitcoin-qt -signet
Klicken Sie auf die Receive
Schaltfläche im Screenshot, um die zu erhaltenaddress
Gehen Sie zum Link http://tpfaucet.appspot.com/ und geben Sie die address
zu bekommen testnet bitcoins
.
sudo apt update
Sie können Testnet verwenden, es ist eine separate Kette: https://en.bitcoin.it/wiki/Testnet
bitcoins
Kann ich ohne ?
erstellen mining
. wenn nicht, wie man dann bitcoin
minttestnet
bitcoin
Wenn Sie / bitcoind
mit testnet
ausführen möchten , verwenden Sie einfach -testnet
flag.0.00
btc guthabenbitcoin-qt -testnet
Mursch