Как передать ETH между двумя адресами с помощью geth и json rpc

У меня на сервере работает geth . Я создаю веб-сайт php, который действует как кошелек. Теперь я могу создавать адреса. Мне нужно иметь возможность вносить и снимать ETH между адресами на одном узле. Я запускаю geth с помощью приведенной ниже команды.

go-ethereum/build/bin/geth console  --rpc --rpcapi="db,eth,net,web3,personal,web3" --rpccorsdomain "*" --syncmode "light"

Как добиться функциональности кошелька на geth через rpc? Есть ли для этого вызов команды или API? Мне трудно понять документацию.

ОБНОВЛЕНИЕ : я хочу перевести ETH с одной учетной записи на другую. Ниже приведены вызовы API, которые я пробовал, и ошибки, которые я получил в браузере, когда я вызываю функцию передачи в своем классе php. Может кто-нибудь, пожалуйста, поправьте меня

{"jsonrpc":"2.0","id":1,"метод":"personal_signAndSendTransaction","params":[[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f0724],"passphaser"}

Неустранимая ошибка: Uncaught RPCException: json: невозможно преобразовать массив в значение Go типа eth.SendTxArgs

{"jsonrpc":"2.0","id":1,"метод":"personal_sendTransaction","params":[[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f0724],"passphaser"}

Неустранимая ошибка: Uncaught RPCException: метод personal_sendTransaction не существует/недоступен.

{"jsonrpc":"2.0","id":1,"метод":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":" 0x76c0", "gasPrice": "0x9184e72a000", "value": "0x9184e72a", "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f0724445675"}}

Неустранимая ошибка: Uncaught RPCException: учетная запись заблокирована

Пожалуйста помоги!

не используйте eth_sendTransaction, вам придется разблокировать учетную запись, а это небезопасно. Ваши пользователи будут взломаны, а вас будут ненавидеть. Используйте eth_sendRawTransaction и подпишите транзакцию перед ее отправкой с помощью javascript. Ваш лучший пример — это myphpwallet, загрузите исходники и просто скопируйте весь процесс подписания транзакции, и все готово.
не могли бы вы отправить ссылку на myphpwallet
извините, это myetherwallet, а не myphpwallet
скачать расширение для хрома

Ответы (2)

В консоли Geth вы можете использовать функцию sendTransaction:

web3.eth.sendTransaction({
    from: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812GB",
    to: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812CB",
    value: web3.toWei(1, "ether")
})
Я хочу взаимодействовать с geth из своего браузера, используя json rpc. Есть ли способ конвертировать 1 и т. д. в формат «web3.toWei (1, «эфир»)})», который я могу передать?

Вы можете использовать eth_sendtransaction для отправки транзакции в пункт назначения.

В разделе параметры

params: [{
    "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
    "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
    "gas": "0x76c0", // 30400
    "gasPrice": "0x9184e72a000", // 10000000000000
    "value": "0x9184e72a", // 2441406250
    "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]

Вы должны вернуть подпись транзакции

{
    "id":1,
    "jsonrpc": "2.0",
    "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

Это работает на учетных записях, которые были ранее разблокированы в geth.

если у меня есть адрес, я хочу добавить 1 ETC к этому адресу. Как я могу это сделать?
можете показать пример?
можем ли мы отправить эфир на адрес за пределами моей сети?
Вам нужно купить немного эфира, отправить его на счет, разблокированный в gethклиенте, и вы сможете отправлять части этого эфира на другие адреса.
Что значит «вне вашей сети»? Как вы определяете свою сеть? Вы можете отправить эфир на любой адрес. Даже если адреса не существует.
я имел в виду адреса, сгенерированные другими биржами, такими как битрекс, как «вне вашей сети». Но я понял твою мысль.
не могли бы вы показать пример, если у меня есть деньги, как мне сделать вызов API
может вносить и снимать средства с помощью вызова eth_sendTransaction
Вывод на самом деле не существует как концепция в сети Ethereum. Это просто означает отправку ETH на другой адрес. Так что да, это можно сделатьeth_sendTransaction
Другой ответ — очень хороший пример того, как отправить эфир с одного адреса на другой.
Я хочу взаимодействовать с geth из своего браузера, используя json rpc. Есть ли способ конвертировать 1 и т. д. в формат «web3.toWei (1, «эфир»)})», который я могу передать?
Невозможно преобразовать ETC в ETH в контексте блокчейна.
простите орфографическая ошибка!! я хотел перевести 1 ETH с одного адреса etherum (сгенерированного узлом geth, работающим на моем сервере) на другой адрес ethereum (может быть на каком-то обмене), используя json rpc. Это возможно? Я обновил свои вопросы с помощью звонков, которые я пробовал