Go-Ethereum

如何設置帳戶經理類型以在 Go 中籤署交易?

  • March 24, 2017

TL;DR: 我已經設置了一個私有乙太坊節點,我想向它發送一個簽名交易。通過閱讀文件,我知道有一個帳戶Manager類型可以訪問具有我想要用於此目的Wallet的方法的類型。SignTx我在設置帳戶Manager類型以開始此過程時遇到問題。

問題:

NewManager函式需要一個實現Backend介面的類型。這裡的問題是我找不到任何描述(準確)如何Manager使用Backend. 帳戶源中唯一可用的後端SimulatedBackend用於測試(來源:https ://github.com/ethereum/go-ethereum/tree/3fa0fa713bc1508835bdecd7dea78ff09803e327/accounts/abi/bind/backends )。

我試過的:

文件(此處:https ://github.com/ethereum/go-ethereum/wiki/Native:-Account-management#keystores-from-go )說可以這樣初始化:

am := accounts.NewManager("/path/to/keystore", accounts.StandardScryptN, accounts.StandardScryptP);

但是,它不會編譯為accounts.StandardScryptN並且accounts.StandardScryptP不存在,並且當替換為它們的整數等效項(21分別)時,編譯錯誤指出密鑰庫路徑參數("/path/to/keystore")沒有實現Backend介面,這是有道理的。我的猜測是文件沒有更新,因此該NewManager函式無法使用這些參數進行編譯。

NewManager供參考的類型的文件: https ://godoc.org/github.com/ethereum/go-ethereum/accounts#NewManager

題:

有誰知道如何正確初始化客戶經理以開始在 Go 中籤署交易?

我發現 aManager不需要與賬戶互動和簽署交易,相反,我們可以創建一個密鑰庫,並使用它的doc methods查找賬戶和錢包。我們可以像這樣創建一個密鑰庫:

ks := keystore.NewKeyStore(
   KEYSTORE_DIR,
   keystore.LightScryptN,
   keystore.LightScryptP)

keystoreimport在哪裡"github.com/ethereum/go-ethereum/accounts/keystore"KEYSTORE_DIRkeystore帳戶私鑰文件的目錄。

引用自:https://ethereum.stackexchange.com/questions/13464