Я новичок в Ethereum, пытаюсь научиться использовать geth и web3js. Огляделся и не смог найти подобную проблему, был бы признателен за некоторые пояснения по поводу следующего.
Я попытался создать транзакцию с помощью консоли web3js:
eth.sendTransaction({from:sender, to:receiver, value:amount});
После глупой ошибки вместо того, чтобы установить получателя в виде строки адреса, я установил его на:
receiver = eth.accounts['public key string here...'];
Очевидно, что у меня нет учетной записи с таким индексом, поэтому получатель должен быть неопределенным, и поэтому sendTransaction выдает ошибку.
Однако транзакция инициировалась и создала контракт с, казалось бы, случайно сгенерированным адресом.
Я понимаю, что установка неправильного адреса для получателя приведет к тому, что средства будут доступны только для этого случайного адреса, что сделает их неизрасходованными. В чем смысл транзакции для неопределенного получателя. Почему он создает контракт?
Вы узнали, как развертываются контракты :-)
Отправка транзакции на нулевой адрес — это особый случай, когда данные транзакции выполняются как байт-код (конструктор контракта). Обычно это приводит к развертыванию кода контракта по этому адресу. В вашем случае похоже, что данных о звонках нет, поэтому будет создан пустой контракт.
Формально так говорится в « Желтой книге Эфириума» (раздел 4.3):
Адрес не является строго случайным, а генерируется на основе адреса отправителя/от и одноразового номера отправляющей учетной записи (сколько транзакций эта учетная запись отправила в прошлом).