Solidity: Отправить ETH
Solidity: Отправить ETH

В солидности,transfer,sendиcallиспользуется для отправкиETHтри метода。Ниже приводится подробное введение в эти три метода.:

1.transfer:Это самое раннее отправленноеETHметод。это поместит всеgas(самое большее2300 gas) отправляется получателю, и он автоматически генерирует исключение в случае сбоя вызова. Из-за фиксированного лимита газа он не может вызвать код контракта получателя (если получатель является контрактом). Поэтому он считается самым безопасным методом. Однако из-за фиксированного лимита газа он может выйти из строя в определенных ситуациях, например, если код контракта получателя потребляет более 2300 газа. Поэтому этот метод больше не рекомендуется.

2.send:этот методиtransferпохожий,Но если вызов не удался,он не выдает аномальный,Вместо этого он возвращаетfalseЛогическое значение。Это делает Разработчик Может справиться с неудачными ситуациями。Однако,иtransferТакой же,Также имеется фиксированный лимит газа в 2300 единиц.,Поэтому в некоторых случаях он может выйти из строя.

3.call:В настоящее время это рекомендуемая доставка.ETHметод。это не исправленоgasпредел,Поэтому код контракта получателя можно назвать,Не потому, чтоgasпредели потерпел неудачу。Его использованиеcall{value: amount}(data)amountдолжен быть отправленETHколичество,dataдолжен быть отправленданные。Если вызов не удался,он вернетfalseЛогическое значение,Поэтому Разработчик может справиться с ситуациями сбоя.

В реальной разработке соответствующий метод следует выбирать на основе конкретных потребностей бизнеса и соображений безопасности.

Отправка ETH в контракте Solidity может быть осуществлена ​​с помощью функции контракта. Вот простой пример:

Язык кода:javascript
копировать
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;

contract SendEther {
    function sendViaTransfer(address payable _to) public payable {
        // Больше не рекомендуется
        _to.transfer(msg.value);
    }

    function sendViaSend(address payable _to) public payable {
        // Send Возвращает логическое значение, указывающее успех или неудачу.
        // Больше не рекомендуется
        bool sent = _to.send(msg.value);
        require(sent, "Failed to send Ether");
    }

    function sendViaCall(address payable _to) public payable {
        // Call Возвращает логическое значение, указывающее успех или неудачу.。
        // Рекомендуется
        (bool sent, bytes memory data) = _to.call{value: msg.value}("");
        require(sent, "Failed to send Ether");
    }
}

В этом примере,Определены три функции,Используйте соответственноtransfer,sendиcallметод отправкиETH。Следует отметить, что,transferиsendВ некоторых случаях метод может дать сбой,Итак, в настоящее время Рекомендуетсяcallметод отправкиETH。

в использованииcallметод,В качестве параметра необходимо передать пустую строку,и использовать{value: msg.value}Чтобы указать отправленноеETHколичество。Если отправка не удалась,callМетод вернетfalseЛогическое значение,Поэтому необходимо использоватьrequireфункциячтобы проверить, успешна ли отправка。

Отказ от ответственности: эта работа распространяется под лицензией Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)[1]. Пожалуйста, укажите источник при ее использовании. Автор: мэнбин[2] блог: мэнбин[3] Гитхаб: mengbin92[4] cnblogs: Непреднамеренно полюбила воду[5] Сообщество разработчиков облачных технологий Tencent: Мюнстер[6]

References

[1] С указанием авторства-Некоммерческая-ShareAlike 4.0 интернациональность (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [2] mengbin: mengbin1992@outlook.com [3] mengbin: https://mengbin.top [4] mengbin92: https://mengbin92.github.io/ [5] Влюбляюсь в воду нечаянно: https://www.cnblogs.com/lianshuiwuyi/ [6] Мюнстер: https://cloud.tencent.com/developer/user/6649301

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.