Bài học 3

Viết một Hợp đồng Thông minh Cơ bản

Biến, hàm và bộ điều chỉnh là những thành phần quan trọng trong hợp đồng thông minh Solidity. Solidity có hai loại biến: biến trạng thái và biến cục bộ.

Trong phần này, chúng ta sẽ thảo luận về quy trình viết một hợp đồng thông minh cơ bản bằng Solidity. Chúng tôi sẽ đề cập đến các thành phần thiết yếu như biến, hàm và công cụ sửa đổi. Sau đó, chúng ta sẽ xem qua một ví dụ về việc triển khai một hợp đồng token đơn giản.

Biến, hàm và bộ điều chỉnh

  • Biến sốTrong Solidity, có hai loại biến - biến trạng thái và biến cục bộ. Biến trạng thái được lưu trữ vĩnh viễn trên blockchain, trong khi biến cục bộ là tạm thời và chỉ tồn tại trong phạm vi của một hàm.
  • Chức năng: Chức năng là khối xây dựng của hợp đồng thông minh. Chúng được sử dụng để thực hiện các tác vụ cụ thể, như tạo giao dịch và thực thi logic tùy chỉnh. Các hàm có thể có các tham số đầu vào và giá trị trả về, cho phép tùy chỉnh và linh hoạt hơn.
  • Bộ điều chỉnh: Các bộ điều chỉnh là duy nhất trong Solidity và được sử dụng để điều chỉnh hành vi của một hàm. Chúng có thể cải thiện tính đọc và quản lý của mã và có thể được sử dụng để xác thực các giá trị đầu vào hoặc thực thi một hàm được gọi theo điều kiện.

Ví dụ 1: Thực hiện một hợp đồng token đơn giản

Hãy tạo một hợp đồng token đơn giản bằng cách sử dụng Solidity. Hợp đồng này sẽ cho phép người dùng chuyển đổi token giữa các tài khoản và kiểm tra số dư token của bất kỳ tài khoản nào.

