как загрузить файл json из geth

#javascript #json #solidity #geth

#javascript #json #солидность #geth

Вопрос:

может быть, это потому, что я не разбираюсь в js, но как я могу загрузить файл .json из консоли geth? Я хочу этого, чтобы избежать неуклюжего способа копирования-вставки каждого необработанного содержимого abi для каждого из контрактов var abi_1 = [...]; var abi_2 = [...]; ... . Я знаю, что консоль — это javascript, поэтому я попробовал require (легко с помощью nodejs), но это не работает. Невозможно в geth (консоль js) загрузить abi_1.json и сохранить его в переменной abi_1 таким же образом, как я легко выбираю файл в python? Спасибо и надеюсь, что этот вопрос имеет смысл для сообщества.

Ответ №1:

Как указано в документации [1], консоль geth использует реализацию ECMAScript в go под названием goja[2]. Из того, что я знаю, классический JS (поэтому без nodejs) не имеет никаких функций ввода-вывода…

Однако, возможно, вы могли бы использовать функцию ‘loadScript’, доступную в консоли немного bash.

Например, предположим, что ваш файл JSON находится в /tmp/abi.json . Все ваши операции JS могут быть сохранены в другом файле (допустим /tmp/operations.js ).

Вы могли бы использовать geth attach http://localhost:8545 --exec "var abi = $(cat /tmp/abi.json); loadScript('/tmp/operations.js')"

Например: /tmp/file.json содержит { 'test': 'Hello, world'}

geth attach http://localhost:8545 --exec "var a = $(cat /tmp/file.json); console.log(a.test)"

Будет ли печатать Hello, world!

Это не идеальное решение, но оно может быть удобным для вас.

[1] https://geth.ethereum.org/docs/interface/javascript-console

[2] https://github.com/dop251/goja

Комментарии:

1. спасибо за ваш вклад. эта идея кажется довольно хорошим обходным путем! например, используя массив со всеми необходимыми abi arr_abis после --exec или включая такие операции внутри operations.js ..