Ответы пользователя по тегу Криптовалюта
  • Почему разные EVM жалуются на то, что не могут оценить газ?

    @Tyavochka
    Solidity Developer
    Такой ответ должен означать ошибку при выполнении, причем любую. Например, метамаск чаще всего пишет в такой ситуации, что недостаточно средств для оплаты газа. Для понимания нужно увидеть код или же прописать во всех require текст ошибки (если конечно падает на нем). Еще как вариант контракт слишком большой, но тогда его не получится принципиально задеплоить
    Ответ написан
  • КОД-РЕВЬЮ СмартКонтракта Solidity. Контракт переводит деньги на 2 кошелька. Всё правильно написал?

    @Tyavochka
    Solidity Developer
    Вот эти две сточки
    uint _50 = address(this).balance/100*50; //50% of balance of contract
    uint _25 = address(this).balance/100*25; //25% of balance of contract

    будут выполняться во время работы конструктора. Т.е. если заранее на адрес контракта (до его создания) не отослать ничего - то address(this).balance будет равен 0. Эти переменные надо вычислять каждый раз, когда нужно переводить eth.
    Также рекомендую сначала делать все умножение, а потом все деление: меньше проблем с округлением.
    Чтобы контракт срабатывал автоматически, метод перевода средств должен быть в receive() external payable{}. И лучше не использовать balance, т.к. в него будут попадать прошлые остатки. В этом плане подойдет msg.value (если говорить об автоматическом переводе).
    address payable addr1 и вторую переменную стоит сделать константой, если не планируется обновлять эти адреса в будущем. А если говорим о промышленном коде с тестированием, то неплохой вариант сделать их immutable и задавать в конструкторе.
    Помимо этого необходим метод для вывода оставшихся 25% иначе застрянут на адресе контракта на совсем.
    И наверное добавлю еще одну мелочь: transfer не самый идеальный способ переводить средства (если говорим о реальном контракте), из-за ограничения по газу на такой методу, рекомендую глянуть Address.sol (кажется метод sendValue) из библиотеки openzeppelin.
    Ответ написан
    3 комментария
  • Как сделать несколько криптовалютных переводов за одну транзакцию?

    @Tyavochka
    Solidity Developer
    Для сети Ethereum потребуется воспользоваться smart-контрактом, например, https://multisender.app/.
    В идеале конечно создать и развернуть свой, чтобы не потребовалось никому доверять.
    Но в любом случае комиссия за перевод на несколько адресов будет больше, чем на один адрес, но меньше, чем если делать все по отдельности.
    Ответ написан
    Комментировать