dashes-logo.png
Haciendo multifirma con DASH

Cuentas Multifirma son una especie de cuentas en el mundo de las criptodivisas las cuales tienen mucho futuro para poder hacer varias cosas incrementar la seguridad, y flexibilidad de los las transferencias. Se puede resumir en Multisig y puede ser generada desde tu wallet oficial de DASH.

Lamentablemente el DASH Core no tiene una interfaz gráfica para esta funcionalidad. Así que tenemos que recaer en la linea de comando. Y para hacer las cosas un poco mas emocionantes, los comandos son bastante grande ya que tienen muchos hashes largos.

La dinámica de gestión es la siguiente, para que una transacción se pueda ejecutar, sea la que sea. Esta pasará por un proceso:

  1. crear transacción
  2. firmar la transacción
  3. transmitir la transacción

En las multifirma los atributos se multiplican los pasos ya que esta se debe firmar por diferentes cuentas antes de hacer el envío.

Digamos que tenemos 2 cuentas, una de nuestro vecino y otra propia. Creamos una cuenta para una fiesta en la alberca de la privada. Queremos que recolectar un dinero pero queremos que ambos aprueben antes que se gaste el dinero. Esto hace que para hacer el envio necesitaremos la firma de tu vecino para poder moverlo retirar. Una vez firmada tanto uno como el otro podrá transmitir la transacción.

Como se usará la linea de comando necesitaremos relacionarnos con ciertos comandos. Estos son:

  1. createmultisig - nos genera una cuenta multisig
  2. createrawtransaction - con este comando crearemos el pago
  3. signrawtransaction - para firmar la transacción
  4. sendrawtransaction - para enviar la transacción finalmente

Creando la Multisig

La cuenta multifirma, deberá ser creada y para eso necesitaremos primero la llave publica de la cuenta de nuestro vecino. El deberá abrir la consola y usar el comando validateaddres.

Esta nos sacará una serie de valores en formato JSON incluyendo lo que necesitaremos solicitarle de el. Su llave pública así como el hash de su wallet. Estos estan en los valores address y scriptPubKey.

Con su llave pública, nosotros debemos averiguar la de nuestra wallet. Podemos listar las cuentas con el comando listaddressgroupings. y podremos identificar la cuenta que queramos usar. En caso de no tener ninguna o querer usar una nueva. Podemos hacerlo con el comando getnewaddress. Una vez creada, usaremos el comando validateaddress, para conocer nuestra llave pública.

Con estos dos datos podemos proceder a crear nuestra cuenta multisig. Usando el siguiente comando:

createmultisig 2 "['<tu_cuenta>','<tu_vecino>']"</tu_vecino></tu_cuenta>

Este comando indica que se necesitan dos aprobaciones para poder ejecutar las transacciones.

Iniciando la transacción

Así que cada persona puso 200 dls para la fiesta de la alberca o aproximadamente 1 dash (a la fecha de escribir este artículo). Cada vecino envio medio dash, y ahora llego la hora de gastarlos. Queremos enviar 30 dls para poder pagar un juego de domino.

En el wallet necesitaremos primeramente crear la transacción con el comando
createnewtransaction. Este comando tomará a partir de las llaves públicas que fueron creadas.

Antes de eso, quizas querramos fondearla, este paso es exactamente igual que si no fuera multifirma. Unicamente enviando a la cuenta multifirma estara grabada en el blockchain.

Es importante sin embargo algunos datos de la transacción especialmente el hash. Sacamos usando el comando getrawtransactions, y el identificador de la transacción.

Si la información es correcta se vera una serie de metadatos embedidos con el.

Necesitaremos el hex, txid, scriptPubKey, estos datos nos permitiran firmarla, a mi y a mi vecino.

Primero insertamos el comando:

signrawtransaction 'hex de la transacción 'hash de transacción' [{ txid, voit scriptPubKey, redeemScript}]

Esta infrormación en su mayoría se encuentra en la transacciones en el blockchain incluyendo.

  1. hex key for transaction
  2. vout
  3. txid
  4. scriptPubKey
  5. Redeem code
  6. Tu llave privada

Este paso puede mostrar un video similar a "Error: Error parsing JSON:{XmEqXNEn9GKpc9EZ3B1796f1jKv68tfERS:0.00531}".

Al enviarla te daran otro nuevo hash esto quiere decir que tu llave entro y ahora tu debes pasar copia del HEX y poderlo enviar a tu vecino para darle el visto bueno.

El en su cartera deberán el usara la llave empleada para generar el pubkey y hara esta nueva cadena. Similar a la que teniamos antes pero con dos diferentes objetivos uno es el HASH y otro es la llave privada.

Este devolvera otro bloque JSON incluyendo el hex. Y con este podremos agregano al comando:
sendtransactions < hash del vecino>

Este es el último paso. Espero que las instrucciones no hayan sido confusas y esperamos que puedas tu también hacer uso de estas cuentas mancomunadas.

blog comments powered by Disqus