Hiểu biết về kiến thức phát triển và triển khai cho phép một người mới bắt đầu trở thành một BUIDL.
Nếu bạn không thể triển khai hợp đồng, bạn có thể không đủ điều kiện làm BUIDL.
Mọi người yêu thích Airdrop đều tham gia vào chuỗi và ứng dụng dưới dạng người dùng, nhưng từ quan điểm của chuỗi, người dùng có một số hạn chế nhất định. Trong số đó, các nhà phát triển ứng dụng giữ giá trị cao nhất đối với chuỗi.
Nhà phát triển ứng dụng tạo ra các dApp thu hút người dùng, người tạo ra gas trong quá trình sử dụng. Nhà phát triển triển khai hợp đồng trên blockchain, thu hút người dùng thực hiện các hoạt động trên chuỗi, không ngừng tăng giá trị của blockchain.
Do đó, có khả năng phát triển hoặc thậm chí chỉ cần kiến thức phát triển cơ bản cũng là một con đường tốt hơn để tăng cơ hội nhận airdrop hoặc, chính xác hơn, trở thành một người xây dựng thực sự trên blockchain.
Trong bài viết này, chúng tôi sẽ chi tiết kiến thức cơ bản về phát triển cần thiết cho người dùng thích trải nghiệm các hoạt động chuỗi. Nó sẽ không bao gồm xây dựng giao diện người dùng, môi trường phát triển hoặc các hoạt động SDK. Bài viết này nhằm đưa người dùng thông thường vào giai đoạn lý thuyết của trải nghiệm phát triển cấp độ người mới bắt đầu. Những người quan tâm đến giai đoạn thực tế có thể tiếp tục nghiên cứu kiến thức sâu hơn.
Trong bài viết trước của chúng tôi “Làm thế nào để Kỹ thuật Phân tích Các Dự án Mới và Cũ Toàn cầu?”, chúng tôi đã giải thích những đặc điểm xác định của blockchain. Blockchain không chỉ là một cuốn sổ cái; thiết kế của tất cả các blockchain công cộng hiện nay đều dành cho sự phát triển của các ứng dụng bề mặt.
Do đó, việc hiểu biết về phát triển blockchain là nhất quán với việc phát triển ứng dụng internet truyền thống, với sự hiểu biết về kiến trúc dịch chuyển sang backend trở thành blockchain, và trạng thái dữ liệu trong cơ sở dữ liệu trở thành trạng thái dữ liệu trên blockchain.
Đối với việc phát triển ứng dụng internet, ban đầu người ta cần phải mua dịch vụ đám mây (hoặc trước đó, các thiết bị tính toán kết nối mạng cũng có thể phục vụ như máy chủ để triển khai). Giả sử chúng ta mua hai máy chủ, một để triển khai phần giao diện và một để triển khai phần backend, và mua một trang web. Chúng tôi cấu hình trang web với phần phát triển front-end, sau đó phát triển backend để quản lý dữ liệu. Dữ liệu tương tác của trang web nhập vào backend trong quá trình sử dụng. Khi người dùng front-end cần dữ liệu phản hồi cho các hoạt động, nó được thực thi sau khi truy cập trạng thái dữ liệu trong cơ sở dữ liệu.
Với quy trình phức tạp như vậy, người dùng hiếm khi cảm nhận được phần backend trong các ứng dụng truyền thống, nhưng trên blockchain, sự hiện diện của cả phần front-end và back-end đều rõ ràng.
Phía sau của một dApp biến đổi máy chủ và cơ sở dữ liệu được sử dụng trong quá trình phát triển ứng dụng internet thành blockchain và trạng thái tổng thể của nó trên blockchain. Trong quá trình phát triển, phần nền tảng blockchain tiếp tục một giao diện gọi thủ tục từ xa (RPC), mà tất cả các nhà phát triển và ứng dụng đều sử dụng để tương tác với blockchain. Điều này giải thích tại sao, khi sử dụng MetaMask để trải nghiệm các dApp khác nhau, cần phải thêm các mạng khác nhau trong dApp, với URL đại diện cho điểm nhập cho RPC.
Trong các thiết kế mạng khác, có một phương pháp để nâng cấp thêm dApps. Nếu một blockchain phụ thuộc vào một RPC duy nhất, sự tương tác nặng có thể dẫn đến tắc nghẽn ngay trước khi giao dịch được gửi đến chuỗi. Ứng dụng có thể thiết lập RPC riêng có lợi thế đáng kể, tuy nhiên, trong lĩnh vực blockchain công cộng hiện tại, đặc biệt là với thiết kế Proof of Stake (PoS), không có nhiều dApps hoạt động theo cách này. Điều này giúp chúng ta hiểu rằng tương tác với blockchain cho việc phát triển yêu cầu một ví tiền và một cổng RPC.
Sau khi có quyền truy cập, bước tiếp theo là cách thực hiện các thao tác trên blockchain. Ethereum, được biết đến với cái tên “máy tính thế giới,” có thể chạy các loại hợp đồng thông minh khác nhau mà tự động thực thi. Quá trình này liên quan đến triển khai các hợp đồng lên mạng để được thực thi bởi Máy ảo Ethereum (EVM). Thuật ngữ “Máy ảo” (VM) rất quan trọng trong ngành dịch vụ đám mây, và các thiết bị tính toán trong mạng Ethereum có thể được xem như một khu vực tính toán và lưu trữ lớn, tức là một máy ảo, cho phép các hợp đồng thông minh chạy và thực thi các lệnh nhiệm vụ.
Do đó, hợp đồng thông minh trở thành yếu tố chính, và đối với các nhà phát triển, khía cạnh quan trọng nhất là hợp đồng thông minh. Việc triển khai hợp đồng thông minh bao gồm ba bước: viết mã, biên dịch mã và triển khai mã. Sau khi triển khai, các chức năng của hợp đồng có thể được gọi trực tiếp.
Ethereum có các công cụ chuẩn hóa đã được đơn giản hóa đáng kể. Sau khi hiểu rõ toàn bộ quy trình, người ta có thể thử nghiệm bằng cách xem xét cẩn thận những công cụ này. Remix, Hardhat và OpenZeppelin đại diện cho một số công cụ đơn giản và mở nhất hiện có, ngoài ra còn có các công cụ như Thirdweb hỗ trợ phát triển và đơn giản hóa một số quy trình.
Bắt đầu với Testnets của Các Mạng Khác Nhau
Chúng tôi gần đây đã khám phá các mạng thử nghiệm của các chuỗi khối công cộng như Berachain, Taiko và Shardeum. Sự khám phá này cung cấp cái nhìn sâu hơn về kiến thức phát triển. Là một người dùng thông thường vận hành MetaMask cho các tương tác mạng, bước đầu tiên là thêm một mạng thử nghiệm vào MetaMask và có được các token thử nghiệm, số lượng token này hạn chế và có thể được yêu cầu từ vòi sen thử nghiệm như đã được mô tả trong tài liệu chính thức của ba dự án này. Các token thử nghiệm cho các chuỗi này lần lượt là Bera, ETH và SHM.
Berachain và Shardeum là các chuỗi khối L1 sử dụng mã thông báo bản địa của họ, trong khi Taiko là một L2 nhằm mở rộng Ethereum, do đó nó sử dụng ETH. Vì Ethereum có các testnet công cộng của riêng mình, Taiko cũng sử dụng testnet của Ethereum cho một số bài kiểm tra chức năng, yêu cầu người dùng phải phân biệt rõ ràng chuỗi họ cuối cùng đang tương tác với.
Sau khi nhận được token thử nghiệm từ vòi của ba chuỗi, bước tiếp theo liên quan đến việc sử dụng các công cụ phát triển để triển khai hợp đồng lên blockchain. Điều này bao gồm ba bước: tìm hợp đồng, sửa đổi nó và hoàn thành việc triển khai hợp đồng trong IDE.
Sau khi xem xét, tất cả ba dự án đều hỗ trợ triển khai bằng Remix. Remix là môi trường chỉnh sửa trực tuyến rất tiện lợi, loại bỏ nhu cầu sử dụng các công cụ phức tạp hơn như SDK hoặc terminal. Tuy nhiên, quy trình đơn giản mô tả ở đây chỉ áp dụng cho việc triển khai một lần, và việc sửa đổi hợp đồng và kiểm thử các cuộc gọi của nó đòi hỏi các công cụ khác.
Trên OpenZeppelin, một số hợp đồng phát hành token phổ biến được hiển thị theo kiểu mô-đun. Bạn có thể chọn một chức năng trực tiếp từ đó và sau đó chuyển đến Remix để triển khai.
Sau đó, tôi đã thực hiện một số cài đặt cho hợp đồng phát hành token này, sử dụng tên đầy đủ của Wyz Research, viết tắt của Wyz, và chọn chức năng trước khi phát hành từ các tùy chọn, và xác định quyền sở hữu của hợp đồng. Thông qua những thao tác này, mã hợp đồng bên phải đã thêm hàm khởi tạo được hiển thị trong hộp màu đỏ đầu tiên, và các token được phát hành trước cũng có một địa chỉ trỏ đến chúng.
Tiếp theo, nhấn vào “Mở trong Remix” ở góc phải trên cùng, và chúng ta có thể bắt đầu chỉnh sửa trong giao diện Remix.
Trước khi bắt đầu chỉnh sửa trong giao diện Remix, vui lòng điều chỉnh mạng và địa chỉ ví trong MetaMask đúng cách. Sau khi nhập trang, chúng ta cần sửa địa chỉ tương ứng đóng vai trò trên, thay thế chúng bằng địa chỉ ví của tôi. Nó được hiển thị như sau:
Sau đó, nhấp vào “Tự động biên soạn” ở phía bên trái, tức là, để biên soạn tự động. Nếu nó không biên soạn tự động, bạn cần phải nhấp vào nút màu xanh ở phía bên trái. Khi dấu kiểm xanh xuất hiện ở bên trái xa, nó đã sẵn sàng. Sau đó, nhấp vào nút dưới dấu kiểm xanh ở phía bên trái để nhập trang triển khai.
Với ví được sửa đổi đúng cách, nhấp vào phần tài khoản ở góc trái trên, vị trí này đại diện cho tài khoản trả phí gas, và vị trí phía dưới đại diện cho địa chỉ triển khai. Sau khi chọn, nó được hiển thị như sau:
Nhấp vào “Triển khai”, và MetaMask sẽ hiện lên để thanh toán phí gas cho hoạt động này.
Trong quá trình triển khai hợp đồng, hợp đồng đang chờ sẽ được hiển thị ở cuối cùng của Remix.
Sau khi triển khai hợp đồng thành công, sẽ hiển thị giao dịch thành công ở phía dưới.
Sau khi hoàn tất triển khai, khi nhập vào trình duyệt để xem giao dịch thông qua nút trong ví, có thể thấy rằng chúng ta vừa hoàn thành một hành động tạo hợp đồng, và trong quá trình thực thi hợp đồng, một số lượng token nhất định đã được gửi đến một trong số chúng.
Khi nhấp vào địa chỉ để xem lại, được phát hiện rằng tôi đã đúc 10 triệu token trong địa chỉ. Tuy nhiên, có thể do trình duyệt mạng thử nghiệm, tên token không được hiển thị, điều này là một vấn đề cần được xác minh.
Việc triển khai này sử dụng Shardeum, và quy trình là giống nhau nếu triển khai trên Berachain hoặc Taiko, chỉ cần điều chỉnh mạng tương ứng trong ví. Remix, loại IDE trực tuyến này, cung cấp một cách nhập đơn giản cho các hoạt động mạng.
Tham gia vào một số hoạt động phát triển trên blockchain là cố gắng xây dựng đơn giản nhất cho người dùng không phải ứng dụng. Có thể thử phát hành một số tài sản bằng cách sử dụng hợp đồng hoặc fork mã nguồn của các ứng dụng phiên bản khác. Mỗi hợp đồng của một ứng dụng phiên bản trên blockchain tương tác thông qua một kết hợp, ví dụ, việc trao đổi mà chúng ta thấy trên Uniswap là một hợp đồng, trong khi cung cấp LP là một hợp đồng khác.
So với Dex, các hợp đồng cho các dự án DeFi, GameFi khác phức tạp hơn. Mặc dù quá trình phát triển phức tạp và kéo dài, việc hiểu rõ nguyên tắc của chúng có thể giúp xây dựng nhiều hơn trên blockchain và ứng dụng.
PS: Tiếp theo, Wyz Research cũng sẽ phân tích DeFi, GameFi và các ứng dụng khác để giới thiệu suy nghĩ thiết kế và cấu trúc của chúng cho độc giả. Hãy chờ đón.
Hiểu biết về kiến thức phát triển và triển khai cho phép một người mới bắt đầu trở thành một BUIDL.
Nếu bạn không thể triển khai hợp đồng, bạn có thể không đủ điều kiện làm BUIDL.
Mọi người yêu thích Airdrop đều tham gia vào chuỗi và ứng dụng dưới dạng người dùng, nhưng từ quan điểm của chuỗi, người dùng có một số hạn chế nhất định. Trong số đó, các nhà phát triển ứng dụng giữ giá trị cao nhất đối với chuỗi.
Nhà phát triển ứng dụng tạo ra các dApp thu hút người dùng, người tạo ra gas trong quá trình sử dụng. Nhà phát triển triển khai hợp đồng trên blockchain, thu hút người dùng thực hiện các hoạt động trên chuỗi, không ngừng tăng giá trị của blockchain.
Do đó, có khả năng phát triển hoặc thậm chí chỉ cần kiến thức phát triển cơ bản cũng là một con đường tốt hơn để tăng cơ hội nhận airdrop hoặc, chính xác hơn, trở thành một người xây dựng thực sự trên blockchain.
Trong bài viết này, chúng tôi sẽ chi tiết kiến thức cơ bản về phát triển cần thiết cho người dùng thích trải nghiệm các hoạt động chuỗi. Nó sẽ không bao gồm xây dựng giao diện người dùng, môi trường phát triển hoặc các hoạt động SDK. Bài viết này nhằm đưa người dùng thông thường vào giai đoạn lý thuyết của trải nghiệm phát triển cấp độ người mới bắt đầu. Những người quan tâm đến giai đoạn thực tế có thể tiếp tục nghiên cứu kiến thức sâu hơn.
Trong bài viết trước của chúng tôi “Làm thế nào để Kỹ thuật Phân tích Các Dự án Mới và Cũ Toàn cầu?”, chúng tôi đã giải thích những đặc điểm xác định của blockchain. Blockchain không chỉ là một cuốn sổ cái; thiết kế của tất cả các blockchain công cộng hiện nay đều dành cho sự phát triển của các ứng dụng bề mặt.
Do đó, việc hiểu biết về phát triển blockchain là nhất quán với việc phát triển ứng dụng internet truyền thống, với sự hiểu biết về kiến trúc dịch chuyển sang backend trở thành blockchain, và trạng thái dữ liệu trong cơ sở dữ liệu trở thành trạng thái dữ liệu trên blockchain.
Đối với việc phát triển ứng dụng internet, ban đầu người ta cần phải mua dịch vụ đám mây (hoặc trước đó, các thiết bị tính toán kết nối mạng cũng có thể phục vụ như máy chủ để triển khai). Giả sử chúng ta mua hai máy chủ, một để triển khai phần giao diện và một để triển khai phần backend, và mua một trang web. Chúng tôi cấu hình trang web với phần phát triển front-end, sau đó phát triển backend để quản lý dữ liệu. Dữ liệu tương tác của trang web nhập vào backend trong quá trình sử dụng. Khi người dùng front-end cần dữ liệu phản hồi cho các hoạt động, nó được thực thi sau khi truy cập trạng thái dữ liệu trong cơ sở dữ liệu.
Với quy trình phức tạp như vậy, người dùng hiếm khi cảm nhận được phần backend trong các ứng dụng truyền thống, nhưng trên blockchain, sự hiện diện của cả phần front-end và back-end đều rõ ràng.
Phía sau của một dApp biến đổi máy chủ và cơ sở dữ liệu được sử dụng trong quá trình phát triển ứng dụng internet thành blockchain và trạng thái tổng thể của nó trên blockchain. Trong quá trình phát triển, phần nền tảng blockchain tiếp tục một giao diện gọi thủ tục từ xa (RPC), mà tất cả các nhà phát triển và ứng dụng đều sử dụng để tương tác với blockchain. Điều này giải thích tại sao, khi sử dụng MetaMask để trải nghiệm các dApp khác nhau, cần phải thêm các mạng khác nhau trong dApp, với URL đại diện cho điểm nhập cho RPC.
Trong các thiết kế mạng khác, có một phương pháp để nâng cấp thêm dApps. Nếu một blockchain phụ thuộc vào một RPC duy nhất, sự tương tác nặng có thể dẫn đến tắc nghẽn ngay trước khi giao dịch được gửi đến chuỗi. Ứng dụng có thể thiết lập RPC riêng có lợi thế đáng kể, tuy nhiên, trong lĩnh vực blockchain công cộng hiện tại, đặc biệt là với thiết kế Proof of Stake (PoS), không có nhiều dApps hoạt động theo cách này. Điều này giúp chúng ta hiểu rằng tương tác với blockchain cho việc phát triển yêu cầu một ví tiền và một cổng RPC.
Sau khi có quyền truy cập, bước tiếp theo là cách thực hiện các thao tác trên blockchain. Ethereum, được biết đến với cái tên “máy tính thế giới,” có thể chạy các loại hợp đồng thông minh khác nhau mà tự động thực thi. Quá trình này liên quan đến triển khai các hợp đồng lên mạng để được thực thi bởi Máy ảo Ethereum (EVM). Thuật ngữ “Máy ảo” (VM) rất quan trọng trong ngành dịch vụ đám mây, và các thiết bị tính toán trong mạng Ethereum có thể được xem như một khu vực tính toán và lưu trữ lớn, tức là một máy ảo, cho phép các hợp đồng thông minh chạy và thực thi các lệnh nhiệm vụ.
Do đó, hợp đồng thông minh trở thành yếu tố chính, và đối với các nhà phát triển, khía cạnh quan trọng nhất là hợp đồng thông minh. Việc triển khai hợp đồng thông minh bao gồm ba bước: viết mã, biên dịch mã và triển khai mã. Sau khi triển khai, các chức năng của hợp đồng có thể được gọi trực tiếp.
Ethereum có các công cụ chuẩn hóa đã được đơn giản hóa đáng kể. Sau khi hiểu rõ toàn bộ quy trình, người ta có thể thử nghiệm bằng cách xem xét cẩn thận những công cụ này. Remix, Hardhat và OpenZeppelin đại diện cho một số công cụ đơn giản và mở nhất hiện có, ngoài ra còn có các công cụ như Thirdweb hỗ trợ phát triển và đơn giản hóa một số quy trình.
Bắt đầu với Testnets của Các Mạng Khác Nhau
Chúng tôi gần đây đã khám phá các mạng thử nghiệm của các chuỗi khối công cộng như Berachain, Taiko và Shardeum. Sự khám phá này cung cấp cái nhìn sâu hơn về kiến thức phát triển. Là một người dùng thông thường vận hành MetaMask cho các tương tác mạng, bước đầu tiên là thêm một mạng thử nghiệm vào MetaMask và có được các token thử nghiệm, số lượng token này hạn chế và có thể được yêu cầu từ vòi sen thử nghiệm như đã được mô tả trong tài liệu chính thức của ba dự án này. Các token thử nghiệm cho các chuỗi này lần lượt là Bera, ETH và SHM.
Berachain và Shardeum là các chuỗi khối L1 sử dụng mã thông báo bản địa của họ, trong khi Taiko là một L2 nhằm mở rộng Ethereum, do đó nó sử dụng ETH. Vì Ethereum có các testnet công cộng của riêng mình, Taiko cũng sử dụng testnet của Ethereum cho một số bài kiểm tra chức năng, yêu cầu người dùng phải phân biệt rõ ràng chuỗi họ cuối cùng đang tương tác với.
Sau khi nhận được token thử nghiệm từ vòi của ba chuỗi, bước tiếp theo liên quan đến việc sử dụng các công cụ phát triển để triển khai hợp đồng lên blockchain. Điều này bao gồm ba bước: tìm hợp đồng, sửa đổi nó và hoàn thành việc triển khai hợp đồng trong IDE.
Sau khi xem xét, tất cả ba dự án đều hỗ trợ triển khai bằng Remix. Remix là môi trường chỉnh sửa trực tuyến rất tiện lợi, loại bỏ nhu cầu sử dụng các công cụ phức tạp hơn như SDK hoặc terminal. Tuy nhiên, quy trình đơn giản mô tả ở đây chỉ áp dụng cho việc triển khai một lần, và việc sửa đổi hợp đồng và kiểm thử các cuộc gọi của nó đòi hỏi các công cụ khác.
Trên OpenZeppelin, một số hợp đồng phát hành token phổ biến được hiển thị theo kiểu mô-đun. Bạn có thể chọn một chức năng trực tiếp từ đó và sau đó chuyển đến Remix để triển khai.
Sau đó, tôi đã thực hiện một số cài đặt cho hợp đồng phát hành token này, sử dụng tên đầy đủ của Wyz Research, viết tắt của Wyz, và chọn chức năng trước khi phát hành từ các tùy chọn, và xác định quyền sở hữu của hợp đồng. Thông qua những thao tác này, mã hợp đồng bên phải đã thêm hàm khởi tạo được hiển thị trong hộp màu đỏ đầu tiên, và các token được phát hành trước cũng có một địa chỉ trỏ đến chúng.
Tiếp theo, nhấn vào “Mở trong Remix” ở góc phải trên cùng, và chúng ta có thể bắt đầu chỉnh sửa trong giao diện Remix.
Trước khi bắt đầu chỉnh sửa trong giao diện Remix, vui lòng điều chỉnh mạng và địa chỉ ví trong MetaMask đúng cách. Sau khi nhập trang, chúng ta cần sửa địa chỉ tương ứng đóng vai trò trên, thay thế chúng bằng địa chỉ ví của tôi. Nó được hiển thị như sau:
Sau đó, nhấp vào “Tự động biên soạn” ở phía bên trái, tức là, để biên soạn tự động. Nếu nó không biên soạn tự động, bạn cần phải nhấp vào nút màu xanh ở phía bên trái. Khi dấu kiểm xanh xuất hiện ở bên trái xa, nó đã sẵn sàng. Sau đó, nhấp vào nút dưới dấu kiểm xanh ở phía bên trái để nhập trang triển khai.
Với ví được sửa đổi đúng cách, nhấp vào phần tài khoản ở góc trái trên, vị trí này đại diện cho tài khoản trả phí gas, và vị trí phía dưới đại diện cho địa chỉ triển khai. Sau khi chọn, nó được hiển thị như sau:
Nhấp vào “Triển khai”, và MetaMask sẽ hiện lên để thanh toán phí gas cho hoạt động này.
Trong quá trình triển khai hợp đồng, hợp đồng đang chờ sẽ được hiển thị ở cuối cùng của Remix.
Sau khi triển khai hợp đồng thành công, sẽ hiển thị giao dịch thành công ở phía dưới.
Sau khi hoàn tất triển khai, khi nhập vào trình duyệt để xem giao dịch thông qua nút trong ví, có thể thấy rằng chúng ta vừa hoàn thành một hành động tạo hợp đồng, và trong quá trình thực thi hợp đồng, một số lượng token nhất định đã được gửi đến một trong số chúng.
Khi nhấp vào địa chỉ để xem lại, được phát hiện rằng tôi đã đúc 10 triệu token trong địa chỉ. Tuy nhiên, có thể do trình duyệt mạng thử nghiệm, tên token không được hiển thị, điều này là một vấn đề cần được xác minh.
Việc triển khai này sử dụng Shardeum, và quy trình là giống nhau nếu triển khai trên Berachain hoặc Taiko, chỉ cần điều chỉnh mạng tương ứng trong ví. Remix, loại IDE trực tuyến này, cung cấp một cách nhập đơn giản cho các hoạt động mạng.
Tham gia vào một số hoạt động phát triển trên blockchain là cố gắng xây dựng đơn giản nhất cho người dùng không phải ứng dụng. Có thể thử phát hành một số tài sản bằng cách sử dụng hợp đồng hoặc fork mã nguồn của các ứng dụng phiên bản khác. Mỗi hợp đồng của một ứng dụng phiên bản trên blockchain tương tác thông qua một kết hợp, ví dụ, việc trao đổi mà chúng ta thấy trên Uniswap là một hợp đồng, trong khi cung cấp LP là một hợp đồng khác.
So với Dex, các hợp đồng cho các dự án DeFi, GameFi khác phức tạp hơn. Mặc dù quá trình phát triển phức tạp và kéo dài, việc hiểu rõ nguyên tắc của chúng có thể giúp xây dựng nhiều hơn trên blockchain và ứng dụng.
PS: Tiếp theo, Wyz Research cũng sẽ phân tích DeFi, GameFi và các ứng dụng khác để giới thiệu suy nghĩ thiết kế và cấu trúc của chúng cho độc giả. Hãy chờ đón.