У меня есть эти 2 функции
function getData() {
var a = document.getElementById("amount").value;
var b = a * 0.1;
var c = a - b;
document.getElementById("receive").innerHTML = c;
};
function approve(){
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
// We are in the browser and metamask is running.
web3 = new Web3(window.web3.currentProvider.enable());
}
var accounts= web3.eth.getAccounts();
var a = document.getElementById("amount").value;
var agiContract = new web3.eth.Contract(agiabi,agiContractAddress);
agiContract.methods.approve("0xE462CbEE0cd420f6c199B0194B1D8D93Fb5e7720", a).send({ from: accounts[0] });
};
Функция getData получает сумму ввода от пользователя, и эта сумма ввода передается в функцию accept ():
При утверждении Функция Я получаю эту сумму, утвержденную из другого контракта, поэтому я могу использовать сумму в своем Контракте.
Но когда я нажимаю Подтвердить, я получаю эту ошибку:
web3.min.js:1 Uncaught TypeError: this.provider[(intermediate value)(intermediate value)(intermediate value)] is not a function
at t.u.send (web3.min.js:1)
at h (web3.min.js:1)
at M.r [as getAccounts] (web3.min.js:1)
at approve (exchange.js:84)
at HTMLButtonElement.onclick (VM15448 :227)
Я использовал следующее версии моей функции утверждают
function approve(){
var accounts= web3.eth.getAccounts();
var a = document.getElementById("amount").value;
var agiContract = new web3.eth.Contract(agiabi,agiContractAddress);
agiContract.methods.approve("0xE462CbEE0cd420f6c199B0194B1D8D93Fb5e7720", a).send();
};
, что приводит к следующей ошибке
Uncaught (in promise) Error: No "from" address specified in neither the given options, nor the default options.
at Object.d._executeMethod (web3.min.js:1)
at approve (exchange.js:84)
at HTMLButtonElement.onclick (VM15481 :227)
В чем здесь проблема?
Я пробовал этот код, но он также не работает
function getData() {
var a = document.getElementById("amount").value;
var b = a * 0.1;
var c = a - b;
document.getElementById("receive").innerHTML = c;
};
function approve() {
web3.eth.sendTransaction({
from: web3.eth.coinbase,
to: '0xE462CbEE0cd420f6c199B0194B1D8D93Fb5e7720',
value: web3.utils.toWei(document.getElementById("amount").value, 'ether')
}, function(error, result) {
if (!error) {
console.log(result) ;
} else {
console.log(error);
}
})
}
Это дает мне
Uncaught Error: The send transactions "from" field must be defined!
at f.inputTransactionFormatter (web3.min.js:1)
at web3.min.js:1
Я снова обновил свой код
function getData() {
var a = document.getElementById("amount").value;
var b = a * 0.1;
var c = a - b;
document.getElementById("receive").innerHTML = c;
};
function approve() {
var accounts= web3.eth.getAccounts();
web3.eth.sendTransaction({
from: accounts ,
to: '0xE462CbEE0cd420f6c199B0194B1D8D93Fb5e7720',
value: web3.utils.toWei(document.getElementById("amount").value, 'ether')
}, function(error, result) {
if (!error) {
console.log(result) ;
} else {
console.log(error);
}
})
}
, и это дает мне следующую ошибку
inpage.js:1 Uncaught DOMException: Failed to execute 'postMessage' on 'Window': #<Promise> could not be cloned.