Khóa học blockchain

Unit và Biến Globally Available trong Solidity

0 phút đọc

Trong lập trình Solidity, việc hiểu biết về các đơn vị đo lường và biến toàn cục có sẵn là rất quan trọng. Điều này không chỉ giúp lập trình viên quản lý và tính toán các giá trị tài chính một cách chính xác mà còn hỗ trợ trong việc xử lý thời gian và các thông tin khác liên quan đến blockchain. Bài viết này sẽ cung cấp một cái nhìn tổng quan chi tiết về các unit và biến globally available trong Solidity, đi kèm với các ví dụ thực tế.

Các Đơn Vị Ether

Trong Solidity, việc xử lý các giao dịch tài chính thường liên quan đến Ether, đơn vị tiền tệ của Ethereum. Để làm việc với Ether một cách linh hoạt, Solidity cung cấp các đơn vị nhỏ hơn của Ether, bao gồm:

  • Wei: Là đơn vị nhỏ nhất của Ether, không thể chia nhỏ hơn.
  • Gwei: Thường được sử dụng để tính toán phí gas, 1 Gwei bằng 1,000,000,000 Wei.
  • Ether: Đơn vị chính, 1 Ether bằng 1,000,000,000 Gwei hoặc 1e18 Wei.

Ví dụ về sử dụng đơn vị Ether:

pragma solidity ^0.8.0;

contract FinancialContract {
    function donate() public payable {
        require(msg.value >= 1 ether, "Minimum donation is 1 Ether");
    }

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

Trong ví dụ này, hàm donate yêu cầu số Ether gửi vào phải tối thiểu là 1 Ether. Hàm getBalance trả về số dư Ether của contract.

Các Đơn Vị Thời Gian

Solidity cũng hỗ trợ các đơn vị thời gian để giúp lập trình các chức năng liên quan đến thời gian một cách dễ dàng. Các đơn vị bao gồm:

  • seconds
  • minutes
  • hours
  • days
  • weeks

Ví dụ về sử dụng đơn vị thời gian:

pragma solidity ^0.8.0;

contract Auction {
    uint public auctionEndTime;

    constructor(uint _biddingTime) {
        auctionEndTime = block.timestamp + _biddingTime * 1 days;
    }

    function bid() public {
        require(block.timestamp <= auctionEndTime, "Auction already ended.");
        // logic to place a bid
    }
}

Trong ví dụ này, thời gian kết thúc đấu giá được tính toán dựa trên thời gian hiện tại cộng với số ngày đấu giá được chỉ định khi khởi tạo contract.

Biến Globally Available

Solidity cung cấp một số biến toàn cục có sẵn giúp truy cập thông tin về blockchain và giao dịch hiện tại. Một số biến quan trọng bao gồm:

  • msg.sender: Địa chỉ gửi giao dịch hiện tại.
  • msg.value: Số Wei gửi cùng với giao dịch.
  • block.timestamp: Dấu thời gian của block hiện tại.
  • block.number: Số của block hiện tại.

Ví dụ về sử dụng biến globally available:

pragma solidity ^0.8.0;

contract Voting {
    mapping(address => bool) public hasVoted;

    function vote() public {
        require(!hasVoted[msg.sender], "You have already voted.");
        hasVoted[msg.sender] = true;
        // record the vote
    }
}

Trong ví dụ này, vote kiểm tra xem địa chỉ gọi hàm đã bỏ phiếu chưa dựa trên biến msg.sender.

Kết luận

Hiểu biết về các unit và biến globally available trong Solidity là rất quan trọng đối với bất kỳ nhà phát triển blockchain nào. Việc sử dụng chính xác các đơn vị và biến này không chỉ giúp tối ưu hóa và an toàn cho các giao dịch mà còn làm cho code dễ đọc và bảo trì hơn. Các ví dụ trên đây chỉ là một phần nhỏ trong việc áp dụng các kiến thức này vào thực tế, và các nhà phát triển nên tiếp tục khám phá và thử nghiệm để phát triển kỹ năng của mình.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Biến cục bộbiến toàn cục trong Python là gì?

entry

What are the built-in types available In Python?

entry

Sự khác biệt giữa Unit TestsFunctional Tests là gì?

Gợi ý bài viết

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely