Вкратце: я настроил частный узел Ethereum и хочу отправить на него подписанную транзакцию. Читая документы, я знаю, что есть 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
не существует, и при замене их целочисленными эквивалентами ( 2
и 1
соответственно) ошибка компиляции указывает, что аргумент пути к хранилищу ключей ( "/path/to/keystore"
) не реализует Backend
интерфейс, что имеет смысл. Я предполагаю, что документы не обновляются, и из-за этого NewManager
функция не может скомпилироваться с этими аргументами.
Документы для NewManager
типа для справки: https://godoc.org/github.com/ethereum/go-ethereum/accounts#NewManager
Вопрос:
Кто-нибудь знает, как правильно инициализировать менеджера аккаунта, чтобы начать подписывать транзакции в Go?
Я обнаружил, что Manager
для взаимодействия с учетными записями и подписания транзакций не требуется, скорее, мы можем создать хранилище ключей и найти учетные записи и кошельки, используя его методы документации . Мы можем создать хранилище ключей следующим образом:
ks := keystore.NewKeyStore(
KEYSTORE_DIR,
keystore.LightScryptN,
keystore.LightScryptP)
где keystore
— import "github.com/ethereum/go-ethereum/accounts/keystore"
, а KEYSTORE_DIR
— keystore
каталог для файлов закрытого ключа учетной записи.
Танос