NEAR Hispano blog
Published in

NEAR Hispano blog

Política de Votación con Tokens en Sputnik DAO CLI

A continuación, se verá la descripción, el funcionamiento y los comandos necesarios para utilizar la política de votación con tokens.

Si no cuentas con el comando sputnikdao puedes instalarlo utilizando npm i sputnikdao en la carpeta de tu proyecto.

Descripción

La política de votación por tokens tiene la función de poder tomar decisiones en las propuestas añadidas en una DAO y poder, ya sea aprobarlas, rechazarlas o eliminarlas todo esto dependiendo de la cantidad de tokens delegados en cada una de las cuentas que forman parte del consejo.

Esto inicia desde la creación de una DAO, crear la propuesta del farmeo de un nuevo token, obtener el staking contract con el nuevo token farmeado, realizar una transferencia a alguna cuenta para mandar los tokens, se realizan depósitos para almacenamiento tanto en el staking contract como en el contrato de los tokens para poder delegar finalmente los tokens y ser utilizados en la política de votación que previamente tiene que ser actualizada.

Esta guía fue hecha en noviembre del 2021 y es posible que cuando la estés leyendo hayan cambiado cosas, verifica dos veces en caso de presentar un error o pregunta con el equipo de desarrollo.

Comandos

Al trabajar con sputnikdao podemos asignar variables o parámetros para hacer más sencillo el uso de cada uno de los comandos, aquí tenemos la declaración:

//Nombre de la DAO

DAO_ACC=daohank

// Nombre del token

TOKEN_NAME=joetoken

// SYM del token

TOKEN_SYM=joe

// Cantidad de tokens a ser farmeados

TOKEN_AMOUNT=1000

// Miembro del consejo

COUNCIL_ACC=joehank.testnet

//Nombre de la cuenta con la que hará las llamadas a los comandos

SIGNER_ACC=joehank.testnet

Creamos una nueva DAO para poder trabajar con la política de votación con Tokens con el siguiente comando:

  • “sputnikdao create $DAO_ACC $COUNCIL_ACC — accountId $SIGNER_ACC”

Añadimos una nueva propuesta en la Dao para farmear un nuevo Token, los cuales recibe la Dao

  • “sputnikdao proposal tokenfarm $TOKEN_NAME $TOKEN_SYM $TOKEN_AMOUNT — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Votamos para aprobar la propuesta de farmear el nuevo token

  • “sputnikdao vote approve 0 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Y observamos la cantidad, el balance de tokens que han sido farmeados:

  • “sputnikdao token-balance $TOKEN_SYM — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Se añade la propuesta para crear el staking contract con el token recién creado

  • “sputnikdao staking-contract joe.tokenfactory.testnet — daoAcc $DAO_ACC — accountId $SIGNER_ACC — key 8gzjvfJBxrHiUKiuhUebuC6X9HdmRt3PBMvJ2ChSXdTD”

Votamos para aprobar y añadir la propuesta creada para hacer el staking contract

  • “sputnikdao vote approve 1 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Aquí podremos observar el nombre del staking contract el cuál utilizaremos adelante como un parámetro más:

  • “sputnikdao get-staking — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Añadimos el parámetro para poder utilizarla en los siguientes comandos

  • STAKING_ACC=staking-682633629.generic.testnet

Añadimos una nueva propuesta en la Dao para hacer un pago o una transferencia a alguna cuenta para mandar los tokens

  • “sputnikdao proposal payout 600 — daoAcc $DAO_ACC — accountId $SIGNER_ACC — token $TOKEN_SYM”

Votamos para aprobar y añadir la propuesta creada para hacer el pago

  • sputnikdao vote approve 2 — daoAcc $DAO_ACC — accountId $SIGNER_ACC

Se realiza un depósito de almacenaje para registar con el Signer Acc una cuenta que participa en el staking contract

  • “sputnikdao storage-staking — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Obtenemos el balance del depósito de almacenaje y por lo tanto comprobamos que ya se encuentra registrada la cuenta

  • “sputnikdao get-staking-balance — daoAcc $DAO_ACC — accountId $SIGNER_ACC”
  • near view $STAKING_ACC get_user ‘{“account_id”:”joehank.testnet”}’

