Xây dựng hợp đồng thông minh (smart contract) đòi hỏi bạn phải hiểu cơ bản về blockchain, ngôn ngữ lập trình Solidity (đối với Ethereum hoặc các blockchain tương thích), và các công cụ triển khai. Dưới đây là hướng dẫn từng bước để bạn bắt đầu xây dựng hợp đồng thông minh:
Dưới đây là hợp đồng cơ bản để quản lý một token ERC-20:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract MyToken {
// Thông tin cơ bản về token
string public name = "MyToken";
string public symbol = "MTK";
uint8 public decimals = 18;
uint256 public totalSupply;// Mapping lưu trữ số dư và quyền sử dụng
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;// Sự kiện
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);// Khởi tạo hợp đồng
constructor(uint256 _initialSupply) {
totalSupply = _initialSupply * 10 ** uint256(decimals);
balanceOf[msg.sender] = totalSupply; // Gán toàn bộ token cho người tạo
}// Chuyển token
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value, "Insufficient balance");
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
emit Transfer(msg.sender, _to, _value);
return true;
}// Phê duyệt quyền sử dụng token
function approve(address _spender, uint256 _value) public returns (bool success) {
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}// Chuyển token thay mặt
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(balanceOf[_from] >= _value, "Insufficient balance");
require(allowance[_from][msg.sender] >= _value, "Allowance exceeded");
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
allowance[_from][msg.sender] -= _value;
emit Transfer(_from, _to, _value);
return true;
}
}
transfer(address _to, uint256 _value)
balanceOf(address _owner)
smart contract) bitcoin eth Ethereum tiền ảo ERC-20 Web3