Lesson 4

Tương tác hợp đồng

Trong bài học cuối cùng này, chúng ta sẽ xem xét các hợp đồng tương tác với nhau như thế nào. Chúng ta cũng sẽ tìm hiểu cách triển khai ghi nhật ký sự kiện để giám sát các hoạt động trên blockchain.

Tương tác với hợp đồng

Khái niệm đầu tiên chúng ta sẽ giải quyết là tương tác hợp đồng. Tương tác hợp đồng đề cập đến cách hợp đồng giao tiếp và chia sẻ thông tin. Trong Solidity, hợp đồng có thể gọi các chức năng của hợp đồng khác, tạo hợp đồng khác và thậm chí gửi Ether đến các hợp đồng hoặc địa chỉ khác.

Chúng tôi đã thấy sự tương tác theo hợp đồng trong hệ thống bỏ phiếu của mình. Mỗi lần bỏ phiếu, hợp đồng bỏ phiếu sẽ tương tác với chính nó để cập nhật trạng thái của người bỏ phiếu và số phiếu bầu cho đề xuất. Tuy nhiên, đối với một hệ thống phức tạp hơn, bạn có thể có các hợp đồng riêng biệt cần tương tác với nhau.

Đây là một ví dụ đơn giản về tương tác hợp đồng:

Độ rắn 
 độ rắn pragma >=0,7,0 <0,9,0; 

 hợp đồng CalledContract { 
 uint public x; 

 hàm setX(uint _x) public {
        x = _x;
    }
}

