Не удалось заключить контракт с приветствующим

В течение последних 7 дней я пытался заключить контракт с приветствующим, я прошел через 4 разных физических компьютера в 2 разных местах и ​​пробовал несколько разных способов в 3 разных операционных системах.

Я предпринял все вышеперечисленные попытки с клиентом geth и c++ eth, я также предпринял попытки с онлайн-компилятором и миксом.

Через 7 дней я еще не смог создать ни одного контракта, я пытаюсь перейти на страницу https://www.ethereum.org/greeter , чтобы перейти к другим учебным упражнениям, чтобы выполнить упражнения на эфириуме. Страница .org.

Я следую инструкциям на странице дословно, строка за строкой, и напрямую копирую то, что мне велено копировать, и мне удалось дойти до компиляции контракта и его развертывания. Он запрашивает у меня пароль моей учетной записи, и я ввожу его, который затем завершается. В моем аккаунте есть Эфириум.

Но проблема в том, что в инструкциях говорится, что переменная приветствия должна содержать адрес, который вы можете отслеживать в сети, поскольку он добывается или завершается, и он действительно содержит адрес, но адрес не определен, он остается неопределенным на неопределенный срок. Также с моего счета никогда не списывается валюта, стоимость счета остается прежней. Конечно это означает

eth.getCode(greeter.address)

Также возникают ошибки, поскольку он не может получить код по неопределенному адресу. Это сбивает меня с толку, и до сих пор я не смог найти никакой помощи в этом. Я просто предположил, что это программная ошибка, и что, вероятно, не так много людей создавали контракты, но потом я увидел видео на youtube, в котором говорилось, что было около 500 000 контрактов, и кажется, что сообщество очень активно занимается дизайном контрактов, так что я мог упустить это вызывает эту ошибку.

Если вам интересно, моя последняя попытка была на Mac OSX с клиентом geth, но у меня есть доступ к Windows и Linux, а также к eth-клиенту c++, если это необходимо.

Вы уверены, что это ваш первый аккаунт с эфиром? web3.fromWei(eth.getBalance(eth.accounts[0]))должен возвращать более 0,002 или около того.
такая же проблема здесь, но для testnet. но для тестовой сети я получил 4 эфира из крана.

Ответы (4)

Я думаю, вы хотели сказать, что в вашем аккаунте есть эфир, а не эфириум.

Мое первое предположение, что у вас недостаточно эфира. Пытаться

web3.fromWei(eth.getBalance(eth.coinbase),'ether')

Вам может понадобиться что-то вроде 0,001 эфира (просто предположение) для успешного развертывания вашего контракта.

При развертывании вы получите хэш транзакции, который намного длиннее адреса эфириума. Возьми этот хэш и беги

eth.getTransactionReceipt("0x00000.......")

Замените 0x00000........ хэшем вашей транзакции. В выводе ищите адрес контракта и gasUsed. Если адреса контракта нет, скорее всего, у вас не хватило средств для развертывания контракта.

Попробуйте эту модифицированную версию примера:

var _greeting = "Hello World!"
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);

var greeter = greeterContract.new(_greeting,{from:web3.eth.accounts[0], data: greeterCompiled.greeter.code, gas: 300000}, function(e, contract){    
    if(!e) {

        if(!contract.address) {
          console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");

        } else {
           console.log("Contract mined! Address: " + contract.address);
           console.log(contract);
        }

     } else {
          console.log("Error!!");
          console.log(e);
     }
})
Ах, извините, я не хотел упускать эти детали. У меня есть 0,01 эфира в моей учетной записи, и я не получаю хеш транзакции, после шага GreeterContract.new он запрашивает мой пароль, а затем возвращает объект с одним свойством, адрес которого не определен.> greeter { address: undefined }

Что-то не работает на этапеgreeterContract.new.

1) Убедитесь, что единицы, на которые вы смотрите, на самом деле являются Эфиром: web3.fromWei(eth.getBalance(eth.accounts[0]),'ether').

2) Также убедитесь, что в контракте используется учетная запись с эфиром ( eth.accounts[0]).

3) Убедитесь, что вы вводите правильный пароль (и пароль правильной учетной записи).

Любая из этих ошибок даст результаты, которые вы испытываете.

Я создал новую учетную запись, чтобы начать заново, перевел на нее 0,005 эфира. web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')показывает 0.005. Я использовал personal.unlockAccount со второй учетной записью и паролем, чтобы дважды проверить правильный пароль и вернуть true. Я гарантирую использование GreeterContract.new второй учетной записи from:web3.eth.accounts[1]. После всего этого он по-прежнему возвращает объект с расширением address: undefined. Пока что, спустя примерно 2 месяца, я все еще жду выпуска своего первого контракта. У тебя есть другие идеи?
У меня такая же проблема. Подтверждено, что у меня есть эфир в учетной записи, я выполнил шаги примера учебника, даже попробовал модифицированный контракт, указанный выше. Командная строка возвращает хэш txn с надписью «ожидание майнинга», который отображается в проводнике блокчейна: 0x8a8abcb23e486558e21c1bb3e6e807494c01a948a03970989981ae94486ab224, но функция не работает. При одной попытке я получил обратно «Сбой импорта InvalidBlockFormat». Пока нет решения.
@BillLaPrise, если вы получаете хэш транзакции, проверьте, находится ли эта транзакция в состоянии ожидания, используя «eth.pendingTransactions». Если есть один с таким же хэшем txn, вам нужно майнить, используя «miner.start ()» в случае Geth.

Ты мой?

Если вы используете частную сеть, некоторые люди также забывают сделать еще одну вещь — майнить в сети для обработки транзакции.

Так что, если вы gethпростоminer.start()

Я не в частной сети и не в майнинге

Я только что добавил пошаговый пример запуска примера приветствия, описанного в разделе Развертывание контракта Greeter через интерфейс командной строки geth, который не регистрируется в моей частной цепочке блоков .

В этом руководстве представлены команды для запуска и показаны ожидаемые результаты на каждом этапе, чтобы вы могли убедиться, что запускаете пример Greeter правильно.

Как вы думаете, вы могли бы добавить несколько советов о том, как сделать то же самое с тестовой сетью?