¿Hay un sandbox en bitcoin para probar?

¿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?

Respuestas (3)

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.

Sello

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 getnewaddresspara 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 signetlas 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.

registro

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".

Minando algunas monedas

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 100en 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.

Procesando la salida de bitcoin conjq

Tenga en cuenta cómo puede usar herramientas JSON estándar para extraer información de la bitcoin-clisalida.

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

Empezar de nuevo, destruir la cadena

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 bitcoindproceso 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, walletsy indexes.

Txindex, tu propio explorador de bloques

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.confposiblemente en una sección regtesto 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.

¡Gracias por aceptar mi desafío e ir más allá!

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 testnetes enorme, como sugiere @Janus Troelsen, hay una versión más ligera ( signet):

bitcoin-qt -signet

red de prueba bitcoin-qt

haga clic en el Receivebotón en la captura de pantalla para obtener eladdress

ve al enlace http://tpfaucet.appspot.com/ y dale al addresspara obtener testnet bitcoins.

lo instalé con éxito. puede ser que necesites corrersudo apt update

Puede usar testnet, es una cadena separada: https://en.bitcoin.it/wiki/Testnet

¿Puedo crear bitcoinssin mining?. si no, entonces cómo minar bitcoinentestnet
Hay "grifos" de bitcoin para testnet bitcoins. tpfaucet.appspot.com
Si desea ejecutar bitcoin/ bitcoindcon testnet, simplemente use -testnetflag.
@KarelBílek muchas gracias por tu ayuda. pero todavía tengo 0.00saldo btc
@KarelBílek en la terminal que ejecutobitcoin-qt -testnet
@KarelBílek el enlace tpfaucet.appspot.com funcionó bien. muchas gracias... :)))
¿Está todo bien entonces? :)