Ich versuche, eine Dapp zu entwickeln, aber da ich einen kleinen Server (Windows Sever 2012 R2) mit begrenztem Speicherplatz betreibe, möchte ich keinen Ethereum-Knoten hosten/installieren oder auf meinem Server aufbauen, da viele von Ihnen wissen Es dauert viele GB Festplatte.
Meine "dapp" ist jedoch eine einfache HTML-Seite zur Registrierung. Im Wesentlichen ermöglicht diese Seite Benutzern, sich zu registrieren, und jedes Mal, wenn eine Registrierung erfolgt; Ich muss eine neue öffentliche Ethereum-Adresse mit entsprechenden privaten Schlüsseln für den Benutzer benennen/erstellen. Ich plane, diese Informationen in meiner Datenbank zu speichern (urteilen Sie nicht). Da ich keinen Knoten auf meinem Server hoste, weiß ich, dass ich einen Drittanbieter brauche, um mich mit dem Mainnet in der Blockchain zu verbinden, deshalb verwende ich infura! Ich weiß, dass einige Entwickler sagen, dass Sie Wallets erstellen können mit: web3.eth.accounts.create()
aber Tatsache ist, dass ich diesen Code in node.js manuell verwenden kann und ich kann mit dem folgenden Code problemlos neue Wallets erstellen:
var Web3 = require('web3');
var infura = "ws://mainnet.infura.io/v3/xxxxxxxxxxxxxxxxxxxxxx";
var web3 = new Web3(Web3.givenProvider || infura);
web3.eth.accounts.create(["this is my seed phrase"]);
aber wenn ich versuche, den gleichen Ansatz in HTML zu implementieren, funktioniert es nicht. Ich versuche auch keythereum.js, um Brieftaschen mit dem folgenden Code zu erstellen:
var keythereum = require("keythereum");
var dk = keythereum.create();
var readableAddress = keythereum.privateKeyToAddress(dk.privateKey);
console.log("public address:" + readableAddress);
console.log("private key in hex:" + dk.privateKey.toString('hex')
aber kein Glück. Ich vermute, dass ich möglicherweise andere Abhängigkeiten benötige, damit es funktioniert. Kann mich bitte jemand anleiten?
Das ist der Code meiner Seite!
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="js/web3.min.js" type="text/javascript"></script>
<script src="js/keythereum.min.js" type="text/javascript"></script>
<scrip> <!-- keythereum.js code -->
var keythereum = require("keythereum");
var dk = keythereum.create();
var readableAddress = keythereum.privateKeyToAddress(dk.privateKey);
console.log("public address:" + readableAddress);
console.log("private key in hex:" + dk.privateKey.toString('hex')
</script>
<script> <!-- web3.js code -->
var Web3 = require('web3');
var infura = "ws://mainnet.infura.io/v3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var web3 = new Web3(Web3.givenProvider || infura);
web3.eth.accounts.create(["this is my seed phrase"]);
</script>
</head>
<body>
<h1>Registration</h1>
</body>
</html>
Fehler, den ich bekomme:
Fehler: Angegebene Adresse "undefiniert" ist ungültig, der Groß-/Kleinschreibungstest ist fehlgeschlagen oder es handelt sich um eine indirekte IBAN-Adresse, die nicht konvertiert werden kann. web3.min.js:1:349717
Ich würde vorschlagen, das web3-eth-accounts
Paket für die Kontoerstellung zu verwenden
const Accounts = require('web3-eth-accounts');
const accounts = new Accounts();
const { address, privateKey } = accounts.create();
Die Bibliothek erstellt automatisch ein Keythereum-Objekt. Versuchen Sie diesen Code:
var dk = keythereum.create();
var readableAddress = keythereum.privateKeyToAddress(dk.privateKey);
console.log("public address:" + readableAddress);
console.log("private key in hex:" + dk.privateKey.toString('hex'));
Ismael
Mula
Ismael
Mula
Ismael
Mula
Ismael