我使用带有Metamask(ropsten)的Solidity + Web3.js制作了一个简单的dApp 我已经与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"
},
...
]