Мне трудно поверить, что нечто подобное невозможно, поскольку использование открытых/закрытых ключей является основным преимуществом цифровой идентификации.
Мне нужно написать функцию Javascript, чтобы получить адрес эфириума и вернуть его открытый ключ. Я знаю, как получить открытый ключ из подписи, но получить подпись транзакции сложнее, чем я думал, web3 не может вернуть ее, как мне кажется.
Могу ли я использовать что-то в ParityJS, чтобы получить хэш транзакции из учетной записи входного адреса и получить от нее подпись?
Кто-нибудь, пожалуйста, скажите мне, что это возможно, я теряю надежду...
Вы можете восстановить открытый ключ, только если у вас есть подпись. Чаще всего подпись можно найти в транзакции, поэтому вам нужно будет найти транзакцию, сделанную из этой учетной записи. Это сложный шаг, потому что, насколько мне известно, не существует простого API «получить список транзакций с этой учетной записи». Вам нужно будет просмотреть транзакции в диапазоне блоков, чтобы найти транзакцию.
Оттуда вы просто вызовете, eth_getTranscationByHash
а затем восстановите открытый ключ из подписи ( r
, s
, и v
значения).
Адрес генерируется из открытого ключа, и это односторонний процесс. Таким образом, невозможно сгенерировать открытый ключ из адреса.
1pocketaces1
пользователь19510
curl https://mainnet.infura.io -d '{"json_rpc": "2.0", "method": "eth_getTransactionByHash", "params": ["0x1ac7fead8f71a41c9aad091c92e76947a35c4a5fd3aa27e67d7db85b14b1dbd6"], "id": 0}'
. (Просто случайная транзакция, которую я только что видел на etherscan.io.)пользователь19510
web3.eth.getTransaction('0x1ac7fead8f71a41c9aad091c92e76947a35c4a5fd3aa27e67d7db85b14b1dbd6', console.log);
если вы используете web3.js.пользователь19510
eth_getTransactionByHash
и aethereumjs-util
должноecrecover
быть достаточно.1pocketaces1
пользователь19510
пользователь19510
getTransaction
даст вам подпись.