Ниже приведен список некоторых распространенных функций смарт-контрактов и их использования, а также приведены некоторые основные примеры.
constructor
)Конструктор используется для инициализации переменных состояний для смарт-контракта. Он вызывается только один раз при развертывании контракта.
Пример:
contract MyContract {
address public owner;
constructor() {
owner = msg.sender;
}
}
receive
или fallback
)Эти функции запускаются, когда транзакция вызывается без данных, и часто используются для получения эфира.
Пример:
contract MyContract {
receive() external payable {
// Автоматически получать эфир
}
fallback() external payable {
// То же, что и выше
}
}
payable
)Позволяет функциям получать эфир.
Пример:
function donate() public payable {
// Функции, которые могут получать эфир
}
transfer
или send
или call
)Используется для отправки эфира на другие адреса.
Пример:
function withdraw(uint amount) public {
require(msg.sender == owner);
(bool success, ) = msg.sender.call{value: amount}("");
require(success, "Transfer failed.");
}
event
)Используется для уведомления об изменениях в блокчейне, обычно используется при взаимодействии с внешними системами.
Пример:
event Transfer(address indexed from, address indexed to, uint value);
function transfer(address to, uint value) public {
// Логика передачи
emit Transfer(msg.sender, to, value);
}
modifier
)Убедитесь, что только учетные записи с определенными ролями могут вызывать определенные функции.
Пример:
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function setSomething(uint newValue) public onlyOwner {
// Звонить может только владелец
}
state variables
)Данные, хранящиеся в блокчейне, такие как балансы, право собственности и т. д.
Пример:
uint public balance;
address public owner;
mapping
)Используется для хранения пар ключ-значение, часто используется для отслеживания баланса счетов.
Пример:
mapping(address => uint) public balances;
array
)Используется для хранения серии данных одного типа.
Пример:
uint[] public timestamps;
struct
)Сложные структуры данных, объединяющие несколько типов данных.
Пример:
struct User {
uint age;
string name;
}
User public user;
enum
)Определите ограниченный набор именованных констант.
Пример:
enum Status { Active, Pending, Completed }
Status public status;
Уведомление,Эти примеры демонстрируют только основные концепции.,Фактический смарт-контракт может потребовать более сложной проверки ошибок и мер безопасности. Будьте осторожны при написании смарт-контракта.,Потому что после развертывания,Код обычно неизменяем,Любые ошибки могут привести к потере средств и другим серьезным последствиям.