Se registra la cuenta con la que estás trabajando, además de registrar el staking contract dentro del contrato del token.

  • “sputnikdao storage-ft $TOKEN_SYM.tokenfactory.testnet — daoAcc $DAO_ACC — accountId $SIGNER_ACC — target $STAKING_ACC”

Hacemos una llamada a la transferencia de tokens Ft del contrato del token al staking contract

  • “sputnikdao transfer-ft $TOKEN_SYM.tokenfactory.testnet 100 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Delegamos los tokens a la misma cuenta o a otra cuenta para que tenga participación dentro de las votaciones en la Dao

  • “sputnikdao delegate-ft $SIGNER_ACC 50 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Se utiliza un comando para corrección de bug en las Daos que no permitía votación por tokens, actualiza la Dao:

  • “sputnikdao proposal self-upgrade — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Se vota para aprobar el proposal de la corrección de la Dao

  • “sputnikdao vote approve 3 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Y ahora se actualiza la política de votación por tokens para corregir errores

  • “sputnikdao proposal policy token_policy.json — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Se vota para aprobar el proposal de la actualización de la política de votación

  • “sputnikdao vote approve 4 — daoAcc $DAO_ACC — accountId $SIGNER_ACC”

Con este comando podemos observar la cantidad total de tokens delegados

  • “sputnikdao total-delegation-supply — daoAcc $DAO_ACC — accountId joehank.testnet”

Un ejemplo de cómo funciona la política de votación es el siguiente:

Agregamos un proposal de una encuesta

  • “sputnikdao proposal poll “Are we token weighted?” — daoAcc $DAO_ACC — accountId joehank.testnet”

Después votamos para denegar con alguna cuenta que tenga tokens delegados. En este caso esta cuenta tiene “300000000000000000000” tokens.

  • “sputnikdao vote unapprove 5 — daoAcc $DAO_ACC — accountId ejemplo.testnet”

Con el siguiente comando podremos ver la lista de propuestas y cuántos tokens delegados tiene en la votación con el Id 5, en este caso la propuesta sigue en proceso hasta utilizar el máximo de tokens delegados.

  • “sputnikdao list proposals — daoAcc $DAO_ACC — accountId joehank.testnet”

Result:
{
id: 5,
proposer: ‘joehank.testnet’,
description: ‘Are we token weighted?’,
kind: ‘Vote’,
status: ‘InProgress’,
vote_counts: { council: [ 0, 300000000000000000000, 0 ] },
votes: { ‘ejemplo.testnet’: ‘Reject’ },
submission_time: ‘1635546275079143986’
}

Ahora volvemos a votar con otra cuenta con tokens delegados, esta cuenta tiene “100000000000000000000” tokens

  • “sputnikdao vote unapprove 5 — daoAcc $DAO_ACC — accountId joehank.testnet”

Con el siguiente comando podremos ver que la propuesta ya fue rechazada al tener el número máximo de tokens delegados votando por la opción de denegado.

  • “sputnikdao list proposals — daoAcc $DAO_ACC — accountId joehank.testnet”

Result:
{
id: 5,
proposer: ‘joehank.testnet’,
description: ‘Are we token weighted?’,
kind: ‘Vote’,
status: ‘Rejected’,
vote_counts: { council: [ 0, 400000000000000000000, 0 ] },
votes: { ‘joehank.testnet’: ‘Reject’, ‘ejemplo.testnet’: ‘Reject’ },
submission_time: ‘1635546275079143986’
}

--

--

--

NEAR Hispano forma parte de la Comunidad de NEAR Protocol. Somos el sindicato de habla hispana del protocolo descentralizado, facilitando el desarrollo de innovación por y para la comunidad de habla hispana, en beneficio de las personas alrededor del mundo.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
NEAR Hispano

NEAR Hispano

Información en Español sobre el proyecto descentralizado @nearprotocol. Una solución blockchain de L1. Estamos en Telegram — https://t.me/NEARHispano

More from Medium

Unbanks Weekly Update and new Unbanks article, Data Unions are on the rise!

Defining a Decentralized Future (Introducing Accel)

Shell Social at ETHDenver 2022

CGV Research: Will Treasure, Run by DAOs, Be the “Nintendo” in the Web3 World?