Verwendet NBitcoin eine gehärtete private Ableitung?

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?

Antworten (1)

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.

Warum so? im Buch "Mastering Bitcoin" die Empfehlung, gehärtete Schlüssel zu verwenden, denn die Verwendung von nicht gehärteten Schlüsseln und das Leck eines privaten Schlüssels können den ganzen Brunch des erweiterten Publik-Schlüssels entlarven. Ich verstehe das Problem bei der Verwendung von gehärteten Schlüsseln nicht, bei denen Sie den obersten privaten Schlüssel angeben müssen. Wie kann er also eine "Firewall" erstellen?
@HaddarMacdasi Wenn Sie gehärtete Schlüssel verwenden, muss der private Schlüssel immer vorhanden sein, wenn Sie Adressen generieren möchten. Das ist in der Praxis weniger sicher.