#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
Комментарии:
1. спасибо за ваш вклад. эта идея кажется довольно хорошим обходным путем! например, используя массив со всеми необходимыми abi
arr_abis
после--exec
или включая такие операции внутриoperations.js
..