Как проверить, является ли адрес существующим адресом в блокчейне ethereum? - PullRequest
0 голосов
/ 11 мая 2018

Что если я захочу проверить в Солидности, существует ли адрес в моей цепочке блоков Etherum?

При просмотре solidity.readthedocs есть функция balance, которую можно использовать / использовать неправильно, чтобы проверить, является ли адрес действительным или имеет баланс:

address x = 0x4e5d039c5516b69a4b6b1f006cbf4e10accb5cfa; // this is an example address which does not have valid checksum....
if (x.balance > 0) // Return true when valid ??

Возможно ли это?

Я также нашел несколько ссылок на как найти адрес, если эфирный адрес-это-контракт , но яне уверен, что это поможет.

1 Ответ

0 голосов
/ 12 мая 2018

Там нет гарантированного пути. Самое близкое, что вы можете получить, это проверить, что адрес имеет правильный формат (20-байтовый шестнадцатеричный код) и не является адресом договора (с которым вы связались). Отсюда адрес считается действительным аккаунтом EOA. Конечно, вы все равно можете посылать эфир по действительному адресу, который кто-то опечатал, поэтому даже проверка баланса этого адреса не даст желаемого результата (к тому же, совершенно нормально, чтобы адрес был правильным и просто не имел эфир в нем). Большинство кошельков поддерживают контрольные суммы , которые дают вам немного больше защиты, но все же не гарантируют, что адрес используется.

Если вы работаете с частной цепочкой блоков и имеете полный контроль над созданием учетной записи, вы можете гипотетически сохранить каждую учетную запись, созданную в сопоставлении в контракте AccountManager, и использовать модификаторы в своем контракте для проверки этого списка.

...