Конструктор должен быть платным, если вы отправляете значение - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в этом мире умных контрактов.После прочтения из разных источников я узнал, что основательность не зрелая и все еще развивается.

Я использую этот код в IDE ремиксов.Все работает нормально, кроме function transfertocontracts(uint amount) public.Что я пытаюсь сделать здесь, так это то, что я пытаюсь перевести некоторые эфиры, например: 10, в мой контракт, а затем позже, используя эту функцию function Transfer_Contract_Amount() public Я перенесу всю сумму контракта на конкретный адрес.

Теперь в чем проблема?

Ну, проблема в том, что когда я запускаю эту function transfertocontracts(uint amount) public, я получаю эту ошибку: Note: The constructor should be payable if you send value. debug the transaction to get more information.

Так что, пожалуйста, кто-нибудь может мне помочьздесь !!!

А также подскажите, правильный ли мой подход или нет?

Спасибо !!


contract SLA{

    address seller;


    event DepositFunds(address from, uint amount);

    constructor() payable public {
        seller = msg.sender;
    }


    function transfertocontracts(uint amount) public{
       address(this).transfer(amount);
    }

    function seePerson_Amount() public view returns(uint){
       return seller.balance;
    }

    function seeContract_Amount() public view returns(uint){
       return address(this).balance;
    }

    function Transfer_Contract_Amount() public{
       seller.transfer(address(this).balance);
    }
}

1 Ответ

0 голосов
/ 06 мая 2019

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

pragma solidity >=0.4.22 <0.6.0;
contract SLA{

 address payable seller;


event DepositFunds(address from, uint amount);

constructor() payable public {
    seller = msg.sender;
}


function transfertocontracts(uint amount) payable public{

}

function seePerson_Amount() public view returns(uint){
   return seller.balance;
}

function seeContract_Amount() public view returns(uint){
   return address(this).balance;
}

function Transfer_Contract_Amount() payable public{
    seller.transfer(address(this).balance);
}
}

Чтобы проверить, можете ли вы запустить его на remix , а на вкладке запуска на левой стороне вы можете указать значение ether для отправки и запустить функцию Transfertocontracts, чтобы сохранить это значение. используйте значение msg.value.

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