Wie kann ich TestRpc den öffentlichen Schlüssel eines generierten Kontos enthüllen lassen?

Am Anfang habe ich eine steile Lernkurve. Mein aktuelles Ziel ist es, eine Testumgebung mit TestRpc, Truffle und Web3j (wow) aufzubauen.

Web3j funktionierte wie erwartet und generierte einen Java-Wrapper für den berühmten HelloWorld-Vertrag. TestRpc funktioniert auch wie erwartet und wird wie im Bild angezeigt.

https://goo.gl/images/V96znv Bild: Ich habe das aus dem Internet genommen, aber es ist dasselbe

Das Bild zeigt die Adressen und die privaten Schlüssel. Wenn Sie TestRpc verwenden, gehe ich davon aus, dass Sie es schon oft gesehen haben.

Also zurück zu meiner einfachen Frage. Wo oder wie erhalte ich den öffentlichen Schlüssel für die Konten, die in der TestRpc-Konsole angezeigt werden?

Antworten (3)

Testrpc gibt Ihnen den privaten Schlüssel für jedes Konto. Um den entsprechenden öffentlichen Schlüssel zu erhalten, müssen Sie lediglich den Fußpunkt Ihrer Kurve mit dem privaten Schlüssel multiplizieren. Dies kann zum Beispiel mit Hüpfburg erfolgen.

Der Basispunkt für secp256k1 ist G=(gx,gy) mit:

gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240 gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424

eigentlich ganz einfach:

import org.web3j.crypto.ECKeyPair;   
import org.web3j.utils.Numeric;

final ECKeyPair keyPair = ECKeyPair.create(Numeric.toBigInt("0x"));
BigInteger publicKey = keyPair.getPublicKey();

//later to be use in Web3j you may need
 Credentials credentials = Credentials.create(keyPair);

Ich habe keine Antwort bekommen. Aber ich habe eine Problemumgehung gefunden, die anderen helfen kann.

Ein Codebeispiel im Web3j-Projekt kann hilfreich sein, wenn Sie die gleiche Frage haben. Suchen Sie nach dem Paket org.web3j.crypto. Es scheint org.bouncycastle zu verwenden, um ein vollständiges Keyset zu generieren.

    /**
 * Create a keypair using SECP-256k1 curve.
 *
 * <p>Private keypairs are encoded using PKCS8
 *
 * <p>Private keys are encoded using X.509
 */
static KeyPair createSecp256k1KeyPair() throws NoSuchProviderException,
        NoSuchAlgorithmException, InvalidAlgorithmParameterException {

    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "BC");
    ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp256k1");
    keyPairGenerator.initialize(ecGenParameterSpec, new SecureRandom());
    return keyPairGenerator.generateKeyPair();
}