pragma solidity ^0.8.0; hợp đồng SimpleToken {    // Khai báo biến trạng thái    địa chỉ công khai chủ sở hữu;    ánh xạ (địa chỉ => uint256) công khai số dư;    // Khởi tạo hợp đồng mã thông báo    constructor(uint256 cung cấp ban đầu) {        chủ sở hữu = msg.sender;        số dư[chủ sở hữu] = cung cấp ban đầu;    }    // Chức năng chuyển các thông báo    chức năng chuyển (địa chỉ đến, uint256 số lượng) công khai {        yêu cầu(số dư[msg.sender] >= số lượng, "Số dư không đủ");        số dư[msg.sender] -= số lượng;        số dư[đến] += số lượng;    }    // Chức năng kiểm tra số dư mã thông báo của một tài khoản    chức năng balanceOf(địa chỉ tài khoản) công khai xem trả lại (uint256) {        trả lại số dư[tài khoản];    }}

Trong hợp đồng này, chúng ta có:

  • Các biến trạng tháichủ sở hữusố dưđể lưu địa chỉ chủ hợp đồng và số dư token của tất cả các địa chỉ tương ứng.
  • A người xây dựnghàm thiết lập nguồn cung ban đầu của các token và gán chúng cho chủ sở hữu hợp đồng.
  • Một chuyển khoảnhàm cho phép người dùng chuyển token sang tài khoản khác. Nó sử dụng yêu cầutuyên bố để đảm bảo người gửi có đủ token để chuyển nhượng.
  • Một số dư củahàm trả về số dư token của một tài khoản cụ thể.
  • Hợp đồng mã token cơ bản này thể hiện cách sử dụng biến, hàm và bộ điều chỉnh trong Solidity để tạo ra một hợp đồng thông minh đơn giản, hoạt động.

Ví dụ 2: Thực hiện một hệ thống bỏ phiếu đơn giản

TypeScriptpragma solidity ^0.8.0;contract VotingSystem {    mapping (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Invalid candidate.");        votesReceived[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Invalid candidate.");        return votesReceived[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

Trong ví dụ này, Hệ thống bỏ phiếuhợp đồng cho phép người dùng bỏ phiếu cho một trong số các ứng cử viên bằng cách gọi điện thoạibỏ phiếu cho ứng cử viênHàm. Hợp đồng theo dõi số phiếu bầu nhận được cho mỗi ứng cử viên bằng cách sử dụng một số phiếu nhận đượcphân bố, trong đó key là tên của ứng cử viên và giá trị là số phiếu bầu.danh sách ứng viênbiến lưu trữ danh sách ứng cử viên hợp lệ. tổng số phiếu bầu choHàm có thể được gọi để kiểm tra số phiếu mà một ứng cử viên cụ thể đã nhận được, và ứng cử viên hợp lệHàm kiểm tra xem ứng cử viên có hợp lệ hay không. Đây là một ví dụ đơn giản về cách Solidity có thể được sử dụng để xây dựng ứng dụng phi tập trung với logic phức tạp.

Nổi bật
Biến, hàm và bộ điều chỉnh là các thành phần quan trọng trong hợp đồng thông minh Solidity.
Solidity có hai loại biến: biến trạng thái và biến cục bộ.
Các chức năng được sử dụng để thực hiện các nhiệm vụ và có thể có tham số đầu vào và giá trị trả về.
Các bộ điều chỉnh được sử dụng để điều chỉnh hành vi của một hàm và cải thiện tính đọc và quản lý mã.
Hợp đồng SimpleToken cho phép người dùng chuyển token và kiểm tra số dư token.
Hợp đồng SimpleToken thể hiện việc sử dụng biến trạng thái, hàm constructor và các hàm như transfer và balanceOf.
Hợp đồng VotingSystem cho phép người dùng bỏ phiếu cho ứng cử viên và theo dõi số phiếu bầu.
Hợp đồng VotingSystem trình bày việc sử dụng bảng ánh xạ, mảng và các hàm như voteForCandidate, totalVotesFor và validCandidate.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 3

Viết một Hợp đồng Thông minh Cơ bản

Biến, hàm và bộ điều chỉnh là những thành phần quan trọng trong hợp đồng thông minh Solidity. Solidity có hai loại biến: biến trạng thái và biến cục bộ.

Trong phần này, chúng ta sẽ thảo luận về quy trình viết một hợp đồng thông minh cơ bản bằng Solidity. Chúng tôi sẽ đề cập đến các thành phần thiết yếu như biến, hàm và công cụ sửa đổi. Sau đó, chúng ta sẽ xem qua một ví dụ về việc triển khai một hợp đồng token đơn giản.

Biến, hàm và bộ điều chỉnh

  • Biến sốTrong Solidity, có hai loại biến - biến trạng thái và biến cục bộ. Biến trạng thái được lưu trữ vĩnh viễn trên blockchain, trong khi biến cục bộ là tạm thời và chỉ tồn tại trong phạm vi của một hàm.
  • Chức năng: Chức năng là khối xây dựng của hợp đồng thông minh. Chúng được sử dụng để thực hiện các tác vụ cụ thể, như tạo giao dịch và thực thi logic tùy chỉnh. Các hàm có thể có các tham số đầu vào và giá trị trả về, cho phép tùy chỉnh và linh hoạt hơn.
  • Bộ điều chỉnh: Các bộ điều chỉnh là duy nhất trong Solidity và được sử dụng để điều chỉnh hành vi của một hàm. Chúng có thể cải thiện tính đọc và quản lý của mã và có thể được sử dụng để xác thực các giá trị đầu vào hoặc thực thi một hàm được gọi theo điều kiện.

Ví dụ 1: Thực hiện một hợp đồng token đơn giản

Hãy tạo một hợp đồng token đơn giản bằng cách sử dụng Solidity. Hợp đồng này sẽ cho phép người dùng chuyển đổi token giữa các tài khoản và kiểm tra số dư token của bất kỳ tài khoản nào.

pragma solidity ^0.8.0; hợp đồng SimpleToken {    // Khai báo biến trạng thái    địa chỉ công khai chủ sở hữu;    ánh xạ (địa chỉ => uint256) công khai số dư;    // Khởi tạo hợp đồng mã thông báo    constructor(uint256 cung cấp ban đầu) {        chủ sở hữu = msg.sender;        số dư[chủ sở hữu] = cung cấp ban đầu;    }    // Chức năng chuyển các thông báo    chức năng chuyển (địa chỉ đến, uint256 số lượng) công khai {        yêu cầu(số dư[msg.sender] >= số lượng, "Số dư không đủ");        số dư[msg.sender] -= số lượng;        số dư[đến] += số lượng;    }    // Chức năng kiểm tra số dư mã thông báo của một tài khoản    chức năng balanceOf(địa chỉ tài khoản) công khai xem trả lại (uint256) {        trả lại số dư[tài khoản];    }}

Trong hợp đồng này, chúng ta có:

  • Các biến trạng tháichủ sở hữusố dưđể lưu địa chỉ chủ hợp đồng và số dư token của tất cả các địa chỉ tương ứng.
  • A người xây dựnghàm thiết lập nguồn cung ban đầu của các token và gán chúng cho chủ sở hữu hợp đồng.
  • Một chuyển khoảnhàm cho phép người dùng chuyển token sang tài khoản khác. Nó sử dụng yêu cầutuyên bố để đảm bảo người gửi có đủ token để chuyển nhượng.
  • Một số dư củahàm trả về số dư token của một tài khoản cụ thể.
  • Hợp đồng mã token cơ bản này thể hiện cách sử dụng biến, hàm và bộ điều chỉnh trong Solidity để tạo ra một hợp đồng thông minh đơn giản, hoạt động.

Ví dụ 2: Thực hiện một hệ thống bỏ phiếu đơn giản

TypeScriptpragma solidity ^0.8.0;contract VotingSystem {    mapping (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Invalid candidate.");        votesReceived[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Invalid candidate.");        return votesReceived[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

Trong ví dụ này, Hệ thống bỏ phiếuhợp đồng cho phép người dùng bỏ phiếu cho một trong số các ứng cử viên bằng cách gọi điện thoạibỏ phiếu cho ứng cử viênHàm. Hợp đồng theo dõi số phiếu bầu nhận được cho mỗi ứng cử viên bằng cách sử dụng một số phiếu nhận đượcphân bố, trong đó key là tên của ứng cử viên và giá trị là số phiếu bầu.danh sách ứng viênbiến lưu trữ danh sách ứng cử viên hợp lệ. tổng số phiếu bầu choHàm có thể được gọi để kiểm tra số phiếu mà một ứng cử viên cụ thể đã nhận được, và ứng cử viên hợp lệHàm kiểm tra xem ứng cử viên có hợp lệ hay không. Đây là một ví dụ đơn giản về cách Solidity có thể được sử dụng để xây dựng ứng dụng phi tập trung với logic phức tạp.

Nổi bật
Biến, hàm và bộ điều chỉnh là các thành phần quan trọng trong hợp đồng thông minh Solidity.
Solidity có hai loại biến: biến trạng thái và biến cục bộ.
Các chức năng được sử dụng để thực hiện các nhiệm vụ và có thể có tham số đầu vào và giá trị trả về.
Các bộ điều chỉnh được sử dụng để điều chỉnh hành vi của một hàm và cải thiện tính đọc và quản lý mã.
Hợp đồng SimpleToken cho phép người dùng chuyển token và kiểm tra số dư token.
Hợp đồng SimpleToken thể hiện việc sử dụng biến trạng thái, hàm constructor và các hàm như transfer và balanceOf.
Hợp đồng VotingSystem cho phép người dùng bỏ phiếu cho ứng cử viên và theo dõi số phiếu bầu.
Hợp đồng VotingSystem trình bày việc sử dụng bảng ánh xạ, mảng và các hàm như voteForCandidate, totalVotesFor và validCandidate.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.