Ich habe einen Service, bei dem Benutzer mein Produkt kaufen können. Neben der Zahlung per Karte möchte ich es den Benutzern ermöglichen, in einzuzahlen ETH
. Ich denke, dass es Adressen für jeden Benutzer korrekt generieren wird, so dass es möglich ist, den Kontostand zu verfolgen. Auf dem Server habe ich ausgeführt geth
, und die Benutzer erhalten ihre Adressen über die rpc
Anfrage. Aber wenn jemand Server gehackt wird, kann er alle Beträge abheben. Wie kann ich eine sichere Brieftasche bereitstellen?
Irgendwelche Vorschläge würden sehr geschätzt.
Sie können HD-Geldbörsen verwenden . Sie können Ihre Seed-Wörter sicher offline speichern, den öffentlichen Master-Schlüssel auf einem Server ablegen und darauf basierend Empfangsadressen generieren.
So können Sie Adressen basierend auf einem Master Public Key generieren, der einem Basisableitungspfad entspricht:
const wallet = require('ethereumjs-wallet')
const hdkey = require('ethereumjs-wallet/hdkey')
const create_addresses = async (from, to) => {
const addresses = [];
const master_public_key = process.env.MASTER_PUBLIC_KEY;
const hdk = hdkey.fromExtendedKey(master_public_key);
from = from || 0;
to = to || 100;
for (let i = from; i <= to; i++){
const child = hdk.deriveChild(i);
const w = wallet.fromExtendedPublicKey( child.publicExtendedKey() );
const addr = {};
addr[w.getAddressString()] = `${process.env.BASE_DERIVATION_PATH}/${i}`;
addresses.push(addr);
};
return addresses;
}
Unter der Annahme, dass der in gefundene Wert process.env.MASTER_PUBLIC_KEY
dem Ableitungspfad entspricht, m/44'/60'/0
generiert die obige Funktion, wenn sie ohne Parameter aufgerufen wird, Adressen von m/44'/60'/0/0
bism/44'/60'/0/100
Update - Abrufen des öffentlichen Masterschlüssels:
const get_mpk = ( seed, bdp ) => {
const seed = bip39.mnemonicToSeed(mnemonic)
const hdk = hdkey.fromMasterSeed(seed);
const base_derivation_path = bdp || "m/44'/60'/0'/0";
const base_derived = hdk.derivePath(base_derivation_path);
const master_public_key = base_derived.publicExtendedKey();
return master_public_key;
}
Jur Gasparjan
Tudor Constantin
MASTER_PUBLIC_KEY
Ausgangswörter und den Ableitungspfad generiert. Leider habe ich nicht den Code, um Transaktionen an einem einzigen Ort zu erstellen und zu signieren (wir erstellen die TX online und signieren sie offline), und ich habe jetzt keine Zeit, sie zusammenzustellen.Jur Gasparjan