Не могу оценить газ на исполнение - PullRequest
0 голосов
/ 03 декабря 2018

У меня возникли проблемы с функцией, которая вызывает функцию и отправляет средства по тому же договору в другом экземпляре:

function buyLoan(address _sellLoan, address _sellPortfolio) public {

    uint tradePrice = Loan(_sellLoan).getBalance();

    // Now check if funds available
    if (tradePrice > address(this).balance) {
        // Not enough funds, so revert
        revert();
    } else {
        // Enough funds, so execute purchase

        // Get Sell Portfolio for transfer
        Portfolio sp = Portfolio(_sellPortfolio);

        // Finalize sale of Loan
        tr.executeTrade(_sellLoan, _tradeDate);

      if (!address(sp).send(tradePrice))
            revert();

        // Now add loan to buying portfolio
        addLoan(_sellLoan, tradePrice);

        // Delete loan from selling portfolio
        sp.deleteLoan(_sellLoan);
        }

}

Когда я пытаюсь запустить эту функцию, я получаю сообщение об ошибке, что она не может оценитьгаз требуется.Код компилируется, и циклы do while или for отсутствуют.

Проблема, с которой я столкнулся, заключается в том, что я даже не уверен, где искать это, чтобы выяснить это ...

Точная ошибка:

Оценка газа ошибочна из-за следующего сообщения (см. Ниже).Выполнение транзакции, скорее всего, не удастся.Вы хотите принудительно отправить?JsonRpcEngine - ответ не содержит ошибок или результатов для запроса: {"jsonrpc": "2.0", "id": 2522037241, "method": "eth_estimateGas", "params": [{"from": "0x6d4dcc21e77ee5bc18d0f91497fc5285a" to8c5c8c8c8c)«: "0x1B15f071B4Fbd625Ebb3cC389D856ea2Ba7284A5", "данные": "0x03fb6eb00000000000000000000000006f13ee53f5eced4021b768c2949f45c5075120890000000000000000000000001b15f071b4fbd625ebb3cc389d856ea2ba7284a5", "значение": "0x1001d1bf800"}]}

Я компиляции с ремиксом, используя версию ^ 0.4.25.Буду признателен за любую помощь, которую вы можете мне дать.

Спасибо.

1 Ответ

0 голосов
/ 22 января 2019

Это теперь решено.Проблема заключалась в том, что при отправке было недостаточно зарезервированного газа (а именно 2300).Использование вызова как Smarx помогло мне в этом:

https://ethereum.stackexchange.com/questions/65879/error-when-executing-transfer-with-sufficient-funds?noredirect=1#comment79515_65879

Критическая строка состоит в том, что команда:

address(sp).send(tradePrice)

должна быть:

address(sp).call.value(tradePrice)("")

В любом случае, спасибо всем, кто откликнулся и попытался помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...