Я очень новичок в Ethereum и просто работаю над некоторыми ранними руководствами с использованием тестовой сети. Моя версия актуальна; блокчейн тоже актуален; и у меня есть только одна учетная запись в хранилище ключей, основная учетная запись.
Когда я пытаюсь развернуть простой контракт (или любой другой контракт, включая примеры на ethereum.org), код компилируется правильно:
Когда я продолжаю и нажимаю «Развернуть контракт», всплывающее окно подтверждения выдает мне эту ошибку: «Кажется, эта транзакция завершится ошибкой. Если вы отправите ее, она может потреблять весь газ, который вы отправляете».
Это дает мне эту ошибку независимо от того, отправляю ли я 1 или 20, и независимо от суммы комиссии, которую я выбираю.
Если я нажму независимо, контракт будет создан в пользовательском интерфейсе кошелька тумана, но появится другое сообщение об ошибке под транзакцией, в котором говорится, что данные не достигли блокчейна: «Нет данных, размещенных на адресе контракта!».
Мои извинения, если это основное. Я просмотрел предыдущие вопросы, и они либо не совсем охватывали этот сценарий, либо имели исправление, которое не сработало для меня (например, повторный выбор учетной записи FROM непосредственно перед развертыванием)
Спасибо заранее.
Вы не можете отправить эфир в этот конструктор, иначе он выйдет из строя по замыслу. Если вы хотите обратное поведение, вы указываете ключевое слово «оплачиваемый» в функции. Это помогает предотвратить ошибочные транзакции, отправляющие эфир на контракты без надежды на его восстановление.
Надеюсь, поможет.
ОБНОВИТЬ:
Пример для наглядности.
pragma solidity ^0.4.2;
contract Example {
string public brandName;
function Example(string yourCompanyName) payable { // <--- here
brandName = yourCompanyName;
}
}
Как ускользнуло ранее, нет никакого способа заставить контракт отправить эфир, поэтому любые средства, депонированные там, остаются на месте. Мы могли бы исправить это с помощью простой функции неразборчивого вывода средств.
function withdraw(uint amount) public returns(bool success) {
if(!msg.sender.send(amount) throw;
return true;
}
такая же проблема с использованием тумана и testrpc, мой код
contract sampletoken{ mapping(address=>unit256) public balances; function sampletoken(unit256 initialsupply) payable { balances[msg.sender]=initialsupply; } }
получаю ту же ошибку при развертывании, вы можете найти скриншот на https://i.stack.imgur.com/R5BLz.png
Бенк93
Роб Хитченс
dark_ruby
Роб Хитченс
Раджеш
function t() payable returns (uint)
пользователь3338098