Взаимодействие Truffle с моим смарт-контрактом с получением исключения Vm

pragma solidity ^0.4.23;

contract Hotelbooking {

  event Transfer(
        address indexed _from,
        address indexed _to,
        uint256 _value
    );

 mapping(address => uint256) public balanceOf;


  //mapping (uint256 => data) accounts ;


  function transfer(address _to, uint256 _value) public returns (bool success) {
          require(balanceOf[msg.sender] >= _value);

          balanceOf[msg.sender] -= _value;

          balanceOf[_to] += _value;

          Transfer(msg.sender, _to, _value);
            return true;

      }
    }

Мой код трассировки, который я хочу использовать с mty truffle

Hotelbooking.deployed().then(function(i){app = i;})

app.transfer(web3.eth.accounts[1],10,{из: web3.eth.accounts[0] })

я получаю следующую ошибку

Ошибка: Исключение виртуальной машины при обработке транзакции: возврат в XMLHttpRequest._onHttpResponseEnd (/usr/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:509:1) в XMLHttpRequest._setReadyState (/usr/ lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:354:1) в XMLHttpRequestEventTarget.dispatchEvent (/usr/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/ xhr2.js:64:1) в XMLHttpRequest.request.onreadystatechange (/usr/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/httpprovider.js:128:1) в /usr/lib /node_modules/truffle/build/webpack:/packages/truffle-provider/wrapper.js:134:1 в /usr/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/requestmanager.js: 86:1 в Object.InvalidResponse (/usr/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/errors.js:38:1)

пожалуйста, помогите мне

Сколько accounts[0]есть в balanceOf?
у него 99,69 эфира это тестовая сеть
Нет нет, я говорю о mapping(address => uint256) public balanceOf;. Сколько app.balanceOf(web3.eth.accounts[0] )возвращается?
Он показывает мне app.balanceOf(web3.eth.accounts[0]) BigNumber {s: 1, e: 0, c: [0]} (я пытался преобразовать в .tonumber())
Похоже, это так 0. делать .toString(10). По сути balanceOf[msg.sender] == 0, поэтому он терпит неудачу в require(balanceOf[msg.sender] >= _value);.
извините, я запутался, я думаю, что перевожу эфир с одной учетной записи на другую. В ганаше моя тестовая сеть показывает, что у меня 99 эфиров. Можете ли вы помочь мне, где я ошибся
Ваш Hotelbookingтокен-контракт. Имеет балансы и передаточную функцию. Это не имеет ничего общего с эфиром. Найдите "контракт токена". В настоящее время у всех в вашем контракте 0 токенов, поэтому никто ничего не может отправить. Вам нужно его инициализировать.
Спасибо, я понял, я научил, что один и тот же код может работать для записи токенов erc20 и трасификации эфириума eth.getBalance и добавления суммы eth.send() для вычета баланса

Ответы (2)

Все ваши балансы равны нулю. Требовать в вашей функции передачи всегда будет терпеть неудачу. Вам не хватает конструктора для чеканки монет.

Например:

constructor(uint initialAmount) {
     balanceOf[msg.sender] = initialAmount;
}
Привет, ivicaa, я учил, что нашел проблему, пожалуйста, поправьте меня, если я ошибаюсь. Спасибо за вашу поддержку.

Я нашел проблему. Функция, которую я упомянул, предназначена для перевода моих монет на другую учетную запись, а не эфира одной учетной записи на другую.

Для перевода эфира перейдите по следующей ссылке

Я пытаюсь добавить эфир в одну из своих учетных записей etherium, используя смарт-контракт.