Как настроить тип менеджера аккаунта для подписи транзакций в Go?

Вкратце: я настроил частный узел 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?

Разобрался с этим ранее, обновлю

Ответы (1)

Я обнаружил, что Managerдля взаимодействия с учетными записями и подписания транзакций не требуется, скорее, мы можем создать хранилище ключей и найти учетные записи и кошельки, используя его методы документации . Мы можем создать хранилище ключей следующим образом:

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

где keystore— import "github.com/ethereum/go-ethereum/accounts/keystore", а KEYSTORE_DIRkeystoreкаталог для файлов закрытого ключа учетной записи.