Al escribir el siguiente código:
////////////////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//////////////////
¿Estoy usando una función de derivación privada endurecida? por favor explique por qué. Sé que para usar la función de derivación privada endurecida, debo derivarla de un padre endurecido, pero ¿cómo sé que el padre es un padre endurecido?
¿Estoy usando una función de derivación privada reforzada?
No. Está utilizando una derivación no endurecida. Ese es el único tipo de derivación que puede usar cuando solo tiene la clave pública.
La derivación endurecida se ve así:
BitcoinAddress address = privateKey.Derive(orderID, true).Key.PubKey.GetAddress(Network.Main);
Requiere la clave privada. Tampoco importa si el padre está endurecido o no.
Recomendaría usar claves no endurecidas para la mayoría de las aplicaciones.
haddar macdasi
Nick ODell