¿Hay un sandbox en Bitcoin para realizar pruebas, de modo que pueda crear bitcoins de muestra sin minar y realizar transacciones con fines de prueba?
Testnet es realmente pesado (cientos de gigabytes), ahora hay una alternativa más ligera: signet
. También hay una red solo local llamada regtest
, que puse en su propia sección. Por último, te explicaré txindex
, que es una opción útil para tener tu propio mini block explorer.
Para usarlo, primero inicie bitcoind con la opción:
bitcoind -signet
Tendrá que sincronizarse, pero será mucho más rápido que testnet ya que la cadena comenzó recientemente y, al momento de escribir, solo tiene alrededor de 27000 bloques:
% bitcoin-cli -signet getblockchaininfo
{
"chain": "signet",
"blocks": 26029
Puede usar bitcoin-cli -signet getnewaddress
para obtener una nueva dirección, que puede pegar en el grifo: https://signet.bc-2.jp/ (si se queja de que no tiene billetera, consulte la siguiente sección). Tenga en cuenta cómo signet
las direcciones también comienzan con tb
(lo que se denomina "prefijo legible por humanos", hrp), al igual que las direcciones de testnet.
% bitcoin-cli -signet listunspent
[
{
"txid": "9484eff65e5c33f601a8d6446859ffbc6ba59ffd53dca564d66a7c09e040c26a",
"address": "tb1q7x3nnyskqmgrj9hp95fgfg75fz50x4khay3s0t",
"amount": 10.00000000,
"confirmations": 3,
Si no ves nada de inmediato, espera un poco. Una vez que llegue la transacción, verá que el recuento de confirmaciones aumenta a intervalos regulares. Signet tiene bloques mucho más regulares que testnet.
El regtest no es realmente una red, ya que no está destinado a ser utilizado públicamente. La cadena comienza con la génesis y la prueba de trabajo está deshabilitada de manera efectiva, por lo que solo puede extraer sus propios bloques. Esto es útil si necesita probar reorganizaciones y cosas por el estilo, lo que no podrá hacer con signet.
% bitcoind -regtest
Deje que se ejecute en una ventana de terminal separada.
Ahora deberías tener una cadena vacía:
% bitcoin-cli -regtest getblockchaininfo
{
"chain": "regtest",
"blocks": 0,
Ahora, veamos si tienes una billetera:
% bitcoin-cli -regtest getwalletinfo
error code: -18
error message:
No wallet is loaded.
Si recibe un error como este, cree una billetera:
% bitcoin-cli -regtest createwallet testwallet
{
"name": "testwallet",
"warning": ""
}
Ahora, puede crear una nueva dirección:
% bitcoin-cli -regtest getnewaddress
bcrt1q0qx0d7prvrd64s3e3trq39fet7jwdecstw5tzu
Tenga en cuenta que el HRP mencionado anteriormente ahora es "bcrt", "bitcoin regtest".
Así es, la minería de CPU está viva y bien;) De hecho, regtest solo tiene bloques cuando generas algunos, tú mismo. Eso es bueno para probar, tienes tiempo para averiguarlo.
Puede minar directamente a la billetera (las llamadas salidas de coinbase , es posible que haya oído hablar de una empresa que lleva el nombre de estas). Aquí estoy usando el shell para insertar una dirección generada usando el comando de arriba (también debería funcionar en PowerShell en Windows):
% bitcoin-cli -regtest generatetoaddress 10 $(bitcoin-cli -regtest getnewaddress)
[
"2e25176b5122a3d16eca11355b2807ebf99e8ef3cf01e32634417baf47cb9a4b",
"3e8136a62d513925a075700e92789d70da67d5b3dd986e936d65b12a3ba53c72",
"55ca10e3932a9087259a3826148aa660e09b69b63fe84d6a81bc4e57de052060",
"4864e894662693ae7e32cb0d2a8bc3ad94c4f5e67e109873555bc5f7b5c166bc",
"0de8a4bfb5fa5a38fba39dcf9fe360e3382e6fa56c226553c30736525bea659e",
"69e3a04724793b90de126358a99f297b821cac83b9be12f3d569effd73729199",
"3eb2a83540ce04ef75f5258359ee1695fa0b2e6cbc04a078f85e3182cd500004",
"35e39307638bca2db359ee8fa6930fbbf20e5d465882c50e05c05e2510ca2e28",
"12f2b855729929aa091a7cffccb66886a6c406c7855f8851c25ab162b17455f1",
"2414f3ddfa767aa1916f296066d35ae58c828b49e84542c57509e7161201b746"
]
Extrajimos algunos bitcoins, pero debe recordar que existe una "madurez de la moneda", lo que significa que las monedas no se pueden usar inmediatamente después de la extracción, ni siquiera en el registro.
Entonces, después de extraer estos 10 bloques, verá que la billetera aún no informa salidas no gastadas:
% bitcoin-cli -regtest listunspent
[
]
Para madurar las monedas, extraiga cien bloques más (omitiré la salida, es solo el comando anterior con 100
en lugar de 10
), y verá las monedas extraídas en el primer comando:
% 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",
Habrá diez tx como este, porque los diez bloques que minamos inicialmente han madurado. Tienen recuentos de confirmación de 101 a 110.
jq
Tenga en cuenta cómo puede usar herramientas JSON estándar para extraer información de la bitcoin-cli
salida.
Por ejemplo, podemos verificar la cantidad de salidas de billetera no gastadas. En el ejemplo de la sección anterior, extrajimos 110 bloques, cada uno de los cuales tiene una salida de base de monedas para la billetera Core. Pero solo los 10 primeros han madurado:
% bitcoin-cli -regtest listunspent | jq length
10
Posiblemente desee restablecer su entorno de prueba antes y/o después de ejecutar una prueba. Con regtest, puede eliminar toda la cadena de bloques. Así que cierre el bitcoind
proceso que comenzamos arriba. Simplemente puede borrar el directorio regtest, pero tenga mucho cuidado de no borrar el incorrecto (en realidad, ni siquiera debería tener monedas reales (mainnet) en el sistema de archivos desde el que ejecuta sus pruebas ).
% rm -rf ~/.bitcoin/regtest/
Este no es un verdadero restablecimiento de fábrica, ya que si tiene alguna configuración ~/.bitcoin/bitcoin.conf
, aún se cargará. Entonces, si algo sigue funcionando inesperadamente, verifique su configuración.
Eliminar una cadena de bloques de signet tiene menos sentido, ya que simplemente descargaría exactamente la misma cadena después de reiniciar (a menos que algo esté terriblemente roto). Entonces, para garantizar un entorno de prueba de firma limpio, tal vez simplemente borre todo excepto blocks
, por ejemplo chainstate
, wallets
y indexes
.
Bitcoin Core tiene una característica interesante que le permite buscar información sobre una transacción arbitraria. Pero debes habilitarlo primero. Para hacer eso, escriba txindex=1
, ~/.bitcoin/bitcoin.conf
posiblemente en una sección regtest
o signet
, aunque solo lo puse en el nivel superior ya que mis monedas principales están en otro lugar, y es útil para todas las pruebas.
Ahora, con txindex habilitado, puede recuperar información sobre, digamos, la primera transacción del bloque 1 (justo después de génesis):
bitcoin-cli -signet decoderawtransaction $(
bitcoin-cli -signet getrawtransaction $(
bitcoin-cli -signet getblock $(
bitcoin-cli -signet getblockhash 1
) | jq -r '.tx[0]'
)
)
Obtiene, por ejemplo, el script de salida con el que se bloquearon estas monedas:
...
"vout": [
{
"value": 50.00000000,
"n": 0,
"scriptPubKey": {
"asm": "0 9243f727dd5343293eb83174324019ec16c2630f",
El paso "getrawtransaction" requiere txindex.
Esto es similar a la información que verá en un explorador de bloques. En este ejemplo, utilicé signet (que tiene un explorador de bloques público ), pero para el registro obviamente no tendrá un explorador de bloques disponible, por lo que el txindex podría ser útil.
primero instale el software (bitcoin-qt) siguiendo los pasos:
sudo apt-add-repository ppa:luke-jr/bitcoincore
sudo apt-get update
sudo apt-get install bitcoin-qt
correr:
bitcoin-qt -testnet
dado que testnet
es enorme, como sugiere @Janus Troelsen, hay una versión más ligera ( signet
):
bitcoin-qt -signet
haga clic en el Receive
botón en la captura de pantalla para obtener eladdress
ve al enlace http://tpfaucet.appspot.com/ y dale al address
para obtener testnet bitcoins
.
sudo apt update
Puede usar testnet, es una cadena separada: https://en.bitcoin.it/wiki/Testnet
bitcoins
sin mining
?. si no, entonces cómo minar bitcoin
entestnet
bitcoin
/ bitcoind
con testnet, simplemente use -testnet
flag.0.00
saldo btcbitcoin-qt -testnet
muro