контракт web3 TypeError: «применить» не является функцией

Я пытаюсь вызвать функцию применения в ABI контракта, но получаю:

TypeError: «применить» не является функцией в: 1: 1

> myContract
{
  abi: [{
      constant: false,
      inputs: [{...}],
      name: "apply",
      outputs: [],
      payable: false,
      stateMutability: "nonpayable",
      type: "function"
  }, {
      constant: true,
      inputs: [{...}],
      name: "getApplicationID",
      outputs: [{...}],
      payable: false,
      stateMutability: "view",
      type: "function"
  }],
  eth: {},
  at: function(address, callback),
  getData: function(),
  new: function()
}

var abi = [{"constant": false,"inputs":[{"name": "hash","type": "bytes32"}],"name": "apply","outputs": [],"payable": false,"stateMutability": "nonpayable","type": "function"},{"constant": true,"inputs": [{"name": "email","type": "string"}],"name": "getApplicationID","outputs":[{"name": "","type": "uint256"}],"payable": false,"stateMutability": "view","type": "function"}]
var myContract = web3.eth.contract(abi,"0xcbbfbafedb0eb83016d2a96a4e80d30b20fa3e30");
 myContract.apply("4183f3a48d92d7b874e0e2dc0353e29aee0031b0a174be6f6a2e7a289e9febca");
Это web3.js 1.0.0? Если это так, я думаю, вам может понадобиться myContract.methods.apply(...).
> web3.version { API: "0.20.1", ethereum: "0x3f", network: "9876", node: "Geth/v1.7.3-stable/darwin-amd64/go1.9.2", шепот: не определено, getEthereum : функция (обратный вызов), getNetwork: функция (обратный вызов), getNode: функция (обратный вызов), getWhisper: функция (обратный вызов) } >

Ответы (1)

Это должно работать:

var myContract = web3.eth.contract(abi);


var myContractInstance = myContract.at("0xcbbfbafedb0eb83016d2a96a4e80d30b20fa3e30");


var result = myContractInstance.apply("4183f3a48d92d7b874e0e2dc0353e29aee0031b0a174be6f6a2e7a289e9febca");
console.log(result) 

Из web3.eth.contracts

Когда я запускаю на терминале, я получаю: Ошибка: превышен лимит газа на блоке в web3.js:3143:20 в web3.js:6347:15 в web3.js:5081:36 в web3.js:4137:16 при применении (<собственный код>) в web3.js:4223:16 в <анонимно>:1:14
Но когда я запускаю remix.ethereum.org, я получаю неверный адрес.
Какую сеть вы используете?
Сеть Ethereum Ropsten
У вас такая же ошибка при указании газа?myContractInstance.apply("4183f3a48d92d7b874e0e2dc0353e29aee0031b0a174be6f6a2e7a289e9febca", {gas: 300000})
Да Ошибка: превышен лимит блочного газа в web3.js:3143:20 в web3.js:6347:15 в web3.js:5081:36 в web3.js:4137:16 при применении (<собственный код>) в web3. js:4223:16 в <анонимно>:1:14
Просто к вашему сведению, applyэто не постоянная функция.