Es scheint, als ob Sie je nach Methode unterschiedliche öffentliche Schlüssel und Adressen erhalten, wenn Sie bitcoin-ruby mit demselben privaten Schlüssel verwenden. Irgendwas mache ich wohl falsch, aber ich weiß nicht wo es liegt...
Ich kann einen privaten Schlüssel, einen öffentlichen Schlüssel und eine Adresse mit generieren
def generate_address
private_key, public_key = Bitcoin::generate_key
address = Bitcoin::pubkey_to_address(public_key)
[private_key, public_key, address]
end
Und als Beispiel könnte dies Folgendes generieren:
priv_key= "9d524654045c891327a1dc0c329bcd42311b1767b81d7e997486e841ca5a2a87"
publ_key = "04353457464a32ede1b80fd7299f616320b52cc22796cd27d5b41594f418c2ea26dfeec97273f89b2d908a44fce981ff19f2e2de1408538bb0c0528992ce47f3be"
address = "n1693JDDu5ukbtNh2sHXdZSobKnVEpdtjL"
Wenn ich den privaten Schlüssel dann aber in eine andere Funktion stecke, die die Schlüsseldetails auf andere Weise generiert, bekomme ich eine andere Adresse! Warum ist das?
def key_details(prikey)
#returns prikey, prikey_hash58, pubkey_hash58, pubkey_uncompressed, address as a hash
my_key = Bitcoin::Key.new(prikey)
# binding.pry
{ prikey:prikey,
prikey_base58:my_key.to_base58,
pubkey_58:my_key.pub,
pubkey: my_key.pub_uncompressed,
address:my_key.addr
}
end
Der Unterschied besteht darin, dass die erste Funktion unkomprimierte öffentliche Schlüssel und die zweite Funktion komprimierte öffentliche Schlüssel verwendet. Unkomprimierte öffentliche Schlüssel sind 65 Bytes groß und komprimierte 33 Bytes.
Weitere Informationen zu komprimierten öffentlichen Schlüsseln finden Sie unter: Was ist ein komprimierter Bitcoin-Schlüssel?