Title: Контракт не принимает эфир Post by: Cy80rG on October 25, 2017, 03:05:56 PM Добрый день!
Изучаю эфириум и его смарт-контракты. Пробую в тестовой приватной сети сделать смарт-контракты токенов и краудсейла. Беру код вот отсюда https://ethereum.org/token#the-code (https://ethereum.org/token#the-code) и отсюда https://ethereum.org/crowdsale#the-code (https://ethereum.org/crowdsale#the-code) Деплою через кошелек Эфириума (майнинг при этом работает, блоки собираются). После деплоя контракта токенов и краудсейла пытаюсь с основного кошелька отправить эфир на адрес краудсейл-контракта, но получаю ошибку: It seems this transaction will fail. If you submit it, it may consume all the gas you provide. Так же в окне подтверждения пишется "Estimated fee consumption: The contract won't allow this transaction to be executed". Если ошибку проигнорировать, и подтвердить транзакцию, то ничего не происходит. Баланс не уменьшается, токены не зачисляются. Кошелек Ethereum Wallet 0.9.2 Могли бы вы подсказать, почему так происходит? Где может быть ошибка? Спасибо! Title: Re: Контракт не принимает эфир Post by: Jaga-Jaga on October 25, 2017, 08:08:21 PM Добрый день! На ethereum.org нормальные рабочие примеры, я сам проверял.Изучаю эфириум и его смарт-контракты. Пробую в тестовой приватной сети сделать смарт-контракты токенов и краудсейла. Беру код вот отсюда https://ethereum.org/token#the-code (https://ethereum.org/token#the-code) и отсюда https://ethereum.org/crowdsale#the-code (https://ethereum.org/crowdsale#the-code) Деплою через кошелек Эфириума (майнинг при этом работает, блоки собираются). После деплоя контракта токенов и краудсейла пытаюсь с основного кошелька отправить эфир на адрес краудсейл-контракта, но получаю ошибку: It seems this transaction will fail. If you submit it, it may consume all the gas you provide. Так же в окне подтверждения пишется "Estimated fee consumption: The contract won't allow this transaction to be executed". Если ошибку проигнорировать, и подтвердить транзакцию, то ничего не происходит. Баланс не уменьшается, токены не зачисляются. Кошелек Ethereum Wallet 0.9.2 Могли бы вы подсказать, почему так происходит? Где может быть ошибка? Спасибо! Ошибка как у вас у меня тоже была, возможно не с этими примерами, но вроде ее я решил очень просто, вроде если у вас контракт owned то его надо с параметром хозяина деплоить, в remix-е надо указать в поле "At Address" указать адрес хозяина. (адрес надо в кавычках указывать), как называется этот параметр в кошельке я не знаю. Если что попробуйте через remix задеплоить контракт. Title: Re: Контракт не принимает эфир Post by: ShDenis on October 26, 2017, 10:00:42 AM может в контракте нет ни одной payable функции? нужно сделать.
Title: Re: Контракт не принимает эфир Post by: Cy80rG on October 26, 2017, 11:13:10 AM ...если у вас контракт owned то его надо с параметром хозяина деплоить Спасибо за ответ! Но нет, контракт не owned...кстати, актуальный код с ethereum.org/crowdsale не компилируется - ругается на "event GoalReached(address beneficiary, uint amountRaised);", но поскольку это всего лишь описание я его меняю на "event GoalReached(address _beneficiary, uint _amountRaised);" и все ок. Но это так, мелочь... Title: Re: Контракт не принимает эфир Post by: Cy80rG on October 26, 2017, 11:33:45 AM может в контракте нет ни одной payable функции? нужно сделать. есть payable fallback:function () payable { require(!crowdsaleClosed); uint amount = msg.value; balanceOf[msg.sender] += amount; amountRaised += amount; tokenReward.transfer(msg.sender, amount / price); FundTransfer(msg.sender, amount, true); } Это прямо из примера (копипейст)... А может быть проблема как-то связана с тем, что я все делаю на одном кошельке? И деплою, и пытаюсь с него же перевести эфир на адрес контракта? В теории это не должно быть проблемой, но я уже просто не понимаю куда смотреть (( Title: Re: Контракт не принимает эфир Post by: ShDenis on October 26, 2017, 11:45:39 AM А с другого контракта не переводили на этот эфир? Если получится, возможно что данная payable функция ещё под какими-то требованиями, например, должна быть пустой, что бы контракт мог принимать платежи с кошелька напрямую. Что-то такое я где-то краем глаза видел.
Title: Re: Контракт не принимает эфир Post by: Mishman on October 31, 2017, 01:44:37 PM Да, перепроверьте, все ли условия выполняются при вызове function(), т.е. отправке эфира на адрес контракта. Обычно эта ошибка говорит о том, что какое-то условие в функции не может быть выполнено.
Title: Re: Контракт не принимает эфир Post by: Cy80rG on November 08, 2017, 09:44:39 AM Товарищи, всем спасибо за ответы! Проблема была в том, что на адрес краудсейл-контракта надо было перевести токены. Т.е. надо было, чтобы именно адрес краудсейл-контракта имел токены, а не адрес, с которого контракт деплоился... Я как-то умудрился упустить этот момент!... (( Надеюсь, теперь это кому-то тоже поможет!
Еще раз всем спасибо!!! ) Title: Re: Контракт не принимает эфир Post by: yokotoka on November 09, 2017, 04:20:36 PM А вы заранее фиксированную эмиссию токенов решили сделать?
Title: Re: Контракт не принимает эфир Post by: Cy80rG on November 10, 2017, 08:49:30 AM А вы заранее фиксированную эмиссию токенов решили сделать? Да |