Так что я очень новичок в разработке Blockchain.
Я развернул очень простой Smart Contract в тестовой сети Ropsten. Я разрабатываю интерфейс и отсюда хочу вывести ether / wei с адреса контракта, на счет, вызывающий функцию (введенная метамаска). Он отлично работает, когда я перехожу на etherscan к своему контракту и напрямую использую функцию изъятия. Я просто не знаю, как правильно вызвать функцию вывода через web3 js. Ниже приведено сообщение об ошибке, возникающее при попытке вызвать функцию / метод. Может ли кто-нибудь помочь направить меня в правильном направлении? Спасибо!
Ошибки выброшены ..
https://imgur.com/a/RSVrJIF
Web3 = require('web3');
if (typeof web3 != 'undefined')
{
web3 = new Web3(web3.currentProvider);
console.log("existing web3: provider " + typeof web3);
console.log(web3.currentProvider);
}
else{
//To Do..
web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/"));
console.log("new provider " + web3);
}
console.log(web3.isConnected());
console.log(web3.eth.accounts[0]);
abi = JSON.parse('[{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMyBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]');
var bankContract = web3.eth.contract(abi);
contractInstance = bankContract.at('myaddressishere');
console.log (contractInstance);
function withdraw() {
contractInstance.withdraw(300000000000000000, { from: web3.eth.accounts[0]})
}
pragma solidity ^0.5.0;
contract Bank{
mapping(address=>uint) balances;
function deposit() public payable{
balances[msg.sender]+=msg.value;
}
function withdraw(uint amount) public{
if(balances[msg.sender]>=amount){
balances[msg.sender]-=amount;
msg.sender.transfer(amount);
}
}
}