Как я могу составить список предложений DAO и проголосовать из командной строки?

Существуют ли инструменты командной строки для голосования по предложениям The DAO?

Я хотел бы:

  • Список открытых предложений
  • Проверить, голосовал ли я уже за эти предложения
  • Проверить мою историю голосования
  • Голосуйте за предложения для каждой из моих учетных записей с балансами токенов The DAO.
  • Проверьте баланс моей учетной записи и покажите мне, какие учетные записи заблокировали переводы токенов DAO, какое предложение и срок действия
  • И сделать это из командной строки

Почему я хочу сделать это из командной строки?

  • Я хочу голосовать, не отправляя свои данные (кошельки и пароли) через Интернет.
  • Я не хочу ждать разморозки кошелька Ethereum (Mist) и не могу просмотреть список предложений в Mist.
  • И я просто хочу использовать geth(с более простым интерфейсом).

Ответы (1)

Да. ВотtheDAOVoter

Описание

theDAOVoterv1.0000000000000003 — небольшой Perl-скрипт (~808 строк, 738 строк исходного кода), который позволит вам:

  • Список предложений DAO.
  • Перечислите свои учетные записи, показывая, заблокированы ли переводы The DAO из-за открытых голосов и времени истечения срока действия.
  • Перечислите предложения DAO со списком ваших учетных записей, показывающим, какие учетные записи уже проголосовали за каждое предложение. Прошлые голоса также могут быть перечислены вместе с фактически использованным газом.
  • Голосуйте за предложения The DAO со своих аккаунтов.

Сценарий будет работать в Linux, должен работать в Mac OS/X и может работать в Windows с использованием одного из дистрибутивов Perl, включая Cygwin и Active State Perl.

Вам нужно gethбудет установить и синхронизировать блокчейн.


Где я могу найтиtheDAOVoter

theDAOVoterможно найти на Github — BokkyPooBah/TheDAOVoter .


Как theDAOVoterработает?

Скрипт вызывает gethс attachопцией, запуская API-интерфейс Go Ethereum JavaScript для запроса блокчейна Ethereum.

Прочтите Perl- скрипт — там всего 808 строк. И используйте эту --verboseопцию, если вы хотите увидеть точные команды, выполняемые этим скриптом.

Вам нужно только ввести gethпароль хранилища ключей, когда вы используете --voteкоманду для голосования по предложениям.

См. ниже список используемых команд Go Ethereum JavaScript API и вызываемых функций DAO.


Образец

# 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


Наиболее часто используемые команды

Инструкции находятся на главной странице, а вот наиболее часто используемые команды:

Помощь

theDAOVoter

Перечислите учетные записи и отобразите, заблокирована ли учетная запись голосованием в процессе

theDAOVoter --listaccounts

Список предложений (за исключением разделений, только открытые предложения)

theDAOVoter --listproposals 

Перечислите предложения (за исключением разделений, только открытые предложения) и проверьте статус голосования для своих учетных записей.

theDAOVoter --listproposals --checkvotingstatus

Перечислите предложения № 2 и проверьте статус голосования для своих учетных записей.

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

Перечислите открытые предложения и проверьте статус голосования и прошлые голоса для своих учетных записей.

theDAOVoter --listproposals --checkvotingstatus --checkpastvotes

Проголосовать за предложение №2 с аккаунта №1, не поддерживая это голосование

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


Используемые команды JavaScript API Go Ethereum ( geth) и вызываемые функции DAO

Баланс листинга

  • eth.getBalance(аккаунт)
  • theDAO.balanceOf(счет)
  • theDAO.blocked(аккаунт)
  • theDAO.proposals(proposalId)

Листинг предложений

  • theDAO.numberOfProposals()
  • theDAO.proposals(proposalId)
  • theDAO.minQuorumDivisor()
  • theDAO.totalSupply()

Проверить статус голосования

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

Проверить историю голосования

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

Голосование

  • Personal.unlockAccount(...)
  • theDAO.vote(...)


Предупреждение

Этот скрипт использует тот же метод, что и Ethereum Wallet (Mist), чтобы разблокировать вашу учетную запись в geth, когда вы отправляете свой голос в блокчейн Ethereum. Убедитесь, что вы запускаете geth без --rpcопции при использовании geth с этим скриптом. См. следующий URL-адрес о проблемах безопасности с этой методологией разблокировки хранилища ключей: Как уменьшить вероятность взлома вашего кошелька Ethereum?


Смотрите также


Наслаждайтесь и хорошо проголосуйте. Бокки ПуБах 2016.

Perl-программисты разговаривают сами с собой, я не удивлен ;-)
Бормочет-бормочет, но это лаконично (кратко). Всего 780 строк, 711 без комментариев. :-)