Как перейти с The DAO на биржу с помощью Linux и geth с терминала?

Я не хочу использовать Mist для взаимодействия с DAO. Как мне сделать это из geth вместо этого?

Ответы (1)

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

Во-первых, вам нужен ABI контракта DAO. Это определение интерфейса, которое позволяет вам взаимодействовать с контрактом DAO в блокчейне. Вот это в сущности. Это долго.

https://gist.github.com/fivedogit/4f3e9a035262b99b2e7356a4fdf6dd34

Или отсюда (slockit github):

https://github.com/slockit/DAO/wiki/The-DAO-v1.0-Code

Вырежьте и вставьте все это, а затем введите это в geth, чтобы установить его в переменную:

> var abi = <paste it here, no outer quotes necessary>;

ABI сообщает geth, как понимать байт-код по адресу в блокчейне. С его помощью вы можете использовать метод web3 «eth.contract» для взаимодействия с контрактом DAO по его адресу:

> var contract = web3.eth.contract(abi).at(“0xbb9bc244d798123fde783fcc1c72d3bb8c189413″);

Теперь вы можете выполнять все методы, которые поддерживает контракт DAO. Как насчет проверки баланса?

> contract.balanceOf(eth.coinbase);

или же

> contract.balanceOf(“0xabc123…”);

Разделите это число на 10^16, чтобы получить общее количество токенов DAO в его «естественном» номинале. Для меня:

> contract.balanceOf(eth.accounts[1]);
80000000000000000000
> contract.balanceOf(eth.accounts[1])/10000000000000000;
8000

На момент написания этой статьи у меня было 8000 токенов DAO.

Проверка вашего баланса — это «постоянный» метод (как вы можете видеть из ABI), что означает, что он считывается из блокчейна и не требует газа для выполнения.

Однако перевод баланса меняет состояние блокчейна и требует небольшого платежа за газ. В следующей команде параметр "{from:YOURADDR}" предоставляет этот платеж. Вы можете явно указать газ следующим образом: "{from:YOURADDR,gas:2500000}", но у geth есть значение по умолчанию, которое он предоставит, если вы этого не сделаете, поэтому я не показываю его ниже. (Неиспользованный газ всегда возвращается.)

НО СНАЧАЛА! Нам нужен адрес обмена, чтобы отправить его. В Poloniex он находится в разделах «Баланс» и «Депозиты и снятие средств». Найдите DAO в списке и нажмите на ссылку, чтобы получить адрес депозита.

Теперь вот команда выполнения перевода (это переведет 2000 токенов DAO на адрес поло из моей второй учетной записи ETH):

contract.transfer(“0xaaaaPoloDAODepositAddressaaaaa”, 20000000000000000000, {from:eth.accounts[1]});

Подождите, пока транзакция распространится, затем снова проверьте свой баланс с помощью:

> contract.balanceOf(eth.accounts[1])/10000000000000000;
6000

Моим токенам потребовалось около часа, чтобы попасть в Poloniex (28.05.2016), так что не паникуйте, если вы не видите, что перевод происходит сразу.

Удачи!

Я могу подтвердить, что эти шаги работают. Я использовал ABI отсюда: github.com/slockit/DAO/wiki/The-DAO-v1.0-Code .