Как отправить эфир с адреса с закрытым ключом и паролем?

Я пытаюсь использовать PHP и Cron для отправки Ether с существующей учетной записи, используя web3 или что-то подобное, какие-нибудь советы, как мне это сделать?

У меня есть JSON в таблице SQL {"address":"0x22b853A8Df90BF9A7e21445C16FBbEaa43e0c307","password":"inu8p","privateKey":"0xb9cabca09e5cbdfb2c953d574bce5b9d837a91ffe1f3817fc6a01da63bf5ff56"}

Проблема в том, что JavaScript не выполняется с CRON. Есть ли какая-нибудь библиотека в Node, куда я могу отправить запрос POST через API или что-то еще?

Любая помощь будет оценена.

2 ответа

Решение

Вы хотите отправить необработанную транзакцию Ethereum на PHP, поэтому в вашем случае я бы порекомендовал пакет php-eth-raw-tx.

Использование довольно просто:

$tx = new \EthereumRawTx\Transaction(
\BitWasp\Buffertools\Buffer::hex('d44d259015b61a5fe5027221239d840d92583adb'),
\BitWasp\Buffertools\Buffer::int(1 * 10**18),
);

$raw = $tx->getRaw(\BitWasp\Buffertools\Buffer::hex('b9cabca09e5cbdfb2c953d574bce5b9d837a91ffe1f3817fc6a01da63bf5ff56'));

В этом примере вы отправляете 1,0 ETH с адреса 0x22b853A8Df90BF9A7e21445C16FBbEaa43e0c307 (идентифицируется закрытым ключом 0xb9cabca09e5cbdfb2c953d574bce5b9d837a91ffe1f3817fc6a01da63bf5ff56) адресовать 0xd44d259015b61a5fe5027221239d840d92583adb,

Все, что вам нужно сделать, это создать файл PHP и добавить его в ваш crontab.

Смотрите другие примеры здесь: https://github.com/Domraider/php-eth-raw-tx/tree/master/examples

Вы можете использовать RPC-сервер geth или другого клиента. Вы можете отправить запрос на RPC-сервер через web3 или даже через http-модуль узла, но Web3 проще.

Затем вы можете запланировать это с помощью модуля cron узла, например: https://www.npmjs.com/package/cron

Вы захотите убедиться, что любой RPC-сервер, который вы используете, настроен безопасно, поскольку есть активное сканирование и атаки на них.

Частичный пример:

//Send some eth every hour
new CronJob('* * * 1 0 0', () => {
  //The following arguments are simplified...
  web3.eth.sendTransaction({from: "0xc0ffee", to: "0xdeadbeef...", value: "1.0"}, () => {
    console.log('transaction sent');
  });
}, null, true, 'America/Los_Angeles');
Другие вопросы по тегам