从种子获取密钥对

时间:2019-04-30 08:20:24

标签: wavesplatform

我的服务器上的wave满了节点。

使用REST API,我已经生成了一些地址(例如POST / addresses)。 使用REST API,我可以获取每个地址的编码种子,例如

GET /addresses/seed/<address>

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

}

但是要从这些地址汇款,我需要一个相应的私钥。 那我该怎么办呢?

1 个答案:

答案 0 :(得分:4)

好吧,正如该线程中的结果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。我敢肯定,我不理解地址种子必须如何“以正确的方式”解释/使用,但是我没有找到与此相关的任何文档。如果有人知道如何使用它-我将不胜感激。