Получить пару ключей из семян - PullRequest
4 голосов
/ 30 апреля 2019

У меня есть полный узел волн на моем сервере.

Используя REST API, я сгенерировал несколько адресов (например, POST / address).С помощью REST API я могу получить закодированное начальное число для каждого из этих адресов, например

GET /addresses/seed/<address>

{
  "address" : "address",
  "seed" : "seed_value"

}

Но для отправки денег с этих адресов мне нужен соответствующий закрытый ключ.Так как я могу получить это?

1 Ответ

4 голосов
/ 02 мая 2019

Хорошо, как оказалось в этом потоке - https://forum.wavesplatform.com/t/question-about-addresses-endpoint/7752, каждый адрес генерируется с использованием одного и того же начального числа с добавленным байтовым массивом (например: для первого адреса - [0x00, 0x00, 0x00, 0x00]).

Bytesarray увеличивается после каждого создания адреса.

Таким образом, вместо использования семян из addresses/seed/<address>, пришлось использовать семена из wallet/seed

Этот работает на python (используя pywaves)

import axolotl_curve25519 as curve
import base58
import hashlib
import sha3
import pyblake2
import struct
import pywaves


def hashChain(noncedSecret):
  b = pyblake2.blake2b(noncedSecret, digest_size=32).digest()
  return sha3.keccak_256(b).digest()


seed = "value from /wallet/seed"


nonce = struct.pack(">L", 40)
seedHash = hashChain(nonce + base58.b58decode(seed))
accountSeedHash = hashlib.sha256(seedHash).digest()
private_key = base58.b58encode(curve.generatePrivateKey(accountSeedHash))

address = pywaves.Address(privateKey=private_key)

P.S. Я почти уверен, что не понимаю, как семя адреса должно интерпретироваться / использоваться "правильным образом", но я не нашел никакой документации, связанной с этим. Если кто-то знает, как его использовать - я буду очень признателен.

...