Ошибка: метод eth_sendTransaction не существует / недоступен - PullRequest
0 голосов
/ 14 марта 2019

Отображение ошибки при вызове контракта на надежность, который уже развернут в ropsten-infura.Я использую web3 (@ 0.19.1) для вызова контракта.

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вам нужно будет подписать транзакцию раньше, и я так и сделал, используя web3 1.0.0.

Я использовал движок web3-provider от MetaMask: https://github.com/MetaMask/web3-provider-engine/blob/master/subproviders/hooked-wallet-ethtx.js

getWalletEthTxSubprovider() {
    return new HookedWalletEthTxSubprovider({
        getAccounts: callback => {
            callback(null, [this.web3.eth.defaultAccount]);
        },
        getPrivateKey: (address, callback) => {
            if (address.toLowerCase() === this.web3.eth.defaultAccount.toLowerCase()) {
                return callback(
                    null,
                    Buffer.from(
                        this.web3.eth.accounts.wallet[address].privateKey.replace('0x', ''),
                        'hex'
                    )
                );
            }
            return callback(new Error('not private key supplied for that account'));
        }
    });
}

Полный код можно посмотреть здесь https://github.com/SelfKeyFoundation/Identity-Wallet/blob/60733b208275119b31abf2cb3ab1f49f0b6801a3/src/main/blockchain/web3-service.js#L42-L76

0 голосов
/ 14 марта 2019

Я предполагаю, что вы подключены напрямую к Infura, который не поддерживает eth_sendTransaction.(Для поддержки этого необходимо знать ваш закрытый ключ, но это общий публичный узел.)

Вам нужно либо подписать транзакцию самостоятельно, а затем отправить через eth_sendRawTransaction, либо использовать поставщика, которыйможет содержать закрытые ключи, такие как MetaMask, в браузере.

...