¿Cómo puedo listar las propuestas de DAO y votar desde la línea de comando?

¿Existen herramientas de línea de comandos para votar las propuestas de The DAO?

Me gustaría:

  • Listar las propuestas abiertas
  • Comprobar si ya he votado estas propuestas
  • Consultar mi historial de votaciones
  • Vota las propuestas para cada una de mis cuentas con saldos de tokens The DAO
  • Verifique el saldo de mi cuenta y muéstrame qué cuentas tienen bloqueadas las transferencias de tokens DAO, por qué propuesta y el tiempo de vencimiento
  • Y haz esto desde la línea de comando.

¿Por qué querría hacer esto desde la línea de comando?

  • Quiero votar sin tener que enviar mis datos (carteras y contraseñas) por Internet.
  • No quiero esperar a que Ethereum Wallet (Mist) se descongele y no puedo ver la lista de propuestas en Mist.
  • Y solo quiero usar geth(con una interfaz más simple).

Respuestas (1)

Sí. Aquí estátheDAOVoter

Descripción

theDAOVoterv1.0000000000000003 es un pequeño script de Perl (~808 líneas, 738 líneas fuente) que le permitirá:

  • Listar las propuestas DAO.
  • Enumere sus cuentas, mostrando si las transferencias DAO están bloqueadas debido a votos abiertos y tiempo de vencimiento.
  • Enumere las propuestas de DAO con una lista de sus cuentas que muestre qué cuentas ya han votado en cada propuesta. Los votos anteriores también se pueden enumerar junto con el gas real utilizado.
  • Vota las propuestas de The DAO desde tus cuentas.

El script se ejecutará en Linux, debería ejecutarse en Mac OS/X y puede ejecutarse en Windows utilizando una de las distribuciones de Perl, incluidas Cygwin y Active State Perl.

Deberá gethestar instalado y sincronizar la cadena de bloques.


Dónde puedo encontrartheDAOVoter

theDAOVoterse puede encontrar en Github - BokkyPooBah/TheDAOVoter .


¿Cómo theDAOVoterfunciona?

El script llama gethcon la attachopción, ejecutando la API de JavaScript Go Ethereum para consultar la cadena de bloques de Ethereum.

Lea el script de Perl : solo tiene 808 líneas. Y use la --verboseopción si desea ver los comandos exactos ejecutados por este script.

Solo tiene que ingresar su gethcontraseña del almacén de claves cuando use el --votecomando para votar propuestas.

Consulte a continuación la lista de los comandos de la API JavaScript de Go Ethereum utilizados y las funciones DAO llamadas.


Muestra

# List all your accounts including the totals
user@Kumquat:~$ theDAOVoter --listaccounts
  # Account                                                            ETH                        DAO The DAO transfer blocked by OPEN proposal?
--- ------------------------------------------ --------------------------- -------------------------- ------------------------------------------
  0 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa      111.111111111111111111       111.0000000000000000 #2 OPEN until Sun Jun 12 03:18:37 2016
  1 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb      222.222222222222222222       222.0000000000000000
--- ------------------------------------------ --------------------------- --------------------------
  3 Total                                           333.333333333333333333       333.0000000000000000

# List proposal #2 checking the voting status of this proposal from your accounts
user@Kumquat:~$ theDAOVoter --listproposals --id=2 --checkvotingstatus --checkpastvotes
=========================================================================================================================================
Proposal 2. OPEN until Sun Jun 12 03:18:37 2016
Votes       Yea 2473115 (44.20%) Nay 3122385 (55.80%) Quorum 0.48% of 20%
Creator     0x5a8e70f2d75c1468db4a2241fdd70e5a84f028b8
Recipient   0xbb9bc244d798123fde783fcc1c72d3bb8c189413
Deposit     2 ETH
Amount      0 ETH
New curator N
-----------------------------------------------------------------------------------------------------------------------------------------
Do you believe in god?
-----------------------------------------------------------------------------------------------------------------------------------------

  # Account                                                            ETH                        DAO  Est Gas Voting Status
--- ------------------------------------------ --------------------------- -------------------------- -------- -------------
  0 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa      111.111111111111111111       111.0000000000000000    56287 Voted Nay
  1 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb      222.222222222222222222       222.0000000000000000    70851 Not voted yet
--- ------------------------------------------ --------------------------- -------------------------- -------- -------------
=========================================================================================================================================

# A NO vote on proposal #2 from account #1
user@Kumquat:~$ theDAOVoter --vote --id=2 --account=1 --support=0
Enter password for 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb to vote: 
Transaction Id 0x5555555555555555555555555555555555555555555555555555555555555555


Los comandos usados ​​con más frecuencia

Las instrucciones se encuentran en la página principal y estos son los comandos que se usan con más frecuencia:

Ayuda

theDAOVoter

Enumere las cuentas y muestre si la cuenta está bloqueada por votos en curso

theDAOVoter --listaccounts

Propuestas de lista (excluyendo divisiones, solo propuestas abiertas)

theDAOVoter --listproposals 

Enumere las propuestas (excluidas las divisiones, solo las propuestas abiertas) y verifique el estado de votación de sus cuentas

theDAOVoter --listproposals --checkvotingstatus

Enumere las propuestas n.° 2 y verifique el estado de votación de sus cuentas

theDAOVoter --listproposals --id=2 --checkvotingstatus

Enumere las propuestas abiertas y verifique el estado de la votación y los votos anteriores para sus cuentas

theDAOVoter --listproposals --checkvotingstatus --checkpastvotes

Vote por la propuesta n.º 2 de la cuenta n.º 1, no apoyando este voto

theDAOVoter --vote --id=2 --account=1 --support=0


Go Ethereum ( geth) Comandos de la API de JavaScript utilizados y las funciones DAO llamadas

Saldo de cotización

  • eth.getBalance(cuenta)
  • theDAO.balanceOf(cuenta)
  • theDAO.blocked(cuenta)
  • theDAO.proposals(id de propuesta)

Listado de propuestas

  • elDAO.númeroDePropuestas()
  • theDAO.proposals(id de propuesta)
  • elDAO.minQuorumDivisor()
  • theDAO.totalSupply()

Verifique el estado de votación

  • eth.estimateGas(theDAO.vote(...))

Consultar historial de votaciones

  • theDAO.Voted.watch(...)
  • eth.getTransactionReceipt(...)

Votación

  • personal.unlockAccount(...)
  • elDAO.voto(...)


Advertencia

Este script utiliza el mismo método que Ethereum Wallet (Mist) para desbloquear su cuenta en geth cuando envía su voto a la cadena de bloques de Ethereum. Asegúrese de iniciar geth sin la --rpcopción cuando use geth con este script. Consulte la siguiente URL sobre los problemas de seguridad con esta metodología de desbloqueo del almacén de claves: ¿Cómo reducir las posibilidades de que su billetera Ethereum sea pirateada?


Ver también


Disfruten y voten bien. BokkyPooBah 2016.

Programadores de Perl hablando solos, no me sorprende ;-)
Mumble mumble pero es conciso (conciso). Sólo 780 líneas, 711 sin comentarios. :-)