Khóa học blockchain

Contracts trong Solidity

0 phút đọc

Trong lập trình blockchain sử dụng Solidity, khái niệm "contract" là trung tâm và cơ bản nhất. Contract trong Solidity tương tự như class trong các ngôn ngữ lập trình hướng đối tượng, là nơi định nghĩa các biến trạng thái và các hàm để thao tác với những biến này. Bài viết này sẽ cung cấp một cái nhìn tổng quan về cấu trúc và cách sử dụng contracts trong Solidity, đi kèm với các ví dụ cụ thể.

Khái niệm về Contract

Contract trong Solidity là một tập hợp các mã lệnh và dữ liệu được đặt trên Ethereum Blockchain. Mỗi contract có một địa chỉ duy nhất trên mạng và có thể tương tác với các contract khác cũng như với các tài khoản bên ngoài.

Cấu trúc cơ bản của một Contract

Một contract trong Solidity bao gồm các thành phần sau:

  • Biến trạng thái (State Variables): Lưu trữ thông tin về trạng thái của contract, có thể truy cập và sửa đổi thông qua các hàm.
  • Hàm (Functions): Định nghĩa các thao tác có thể thực hiện trên contract.
  • Modifier: Định nghĩa các ràng buộc đối với cách thức thực hiện các hàm.
  • Sự kiện (Events): Cho phép các ứng dụng client lắng nghe các thay đổi xảy ra trên blockchain.
  • Constructor: Một hàm đặc biệt chỉ được thực thi một lần khi contract được tạo.

Ví dụ về một Contract đơn giản

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint storedData; // Biến trạng thái lưu trữ một số nguyên

    constructor(uint initialData) {
        storedData = initialData; // Khởi tạo biến trạng thái
    }

    function set(uint x) public {
        storedData = x; // Hàm cập nhật biến trạng thái
    }

    function get() public view returns (uint) {
        return storedData; // Hàm trả về giá trị của biến trạng thái
    }
}

Trong ví dụ này, SimpleStorage là một contract đơn giản chứa một biến trạng thái storedData và hai hàm: set để cập nhật giá trị của biến và get để truy xuất giá trị này.

Tương tác giữa các Contracts

Contracts trong Solidity có thể gọi các hàm của nhau, tạo ra các tương tác phức tạp. Điều này cho phép tái sử dụng mã và tạo ra các ứng dụng phân tán lớn hơn.

Ví dụ về tương tác giữa các Contracts

pragma solidity ^0.8.0;

contract Caller {
    Callee public calleeContract;

    constructor(address _calleeAddress) {
        calleeContract = Callee(_calleeAddress);
    }

    function callSetFunction(uint _value) public {
        calleeContract.set(_value);
    }

    function callGetFunction() public view returns (uint) {
        return calleeContract.get();
    }
}

contract Callee {
    uint private data;

    function set(uint _data) public {
        data = _data;
    }

    function get() public view returns (uint) {
        return data;
    }
}

Trong ví dụ này, Caller là một contract có khả năng tương tác với contract Callee. Caller sử dụng địa chỉ của Callee để gọi các hàm setget.

Kết luận

Contracts là nền tảng của bất kỳ ứng dụng Ethereum nào. Hiểu biết về cách tạo và tương tác với các contracts là bước đầu tiên để trở thành một nhà phát triển Solidity. Với các khái niệm cơ bản và ví dụ được trình bày, hy vọng bạn đã có cái nhìn rõ ràng hơn về cách thức hoạt động của contracts trong Solidity.

Avatar
Được viết bởi

TechMely Team

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

Gợi ý bài viết

Bình luận

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

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