Мне нужно подписать транзакцию и отправить ее в infura с помощью хранилища ключей. При вызове функции дешифрования я столкнулся со следующей ошибкой.
if (json.crypto.kdf === 'scrypt') {
^
TypeError: Cannot read property 'kdf' of undefined
at Accounts.decrypt
Я использую web3 v1.0.0-beta.36
Это мой код, приветствуется любая помощь
const Web3 = require('web3');
const Tx = require('ethereumjs-tx')
const web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/f..."));
var fs = require('fs');
const contractAddress = "0x...";
const sendingAccount = "0x...";
const password = "...";
var abiArray = JSON.parse(getAbi());
var contract = new web3.eth.Contract(abiArray,contractAddress);
const keystore = fs.readFileSync("UTC--...", 'utf8');
const decryptedAccount =
web3.eth.accounts.decrypt(JSON.parse(keystore), password);
Строка, генерирующая ошибку, - web3.eth.accounts.decrypt(JSON.parse(keystore), password);.
Ну из-за ошибки кажется, что хранилище ключей сформировано неправильно. Можете ли вы отладить, чтобы увидеть, что представляет собой объект хранилища ключей, прежде чем вызывать расшифровку? Вот пример того, как это должно выглядеть: web3js.readthedocs.io/en/1.0/…
Функция web3.eth.accounts.decrypt такая же, как и у web3.eth.accounts.wallet.decrypt?
Прости. Вот правильная ссылка web3js.readthedocs.io/en/1.0/web3-eth-accounts.html#decrypt. Но суть здесь в том, чтобы убедиться, что объект трапецеидального искажения правильный.





Эта строка - ваш код? Если нет, найдите, какой вызов вызывает эту ошибку. Если да, опубликуйте, пожалуйста, код того, как вы читаете этот json. И для какой платформы (веб, мобильная и т. д.) Это написано?