Есть ли легкая библиотека JS, которая генерирует адреса Ethereum из 256-битных закрытых ключей?

У меня есть 256-битный закрытый ключ, и я хочу получить его публичный адрес, не устанавливая на машину Geth (что довольно тяжело). Есть ли небольшая библиотека JS, которая делает это?

Ответы (1)

Вы хотите легкий вес и Javascript... как это? https://github.com/ethereumjs/ethereumjs-util

npm install ethereumjs-util

Пример:

var ethUtils = require('ethereumjs-util')
var privateKey = new Buffer([234, 84, 189, 197, 45, 22, 63, 136, 201, 58, 176, 97, 87, 130, 207, 113, 138, 46, 251, 158, 81, 167, 152, 154, 171, 27, 8, 6, 126, 156, 28, 95])
var address = ethUtils.privateToAddress(privateKey).toString('hex')
// address will be 2f015c60e0be116b1f0cd534704db9c92118fb6a

Если у вас есть закрытый ключ в шестнадцатеричном формате, вы можете использовать конструктор буфера со вторым аргументом как «шестнадцатеричный», например:

var privateKey = new Buffer('ea54bdc52d163f88c93ab0615782cf718a2efb9e51a7989aab1b08067e9c1c5f', 'hex')

У него немного больше служебных функций, чем вы просили, но вам понадобится как минимум криптобиблиотека (и, в свою очередь, библиотека bignumber).

Хм, не так уж и здорово. Этот файл, кажется, зависит от установки библиотек C (wtf?), Которые вообще не устанавливаются. Мне нужно что-то, совместимое с браузером... не могли бы вы браузерировать соответствующие части?
ethereumjs-аккаунты могут помочь, но это будет тяжелее.
ethereumjs-tx может на самом деле быть золотой серединой, которую вы ищете, совместимой с браузером и более легкой, чем ethereumjs-аккаунты.
Я не уверен, как это поможет, я должен создать поддельную транзакцию и получить от нее публичный адрес закрытого ключа? :|
ethereumjs-tx говорит, что создает ethUtilглобальный файл, поэтому он должен иметь возможность использовать privateToAddressподобный ответ.