Выходная длина команды bootnode -writeaddress составляет 64 байта, а не 128 байтов, как ожидалось, почему? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу получить первую часть формата URL-адреса enode, который представляет собой шестнадцатеричный идентификатор узла, путем компиляции исходного кода из ethereum, я собираю и запускаю cmd / bootnode / из goland, с предоставленным моим личным ключом, командакак это:

bootnode -nodekeyhex 9069e5f4dd2fdc131c385b78d557b9154b82a0f6fc6f12a0ed0782364528fb1f -writeaddress

выход:

d65a3c0982f62cad6f12b4274faa74e9adade1708064357fcefe19cd3986fc86

только 64 байта, а не 128 байтов, в соответствии с исходным кодом:

if *writeAddr {
        fmt.Printf("%v\n", enode.PubkeyToIDV4(&nodeKey.PublicKey))
        os.Exit(0)
}

Я проверилтип возврата enode.PubkeyToIDV4, который на самом деле составляет 32 байта: type ID [32]byte.При преобразовании %v длина вывода будет 64. Но согласно как произвести enode-from-node-key

длина вывода составляет 128 байтов.Кто-нибудь, пожалуйста, скажите мне, что идет не так.Как я могу получить правильные 128 байтов идентификатора узла для построения правильного формата URL.

1 Ответ

0 голосов
/ 17 октября 2018

Найдено в этом все: новое представление узла p2p # 17643

Код был изменен с момента последнего PR.

changed codes

И в нем говорится: «В некоторых пакетах есть другие изменения, связанные с тем, что идентификаторы узлов больше не являются открытыми ключами.пытался задокументировать эти изменения в отдельных коммитах ".Совершенство.

...