Я сделал простое приложение с Solidity + Web3.js с Metamask (ropsten). Я развернул свой контракт с Remix.
В приложении я могу купить токены без каких-либо ошибок.Но проблема возникает, когда я пытаюсь тратить свои токены с «потребляющей функцией токена».
Проблема в том, что когда я проверяю свою транзакцию в Etherscan, это не похоже на то, что функция вызывается.Проверьте etherscan ниже.
Вы можете увидеть в обычномВ области входных данных транзакции сказано, что это функция.Но, как вы можете видеть из транзакции ошибки, это не так.
Есть функция js, которая делает эту ошибку.И abi этой функции.
Я также прилагаю свои целые коды приложения.Пожалуйста, спасите меня!
Вы должны быть в метамаске.Запустите это приложение.
function bidForProduct(i) {
const itemName = itemNames[i];
const bidTokens = $(`#tb-${itemName}`).val();
alert(
"Bid has been submitted. The bid will be done as soon as the bid is recorded on the blockchain. \
(As long as your bid is higher than the previouse highest one.)"
);
$(`#tb-${itemName}`).val("");
console.log(`bids for ${itemName} about ${bidTokens}`);
// Invoke contract method
auction.bid(itemName, bidTokens, (e, r) => {
if(e) console.log(e);
getHighestBids();
getMyBids();
});
}
let abi = [
{
"constant": false,
"inputs": [
{
"name": "itemName",
"type": "bytes32"
},
{
"name": "tokenCountForBid",
"type": "uint256"
}
],
"name": "bid",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
...
]