TL;DR: Ich habe einen privaten Ethereum-Knoten eingerichtet und möchte eine signierte Transaktion dorthin senden. Durch das Lesen der Dokumente weiß ich, dass es einen Kontotyp gibt, der auf einen Manager
Typ zugreifen kann Wallet
, der über eine SignTx
Methode verfügt, die ich für diesen Zweck verwenden möchte. Ich habe ein Problem beim Einrichten des Kontotyps Manager
, um diesen Vorgang zu starten.
Das Problem:
Die NewManager
Funktion benötigt einen Typ, der die Backend
Schnittstelle implementiert. Das Problem hier ist, dass ich keine Dokumente finden kann, die (genau) beschreiben, wie man ein Konto Manager
mit einer Backend
. Das einzige in der Kontoquelle verfügbare Backend ist SimulatedBackend
zum Testen gedacht (Quelle: https://github.com/ethereum/go-ethereum/tree/3fa0fa713bc1508835bdecd7dea78ff09803e327/accounts/abi/bind/backends ).
Was ich versucht habe:
Die Dokumente (hier: https://github.com/ethereum/go-ethereum/wiki/Native:-Account-management#keystores-from-go ) sagen, dass man auf diese Weise initialisiert werden kann:
am := accounts.NewManager("/path/to/keystore", accounts.StandardScryptN, accounts.StandardScryptP);
Es wird jedoch nicht kompiliert, da die accounts.StandardScryptN
und accounts.StandardScryptP
nicht vorhanden sind, und wenn sie durch ihre ganzzahligen Äquivalente ( 2
bzw. 1
) ersetzt werden, gibt der Kompilierungsfehler an, dass das Schlüsselspeicherpfadargument ( "/path/to/keystore"
) die Schnittstelle nicht implementiert Backend
, was sinnvoll ist. Meine Vermutung ist, dass die Dokumente nicht aktualisiert werden und die NewManager
Funktion daher nicht mit diesen Argumenten kompiliert werden kann.
Dokumente für den NewManager
Typ als Referenz: https://godoc.org/github.com/ethereum/go-ethereum/accounts#NewManager
Frage:
Weiß jemand, wie man den Kontomanager richtig initialisiert, um mit dem Signieren von Transaktionen in Go zu beginnen?
Ich habe festgestellt, dass a Manager
nicht benötigt wird, um mit Konten zu interagieren und Transaktionen zu signieren, sondern wir können einen Keystore erstellen und Konten und Brieftaschen mit seinen doc-Methoden finden . Wir können einen Schlüsselspeicher wie folgt erstellen:
ks := keystore.NewKeyStore(
KEYSTORE_DIR,
keystore.LightScryptN,
keystore.LightScryptP)
wo keystore
ist der Import "github.com/ethereum/go-ethereum/accounts/keystore"
und KEYSTORE_DIR
das keystore
Verzeichnis für private Schlüsseldateien des Kontos.
danke