Аккаунт отправителя не распознан в частной сети Ethereum - PullRequest
0 голосов
/ 15 октября 2018

В настоящее время я разрабатываю приложение dApp в Solidity и работаю над библиотекой web3 для связи с ней.

Я борюсь с процессом создания новой учетной записи и подписания транзакции в web3.Прежде чем продолжить, стоит отметить, что у меня есть собственный локальный блокчейн (в настоящее время с Ganache).

Мой код выглядит следующим образом:

try{
    let a = web3.eth.accounts.create()
    let dataTx = someContract.methods.someMethod().encodeABI()
    let rawTx = {
        to: someContract._address,
        from: account.address,
        data: dataTx,
        gas: 10000000000
    }


    const transaction = web3.eth.accounts.signTransaction(rawTx, util.toBuffer(account.privateKey))
    web3.eth.sendTransaction(rawTx).then(console.log)
}
catch(e){
    console.log(e)
}

Проблема здесь в том, что метод web3.eth.sendTransaction() вызывает следующее исключение: Error: Returned error: sender account not recognized.

Насколько я понимаю, чтоweb3.eth.accounts используется для управления локальными учетными записями, а web3.eth.personal используется для связи с клиентом (например, Geth).Я хочу сохранить закрытые ключи учетных записей, которые мое приложение создает локально на устройстве клиента web3, но возникает это исключение.

Где я ошибаюсь?Должен ли я регистрировать вновь созданные учетные записи где-нибудь перед выполнением транзакций с ним?Есть ли какая-то важная информация, которую я здесь упускаю?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Если вы хотите использовать учетную запись, отличную от Ganache, вам необходимо запустить Ganache, указав данные своих учетных записей в форме private_key,initial_balance:

Пример команды: ganache-cli --account 0xf38b5679751228eab7d9f3aa02bd0b0c0f7b44e448c0cfd410a1d7053efb6c56,123456789

И вывод:

Ganache CLI v6.1.8 (ядро ganache: 2.2.1)

Доступные учетные записи ================== (0) 0x44fa41e453654ccb365a358e994c764a37eea91f (~ 0 ETH)

Личные ключи ===================(0) 0xf38b5679751228eab7d9f3aa02bd0b0c0f7b44e448c0cfd410a1d7053efb6c56

Цена на газ ================== 20000000000

= 1021 * Gas ​​======== 6721975

Прослушивание 127.0.0.1:8545

0 голосов
/ 15 октября 2018

Вы ссылаетесь на функциональность в web3 1.0.0 , которая еще не полностью выпущена.Если вы перейдете на https://web3js.readthedocs.io/en/1.0/getting-started.html, вы увидите, что они заявляют следующее:

Эта документация находится в стадии разработки, и web3.js 1.0 еще не выпущен!Вы можете найти текущую документацию для web3 0.xx по адресу github.com / ethereum / wiki / wiki / JavaScript-API .

Скорее всего, вы используете версию 0.20.x или что-то в этом роде, так что сначала проверьте это.Чтобы проверить это, откройте dApp в браузере и введите в консоли следующее:

web3.version.api

Это должно показать вам, какую версию вы используете.

Я не думаю, что естьспособ создания учетных записей напрямую с помощью web3js 0.20.x , но вы можете попробовать обновить web3js до 1.0.0-beta и попытаться снова запустить свой код.Вы можете найти его в NPM здесь - https://www.npmjs.com/package/web3

Если вы хотите узнать больше о Солидности и умных контрактах, ознакомьтесь с моим курсом, который я специально для этого изучил - Солидность Smart Contracts: BuildDapps In Ethereum Blockchain

Вот купон на скидку: QAUS8657

...