Realiza una estimación sobre la comisión de tu transacción, desde tu nodo completo de Bitcoin
- decentralizedb
Calcular el costo de la comisión de una transacción en Bitcoin
El objetivo de este artículo, como el muchos otros que escribo es para hacerte ver y entender como funciona Bitcoin “por dentro”, muchas veces decimos (yo el primero) que Bitcoin es magia, pero en realidad Bitcoin es real, es un conjunto de criptografía, matemáticas, algoritmos, redes, protocolos y sistemas de cómputo que hacen posible que pensemos que Bitcoin es magia.
Si entiendes esto, además, creo yo, que tendrás la posibilidad de elegir cómo hacer uso de lo que Bitcoin ofrece más allá de un precio y que es la posibilidad de seguir aprendiendo para ser soberano en su uso.
Por ello y dado que en los últimos meses he visto mucha información sobre cómo funciona el sistema para estimar el cobro de comisiones en Bitcoin y que además veo muchas dudas, es que me atrevo a escribir este artículo, esperando que así como a mí me esta sirviendo para entender, aclarar y repasar algunos conceptos, sea de ayuda para otros tantos.
Realizar una estimación sobre el costo de la comisión de tu transacción, puede llevarse a cabo desde tu propio nodo completo de Bitcoin, sin necesidad de recurrir a terceros o buscar información en la red.
Todo desde tu nodo, con total privacidad, seguridad y con la confianza que te proporciona tener un nodo completo.
Para tener una aproximación más exacta al coste de la comisión a pagar por una transacción es necesario que también conozcas o calcules el tamaño de la misma, para ello voy a suponer que ya te viste los 2 pods de @lunaticoin y @sr_gi que explican qué el tamaño sí importa tratándose de las Transacciones en Bitcoin (si no lo has hecho aún no se a qué esperas). En esos 2 pods vas a encontrar una explicación muy detallada de cómo hacerlo. Yo no lo voy a explicar porque estoy a años luz de realizar una explicación tan clara, amplia y concisa como lo hicieron ellos, así que te invito a escucharlo.
Como el objetivo de nuestro artículo es que tengas una idea de cómo es el proceso y que tengas además las herramientas, voy a suponer que ya tienes el tamaño de tu transacción.
Entonces lo siguiente es que sepas qué utxos puedes usar en la operación, para ello puedes usar el comando listunspent, este comando te devolverá una lista de todos los utxos (vamos a llamarle «monedas) que están visibles desde tu nodo.
Cuando digo visibles me refiero a que te dará los utxos de las direcciones de tu wallet y de las wallets que tengas configuradas como watch-only.
El comando tiene además una serie de parámetros opcionales que puedes consultar desde la consola del cliente Bitcoin-Qt (si te va más hacerlo de manera gráfica), tecleando help listunspent o si eres más de comandos, a través del comando “bitcoin-cli help listunspent” (sin comillas), desde una ventana de terminal donde tengas ejecutando tu nodo.
Esto te ayudaría a conocer las «monedas» que tienes disponibles para gastar y con ello armar tu transacción y calcular la fee.
Por ejemplo:
Vamos a suponer que quieres enviar 0.60 bitcoins y ejecutas el comando listunspent y derivado de conocer las «monedas» que puedes gastar te das cuenta que requieres usar 2, ya que tienes 2 «monedas», una por valor de 0.50 y otra 0.51 bitcoins. Lo que tendrás que hacer es seleccionar, por ejemplo gastar la de 0.50 y de la de 0.51 tomar 0.10 bitcoins.
Entonces tendrás que hacer uso de tus dos «monedas» para el envío y tendrás como salida, además, la transacción de cambio, es decir el 0.41 bitcoin que te corresponde de “cambio”.
Te dejo esta imagén para hacer más sencillo el ejemplo:
Otra cosa a tener en cuenta y que influye en las comisiones de la transacción es el tamaño de la mempool. La mempool es la cantidad de memoria asignada para almacenar las transacciones pendientes, cada nodo completo de Bitcoin puede implementar su propia política de manejo de la mempool, pero no es objeto de este artículo. Sin embargo, es importante entender este concepto porque una vez que la mempool excede el tamaño asignado las transacciones con comisiones más bajas se quedan en una especie de cola esperando por un siguiente bloque (o varios), por lo que si tienes cierta urgencia en que tu transacción sea procesada, es recomendable establecer una comisión más alta y si no tienes prisa en absoluto, una comisión baja no será un problema.
Sabiendo eso, puedes usar el comando estimatesmartfee pasándole como parámetro el número aproximado de confirmaciones que quisieras para que tu transacción pueda empezar a ser confirmada y otro de los parámetros (opcional) sería el tipo de estimación que quieres. Los posibles valores son:
- CONSERVATIVE (si no informas este es el default), significa que el comando hará un cálculo conservador de cual sería la posible comisión a pagar, dando como resultado una comisión más alta pero con más certeza de que tu transacción sea incluida en las condiciones que estas calculando.
- UNSET, usa los valores por default para el cálculo de la comisión, integrados en el código de Bitcoin.
- ECONOMICAL, fuerza para que el cálculo de las comisiones se use obtenga el valor más económico. Tiene el riesgo de que la comisión obtenida no cumpla con las condiciones bajo las que estás calculando.
Como resultado tendrás la comisión estimada por kilobyte necesaria para que una transacción comience la confirmación dentro del bloque “X”.
Voy a tratar de ser más claro con un ejemplo:
Suponiendo que quisieras que tu transacción empezara a ser confirmada a partir de que la envías, es decir tienes mucha urgencia en que, una vez enviada sea incluida a la brevedad posible en algún bloque y empiece a ser minada, tendrías que ejecutar el comando:
bitcoin-cli estimatesmartfee 2 CONSERVATIVE , como resultado tendrías algo como esto:
{
«feerate»: 0.00019207,
«blocks»: 2
}
Lo cual significa que por cada kilobyte de peso en tu transacción (esa que ya calculaste escuchando los pods que te recomendé), estarías pagando 0.00019207 bitcoins debido a que quieres o necesitas que sea incluida cuanto antes, al momento de escribir este artículo y dado que hay bastante volumen en la mempool, ese es el coste y es más o menos equivalente a $1.30 USD dólar.
La misma ejecución pero tomando como consideración que pueda esperar a que pasen 12 bloques (unas 2 horas porque 1 bloque es minado más o menos cada 10 minutos) desde que lo envíes y que además realice la estimación económica, el resultado sería:
{
«feerate»: 0.00010627,
«blocks»: 12
}
Lo cual significa que por cada kilobyte de peso en tú transacción, estarías pagando 0.00010627 bitcoins, que es más o menos el equivalente a $0.72 USD dólar.
Cómo podrás ver, aprender que el tamaño de las transacciones es muy importante, así como el saber hacer uso de tus herramientas, en este caso tu nodo para hacer el cálculo.
También es importante que entiendas que el momento también lo es, porque si lo haces con una mempool “vacía” podrás hacer transacciones más rápidas y baratas, contra una mempool más cargada te llevará a transacciones más caras.
En los pods de @lunaticoin, también explican que debes tomar en consideración si la transacción se legacy, multisign o segwit native, ya que el tamaño va a variar, por lo que si sigues sin oír esos pods, no sé a qué estas esperando!!! (Pod1 y Pod2 )
Una disculpa si el artículo es pesado, además de largo, si tienes comentarios para hacerlo más ligero o dudas o ves algún error, por favor no dejes de dejar tus comentarios o hacérmelos saber a través de mi usuario de twitter. Mil gracias por llegar hasta aquí y como digo en los tweets: #estudiaBTC!!!
Puedes dejar una propina con el botón «Invítame un café».
O mediante Lightning network:
También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:
PayNym: +decentralized