하지만 리믹스 (견고 웹 컴파일러)web3 오류 : VM이 실행 eth_estimateGas 예외 상태 : 유효하지 않은 연산 코드
transact to browser/Exchange.sol:Exchange.transfer pending ...
transact to browser/Exchange.sol:Exchange.transfer errored: Error: VM Exception while executing eth_estimateGas: invalid opcode
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:59368:17
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:69306:5
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:11335:9
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:7895:16
at replenish (/Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:8415:25)
at iterateeCallback (/Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:8405:17)
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:8380:16
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:11332:13
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:69302:9
at /Users/strender/.nvm/versions/node/v8.8.1/lib/node_modules/ethereumjs-testrpc/build/cli.node.js:63982:7
하고 말한다 내 견고성 파일 구조
pragma solidity ^0.4.18;
contract Exchange {
mapping (address => uint256) public balances;
string public helloworld;
event LogDeposit(address sender, uint amount);
event LogWithdraw(address receiver, uint amount);
event LogTransfer(address sender, address receiver, uint amount);
event HelloworldEvent(string helloworld);
function Exchange() {
helloworld = "helloworld!";
}
function helloWorld() returns (string) {
return helloworld;
}
function deposit() payable returns(bool success) {
balances[msg.sender] += msg.value;
LogDeposit(msg.sender, msg.value);
return true;
}
function withdraw(uint value) returns (bool success) {
if (balances[msg.sender] < value) throw;
balances[msg.sender] -= value;
msg.sender.transfer(value);
LogWithdraw(msg.sender, value);
return true;
}
function transfer(address to, uint value) payable returns (bool success) {
if (balances[msg.sender] < value) throw;
balances[msg.sender] -= value;
to.transfer(value);
LogTransfer(msg.sender, to, value);
return true;
}
}
이고 상기 web3 자바 스크립트,이 같은 기능 "전송 (행 어드레스 단위 값)를 호출하려고 :
$("#button").click(function() {
Exchange.transfer(receiver.toString(), 2);
// $("#loader").show();
});
,691,363을210
이 Exchange.transfer() 메서드에 일부 가스, 값 매개 변수를 추가하면 VM이 "기본 요금 초과 가스 한도"를 반환합니다
고객이 gas/gasPrice를 사용하여 거래 옵션을 보내지 않는 것 같습니다. 그걸 제공 할 수 있니? Remix에서 계약서가 정상적으로 작동하는 것처럼 보입니다 (기본 3000000 가스 한도 사용) –