使用Web3调用智能合约功能-似乎没有将其作为功能调用

时间:2018-12-08 14:23:43

标签: ethereum solidity web3

我使用带有Metamask(ropsten)的Solidity + Web3.js制作了一个简单的dApp 我已经与Remix部署了合同。

在该应用中,我可以无任何错误地购买代币。 但是,当我尝试将令牌用于“消费令牌功能”时,问题就出现了。

问题是当我在Etherscan检查我的交易时,这不像是调用了该函数。检查下面的etherscan。

您可以在正常交易的“输入数据”区域中看到它,它是一个功能。但是正如您在错误事务中看到的那样,不是。

有导致该错误的js函数。以及该功能的abi。

我还附上了应用程序的全部代码。请救救我!

您应该在metamask ropsten网中才能执行此应用。

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"
	},
  
  ...
 ]

0 个答案:

没有答案