Beim Schreiben des folgenden Codes:
////////////////1st offline SERVER//////////////////
//Create Master Private Key with a seed
ExtKey privateKey = new ExtKey("16236c2028fd2018eb7049825e6b4f0191de4dbff003579918de7b7348ff06ac");
//create master public key from this privateKey
ExtPubKey pubKey = privateKey.Neuter();
//save it's wifStr as key to the next server to use and generate all child keys
string wifStr = pubKey.ToString(Network.Main);
////////////////END//////////////////
////////////////2nd online SERVER//////////////////
ExtPubKey key = ExtPubKey.Parse(wifStr);
//The payment server receive an order, note the server does not need the private key to generate the address
uint orderID = 1001;
//address created with only extendet publik key
BitcoinAddress address = key.Derive(orderID).PubKey.GetAddress(Network.Main);
Console.WriteLine(address);
////////////////END//////////////////
Verwende ich die gehärtete private Ableitungsfunktion? bitte erkläre warum. Ich weiß, dass ich, um die gehärtete private Ableitungsfunktion zu verwenden, sie von einem gehärteten Elternteil ableiten sollte, aber woher weiß ich, dass das Elternteil ein gehärtetes Elternteil ist?
Verwende ich die gehärtete private Ableitungsfunktion?
Nein. Sie verwenden die nicht gehärtete Ableitung. Das ist die einzige Art der Ableitung, die Sie verwenden können, wenn Sie nur den öffentlichen Schlüssel haben.
Gehärtete Ableitung sieht so aus:
BitcoinAddress address = privateKey.Derive(orderID, true).Key.PubKey.GetAddress(Network.Main);
Es erfordert den privaten Schlüssel. Es spielt auch keine Rolle, ob der Elternteil abgehärtet ist oder nicht.
Ich würde empfehlen, für die meisten Anwendungen ungehärtete Schlüssel zu verwenden.
Haddar Macdasi
Nick Odell