mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2025-06-07 16:06:26 +00:00
Create 04_3_Creando_una_Transacción_Cruda_con_Argumentos_Ingresados_con_Nombre
This commit is contained in:
parent
7e0fbc1697
commit
2a56eec18b
@ -0,0 +1,97 @@
|
|||||||
|
# 4.3 Creación de una transacción en crudo con argumentos nombrados
|
||||||
|
|
||||||
|
A veces puede ser desalentador averiguar el orden correcto de los argumentos de un comando bitcoin-cli. Afortunadamente, puede utilizar _argumentos con nombre_ como alternativa.
|
||||||
|
|
||||||
|
> : advertencia: **ADVERTENCIA DE VERSIÓN:** Esta es una innovación de Bitcoin Core v 0.14.0. Si ha utilizado nuestros scripts de instalación, es lo que debería tener, pero vuelva a comprobar su versión si tiene algún problema. También hay un error en el uso del comando `createrawtransaction` de los argumentos con nombre que presumiblemente será corregido en 0.14.1.
|
||||||
|
|
||||||
|
## Crear un Alias para el argumento con nombre
|
||||||
|
|
||||||
|
Para utilizar un argumento con nombre debe ejecutar `bitcoin-cli` con el argumento `-named`. Si planeas hacer esto regularmente, probablemente querrás crear un alias:
|
||||||
|
```
|
||||||
|
alias bitcoin-cli="bitcoin-cli -named"
|
||||||
|
```
|
||||||
|
Como siempre, esto es para facilitar su uso, pero seguiremos usando los comandos completos para mantener la claridad.
|
||||||
|
|
||||||
|
## Probar un argumento con nombre
|
||||||
|
|
||||||
|
Para conocer los nombres de los argumentos de un comando, consulta la ayuda de `bitcoin-cli`. Enumerará los argumentos en su orden correcto, pero ahora también dará nombres para cada uno de ellos.
|
||||||
|
|
||||||
|
Por ejemplo, `bitcoin-cli help getbalance` lista estos argumentos:
|
||||||
|
|
||||||
|
1. dummy [used to be account]
|
||||||
|
2. minconf
|
||||||
|
3. include_watchonly
|
||||||
|
4. avoid_reuse
|
||||||
|
|
||||||
|
A continuación se muestra un uso tradicional y poco intuitivo de `getbalance` utilizando el argumento de confirmación mínima:
|
||||||
|
```
|
||||||
|
$ bitcoin-cli getbalance "*" 1
|
||||||
|
```
|
||||||
|
Con los argumentos con nombre, puede aclarar lo que está haciendo, lo que también minimiza los errores:
|
||||||
|
```
|
||||||
|
$ bitcoin-cli -named getbalance minconf=1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Probar una transacción en crudo
|
||||||
|
|
||||||
|
A continuación se muestran los comandos para enviar una transacción en crudo con argumentos nombrados:
|
||||||
|
```
|
||||||
|
$ utxo_txid=$(bitcoin-cli listunspent | jq -r '.[0] | .txid')
|
||||||
|
$ utxo_vout=$(bitcoin-cli listunspent | jq -r '.[0] | .vout')
|
||||||
|
$ recipient="n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi"
|
||||||
|
|
||||||
|
$ rawtxhex=$(bitcoin-cli -named createrawtransaction inputs='''[ { "txid": "'$utxo_txid'", "vout": '$utxo_vout' } ]''' outputs='''{ "'$recipient'": 0.00001 }''')
|
||||||
|
$ bitcoin-cli -named decoderawtransaction hexstring=$rawtxhex
|
||||||
|
{
|
||||||
|
"txid": "2b59c31bc232c0399acee4c2a381b564b6fec295c21044fbcbb899ffa56c3da5",
|
||||||
|
"hash": "2b59c31bc232c0399acee4c2a381b564b6fec295c21044fbcbb899ffa56c3da5",
|
||||||
|
"version": 2,
|
||||||
|
"size": 85,
|
||||||
|
"vsize": 85,
|
||||||
|
"weight": 340,
|
||||||
|
"locktime": 0,
|
||||||
|
"vin": [
|
||||||
|
{
|
||||||
|
"txid": "ca4898d8f950df03d6bfaa00578bd0305d041d24788b630d0c4a32debcac9f36",
|
||||||
|
"vout": 0,
|
||||||
|
"scriptSig": {
|
||||||
|
"asm": "",
|
||||||
|
"hex": ""
|
||||||
|
},
|
||||||
|
"sequence": 4294967295
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vout": [
|
||||||
|
{
|
||||||
|
"value": 0.00001000,
|
||||||
|
"n": 0,
|
||||||
|
"scriptPubKey": {
|
||||||
|
"asm": "OP_DUP OP_HASH160 e7c1345fc8f87c68170b3aa798a956c2fe6a9eff OP_EQUALVERIFY OP_CHECKSIG",
|
||||||
|
"hex": "76a914e7c1345fc8f87c68170b3aa798a956c2fe6a9eff88ac",
|
||||||
|
"reqSigs": 1,
|
||||||
|
"type": "pubkeyhash",
|
||||||
|
"addresses": [
|
||||||
|
"n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
$ signedtx=$(bitcoin-cli -named signrawtransactionwithwallet hexstring=$rawtxhex | jq -r '.hex')
|
||||||
|
$ bitcoin-cli -named sendrawtransaction hexstring=$signedtx
|
||||||
|
e70dd2aa13422d12c222481c17ca21a57071f92ff86bdcffd7eaca71772ba172
|
||||||
|
```
|
||||||
|
¡Voilà! Ha enviado otra transacción en crudo, pero esta vez utilizando argumentos con nombre para mayor claridad y para reducir los errores.
|
||||||
|
|
||||||
|
> : advertencia: **ADVERTENCIA DE VERSIÓN:** Aquí es donde aparece el error en Bitcoin Core 0.14: el argumento 'inputs' para 'createrawtransaction' se llama erróneamente 'transactions'. Así que, si está en Bitcoin Core 0.14.0, sustituye el argumento 'inputs' por 'transactions' para este y futuros ejemplos. Sin embargo, a partir de Bitcoin Core 0.14.1, este código debería funcionar como se muestra.
|
||||||
|
|
||||||
|
## Resumen: Creación de una transacción en crudo con argumentos nombrados
|
||||||
|
|
||||||
|
Ejecutando `bitcoin-cli` con la bandera `-named`, puedes utilizar argumentos con nombre en lugar de depender de argumentos ordenados. La ayuda de `bitcoin-cli` le mostrará siempre el nombre correcto de cada argumento. Esto puede resultar en un código más robusto, más fácil de leer y menos propenso a errores.
|
||||||
|
|
||||||
|
Esta documentación utilizará argumentos con nombre para todos los ejemplos futuros, por claridad y para establecer las mejores prácticas. Sin embargo, también mostrará todos los argumentos en el orden correcto. Por lo tanto, si prefiere no utilizar argumentos con nombre, simplemente elimine la bandera '-named' y todos los "name="s y los ejemplos deberían seguir funcionando correctamente._
|
||||||
|
|
||||||
|
## ¿Qué sigue?
|
||||||
|
|
||||||
|
Continuar "Enviando transacciones de Bitcoin" con [§4.4: Sending Coins with Raw Transactions](04_4_Sending_Coins_with_a_Raw_Transaction.md).
|
Loading…
x
Reference in New Issue
Block a user