hợp đồng CallerContract { 
 hàm callSetX(địa chỉ _gọiContractAddress, uint _x) public {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

Trong ví dụ này, CallerContract tương tác với CalledContract bằng cách gọi hàm setX của nó.

Ghi nhật ký sự kiện

Bây giờ hãy chuyển sang ghi nhật ký sự kiện. Sự kiện là một cách để hợp đồng của bạn thông báo rằng điều gì đó đã xảy ra với thế giới bên ngoài. Ví dụ: trong hệ thống bỏ phiếu của chúng tôi, chúng tôi có thể muốn phát ra một sự kiện mỗi khi bỏ phiếu. Đây là cách thực hiện:

Độ rắn 
 // SPDX-Mã định danh giấy phép: GPL-3.0 
 độ rắn pragma >=0.7.0 <0.9.0; 

 hợp đồng Người bỏ phiếu { 
 // Định nghĩa sự kiện 
 sự kiện VoteCast(địa chỉ người bỏ phiếu, đề xuất uint); 

 // Phần còn lại của hợp đồng... 

 hàm vote(uint _proposal) public {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    // Phần còn lại của hợp đồng... 
 }

Trong chức năng vote được cập nhật, chúng tôi phát ra sự kiện VoteCast mỗi khi bỏ phiếu. Sự kiện ghi lại địa chỉ của cử tri và đề xuất mà họ đã bỏ phiếu.

Trong bài học này, chúng ta đã tìm hiểu về tương tác hợp đồng và ghi nhật ký sự kiện, hai khái niệm thiết yếu trong Solidity. Với kiến thức bạn thu được từ khóa học này, giờ đây bạn đã được trang bị để bắt đầu phát triển các ứng dụng phi tập trung phức tạp hơn trên Ethereum.

Phần kết luận

Chúc mừng! Bạn đã hoàn thành khóa học “Xây dựng hệ thống bỏ phiếu phi tập trung”.

Trong suốt khóa học này, bạn đã tìm hiểu các khái niệm cốt lõi đằng sau hệ thống bỏ phiếu phi tập trung và cách triển khai hệ thống này bằng cách sử dụng Solidity trên Remix IDE. Bắt đầu từ việc hiểu bỏ phiếu phi tập trung là gì và tại sao nó quan trọng, chúng tôi đã đi sâu vào mã hóa các hợp đồng thông minh của riêng mình để đăng ký cử tri, bỏ phiếu và kiểm phiếu. Chúng tôi cũng đã học cách tương tác với các hợp đồng của mình và mô phỏng toàn bộ quy trình bỏ phiếu trong Remix IDE. Cuối cùng, chúng tôi đã khám phá cách các hợp đồng tương tác với nhau và cách ghi nhật ký các sự kiện để theo dõi các hoạt động trên blockchain.

Các kỹ năng và kiến thức bạn thu được từ khóa học này không chỉ giới hạn ở việc tạo hệ thống bỏ phiếu mà còn có thể áp dụng cho các loại ứng dụng phi tập trung khác. Hãy tiếp tục thực hành, thử nghiệm và xây dựng.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 4

Tương tác hợp đồng

Trong bài học cuối cùng này, chúng ta sẽ xem xét các hợp đồng tương tác với nhau như thế nào. Chúng ta cũng sẽ tìm hiểu cách triển khai ghi nhật ký sự kiện để giám sát các hoạt động trên blockchain.

Tương tác với hợp đồng

Khái niệm đầu tiên chúng ta sẽ giải quyết là tương tác hợp đồng. Tương tác hợp đồng đề cập đến cách hợp đồng giao tiếp và chia sẻ thông tin. Trong Solidity, hợp đồng có thể gọi các chức năng của hợp đồng khác, tạo hợp đồng khác và thậm chí gửi Ether đến các hợp đồng hoặc địa chỉ khác.

Chúng tôi đã thấy sự tương tác theo hợp đồng trong hệ thống bỏ phiếu của mình. Mỗi lần bỏ phiếu, hợp đồng bỏ phiếu sẽ tương tác với chính nó để cập nhật trạng thái của người bỏ phiếu và số phiếu bầu cho đề xuất. Tuy nhiên, đối với một hệ thống phức tạp hơn, bạn có thể có các hợp đồng riêng biệt cần tương tác với nhau.

Đây là một ví dụ đơn giản về tương tác hợp đồng:

Độ rắn 
 độ rắn pragma >=0,7,0 <0,9,0; 

 hợp đồng CalledContract { 
 uint public x; 

 hàm setX(uint _x) public {
        x = _x;
    }
}

hợp đồng CallerContract { 
 hàm callSetX(địa chỉ _gọiContractAddress, uint _x) public {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

Trong ví dụ này, CallerContract tương tác với CalledContract bằng cách gọi hàm setX của nó.

Ghi nhật ký sự kiện

Bây giờ hãy chuyển sang ghi nhật ký sự kiện. Sự kiện là một cách để hợp đồng của bạn thông báo rằng điều gì đó đã xảy ra với thế giới bên ngoài. Ví dụ: trong hệ thống bỏ phiếu của chúng tôi, chúng tôi có thể muốn phát ra một sự kiện mỗi khi bỏ phiếu. Đây là cách thực hiện:

Độ rắn 
 // SPDX-Mã định danh giấy phép: GPL-3.0 
 độ rắn pragma >=0.7.0 <0.9.0; 

 hợp đồng Người bỏ phiếu { 
 // Định nghĩa sự kiện 
 sự kiện VoteCast(địa chỉ người bỏ phiếu, đề xuất uint); 

 // Phần còn lại của hợp đồng... 

 hàm vote(uint _proposal) public {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    // Phần còn lại của hợp đồng... 
 }

Trong chức năng vote được cập nhật, chúng tôi phát ra sự kiện VoteCast mỗi khi bỏ phiếu. Sự kiện ghi lại địa chỉ của cử tri và đề xuất mà họ đã bỏ phiếu.

Trong bài học này, chúng ta đã tìm hiểu về tương tác hợp đồng và ghi nhật ký sự kiện, hai khái niệm thiết yếu trong Solidity. Với kiến thức bạn thu được từ khóa học này, giờ đây bạn đã được trang bị để bắt đầu phát triển các ứng dụng phi tập trung phức tạp hơn trên Ethereum.

Phần kết luận

Chúc mừng! Bạn đã hoàn thành khóa học “Xây dựng hệ thống bỏ phiếu phi tập trung”.

Trong suốt khóa học này, bạn đã tìm hiểu các khái niệm cốt lõi đằng sau hệ thống bỏ phiếu phi tập trung và cách triển khai hệ thống này bằng cách sử dụng Solidity trên Remix IDE. Bắt đầu từ việc hiểu bỏ phiếu phi tập trung là gì và tại sao nó quan trọng, chúng tôi đã đi sâu vào mã hóa các hợp đồng thông minh của riêng mình để đăng ký cử tri, bỏ phiếu và kiểm phiếu. Chúng tôi cũng đã học cách tương tác với các hợp đồng của mình và mô phỏng toàn bộ quy trình bỏ phiếu trong Remix IDE. Cuối cùng, chúng tôi đã khám phá cách các hợp đồng tương tác với nhau và cách ghi nhật ký các sự kiện để theo dõi các hoạt động trên blockchain.

Các kỹ năng và kiến thức bạn thu được từ khóa học này không chỉ giới hạn ở việc tạo hệ thống bỏ phiếu mà còn có thể áp dụng cho các loại ứng dụng phi tập trung khác. Hãy tiếp tục thực hành, thử nghiệm và xây dựng.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.