Я пытаюсь интегрировать приложение для реагирования с go-ethereum с помощью web3js.
событие Onsubmit будет делать следующее: 1. Создайте учетную запись. 2. Откройте счет. 3. Подтвердите смарт-контракт с созданной учетной записью.
Вот мой код
import React, { Component } from 'react';
import './App.css';
import web3 from './web3';
....
class App extends Component {
constructor(props){
super(props);
this.state = {requester : '', receiver:'', balance: '', message:''};
}
async componentDidMount(){
const requester = await auth.methods.requester().call();
const receiver = await auth.methods.receiver().call();
const approvers = await auth.methods.approvers(0).call();
const balance = await web3.eth.getBalance(auth.options.address);
this.setState({requester,receiver,balance});
}
onSubmit = async (event)=>{
event.preventDefault();
console.log('Approving the smart contract ..... Mining in process ! ');
var pass = "xxxxxxx"
var newaccount = web3.eth.personal.newAccount(pass);
var promise1 = Promise.resolve(newaccount);
promise1.then(function(value) {
var accountnumber = value;
console.log(accountnumber);
web3.eth.personal.unlockAccount(accountnumber,pass, 1500);
auth.methods.approve().send({gas: '1000000',from: accountnumber});
console.log('Smart Contract approved ! ');
});
};
Учетная запись создается, но при выполнении транзакции я получаю следующую ошибку.
Утверждение смарт-контракта ..... Идет майнинг! App.js: 57
0x98f76b2673d545F55c0ff1e961f15EF0a7DfBaD3
App.js: 71 смарт-контракт
одобренный ! errors.js: 29 Неперехвачено (в обещании) Ошибка: возвращена ошибка: требуется аутентификация: пароль или разблокировка в Object.ErrorResponse (errors.js: 29) в index.js: 125 в XMLHttpRequest.request.onreadystatechange (index.js: 103 ) в XMLHttpRequestEventTarget.dispatchEvent (xml-http-request-event-target.js: 50) в XMLHttpRequest._setReadyState (xml-http-request.js: 288) в XMLHttpRequest._onHttpResponseEnd (xml-http-request.js: в push ../ node_modules / stream-http / lib / response.js.exports.IncomingMessage. (xml-http-request.js: 413) в push ../ node_modules / stream-http / lib / response.js.exports.IncomingMessage.emit (events.js: 139) в endReadableNT (_stream_readable.js: 1030) в afterTickTwo (index.js: 31) в Item.push ../ node_modules / process / browser.js.Item.run (browser.js: 167) в dryQueue (browser.js: 131) ErrorResponse @ errors.js: 29 ( анонимный) @ index.js: 125 request.onreadystatechange @ index.js: 103 XMLHttpRequestEventTarget.dispatchEvent @ xml-http-request-event-target.js: 50 XMLHttpRequest._setReadyState @ xml-http-request.js: 288 XMLHttpRequest. @ xml-http-request.js: 459 (анонимно) @ xml-http-request.js: 413 emit @ events.js: 139 endReadableNT @ _stream_readable.js: 1030 afterTickTwo @ index.js: 31 push ../ node_modules / process / browser.js.Item.run @ browser.js: 167 DrainQueue @ browser.js: 131 setTimeout (async) _fireError @ index.js: 72 sendTxCallback @ index.js: 465 (анонимный) @ index.js: 125 запрос .onreadystatechange @ index.js: 1 03 XMLHttpRequestEventTarget.dispatchEvent @ xml-http-request-event-target.js: 50 XMLHttpRequest._setReadyState @ xml-http-request.js: 288 XMLHttpRequest._onHttpResponseEnd @ xml-http-request.jonymouss: @ 459 (an http-request.js: 413 emit @ events.js: 139 endReadableNT @ _stream_readable.js: 1030 afterTickTwo @ index.js: 31 push ../ node_modules / process / browser.js.Item.run @ browser.js: 167 DrainQueue @ browser.js: 131 setTimeout (async) runTimeout @ browser.js: 43 push ../ node_modules / process / browser.js.process.nextTick @ browser.js: 156 nextTick @ index.js: 30 возможноReadMore @ _stream_readable.js : 521 addChunk @ _stream_readable.js: 300 readableAddChunk @ _stream_readable.js: 278 push ../ node_modules / readable-stream / lib / _stream_readable.js.Readable.push @ _stream_readable.js: 242 (анонимно) @ response.js: 47 напишите @ response.js: 44
Изменить: изменен код, чтобы отловить ошибки
web3.eth.personal.unlockAccount(accountnumber,pass, 1500, function(err, result){
if(err){
alert("Error"+ err);
return;}
alert("Account Opening: "+ result);});
.....
auth.methods.approve().send({gas: '1000000',from: accountnumber}, function(err, result){
if(err){
alert("Error"+ err);
return;}
alert("Account address: "+ result);
console.log('Smart Contract approved ! ');});
web3.eth.personal.unlockAccount
возвращает "истину", но по-прежнему auth.methods.approve
выдает ошибку.