Skip to main content

Plutus Pioneer #4 - Tài liệu

Đây là phần tóm tắt nội dung các video giúp học viên có thể tổng hợp và nắm bắt kiến thức từng bài giảng nhanh hơn.

Tuần 1


040101 - Welcome and Introduction

PPP 040101 - Chào mừng và Giới thiệu

Chào mừng bạn đến với phiên bản thứ tư của chương trình Tiên phong Plutus! Tên tôi là Las Ponyas và tôi là Giám đốc Giáo dục tại IOG, công ty chịu trách nhiệm xây dựng Cardano. Cùng với đội ngũ giáo dục của tôi, chúng tôi sẽ là người hướng dẫn của bạn cho khóa học này. Trong chương trình này, chúng tôi sẽ cung cấp cho bạn kiến ​​thức và kỹ năng cần thiết để bắt đầu viết hợp đồng thông minh bằng cách sử dụng Plutus, ngôn ngữ hợp đồng thông minh gốc của blockchain Cardano.

Cấu trúc khóa học

Khóa học sẽ bao gồm các bài giảng hàng tuần và các phiên hỏi đáp. Các bài giảng sẽ được phát hành vào thứ Năm hàng tuần, trong khi các phiên hỏi đáp sẽ diễn ra vào thứ Ba. Chúng tôi hiểu rằng những người tham gia ở khắp nơi trên thế giới, vì vậy chúng tôi sẽ ghi lại tất cả các phiên cho những người không thể tham dự do chênh lệch múi giờ. Bạn cũng sẽ có tùy chọn để đặt câu hỏi trước. Mục tiêu của chúng tôi là trả lời càng nhiều câu hỏi càng tốt, cả câu hỏi được hỏi trước và câu hỏi trực tiếp trong các phiên.

Tài nguyên có sẵn

Để hỗ trợ hành trình học tập của bạn, chúng tôi đã cung cấp một số tài nguyên. Kho lưu trữ GitHub sẽ chứa tất cả các ví dụ mã được sử dụng trong các bài giảng và cho bài tập về nhà. Bạn cũng sẽ tìm thấy các liên kết và sách hướng dẫn để khám phá sâu hơn các khái niệm được đề cập trong bài giảng. Ngoài ra, chúng tôi đã thiết lập kênh Discord nơi bạn có thể đặt câu hỏi và tham gia thảo luận với những người tham gia khác. Cộng đồng những người tiên phong từ các lần lặp trước đã hỗ trợ và hợp tác, thường xuyên giúp đỡ lẫn nhau. Chúng tôi khuyến khích bạn tham gia tích cực và tận dụng tối đa môi trường học tập này.

Thiết lập Môi trường và Công cụ Plutus

Trong các lần lặp trước, việc thiết lập môi trường để biên dịch mã Plutus đã đặt ra thách thức cho nhiều người tiên phong. Để giải quyết vấn đề này, chúng tôi đã thực hiện những cải tiến đáng kể. Hiện tại, chúng tôi cung cấp hai tùy chọn để thiết lập môi trường: môi trường trình duyệt bằng một cú nhấp chuột và vùng chứa Dev cho Visual Studio Code. Môi trường trình duyệt, được phát triển với sự cộng tác của TX Pipes, cung cấp trải nghiệm hợp lý với tất cả các công cụ cần thiết có thể truy cập trong trình duyệt của bạn. Ngoài ra, tùy chọn Dev container cho phép bạn làm việc cục bộ nếu muốn. Chúng tôi đã đơn giản hóa quá trình thiết lập để đảm bảo bắt đầu khóa học suôn sẻ hơn.

Trình diễn và chủ đề được đề cập

Trong khóa học này, chúng tôi sẽ đề cập đến các chủ đề khác nhau liên quan đến Plutus và phát triển hợp đồng thông minh trên Cardano. Sau phần giới thiệu, đồng nghiệp của tôi Robertino sẽ hướng dẫn bạn quy trình thiết lập môi trường. Sau đó, Tomas sẽ trình bày một phần trình diễn để giới thiệu các khả năng của Plutus sau khi bạn đã nắm vững các khái niệm. Chúng tôi sẽ cung cấp thông tin cập nhật về các nguyên tắc cơ bản của mật mã, chẳng hạn như hàm hash và chữ ký số. Ngoài ra, chúng tôi sẽ giải thích mô hình Đầu ra giao dịch chưa chi tiêu mở rộng (EUTXO), là nền tảng cho kiến ​​trúc blockchain của Cardano.

Các bài giảng tiếp theo sẽ đi sâu vào mã on-chain và off-chain, trình xác thực, đúc tài sản gốc, Token không thể thay thế (NFT), thử nghiệm hợp đồng Plutus và triển khai chúng vào blockchain Cardano hoặc mạng thử nghiệm. Mặc dù chúng tôi có kế hoạch cho các bài giảng còn lại, nhưng chúng tôi vẫn linh hoạt và sẵn sàng kết hợp những thay đổi tự phát dựa trên câu hỏi và mối quan tâm của người tham gia. Chúng tôi cố gắng giữ cho khóa học có tính tương tác và đáp ứng nhu cầu của bạn.

Thách thức và Cơ hội trong Học tập Plutus

Học Plutus đưa ra một số thách thức do tính chất tương đối mới và phát triển của nó. Trong các lần lặp trước, việc triển khai các hợp đồng rất cồng kềnh do công cụ hạn chế. Tuy nhiên, tình hình đã được cải thiện đáng kể, với các công cụ của bên thứ ba và nhiều dự án hơn sử dụng Plutus trên Cardano. Mặc dù tài nguyên học tập dành cho Plutus không phong phú bằng tài nguyên dành cho các ngôn ngữ đã được thiết lập như Ethereum's Solidity, nhưng chúng tôi khuyến khích người tham gia đặt câu hỏi trên Cardano Stack Exchange để đóng góp vào cơ sở kiến ​​thức cho những người học trong tương lai.

Các phương pháp hay nhất cho Plutus vẫn đang nổi lên, do nó được giới thiệu tương đối gần đây. Mặc dù một số kỹ thuật đã cho thấy nhiều hứa hẹn, nhưng không có bộ sưu tập chắc chắn nào về các phương pháp hay nhất đã được thiết lập. Mô hình EUTXO được sử dụng trong Cardano

Xem video

040102 - Setting up Our Development Environment

PPP 040102 - Thiết lập môi trường phát triển của chúng ta

Video giới thiệu cách cài đặt môi trường Plutus:

  1. Hướng dẫn cài đặt với Docker

  2. Hướng dẫn cài đặt với Demeter

Xem video

040103 - Kuber Marketplace Demo

PPP 040103 - Kuber Marketplace Demo

Bài giảng sau đây cung cấp hướng dẫn chi tiết về Kuber Marketplace Demo, một ứng dụng phi tập trung (DApp) đơn giản do nhóm Goguen tại IO xây dựng. Thomas, một nhà giáo dục tại IO, trình bày cách xây dựng và cân bằng các giao dịch bằng Kuber, một công cụ mạnh mẽ do nhóm Goguen phát triển. Bản trình diễn giới thiệu thị trường Cardano như một ứng dụng ví dụ và khám phá quy trình triển khai, các thành phần kiến ​​trúc, cấu hình và luồng giao dịch. Bằng cách làm theo hướng dẫn này, người đọc sẽ có được kiến ​​thức thực tế để xây dựng DApps của riêng chúng bằng Kuber.

Phần 1: Giới thiệu về Kuber và Thị trường Cardano Bài giảng bắt đầu bằng việc giới thiệu Kuber như một công cụ được phát triển bởi nhóm Goguen để dễ dàng xây dựng và cân bằng các giao dịch. Thị trường Cardano được trình bày dưới dạng một ứng dụng ví dụ và kho lưu trữ GitHub của nó được chia sẻ để tham khảo. Các tùy chọn và kiến ​​trúc triển khai của thị trường được thảo luận ngắn gọn, nhấn mạnh đến giao tiếp của giao diện người dùng với Kuber, các node Canal và mạng Cardano. Để đơn giản hóa quá trình triển khai, hướng dẫn tận dụng Demeter, một nền tảng để quản lý không gian làm việc phi tập trung.

Phần 2: Thiết lập không gian làm việc phát triển Trong phần này, Bài giảng hướng dẫn người đọc quy trình thiết lập không gian làm việc mới bằng Demeter. Các bước bao gồm tạo không gian làm việc, sao chép kho lưu trữ thị trường, chọn ngăn mã TypeScript, chọn kích thước không gian làm việc và chọn tham gia mạng tiền sản xuất. Ngoài ra, các tiện ích mở rộng cần thiết, chẳng hạn như API Kuber, được thêm vào để hỗ trợ giao tiếp với Mạng Cardano. Hướng dẫn minh họa cách kích hoạt phiên bản sản xuất Kuber và hiển thị điểm cuối Kuber, cung cấp liên kết DNS để sử dụng trong tương lai.

Phần 3: Định cấu hình Front-End Phần này giải thích cách định cấu hình giao diện người dùng của thị trường Cardano trong không gian làm việc. Hướng dẫn làm nổi bật tệp cấu hình chứa các tham số cần thiết như URL API Kuber và giao thức (HTTPS). Bài giảng hướng dẫn người đọc quy trình lấy và chèn khóa API của họ, đồng thời nhấn mạnh rằng khóa được chia sẻ chỉ nhằm mục đích trình diễn. Các thay đổi cấu hình bổ sung liên quan đến việc thiết lập môi trường cho mạng tiền sản xuất. Cuối cùng, các lệnh đầu cuối để điều hướng đến thư mục giao diện người dùng, cài đặt các phụ thuộc bằng cách sử dụng npm và khởi động máy chủ web giao diện người dùng được cung cấp.

Phần 4: Tiếp cận Thị trường Sau khi định cấu hình giao diện người dùng, người đọc được hướng dẫn cách truy cập thị trường trong không gian làm việc. Mặc dù ứng dụng chạy trên localhost:3000, hướng dẫn giải thích cách Demeter hạn chế truy cập trực tiếp từ trình duyệt web. Để giải quyết vấn đề này, người đọc tìm hiểu cách hiển thị các cổng thông qua cài đặt không gian làm việc của Demeter, cho phép truy cập vào máy chủ web ngoại vi. Sau khi các cổng được hiển thị, người đọc sẽ được cung cấp một liên kết để truy cập thị trường thông qua cổng được hiển thị.

Phần 5: Khám phá Thị trường và Kết nối các Ví Phần này tập trung khám phá các tính năng của thị trường Cardano. Người đọc được giới thiệu giao diện người dùng của thị trường, nơi hiển thị các token có sẵn để bán. Hướng dẫn nêu bật hai node dẫn đến slot hiện tại của thị trường và giao diện kết nối ví. Quá trình kết nối ví, cụ thể là Nami, được minh họa, cho thấy cách người dùng có thể xem số dư của chúng trên thị trường.

Phần 6: Đúc một NFT Trước khi người dùng có thể niêm yết các mặt hàng để bán, trước tiên chúng phải đúc một NFT (token không thể thay thế). Hướng dẫn giải thích quá trình đúc một NFT trong thị trường. Người đọc được hiển thị giao diện đúc, nơi chúng có thể nhập tên của NFT, chỉ định vai trò của chúng là nghệ sĩ và cung cấp liên kết IPFS tới hình ảnh được liên kết. Quá trình đúc liên quan đến việc ký một giao dịch bằng ví Nami. Hướng dẫn làm nổi bật đường dẫn của giao dịch, minh họa cách Kuber tạo và chuyển tiếp giao dịch đến mạng Cardano thông qua node Grenada. Độc giả được khuyến khích kiểm tra ví Nami của mình để xác nhận việc xử lý thành công giao dịch đúc.

Phần 7: Niêm yết một NFT để bán Sau khi đúc một NFT, người dùng có thể tiến hành niêm yết nó để bán trên thị trường. Hướng dẫn giải thích quy trình niêm yết NFT bằng ví Nami. Người dùng được hướng dẫn cách làm mới thị trường để xem NFT mới đúc của họ. Bài giảng tiếp tục bằng cách trình bày quá trình kết nối ví EthernOr, vốn không có NFT hiện có nhưng quan tâm đến việc mua Plutus NFT. Bằng cách làm mới thị trường, người đọc có thể xác minh rằng Plutus NFT có sẵn để mua.

Phần 8: Mua NFT Trong phần này, hướng dẫn sẽ hướng dẫn người đọc quy trình mua NFT từ thị trường bằng cách sử dụng ví EthernOr. Các bước liên quan đến việc kết nối ví EthernOr với thị trường, xem xét chi tiết giao dịch và ký giao dịch để hoàn tất giao dịch mua. Bài giảng nhấn mạnh sự tích hợp liền mạch giữa các ví khác nhau, làm nổi bật quá trình giao dịch thành công. Người đọc được khuyến khích kiểm tra ví của chúng để xác nhận những thay đổi về số dư và quyền sở hữu NFT đã mua.

Phần kết luận: Hướng dẫn kết thúc bằng cách tóm tắt các điểm chính được đề cập trong Bản trình diễn Kuber Marketplace. Nó nhấn mạnh bản chất thực tế của phần trình diễn, trao quyền cho người đọc xây dựng DApp của riêng chúng bằng Kuber sau khi chúng hoàn thành khóa học. Bài giảng bày tỏ hy vọng rằng độc giả thích phần hướng dẫn này và khuyến khích chúng khám phá khả năng của các ứng dụng phi tập trung trên nền tảng Cardano.

Xem video

040104 - Hashing & Digital Signatures

PPP 040104 - Hash & Chữ ký số

Mật mã đóng một vai trò quan trọng trong các lĩnh vực khác nhau, bao gồm cả thế giới của các loại tiền kỹ thuật số như Plutus và Cardano. Mặc dù một người không cần phải là chuyên gia về mật mã để làm việc với các nền tảng này, nhưng điều cần thiết là phải có hiểu biết cơ bản về các khái niệm mật mã nhất định. Hai khái niệm cơ bản có tầm quan trọng đáng kể là hash và chữ ký số. Trong Bài giảng này, chúng ta sẽ đi sâu vào các khái niệm về hash và chữ ký số, khám phá Hàm và vai trò quan trọng của chúng trong việc đảm bảo an ninh trong các hệ thống như Cardano.

Hash: Nhìn kỹ hơn

Hash là một quá trình mã hóa lấy một chuỗi byte Đầu vào, thường được biểu thị dưới dạng văn bản thập lục phân và tạo ra một chuỗi byte Đầu ra. Chuỗi byte Đầu ra có độ dài cố định và được tạo bằng thuật toán hash như SHA-256. Độ dài của Đầu ra không đổi, bất kể độ dài của Đầu vào. Ví dụ: thuật toán SHA-256 tạo ra Đầu ra 32 byte cho bất kỳ Đầu vào nào. Thuộc tính này cho phép tính nhất quán và cho phép so sánh hiệu quả và xác minh tính toàn vẹn của dữ liệu.

Một trong những khía cạnh hấp dẫn của hash là tính không thể đoán trước của nó. Ngay cả một thay đổi nhỏ trong chuỗi Đầu vào cũng dẫn đến hàm hash Đầu ra hoàn toàn khác. Không giống như các mối quan hệ tuyến tính, trong đó một thay đổi nhỏ tạo ra sự khác biệt tương ứng trong Đầu ra, hàm hash thể hiện mối quan hệ phi tuyến tính. Thuộc tính này khiến cho việc tìm một Đầu vào tạo ra hàm hash với các thuộc tính mong muốn cụ thể trở nên vô cùng khó khăn, chẳng hạn như một số số 0 nhất định ở đầu hàm hash.

Hash thường được sử dụng trong các blockchain bằng chứng công việc, nơi những người tham gia cố gắng giải các câu đố hash bằng cách tìm các Đầu vào có thuộc tính hash cụ thể. Chẳng hạn, chúng có thể nhắm đến việc tìm một Đầu vào bắt đầu bằng một số số không nhất định. Tuy nhiên, do bản chất của các thuật toán hash, việc tìm kiếm các Đầu vào như vậy chủ yếu là kết quả của quá trình thử và sai hoặc các nỗ lực mạnh mẽ.

Ngoài ra, số lượng lớn các văn bản Đầu vào có thể có và số lượng cố định các giá trị hash có thể tạo ra vô số văn bản Đầu vào tiềm năng tạo ra cùng một hàm hash. Tuy nhiên, trên thực tế, việc tìm hai văn bản Đầu vào có cùng giá trị hash, được gọi là xung đột hash, được coi là không thể trên thực tế, đặc biệt là với các thuật toán như SHA-256.

Chữ ký số: Đảm bảo tính xác thực

Chữ ký điện tử phục vụ như một phương tiện ký điện tử tài liệu hoặc chuỗi byte. Tương tự như hash, chữ ký điện tử dựa trên các thuật toán mã hóa cho Hàm của chúng. Để minh họa khái niệm này, chúng ta hãy xem xét quá trình ký điện tử một tin nhắn.

Để tạo chữ ký điện tử, cần có một cặp khóa bao gồm khóa riêng và khóa chung. Khóa riêng được giữ bí mật và chỉ người ký biết, trong khi khóa chung được chia sẻ công khai. Với khóa riêng, người ký có thể ký một tin nhắn nhất định, tạo ra một chữ ký duy nhất.

Về phía người nhận, việc xác minh tính xác thực của tin nhắn đã ký bao gồm một số bước. Người nhận được cung cấp thông điệp đã ký, khóa công khai của người ký và chính chữ ký đó. Bằng cách áp dụng thuật toán xác minh, người nhận có thể xác nhận rằng chữ ký khớp với khóa chung và tin nhắn, do đó đảm bảo tính toàn vẹn của tin nhắn và tính xác thực của người ký.

Một số điểm cần thiết phải được lưu ý khi xử lý chữ ký số. Đầu tiên, một chữ ký được gắn duy nhất với một thông điệp cụ thể. Sử dụng cùng một chữ ký để xác minh một thư khác sẽ dẫn đến xác minh không thành công. Thứ hai, chữ ký cũng được liên kết chặt chẽ với cặp khóa được liên kết. Cố gắng xác minh chữ ký bằng một cặp khóa khác sẽ khiến xác minh không hợp lệ. Các thuộc tính này của chữ ký điện tử đảm bảo rằng thông điệp không bị thay đổi và người ký sở hữu khóa riêng tương ứng với khóa chung được sử dụng trong quá trình xác minh.

Các ứng dụng trong Cardano và Bảo mật blockchain

Cả hàm hash và chữ ký số đều tìm thấy các ứng dụng rộng rãi trong các khía cạnh khác nhau của công nghệ blockchain, bao gồm cả Cardano. Đặc biệt, chữ ký số đóng một vai trò quan trọng trong việc bảo mật

Xem video

040105 - The EUTxO-Model

PPP 040105 - Mô hình EUTxO

Mô hình EUTxO (Mô hình Đầu ra giao dịch chưa chi tiêu mở rộng) là một khái niệm cơ bản làm nền tảng cho sự phát triển của các hợp đồng thông minh trong blockchain Cardano. Không giống như các nền tảng blockchain khác như Bitcoin và Ethereum, sử dụng các mô hình giao dịch khác nhau, mô hình EUTxO của Cardano cung cấp một cách tiếp cận độc đáo để xử lý các giao dịch và Đầu ra. Bài giảng này nhằm mục đích giải thích các khía cạnh chính của mô hình EUTxO và tầm quan trọng của nó trong việc phát triển các hợp đồng thông minh Plutus trên blockchain Cardano.

Phần 1: Giới thiệu về Mô hình UTXO

Mô hình UTXO (Đầu ra giao dịch chưa xác định) do Bitcoin giới thiệu, đóng vai trò là nền tảng cho mô hình EUTxO trong Cardano. Phần này giải thích những điều cơ bản của mô hình UTXO, làm nổi bật các đặc điểm chính của nó và nó khác với mô hình dựa trên tài khoản được sử dụng trong Ethereum như thế nào.

Phần 2: Tìm hiểu kết quả giao dịch chưa chi tiêu

Trong mô hình EUTxO, Đầu ra giao dịch chưa được chi tiêu (UTXO) đóng một vai trò quan trọng. Phần này nghiên cứu sâu hơn về khái niệm UTXO, giải thích tầm quan trọng của chúng và cách chúng liên quan đến luồng giao dịch trong blockchain. Một giao dịch ví dụ liên quan đến Alice và Bob được sử dụng để minh họa quá trình tạo và sử dụng UTXO.

Phần 3: Cấu trúc giao dịch và số dư trong Mô hình EUTxO

Các giao dịch trong mô hình EUTxO bao gồm Đầu vào và Đầu ra, mỗi Đầu ra đại diện cho các UTXO. Phần này khám phá cấu trúc của các giao dịch và cách duy trì số dư trong mô hình. Nó giải thích yêu cầu sử dụng các UTXO hoàn chỉnh làm Đầu vào và tạo Đầu ra cho người nhận và chuyển lại cho người gửi.

Mục 4: Ngoại lệ trong số dư giao dịch

Mặc dù tổng giá trị Đầu vào thường bằng tổng giá trị Đầu ra trong một giao dịch, nhưng có hai trường hợp ngoại lệ cần xem xét: phí giao dịch và token gốc. Phần này giải thích cách tính phí giao dịch trong phương trình số dư và giới thiệu khái niệm về token gốc và tác động của chúng đối với số dư giao dịch.

Phần 5: Mô hình UTXO mở rộng cho Hợp đồng thông minh

Mô hình EUTxO mở rộng mô hình UTXO cơ bản để cho phép phát triển các hợp đồng thông minh. Phần này khám phá sự tích hợp của các tập lệnh Plutus, logic tùy biến và Context bổ sung trong mô hình mở rộng. Nó nêu bật những ưu điểm của mô hình EUTxO so với mô hình dựa trên tài khoản được sử dụng trong Ethereum.

Phần 6: Điều kiện thực thi và xác thực tập lệnh

Trong mô hình EUTxO, các tập lệnh đóng một vai trò quan trọng trong việc xác định các điều kiện theo đó một giao dịch có thể sử dụng một UTXO cụ thể. Phần này đi sâu vào việc thực thi các tập lệnh, bao gồm sự tham gia của chữ ký số, dữ liệu Redeemer và thông tin theo Context có sẵn cho các tập lệnh trong quá trình xác thực.

Phần 7: So sánh Script Context trong Bitcoin, Ethereum và Cardano

Phần này so sánh các Script Contexts có sẵn trong Bitcoin, Ethereum và Cardano. Nó thảo luận về cách tập lệnh của Bitcoin có Context hạn chế, tập lệnh của Ethereum có thể truy cập trạng thái hoàn chỉnh của blockchain và tập lệnh Plutus của Cardano có thể truy cập thông tin liên quan từ giao dịch chi tiêu.

Phần 8: Ưu điểm của Mô hình UTXO mở rộng ở Cardano

Mô hình UTXO mở rộng trong Cardano cung cấp một số lợi thế so với các mô hình blockchain khác. Phần này khám phá những lợi ích của mô hình mở rộng, bao gồm khả năng xác thực các giao dịch trước khi gửi, phân tích dễ dàng hơn và xác minh bảo mật của các tập lệnh Plutus và khả năng dự đoán được cải thiện so với phí khách của Ethereum.

Phần 9: Xử lý dữ liệu trong Mô hình UTXO mở rộng

Phần này tập trung vào việc xử lý dữ liệu trong mô hình UTXO mở rộng. Nó giải thích các tùy chọn bao gồm các giá trị Datum được liên kết với các tập lệnh trong giao dịch, bao gồm cả việc sử dụng hàm hash và Datums` nội tuyến. Những lợi ích và cân nhắc của từng phương pháp được thảo luận.

Xem video

040106 - Homework

PPP 040106 - Bài tập về nhà

Chào mừng đến với thế giới biến đổi của công nghệ blockchain! Trong bài giảng này, chúng ta đã đi sâu vào các khía cạnh lý thuyết về mức độ mà bạn thực hiện hoặc mô hình hóa, tạo thành nền tảng để hiểu các hệ thống blockchain. Bây giờ, đã đến lúc chúng ta xắn tay áo và bắt tay vào thực hiện một số bài tập thực tế. Bài giảng này sẽ hướng dẫn bạn làm bài tập về nhà, nhấn mạnh tầm quan trọng của việc tham gia tích cực để thực sự nắm bắt các khái niệm. . Vì vậy, hãy lao vào và làm bẩn tay của chúng ta!

Ý nghĩa của bài tập về nhà

Học tập thụ động có giá trị của nó, nhưng khi nói đến việc thành thạo một chủ đề năng động như blockchain, thì sự tham gia tích cực là chìa khóa. Bài tập về nhà là cơ hội quý giá để củng cố kiến ​​thức của bạn, thu hẹp khoảng cách giữa lý thuyết và thực hành, đồng thời củng cố kỹ năng giải quyết vấn đề của bạn. Bằng cách khuyến khích bạn khám phá nền tảng Demeter và thử nghiệm các tính năng của nó, chúng ta mong muốn nâng cao trải nghiệm học tập của bạn và chuẩn bị cho bạn những thách thức viết mã phía trước.

Bắt đầu: Thiết lập Demeter

Trước khi đi sâu vào viết mã, hãy tập trung vào việc thiết lập Demeter, nền tảng mà chúng ta sẽ sử dụng cho các bài tập của mình. Mặc dù bài giảng chủ yếu đề cập đến các khía cạnh lý thuyết, nhưng điều cần thiết là bạn phải tự làm quen với các công cụ và môi trường mà chúng ta sẽ làm việc. Mặc dù chúng ta sẽ chưa viết mã của riêng mình, nhưng để thiết lập hoạt động là bước đầu tiên rất quan trọng.

Bài tập về nhà của bạn trong tuần này là khám phá Demeter và các Hàm của nó. Hãy dành chút thời gian tìm hiểu nền tảng này, tự làm quen với các tính năng của nền tảng này và hiểu rõ hơn về cách thức hoạt động của nền tảng này. Ngoài ra, nếu muốn, bạn cũng có thể thử thiết lập cục bộ, điều này sẽ giúp bạn hiểu sâu hơn về hoạt động bên trong của hệ thống.

Khám phá Thị trường Demeter

Để làm phong phú thêm trải nghiệm học tập của bạn, chúng ta khuyến khích bạn tham gia Thị trường Demeter. Khi bạn khám phá thị trường ảo này, bạn sẽ có được những hiểu biết thực tế về các thành phần khác nhau của hệ thống blockchain. Thực hiện theo các bước sau để tối đa hóa mức độ tương tác của bạn:

  1. Tham quan Khu chợ Demeter: Dành thời gian điều hướng qua các khu vực khác nhau của khu chợ. Quan sát các hợp đồng thông minh khác nhau và Hàm của chúng. Đắm chìm trong hệ sinh thái và cảm nhận về cách các giao dịch diễn ra trong một blockchain.

  2. Thực hành: Sau khi bạn đã làm quen với thị trường, hãy thử thách bản thân thiết lập phiên bản của riêng bạn. Thực hiện theo các hướng dẫn được cung cấp và cố gắng thiết lập và vận hành thị trường. Bằng cách đó, bạn sẽ có được kinh nghiệm quý giá trong việc định cấu hình và triển khai các hợp đồng thông minh.

  3. Chơi và thử nghiệm: Sau khi thiết lập thành công thị trường, đừng ngần ngại thử nghiệm. Hãy thử các tính năng khác nhau, khám phá các tình huống giao dịch khác nhau và quan sát kết quả. Quá trình tương tác này sẽ giúp bạn hiểu sâu hơn về cơ chế blockchain và trao quyền cho bạn để giải quyết các thách thức trong thế giới thực.

Sức mạnh của học tập tích cực

Tham gia vào các bài tập về nhà một cách chủ động sẽ mang lại nhiều lợi ích. Bằng cách đắm mình trong nền tảng Demeter và thử nghiệm các Hàm của nó, bạn sẽ phát triển một nền tảng vững chắc về công nghệ blockchain. Dưới đây là một số ưu điểm của học tập tích cực:

  1. Hiểu biết thực tế: Thông qua khám phá thực tế, bạn sẽ có được kiến ​​thức thực tế bổ sung cho các khái niệm lý thuyết được thảo luận trong bài giảng. Điều này sẽ cho phép bạn hình dung ứng dụng của công nghệ blockchain trong các tình huống thực tế.

  2. Kỹ năng giải quyết vấn đề: Học tập tích cực khuyến khích bạn suy nghĩ chín chắn và phát triển kỹ năng giải quyết vấn đề. Khi gặp trở ngại trong quá trình thử nghiệm, bạn sẽ học cách khắc phục sự cố và tìm giải pháp một cách độc lập, nâng cao khả năng giải quyết các thử thách phức tạp của mình.

  3. Lưu giữ và nhớ lại: Nghiên cứu cho thấy rằng việc tích cực tham gia vào các tài liệu học tập sẽ cải thiện khả năng lưu giữ và nhớ lại. Bằng cách tích cực thử nghiệm với Demeter và thị trường, bạn sẽ củng cố hiểu biết của mình về các khái niệm blockchain, giúp bạn dễ dàng nhớ lại và áp dụng chúng trong các dự án trong tương lai.

Nhìn về phía trước: Viết mã thông minh

hợp đồng

Khi bạn đã hoàn thành bài tập về nhà và hiểu rõ về nền tảng Demeter và thị trường, bạn sẽ được chuẩn bị kỹ càng để bắt đầu mã hóa các hợp đồng thông minh của riêng mình. Bài giảng sắp tới sẽ tập trung vào các khía cạnh thực tế của việc phát triển và triển khai các hợp đồng thông minh, mang đến cho bạn cơ hội đưa ý tưởng của mình vào cuộc sống trên blockchain.

Phần kết luận

Chúc mừng bạn đã hoàn thành bài giảng này và bắt đầu hành trình học tập blockchain của mình. Bằng cách tích cực tham gia vào các bài tập về nhà, bạn đã thực hiện một bước quan trọng để nắm vững những điều phức tạp của công nghệ blockchain. Hãy nhớ rằng, nghe thụ động chỉ có thể đưa bạn đến nay; sự hiểu biết thực sự và sự thành thạo đến từ việc khám phá thực hành. . Vì vậy, hãy tìm hiểu sâu về nền tảng Demeter, khám phá thị trường và chuẩn bị tinh thần cho những thử thách viết mã thú vị đang chờ đón bạn trong bài giảng tiếp theo. Chúc bạn học tập vui vẻ và hẹn gặp lại bạn trong thế giới phát triển hợp đồng thông minh!

Xem video

Tuần 2


040201 - Low-Level, Untyped Validation Scripts

PPP 040201 - Tập lệnh xác thực cấp thấp, chưa nhập

Trong thế giới của hợp đồng thông minh, có hai thành phần thiết yếu: phần on-chain và off-chain. Phần on-chain liên quan đến xác thực, cho phép các node xác định tính hợp lệ của giao dịch và liệu chúng có thể sử dụng Đầu vào cụ thể hay không. Mặt khác, phần off-chain nằm trong ví của người dùng, nơi các giao dịch phù hợp được tạo và gửi. Nắm vững cả hai khía cạnh là rất quan trọng để viết hợp đồng thông minh hiệu quả. Bài giảng này sẽ tập trung vào phần on-chain, cụ thể là khám phá các tập lệnh xác thực Không xác định Kiểu cấp thấp trong Context của PPP 040201.

Mô hình UTXO mở rộng: Để hiểu các tập lệnh xác thực cấp thấp, hãy xem lại mô hình UTXO mở rộng. Trong mô hình này, một Kiểu địa chỉ mới được gọi là địa chỉ tập lệnh được giới thiệu, có khả năng chạy logic tùy biến. Khi một giao dịch cố gắng sử dụng UTXO cư trú tại một địa chỉ tập lệnh, node thực hiện xác thực sẽ chạy tập lệnh được liên kết. Dựa trên kết quả của tập lệnh, node sẽ quyết định xem giao dịch có hợp lệ hay không. Ngoài ra, mô hình UTXO mở rộng bao gồm Redeemer và dữ liệu, là các phần thông tin tùy biến tương ứng được liên kết với Đầu vào và Đầu ra. Ngữ cảnh được cung cấp cho tập lệnh xác thực bao gồm Datum (dữ liệu UTXO), Redeemer (Đầu vào đang được xác thực) và giao dịch đang được xác thực cùng với Đầu vào và Đầu ra của nó.

Biểu diễn các kiểu dữ liệu: Trong các triển khai thực tế như Plutus, ba phần dữ liệu này cần được biểu diễn bằng cách sử dụng Kiểu dữ liệu cụ thể, điều này có thể ảnh hưởng đến hiệu suất do tuần tự hóa và giải tuần tự hóa. Mặc dù Kiểu dữ liệu Haskell tùy chỉnh cấp cao mang lại sự thuận tiện, nhưng một số dự án trên Cardano đã chọn sử dụng trực tiếp các Kiểu dữ liệu cấp thấp vì lý do hiệu suất. Thật không may, việc truy cập tài liệu cho Kiểu Plutus và các Hàm không đơn giản như với các thư viện tiêu chuẩn của Haskell. Tài liệu dành cho thư viện Plutus được lưu trữ riêng nên khó truy cập hơn. Tuy nhiên, với mục đích của khóa học này, tài liệu dành cho các thư viện Plutus luôn sẵn có.

Hiểu về Kiểu inline Datum: Dữ liệu tích hợp Kiểu trong Plutus được thiết kế riêng cho mã Plutus on-chain. Nó đóng vai trò là đại diện cho Datum, Redeemer và Script Contexts. Để có được giá trị của Kiểu inline Datum có sẵn, các hàm chuyển đổi thường được sử dụng. Dữ liệu tích hợp Kiểu có sẵn bao gồm nhiều Constructor khác nhau, chẳng hạn như số nguyên, chuỗi byte, danh sách và Map. Tính linh hoạt này cho phép dữ liệu gần như tùy biến được biểu thị dưới dạng giá trị của Kiểu dữ liệu, phù hợp với các yêu cầu của Plutus.

Biên dịch các hàm xác thực: Để minh họa khái niệm về các tập lệnh xác thực cấp thấp, Không xác định Kiểu, hai hợp đồng thông minh đơn giản được trình bày: GiftBurn. Các hợp đồng này đóng vai trò là các ví dụ cơ bản để chứng minh các khái niệm chính. Hợp đồng quà tặng cho phép bất kỳ ai tiêu thụ sản phẩm ngay lập tức, làm cho nó có Hàm tương đương với một món quà bằng tiền. Mặt khác, hợp đồng Burn làm cho UTXO đã tiêu thụ vĩnh viễn không thể sử dụng được bằng cách tạo ra lỗi. Cả hai hợp đồng đều được triển khai dưới dạng các hàm Haskell và quá trình biên dịch của chúng thành các tập lệnh Plutus Core được thể hiện.

Tuần tự hóa và ghi Trình xác thực vào tệp: Sau khi các Hàm của trình xác thực được xác định và biên dịch thành Plutus Core, chúng có thể được đánh số thứ tự và ghi vào tệp. Bước này cho phép các trình xác thực được triển khai và sử dụng trong các hợp đồng thông minh thực tế trên blockchain Cardano. Việc tuần tự hóa liên quan đến việc chuyển đổi trình xác thực Plutus sang định dạng được tuần tự hóa, sau đó có thể được lưu vào một tệp. Quá trình này được hỗ trợ bởi các Hàm tiện ích khác nhau được cung cấp bởi các thư viện Plutus.

Phần kết luận: Các tập lệnh xác thực Không xác định Kiểu ở cấp độ thấp đóng một vai trò quan trọng trong thành phần trực tuyến của hợp đồng thông minh. Hiểu mô hình UTXO mở rộng, biểu diễn Kiểu dữ liệu và quy trình biên dịch là điều cần thiết để phát triển các hợp đồng thông minh Plutus hiệu quả.

Xem video

040202 - Using the Cardano CLI to Interact with Plutus

PPP 040202 - Sử dụng Cardano CLI để tương tác với Plutus

Cardano là một nền tảng blockchain được biết đến với khả năng hợp đồng thông minh, cho phép các nhà phát triển xây dựng các ứng dụng phi tập trung (DApps) bằng cách sử dụng Plutus, một nền tảng phát triển hợp đồng thông minh được xây dựng có mục đích. Trong Bài giảng này, chúng ta sẽ khám phá quá trình tương tác với các hợp đồng thông minh Plutus bằng Giao diện dòng lệnh Cardano (CLI).

Khía cạnh off-chain của tương tác hợp đồng thông minh liên quan đến việc gửi giao dịch và truy vấn dữ liệu liên quan đến hợp đồng thông minh. Mặc dù có nhiều công cụ thân thiện với người dùng hơn đang được phát triển, chẳng hạn như giao diện người dùng đồ họa (GUIs) và môi trường phát triển tích hợp (IDE), việc sử dụng Cardano CLI cung cấp một cách thủ công nhưng hiệu quả để tương tác với các hợp đồng Plutus. CLI khả dụng cả trên mạng chính Cardano và trong các thiết lập phát triển cục bộ.

Để bắt đầu, cần khởi động một node Cardano trong thiết lập cục bộ. Node xử lý đồng bộ hóa với mạng blockchain. Khi node đang chạy, các lệnh CLI khác nhau có thể được sử dụng để tương tác với các hợp đồng thông minh của Plutus.

Các bước chuẩn bị để tương tác với hợp đồng thông minh bao gồm tạo cặp khóa, tạo địa chỉ và kiểm tra số tiền khả dụng. Cardano CLI cung cấp các lệnh như address Keygenaddress build để tạo các cặp khóa công khai và địa chỉ tương ứng. Ngoài ra, lệnh query address có thể được sử dụng để kiểm tra số tiền có sẵn trong một địa chỉ cụ thể.

Trong giai đoạn chuẩn bị, tiền có thể được mua cho mục đích thử nghiệm bằng cách sử dụng faucet mạng thử nghiệm Cardano hoặc bằng cách chuyển tiền từ các ví khác. Sau khi hoàn tất các bước chuẩn bị cần thiết, có thể tiến hành tương tác với các hợp đồng thông minh của Plutus.

Quá trình tương tác bao gồm việc xây dựng các giao dịch, ký tên và gửi chúng lên mạng. CLI cung cấp các lệnh như BuiltinDataký hiệu giao dịch cho các mục đích này. Khi tương tác với các hợp đồng Plutus, điều quan trọng là phải đính kèm Datum (dữ liệu) bắt buộc vào giao dịch. Datum đóng vai trò là thông tin bổ sung cần thiết để thực hiện hợp đồng thông minh.

Để minh họa quy trình, chúng ta sẽ kiểm tra hai tập lệnh cụ thể: một để gửi tiền cho hợp đồng thông minh Plutus và một để thu tiền từ hợp đồng. Các tập lệnh này sử dụng các lệnh Cardano CLI đã đề cập trước đó để xây dựng, ký và gửi giao dịch.

Bằng cách làm theo các bước được nêu trong Bài giảng này, các nhà phát triển và người dùng có thể hiểu sâu hơn về cách sử dụng Cardano CLI để tương tác với các hợp đồng thông minh Plutus một cách hiệu quả.

Tương tác với các hợp đồng thông minh bằng Cardano CLI:

[Nội dung chi tiết có tại đây, cung cấp các hướng dẫn và giải thích từng bước về cách tương tác với các hợp đồng thông minh Plutus bằng Cardano CLI. Nội dung phải bao gồm các chủ đề như khởi động node Cardano, chuẩn bị cho tương tác hợp đồng, xây dựng giao dịch, đính kèm dữ liệu vào giao dịch, ký giao dịch, gửi giao dịch và xác minh kết quả bằng trình khám phá blockchain.]

Phần kết luận: Trong Bài giảng này, chúng ta đã khám phá quá trình tương tác với các hợp đồng thông minh Plutus bằng Giao diện dòng lệnh Cardano (CLI). Chúng ta đã thảo luận về tầm quan trọng của việc bắt đầu một node Cardano, chuẩn bị cho tương tác hợp đồng, xây dựng giao dịch, đính kèm dữ liệu vào giao dịch, ký giao dịch, gửi giao dịch và xác minh kết quả bằng trình khám phá blockchain.

Mặc dù việc sử dụng Cardano CLI để tương tác hợp đồng thông minh có thể là một quy trình thủ công và hơi tẻ nhạt, nhưng nó cung cấp sự hiểu biết toàn diện về các cơ chế cơ bản có liên quan. Khi hệ sinh thái Cardano phát triển, chúng ta có thể kỳ vọng sự phát triển của các công cụ và giao diện thân thiện với người dùng hơn để đơn giản hóa quy trình hơn nữa. Tuy nhiên, Cardano CLI vẫn là một công cụ mạnh mẽ và thiết yếu để các nhà phát triển và người dùng tương tác với các hợp đồng thông minh Plutus trên blockchain Cardano.

Xem video

040203 - High-Level, Typed Validation Scripts

PPP 040203 - Tập lệnh xác thực cấp cao, định kiểu

Hợp đồng thông minh đóng một vai trò quan trọng trong các hệ thống dựa trên blockchain bằng cách tạo điều kiện thuận lợi cho các giao dịch phi tập trung và tin cậy. Các hợp đồng này thường được viết bằng ngôn ngữ lập trình được thiết kế đặc biệt để phát triển hợp đồng thông minh, chẳng hạn như Plutus cho blockchain Cardano. Trong Bài giảng này, chúng ta sẽ khám phá các tập lệnh xác thực được định Kiểu cấp cao trong Plutus và tầm quan trọng của chúng trong việc tạo các hợp đồng thông minh mạnh mẽ và an toàn.

Tập lệnh xác thực Plutus:

Trong Plutus, các tập lệnh xác thực là một thành phần thiết yếu của hợp đồng thông minh. Họ xác định các điều kiện theo đó một giao dịch có thể được thực hiện thành công. Trong ví dụ được trình bày trong Bài giảng này, chúng ta kiểm tra tập lệnh xác thực trong đó một số đối số nhất định bị bỏ qua nhưng những đối số khác phải đáp ứng các tiêu chí cụ thể.

Kiểu an toàn và tầm quan trọng của nó:

Phiên bản ban đầu của tập lệnh xác thực dựa trên inline Datum sẵn Kiểu chung, linh hoạt nhưng thiếu các lợi ích của việc Kiểu mạnh. Các ngôn ngữ được định Kiểu mạnh giúp tăng độ an toàn và phát hiện lỗi trong quá trình phát triển. Bằng cách gán Kiểu thích hợp cho các đối số của tập lệnh xác thực, chúng ta có thể nâng cao khả năng đọc, diễn đạt logic nghiệp vụ chính xác hơn và tận dụng khả năng kiểm tra lỗi của trình biên dịch.

Tập lệnh xác thực định kiểu:

Để tạo tập lệnh xác thực được định Kiểu, chúng ta chỉ định Kiểu thích hợp cho từng đối số dựa trên logic nghiệp vụ cụ thể của hợp đồng thông minh. Ví dụ: chúng ta có thể chỉ định rằng đối số đầu tiên phải là Kiểu Unit, đối số thứ hai phải là Kiểu Interger và đối số thứ ba phải luôn là Kiểu Script Contexts. Với các phép gán Kiểu rõ ràng này, tập lệnh xác thực sẽ trở nên trực quan và dễ hiểu hơn.

Giới thiệu Chú thích Kiểu và Lớp Kiểu:

Để thực thi các Kiểu này, chúng ta sử dụng các chú thích Kiểu và các lớp Kiểu trong Plutus. Chú thích loại nêu rõ Kiểu dự kiến ​​của một biểu thức, cho phép trình biên dịch thực hiện kiểm tra Kiểu. Các lớp Kiểu, chẳng hạn như lớp UnsafeFromBuiltinData, cho phép chúng ta chuyển đổi giữa inline Datum Kiểu và Kiểu tùy chỉnh mà chúng ta xác định. Chuyển đổi này đảm bảo rằng tập lệnh xác thực nhận được Kiểu dự kiến ​​cho các đối số của nó.

Sử dụng Mẫu Haskell để Chuyển đổi Kiểu Tự động:

Plutus cung cấp hỗ trợ Haskell mẫu, cho phép tự động tạo các phiên bản chuyển đổi Kiểu cho các Kiểu tùy chỉnh. Bằng cách tận dụng Hàm này, chúng ta có thể tránh triển khai các trường hợp chuyển đổi Kiểu theo cách thủ công cho mọi Kiểu tùy chỉnh được sử dụng trong tập lệnh xác thực của chúng ta. Thay vào đó, chúng ta có thể sử dụng hàm unstable makeIsData để tự động tạo các phiên bản này.

Cân nhắc hiệu suất:

Mặc dù các tập lệnh xác thực được định Kiểu cung cấp khả năng đọc và độ an toàn Kiểu được cải thiện, nhưng chúng có thể đi kèm với chi phí hiệu suất. Việc chuyển đổi giữa inline Datum và Kiểu cụ thể có thể gây ra chi phí hoạt động. Tuy nhiên, các công cụ và tối ưu hóa có sẵn để giảm thiểu tác động đến hiệu suất này trong khi vẫn duy trì sự an toàn của Kiểu.

Viết các trường hợp chuyển đổi loại tùy chỉnh:

Trong các trường hợp không đủ khả năng tạo tự động các phiên bản chuyển đổi Kiểu, chúng ta khám phá quy trình viết các phiên bản theo cách thủ công cho các Kiểu tùy chỉnh. Bằng cách xác định các trường hợp này, chúng ta có thể đảm bảo chuyển đổi liền mạch giữa inline Datum Kiểu và Kiểu tùy chỉnh của chúng ta, phù hợp với yêu cầu của hợp đồng thông minh của chúng ta.

Tuần tự hóa và giải tuần tự hóa:

Tuần tự hóa là một khía cạnh quan trọng khi làm việc với các hợp đồng thông minh. Plutus cung cấp các tiện ích để tuần tự hóa cấu trúc dữ liệu, bao gồm khả năng ghi dữ liệu tùy biến vào tệp JSON. Bằng cách sử dụng lớp toData và hàm writeDataToFile, chúng ta có thể tuần tự hóa các Kiểu dữ liệu tùy chỉnh và lưu trữ chúng ở định dạng mà máy có thể đọc được.

Phần kết luận:

Các tập lệnh xác thực được định Kiểu cấp cao cải thiện đáng kể tính mạnh mẽ và bảo mật của hợp đồng thông minh. Bằng cách tận dụng các phép gán Kiểu, chú thích Kiểu và các phiên bản chuyển đổi Kiểu thích hợp, các nhà phát triển có thể diễn đạt logic nghiệp vụ chính xác hơn và hưởng lợi từ khả năng kiểm tra lỗi của trình biên dịch. Mặc dù có thể có tác động đến hiệu suất, nhưng các công cụ và tối ưu hóa có thể giảm thiểu mối lo ngại này. Hơn nữa, Plutus cung cấp hỗ trợ tuần tự hóa và giải tuần tự hóa, cho phép lưu trữ và truy xuất dữ liệu có cấu trúc. Bằng cách sử dụng các kỹ thuật này, các nhà phát triển có thể tạo ra các hợp đồng thông minh đáng tin cậy và đáng tin cậy hơn.

Xem video

040204 - Summary

PPP 040204 - Tóm tắt

Trong bản tóm tắt này, chúng ta sẽ đi sâu vào các điểm chính được trình bày trong bài giảng về trình xác thực. Bài giảng đề cập đến các khía cạnh khác nhau của trình xác thực, bao gồm các ví dụ về Không xác định Kiểu và được định Kiểu. Ngoài ra, nó đã khám phá các trình xác thực thành công hay thất bại mà không xem xét các đối số của chúng, trình xác thực kiểm tra Redeemer để tìm các giá trị được xác định trước cụ thể và quá trình chuyển đổi sang trình xác thực được định Kiểu bằng cách sử dụng cả Kiểu inline Datum và dữ liệu tùy chỉnh. Bài giảng cũng đề cập ngắn gọn về việc kiểm tra Datum hoặc Context, điều này rất quan trọng trong các ví dụ thực tế. Hơn nữa, việc sử dụng Giao diện dòng lệnh Cardano (CLI) để tương tác với trình xác thực đã được trình diễn.

Không định Kiểu Trình xác thực:

Bài giảng bắt đầu bằng việc giới thiệu các ví dụ đơn giản về trình xác thực Không xác định Kiểu. Ví dụ đầu tiên là trình xác thực luôn thành công, bất kể đối số của nó là gì. Trình xác thực này đã trình bày cách triển khai trình xác thực cơ bản để chấp nhận bất kỳ thông tin Đầu vào nào mà không cần xác thực. Ví dụ tiếp theo là trình xác thực luôn bị lỗi, tương tự như vậy, bỏ qua các đối số của nó. Bằng cách kiểm tra những trường hợp cực đoan này, bài giảng nhấn mạnh tầm quan trọng của việc hiểu hành vi và mục đích của Trình xác thực.

Trình xác thực định kiểu:

Sau khi khám phá trình xác thực Không xác định Kiểu, bài giảng đã chuyển sang trình xác thực được định Kiểu. Bước đầu tiên là chuyển đổi các trình xác thực đã thảo luận trước đó thành các đối tác được định Kiểu của chúng. Quá trình chuyển đổi này liên quan đến việc chỉ định Kiểu dữ liệu dự kiến ​​cho các đối số, cho phép xác thực chính xác hơn.

Các kiểu inline Datum:

Bài giảng tiếp tục bằng cách thảo luận về việc sử dụng Kiểu inline Datum trong trình xác thực được định Kiểu. Các ví dụ đã được cung cấp để chứng minh cách Trình xác thực có thể được triển khai bằng cách sử dụng dữ liệu tiêu chuẩn Kiểu, chẳng hạn như số nguyên, booleans và chuỗi. Bằng cách trình bày các Kiểu inline Datum này, bài giảng nhằm mục đích cung cấp nền tảng để hiểu các trình xác thực phức tạp hơn.

Các Kiểu dữ liệu tùy chỉnh:

Dựa trên kiến ​​thức về Kiểu inline Datum, bài giảng khám phá việc sử dụng Kiểu dữ liệu tùy chỉnh trong trình xác thực được định Kiểu. Nó giới thiệu cách trình xác thực có thể được điều chỉnh theo các yêu cầu cụ thể bằng cách tạo Kiểu dữ liệu tùy chỉnh. Các ví dụ thực tế đã được trình bày để minh họa việc triển khai trình xác thực bằng cách sử dụng Kiểu dữ liệu tùy chỉnh, nhấn mạnh tính linh hoạt và tính linh hoạt của trình xác thực được định Kiểu.

Kiểm tra Datum và Context:

Mặc dù bài giảng chủ yếu tập trung vào các trình xác thực đã kiểm tra Redeemer, nhưng nó đã thừa nhận ngắn gọn tầm quan trọng của việc kiểm tra Datum và Context. Trong các tình huống thực tế, người xác thực thường cần đánh giá Datum hoặc Context để đưa ra quyết định sáng suốt. Mặc dù khía cạnh này không được đề cập nhiều trong bài giảng, nhưng tầm quan trọng của nó đã được nhấn mạnh, tạo tiền đề cho việc khám phá thêm trong các buổi học sau.

Tương tác với Trình xác thực bằng Cardano CLI:

Bài giảng kết thúc bằng cách trình bày cách tương tác với trình xác thực bằng Cardano CLI. Cardano CLI cung cấp giao diện dòng lệnh để tương tác với blockchain Cardano. Các ví dụ thực tế đã được giới thiệu để minh họa cách trình xác thực có thể được viết và triển khai bằng Cardano CLI. Phân đoạn này nhằm mục đích trang bị cho học viên những công cụ cần thiết để triển khai trình xác thực trong các tình huống thực tế.

Phần kết luận:

Bài giảng về Trình xác thực đã cung cấp những hiểu biết có giá trị về việc triển khai và sử dụng chúng. Nó đã khám phá cả hai trình xác thực Không xác định Kiểu và được định Kiểu, cung cấp các ví dụ để làm nổi bật hành vi và mục đích của chúng. Quá trình chuyển đổi từ trình xác thực Không xác định Kiểu sang được định Kiểu đã được chứng minh, cho thấy việc sử dụng Kiểu inline Datum và dữ liệu tùy chỉnh. Mặc dù việc kiểm tra Datum và Context đã được đề cập ngắn gọn, nhưng nó như một lời nhắc nhở về tầm quan trọng của nó trong các tình huống thực tế. Cuối cùng, bài giảng đã trang bị cho học viên kiến ​​thức về cách tương tác với trình xác thực bằng Cardano CLI, trao quyền cho chúng triển khai trình xác thực trên blockchain Cardano.

Nhìn chung, bài giảng đã cung cấp một cái nhìn tổng quan toàn diện về trình xác thực, đặt nền tảng vững chắc cho việc khám phá và ứng dụng sâu hơn trong phát triển blockchain.

Xem video

040205 - Homework

PPP 040205 - Bài tập về nhà

Trong bài tập về nhà này, bạn được yêu cầu triển khai hai trình xác thực đơn giản bằng ngôn ngữ lập trình Haskell. Bài tập bao gồm hai mô-đun, mỗi mô-đun tập trung vào một Kiểu Trình xác thực khác nhau. Mô-đun đầu tiên bao gồm một cặp boolean dưới dạng đơn vị Datum Kiểu, trong khi mô-đun thứ hai sử dụng Kiểu dữ liệu tùy chỉnh được gọi là MyRedeemer, cũng là một cặp boolean. Mục tiêu là thay thế các triển khai không chính xác hiện có bằng các triển khai chính xác. Ngoài ra, bạn sẽ tìm hiểu cách tương tác với các hợp đồng này bằng Giao diện dòng lệnh Cardano (CLI) và khám phá các thông báo lỗi được tạo khi cung cấp Redeemer không chính xác.

Mô-đun 1: Cặp Trình xác thực Booleans

Nhiệm vụ đầu tiên là triển khai trình xác thực cho một cặp phép toán luận. Logic của trình xác thực nói rằng nó sẽ chỉ xác thực thành công nếu cả hai phép toán luận trong cặp đều đúng. Cách triển khai hiện tại được cung cấp trong thư mục bài tập về nhà không chính xác và công việc của bạn là thay thế nó bằng cách triển khai đúng.

Để hoàn thành nhiệm vụ này, hãy làm theo các bước dưới đây:

  1. Phân tích việc thực hiện hiện có.

  2. Xác định các sai sót và lỗi trong mã.

  3. Triển khai phiên bản chính xác của trình xác thực.

  4. Xác minh tính chính xác của việc triển khai của bạn bằng cách chạy bộ thử nghiệm được cung cấp bằng cách sử dụng lệnh cabal test.

Mô-đun 2: Trình xác thực Kiểu dữ liệu tùy chỉnh (MyRedeemer)

Nhiệm vụ thứ hai liên quan đến việc triển khai trình xác thực cho Kiểu dữ liệu tùy chỉnh có tên là MyRedeemer.' Dữ liệu Kiểu này cũng bao gồm một cặp boolean, nhưng với hai trường có tên 'flag1' và 'flag2', cả hai đều thuộc Kiểu 'Bool.' Logic của trình xác thực này là chỉ cho phép sử dụng một UTXO bị khóa tại một địa chỉ cụ thể nếu hai cờ trong Kiểu bản ghi MyRedeemer' khác nhau.

Để hoàn thành nhiệm vụ này, hãy làm theo các bước dưới đây:

  1. Hiểu cấu trúc của Kiểu dữ liệu MyRedeemer'.

  2. Phân tích việc triển khai hiện tại và xác định các lỗi.

  3. Triển khai phiên bản chính xác của Trình xác thực MyRedeemer'.

  4. Kiểm tra việc triển khai của bạn bằng bộ kiểm tra được cung cấp.

Tương tác với các hợp đồng bằng Cardano CLI

Khi bạn đã triển khai thành công cả hai Trình xác thực, nhiệm vụ khuyến khích bạn khám phá việc tương tác với các hợp đồng này bằng Cardano CLI. Cardano CLI cung cấp giao diện dòng lệnh để tương tác với blockchain Cardano, cho phép bạn tương tác với các hợp đồng thông minh và thực hiện các hoạt động khác nhau.

Để tương tác với các hợp đồng, hãy làm theo các bước sau:

  1. Cài đặt Cardano CLI và thiết lập môi trường của bạn.

  2. Triển khai các hợp đồng cho blockchain Cardano.

  3. Sử dụng Cardano CLI để tương tác với các hợp đồng, cung cấp các giá trị Redeemer khác nhau, bao gồm cả các giá trị không chính xác.

  4. Quan sát các thông báo lỗi do CLI Cardano tạo ra khi các giá trị Redeemer không chính xác được cung cấp.

  5. Phân tích các thông báo lỗi để hiểu rõ hơn về hành vi của trình xác thực và cơ chế xử lý lỗi.

Phần kết luận

Trong bài tập về nhà này, bạn đã học cách triển khai trình xác thực bằng ngôn ngữ lập trình Haskell. Bằng cách hoàn thành các nhiệm vụ trong hai mô-đun, bạn đã có được kinh nghiệm thực tế trong việc triển khai trình xác thực cho các Kiểu dữ liệu khác nhau. Ngoài ra, việc khám phá các khả năng của Cardano CLI đã cung cấp cho bạn thông tin chuyên sâu về triển khai hợp đồng, tương tác và xử lý lỗi. Nhiệm vụ này đã nâng cao hiểu biết của bạn về phát triển hợp đồng thông minh và các công cụ có sẵn để phát triển blockchain Cardano.

Xem video

Tuần 3


040301 - Script Contexts

PPP 040301 - Ngữ cảnh tập lệnh

Cardano, một nền tảng blockchain được biết đến nhờ tập trung vào bảo mật và khả năng mở rộng, cung cấp một môi trường hợp đồng thông minh mạnh mẽ có tên là Plutus. Trong Plutus, trình xác thực đóng một vai trò quan trọng trong việc đảm bảo tính toàn vẹn và chính xác của các giao dịch. Để thực hiện chức năng của mình, trình xác thực yêu cầu ba phần thông tin thiết yếu: Datum, Redeemer và Context. Trong khi hai yếu tố đầu tiên đã được thảo luận trong các bài giảng trước, Context, đại diện cho giao dịch được xác thực, đã bị bỏ qua. Trong Bài giảng này, chúng ta sẽ đi sâu vào tầm quan trọng của Script Contexts trong Plutus và khám phá cách chúng định hình khả năng của nền tảng hợp đồng thông minh của Cardano.

  1. Hiểu Script Contexts trong Plutus

Trình xác thực Plutus nhận được ba phần thông tin: Datum, Redeemer và Context. Mặc dù Datum và Redeemer đã được xem xét trước đây, Context vẫn chưa được khám phá. Context thể hiện giao dịch đang được xác thực và cung cấp thông tin quan trọng cho việc thực thi của trình xác thực. Các nền tảng blockchain khác nhau áp dụng các cách tiếp cận riêng biệt để xác định Context. Ví dụ: Bitcoin có Context tối thiểu chỉ bao gồm Đầu ra giao dịch chưa được chi tiêu (UTXO) và Redeemer. Mặt khác, Ethereum cung cấp một cái nhìn toàn cầu về blockchain, cấp cho các tập lệnh solidity quyền truy cập vào trạng thái hoàn chỉnh. Cardano tạo ra sự cân bằng giữa các thái cực này bằng cách xác định Context khi giao dịch được xác thực, cùng với Đầu vào và Đầu ra của nó.

  1. Script Contexts trong Plutus của Cardano

Trong Plutus của Cardano, Script Contexts được triển khai dưới dạng Kiểu dữ liệu Haskell. Tìm hiểu tài liệu, chúng ta gặp hai phiên bản: phiên bản một và phiên bản hai. Bài giảng này tập trung vào phiên bản hai của Context Script. Trong phiên bản này, Script Contexts là một bản ghi Kiểu với hai trường: TXinfo và mục đích. Trường mục đích cho biết Context mà tập lệnh Plutus đang được sử dụng, trong đó chi tiêu là mục đích được thảo luận phổ biến nhất. Ngoài ra, có ba mục đích khác: đúc, khen thưởng và chứng nhận. Mỗi mục đích đều có những đặc điểm riêng, cho phép một loạt các Hàm trong hệ sinh thái hợp đồng thông minh của Cardano.

  1. Kiểu dữ liệu TXinfo

Trong Script Contexts, Kiểu dữ liệu TXinfo chứa thông tin giao dịch quan trọng có sẵn cho tập lệnh Plutus. Nó cũng là một bản ghi Kiểu với nhiều trường khác nhau. Dữ liệu Kiểu TXinfo bao gồm hai danh sách Đầu vào, mỗi danh sách phục vụ một mục đích riêng biệt. Danh sách đầu tiên đại diện cho các Đầu vào thông thường mà giao dịch sẽ sử dụng khi được xác thực thành công và được thêm vào blockchain. Danh sách thứ hai bao gồm các Đầu vào tham chiếu, không được sử dụng bởi giao dịch nhưng có thể truy cập được đối với các tập lệnh Plutus để truy xuất thông tin. Đầu vào tham chiếu cho phép nhiều giao dịch trong cùng một khối sử dụng cùng một UTXO làm tham chiếu, tránh tranh chấp các UTXO cụ thể mang thông tin trạng thái có giá trị.

  1. Tìm hiểu TX Outs

Dữ liệu Đầu ra của TX Kiểu đại diện cho Đầu ra của một giao dịch. Đây là danh sách các TX out, với mỗi TX out là một bản ghi Kiểu. Mỗi Đầu ra TX bao gồm bốn trường: địa chỉ chứa Đầu ra, giá trị mà nó chứa (có thể là Ada hoặc token gốc), Datum (tùy chọn) và hàm hash tập lệnh (tùy chọn). Datum, như đã thảo luận trước đây, có thể được gắn vào Đầu ra theo ba cách khác nhau: hoàn toàn không có Datum, dưới dạng Datum nội tuyến được chứa trực tiếp trong Đầu ra hoặc dưới dạng hàm hash Datum được tham chiếu ở nơi khác trong sự giao dịch. Ngoài ra, các tập lệnh Plutus có thể tham chiếu các tập lệnh bên ngoài được đính kèm với Đầu ra, cho phép sử dụng bộ nhớ hiệu quả hơn và giảm kích thước giao dịch.

  1. Khám phá thông tin giao dịch bổ sung

Ngoài Đầu vào và Đầu ra, Kiểu dữ liệu TXinfo bao gồm các trường thiết yếu khác. Trường phí biểu thị phí giao dịch liên quan đến giao dịch, trong khi trường đúc tiền biểu thị việc đúc hoặc đốt token gốc. Những khía cạnh này, mặc dù được đề cập ngắn gọn, đảm bảo sự khám phá thêm trong

các bài giảng tiếp theo. Bài giảng cũng nêu bật sự hiện diện của chứng chỉ, số lần rút tiền, phạm vi hiệu lực về thời gian, hàm hash khóa pub đã ký, Redeemers và ánh xạ của hàm hash Datum với dữ liệu thực tế. Mỗi thành phần này đóng góp vào Context giao dịch toàn diện có sẵn cho các tập lệnh Plutus.

Phần kết luận:

Tóm lại, Script Contexts đóng một vai trò quan trọng trong môi trường hợp đồng thông minh Plutus của Cardano. Hiểu cấu trúc và nội dung của Script Contexts, đặc biệt là Kiểu dữ liệu TXinfo, cho phép các nhà phát triển và người dùng mint toàn bộ sức mạnh của Plutus. Bằng cách xem xét Context giao dịch, bao gồm Đầu vào, Đầu ra, phí, chứng chỉ và thông tin liên quan khác, tập lệnh Plutus có thể thực thi với độ chính xác, đảm bảo tính toàn vẹn và bảo mật của blockchain Cardano. Với Context Script được xác định rõ ràng và mạnh mẽ, Cardano tiếp tục mở đường cho các ứng dụng phi tập trung và phát triển hợp đồng thông minh sáng tạo.

Xem video

040302 - Handling Time

PPP 040302 - Thời gian xử lý

Chuỗi khối Cardano, với mô hình UTXO mở rộng (EUTxO), mang lại những lợi thế khác biệt so với các nền tảng khác như Ethereum. Một trong những tính năng đáng chú ý của nó là khả năng xác thực giao dịch trực tiếp trong ví, loại bỏ nhu cầu trả phí khi giao dịch không thành công. Tuy nhiên, quản lý thời gian đặt ra một thách thức hấp dẫn trong Context này. Thời gian là một yếu tố quan trọng để thể hiện logic xác thực hạn chế tính hợp lệ của giao dịch trước hoặc sau các khoảng thời gian cụ thể. Giải pháp Cardano cho thách thức này liên quan đến việc đưa trường phạm vi thời gian POSIX vào các giao dịch, đảm bảo cả xác thực xác định và quản lý thời gian. Bài giảng này đi sâu vào sự phức tạp của thời gian xử lý trong mô hình Cardano EUTxO, khám phá việc sử dụng các khoảng thời gian POSIX, chuyển đổi slot và các hạn chế do hard fork trong tương lai áp đặt.

Hiểu phạm vi thời gian POSIX:

Trong mô hình EUTxO của Cardano, một giao dịch có thể chỉ định khoảng thời gian hợp lệ bằng cách sử dụng trường phạm vi thời gian POSIX. Khoảng thời gian này xác định khoảng thời gian mà giao dịch được coi là hợp lệ. Khi một giao dịch được gửi tới blockchain để xác thực, node sẽ thực hiện kiểm tra trước để xác minh các khía cạnh khác nhau, bao gồm cả phạm vi thời gian. Nếu thời gian hiện tại nằm ngoài khoảng thời gian đã chỉ định, thì quá trình xác thực sẽ không thành công ngay lập tức mà không thực thi tập lệnh trình xác thực. Tuy nhiên, nếu kiểm tra trước thành công, có thể giả định rằng thời gian hiện tại nằm trong khoảng thời gian, đảm bảo xác thực xác định.

Chuyển đổi giữa thời gian thực và máy đánh bạc:

Mặc dù Cardano sử dụng phạm vi thời gian POSIX trong các giao dịch, nhưng giao thức đồng thuận cơ bản của nó hoạt động bằng cách sử dụng slot làm thước đo thời gian. Mỗi slot xác định một slot dẫn đầu thông qua cơ chế bốc thăm, cho phép tạo các khối. Mặc dù slot là đơn vị thời gian riêng, ngôn ngữ Script Plutus được sử dụng trong Cardano sử dụng các phép đo thời gian thực. Do đó, một cơ chế để chuyển đổi giữa thời gian thực và slot là cần thiết. Hiện tại, Cardano sử dụng độ dài slot cố định là một giây, tạo điều kiện chuyển đổi dễ dàng. Tuy nhiên, điều quan trọng là phải xem xét khả năng hard fork trong tương lai có thể thay đổi độ dài của slot. Để giải quyết vấn đề này, cơ chế chuyển đổi đảm bảo khả năng tương thích giữa thời gian thực và slot, bất kể có bất kỳ thay đổi nào về độ dài slot.

Hạn chế của Thông số kỹ thuật phạm vi thời gian:

Do khả năng hard fork trong tương lai thay đổi độ dài của slot, Cardano áp đặt các hạn chế đối với giới hạn trên của khoảng thời gian được chỉ định trong các giao dịch. Vì độ dài của slot có thể thay đổi không thể đoán trước trong tương lai, các giao dịch không được có giới hạn trên xác định quá xa về phía trước. Giới hạn tối đa cho giới hạn trên được đặt thành ước tính thận trọng trong khoảng 36 giờ. Hạn chế này đảm bảo rằng giao dịch vẫn hợp lệ trong khung thời gian có tính đến mọi thay đổi có thể thấy trước đối với độ dài slot. Điều cần thiết là các nhà phát triển và người dùng phải nhận thức được giới hạn này để ngăn chặn các vấn đề liên quan đến thay đổi độ dài slot trong tương lai.

Hợp đồng Plutus và Khoảng thời gian tùy biến:

Mặc dù các giao dịch tuân theo giới hạn giới hạn trên, nhưng các hợp đồng thông minh của Plutus mang đến sự linh hoạt hơn trong việc chỉ định các ràng buộc về thời gian. Tập lệnh Plutus có thể bao gồm các ngày tùy biến, cho phép hợp đồng thực thi các sự kiện hoặc giới hạn xa trong tương lai. Chẳng hạn, một hợp đồng có thể quy định rằng một giao dịch cụ thể chỉ có thể xảy ra trong vòng 10 hoặc 100 năm tới. Tuy nhiên, điều quan trọng cần lưu ý là việc phát hành một giao dịch với khoảng thời gian hiệu lực kéo dài 10 năm trong tương lai là không thể. Trong những trường hợp như vậy, các giao dịch cần được phát hành với giới hạn trên gần hơn về thời gian, chẳng hạn như vài giờ hoặc hoãn lại cho đến khi đạt đến một điểm trong phạm vi thời gian mong muốn. Giới hạn này đảm bảo rằng các giao dịch phù hợp với giới hạn trên được xác định trước của mạng Cardano trong phạm vi thời gian.

Lợi ích của Xác thực dựa trên thời gian thực:

Bằng cách kết hợp các phép đo thời gian thực và phạm vi thời gian POSIX, Cardano đạt được sự cân bằng hài hòa giữa xác thực xác định và quản lý thời gian. Quy trình xác thực bao gồm các bước kiểm tra trước để kiểm tra phạm vi thời gian, đảm bảo quá trình xác thực diễn ra

chỉ khi thời gian hiện tại nằm trong khoảng thời gian đã chỉ định. Dữ liệu tĩnh của giao dịch, bao gồm phạm vi thời gian, đảm bảo kết quả xác thực nhất quán, bất kể giao dịch được xác thực trong ví hay node. Cách tiếp cận này giải quyết hiệu quả mâu thuẫn rõ ràng giữa xác nhận xác định và xem xét thời gian.

Khám phá Kiểu phạm vi thời gian POSIX:

Phạm vi thời gian POSIX Kiểu trong ngôn ngữ Script lệnh Plutus của Cardano đóng vai trò là thành phần quan trọng để thể hiện các khoảng thời gian trong giao dịch. Kiểu này được định nghĩa là từ đồng nghĩa với POSIX Time Range Kiểu, đại diện cho số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. Đến lượt Kiểu của khoảng thời gian, bao gồm một giới hạn dưới, một giới hạn trên và khả năng kiểm tra xem mỗi giới hạn có được bao gồm trong khoảng hay không. Các tính năng này cho phép xác định chính xác và xác minh khoảng thời gian trong các giao dịch.

Sử dụng các hàm khoảng:

Để tạo điều kiện quản lý phạm vi thời gian hiệu quả, Cardano cung cấp một tập hợp các Hàm khoảng thời gian trong ngôn ngữ Script Plutus. Các Hàm này cho phép các hoạt động như kiểm tra tư cách thành viên, xây dựng khoảng cách, giao lộ, kiểm tra ngăn chặn, v.v. Các nhà phát triển có thể tận dụng các Hàm này để thao tác và xác thực các khoảng thời gian trong các giao dịch, đảm bảo xử lý chính xác các ràng buộc liên quan đến thời gian.

Phần kết luận:

Mô hình Cardano EUTxO cung cấp một giải pháp mạnh mẽ để xử lý thời gian trong các giao dịch trong khi vẫn duy trì xác thực xác định. Bằng cách kết hợp các khoảng thời gian POSIX, Cardano đảm bảo rằng các giao dịch chỉ định các khoảng thời gian hợp lệ, cho phép các kết quả xác thực đáng tin cậy và có thể dự đoán được. Cơ chế chuyển đổi giữa thời gian thực và slot đảm bảo khả năng tương thích và chống lại các thay đổi về độ dài của slot trong tương lai thông qua các hard fork tiềm năng. Mặc dù các giao dịch tuân theo giới hạn giới hạn trên đối với các khoảng thời gian, nhưng các hợp đồng thông minh của Plutus cung cấp sự linh hoạt để xác định các khoảng thời gian tùy biến cho các hợp đồng dài hạn. Bằng cách đạt được sự cân bằng giữa xác thực xác định và quản lý thời gian, Cardano thể hiện cam kết cung cấp một nền tảng blockchain linh hoạt và đáng tin cậy.

Xem video

040303 - A Vesting Example

PPP 040303 - Ví dụ về Vesting

Trong Bài giảng này, chúng ta sẽ khám phá việc triển khai kế hoạch trao quyền sử dụng Plutus, một nền tảng phát triển hợp đồng thông minh cho Cardano. Kế hoạch trao quyền cho phép tặng crypto ADA cho một đứa trẻ, với điều kiện là đứa trẻ đó chỉ có thể truy cập ADA khi chúng đạt đến một độ tuổi cụ thể, chẳng hạn như 18 hoặc 21. Chúng ta sẽ xem xét một ví dụ thực tế về hợp đồng thông minh trao quyền và thảo luận về mã và logic cần thiết để thực hiện một hợp đồng như vậy bằng Plutus.

Tổng quan về Chương trình Vesting

Kế hoạch trao quyền liên quan đến việc tạo ra một hợp đồng thông minh khóa tiền ADA cho đến khi đạt đến thời hạn xác định trước. Hợp đồng đảm bảo rằng tiền chỉ có thể được mở khóa nếu giao dịch chi tiêu ADA được ký bằng khóa của Redeemer. Cơ chế này cung cấp một cách an toàn để tặng ADA cho ai đó trong khi đặt ra các hạn chế đối với việc sử dụng nó cho đến khi một điều kiện cụ thể được đáp ứng.

Triển khai Đề án Vesting trong Plutus

Để triển khai kế hoạch trao quyền trong Plutus, chúng ta sử dụng các thư viện Plutus được cung cấp và tận dụng các khả năng của nền tảng. Hãy xem qua mã và logic cần thiết để tạo hợp đồng thông minh trao quyền.

  1. Xác định Datum

Bước đầu tiên là xác định dữ liệu tùy chỉnh Kiểu, được gọi là vesting Datum``, chứa hai phần thông tin: hàm hash khóa công khai của Redeemer và thời hạn (được chỉ định là thời gian POSIX). Redeemer đại diện cho đứa trẻ cuối cùng sẽ nhận được ADA và thời hạn xác định khi nào tiền có thể được tiếp cận.

  1. Script Contexts và điều kiện

Tiếp theo, chúng ta xác định Script Contexts và các điều kiện cần được đáp ứng để giao dịch có hiệu lực. Trong trường hợp này, chúng ta sử dụng TXInfo của Script Contexts, cung cấp thông tin về giao dịch đang được xác thực.

Các điều kiện cho một giao dịch hợp lệ trong hợp đồng thông minh trao quyền có hai mặt:

- Giao dịch phải có chữ ký của Redeemer.

- Thời gian hiện tại phải sau thời hạn.

  1. Kiểm tra nếu được ký bởi Redeemer

Để xác minh xem giao dịch có được ký bởi Redeemer hay không, chúng ta sử dụng hàm txSignedBy do thư viện Plutus cung cấp. Hàm này lấy TXInfo và kiểm tra xem giao dịch đã được ký bởi khóa được chỉ định hay chưa. Trong trường hợp của chúng ta, chúng ta truy xuất khóa của Redeemer từ Datum đang trao quyền và sử dụng nó để thực hiện kiểm tra chữ ký.

  1. Kiểm tra xem đã đến hạn chưa

Điều kiện thú vị hơn là kiểm tra xem thời gian hiện tại có sau thời hạn hay không. Chúng ta hình dung điều kiện này bằng sơ đồ thời gian. Khoảng thời gian hiệu lực của một giao dịch, xác định thời điểm chạy tập lệnh trình xác thực, sẽ được xem xét. Để đảm bảo giao dịch hợp lệ, toàn bộ khoảng thời gian phải ở bên phải của thời hạn.

Để đạt được điều này, chúng ta sử dụng hàm contains mà chúng ta đã khám phá trước đó. Chúng ta tạo một khoảng thời gian bắt đầu tại thời hạn và kéo dài đến vô tận. Nếu khoảng thời gian vô hạn này chứa khoảng thời gian hiệu lực của giao dịch, thì nó đảm bảo rằng thời điểm hiện tại là sau thời hạn.

  1. Sự kết hợp hợp lý của các điều kiện

Bằng cách kết hợp các điều kiện được ký bởi Redeemerđã đến thời hạn cuối bằng cách sử dụng thao tác logic AND, chúng ta đảm bảo rằng UTXO bị khóa bởi tập lệnh chỉ có thể được mở khóa bằng một giao dịch được ký bởi Redeemer và được thực hiện sau thời hạn.

Cách tiếp cận khác

Mặc dù việc triển khai được trình bày tập trung vào việc Redeemer là thực thể duy nhất có khả năng mở khóa việc trao quyền, nhưng có thể xem xét các phương pháp thay thế. Chẳng hạn, có thể cho phép các bên khác mở khóa việc trao quyền bằng cách thanh toán giá trị của UTXO tới một địa chỉ cụ thể được chỉ định cho Redeemer. Cách tiếp cận này có thể hữu ích nếu người nhận quyền không quen thuộc với các giao dịch blockchain và cần sự hỗ trợ từ bên thứ ba

.

Phần kết luận

Trong Bài giảng này, chúng ta đã kiểm tra việc triển khai kế hoạch trao quyền sử dụng Plutus, nền tảng phát triển hợp đồng thông minh cho Cardano. Bằng cách tạo một hợp đồng thông minh trao quyền đơn giản, chúng ta đã trình bày cách tận dụng các tính năng và khả năng của Plutus để thực thi các hạn chế đối với khả năng truy cập của ADA cho đến một thời hạn cụ thể. Kế hoạch trao quyền được trình bày ở đây đóng vai trò là một ví dụ thực tế cho thấy việc sử dụng các điều kiện dựa trên thời gian trong hợp đồng thông minh. Các kế hoạch trao quyền có khả năng áp dụng rộng rãi và có thể được sử dụng trong các Context khác nhau. Mặc dù việc triển khai được cung cấp là một cách tiếp cận, các phương pháp thay thế có thể được khám phá dựa trên các yêu cầu cụ thể. Plutus cung cấp một bộ công cụ mạnh mẽ để phát triển các hợp đồng thông minh an toàn và linh hoạt trên blockchain Cardano, mở ra nhiều khả năng cho các ứng dụng và công cụ tài chính phi tập trung.

Xem video

040304 - Parameterized Contracts

PPP 040304 - Hợp đồng được tham số hóa

Hợp đồng thông minh đã cách mạng hóa cách chúng ta thực hiện các thỏa thuận và giao dịch trên nền tảng blockchain. Các hợp đồng này, được viết bằng các ngôn ngữ như Plutus hoặc Solidity, chứa các quy tắc và điều kiện được xác định trước chi phối hành vi của tài sản kỹ thuật số. Trong hầu hết các trường hợp, các hợp đồng này được thiết kế để có một bộ tham số và giá trị cố định không thể dễ dàng thay đổi sau khi triển khai.

Tuy nhiên, có những tình huống mà sự thay đổi hợp đồng là mong muốn. Ví dụ, trong một hợp đồng Vesting, Redeemer và thời hạn có thể khác nhau tùy thuộc vào thỏa thuận cụ thể. Trong những trường hợp như vậy, sẽ rất hữu ích nếu có một cơ chế cho phép chúng ta kết hợp sự thay đổi trực tiếp vào chính hợp đồng, thay vì dựa vào dữ liệu bên ngoài.

Bài giảng này tìm hiểu khái niệm về hợp đồng được tham số hóa hoặc tập lệnh được tham số hóa. Thay vì mã hóa cứng các giá trị cụ thể vào hợp đồng, các hợp đồng được tham số hóa cho phép chúng ta tạo một nhóm tập lệnh có thể được khởi tạo với các giá trị cụ thể cho các tham số. Chúng ta sẽ đi sâu vào các khía cạnh kỹ thuật của việc thực hiện các hợp đồng được tham số hóa bằng ngôn ngữ lập trình Plutus và khám phá những lợi thế cũng như sự đánh đổi liên quan đến phương pháp này.

Tham số hóa hợp đồng trong Plutus:

Trong Plutus, các hợp đồng thường được đại diện bởi trình xác thực, là các giá trị Haskell của Kiểu Trình xác thực. Những Trình xác thực này thực thi các điều kiện được chỉ định trong hợp đồng. Tuy nhiên, trong thiết kế hợp đồng truyền thống, tính khả biến của hợp đồng đạt được bằng cách sử dụng trường Datum để lưu trữ dữ liệu động như Redeemer và thời hạn.

Để chuyển sang các hợp đồng được tham số hóa, chúng ta cần kết hợp tính khả biến trực tiếp vào mã main hợp đồng. Điều này liên quan đến việc sửa đổi cấu trúc của hợp đồng và xử lý các tham số. Thay vì lưu trữ các tham số trong Datum, chúng ta đưa chúng vào mã main hợp đồng. Cách tiếp cận này cho phép chúng ta tạo một nhóm tập lệnh, mỗi tập lệnh có các giá trị tham số cụ thể.

Quá trình bắt đầu bằng cách sửa đổi ví dụ về hợp đồng Vesting hiện có để sử dụng các hợp đồng được tham số hóa. Bước đầu tiên liên quan đến việc thay đổi Datum thành Kiểu chung, chẳng hạn như unit, vì các tham số không còn được lưu trữ trong Datum nữa. Các tham số hiện được bao gồm dưới dạng tham số bổ sung trong chữ ký của hợp đồng. Các tham số này có thể thuộc bất kỳ Kiểu mong muốn nào, chẳng hạn như keyHash hoặc Slot.

Điều chỉnh trình xác thực cho các hợp đồng được tham số hóa:

Tiếp theo, chúng ta cần điều chỉnh hàm trình xác thực để xử lý cấu trúc được tham số hóa mới. Thay vì một giá trị trình xác thực duy nhất, giờ đây chúng ta kỳ vọng một hàm ánh xạ các tham số tới trình xác thực. Thay đổi này cho phép chúng ta tạo một nhóm trình xác thực, mỗi Trình xác thực tương ứng với một bộ giá trị tham số cụ thể.

Để cập nhật trình xác thực, chúng ta cần điều chỉnh mã và đảm bảo rằng cấu trúc mới chứa tham số bổ sung. Chúng ta có thể sử dụng các hàm tổng hợp như toán tử dấu chấm hoặc kiểu không có điểm để nâng cao khả năng đọc và khả năng bảo trì của mã. Tuy nhiên trong quá trình thực hiện chúng ta có thể gặp một số lỗi liên quan đến template Haskell và quá trình biên dịch. Những vấn đề này có thể được giải quyết bằng cách thực hiện các thay đổi thích hợp đối với cấu hình của dự án và sử dụng các tùy chọn trình biên dịch phù hợp.

Xử lý tham số Values trong thời gian chạy:

Một trong những thách thức trong việc triển khai các hợp đồng được tham số hóa là xử lý các giá trị tham số chỉ được biết khi chạy. Mẫu Haskell, bước tiền biên dịch trong ngôn ngữ lập trình Haskell, yêu cầu tất cả dữ liệu được sử dụng trong các mối nối phải được biết tại thời điểm biên dịch. Tuy nhiên, các giá trị tham số, chẳng hạn như Redeemer và thời hạn, thường được xác định trong thời gian chạy dựa trên Đầu vào của người dùng.

Để giải quyết thách thức này, chúng ta có thể sử dụng một cơ chế gọi là liftcode do thư viện Plutus cung cấp. Mã nâng cho phép chúng ta biên dịch các giá trị trong thời gian chạy thành Plutus Core, biểu diễn trung gian của các hợp đồng Plutus. Bằng cách sử dụng lớp lift Kiểu và triển khai hàm liftCode cho Kiểu tùy chỉnh của chúng ta, chúng ta có thể chuyển đổi các giá trị tham số thành mã được biên dịch có thể được thực thi trong hợp đồng.

Thang máy

Lớp học và thực hiện:

Lớp lift trong Plutus cung cấp một phương thức liftCode cho phép chúng ta chuyển đổi các Kiểu giống như dữ liệu thành mã được biên dịch. Hàm liftCode lấy một phiên bản của Kiểu và trả về một biểu diễn mã đã biên dịch của phiên bản đó. Plutus đã cung cấp các phiên bản cho các Kiểu khác nhau như ký tự, chuỗi byte, số nguyên, boolean và danh sách. Tuy nhiên, đối với Kiểu tùy chỉnh như vestingParams được sử dụng trong ví dụ của chúng ta, chúng ta cần triển khai lớp lift cho Kiểu cụ thể của mình.

Kích hoạt các phần mở rộng ngôn ngữ cần thiết, chẳng hạn như TemplateHaskellMultiParamTypeClasses, cho phép chúng ta triển khai lớp lift cho các Kiểu tùy chỉnh của mình. Với việc triển khai lớp lift, giờ đây chúng ta có thể biên dịch các giá trị tham số trong thời gian chạy bằng cách sử dụng hàm liftCode và áp dụng chúng cho hợp đồng được tham số hóa bằng cách sử dụng hàm applyCode.

Ưu điểm và Đánh đổi:

Các hợp đồng được tham số hóa mang lại một số lợi thế và sự đánh đổi so với các hợp đồng truyền thống với dữ liệu bên ngoài. Một lợi thế là các hợp đồng được tham số hóa cho phép tạo ra một chúng tập lệnh với các giá trị tham số khác nhau. Mỗi hợp đồng được tham số hóa có thể có hàm hash và địa chỉ tập lệnh riêng, giúp chúng dễ dàng phân biệt được trên blockchain.

Hơn nữa, các hợp đồng được tham số hóa cung cấp bảo mật và quyền riêng tư nâng cao. Với các địa chỉ tập lệnh khác nhau cho từng bộ tham số, việc liên kết tất cả các phiên bản của hợp đồng với một Redeemer hoặc giá trị tham số cụ thể sẽ trở nên khó khăn hơn đối với người quan sát bên ngoài.

Tuy nhiên, có những sự đánh đổi cần cân nhắc khi quyết định giữa hợp đồng được tham số hóa và lưu trữ tham số trong Datum. Các hợp đồng được tham số hóa dẫn đến nhiều địa chỉ tập lệnh, điều này có thể làm phức tạp quá trình khám phá tất cả các trường hợp của hợp đồng cho một Redeemer cụ thể. Mặt khác, việc lưu trữ các tham số trong Datum cho phép một địa chỉ tập lệnh duy nhất cho tất cả các phiên bản của hợp đồng.

Phần kết luận:

Các hợp đồng được tham số hóa cung cấp một cơ chế linh hoạt và mạnh mẽ để đưa tính biến đổi và hành vi năng động vào các hợp đồng thông minh. Bằng cách kết hợp các giá trị tham số trực tiếp vào mã hợp đồng và sử dụng các khả năng do Plutus và mẫu Haskell cung cấp, chúng ta có thể tạo một nhóm tập lệnh với các giá trị tham số có thể tùy chỉnh.

Trong Bài giảng này, chúng ta đã khám phá quá trình chuyển đổi từ hợp đồng truyền thống sang hợp đồng được tham số hóa trong Plutus. Chúng ta đã thảo luận về các sửa đổi cần thiết trong cấu trúc hợp đồng, Hàm trình xác thực và triển khai lớp lift để xử lý các giá trị tham số trong thời gian chạy. Ngoài ra, chúng ta đã xem xét các lợi thế và sự đánh đổi liên quan đến các hợp đồng được tham số hóa, cung cấp thông tin chuyên sâu về quy trình ra quyết định khi lựa chọn giữa các phương pháp tiếp cận khác nhau.

Nhìn chung, các hợp đồng được tham số hóa mở ra những khả năng mới để thiết kế các hợp đồng thông minh có khả năng thích ứng, bảo mật và phù hợp hơn với các trường hợp sử dụng cụ thể.

Xem video

040305 - Offchain Code with Lucid

PPP 040305 - Mã Offchain với Lucid

Chuỗi khối Cardano cung cấp một nền tảng mạnh mẽ để thực thi mã on-chain, nhưng nó cũng cung cấp khả năng tương tác với blockchain off-chain. Mã off-chain liên quan đến việc truy vấn blockchain để biết thông tin, xây dựng và gửi giao dịch. Trong Bài giảng này, chúng ta sẽ đi sâu vào khái niệm mã off-chain và khám phá cách Lucid, một gói npm, có thể được sử dụng để viết mã JavaScript hoặc TypeScript để tương tác với Cardano. Lucid đơn giản hóa quy trình làm việc với blockchain Cardano, cung cấp cách tiếp cận hiệu quả và thân thiện với người dùng hơn. Chúng ta sẽ xem xét một ví dụ thực tế về việc sử dụng Lucid để xây dựng một ứng dụng phi tập trung (DApp) tương tác với hợp đồng Vesting trên mạng thử nghiệm Cardano.

Tổng quan về mã off-chain

Mã on-chain đề cập đến trình xác thực và tập lệnh Plutus được thực thi trong quá trình xác thực trên blockchain Cardano. Mặt khác, mã off-chain liên quan đến việc tương tác với blockchain, chẳng hạn như truy vấn UTXO (Đầu ra giao dịch chưa được sử dụng) cũng như xây dựng và gửi giao dịch. Mặc dù Cardano CLI (Giao diện dòng lệnh) là một công cụ mạnh mẽ để làm việc với blockchain, nhưng nó thường yêu cầu lao động thủ công và có thể tốn thời gian. Lucid, một gói npm, cung cấp một giải pháp thay thế để viết mã off-chain bằng JavaScript hoặc TypeScript, làm cho nó dễ tiếp cận và thuận tiện hơn.

Giới thiệu về Lucid và Thiết lập Môi trường

Để bắt đầu, chúng ta cần cài đặt Lucid, có thể tìm thấy bằng cách tìm kiếm Lucid Cardano trên Google. Lucid là gói npm cho phép chúng ta viết mã off-chain bằng JavaScript hoặc TypeScript. Bài giảng cung cấp liên kết đến các ví dụ cơ bản và tài liệu API cho Lucid. Tác giả cũng đã phát triển một DApp tương tác với hợp đồng Vesting và Bài giảng cung cấp hướng dẫn về cách dùng thử. Sau khi điều hướng đến thư mục Lucid trong thư mục mã được cung cấp, chúng ta có thể cài đặt các phụ thuộc bằng npm và khởi động DApp. DApp được thiết kế để hoạt động với ví Nami, nhưng nó cũng có thể được điều chỉnh cho các ví dựa trên trình duyệt khác.

Tương tác với DApp và Ví Nami

Khi chạy DApp lần đầu tiên, plugin ví Nami sẽ nhắc chúng ta kết nối với DApp. Sau khi được kết nối, DApp sẽ hiển thị hàm hash và số dư khóa công khai của chúng ta trong ADA thử nghiệm. Tác giả gợi ý sử dụng hai tài khoản ví Nami, chỉ định một tài khoản là người tạo hợp đồng Vesting và tài khoản còn lại là Redeemer. Bài giảng cung cấp hướng dẫn về cách sao chép mã hash công khai cho ví của Redeemer. Bằng cách chuyển đổi ví trong DApp, chúng ta có thể tạo hợp đồng Vesting và yêu cầu tiền được giao. Bài giảng hướng dẫn chúng ta quy trình tạo hợp đồng Vesting bằng cách chỉ định mã hash khóa công khai của Redeemer, số lượng ADA được trao và thời hạn. Ví Nami sẽ nhắc chúng ta ký giao dịch và sau khi được xác nhận, hợp đồng sẽ được triển khai trên mạng thử nghiệm. DApp sẽ hiển thị hợp đồng Vesting đã tạo và các chi tiết của nó, bao gồm UTXO và Datum đính kèm.

Yêu cầu tiền được giao

Sau khi chuyển sang ví của Redeemer, chúng ta có thể cố gắng yêu cầu số tiền được giao. DApp cho phép chúng ta chỉ định UTXO để yêu cầu bằng cách cung cấp TxOutRef của nó. Tuy nhiên, nếu chúng ta cố gắng yêu cầu số tiền trước thời hạn, chúng ta sẽ gặp lỗi cho biết giao dịch không hợp lệ. Điều này thể hiện Hàm dựa trên thời gian của hợp đồng Vesting. Khi thời hạn đã qua, chúng ta có thể yêu cầu thành công số tiền được giao và DApp sẽ hiển thị số dư cập nhật.

Chi tiết phân tích và triển khai mã

Bài giảng đi sâu vào mã đằng sau DApp, tập trung vào tệp index.js chính. Nó giải thích quá trình nhập Lucid

.

Xem video

040306 - Reference Scripts

PPP 040306 - tập lệnh tham chiếu

Lucid D là một ngôn ngữ lập trình mạnh mẽ được sử dụng để phát triển các ứng dụng phi tập trung (DApps) trên blockchain Cardano. Trong Bài giảng này, chúng ta sẽ khám phá một biến thể của Lucid D kết hợp các tập lệnh tham chiếu, một tính năng được giới thiệu sau Vasil Hard Fork. Các tập lệnh tham chiếu cung cấp một giải pháp thay thế cho việc bao gồm các tập lệnh trực tiếp trong các giao dịch, mang lại các lợi ích như giảm kích thước blockchain và cải thiện hiệu quả lưu trữ. Chúng ta sẽ đi sâu vào khái niệm về các tập lệnh tham chiếu, thảo luận về các ưu điểm và trường hợp sử dụng của chúng, đồng thời cung cấp hướng dẫn từng bước về cách triển khai và triển khai chúng trong Lucid dApplication.

Hiểu tập lệnh tham chiếu

Theo truyền thống, khi một giao dịch cần sử dụng tập lệnh, tập lệnh phải được đưa trực tiếp vào giao dịch. Cách tiếp cận này dẫn đến việc bao gồm lặp đi lặp lại cùng một tập lệnh trên nhiều giao dịch, dẫn đến tăng kích thước blockchain và yêu cầu lưu trữ cao hơn. Tuy nhiên, với việc giới thiệu các tập lệnh tham chiếu, quy trình này đã được tối ưu hóa.

Các tập lệnh tham chiếu cho phép các giao dịch tham chiếu Đầu ra được tạo trước đó có chứa tập lệnh mong muốn thay vì bao gồm chính tập lệnh đó. Điều này làm giảm kích thước của giao dịch, vì một con trỏ tới Đầu ra được tham chiếu nhỏ hơn nhiều so với chính tập lệnh. Do đó, chi phí liên quan đến việc sử dụng tập lệnh tham chiếu thấp hơn so với việc đưa toàn bộ tập lệnh vào mỗi giao dịch.

Chọn slot cho tập lệnh tham chiếu

Khi sử dụng tập lệnh tham chiếu, câu hỏi đầu tiên nảy sinh là nơi gửi tập lệnh tham chiếu. Mặc dù nó có thể được đặt trong bất kỳ UTXO (Đầu ra giao dịch chưa xác định) tùy biến nào, nhưng việc chọn địa chỉ thích hợp là rất quan trọng. Một số tùy chọn tồn tại cho mục đích này.

Để kiểm tra và thử nghiệm, người ta có thể chọn gửi tập lệnh tham chiếu đến địa chỉ ví của chính họ. Điều này cho phép dễ dàng truy xuất tập lệnh và tạo điều kiện cho việc chi tiêu tiếp theo của các quỹ liên quan. Tuy nhiên, đối với các ứng dụng sẵn sàng sản xuất, nên đặt tập lệnh tham chiếu vào một địa chỉ không thể truy xuất được nữa. Một tùy chọn phù hợp là tập lệnh Burn, một tập lệnh đơn giản luôn tạo ra lỗi và ngăn việc sử dụng bất kỳ UTXO nào được liên kết với nó. Bằng cách triển khai tập lệnh tham chiếu đến địa chỉ ghi, người ta đảm bảo tính bất biến của nó, đảm bảo rằng con trỏ sẽ luôn trỏ đến UTXO mong muốn.

Triển khai các tập lệnh tham chiếu trong Lucid D

Để chứng minh việc sử dụng các tập lệnh tham chiếu trong Lucid D, chúng ta sẽ kiểm tra một mã mẫu bao gồm tập lệnh ghi và tập lệnh Vesting. Tập lệnh ghi, như đã đề cập trước đó, là tập lệnh cơ bản bỏ qua các đối số của nó và luôn tạo ra lỗi. Tập lệnh vesting đại diện cho tập lệnh mà chúng ta muốn tham chiếu trong các giao dịch của mình.

Chúng ta bắt đầu bằng cách triển khai tập lệnh Vesting cho một outref TX cụ thể (tham chiếu Đầu ra giao dịch) được liên kết với địa chỉ ghi. Bước này liên quan đến việc tạo một giao dịch mới và chỉ định địa chỉ ghi là người nhận. Tập lệnh trao quyền được bao gồm dưới dạng tập lệnh tùy chọn trong giao dịch này. Sau khi triển khai thành công, UTXO kết quả chứa tập lệnh Vesting, tập lệnh này có thể được tham chiếu trong các giao dịch tiếp theo.

Khi xây dựng một giao dịch xác nhận quyền sở hữu, chúng ta không cần phải bao gồm trực tiếp tập lệnh Vesting nữa. Thay vào đó, chúng ta sử dụng Hàm đọc từ trong Lucid D để chỉ định UTXO tham chiếu có chứa tập lệnh. Điều này chỉ ra rằng UTXO được tham chiếu phải được coi là Đầu vào tham chiếu trong giao dịch. Phần còn lại của giao dịch vẫn giống như trước đây, ngoại trừ bản thân tập lệnh không được bao gồm.

Chi phí triển khai và triển khai

Trong giao diện DApp, chúng ta giới thiệu một nút Deploy để kích hoạt việc triển khai tập lệnh Vesting tới địa chỉ ghi. Việc triển khai tập lệnh phát sinh chi phí, chủ yếu bao gồm tiền đặt cọc. Tiền gửi là

bắt buộc đối với mỗi UTXO được liên kết với tập lệnh Vesting, với số lượng tùy thuộc vào kích thước của dữ liệu được lưu trữ trong tập lệnh.

Chúng ta xem qua quy trình triển khai, ký giao dịch và quan sát hàm hash giao dịch thu được. Hash này, cùng với chỉ mục Đầu ra, xác định duy nhất slot của tập lệnh tham chiếu. Bằng cách khám phá Cardano Explorer, chúng ta có thể xác minh sự hiện diện của tập lệnh Vesting trong TxOutRef mong muốn và xác nhận tính bất biến của nó.

Phần kết luận

Trong Bài giảng này, chúng ta đã khám phá các tập lệnh tham chiếu trong Lucid D và những ưu điểm của chúng so với việc đưa các tập lệnh vào giao dịch truyền thống. Chúng ta đã kiểm tra quá trình triển khai tập lệnh tham chiếu, chọn địa chỉ thích hợp và xây dựng các giao dịch tham chiếu tập lệnh thay vì trực tiếp đưa tập lệnh đó vào. Bằng cách tận dụng các tập lệnh tham chiếu, các nhà phát triển có thể tối ưu hóa hiệu quả lưu trữ và giảm kích thước blockchain. Sự hỗ trợ của Lucid D cho các tập lệnh tham chiếu mở ra những khả năng mới để phát triển DApp hiệu quả và có thể mở rộng trên blockchain Cardano.

Xem video

040307 - Homework

PPP 040307 - Bài tập về nhà

Trong bài tập về nhà này, chúng ta sẽ khám phá hai nhiệm vụ liên quan đến việc triển khai hợp đồng thông minh trên nền tảng blockchain. Nhiệm vụ đầu tiên liên quan đến việc triển khai một biến thể trên Trình xác thực quyền sở hữu, giới thiệu hai Redeemer và thời hạn. Nhiệm vụ thứ hai tập trung vào việc viết một hợp đồng thử nghiệm được tham số hóa, với Redeemer là tham số và thời hạn là Datum. Ngoài ra, chúng ta sẽ thảo luận về các sửa đổi có thể có đối với DApps, chẳng hạn như lọc ra các UTXO cụ thể dựa trên điều kiện của Redeemer và thời hạn.

Nhiệm vụ 1: Triển khai Biến thể trên Trình xác thực Vesting

Đối với bài tập về nhà này, chúng ta được giao nhiệm vụ triển khai một biến thể trên Trình xác thực quyền sở hữu. Mục tiêu chính là cho phép hai Redeemer tiếp cận các quỹ dựa trên thời hạn cụ thể. Logic đằng sau việc triển khai được giải thích chi tiết bên dưới.

Hợp đồng chuyển nhượng sẽ có các điều kiện sau:

  1. Redeemer đầu tiên có thể chi tiêu UTXO trước thời hạn.
  2. Redeemer thứ hai chỉ có thể chi tiêu UTXO sau thời hạn.

Hãy xem xét một Script trong đó một người muốn chuyển tiền cho Redeemer đầu tiên. Tuy nhiên, nếu Redeemer đầu tiên không nhận được tiền trước thời hạn, thì người tặng ban đầu muốn đòi lại tiền. Trong trường hợp như vậy, Redeemer thứ hai, người tạo ra hợp đồng Vesting, sẽ chịu trách nhiệm đòi lại tiền.

Để hoàn thành xuất sắc nhiệm vụ này, bạn nên triển khai mã và logic cần thiết để đáp ứng các điều kiện đã chỉ định. Việc triển khai này sẽ yêu cầu sự hiểu biết về lập trình hợp đồng thông minh và nền tảng mà mã sẽ được triển khai.

Nhiệm vụ 2: Viết hợp đồng thử nghiệm tham số hóa

Nhiệm vụ thứ hai trong bài tập về nhà này liên quan đến việc viết một hợp đồng thử nghiệm được tham số hóa. Trong hợp đồng này, Redeemer sẽ là tham số, trong khi thời hạn sẽ là Datum. Cần lưu ý rằng việc sử dụng Datum làm hạn chót có thể là lựa chọn tốt nhất cho trường hợp này.

Để hoàn thành nhiệm vụ này, bạn sẽ cần viết một hợp đồng cho phép thử nghiệm với các địa chỉ Redeemer khác nhau và thời hạn tương ứng. Việc tham số hóa sẽ cung cấp tính linh hoạt và cho phép hợp đồng dễ dàng thích ứng với các tình huống và người tham gia khác nhau. Viết các bài kiểm tra hiệu quả cho hợp đồng sẽ đảm bảo rằng nó hoạt động như dự định và đáp ứng các yêu cầu đã chỉ định.

Để kiểm tra việc triển khai, bạn có thể sử dụng bộ kiểm tra được cung cấp. Chạy các bài kiểm tra có thể được thực hiện bằng cách sử dụng lệnh cabal test hoặc cabal test tuần thứ ba bài tập về nhà. Xin lưu ý rằng đã có sự thay đổi trong quy ước đặt tên của các bài tập về nhà, trong đó tuần hiện được thêm tiền tố vào bài tập về nhà thuật ngữ.

Sửa đổi DApps:

Ngoài các nhiệm vụ triển khai, bạn nên cân nhắc sửa đổi các DApp hiện có. Một sửa đổi khả thi là giới thiệu các khả năng lọc cho UTXO dựa trên các điều kiện của Redeemer và thời hạn. Bằng cách lọc ra các UTXO không khớp với Redeemer được kết nối của ví hiện tại, bạn có thể nâng cao trải nghiệm người dùng và cung cấp giao diện hợp lý hơn. Sự sửa đổi này đảm bảo rằng chỉ những UTXO được cấp có liên quan mới được hiển thị, giúp người dùng dễ dàng theo dõi và xác nhận số tiền được cấp của chúng hơn.

Ngoài ra, bạn có thể muốn lọc ra các UTXO đã hết thời hạn. Bộ lọc này sẽ ngăn người dùng cố gắng yêu cầu tiền sau khi đã hết thời hạn quy định, giúp tối ưu hóa hơn nữa Hàm của DApp.

Phần kết luận:

Tóm lại, bài tập về nhà này xoay quanh việc triển khai một biến thể trên Trình xác thực quyền sở hữu và viết một hợp đồng thử nghiệm được tham số hóa. Bằng cách hoàn thành xuất sắc các nhiệm vụ này, bạn sẽ có được kinh nghiệm quý báu trong việc lập trình và thử nghiệm hợp đồng thông minh. Ngoài ra, việc khám phá các sửa đổi có thể có đối với DApps sẽ cung cấp thông tin chuyên sâu về việc cải thiện giao diện người dùng và nâng cao Hàm. Hãy nhớ tham khảo bộ thử nghiệm được cung cấp và sử dụng các công cụ của nền tảng để xác minh tính chính xác của việc triển khai của bạn. Chúc may mắn với bài tập về nhà của bạn!

Xem video

040308 - Summary

PPP 040308 - Tổng hợp

Bài giảng này cung cấp một bản tóm tắt toàn diện về bài giảng thứ ba trong Chuỗi bài học về lập trình Plutus (PPP). Bài giảng bao gồm nhiều chủ đề khác nhau, bao gồm Kiểu Script Contexts, xử lý thời gian trong hợp đồng Plutus, tập lệnh được tham số hóa và việc sử dụng mã off-chain. Mỗi chủ đề được khám phá chi tiết, cung cấp những hiểu biết có giá trị về thế giới phát triển hợp đồng thông minh của Plutus.

Các loại Script Contexts và TXinfo:

Bài giảng bắt đầu bằng việc khám phá Kiểu Script Contexts, đặc biệt tập trung vào Kiểu TXinfo. Kiểu TXInfo cung cấp thông tin quan trọng về giao dịch hiển thị đối với hợp đồng thông minh Plutus. Bằng cách hiểu Kiểu TXinfo, các nhà phát triển hiểu rõ hơn về các đặc điểm của giao dịch và có thể điều chỉnh logic hợp đồng của chúng cho phù hợp. Bài giảng đi sâu vào các yếu tố khác nhau của Kiểu TXinfo và cách chúng có thể được tận dụng một cách hiệu quả.

Xử lý thời gian trong Plutus:

Sau đó, bài giảng chuyển sang thảo luận về cách xử lý thời gian trong Plutus. Duy trì tính tất định trong hợp đồng thông minh trong khi xem xét thời gian trong thế giới thực là một nhiệm vụ đầy thách thức. Tuy nhiên, Plutus cung cấp các cơ chế để giải quyết vấn đề này. Bài giảng khám phá các kỹ thuật và chiến lược được sử dụng bởi Plutus để đảm bảo rằng các hợp đồng vẫn mang tính quyết định trong khi vẫn phù hợp với thời điểm hiện tại. Một ví dụ thực tế về hợp đồng Vesting được sử dụng để minh họa các khái niệm này và chứng minh việc triển khai thực tế của chúng.

Tập lệnh được tham số hóa:

Tiếp theo, bài giảng chuyển trọng tâm sang các tập lệnh được tham số hóa. Các tập lệnh này được thiết kế để phụ thuộc vào một hoặc nhiều tham số, cho phép tùy chỉnh và linh hoạt hơn. Bài giảng khám phá những lợi ích của các tập lệnh được tham số hóa và cách chúng cho phép các nhà phát triển tạo mã linh hoạt và có thể tái sử dụng. Các ví dụ thực tế được cung cấp để giới thiệu sức mạnh và tiện ích của các tập lệnh được tham số hóa trong hệ sinh thái hợp đồng thông minh Plutus.

Mã off-chain và Phát triển DApp:

Sau đó, bài giảng đi sâu vào thế giới của mã off-chain và vai trò của nó trong việc phát triển các ứng dụng phi tập trung (DApps). Lucid, một ngôn ngữ lập trình thường được sử dụng trong hệ sinh thái Plutus, được giới thiệu như một công cụ để viết mã off-chain. Những người tham dự được hướng dẫn quy trình sử dụng Lucid để tương tác với một hợp đồng Vesting được xác định trước đó trong bài giảng. Bài giảng nhấn mạnh tầm quan trọng của mã off-chain trong việc cho phép tương tác động với hợp đồng thông minh và nâng cao trải nghiệm người dùng.

tập lệnh tham chiếu để tối ưu hóa giao dịch:

Trong phần cuối cùng của bài giảng, các tập lệnh tham chiếu được khám phá như một phương tiện để tối ưu hóa quy mô giao dịch. Các tập lệnh tham chiếu đưa ra một kỹ thuật giúp thực hiện các giao dịch nhỏ hơn và hiệu quả hơn. Bằng cách tham khảo các tập lệnh có sẵn, các nhà phát triển có thể giảm bớt sự dư thừa và hợp lý hóa mã của họ. Bài giảng cung cấp một ví dụ thực tế để chứng minh cách sử dụng các tập lệnh tham chiếu một cách hiệu quả.

Phần kết luận:

Bài giảng thứ ba trong Chuỗi chương trình Plutus bao gồm một loạt các chủ đề quan trọng liên quan đến phát triển hợp đồng thông minh trong Plutus. Từ việc hiểu Kiểu Script Contextss và TXinfo, đến quản lý thời gian trong hợp đồng, sử dụng các tập lệnh được tham số hóa và tận dụng mã off-chain, người tham dự có được những hiểu biết sâu sắc và kiến ​​thức thực tế có giá trị. Bài giảng trang bị cho các nhà phát triển các công cụ và kỹ thuật cần thiết để xây dựng các hợp đồng thông minh mạnh mẽ và hiệu quả trong hệ sinh thái Plutus.

Xem video

040309 - Q&A Week 3

PPP 040309 - Hỏi Đáp Tuần 3

Trong bản ghi phiên hỏi đáp này, những người tham gia thảo luận về các chủ đề khác nhau liên quan đến hợp đồng thông minh, blockchain và khóa học đang diễn ra về lập trình on-chain Plutus. Cuộc trò chuyện đề cập đến các khía cạnh như tiêu thụ tự động hợp đồng thông minh, khuyến khích giao dịch, cập nhật chứng chỉ Plutus Pioneer NFT và các chi tiết kỹ thuật về triển khai Kiểu dữ liệu đại số và chuyển đổi chúng thành Datums` hoặc Redeemers. Những người tham gia cũng giải quyết các câu hỏi về Docker và mô đun hóa các thành phần khác nhau. Phiên họp kết thúc với phản hồi và lời chúc tốt đẹp cho tuần tới.

Người tham gia 1: Vậy, điều gì sẽ xảy ra nếu chúng tôi tạo hợp đồng quà tặng trong UTXO với một món quà cho ai đó, nhưng người đó không biết cách nhận quà? Có cách nào để người nhận tự động sử dụng hợp đồng thông minh không?

Người tham gia 2: Bản thân blockchain là một thực thể thụ động và không thực hiện bất kỳ hành động nào. Nó chỉ hoạt động khi các giao dịch tạo ra thay đổi. . Vì vậy, có hai cách để thực hiện thanh toán cho người đó. Một cách là có một số cơ chế off-chain phát hiện nhu cầu tiêu dùng và tạo giao dịch cho người nhận. Một cách khác là thiết kế hợp đồng quà tặng theo cách khuyến khích người khác thực hiện giao dịch. Ví dụ: bạn có thể trả phí 1% cho bất kỳ ai thực hiện giao dịch, do đó cho phép người nhận thực sự nhận được quà tặng. Trong cả hai trường hợp, ai đó từ bên ngoài blockchain cần thực hiện một hành động để chuỗi thay đổi.

Người tham gia 3: Chúng tôi có nhận xét và câu hỏi. Manuel nói xin chào và xác nhận rằng mọi thứ đều ổn với bài tập về nhà cho phần hai. Anh ấy đang sử dụng ứng dụng Plutus và hài lòng với điểm tín dụng. Cảm ơn!

Người tham gia 2: Thật tuyệt khi được nghe điều đó, Manuel! Bạn không cần phải sử dụng Docker nếu muốn. Bạn có thể sử dụng ứng dụng NYX và Plutus nếu cảm thấy thoải mái với điều đó. Chúng tôi rất vui vì bạn đang tận hưởng khóa học.

Người tham gia 4: Tôi có câu hỏi về trạng thái của chứng chỉ Plutus Pioneer NFT. Nó sẽ được mở khóa sau khi hoàn thành khóa học?

Người tham gia 2: Chúng tôi vẫn đang khám phá các tùy chọn cho chứng chỉ Plutus Pioneer NFT và chúng tôi đang thảo luận với bộ phận pháp lý của mình. Chúng tôi sẽ thông báo cho tất cả các bạn về bất kỳ bản cập nhật nào. Hiện tại, chúng tôi không có bản cập nhật cụ thể, nhưng nó chắc chắn nằm trong danh sách các mục cần giải quyết của chúng tôi.

Người tham gia 5: Nếu không có câu hỏi nào khác, chúng tôi có thể chuyển sang câu hỏi từ Discord về Redeemer và định dạng dữ liệu. Làm cách nào chúng tôi có thể triển khai nó trong mã off-chain bằng Lucid?

Người tham gia 6: Hãy để tôi chia sẻ màn hình của mình để chúng tôi có thể thảo luận trực quan. Đây là câu hỏi từ Discord:

Trong mã on-chain Plutus, tôi có thẻ dữ liệu Redeemer giống như sau: Trình xử lý dữ liệu Redeemer = Cập nhật | Mint. Đó là dữ liệu đại số Kiểu. Làm cách nào tôi có thể triển khai nó hoặc viết nó dưới dạng mã off-chain trong Lucid?`

Người tham gia 6: Đó là một câu hỏi hợp lệ. Trong Lucid, chúng tôi có Constructor tương ứng với các Kiểu dữ liệu khác nhau, chẳng hạn như số nguyên, chuỗi, mảng, Map và Constructor cho dữ liệu đại số Kiểu. Bạn có thể triển khai nó bằng cách sử dụng Constructor do Lucid cung cấp. Ví dụ: nếu bạn có Kiểu MyRedeemer với các tùy chọn OptionAOptionB, thì bạn có thể ghim chúng vào các chỉ mục cụ thể bằng hàm makeIsData. Bạn cũng có thể sử dụng Hàm makeIsDataIndexed để kiểm soát nhiều hơn việc lập chỉ mục.

Người tham gia 6: Để chứng minh, hãy xem xét một ví dụ với Vesting Datum. Tôi đã thêm MyRedeemer Kiểu với hai tùy chọn.

Xem video

Tuần 4


040401 - On-chain vs Off-chain

PPP 040401 - on-chain so với off-chain

Sự phát triển của các hợp đồng thông minh đã có những tiến bộ đáng kể trong thời gian gần đây, giới thiệu nhiều tùy chọn khác nhau cho cả mã on-chain và mã off-chain. Mặc dù việc làm quen với các công cụ cụ thể là rất quan trọng, nhưng việc nắm bắt các khái niệm cơ bản chi phối các công cụ này cũng quan trọng không kém. Sự hiểu biết này cho phép các nhà phát triển thích ứng nhanh chóng với những thay đổi công nghệ và chuyển đổi liền mạch giữa các công cụ và ngôn ngữ lập trình khác nhau. Trong Bài giảng này, chúng ta sẽ đi sâu vào sự khác biệt giữa mã on-chain và off-chain trong hợp đồng thông minh, khám phá vai trò và đặc điểm của chúng, đồng thời hiểu rõ hơn về các ứng dụng thực tế của chúng.

Mã on-chain: Đảm bảo tính toàn vẹn

Khi chúng ta đề cập đến mã on-chain, về cơ bản, chúng ta đang nói về mã thực thi trong node blockchain trong quá trình đưa vào các giao dịch mới. Mã này hoạt động trên chính giao dịch, bao gồm các ký hiệu, Đầu ra và trình xác thực chịu trách nhiệm xác minh tính hợp lệ của giao dịch. Mã on-chain rất quan trọng trong việc đảm bảo tính toàn vẹn của các giao dịch, vì nó được lưu trữ trong sổ cái bất biến về mặt mật mã của blockchain, ngăn chặn các sửa đổi trái phép. Tuy nhiên, cần lưu ý rằng mã on-chain sử dụng nhiều tài nguyên và đi kèm với các cân nhắc về hiệu suất và bảo mật. Nó phải được kiểm tra kỹ lưỡng và đáp ứng các tiêu chuẩn cần thiết để đảm bảo độ tin cậy và bảo mật của mạng blockchain.

Mã off-chain: Tận dụng tính linh hoạt

Trái ngược với mã on-chain, mã off-chain chạy trên thiết bị của người dùng hoặc nhà cung cấp dịch vụ, cho phép chúng truy vấn blockchain, xây dựng và gửi giao dịch cũng như thực hiện các hoạt động khác nhau liên quan đến hợp đồng thông minh. Mã off-chain cung cấp tính linh hoạt và quyền truy cập vào ví và tài nguyên của người dùng. Không giống như mã on-chain phải được đồng bộ hóa và xác thực bởi tất cả các node mạng, mã off-chain có thể dễ dàng sửa đổi mà không ảnh hưởng đến các tiêu chuẩn bảo mật và hiệu suất của blockchain cơ bản. Tuy nhiên, điều quan trọng là phải thận trọng khi làm việc với mã off-chain, vì bất kỳ lỗ hổng hoặc lỗi nào cũng có thể ảnh hưởng đến tính bảo mật của ví hoặc tài nguyên của người dùng.

Mã phân tách: Cân bằng ưu điểm và hạn chế

Cần phải phân tách mã thành các thành phần on-chain và off-chain do những ưu điểm và hạn chế vốn có của chúng. Mã on-chain đảm bảo tính toàn vẹn của giao dịch nhưng có thể tốn kém về mức tiêu thụ tài nguyên. Mặt khác, mã off-chain thiếu các đảm bảo về tính toàn vẹn được cung cấp bởi mã on-chain nhưng cung cấp khả năng truy cập và linh hoạt hơn vào tài nguyên của người dùng. Đạt được sự cân bằng giữa mã on-chain và mã off-chain là điều cần thiết để tạo ra một hệ sinh thái blockchain nhanh, nhẹ và giá cả phải chăng.

Đường ống biên dịch mã on-chain

Quá trình biên dịch mã on-chain bao gồm một số bước để chuyển đổi mã thành định dạng có thể được thực thi bởi node blockchain. Bắt đầu với Plutus Tx, một ngôn ngữ cấp cao được các nhà phát triển sử dụng, mã này trải qua các giai đoạn biên dịch như chuyển đổi sang GHC Core, biên dịch sang Biểu diễn trung gian Plutus Core (IR) và chuyển đổi thêm thành Không xác định Kiểu Plutus Core. Đại diện Không xác định Kiểu Plutus Core cuối cùng là những gì node thực thi để xác thực các giao dịch. Mặc dù các bước trung gian rất quan trọng để kiểm tra và xác minh độc lập, trọng tâm vẫn là đảm bảo rằng Không xác định Kiểu Plutus Core được thực thi on-chain. Tính linh hoạt này cho phép các nhà phát triển khám phá các ngôn ngữ cấp cao thay thế có thể biên dịch thành các giai đoạn trung gian, mở rộng các tùy chọn có sẵn để phát triển hợp đồng thông minh.

Sử dụng mã off-chain với Cardano CLI

Mã off-chain cung cấp cho các nhà phát triển khả năng tương tác với blockchain, truy vấn trạng thái của nó, xây dựng giao dịch và thực hiện các hoạt động khác. Các công cụ như Cardano CLI tạo điều kiện thuận lợi cho các tương tác này. Truy vấn blockchain yêu cầu truy xuất thông tin liên quan đến giao dịch cụ thể, chẳng hạn như Đầu vào, Đầu ra, giá trị, trạng thái và tập lệnh. Thông tin này có thể thu được bằng cách chạy một node cục bộ, đồng bộ hóa cơ sở dữ liệu cục bộ hoặc từ xa với bộ chỉ mục chuỗi hoặc sử dụng các công cụ của bên thứ ba với các node và cơ sở dữ liệu của riêng họ. Bằng cách tận dụng mã off-chain, các nhà phát triển có được thông tin chi tiết

.

Xem video

040402 - Off-chain Code with Cardano CLI and GUI

PPP 040402 - Mã off-chain với Cardano CLI và GUI

Trong Bài giảng này, chúng ta sẽ đi sâu vào thế giới của Giao diện dòng lệnh Cardano (CLI) và Giao diện người dùng đồ họa (GUI). Trọng tâm của chúng ta sẽ là tìm hiểu các Hàm và khả năng của công cụ Cardano CLI GUI. Chúng ta cũng sẽ khám phá cách sử dụng Cardano CLI theo cách thủ công, bao gồm các chủ đề như quản lý nhiều Đầu vào và Đầu ra của giao dịch, cân bằng các giao dịch và sử dụng tính năng trợ giúp. Ngoài ra, chúng ta sẽ thảo luận về những hạn chế và nhược điểm của Cardano CLI. Đến cuối Bài giảng này, bạn sẽ có hiểu biết toàn diện về cách làm việc với mã off-chain bằng Cardano CLI và GUI.

Bắt đầu

Để theo dõi phần trình bày này, bạn sẽ cần trình chỉnh sửa Mã VS với Bộ chứa Tap được chuẩn bị cho chương trình Plutus Spaniel để tạo. Bạn cũng sẽ cần sao chép kho lưu trữ Cardano-cli-green từ trang HK GitHub Đầu vào-Đầu ra. Công cụ GUI không hoạt động từ bên trong vùng chứa độ sâu, vì vậy bạn sẽ phải cài đặt thủ công. Có hai tùy chọn khả dụng: làm theo hướng dẫn GUI theo cách thủ công hoặc sử dụng các tệp thực thi được cung cấp trong thư mục executable của kho lưu trữ. Hiện tại, các tệp thực thi có sẵn cho Linux và Windows, với một tệp thực thi cho macOS sẽ được bổ sung sau. Bạn nên chạy GUI trên hệ điều hành kiểu Unix để có hiệu suất tối ưu.

Cài đặt Node Cardano

Trước khi sử dụng Cardano CLI GUI, bạn cần cài đặt node Cardano. Hướng dẫn cài đặt như sau:

  1. Tải xuống node Cardano từ trang GitHub chính thức.
  2. Điều hướng đến phần nhị phân tĩnh và chọn tệp trình cài đặt thích hợp cho hệ điều hành của bạn (Linux, Windows hoặc macOS).
  3. Tải xuống các tệp cấu hình cần thiết cho testnet hoặc mainnet.
  4. Đặt các tệp nhị phân và tệp cấu hình đã tải xuống vào slot tương ứng của chúng, đảm bảo người dùng có thể truy cập chúng.
  5. Khởi động node Cardano bằng lệnh hoặc tập lệnh shell được cung cấp. Đợi node đồng bộ hóa với mạng.

Hiểu GUI Cardano CLI

Cardano CLI GUI cung cấp giao diện thân thiện với người dùng để tương tác với blockchain Cardano. Phần này sẽ hướng dẫn bạn về các tính năng và Hàm khác nhau của GUI.

  1. Truy vấn thông tin: Tìm hiểu cách xem các tệp hiện có và tạo tệp mới bằng cách sử dụng tab truy vấn. Khám phá các tùy chọn để tạo các tệp khóa xác minh và thanh toán, cũng như các địa chỉ được liên kết với chúng.

  2. Gửi tiền: Hiểu quy trình gửi tiền từ địa chỉ thanh toán này sang địa chỉ thanh toán khác bằng cách sử dụng tab giao dịch. Khám phá ước tính phí giao dịch và gửi giao dịch.

  3. Hợp đồng thông minh: Khám phá cách gửi tiền cho các hợp đồng thông minh bằng cách sử dụng tab hợp đồng thông minh. Tạo địa chỉ tập lệnh, nhập tệp tập lệnh và gửi tiền đến các địa chỉ được chỉ định. Tìm hiểu về quy trình xác thực và mua lại liên quan đến hợp đồng thông minh.

Khám phá Cardano CLI

Mặc dù GUI cung cấp một giao diện thuận tiện, nhưng điều cần thiết là phải hiểu giao diện dòng lệnh cơ bản, giao diện này mang lại khả năng kiểm soát và tính linh hoạt cao hơn. Phần này sẽ hướng dẫn bạn qua các lệnh Cardano CLI và các Hàm của chúng.

  1. Hoạt động địa chỉ: Tìm hiểu cách quản lý địa chỉ, bao gồm tạo, kiểm tra và sửa đổi tệp địa chỉ. Hiểu các Kiểu địa chỉ khác nhau và tầm quan trọng của chúng trong hệ sinh thái Cardano.

  2. Thao tác khóa: Khám phá các thao tác liên quan đến quản lý khóa mật mã. Tạo, xác minh và kiểm tra các tệp chính, đồng thời hiểu vai trò của chúng trong việc ký kết các giao dịch và tương tác với mạng Cardano một cách an toàn.

  3. Hoạt động giao dịch: Nhận thông tin chi tiết về cách tạo và quản lý giao dịch bằng Cardano CLI. Tìm hiểu cách xây dựng giao dịch với nhiều Đầu vào và Đầu ra, ước tính phí giao dịch và ký giao dịch để đảm bảo tính hợp lệ của chúng.

  4. Hoạt động tiện ích: Khám phá các lệnh tiện ích khác nhau hỗ trợ quản lý và tương tác với mạng Cardano. Khám phá các lệnh để làm việc với siêu dữ liệu, token, địa chỉ, v.v.

Xem video

040403 - Off-chain Code with Kuber

PPP 040403 - Mã off-chain với Kuber

Mã off-chain đóng một vai trò quan trọng trong việc phát triển và thực thi các ứng dụng phi tập trung (dApps) trên nền tảng blockchain. Trong Bài giảng này, chúng ta sẽ đi sâu vào chủ đề mã off-chain bằng Kuber, thư viện Haskell và API JSON để soạn thảo các giao dịch Cardano và làm việc với phía off-chain của blockchain Cardano. Kuber nhằm mục đích cung cấp giao diện cấp cao để xây dựng giao dịch, đơn giản hóa quy trình và cho phép nhà phát triển tập trung vào logic của ứng dụng của chúng thay vì sự phức tạp của việc xây dựng giao dịch.

Trong hướng dẫn toàn diện này, chúng ta sẽ khám phá kho lưu trữ Kuber GitHub và trình bày cách sử dụng sân chơi Kuber, một giao diện thân thiện với người dùng để tương tác với API Kuber mà không cần cài đặt node đầy đủ. Chúng ta sẽ xem qua một ví dụ thực tế bằng cách sử dụng hợp đồng Vesting, cho thấy cách Kuber có thể được tận dụng để tạo và tương tác với các giao dịch theo cách khai báo.

Mục lục

  1. Giới thiệu
  2. Tìm hiểu về Kuber: Tổng quan cấp cao
  3. Bắt đầu với Kuber Playground
  4. Tóm tắt: Ví dụ Vesting
  5. Tạo Datum với Kuber
  6. Xây dựng giao dịch với Kuber 6.1. Chọn UTXO và Cân bằng giao dịch 6.2. Chỉ định Đầu ra và Values 6.3. Thêm Script Locks và Redeemers 6.4. Xử lý khoảng thời gian hiệu lực 6.5. Thêm chữ ký và hoàn thành giao dịch
  7. Kiểm tra Giao dịch trên Chuỗi khối Cardano
  8. Tương tác với Kuber trong ứng dụng của riêng bạn

Phần 2: Tìm hiểu về Kuber: Tổng quan cấp cao

Để cung cấp cho độc giả một nền tảng vững chắc, phần này cung cấp một cái nhìn tổng quan cấp cao về Kuber. Nó giải thích khái niệm về mã off-chain và nêu bật những lợi ích của việc sử dụng Kuber để xây dựng giao dịch và tương tác với blockchain Cardano.

Phần 3: Bắt đầu với Kuber Playground

Trong phần này, chúng ta hướng dẫn độc giả về quá trình bắt đầu với sân chơi Kuber. Chúng ta cung cấp hướng dẫn từng bước về cách truy cập sân chơi, thiết lập môi trường và hiểu giao diện người dùng của sân chơi.

Phần 4: Tóm tắt: Ví dụ về Vesting

Trước khi đi sâu vào phần trình diễn thực tế, điều quan trọng là phải tóm tắt lại ví dụ về lễ phục sẽ được sử dụng trong suốt hướng dẫn. Phần này cung cấp tổng quan về hợp đồng Vesting, trình xác thực của nó và các điều kiện mà nó kiểm tra tính hợp lệ của giao dịch.

Phần 5: Tạo Datum với Kuber

Phần này trình bày cách tạo Datum bằng Kuber. Người đọc sẽ tìm hiểu cách tạo hàm hash khóa công khai, chuyển đổi nó thành chuỗi byte và xây dựng Datum cần thiết cho ví dụ về hợp đồng Vesting.

Phần 6: Xây dựng giao dịch với Kuber

Phần 6 đi sâu vào Hàm cốt lõi của Kuber: xây dựng các giao dịch. Chúng ta hướng dẫn người đọc quy trình từng bước xây dựng giao dịch bằng định dạng JSON khai báo của Kuber. Phần này đề cập đến các khía cạnh khác nhau của việc xây dựng giao dịch, chẳng hạn như chọn UTXO, chỉ định Đầu ra và giá trị, thêm khóa tập lệnh và Redeemer, xử lý khoảng thời gian hiệu lực và thêm chữ ký để hoàn tất giao dịch.

Phần 7: Kiểm tra giao dịch trên Chuỗi khối Cardano

Sau khi giao dịch được tạo, điều quan trọng là phải kiểm tra Hàm của nó trên blockchain Cardano. Phần này giải thích cách chạy giao dịch trong sân chơi Kuber, ký giao dịch bằng ví và xác minh kết quả bằng trình khám phá blockchain.

Phần 8: Tương tác với Kuber trong ứng dụng của riêng bạn

Trong phần này, chúng ta khám phá cách các nhà phát triển có thể tận dụng Kuber API trong các ứng dụng của riêng họ.

Xem video

040404 - Off-chain Code with Lucid

PPP 040404 - Mã off-chain với Lucid

Lucid là một thư viện mạnh mẽ tạo điều kiện thuận lợi cho việc tạo các giao dịch Cardano cơ bản và cho phép phát triển mã off-chain chung cho các hợp đồng thông minh sử dụng JavaScript. Nó cung cấp trải nghiệm liền mạch để viết các ứng dụng front-end và back-end, khiến nó trở thành một công cụ linh hoạt cho các nhà phát triển blockchain. Bài giảng này sẽ đi sâu vào các Hàm và tính năng của Lucid, cung cấp hướng dẫn toàn diện về cách sử dụng thư viện này một cách hiệu quả. Từ cài đặt đến các ví dụ thực tế, chúng ta sẽ khám phá tiềm năng của Lucid trong việc nâng cao trải nghiệm phát triển Cardano của bạn.

Mục lục:

  1. Giới thiệu về Lucid

  2. Cài đặt và Thiết lập

  3. Khám phá kho lưu trữ Lucid GitHub

  4. Tận dụng Lucid với TypeScript

  5. Kết nối Lucid với Ví

  6. Xây dựng giao dịch với Lucid

  7. Kiểm tra ví dụ Vesting

  8. Thu tiền với Lucid

  9. Kết luận

  10. Giới thiệu về Lucid:

Lucid là một thư viện JavaScript hỗ trợ các nhà phát triển tạo các giao dịch Cardano và viết mã off-chain cho các hợp đồng thông minh. Nó cung cấp một giao diện đơn giản và trực quan, cho phép người dùng tương tác với blockchain Cardano một cách liền mạch. Với Lucid, các nhà phát triển có thể tận dụng sức mạnh của JavaScript để xây dựng cả ứng dụng mặt trước và mặt sau, biến nó thành một công cụ linh hoạt để phát triển Cardano.

  1. Cài đặt và Thiết lập:

Để bắt đầu sử dụng Lucid, bạn có ba tùy chọn cài đặt: npm cho ứng dụng Node.js, Dino cho giải pháp thay thế mới cho Node.js và đưa trực tiếp vào ứng dụng web. Phần này sẽ hướng dẫn bạn quy trình cài đặt cho từng tùy chọn, đảm bảo rằng bạn đã thiết lập Lucid chính xác cho môi trường phát triển của mình.

  1. Khám phá Kho lưu trữ Lucid GitHub:

Kho lưu trữ Lucid GitHub đóng vai trò là tài nguyên quý giá cho các nhà phát triển. Trong phần này, chúng ta sẽ khám phá kho lưu trữ, đặc biệt là các ví dụ được cung cấp và khám phá cách chúng có thể giúp hiểu được các khả năng của Lucid. Ngoài ra, chúng ta sẽ tìm hiểu về Dino Land, một phiên bản kết xuất của mã nguồn Lucid, cung cấp một môi trường tương tác để khám phá các tính năng và khả năng của Lucid.

  1. Tận dụng Lucid với TypeScript:

Lucid hỗ trợ cả JavaScript và TypeScript, với TypeScript cung cấp các lợi ích bổ sung như kiểm tra Kiểu tĩnh. Phần này sẽ trình bày cách viết mã Lucid bằng TypeScript, giới thiệu các phương pháp hay nhất và nêu bật những ưu điểm của việc sử dụng TypeScript trong các dự án Lucid của bạn.

  1. Kết nối Lucid với Ví:

Tương tác với ví là một khía cạnh quan trọng trong quá trình phát triển Cardano. Lucid đơn giản hóa quy trình này bằng cách cung cấp nhiều phương thức khác nhau để kết nối với ví. Phần này sẽ khám phá các tùy chọn khác nhau có sẵn để tích hợp ví và trình bày cách chọn ví bằng cách sử dụng cụm từ gốc. Nó cũng sẽ nhấn mạnh tầm quan trọng của việc giữ an toàn cụm từ gốc để bảo vệ ví và tiền của bạn.

  1. Xây dựng giao dịch với Lucid:

Lucid cho phép các nhà phát triển xây dựng các giao dịch thông qua một loạt các giai đoạn: xây dựng, ký kết và đệ trình. Phần này sẽ đi sâu vào từng giai đoạn, giải thích các phương thức và Hàm có sẵn trong Lucid để xây dựng các giao dịch. Đến cuối phần này, bạn sẽ hiểu rõ về cách tạo giao dịch bằng Lucid.

  1. Kiểm tra ví dụ Vesting:

Để minh họa các khả năng của Lucid trong Context thực tế, chúng ta sẽ khám phá ví dụ về quyền sở hữu. Ví dụ này giới thiệu cách khóa tiền bằng cách sử dụng địa chỉ tập lệnh nhịn ăn và sau đó thu thập các khoản tiền đó. Bằng cách làm theo hướng dẫn từng bước, bạn sẽ có được kinh nghiệm thực tế với Lucid và hiểu cách triển khai Hàm tương tự trong các dự án của riêng bạn.

  1. Thu tiền với Lucid:

Tiếp tục từ phần trước, chúng ta sẽ tập trung vào việc thu tiền bị khóa trong ví dụ về quyền sở hữu. Phần này sẽ hướng dẫn bạn quy trình truy vấn blockchain, xác định các Đầu ra giao dịch chưa sử dụng (UTXO) được liên kết với địa chỉ tập lệnh.

Xem video

040405 - Homework

PPP 040405 - Bài tập về nhà

Trong nhiệm vụ này, nhiệm vụ là phân tích và triển khai mã off-chain cho hai trình xác thực. Cả hai trình xác thực đều yêu cầu hiểu Hàm của chúng và bao gồm tất cả các tương tác có thể có. Trong khi một trình xác thực không được tham số hóa, thì trình xác thực kia lại có. Bài giảng này sẽ hướng dẫn bạn quy trình hiểu mục đích của Trình xác thực, khám phá các công cụ có sẵn, kiểm tra các bài kiểm tra và mã nguồn, và cuối cùng là viết mã off-chain cần thiết. Ngoài ra, nếu bạn gặp bất kỳ câu hỏi nào trong khi thực hiện nhiệm vụ, nhóm hỗ trợ luôn sẵn sàng trên Discord hoặc Stack Exchange.

Hiểu Trình xác thực:

Để bắt đầu, điều quan trọng là phải nắm được mục đích và Hàm của Trình xác thực. Việc phân tích kỹ lưỡng các nguồn lực sẵn có là cần thiết để làm sáng tỏ hoạt động bên trong của chúng. Các công cụ sau đây có thể được sử dụng cho mục đích này:

  1. Thử nghiệm: Các thử nghiệm hiện tại có thể cung cấp thông tin chi tiết có giá trị về hành vi và Đầu ra kỳ vọng của trình xác thực. Phân tích các thử nghiệm này có thể giúp hiểu các tình huống khác nhau mà trình xác thực được thiết kế để xử lý.

  2. Mã nguồn: Bằng cách đi sâu vào mã nguồn, người ta có thể hiểu sâu hơn về cách triển khai của trình xác thực. Kiểm tra logic mã, cách sử dụng biến và lệnh gọi hàm có thể làm sáng tỏ mục đích và Hàm tổng thể.

  3. Trình xác thực trước đây: Việc nghiên cứu các Trình xác thực đã triển khai trước đây có thể cung cấp thêm hướng dẫn và kiến ​​thức. So sánh những điểm tương đồng và khác biệt giữa các trình xác thực hiện có và các trình xác thực hiện có có thể cung cấp các gợi ý có giá trị về việc triển khai cần thiết.

Bằng cách sử dụng các tài nguyên này, bạn có thể thu thập đủ thông tin để hiểu vai trò của người xác thực và cách chúng vận hành.

Viết mã off-chain:

Khi bạn đã hiểu các trình xác thực và Hàm của chúng, bước tiếp theo là viết mã off-chain bao gồm tất cả các tương tác có thể xảy ra. Mã off-chain đề cập đến mã thực thi bên ngoài blockchain, thường tương tác với trình xác thực thông qua các giao dịch hoặc tin nhắn.

Trước khi đi sâu vào triển khai, điều cần thiết là chọn một công cụ thích hợp để viết mã off-chain. Việc lựa chọn công cụ phụ thuộc vào nhiều yếu tố khác nhau như mức độ quen thuộc với ngôn ngữ lập trình, hỗ trợ hệ sinh thái và yêu cầu của dự án. Hãy xem xét các tùy chọn sau:

  1. Khung dành riêng cho ngôn ngữ: Tùy thuộc vào ngôn ngữ lập trình được sử dụng cho dự án blockchain, có thể có sẵn các khung dành riêng cho ngôn ngữ giúp đơn giản hóa việc phát triển mã off-chain. Các khung này thường cung cấp các thư viện và tiện ích để tương tác với các trình xác thực.

  2. Mã tùy chỉnh: Nếu không có sẵn khung cụ thể hoặc nếu Hàm tùy chỉnh được yêu cầu, thì có thể cần phải viết mã off-chain từ đầu. Cách tiếp cận này cung cấp sự linh hoạt hoàn toàn nhưng đòi hỏi sự hiểu biết sâu sắc hơn về hệ sinh thái của blockchain và việc triển khai trình xác thực cụ thể.

Bất kể công cụ được chọn là gì, mã off-chain sẽ bao gồm tất cả các tương tác có thể có với trình xác thực. Điều này bao gồm xử lý các tình huống Đầu vào khác nhau, cung cấp phản hồi thích hợp và đảm bảo quá trình xác thực hoạt động như dự định.

Trình xác thực được tham số hóa:

Một trong những Trình xác thực được cung cấp trong bài tập được tham số hóa, đưa ra một lớp phức tạp bổ sung. Hiểu cách làm việc với trình xác thực được tham số hóa là rất quan trọng để triển khai thành công.

Khi xử lý trình xác thực được tham số hóa, cần phải xác định các tham số cụ thể và ảnh hưởng của chúng đối với quy trình xác thực. Các tham số này có thể sửa đổi hành vi của trình xác thực và cho phép tùy chỉnh dựa trên các yêu cầu khác nhau.

Để triển khai mã off-chain cho trình xác thực được tham số hóa, điều cần thiết là phải xem xét các biến thể tiềm năng được đưa ra bởi các tham số. Điều này liên quan đến việc đánh giá các giá trị tham số khác nhau, tác động của chúng đối với kết quả xác thực và điều chỉnh mã off-chain cho phù hợp.

Tìm kiếm sự hỗ trợ:

Trong suốt bài tập, các câu hỏi có thể nảy sinh, cản trở tiến độ hoặc gây nhầm lẫn. Trong những tình huống như vậy, bạn nên tìm kiếm sự trợ giúp từ nhóm hỗ trợ. Các kênh được cung cấp, Discord và Stack Exchange, cung cấp các nền tảng để tương tác với cộng đồng các nhà phát triển và chuyên gia, những người có thể cung cấp hướng dẫn và làm rõ.

Khi liên hệ để được hỗ trợ, hãy đảm bảo rằng bạn trình bày rõ ràng những thách thức hoặc câu hỏi cụ thể mà bạn đang gặp phải. Cung cấp các đoạn mã có liên quan, thông báo lỗi

và mô tả chi tiết về vấn đề sẽ giúp nhóm hỗ trợ đưa ra các giải pháp hiệu quả.

Phần kết luận:

Bài tập về nhà của PPP 040405 xoay quanh việc hiểu và triển khai mã off-chain cho hai trình xác thực. Bằng cách tận dụng các công cụ có sẵn, chẳng hạn như kiểm tra, mã nguồn và trình xác thực trước đó, có thể hiểu toàn diện về Hàm của trình xác thực.

Khi các trình xác thực đã được hiểu, bước tiếp theo là viết mã off-chain bằng một công cụ phù hợp. Chọn một công cụ thích hợp và bao gồm tất cả các tương tác có thể có là điều cần thiết để triển khai thành công. Ngoài ra, việc hiểu và làm việc với các trình xác thực được tham số hóa yêu cầu xem xét ảnh hưởng của các tham số và điều chỉnh mã cho phù hợp.

Trong suốt nhiệm vụ, nhóm hỗ trợ luôn sẵn sàng trên Discord và Stack Exchange để giải quyết mọi câu hỏi hoặc thắc mắc có thể phát sinh. Bằng cách tìm kiếm sự hỗ trợ khi cần thiết và siêng năng làm việc hoàn thành nhiệm vụ, bạn có thể nâng cao hiểu biết của mình về trình xác thực và củng cố kỹ năng viết mã off-chain của mình.

Xem video

Tuần 5


040501 - Introduction

PPP 040501 - Giới thiệu

Trong Bài giảng này, chúng ta sẽ đi sâu vào chủ đề về Token gốc và sự hỗ trợ của chúng trong Plutus, khám phá cách chúng có thể được đúc và đốt dựa trên các chính sách đã xác định. Trước khi chúng ta đi sâu vào vấn đề đó, điều cần thiết là phải hiểu khái niệm giá trị trong Context mô hình UTXO mở rộng của Cardano.

Mô hình UTXO mở rộng của Cardano

Mô hình UTXO mở rộng trong Cardano giới thiệu khái niệm giá trị được liên kết với mỗi Đầu ra giao dịch chưa được chi tiêu (UTXO). Trước đây, chúng ta đã thảo luận về cách mỗi UTXO sở hữu một địa chỉ và một giá trị. Tuy nhiên, trong mô hình UTXO mở rộng, UTXO cũng bao gồm Datum. Trong các bài giảng trước, chúng ta đã gặp các ví dụ về Datums` như vậy, nhưng cho đến nay, giá trị này chỉ đại diện cho giá trị ADA hoặc Lovelace trên blockchain Cardano. Ban đầu, chỉ có token ADA và Lovelace tồn tại trên mạng Cardano.

Tạo và đốt các token gốc

Để giới thiệu token gốc vào hệ sinh thái Cardano, chúng phải được tạo rõ ràng. Tương tự, nếu chúng không còn cần thiết nữa, chúng có thể bị đốt một cách rõ ràng. Trong bài giảng này, chúng ta sẽ khám phá quá trình tạo và Burn token gốc, cũng như các chính sách đúc chi phối hành vi của chúng.

Chính sách mint và token gốc

Plutus, một khung trong Cardano, cung cấp phương tiện để xác định các chính sách đúc cho token gốc. Các chính sách này quy định các điều kiện theo đó token gốc có thể được đúc và đốt. Bằng cách hiểu cấu trúc và khả năng của Plutus, nhà phát hành token có thể thực hiện kiểm soát chi tiết đối với việc tạo và hủy token gốc.

Hiểu Value trong Cardano

Trước khi đi sâu vào sự phức tạp của token gốc và chính sách đúc tiền, trước tiên chúng ta hãy thiết lập sự hiểu biết toàn diện về các giá trị trong blockchain Cardano. Như đã đề cập trước đó, các giá trị trong Cardano theo truyền thống được biểu thị bằng token ADA hoặc Lovelace. Tuy nhiên, với sự ra đời của token gốc, khái niệm giá trị vượt ra ngoài một loại tiền tệ duy nhất. Chúng ta sẽ khám phá định nghĩa rộng hơn về giá trị và ý nghĩa của nó trong Context token gốc của Cardano.

Token gốc: Mở rộng khả năng

Token gốc giới thiệu một lĩnh vực khả năng mới trong hệ sinh thái Cardano. Bằng cách cho phép tạo và quản lý token tùy chỉnh, Cardano trở thành một nền tảng linh hoạt cho nhiều ứng dụng và trường hợp sử dụng. Chúng ta sẽ xem xét các lợi ích và ứng dụng tiềm năng của token gốc, làm sáng tỏ tác động biến đổi mà chúng có thể có đối với các ngành khác nhau.

Quá trình tạo: Đúc tiền bản địa

Để tạo token gốc, nhà phát hành token phải tuân thủ các chính sách đúc tiền cụ thể được xác định bằng cách sử dụng Plutus. Các chính sách này thiết lập các điều kiện theo đó token có thể được đúc. Chúng ta sẽ thảo luận về các tham số và cân nhắc khác nhau liên quan đến quá trình đúc, trao quyền cho người đọc hiểu các bước cần thiết để đưa token gốc của chúng vào cuộc sống trên blockchain Cardano.

Quá trình Burn: Xóa token gốc

Khi các token gốc không còn cần thiết, chúng có thể bị đốt một cách rõ ràng. Quá trình đốt đảm bảo loại bỏ token khỏi lưu thông và thiết lập nguồn cung cấp token được kiểm soát. Chúng ta sẽ khám phá các cơ chế và ý nghĩa của việc đốt token, nhấn mạnh tầm quan trọng của nó trong việc duy trì nền kinh tế token và giải quyết các trường hợp sử dụng khác nhau.

Plutus: Xác định chính sách đúc tiền

Plutus, một ngôn ngữ được nhúng trong hệ sinh thái Cardano, đóng một vai trò quan trọng trong việc xác định chính sách đúc tiền cho token gốc. Bằng cách tận dụng Plutus, nhà phát hành token có thể thực thi các quy tắc và điều kiện cụ thể để đúc và đốt token. Chúng ta sẽ đi sâu vào cú pháp và Hàm của Plutus, trang bị cho người đọc kiến ​​thức cần thiết để xây dựng các chính sách phù hợp cho token gốc của họ.

Các trường hợp sử dụng và ví dụ trong thế giới thực

Để minh họa thêm về tiềm năng của token gốc, chúng ta sẽ khám phá các trường hợp sử dụng khác nhau trong thế giới thực và các ví dụ mà token gốc có thể

được đòn bẩy. Từ các ứng dụng tài chính phi tập trung (DeFi) đến quản lý chuỗi cung ứng và nghệ thuật kỹ thuật số, các token gốc có khả năng cách mạng hóa các ngành và mở khóa các giải pháp sáng tạo. Bằng cách kiểm tra các triển khai thực tế, người đọc sẽ hiểu rõ hơn về tính linh hoạt và tính thực tế của token gốc trong các tình huống khác nhau.

Phần kết luận

Tóm lại, các token gốc mang lại một chiều hướng mới cho blockchain Cardano, mở rộng khả năng của nó và cho phép một loạt các ứng dụng. Bằng cách hiểu các nguyên tắc cơ bản của token gốc, chính sách đúc tiền và Plutus, các nhà phát hành token có thể tự tin điều hướng thế giới mô hình UTXO mở rộng của Cardano. Với tiềm năng chuyển đổi các ngành công nghiệp và thúc đẩy sự đổi mới, các token gốc nắm giữ nhiều hứa hẹn cho tương lai của công nghệ blockchain.

Xem video

040502 - Values

PPP 040502 - Giá trị

Plutus Letter API trong mô-đun Plutus.v1 cung cấp một giá trị Kiểu được gọi là value. Bài giảng này nhằm mục đích khám phá khái niệm giá trị, cấu trúc và ý nghĩa của chúng trong phiên bản Plutus 2. Mặc dù phiên bản 2 của Plutus được sử dụng trong khóa học này, giá trị Kiểu vẫn giữ nguyên như trong phiên bản 1. Bằng cách kiểm tra định nghĩa của giá trị Kiểu, chúng ta sẽ hiểu rõ hơn về cấu trúc của nó và hiểu cách các token khác nhau được kết hợp bên trong một giá trị duy nhất. Ngoài ra, chúng ta sẽ khám phá các hoạt động như Value constructor, kiểm tra giá trị, kết hợp giá trị và phân tích giá trị. Cuối cùng, chúng ta sẽ đi sâu vào khái niệm về các chính sách đúc, cho phép tạo và đốt các token gốc trong blockchain Cardano.

Value Kiểu và Cấu trúc: Trong Plutus Letter API, giá trị Kiểu được định nghĩa là một trình bao quanh cấu trúc Map. Bản đồ này chứa các ký hiệu tiền tệ dưới dạng khóa, ánh xạ tới cấu trúc Map khác. Lần lượt, Map bên trong ánh xạ tên token thành số nguyên. Sự kết hợp của ký hiệu tiền tệ và tên token xác định duy nhất một token trong Cardano. Bài giảng minh họa cách giá trị Kiểu và cấu trúc Map lồng nhau của nó thể hiện số lượng token khác nhau trong một giá trị.

Kiểu tài sản và token gốc: Để hiểu rõ hơn về Kiểu giá trị, điều quan trọng là phải hiểu khái niệm về các loại tài sản. Một loại tài sản xác định token gốc, bao gồm ADA và được biểu thị dưới dạng một cặp ký hiệu tiền tệ và tên token. Bài giảng giải thích cách loại tài sản cho ADA bao gồm ký hiệu tiền tệ Ký hiệu Ada và tên token Token Ada. Ngoài ra, Bài giảng khám phá quy trình xác định và làm việc với các loại tài sản tùy chỉnh bằng cách kết hợp các ký hiệu tiền tệ và tên token.

Value Xây dựng và Kiểm tra: Để làm việc với các giá trị, cần phải kiểm tra nội dung của chúng và xây dựng các giá trị mới. Bài giảng giới thiệu hàm giá trị loại tài sản, hàm này xây dựng một giá trị chứa một số lượng tiền xác định của một loại tài sản cụ thể. Bằng cách sử dụng giá trị của loại tài sản và kiểm tra các giá trị kết quả, Bài giảng chứng minh việc xây dựng và kiểm tra các giá trị.

Kết hợp Values: Plutus value Kiểu triển khai khái niệm monoid, cho phép kết hợp các giá trị. Bài giảng giải thích cấu trúc monoid và tầm quan trọng của nó trong thao tác giá trị. Bằng cách sử dụng các hoạt động monoid, các giá trị chứa nhiều token có thể được tạo. Bài giảng trình bày các ví dụ về việc kết hợp các giá trị bằng cách sử dụng thao tác monoid, dẫn đến một giá trị duy nhất đại diện cho nhiều token.

Phân tích Value: Ngoài việc xây dựng và kết hợp các giá trị, điều quan trọng là phải phân tích nội dung của chúng. Bài giảng giới thiệu hàm assetClassValueOf, cho phép trích xuất số lượng tiền của một loại tài sản cụ thể có trong một giá trị. Thông qua các ví dụ, Bài giảng minh họa cách sử dụng Hàm này để xác định số lượng token của các loại tài sản khác nhau trong một giá trị.

Phép trừ và phép so sánh Value: Plutus value Kiểu cũng hỗ trợ các phép toán trừ và so sánh. Bài giảng khám phá thể hiện nhóm của giá trị Kiểu, cho phép trừ một giá trị khỏi một giá trị khác. Hơn nữa, Bài giảng giải thích khái niệm sắp xếp một phần, cho phép so sánh các giá trị. Ý nghĩa và hạn chế của so sánh giá trị được thảo luận chi tiết.

Hoạt động Value bổ sung: Bài giảng nêu bật nhiều hoạt động khác có sẵn cho các giá trị, bao gồm kiểm tra xem giá trị có bằng 0 hay không, tách giá trị thành các phần dương và âm cũng như làm phẳng các giá trị thành định dạng danh sách. Mỗi hoạt động được giải thích và các ví dụ được cung cấp để minh họa cách sử dụng và mục đích của chúng.

Chính sách mint và tạo token gốc: Bài giảng giới thiệu khái niệm về chính sách đúc tiền trong blockchain Cardano. Chính sách đúc tiền cho phép tạo và Burn token gốc trong các điều kiện cụ thể. Sự liên quan của các ký hiệu tiền tệ trong các chính sách đúc tiền được giải thích, nhấn mạnh cách hàm hash của tập lệnh chính sách đúc tiền được liên kết với một ký hiệu tiền tệ. Bài giảng làm rõ rằng ADA, là một ngoại lệ,

Xem video

040503 - A Simple Minting Policy

PPP 040503 - Chính sách mint đơn giản

Chuỗi khối Cardano cung cấp một nền tảng mạnh mẽ để tạo và quản lý tài sản kỹ thuật số, bao gồm cả token gốc. Các token này có thể đại diện cho nhiều Kiểu tài sản khác nhau, từ crypto đến đồ sưu tầm kỹ thuật số. Để quản lý quá trình tạo và đốt token, Cardano thực hiện các chính sách đúc tiền. Trong Bài giảng này, chúng ta sẽ khám phá một chính sách đúc tiền đơn giản, các thành phần của nó và cách nó ảnh hưởng đến việc tạo và đốt các token trong hệ sinh thái Cardano.

Hiểu chính sách đúc tiền:

Trước khi đi sâu vào các chi tiết cụ thể của chính sách đúc tiền, hãy tóm tắt lại một số khái niệm chính liên quan đến xác thực trong Cardano. Khi xác thực một giao dịch, tập lệnh xác thực tương ứng được thực thi cho mỗi Đầu vào tập lệnh. Tập lệnh xác thực nhận Datum, Redeemer và Context làm Đầu vào. Tuy nhiên, đối với các chính sách mint, không có Datum nào liên quan vì nó liên quan đến Đầu ra đã chi tiêu. Thay vào đó, tập lệnh chính sách đúc chỉ nhận Redeemer và Context làm Đầu vào.

Chính sách đúc tiền được kích hoạt khi trường TXinfoMint của giao dịch chứa giá trị khác 0. Trường này biểu thị số lượng token được đúc và có thể chứa nhiều loại tài sản với các ký hiệu tiền tệ và tên token khác nhau. Đối với mỗi ký hiệu tiền tệ có trong trường mint, tập lệnh chính sách đúc tương ứng được thực thi.

Thực hiện và xác nhận:

Trong quá trình thực thi, tập lệnh chính sách đúc tiền nhận Redeemer và Context làm Đầu vào. Ngữ cảnh bao gồm trường TX in, cung cấp thông tin về giao dịch đang được xác thực và trường mục đích tập lệnh, luôn được đặt thành mint khi thực hiện các chính sách đúc tiền.

Để đảm bảo rằng tất cả các chính sách đúc tiền đều được thông qua, giao dịch phải thực hiện thành công từng tập lệnh tương ứng. Nếu bất kỳ chính sách đúc nào không thành công, toàn bộ giao dịch được coi là không hợp lệ.

Viết một chính sách đúc tiền đơn giản:

Hãy khám phá một ví dụ về chính sách đúc tiền đơn giản. Tương tự như các tập lệnh xác thực, các chính sách đúc tiền được xác định bằng Plutus, ngôn ngữ hợp đồng thông minh của Cardano. Quá trình bắt đầu bằng cách tạo tập lệnh Plutus và biên dịch nó thành Plutus Core. Trong ví dụ này, chúng ta sẽ xác định chính sách đúc tiền cho phép đúc và đốt token tùy biến.

policy Script đúc tiền được định nghĩa là một hàm lấy Redeemer và Context làm đối số. Trong trường hợp này, vì không có Datum liên quan nên chúng ta có thể sử dụng Unit làm Redeemer. Context Script vẫn như cũ. Để đơn giản, chính sách này luôn trả về true, cho biết rằng tất cả các hoạt động đúc và đốt đều được cho phép.

Để chuyển đổi phiên bản được định Kiểu của tập lệnh chính sách đúc thành phiên bản Không xác định Kiểu, chúng ta sử dụng hàm trợ giúp có tên là wrapPolicy. Phiên bản được định Kiểu đảm bảo an toàn cho Kiểu, nhưng trong ví dụ này, chúng ta sẽ tập trung vào phiên bản Không xác định Kiểu. Sau khi tập lệnh được biên dịch, nó có thể được chuyển đổi thành chính sách đúc tiền bằng cách sử dụng Hàm makeMintingPolicyScript được cung cấp bởi thư viện tập lệnh Plutus V1 Ledger.

Số sê-ri hóa và ký hiệu tiền tệ:

Để tuần tự hóa chính sách kết quả và tính toán ký hiệu tiền tệ, chúng ta sử dụng các Hàm tiện ích do hệ sinh thái Plutus cung cấp. Chính sách tuần tự hóa có thể được lưu trữ trên ổ cứng để sử dụng sau này. Ngoài ra, ký hiệu tiền tệ, đại diện cho hàm hash của tập lệnh, có thể được tính bằng hàm currencySymbol. Tên token được liên kết với ký hiệu tiền tệ có thể tùy biến và không bị hạn chế.

Thực hiện chính sách đúc tiền:

Để chứng minh Hàm của chính sách đúc tiền, chúng ta sẽ sử dụng tập lệnh TypeScript tương tác với mạng Cardano bằng cách sử dụng khung Lucid. Tập lệnh này cho phép chúng ta thực hiện các giao dịch và đúc hoặc đốt token.

Tập lệnh bắt đầu bằng cách kết nối với mạng Cardano mong muốn và thiết lập các cấu hình cần thiết. Chúng ta cung cấp cụm từ hạt giống ví và node blockchain

thông tin trong một tập tin riêng biệt để bảo mật. Sau đó, tập lệnh sẽ nhắc người dùng chỉ định số lượng token sẽ được đúc.

Sử dụng chính sách đúc được chỉ định, tập lệnh sẽ xây dựng một giao dịch để đúc số lượng token mong muốn. Nó bao gồm Redeemer, được đặt thành Unit và đính kèm chính sách đúc tiền cho giao dịch. Lucid tự động xử lý tính toán phí giao dịch, lựa chọn Đầu vào và phân phối token.

Sau khi ký và gửi giao dịch, tập lệnh sẽ hiển thị hàm hash giao dịch để tham khảo. Bằng cách kiểm tra ví, chúng ta có thể xác minh việc đúc token thành công. Ngoài ra, tập lệnh cho phép chúng ta Burn token đã đúc bằng cách chỉ định số tiền âm trong giao dịch tiếp theo.

Phần kết luận:

Các chính sách đúc tiền đóng một vai trò quan trọng trong việc quản lý việc tạo và đốt các token trong blockchain Cardano. Thông qua việc triển khai các chính sách đúc tiền đơn giản, nhà phát triển và người dùng có thể xác định các quy tắc và hạn chế đối với hoạt động đúc và đốt token. Bằng cách tận dụng sức mạnh của Plutus và hệ sinh thái Cardano, các cá nhân có thể tạo và quản lý tài sản kỹ thuật số của mình một cách an toàn và hiệu quả. Khi Cardano tiếp tục phát triển, các chính sách đúc sẽ vẫn là một khía cạnh thiết yếu trong khả năng token của nền tảng.

Xem video

040504 - A More Realistic Minting Policy

PPP 040504 - Chính sách đúc tiền thực tế hơn

Trong thế giới blockchain và crypto, khái niệm về chính sách đúc tiền đóng một vai trò quan trọng trong việc kiểm soát việc tạo và hủy token. Trong Bài giảng này, chúng ta sẽ khám phá một cách tiếp cận thực tế hơn đối với các chính sách đúc tiền, đặc biệt tập trung vào chính sách PPP 040504. Chúng ta sẽ xem xét những hạn chế của một chính sách đúc tiền đơn giản và thảo luận về nhu cầu hạn chế. Bằng cách giới thiệu khái niệm về quyền sở hữu thông qua mã hash khóa công khai, chúng ta có thể tạo ra một hệ thống bắt chước thẩm quyền của ngân hàng trung ương trong tài chính truyền thống. Cách tiếp cận này đảm bảo rằng chỉ thực thể được ủy quyền mới có thể đúc hoặc đốt token. Chúng ta sẽ đi sâu vào chi tiết triển khai, quy trình chuyển đổi và việc sử dụng các hợp đồng được tham số hóa bằng mã Lucid hoặc mã off-chain. Bài giảng này nhằm mục đích cung cấp sự hiểu biết toàn diện về chính sách đúc tiền PPP 040504 và các ứng dụng thực tế của nó.

Hiểu những hạn chế của chính sách đúc tiền đơn giản:

Phiên bản ban đầu của chính sách đúc tiền không có bất kỳ hạn chế nào, cho phép mọi người đúc hoặc đốt token một cách tự do. Mặc dù sự đơn giản này thoạt nghe có vẻ hấp dẫn, nhưng nó đặt ra những thách thức đáng kể về mặt kiểm soát và bảo mật. Để tạo ra một chính sách thực tế hơn, chúng ta cần đưa ra các hạn chế giới hạn các đặc quyền mint và ghi đối với chủ sở hữu của một khóa công khai cụ thể.

Vai trò của Quyền sở hữu và Ngân hàng Trung ương:

Để mô phỏng kiểm soát tập trung được thấy trong tài chính truyền thống, chúng ta chỉ định quyền sở hữu cho các khóa công khai cụ thể. Các khóa này có thể đại diện cho các dự án, công ty hoặc tổ chức đóng vai trò là ngân hàng trung ương trong hệ sinh thái blockchain. Giống như các ngân hàng trung ương có quyền đúc hoặc đốt tiền pháp định, chủ sở hữu của các khóa công khai cụ thể có độc quyền thực hiện các hành động này trong chính sách đúc của chúng ta.

Giới thiệu Mô-đun Signed:

Để triển khai chính sách đúc dựa trên quyền sở hữu, chúng ta giới thiệu một mô-đun có tên Đã ký. Mô-đun này kết hợp một tham số bổ sung, Pub Key Hash, xác định quyền sở hữu được liên kết với token. Bằng cách cho phép nhiều tham số, chúng ta tạo một chính sách được tham số hóa có thể thích ứng với các tình huống khác nhau. Nguyên tắc chính là chỉ chủ sở hữu của Pub Key Hash được liên kết mới có thể đúc hoặc đốt token.

Chi tiết triển khai:

Việc thực hiện chính sách đúc tiền dựa trên quyền sở hữu tương đối đơn giản. Bằng cách sử dụng Hàm TxSignedBy, chúng ta có thể đảm bảo rằng giao dịch thực hiện quá trình đúc hoặc ghi được ký bởi Pub Key Hash được chỉ định. Việc triển khai bao gồm xử lý lỗi đối với các chữ ký bị thiếu, cung cấp thông tin phản hồi trong trường hợp không thành công.

Ứng dụng chuyển đổi và tham số:

Trong quá trình chuyển đổi từ các phiên bản Không xác định Kiểu sang được định Kiểu, có một chút khác biệt so với cách tiếp cận trước đó. Thay vì trực tiếp sử dụng Pub Key Hash làm tham số trong phiên bản Không xác định Kiểu, chúng ta tận dụng inline Datum sẵn. Sự thay đổi này tạo điều kiện thuận lợi cho sự tương tác với mã Lucid hoặc mã off-chain, vì Lucid không hỗ trợ các tham số của Kiểu ngoài inline Datum. Quá trình chuyển đổi liên quan đến việc chuyển đổi inline Datum sang Pub Key Hash bằng cách sử dụng Plutus TX không an toàn, đảm bảo định dạng chính xác và khả năng tương thích Kiểu.

Tuần tự hóa và tích hợp mã off-chain:

Để chứng minh việc sử dụng các hợp đồng được tham số hóa trong mã off-chain, chúng ta khám phá các kỹ thuật tuần tự hóa. Bằng cách tuần tự hóa tập lệnh chính sách đúc cho một lựa chọn Pub Key Hash cụ thể, chúng ta có thể sử dụng nó trong các tình huống mã off-chain. Phiên bản được xê-ri hóa hoạt động như một chính sách mint chuyên biệt phù hợp với Hash khóa Pub đã chọn. Ngoài ra, chúng ta giới thiệu một Hàm tiện ích để tuần tự hóa mã được biên dịch tùy biến, cho phép tích hợp liền mạch với mã off-chain.

Sử dụng Lucid để áp dụng các thông số:

Lucid cung cấp một cách thuận tiện để áp dụng các tham số cho các tập lệnh, cho phép tạo ra chính sách đúc tiền thực tế. Bằng cách xác định hình dạng của tham số và Kiểu bằng cách sử dụng Tuple dữ liệu, chúng ta thiết lập nền tảng cần thiết. Sử dụng các tham số áp dụng cho Hàm tập lệnh, chúng ta chuyển tập lệnh được tuần tự hóa và các tham số, trong trường hợp này là Pub Key Hash. Lucid xử lý quán rượu

Hash chính dưới dạng chuỗi, cho phép gán tham số đơn giản. Tập lệnh kết quả, với tham số được áp dụng, thể hiện chính sách đúc kết đã hoàn thành.

Kiểm tra và xác nhận:

Để xác thực chính sách đúc tiền đã triển khai, chúng ta thực hiện một loạt thử nghiệm. Bằng cách sử dụng tập lệnh Lucid, chúng ta thiết lập một quy trình tương tác trong đó Pub Key Hash của người dùng xác định tham số hóa của chính sách đúc. Mỗi người dùng tạo một token duy nhất với ký hiệu tiền tệ riêng biệt, đảm bảo quy trình tạo token được cá nhân hóa và an toàn. Quá trình này bao gồm việc ký giao dịch một cách rõ ràng để đáp ứng yêu cầu chữ ký của tập lệnh chính sách đúc.

Phần kết luận:

Chính sách đúc tiền PPP 040504 cung cấp một cách tiếp cận thực tế và an toàn để tạo và hủy token. Bằng cách chỉ định quyền sở hữu cho các khóa công khai cụ thể, chúng ta tạo ra một hệ thống phản ánh thẩm quyền của các ngân hàng trung ương trong tài chính truyền thống. Thông qua tham số hóa, tuần tự hóa và tích hợp với mã Lucid và mã off-chain, chính sách có thể thích ứng với các tình huống khác nhau và cho phép đúc token được cá nhân hóa. Việc triển khai và thử nghiệm chính sách này chứng minh tính thực tế và hiệu quả của các chính sách đúc tiền dựa trên quyền sở hữu trong hệ sinh thái blockchain.

Xem video

040505 - NFT's

PPP 040505 - NFT

Token không thể thay thế (NFT) đã thu hút được sự chú ý đáng kể trong thế giới blockchain và crypto. Không giống như các token có thể thay thế được như Bitcoin hoặc Ethereum, NFT đại diện cho các tài sản kỹ thuật số duy nhất chỉ có thể tồn tại một lần. Bài giảng này khám phá khái niệm về NFT, đặc điểm của chúng và công nghệ cơ bản cho phép tính độc đáo của chúng. Chúng ta sẽ đi sâu vào các chi tiết cụ thể của NFT trong Context của Cardano và thảo luận về cách Plutus, nền tảng hợp đồng thông minh của Cardano, tạo điều kiện thuận lợi cho việc tạo và xác thực các NFT thực sự. Đến cuối Bài giảng này, bạn sẽ có hiểu biết toàn diện về NFT và tầm quan trọng của chúng trong thế giới kỹ thuật số.

Hiểu về NFT

Trước khi đi sâu vào các chi tiết kỹ thuật, trước tiên chúng ta hãy hiểu rõ về NFT. NFT, hoặc token không thể thay thế, là tài sản kỹ thuật số duy nhất có thể đại diện cho các dạng vật phẩm kỹ thuật số hoặc vật lý khác nhau, chẳng hạn như tác phẩm nghệ thuật, đồ sưu tầm, âm nhạc, video, bất động sản ảo, v.v. Không giống như crypto, trong đó mỗi đơn vị giống hệt nhau và có thể hoán đổi cho nhau, NFT có các đặc điểm riêng biệt khiến chúng trở nên độc nhất vô nhị.

NFT lấy được tính độc đáo của chúng từ công nghệ blockchain cơ bản của chúng. Bằng cách sử dụng các nền tảng blockchain như Cardano, những người tạo NFT có thể thiết lập sự khan hiếm có thể chứng minh được và quyền sở hữu có thể kiểm chứng đối với tài sản kỹ thuật số của họ. Mỗi NFT được liên kết với một mã định danh duy nhất, thường được đại diện bởi một hợp đồng thông minh trên blockchain. Số nhận dạng này đảm bảo rằng token không thể bị sao chép hoặc giả mạo, khiến nó trở thành một giải pháp lý tưởng để tạo ra sự khan hiếm kỹ thuật số.

Token gốc so với NFT

Để hiểu tầm quan trọng của NFT, điều quan trọng là phải phân biệt chúng với các token gốc. Các token gốc, tồn tại trên các nền tảng blockchain khác nhau, cũng có thể được tạo và quản lý trong hệ sinh thái của blockchain. Tuy nhiên, các token gốc có thể thay thế được, có nghĩa là chúng có thể hoán đổi cho nhau và có thể được chia thành các đơn vị nhỏ hơn mà không có bất kỳ tác động nào đến giá trị của chúng.

Mặt khác, NFT là không thể phân chia và đại diện cho các tài sản duy nhất. Mặc dù token gốc có thể được đúc với số lượng không giới hạn, nhưng NFT chỉ có thể tồn tại một lần, đảm bảo tính khan hiếm và tính duy nhất của chúng. Trong Context của Cardano, các token gốc được tạo trước epoch Alonzo không thể được coi là NFT thực sự, vì chúng thiếu các cơ chế để đảm bảo tính duy nhất của chúng.

Những thách thức trong việc tạo NFT thực sự

Việc tạo NFT thực sự đặt ra một số thách thức trong hệ sinh thái blockchain. Một cách tiếp cận để giải quyết thách thức này là kết hợp thời hạn vào quy trình đúc tiền. Tuy nhiên, phương pháp này dựa vào xác minh bên ngoài, chẳng hạn như trình khám phá blockchain, để đảm bảo rằng chỉ một token được đúc trước thời hạn đã chỉ định. Mặc dù điều này có thể cung cấp một số mức độ khan hiếm, nhưng nó không đảm bảo tính duy nhất thực sự, vì quá trình xác minh phụ thuộc vào các yếu tố bên ngoài.

Tạo NFT thực với Plutus

Plutus, nền tảng hợp đồng thông minh của Cardano, cung cấp một giải pháp mạnh mẽ hơn để tạo NFT thực sự. Bằng cách tận dụng các thuộc tính duy nhất của UTXO (Đầu ra giao dịch chưa xác định) trên blockchain Cardano, Plutus cho phép tạo ra các NFT vốn là duy nhất mà không cần xác minh bên ngoài.

Khái niệm chính đằng sau việc tạo NFT thực sự với Plutus là sử dụng UTXO làm điểm tham chiếu duy nhất trong chính sách đúc. Mỗi UTXO có một mã định danh riêng biệt, bao gồm ID giao dịch và chỉ mục Đầu ra. Bằng cách tham chiếu một UTXO cụ thể trong chính sách đúc, sẽ không thể tạo một giao dịch khác sử dụng cùng một UTXO, đảm bảo tính duy nhất của NFT.

Quá trình này bao gồm việc xác định tập lệnh chính sách đúc tiền trong Plutus, bao gồm các tham số như tên token và UTXO cụ thể sẽ được sử dụng. Script chính sách đúc tiền đảm bảo rằng

.

Xem video

040506 - Homework

PPP 040506 - Bài tập về nhà

Trong Bài giảng này, chúng ta sẽ khám phá hai bài tập về nhà liên quan đến việc mở rộng ví dụ đã ký và sửa đổi chính sách NFT (Token không bị thay thế). Các nhiệm vụ này liên quan đến việc thêm tham số Kiểu POSIX Time vào chính sách đúc và thực thi các hạn chế đối với việc lựa chọn tên token. Nhiệm vụ đầu tiên tập trung vào việc mở rộng ví dụ đã ký để bao gồm thời hạn đúc hoặc đốt token. Nhiệm vụ thứ hai liên quan đến việc sửa đổi chính sách NFT để hạn chế tên token thành một chuỗi byte trống. Chúng ta sẽ thảo luận về lý do đằng sau những nhiệm vụ này và cung cấp hướng dẫn từng bước về cách hoàn thành chúng. Ngoài ra, chúng ta sẽ khám phá ý nghĩa của những sửa đổi này đối với mã off-chain với Lucid.

Bài tập 1: Mở rộng ví dụ đã ký

Trong ví dụ đã ký, điều kiện ban đầu yêu cầu một tham số Kiểu PupbKeyHash để chủ sở hữu của hàm hash Pub Key chỉ định giao dịch đúc. Phần đầu tiên của nhiệm vụ này liên quan đến việc thêm tham số thứ hai của Kiểu POSIX Time vào điều kiện hiện có. Điều kiện cập nhật nêu rõ rằng việc đúc hoặc đốt token chỉ được phép nếu giao dịch đã được ký bởi chủ sở hữu hàm hash Pub Key và nếu việc đúc hoặc đốt xảy ra trước thời hạn đã chỉ định.

Phần mở rộng này cho chính sách đúc tiền giới thiệu một Script thực tế trong đó các dự án có thể xác định Khóa Pub của riêng chúng làm tham số đầu tiên và đặt thời hạn cho việc đúc token. Bằng cách cho phép một khoảng thời gian để sửa đổi, chẳng hạn như điều chỉnh nguồn cung cấp token, các dự án sẽ linh hoạt hơn trước thời hạn. Tuy nhiên, khi thời hạn đã qua, nguồn cung cấp token sẽ cố định.

Để triển khai tiện ích mở rộng này, chúng ta cần sửa đổi cả mã on-chain và mã off-chain. Tương tự như ví dụ về quyền sở hữu, mã off-chain cần được cập nhật để tính đến thời hạn. Chúng ta sẽ cung cấp hướng dẫn chi tiết về những thay đổi cần thiết và giải thích cách điều chỉnh mã đã ký của Lucid để phù hợp với tiện ích mở rộng chính sách đúc tiền này.

Nhiệm vụ 2: Sửa đổi Chính sách NFT

Nhiệm vụ thứ hai liên quan đến việc sửa đổi chính sách NFT để hạn chế lựa chọn tên token. Trước đây, tên token có thể được tự do lựa chọn. Tuy nhiên, chúng ta muốn thực thi quy tắc trong đó tên token phải là một chuỗi byte trống.

Để đạt được điều này, chúng ta cần điều chỉnh chính sách hiện hành. Trong quá trình triển khai ban đầu, tham số cho tên token là giá trị ngoại lệ của TX cần được sử dụng. Trong phiên bản Không xác định Kiểu, cùng một Kiểu (TX outref) được sử dụng. Mặc dù đây là một cách tiếp cận phổ biến, nhưng nó không phù hợp lắm với mã off-chain với Lucid.

Chúng ta sẽ hướng dẫn bạn quy trình sửa đổi chính sách NFT để đảm bảo tên token luôn là một chuỗi byte trống. Việc sửa đổi này sẽ liên quan đến việc cập nhật thông số và thực thi quy tắc mới. Chúng ta sẽ khám phá ý nghĩa của những thay đổi này đối với mã off-chain với Lucid và cung cấp thông tin chuyên sâu về lý do đằng sau sự điều chỉnh này.

Phần kết luận:

Trong Bài giảng này, chúng ta đã khám phá hai bài tập về nhà liên quan đến việc mở rộng ví dụ đã ký và sửa đổi chính sách NFT. Nhiệm vụ đầu tiên tập trung vào việc thêm tham số Kiểu POSIX Time vào chính sách đúc và kết hợp thời hạn đúc hoặc đốt token. Tiện ích mở rộng này cho phép các dự án xác định Khóa Pub của riêng chúng và cung cấp khoảng thời gian để sửa đổi trước thời hạn.

Nhiệm vụ thứ hai liên quan đến việc sửa đổi chính sách NFT để hạn chế lựa chọn tên token đối với một chuỗi byte trống. Điều chỉnh này đảm bảo tính nhất quán trong các quy ước đặt tên token và cung cấp sự rõ ràng trong việc triển khai chính sách. Chúng ta đã thảo luận về ý nghĩa của những sửa đổi này đối với mã off-chain với Lucid và giải thích lý do đằng sau những thay đổi.

Bằng cách hoàn thành các bài tập này, bạn sẽ hiểu sâu hơn về các chính sách đúc tiền và sửa đổi chính sách NFT trong phát triển blockchain. Những khái niệm này có giá trị đối với các dự án đang tìm cách tùy chỉnh quy trình token của chúng và thực thi các quy tắc cụ thể để tạo và quản lý token.

Xem video

040507 - Q&A Session - Week 6 (2023-04-04)

PPP 040507 - Phiên hỏi đáp - Tuần 6 (2023-04-04)

Người điều hành: Được rồi, Ngoại. Thực sự không có gì liên quan đến Plutus. Để tôi xem.. ừm, cám ơn. Được rồi, câu hỏi đặt ra là, có ai đó biết cách tích hợp đoạn trích chứng khoán Plutus trên một số văn bản mù không? Và đó là loại khó khăn. Tôi biết những con chó thực tế chỉ là các tệp HTML, vì vậy chúng không điều chỉnh theo cấu trúc API Giao thức Máy chủ Ngôn ngữ. . Vì vậy, tôi không nghĩ rằng bạn chỉ có thể phục vụ chúng bên trong trình duyệt của mình. Giống như, bạn không thể sử dụng Giao thức máy chủ ngôn ngữ cho việc đó. Và tôi không chắc chúng ta đang cố gắng làm gì, Ash, nhưng vâng, tôi không nghĩ là có thể.. có lẽ nếu bạn có một bưu kiện dịch HTML sang bất kỳ cấu trúc nào mà LSP cần, nhưng khi chúng bây giờ, không thể được. Bạn chỉ cần tạo chúng trong một trình duyệt đơn giản.

Ngoại: Người tham dự có câu hỏi gì không? Hãy giơ tay hoặc bắt đầu nói.

Người điều hành: Tôi đã thấy câu hỏi này rằng có một số cuộc thảo luận về cách áp dụng tham số cho tập lệnh được tham số hóa bằng Lucid. Đó là điều đã được Lars trình bày trong bài giảng mới nhất. Bạn sẽ thấy điều đó khi đến với bài giảng mới nhất.

Người điều hành: Để tôi xem.. Tôi đang tìm kiếm các câu hỏi trên Discord. Được rồi, nếu bất kỳ ai gặp bất kỳ sự cố nào khi chạy giao diện người dùng của Tuần 2 hoặc Tuần 3, hãy đảm bảo bạn thay đổi Vlog cho Trẻ em thành Vlog của bạn trước khi chạy ví dụ. Và tôi nghĩ đó là nó. Chỉ.. được rồi, đây là một câu hỏi. Một vài câu hỏi. Antonio Hernandez hỏi, hãy xem. Trong lần lặp lại trước của PPP, các máy trạng thái đã được thảo luận. Token chuỗi được tạo tự động từ các nhận xét cuối cùng trước đó. Vì công cụ máy trạng thái không được dùng nữa, nên có một tập hợp các phương pháp hay nhất để đúc token luồng không?`

Người điều hành: Ừm, không chắc nó có bị phản đối hay không. Nó chỉ không được sử dụng vì nó đắt hơn nhiều so với làm bằng tay. Nhưng tôi nghĩ không quá phức tạp để đảm bảo rằng bạn sử dụng và tạo ra.. rằng bạn sử dụng một UTXO với một NFT nhất định và tạo một UTXO với cùng một NFT. Tôi nghĩ đó là khá nhiều nó. Bạn phải đảm bảo rằng NFT đi vào và đi ra vì thực tế nó đã là NFT, bạn không cần phải đảm bảo rằng đó là một Đầu ra duy nhất hay bất cứ thứ gì. Không cần kiểm tra thêm. Không chắc chắn nếu bạn cần phải làm một cái gì đó khác. Tôi không nghĩ vậy.

Người điều hành: Adam Rashke, tôi hy vọng tôi đã nói đúng. Để tôi xem.. Cũng giống như, Xin chào, quay lại bài giảng của Tuần 4, có cách nào để chạy Node và GUI Cardano CLI trong Windows không? Tôi đã không quản lý để làm điều đó. Cảm ơn bạn`.

Người điều hành: Tôi nghĩ Luca có thể trả lời điều đó.

Luca: Vâng, chắc chắn rồi. Tôi đã thử nghiệm Cardano CLI GUI trên Windows và Linux và cả hai đều hoạt động. . Vì vậy, tôi không có vấn đề gì. Tôi nhận thấy rằng trên Windows, đôi khi phông chữ bị biến dạng. . Vì vậy, tôi khuyên bạn nên chạy GUI trên HĐH kiểu UNIX. Bây giờ tôi cũng sẽ thêm một tệp thực thi trình cài đặt cho Mac trong tuần này. Nhưng nếu bạn không quản lý để chạy nó

Xem video

Tuần 6


040601 - The State Monad in practice

PPP 040601 - Đơn nguyên Nhà nước trong thực tế

Chương trình Tiên phong Plutus (PPP) tập trung vào việc phát triển các hợp đồng thông minh có khả năng quản lý các tài sản đáng kể. Để đảm bảo độ tin cậy của các hợp đồng này, kiểm tra thuộc tính đóng một vai trò quan trọng. Bài giảng này tìm hiểu việc triển khai thử nghiệm thuộc tính bằng cách sử dụng State Monad trong Context của PPP. State Monad là một công cụ mạnh mẽ để quản lý các tính toán có trạng thái trong Haskell và ứng dụng của nó trong các trình xác thực thử nghiệm sẽ được trình bày. Ngoài ra, Bài giảng trình bày một ví dụ thực tế về việc xây dựng thư viện thử nghiệm bằng cách sử dụng Haskell và State Monad, cho thấy tính hiệu quả của nó. Bằng cách hiểu State Monad và cú pháp của nó, người đọc sẽ có được kiến ​​thức cần thiết để hiểu các phần tiếp theo của Bài giảng này. Tài nguyên bổ sung sẽ được cung cấp cho việc học tập thêm.

Tạo các hàm và loại trợ giúp

Trước khi đi sâu vào Trạng thái Monad, một số hàm trợ giúp và Kiểu được giới thiệu. Dữ liệu UTXO Kiểu đại diện cho chủ sở hữu của UTXO dưới dạng chuỗi và giá trị của UTXO dưới dạng số nguyên. Chuỗi khối giả Kiểu được định nghĩa là một trình bao bọc xung quanh danh sách các UTXO. Trạng thái ban đầu của blockchain được tạo bằng một UTXO duy nhất do Alice sở hữu, chứa một nghìn ADA.

Triển khai Hàm gửi giá trị

Chức năng giá trị gửi tạo điều kiện thuận lợi cho việc chuyển tiền từ người này sang người khác. Nó nhận các tham số như tên người gửi, số tiền được chuyển, người nhận và trạng thái hiện tại của blockchain. Hàm trả về một bộ bao gồm một giá trị Boolean cho biết sự thành công của giao dịch và trạng thái mới của blockchain. Việc triển khai Hàm liên quan đến việc lọc UTXO của người gửi, tính toán tổng số tiền của người gửi, tạo UTXO cho người nhận và người gửi thay đổi, đồng thời cập nhật trạng thái blockchain tương ứng. Nếu giao dịch thành công, hàm trả về true và trạng thái blockchain đã sửa đổi; ngược lại, nó trả về false và trạng thái không thay đổi.

Kiểm tra nhiều giao dịch

Để kiểm tra Hàm gửi giá trị, một Hàm mới gọi là nhiều giao dịch được giới thiệu. Chức năng này thực hiện một loạt các giao dịch và trả về trạng thái cuối cùng của blockchain cùng với giá trị Boolean cho biết sự thành công của tất cả các giao dịch. Bằng cách sử dụng Hàm gửi giá trị lặp đi lặp lại, nhiều giao dịch có thể được thực hiện. Bài giảng trình bày cách thực hiện các giao dịch này, xử lý quản lý trạng thái và xác thực kết quả.

Giới thiệu Bang Monad

Mặc dù triển khai trước đó hoạt động chính xác, nhưng nó bao gồm phân luồng trạng thái thủ công, có thể dễ bị lỗi và cồng kềnh. State Monad đơn giản hóa việc quản lý trạng thái bằng cách đóng gói trạng thái và xử lý sự lan truyền của nó một cách tự động. Để minh họa các lợi ích của State Monad, Bài giảng triển khai lại các Hàm trước đó bằng cách sử dụng đơn nguyên này. Hàm gửi giá trị được điều chỉnh để trả về một Kiểu Trạng thái được tham số hóa bởi trạng thái blockchain và một giá trị Boolean. Bài giảng giải thích cấu trúc của Kiểu Trạng thái và giới thiệu các Hàm chính của nó: get, put và runState. Với State Monad, mã trở nên ngắn gọn và trực quan hơn vì nó không còn yêu cầu xử lý trạng thái rõ ràng nữa.

Áp dụng State Monad để thử nghiệm

Sau khi giới thiệu State Monad, Bài giảng sẽ xem xét lại các Hàm gửi giá trịnhiều giao dịch, trình bày cách viết lại chúng bằng cách sử dụng Đơn vị trạng thái. Bài giảng giải thích cấu trúc và mục đích của khối do, khối này chứa một chuỗi các hành động được thực hiện với State Monad. Bằng cách sử dụng các hàm get, put và runState, mã quản lý trạng thái được đơn giản hóa đáng kể. Bài giảng nhấn mạnh rằng State Monad cho phép xử lý trạng thái trong suốt, loại bỏ nhu cầu phân luồng trạng thái thủ công.

So sánh hai cách tiếp cận

Để làm nổi bật những ưu điểm của State Monad, một so sánh được rút ra giữa phương pháp phân luồng trạng thái thủ công và phương pháp State Monad. Bài giảng nêu bật mã rõ ràng và ngắn gọn hơn đạt được với State Monad, cùng với việc xử lý tự động truyền trạng thái.

.

Xem video

040602 - Introduction to the Plutus Simple Model library

PPP 040602 - Giới thiệu về thư viện Plutus Simple Model

Thư viện Plutus Simple Model (PSM) là một công cụ mạnh mẽ để phát triển các hợp đồng thông minh trong nền tảng Plutus. Trong Bài giảng này, chúng ta sẽ khám phá những kiến ​​thức cơ bản về việc sử dụng thư viện PSM và trình bày cách viết các bài kiểm tra cho hợp đồng thông minh bằng cách sử dụng các Hàm của thư viện. Chúng ta sẽ xem qua một ví dụ giới thiệu các tính năng chính của thư viện PSM và cung cấp thông tin chi tiết về cách sử dụng thư viện.

Bắt đầu với Thư viện PSM

Trước khi đi sâu vào ví dụ, trước tiên hãy tìm hiểu cách truy cập tài liệu cho thư viện Mô hình đơn giản của Plutus. Để mở tài liệu, hãy thực hiện lệnh cung cấp tài liệu thử nghiệm trong thiết bị đầu cuối của bạn. Lệnh này sẽ khởi chạy tài liệu trong trình duyệt của bạn, cho phép bạn khám phá các tính năng của thư viện và hiểu sâu hơn về khả năng của nó. Đảm bảo rằng bạn đang sử dụng Docker phiên bản 5 trở lên. Nếu bạn không chắc chắn về phiên bản, chỉ cần chạy lệnh rebuild container, và bạn sẽ sẵn sàng tiếp tục.

Hiểu hàm main

Hành động chính đóng vai trò là điểm vào cho mã của chúng ta khi chạy thử nghiệm với Cabal. Hành động này chịu trách nhiệm thực hiện các bài kiểm tra và hiển thị kết quả. Hãy kiểm tra mã cấu thành hàm main.

Chúng ta bắt đầu với một số mã soạn sẵn sử dụng hàm main mặc định do Tasty cung cấp. Hàm này chuyển đổi một cây các bài kiểm tra thành hành động IO theo yêu cầu của hàm main. Ngoài ra, chúng ta sử dụng Hàm testGroup, cho phép chúng ta nhóm các bài kiểm tra lại với nhau và gán tên cho nhóm. Tính năng này đặc biệt hữu ích khi xử lý một số lượng lớn các bài kiểm tra cần được phân loại theo cách có ý nghĩa.

Danh sách sau testGroup chứa các bài kiểm tra thực tế. Mỗi thử nghiệm có mô tả và thực hiện riêng. Trong ví dụ của chúng ta, chúng ta có một nhóm thử nghiệm có tên Giao dịch người dùng đơn giản với hai thử nghiệm riêng lẻ: một thử nghiệm cho chi tiêu đơn giản và một thử nghiệm khác cho tình huống không đủ tiền.

Thực hiện hàm main

Để thực hiện hàm main và quan sát kết quả kiểm tra, hãy điều hướng đến mã Tuần 6 và chạy Cabal bằng lệnh Cabal this_week PSM. Lệnh này biên dịch mã và bắt đầu thực hiện hàm main. Sau một thời gian ngắn, kết quả kiểm tra sẽ được hiển thị, bao gồm mô tả kiểm tra, kết quả và thời gian thực hiện. Trong ví dụ của chúng ta, cả hai bài kiểm tra đều vượt qua thành công, chứng tỏ rằng hợp đồng thông minh hoạt động như kỳ vọng.

Hiểu các bài kiểm tra chi tiêu đơn giản và không đủ tiền

Bây giờ, chúng ta hãy xem xét kỹ hơn việc triển khai các thử nghiệm simpleSpendnotEnoughFunds. Các thử nghiệm này cung cấp các ví dụ cụ thể về cách sử dụng thư viện PSM để xác minh hành vi của các hợp đồng thông minh.

Để bắt đầu, chúng ta tạo một hàm trợ giúp có tên là setupUsers, chịu trách nhiệm thiết lập những người dùng cần thiết để thử nghiệm. Chức năng này sử dụng Hàm newUser, chuyển một giá trị được chỉ định từ người dùng quản trị viên (với 10 triệu xu trong trường hợp này) để tạo người dùng mới. Chúng ta lặp lại quy trình này ba lần, dẫn đến một danh sách gồm ba địa chỉ người dùng duy nhất, mỗi địa chỉ có số dư 1.000 Lovelace.

Sau khi đã xác định hàm trợ giúp, chúng ta tiếp tục sử dụng nó trong các bài kiểm tra. Hãy xem xét hành động simpleSpend. Như đã đề cập trước đó, hàm simpleSpend trả về giá trị Kiểu run Boolean, cho biết rằng nó hoạt động trong trạng thái của blockchain và cuối cùng tạo ra kết quả Boolean.

Các hành động được thực hiện trong thử nghiệm simpleSpend liên quan đến việc tạo ba người dùng bằng Hàm setupUsers. Vì setupUsers trả về run List of

pubKeyHash, chúng ta liên kết kết quả với biến users.

Để nâng cao khả năng đọc mã, chúng ta gán tên cho từng người dùng. Mặc dù bước này không thực sự cần thiết nhưng nó giúp hiểu rõ hơn về đoạn mã tiếp theo.

Các giao dịch chính xảy ra trong thử nghiệm này. Chúng ta sử dụng Hàm sendValueTransaction, Hàm này yêu cầu Pokey Hash của người gửi, số tiền được gửi và Pokey Hash của người nhận. Trong trường hợp này, chúng ta bắt đầu hai giao dịch: một từ người dùng 1 đến người dùng 2 và một giao dịch khác từ người dùng 2 đến người dùng 3. Xét rằng cả ba người dùng đều bắt đầu với số dư 1.000 Lovelace, kết quả kỳ vọng như sau: người dùng 1 phải có 900 Dây Lovelaces, người dùng 2 phải có 1.000 (không thay đổi) và người dùng 3 phải sở hữu thêm 100 Dây Lovelaces được chuyển từ hai người dùng trước đó. Để xác minh tính chính xác của các giao dịch này, chúng ta sử dụng hành động noErrors. Hành động này kiểm tra xem tất cả các giao dịch đã thành công hay chưa và số dư kết quả có khớp với giá trị dự kiến ​​hay không. Bằng cách sử dụng hàm valueAt, hàm truy xuất giá trị tại một Pokey Hash nhất định, chúng ta thu được các giá trị cho tất cả người dùng và so sánh chúng với các giá trị dự kiến. Nếu cả hai điều kiện đều được đáp ứng, thì hàm return sẽ bao bọc kết quả Boolean trong đơn nguyên run Boolean.

Thử nghiệm notEnoughFunds thể hiện tình huống trong đó một giao dịch không đủ tiền dự kiến ​​sẽ thất bại. Bài kiểm tra này tương đối đơn giản so với bài kiểm tra trước. Một lần nữa, chúng ta sử dụng Hàm setupUsers để tạo những người dùng cần thiết. Tuy nhiên, trong trường hợp này, chúng ta cố tình tạo một giao dịch từ người dùng 1, người chỉ sở hữu 1.000 Lovelaces, cho người dùng 2, với số lượng được yêu cầu là 10.000 Lovelaces. Đương nhiên, giao dịch này sẽ thất bại do không đủ tiền. Do đó, việc chạy hành động noErrors sẽ mang lại kết quả False, cho biết có lỗi.

Đơn giản hóa mã

Khi xem xét mã, chúng ta nhận thấy một câu lệnh return dư thừa ở cuối phần noErrors trong bài kiểm tra notEnoughFunds. Vì hành động cuối cùng trong một khối do được tự động trả về dưới dạng giá trị cuối cùng, nên câu lệnh return bổ sung là không cần thiết. Điều đáng chú ý là giao thức máy chủ ngôn ngữ (LSP) hỗ trợ chúng ta xác định mã dự phòng như vậy.

Phần kết luận

Như đã trình bày trong Bài giảng này, làm việc với thư viện Mô hình Đơn giản của Plutus rất đơn giản khi bạn nắm được các khái niệm về State Monad. Ví dụ mà chúng ta khám phá đã minh họa tính đơn giản và sức mạnh của thư viện trong việc thử nghiệm các hợp đồng thông minh. Với số lượng mã tối thiểu, chúng ta đã đạt được các thử nghiệm có ý nghĩa xác thực hành vi dự kiến ​​trong hợp đồng của chúng ta.

Trong bài học tiếp theo, chúng ta sẽ tìm hiểu sâu hơn về thử nghiệm một hợp đồng thông minh thực tế, cho phép chúng ta khám phá thêm các khả năng của thư viện Mô hình đơn giản Plutus.

Xem video

040603 - Unit Testing a Smart Contract

PPP 040603 - Thử nghiệm Đơn vị Hợp đồng Thông minh

Hợp đồng thông minh đóng một vai trò quan trọng trong các hệ thống dựa trên blockchain, cho phép thực hiện các hành động được xác định trước và thực thi các quy tắc cụ thể. Để đảm bảo độ tin cậy và chính xác của hợp đồng thông minh, việc kiểm tra toàn diện là điều cần thiết. Trong Bài giảng này, chúng ta sẽ tập trung vào Unit test một hợp đồng thông minh và khám phá các khía cạnh khác nhau liên quan đến quy trình. Cụ thể, chúng ta sẽ đi sâu vào việc thử nghiệm Hàm xác thực trong hợp đồng thông minh, kiểm tra các điều kiện, trường hợp thử nghiệm và chi tiết triển khai.

Hiểu Hàm Trình xác thực:

Chức năng trình xác thực là một thành phần cơ bản của hợp đồng thông minh. Nó xác minh xem các điều kiện nhất định có được đáp ứng hay không trước khi cho phép thực hiện giao dịch. Trong trường hợp của hợp đồng thông minh mà chúng ta đang kiểm tra, Hàm trình xác thực sẽ xác thực Redeemer và kiểm tra xem nó có đáp ứng các tiêu chí cụ thể hay không. Redeemer có thể là bất kỳ số âm hoặc số không nào và nó phải được thông qua trong thời hạn đã định.

Sử dụng các loại thông thường và tùy chỉnh:

Trong quá trình triển khai Hàm trình xác thực, cả Kiểu thông thường và tùy chỉnh đều được sử dụng. Kiểu thông thường, POSIX Time, có thể được sử dụng một mình để biểu thị thời hạn. Tuy nhiên, tác giả đã chọn minh họa cách sử dụng cả Kiểu thông thường và tùy chỉnh. Do đó, một Datum Kiểu tùy chỉnh đã được tạo để lưu trữ giá trị thời hạn. Quyết định này cho thấy tính linh hoạt và tính linh hoạt của Hàm xác nhận hợp đồng thông minh trong việc xử lý các `Kiểu dữ liệu' khác nhau.

Triển khai Bộ thử nghiệm:

Để kiểm tra kỹ lưỡng Hàm của trình xác thực, một bộ kiểm tra toàn diện đã được tạo. Bộ thử nghiệm bao gồm các kết hợp khác nhau của giá trị Redeemer và thời hạn, với các kỳ vọng cụ thể cho từng trường hợp thử nghiệm. Tổng cộng, sáu bài kiểm tra được phát triển, bao gồm nhiều tình huống có thể xảy ra. Các trường hợp thử nghiệm được thiết kế để xác thực tính chính xác của hợp đồng thông minh bằng cách đánh giá xem các điều kiện dự kiến ​​có được đáp ứng hay không.

Thực hiện kiểm tra:

Việc thực thi bộ thử nghiệm liên quan đến việc chạy một loạt các hành động trong một State Monad. Đầu tiên, Hàm thiết lập thiết lập người dùng cần thiết cho các trường hợp thử nghiệm. Trong trường hợp cụ thể này, cần có hai người dùng. Người dùng 1 chịu trách nhiệm tạo UTXO (Đầu ra giao dịch chưa xác định) với Datum được chỉ định, trong khi Người dùng 2 sử dụng UTXO. Chức năng tập lệnh kiểm tra sắp xếp các hành động này và xác minh số dư cuối cùng để đảm bảo tính chính xác của hợp đồng thông minh.

Tạo Hàm trợ giúp:

Để đơn giản hóa việc triển khai tập lệnh thử nghiệm và nâng cao khả năng đọc mã, một số hàm trợ giúp đã được giới thiệu. Các Hàm này hỗ trợ trong các tác vụ như chờ đợi trong một khoảng thời gian cụ thể, thiết lập tài khoản người dùng và tạo giao dịch để khóa và sử dụng UTXO. Các Hàm trợ giúp này mô đun hóa mã và nâng cao khả năng bảo trì của nó.

Xây dựng Test Script:

Tập lệnh thử nghiệm được xây dựng bằng cách kết hợp các Hàm của trình trợ giúp và thực hiện các hành động cần thiết trong State Monad. Chức năng tập lệnh thử nghiệm lấy các tham số bắt buộc, bao gồm các giá trị Datum và Redeemer, để thực thi các trường hợp thử nghiệm. Nó khởi tạo tài khoản người dùng, thực hiện các giao dịch khóa và tiêu thụ, đồng thời xác minh số dư cuối cùng. Bất kỳ sự khác biệt nào trong số dư cuối cùng đều được báo cáo là lỗi.

Chạy Bộ thử nghiệm:

Để thực thi bộ thử nghiệm, tập lệnh thử nghiệm được gọi và tất cả các hành động được thực hiện. Kết quả của các trường hợp thử nghiệm được đánh giá, đảm bảo rằng mỗi trường hợp đều vượt qua thành công. Bằng cách chạy bộ thử nghiệm, các nhà phát triển có thể tin tưởng vào tính mạnh mẽ và chính xác của việc triển khai hợp đồng thông minh.

Phần kết luận:

Thử nghiệm đơn vị đóng một vai trò quan trọng trong việc đảm bảo độ tin cậy và tính chính xác của hợp đồng thông minh. Bằng cách kiểm tra kỹ lưỡng Hàm trình xác thực, nhà phát triển có thể xác định và giải quyết các sự cố và lỗ hổng tiềm ẩn trước khi triển khai. Bộ thử nghiệm được trình bày trong Bài giảng này cung cấp phạm vi bao quát toàn diện về các tình huống khác nhau, xác thực Hàm của hợp đồng thông minh và tuân thủ các quy tắc được xác định trước. Thông qua các phương pháp thử nghiệm siêng năng, các nhà phát triển có thể xây dựng các hợp đồng thông minh an toàn và đáng tin cậy, tạo điều kiện cho sự tin cậy và minh bạch trong hệ sinh thái blockchain.

Xem video

040604 - Property Testing a Smart Contract

PPP 040604 - Thử nghiệm thuộc tính Hợp đồng thông minh

Hợp đồng thông minh đóng một vai trò quan trọng trong các ứng dụng dựa trên blockchain khác nhau, cho phép các giao dịch tự động và an toàn mà không cần qua trung gian. Tuy nhiên, việc đảm bảo độ tin cậy và chính xác của hợp đồng thông minh có thể là một thách thức, vì Unit test truyền thống có thể không cung cấp thông tin chi tiết toàn diện về các thuộc tính của chúng. Trong Bài giảng này, chúng ta sẽ khám phá kiểm tra thuộc tính như một kỹ thuật hiệu quả để đánh giá hành vi và thuộc tính của hợp đồng thông minh. Cụ thể, chúng ta sẽ tập trung vào ứng dụng kiểm tra thuộc tính bằng thư viện QuickCheck để kiểm tra Hàm xác thực của hợp đồng thông minh.

Hiểu những hạn chế của Unit test

Kiểm thử đơn vị là một phương pháp kiểm thử được sử dụng rộng rãi liên quan đến việc kiểm thử các thành phần hoặc Hàm riêng lẻ của một hệ thống trong sự cô lập. Mặc dù Unit test có thể giúp xác định các lỗi logic và các vấn đề trong hợp đồng thông minh, nhưng nó có những hạn chế khi đánh giá các thuộc tính của chính hợp đồng. Các bài Unit test chỉ cung cấp thông tin chi tiết về việc một Script cụ thể có thành công hay không, mà không cung cấp hiểu biết rộng hơn về hành vi của hợp đồng thông qua các kết hợp Đầu vào và điều kiện khác nhau.

Trực quan hóa các thuộc tính hợp đồng

Để minh họa những hạn chế của Unit test và nhu cầu thử nghiệm thuộc tính, hãy xem xét một hợp đồng thông minh được biểu diễn bằng đồ họa. Trong biểu đồ, trục x biểu thị thời gian, trong khi trục y biểu thị giá trị của Redeemer. Biểu đồ mô tả tất cả các kết hợp có thể có của các giá trị, giả sử một bên là Redeemer âm và bên kia là Redeemer dương. Một dòng, được gọi là dòng Redeemer, phân tách các vùng trước thời hạn và sau thời hạn.

Bằng cách phân tích cốt truyện, chúng ta có thể thấy rằng các bài Unit test chỉ bao gồm các tình huống cụ thể trong không gian rộng lớn của các kết hợp có thể có này. Ví dụ: ba bài kiểm tra chạy trước thời hạn sẽ không đạt (được biểu thị bằng màu đỏ), trong khi bài kiểm tra sau thời hạn có Redeemer dương tính cũng sẽ không đạt. Ngược lại, cả hai Redeemer có giá trị bằng 0 hoặc không âm sau thời hạn đều phải vượt qua. Tuy nhiên, các bài Unit test này để lại một phần đáng kể không gian chưa được kiểm tra, gây lo ngại về các vấn đề chưa được khám phá.

Giới thiệu kiểm tra thuộc tính

Kiểm tra thuộc tính giải quyết các hạn chế của Unit test bằng cách cho phép chúng ta xác định các câu lệnh về mã của mình và tự động tạo các trường hợp kiểm tra ngẫu nhiên để kiểm tra xem các thuộc tính này có đúng không. Trong Context này, chúng ta có thể sử dụng thư viện QuickCheck, ban đầu được thiết kế cho Haskell, để thực hiện kiểm tra thuộc tính trên các hợp đồng thông minh. QuickCheck là một thư viện đa năng có thể được sử dụng để kiểm tra nhiều loại mã khác nhau, bao gồm cả hợp đồng thông minh.

Kiểm tra Chức năng Trình xác thực với QuickCheck

Bây giờ chúng ta hãy đi sâu vào ứng dụng thực tế của kiểm tra thuộc tính bằng QuickCheck để kiểm tra Hàm trình xác thực trong hợp đồng thông minh. Chúng ta sẽ kiểm tra trình xác thực tương tự mà chúng ta đã thử nghiệm trước đó bằng cách sử dụng các bài Unit test.

Trong mã, chúng ta sử dụng hàm testProperty do QuickCheck cung cấp để xác định các thuộc tính mà chúng ta muốn kiểm tra. Mỗi thuộc tính nhận tham số và trả về một thuộc tính sẽ được kiểm tra. Hàm runChecks xử lý việc thực hiện kiểm tra thực tế, với Boolean cho biết liệu chúng ta kỳ vọng kiểm tra thất bại hay thành công. Các tham số cho các bài kiểm tra được QuickCheck tạo tự động.

Để tạo điều kiện kiểm tra, chúng ta xác định các Hàm và thể hiện của trình trợ giúp. Các Hàm này bao gồm phiên bản có thể kiểm tra cho Run Kiểu, sử dụng thư viện mô hình. Ngoài ra, chúng ta tạo một phiên bản tùy biến cho PosixTime Kiểu, một trình bao quanh một số nguyên, cho phép chúng ta tạo các giá trị PosixTime ngẫu nhiên trong các phạm vi được chỉ định.

Tiếp theo, chúng ta xác định các thuộc tính mà chúng ta muốn kiểm tra. Trong trường hợp của chúng ta, chúng ta nhằm mục đích kiểm tra ba thuộc tính liên quan đến Hàm trình xác thực. Tất cả các thuộc tính lấy PosixTime và một số nguyên làm tham số và trả về một thuộc tính. Hàm runChecks được sử dụng để thực hiện kiểm tra, với các giá trị cụ thể được cho phép dựa trên thuộc tính đang được kiểm tra.

Hàm BranchX tương tự như hàm được sử dụng trong.

Xem video

040605 - Testing Smart Contracts with Lucid

PPP 040605 - Thử nghiệm hợp đồng thông minh với Lucid

Hợp đồng thông minh đóng một vai trò quan trọng trong công nghệ blockchain, cho phép các ứng dụng phi tập trung thực hiện các hành động tự động và thực thi các thỏa thuận mà không cần dựa vào bên trung gian. Tuy nhiên, việc phát triển và triển khai các hợp đồng thông minh có thể là một thách thức, vì các lỗi hoặc lỗ hổng trong mã có thể gây ra hậu quả nghiêm trọng. Do đó, việc kiểm tra nghiêm ngặt các hợp đồng thông minh là điều cần thiết để đảm bảo độ tin cậy và bảo mật của chúng.

Trong Bài giảng này, chúng ta sẽ khám phá quá trình thử nghiệm hợp đồng thông minh bằng Lucid, một trình giả lập mạnh mẽ và các công cụ thử nghiệm khác. Chúng ta sẽ tập trung vào một tập lệnh cụ thể có tên là Negative R Times và thảo luận về cách viết mã off-chain và kiểm tra mã đó. Ngoài ra, chúng ta sẽ đề cập đến trình giả lập Lucid, Unit test trong Dino và thử nghiệm dựa trên thuộc tính bằng thư viện Kiểm tra nhanh. Đến cuối Bài giảng này, bạn sẽ có hiểu biết toàn diện về việc thử nghiệm các hợp đồng thông minh với Lucid.

Công cụ kiểm tra:

Trước khi đi sâu vào viết và thử nghiệm các hợp đồng thông minh, điều quan trọng là phải làm quen với các công cụ mà chúng ta sẽ sử dụng. Trong phần này, chúng ta sẽ phân loại các công cụ thành ba loại chính: phần mềm đang được thử nghiệm (trình giả lập Lucid), Unit test gốc trong Dino và thử nghiệm dựa trên thuộc tính bằng thư viện Kiểm tra nhanh.

  1. Trình giả lập Lucid: Trình giả lập Lucid đóng vai trò là phần mềm đang được thử nghiệm. Nó cung cấp một trình cung cấp tương tự như các mặt trước khối đã thấy trong các bài giảng trước, nhưng với lợi ích bổ sung là chạy một blockchain mô phỏng cục bộ để thử nghiệm nhanh chóng và có kiểm soát. Trình giả lập cung cấp các phương thức để truy vấn blockchain giả định, gửi giao dịch và kiểm soát tiến trình của blockchain thông minh bằng cách sử dụng các Hàm như chờ khốichờ khe``.

  2. Kiểm tra đơn vị trong Dino: Dino cung cấp triển khai riêng cho Unit test. Chúng ta sẽ sử dụng khung thử nghiệm này để viết các bài Unit test cho các hợp đồng thông minh của chúng ta. Khung cho phép chúng ta bọc các Hàm và nắm bắt lỗi khi chúng xảy ra trong quá trình thử nghiệm. Bằng cách chỉ định hành vi dự kiến ​​của các Hàm của chúng ta, chúng ta có thể đảm bảo rằng các bài kiểm tra đạt hoặc không đạt tương ứng.

  3. Kiểm tra dựa trên thuộc tính với Kiểm tra nhanh: Fast Check là một thư viện JavaScript cho phép kiểm tra dựa trên thuộc tính, tương tự như QuickCheck và thư viện Hasco của Haskell. Chúng ta có thể tạo các trường hợp thử nghiệm dựa trên các thuộc tính và xác nhận được xác định trước. Bằng cách chỉ định cách các giá trị được tạo, chúng ta có thể kiểm tra các tình huống khác nhau và xác thực hành vi của các hợp đồng thông minh của chúng ta đối với các thuộc tính này.

Viết mã off-chain:

Trước khi có thể tiến hành thử nghiệm, chúng ta cần viết tập lệnh trình xác thực vào hệ thống tệp của mình. Trong phần này, chúng ta sẽ thảo luận về các bước cần thiết để thực hiện điều này.

  1. Thiết lập Trình xác thực: Để bắt đầu, hãy điều hướng đến thư mục thích hợp và mở trình chỉnh sửa mã. Nhập các mô-đun cần thiết, bao gồm mô-đun tiện ích và mô-đun Negative R times, chứa tập lệnh trình xác thực của chúng ta. Ghi siêu dữ liệu vào thư mục nội dung và lưu tập lệnh trình xác thực với tên được chỉ định.

  2. Mã hóa off-chain: Tiếp theo, tạo một tệp mã off-chain có tên negative R times.ts. Nhập mô-đun Lucid dưới dạng 'L' và thư viện thử nghiệm tiêu chuẩn của Dino. Ngoài ra, hãy nhập thư viện Kiểm tra nhanh dưới dạng 'FC.' Xác định tập lệnh, chuyển đổi tập lệnh thành địa chỉ bằng Lucid và chỉ định Datum và Redeemer Kiểu.

  3. Gửi tiền cho Script: Triển khai Hàm send to Script, cho phép người dùng gửi tiền đến địa chỉ Script với Datum cụ thể. Chức năng này yêu cầu khóa riêng để ký giao dịch và tương tác với phiên bản Lucid. Xây dựng giao dịch, ký tên và gửi tiền.

  4. Đòi tiền từ Script: Triển khai Hàm get, lấy tiền từ địa chỉ tập lệnh bằng cách sử dụng Datum và Redeemer đã chỉ định. Chức năng này truy xuất ví, chuyển đổi Redeemer thành luồng được mã hóa bởi Sieber, tìm nạp các UTXO được liên kết với địa chỉ tập lệnh, lọc chúng dựa trên.

Xem video

040606 - Double Spending and Homework

PPP 040606 - Chi tiêu gấp đôi và Bài tập về nhà

Trong lĩnh vực giao dịch tài sản kỹ thuật số, đảm bảo giao dịch an toàn là điều tối quan trọng. Một thách thức phổ biến là khả năng chi tiêu gấp đôi, trong đó người mua không gửi khoản thanh toán đã thỏa thuận sau khi nhận được token hoặc token không thể thay thế (NFT). Để giải quyết mối lo ngại này, một hợp đồng hoán đổi có thể được sử dụng để tăng cường tính bảo mật của các giao dịch. Bài giảng này khám phá khái niệm chi tiêu gấp đôi, giới thiệu hợp đồng hoán đổi như một giải pháp và thảo luận về các phương pháp ngăn chặn lỗ hổng chi tiêu gấp đôi.

Hiểu về chi tiêu gấp đôi

Chi tiêu gấp đôi xảy ra khi người mua nhận được token hoặc NFT mà không trả lại khoản thanh toán đã thỏa thuận. Tình trạng này tạo ra sự mất cân bằng trong giao dịch, gây bất lợi cho người bán. Để giảm thiểu rủi ro này, một hợp đồng hoán đổi có thể được sử dụng để thiết lập một môi trường thương mại an toàn.

Giới thiệu Hợp đồng hoán đổi

Hợp đồng hoán đổi đưa ra giải pháp ngăn chặn chi tiêu gấp đôi bằng cách thực thi thanh toán trước khi chuyển token hoặc NFT. Hợp đồng này liên quan đến việc khóa token hoặc NFT trong trình xác thực, trong đó người bán cung cấp cho Redeemer (chính họ) và chỉ định mức giá mà chúng sẵn sàng chấp nhận. Khi một bên muốn có được token hoặc NFT, chúng phải trả giá đã thỏa thuận trong cùng một giao dịch. Bằng cách thực hiện cơ chế này, rủi ro chi tiêu hai lần có thể giảm đáng kể.

Quy trình thực hiện

Để hiểu được hoạt động bên trong của hợp đồng hoán đổi, hãy đi sâu vào chi tiết triển khai. Bước đầu tiên liên quan đến việc tạo Datum tùy chỉnh có chứa Redeemer (người tạo Đầu ra) và giá mà chúng sẵn sàng chấp nhận. Datum này đóng vai trò là Đầu vào cho trình xác thực.

Trong trình xác thực, yêu cầu kiểm tra duy nhất là đảm bảo rằng khi một Đầu ra được tiêu thụ, một Đầu ra khác sẽ được chuyển đến Redeemer với giá đã chỉ định có trong dữ liệu. Để thực hiện xác minh này, giá trị thanh toán cho Redeemer được trích xuất từ ​​Datum. Bằng cách so sánh giá trị này với lượng ADA được chỉ định làm giá trong Datum, có thể xác định xem khoản thanh toán đã được thực hiện chính xác hay chưa.

Giải quyết lỗ hổng chi tiêu gấp đôi

Mặc dù hợp đồng hoán đổi giải quyết hiệu quả các mối lo ngại về chi tiêu gấp đôi, nhưng điều quan trọng là phải nhận thức được các lỗ hổng tiềm ẩn. Một lỗ hổng phát sinh khi nhiều Đầu ra có cùng mức giá và Redeemer được tạo ra. Trong những trường hợp như vậy, một tác nhân độc hại có thể sử dụng tất cả các Đầu ra trong khi chỉ trả tiền cho một Đầu ra. Để ngăn chặn vấn đề chi tiêu gấp đôi này, có thể thực hiện nhiều giải pháp khác nhau.

Một cách tiếp cận liên quan đến việc kết hợp một mã định danh hoặc giá trị tham chiếu vào Datum. Bằng cách chỉ định các ID duy nhất ngay cả khi giá và Redeemer không thay đổi, mỗi Đầu ra sẽ duy trì danh tính riêng biệt của nó. Một phương pháp khác đòi hỏi phải đảm bảo rằng một Đầu ra duy nhất được tiêu thụ trong một giao dịch, do đó hạn chế khả năng nhiều Đầu ra được đáp ứng với một khoản thanh toán.

Bài tập về nhà: Tạo các bài kiểm tra để xác định và giải quyết các lỗ hổng chi tiêu gấp đôi

Để nâng cao hiểu biết của bạn về các lỗ hổng chi tiêu gấp đôi và các giải pháp của chúng, bài tập về nhà sẽ được cung cấp. Nhiệm vụ liên quan đến việc tạo các thử nghiệm để phát hiện lỗ hổng nói trên trong hợp đồng hoán đổi. Khi các bài kiểm tra đã được phát triển và xác thực, có thể thực hiện các sửa đổi đối với trình xác thực để loại bỏ lỗ hổng. Sau khi cập nhật hợp đồng thông minh, các thử nghiệm sẽ được chạy lại để xác nhận khả năng chống lại chi tiêu gấp đôi. Bạn có thể tìm kiếm sự hỗ trợ thông qua Discord và giải pháp sẽ được đưa ra sau một tuần để tham khảo thêm.

Phần kết luận

Chi tiêu gấp đôi gây ra rủi ro đáng kể trong giao dịch token và NFT, có khả năng dẫn đến tổn thất tài chính cho người bán. Việc triển khai hợp đồng hoán đổi thực thi thanh toán trước khi chuyển giao tài sản có thể giảm thiểu rủi ro này và tăng cường bảo mật giao dịch. Bằng cách hiểu thấu đáo các khái niệm cơ bản và siêng năng giải quyết các lỗ hổng chi tiêu gấp đôi, các nhà giao dịch có thể tạo ra một môi trường giao dịch mạnh mẽ và an toàn.

Xem video

Tuần 7


040701 - Introduction

PPP 040701 - Giới thiệu

Chào mừng đến với bài giảng thứ bảy của chương trình Tiên phong Plutus. Trong bài giảng này, chúng ta sẽ khám phá Marlowe, một ngôn ngữ dành riêng cho miền (DSL) được thiết kế cho các hợp đồng tài chính được xây dựng trên Plutus. Trong khi các bài giảng trước tập trung vào chính Plutus, bây giờ chúng ta sẽ đi sâu vào các tính năng và khả năng của Marlowe. Chúng ta đã đề cập đến các khía cạnh thiết yếu của việc viết ứng dụng Plutus, bao gồm mô hình UTXO mở rộng, mô hình kế toán, xác thực on-chain, chính sách đúc tiền, viết mã chuỗi, triển khai hợp đồng và thử nghiệm. Plutus là một ngôn ngữ mạnh mẽ cho phép triển khai các ngôn ngữ khác trên ngôn ngữ đó. Marlowe là một trong những ngôn ngữ như vậy, được thiết kế đặc biệt để xử lý các hợp đồng tài chính một cách hiệu quả.

Sự đánh đổi trong thiết kế ngôn ngữ:

Khi thiết kế các ngôn ngữ lập trình như Plutus hoặc Marlowe, phải cân nhắc nhiều sự đánh đổi. Một sự đánh đổi quan trọng là mức độ quyền lực của ngôn ngữ. Plutus, là Turing hoàn chỉnh, cho phép thể hiện logic tùy biến. Tuy nhiên, sức mạnh này phải trả giá. Những người đam mê khoa học máy tính có thể quen thuộc với vấn đề tạm dừng, điều này cho thấy sự khó khăn hoặc không thể tự động phân tích các chương trình được viết bằng ngôn ngữ hoàn chỉnh Turing. Do đó, một số thuộc tính của chương trình được viết bằng ngôn ngữ đó phải được kiểm tra thủ công. Mặc dù các công cụ tự động có thể xử lý một lượng lớn các chương trình, nhưng không có công cụ chung nào có thể xác định chắc chắn liệu một chương trình có kết thúc hay không. Mặt khác, bằng cách hy sinh tính hoàn chỉnh của Turing, một ngôn ngữ có được tiềm năng phân tích chương trình mạnh mẽ. Marlowe là một ví dụ về ngôn ngữ không phải là Turing hoàn chỉnh. Mặc dù nó không cho phép biểu diễn logic tùy biến, nhưng nó cho phép phân tích tĩnh để xác định thời gian chạy của chương trình, đảm bảo rằng tất cả các chương trình Marlowe đều có thời gian tồn tại hữu hạn.

Đơn giản và trực quan:

Plutus, mặc dù là một ngôn ngữ tương đối phức tạp, nhưng đã được cố ý thiết kế để trở nên cực kỳ đơn giản, phục vụ cho những người không phải là lập trình viên, kể cả các chuyên gia tài chính muốn thể hiện các cấu trúc hoặc hợp đồng tài chính bằng mã. Ngược lại, Marlowe được lấy cảm hứng từ một Bài giảng nổi tiếng từ năm 2000 của Simon Peyton Jones, một trong những người sáng tạo ban đầu của Haskell và EVA. Bài giảng nhằm mục đích chính thức hóa các hợp đồng tài chính truyền thống bằng cách sử dụng các cấu trúc tối thiểu. Marlowe tuân theo một cách tiếp cận tương tự, chỉ sử dụng một số ít Người xây dựng trực quan để mô hình hóa một loạt các hợp đồng trong thế giới thực.

Thích nghi với môi trường blockchain:

Trong khi tài chính truyền thống dựa vào hệ thống pháp luật để thực thi hợp đồng, môi trường blockchain thiếu các cơ chế thực thi như vậy. Marlowe tính đến điều này bằng cách giới thiệu các trường hợp dự phòng và thời gian chờ. Trong Marlowe, các hợp đồng chỉ có thể chờ thanh toán được thực hiện và nếu hành động dự kiến ​​​​không xảy ra trong khung thời gian đã chỉ định, hợp đồng sẽ chỉ định điều gì sẽ xảy ra khi hết thời gian chờ. Ngoài ra, Marlowe, mặc dù được triển khai trên Cardano, sử dụng mô hình UTXO mở rộng, áp dụng cách tiếp cận dựa trên tài khoản. Trong hợp đồng Marlowe, các tài khoản nội bộ được tạo cho mỗi bên tham gia. Các tài khoản nội bộ này nằm dưới sự kiểm soát của hợp đồng và tạo điều kiện chuyển tiền trong hợp đồng. Người tham gia được yêu cầu gửi tiền vào tài khoản nội bộ tương ứng của chúng và sau khi hợp đồng kết thúc, mọi khoản tiền còn lại sẽ tự động được trả lại cho chủ sở hữu tài khoản nội bộ.

Kế hoạch bài giảng:

Trong bài giảng này, chúng ta sẽ thực hiện theo kế hoạch sau:

  1. Playground Marlowe: Chúng ta sẽ bắt đầu với phần trình diễn Playground Marlowe, một môi trường dựa trên web đồ họa cho phép mô phỏng và tạo các hợp đồng Marlowe. Playground cung cấp nhiều cách tiếp cận, bao gồm Haskell, JavaScript và Blockly, giúp người mới bắt đầu có thể truy cập được. Chúng ta sẽ khám phá một ví dụ đơn giản về cách sử dụng Blockly và thảo luận lý do tại sao sử dụng Haskell hoặc JavaScript có thể thích hợp hơn Blockly và Earnest.

  2. Khám phá Marlowe Starter Kit: Brian Bush từ nhóm Marlowe sau đó sẽ tiếp quản và trình bày một loạt video thông tin về Marlowe

    Starter Kit, cung cấp thông tin chi tiết có giá trị về các tính năng và cách sử dụng.

Phần kết luận:

Marlowe là một ngôn ngữ dành riêng cho miền dành riêng cho các hợp đồng tài chính, được thiết kế để hoạt động liền mạch với Plutus trên blockchain Cardano. Bằng cách cố ý đánh đổi trong thiết kế ngôn ngữ, Marlowe đạt được sự cân bằng giữa sức mạnh và sự đơn giản, cho phép mô hình hóa nhiều loại hợp đồng tài chính trong thế giới thực đồng thời cho phép phân tích tĩnh và đảm bảo chấm dứt chương trình. Thông qua Marlowe Playground và Marlowe Starter Kit, các nhà phát triển có thể khám phá và tận dụng các khả năng của ngôn ngữ này để tạo ra các hợp đồng tài chính mạnh mẽ và an toàn trong hệ sinh thái blockchain.

Xem video

040702 - Marlowe Playground Demo

PPP 040702 - Bản trình diễn sân chơi Marlowe

Marlowe Playground là một nền tảng mạnh mẽ để thiết kế và thử nghiệm các hợp đồng tài chính. Trong Bài giảng này, chúng ta sẽ đi sâu vào các tính năng khác nhau của Marlowe Playground và cung cấp minh họa từng bước về cách tạo hợp đồng bằng các ngôn ngữ lập trình và công cụ khác nhau có sẵn trong sân chơi. Chúng ta sẽ khám phá trình chỉnh sửa đồ họa, Blockly, đồng thời giới thiệu cách viết hợp đồng bằng JavaScript và Haskell. Ngoài ra, chúng ta sẽ kiểm tra quy trình tạo hợp đồng, bao gồm xác định các bên, đặt điều kiện và xử lý các tình huống khác nhau. Đến cuối Bài giảng này, bạn sẽ hiểu thấu đáo về Marlowe Playground và các khả năng của nó.

Tổng quan về Playground Marlowe:

Để bắt đầu khám phá Playground Marlowe, chúng ta cần truy cập trang web play.malu-finance.io. Khi đến nơi, chúng ta được cung cấp một số tùy chọn để bắt đầu hoặc chơi với Marlowe. Các ngôn ngữ lập trình và công cụ có sẵn bao gồm JavaScript, Haskell, Marlowe và Blockly. Đặc biệt, Blockly là một công cụ đồ họa thân thiện với người dùng, cho phép tạo hợp đồng mà không cần có kinh nghiệm lập trình trước đó. Mặc dù những thay đổi nhỏ đã được thực hiện đối với Marlowe và sân chơi kể từ khi ghi bản trình diễn này, Hàm cốt lõi vẫn không thay đổi. Hãy đi sâu vào trình chỉnh sửa đồ họa và khám phá từng bước quy trình tạo hợp đồng.

Tạo hợp đồng với Blockly:

Sử dụng trình chỉnh sửa đồ họa trong Marlowe Playground, chúng ta có thể dễ dàng tạo hợp đồng bằng cách nhấp và kéo các thành phần. Đối với phần trình diễn này, chúng ta sẽ thiết kế một hợp đồng có sự tham gia của ba bên: Alice, Bob và Charlie. Mục tiêu của hợp đồng là để Alice và Bob gửi một lượng ADA nhất định và Charlie sẽ quyết định ai sẽ nhận được tổng số tiền. Nếu bất kỳ bên nào không tham gia, một khoản hoàn trả sẽ được ban hành. Hãy bắt đầu bằng cách tạo hợp đồng trong Blockly.

Đầu tiên, chúng ta bắt đầu với cấu trúc when để đợi Alice gửi tiền, một hành động bên ngoài do chính Alice kích hoạt. Chúng ta đặt thời gian chờ cho khoản tiền gửi này, chẳng hạn như cho đến slot 10. Nếu khoản tiền gửi không diễn ra trong khung thời gian đã chỉ định, hợp đồng sẽ đóng lại. Tiếp theo, chúng ta xác định hành động bên ngoài để chờ đợi, đó là khoản tiền gửi của Alice. Chúng ta chỉ định bên gửi tiền (Alice) và số tiền (10 ADA). Chúng ta cũng chỉ định khoản tiền gửi vào tài khoản nội bộ của Alice.

Để tiếp tục, chúng ta cần Bob gửi tiền sau Alice. Chúng ta sao chép khối when trước đó và điều chỉnh thời gian chờ thành 20 slot, cho Bob một cửa sổ 10slot để hành động. Chúng ta thay thế các tham chiếu đến Alice bằng Bob và định cấu hình số tiền gửi và tài khoản nội bộ tương ứng.

Bây giờ, chúng ta giới thiệu một điểm quyết định nơi Charlie chọn giữa Alice và Bob. Một lần nữa, chúng ta sử dụng cấu trúc when, đặt thời gian chờ là 30 khe và xác định hành động bên ngoài là lựa chọn của Charlie. Chúng ta gán tên winner cho lựa chọn và chỉ định các giá trị có thể (1 cho Alice, 2 cho Bob).

Dựa trên quyết định của Charlie, chúng ta cần xử lý hợp đồng cho phù hợp. Chúng ta giới thiệu một câu lệnh điều kiện đơn giản (if) để kiểm tra xem Charlie có chọn Alice hay không. Nếu quan sát xác nhận rằng lựa chọn của Charlie phù hợp với giá trị của Alice (1), chúng ta sử dụng thành phần hợp đồng Payment để chuyển tiền vào tài khoản nội bộ của Alice. Ngược lại, nếu Charlie chọn Bob, chúng ta hoán đổi vai trò và chuyển tiền vào tài khoản nội bộ của Bob.

Bây giờ chúng ta có một hợp đồng Marlowe Hàm được tạo bằng Blockly. Hợp đồng được thiết kế để xử lý các tình huống đặt cọc, lựa chọn và thanh toán. Để đảm bảo tính minh bạch, chúng ta có thể xem mã Marlowe do trình chỉnh sửa đồ họa tạo ra và tiến hành mô phỏng quá trình thực thi của nó.

Sử dụng Haskell Editor và Simulation:

Trong khi Blockly cung cấp giao diện trực quan để tạo hợp đồng, Marlowe Playground cũng cung cấp tùy chọn viết hợp đồng trong Haskell. Cách tiếp cận này cho phép chúng ta tận dụng sức mạnh của Haskell và sử dụng thêm.

Xem video

040703 - Homework

PPP 040703 - Bài tập về nhà

Trong phần ghi chép bài giảng này, diễn giả giới thiệu một bài tập về nhà liên quan đến việc sửa đổi hợp đồng cho sân chơi Milo. Nhiệm vụ liên quan đến việc thay đổi hợp đồng để bao gồm các điều kiện cụ thể đối với tiền gửi và kết quả dựa trên lựa chọn của người tham gia. Bài giảng này sẽ khám phá các chi tiết của Bài giảng và cung cấp một sự hiểu biết toàn diện về bài tập về nhà.

Chi Tiết Bài Tập Về Nhà

Diễn giả bắt đầu bằng cách giải thích rằng mặc dù chúng thường cung cấp bài tập về nhà vào cuối bài giảng, nhưng lần này chúng sẽ trình bày sớm. Lý do của sự thay đổi này là để cho phép Brian Bush tiếp quản và giới thiệu khóa học của mình trên Cardano Starter Kit. Bài tập về nhà liên quan đến việc sửa đổi một hợp đồng đã được thảo luận trước đó. Các sửa đổi nhằm mục đích kết hợp các quy tắc và điều kiện bổ sung cho những người tham gia.

Hợp đồng sửa đổi

Hợp đồng đã sửa đổi đưa ra các điều kiện mới cho Charlie, Alice và Pop. Thay đổi đầu tiên liên quan đến khoản tiền gửi ban đầu của Charlie. Theo sự phân công, Charlie nên đặt cọc ngay từ đầu, gấp đôi số tiền đặt cọc của Ellison. Sự thay đổi này thiết lập một yêu cầu mới cho Charlie trước khi thực hiện hợp đồng.

Hơn nữa, nếu Charlie không đưa ra lựa chọn khi đến lượt mình, Alice và Pop sẽ nhận được một nửa số tiền Charlie gửi ban đầu. Trong ví dụ đã cho, Ellison và Pop mỗi người có 20 đơn vị. Điều kiện này khuyến khích sự tham gia tích cực và trừng phạt sự thiếu quyết đoán.

Tiếp tục Hợp đồng

Hợp đồng sửa đổi tiến hành tương tự như phiên bản gốc sau khi sửa đổi ban đầu. Nếu tất cả những người tham gia đưa ra lựa chọn theo các quy tắc của hợp đồng, Alice và Pop mỗi người gửi 10 đơn vị. Trong một ví dụ cụ thể được cung cấp, nếu Charlie đưa ra lựa chọn cho Alice, như trước đây, Alice sẽ nhận được 20 đơn vị từ khoản tiền gửi ban đầu của Charlie và Charlie nhận lại khoản tiền gửi ban đầu của mình.

Tuy nhiên, nếu Charlie không đưa ra lựa chọn và đã đến thời hạn, 20 đơn vị của anh ấy sẽ được chia cho Alice và Pop. Kết quả này đảm bảo rằng những người tham gia phải đối mặt với hậu quả nếu không tuân thủ các yêu cầu của hợp đồng, do đó duy trì sự công bằng và trách nhiệm giải trình.

Phần kết luận

Bài tập về nhà được trình bày trong Bài giảng này tập trung vào việc sửa đổi hợp đồng cho sân chơi Milo. Bằng cách đưa ra các điều kiện cụ thể, chẳng hạn như yêu cầu đặt cọc ban đầu đối với Charlie và hậu quả của việc không đưa ra lựa chọn, hợp đồng sửa đổi nhằm mục đích tăng cường sự tham gia của người tham gia và sự công bằng trong hệ sinh thái của sân chơi. Bài giảng này đã cung cấp một cái nhìn tổng quan chi tiết về bài tập về nhà, làm sáng tỏ những sửa đổi và ý nghĩa của chúng đối với những người tham gia.

Xem video

040704 - Marlowe Starter Kit: Docker

PPP 040704 - Bộ khởi động Marlowe: Docker

Marlowe Starter Kit cung cấp cho người dùng các công cụ cần thiết để làm việc với Marlowe, một ngôn ngữ dành riêng cho miền để tạo các hợp đồng thông minh tài chính trên blockchain Cardano. Mặc dù bộ công cụ có thể được sử dụng với dịch vụ đám mây đã cài đặt sẵn Marlowe Runtime, hướng dẫn này tập trung vào quá trình thiết lập Marlowe Runtime bằng Docker. Bằng cách làm theo các bước được nêu bên dưới, người dùng sẽ có thể thiết lập các biến môi trường bắt buộc và triển khai Marlowe Runtime. Ngoài ra, hướng dẫn này bao gồm việc cài đặt Nix, Docker và Docker Compose, cùng với các thành phần phần mềm thiết yếu khác.

Mục lục:

  1. Tổng quan về Marlowe Starter Kit và các tùy chọn triển khai
  2. Hiểu về các biến môi trường và tầm quan trọng của chúng
  3. Các thành phần kiến ​​trúc của Marlowe Runtime
  4. Định cấu hình Nix để phát triển Marlowe
  5. Cài đặt Nix và kích hoạt hỗ trợ Mixed Flakes
  6. Cài đặt Docker và Docker Compose
  7. Thiết lập Docker và thêm người dùng vào Docker Group
  8. Nhân bản Kho lưu trữ Bộ khởi động Marlowe
  9. Ra mắt Nix Development Shell
  10. Cấu hình Docker Network
  11. Tìm nạp Docker và bắt đầu dịch vụ
  12. Xác minh tình trạng của dịch vụ
  13. Kiểm tra quá trình đồng bộ hóa node và blockchain
  14. Đảm bảo Đồng bộ hóa Marlowe Chain Indexer
  15. Xác minh Hàm của Marlowe Indexer và Proxy Service
  16. Khởi động máy chủ web Marlowe
  17. Chạy Máy chủ Sổ tay Jupiter

Phần 1: Tổng quan về Bộ công cụ khởi đầu Marlowe và các tùy chọn triển khai

Marlowe Starter Kit cung cấp cho người dùng một bộ công cụ toàn diện để làm việc với Marlowe, một ngôn ngữ dành riêng cho miền được thiết kế cho các hợp đồng thông minh tài chính trên blockchain Cardano. Bộ này cung cấp hai tùy chọn triển khai: sử dụng dịch vụ đám mây với Marlowe Runtime được cài đặt sẵn hoặc thiết lập Marlowe Runtime theo cách thủ công bằng Docker. Mặc dù dịch vụ đám mây không yêu cầu cài đặt nhưng hướng dẫn này tập trung vào tùy chọn thứ hai, tùy chọn này mang lại nhiều quyền kiểm soát và tính linh hoạt hơn nhưng yêu cầu thiết lập bổ sung.

Phần 2: Tìm hiểu về các biến môi trường và tầm quan trọng của chúng

Để sử dụng hiệu quả Marlowe Runtime, điều quan trọng là phải định cấu hình các biến môi trường kết nối các thành phần khác nhau của hệ sinh thái Marlowe. Mỗi Marlowe CLI, Marlowe Runtime CLI và Marlowe Web Server được xác định bởi một tập hợp các biến môi trường. Các biến này thiết lập các điểm kết nối giữa các bài học và chương trình phụ trợ Marlowe Runtime, cho phép Hàm và giao tiếp thông suốt.

Phần 3: Các thành phần kiến ​​trúc của Marlowe Runtime

Marlowe Runtime bao gồm các thành phần kiến ​​trúc khác nhau, bao gồm dịch vụ lập chỉ mục chuỗi, dịch vụ đồng bộ hóa, dịch vụ lập chỉ mục Marlowe và node Cardano. Các thành phần này được xây dựng dựa trên cơ sở dữ liệu PostgreHaskell, với các dịch vụ bổ sung để xây dựng các giao dịch Marlowe và cung cấp Hàm proxy. Hiểu kiến ​​trúc cơ bản giúp người dùng hiểu được luồng dữ liệu và tương tác trong hệ sinh thái Marlowe.

Phần 4: Định cấu hình Nix để phát triển Marlowe

Nix, một trình quản lý gói mạnh mẽ, là một công cụ thiết yếu để phát triển Marlowe. Phần này cung cấp các hướng dẫn từng bước về cách cài đặt Nix và kích hoạt hỗ trợ các mảnh hỗn hợp, một tính năng quan trọng để quản lý các phụ thuộc. Ngoài ra, người dùng nên tự định cấu hình mình là người dùng đáng tin cậy trong cấu hình Nix để tối ưu hóa việc xây dựng phần mềm và truy xuất phụ thuộc.

Phần 5: Cài đặt Nix và kích hoạt hỗ trợ Mixed Flakes

Phần này hướng dẫn người dùng quy trình cài đặt Nix bằng cách sử dụng lệnh được cung cấp từ trang web chính thức của Nix. Bằng cách thực hiện cài đặt trên máy Debian, người dùng đảm bảo khả năng tương thích và môi trường phát triển ổn định. Phần này cũng nhấn mạnh tầm quan trọng của việc kích hoạt hỗ trợ các mảnh hỗn hợp và cung cấp hướng dẫn về quy trình cấu hình.

Phần 6: Cài đặt Docker và Docker Compose

Docker và Docker Compose là những công cụ cơ bản để quản lý các ứng dụng được chứa trong vùng chứa, bao gồm cả Marlowe Runtime. Phần này hướng dẫn người dùng cập nhật thông tin phần mềm có sẵn, cài đặt Docker và Docker Compose cũng như cài đặt các thành phần phần mềm bổ sung để thuận tiện.

Phần 7: Thiết lập Docker và thêm người dùng vào Docker Group

Để đơn giản hóa việc sử dụng Docker, người dùng được hướng dẫn tự thêm mình vào nhóm Docker. Bằng cách đó, người dùng bình thường có thể thực thi các lệnh Docker mà không yêu cầu quyền root. Phần này phác thảo các bước cần thiết để thêm người dùng vào nhóm Docker, nâng cao trải nghiệm người dùng và hợp lý hóa quy trình phát triển.

Phần 8: Nhân bản Kho lưu trữ Marlowe Starter Kit

Trong phần này, người dùng được hướng dẫn quy trình sao chép kho lưu trữ Marlowe Starter Kit từ GitHub. Bằng cách thực hiện các lệnh được cung cấp, người dùng có thể lấy phiên bản mới nhất của Starter Kit, đảm bảo quyền truy cập vào các tệp và ví dụ cần thiết để phát triển Marlowe.

Phần 9: Khởi chạy Nix Development Shell

Nix Development Shell là một thành phần quan trọng để phát triển Marlowe, cung cấp một bộ công cụ và tiện ích toàn diện. Phần này hướng dẫn người dùng vào hệ vỏ phát triển Nix và khám phá các tính năng và Hàm bổ sung do môi trường này cung cấp.

Phần 10: Cấu hình Docker Network

Để thiết lập môi trường mạng cần thiết cho Marlowe Runtime, người dùng cần định cấu hình mạng Docker. Phần này hướng dẫn người dùng lựa chọn mạng tiền sản xuất, giải thích những ưu điểm của việc chọn mạng này so với các tùy chọn khác. Hướng dẫn bao gồm các bước cần thiết để định cấu hình mạng Docker đúng cách.

Phần 11: Tìm nạp Docker Image và bắt đầu dịch vụ

Trong phần này, người dùng được cung cấp các lệnh để tìm nạp Docker và bắt đầu các dịch vụ cần thiết cho Marlowe Runtime. Bằng cách thực hiện các lệnh, người dùng đảm bảo rằng tất cả các thành phần cần thiết đều được tải xuống và khởi chạy, mở đường cho môi trường phát triển Marlowe hoạt động.

Phần 12: Xác minh Tình trạng của Dịch vụ

Sau khi bắt đầu các dịch vụ Docker, điều quan trọng là phải xác minh tình trạng của chúng và đảm bảo rằng chúng đang chạy chính xác. Phần này hướng dẫn người dùng kiểm tra trạng thái của dịch vụ, xác nhận tình trạng của chúng và cung cấp hướng dẫn về cách sử dụng các lệnh khác nhau để kiểm soát bộ chứa Docker.

Phần 13: Kiểm tra quá trình đồng bộ hóa node và blockchain

Để tương tác với blockchain Cardano một cách hiệu quả, người dùng cần đảm bảo rằng node Cardano được đồng bộ hóa. Phần này hướng dẫn người dùng quy trình kiểm tra tiến độ đồng bộ hóa của node, cung cấp ước tính thời gian cần thiết để node đồng bộ hóa dựa trên băng thông khả dụng và tài nguyên tính toán.

Phần 14: Đảm bảo đồng bộ hóa Marlowe Chain Indexer

Trình lập chỉ mục chuỗi Marlowe là một thành phần quan trọng chịu trách nhiệm lập chỉ mục tất cả các giao dịch trên blockchain Cardano. Phần này hướng dẫn người dùng kiểm tra trạng thái đồng bộ hóa của bộ chỉ mục chuỗi Marlowe, đảm bảo rằng nó được cập nhật và đồng bộ hóa với các giao dịch mới nhất.

Phần 15: Xác minh Hàm của Dịch vụ ủy quyền và lập chỉ mục Marlowe

Để đảm bảo trải nghiệm phát triển Marlowe suôn sẻ, điều cần thiết là phải xác nhận Hàm của dịch vụ proxy và bộ chỉ mục Marlowe. Phần này cung cấp hướng dẫn về cách xác minh đồng bộ hóa và hoạt động của cả hai thành phần, cho phép người dùng tự tin tiến hành phát triển Marlowe.

Phần 16: Khởi động Máy chủ Web Marlowe

Máy chủ web Marlowe đóng vai trò là giao diện chính để tương tác với Marlowe Runtime. Phần này hướng dẫn người dùng quy trình khởi động máy chủ web, cho phép liên lạc liền mạch giữa hệ sinh thái Marlowe và giao diện người dùng.

Phần 17: Chạy Jupiter Notebook Server

Đối với những người dùng thích sử dụng sổ ghi chép Jupiter để phát triển Marlowe, phần này trình bày cách khởi động máy chủ sổ ghi chép Jupiter. Bằng cách làm theo các hướng dẫn được cung cấp, người dùng có thể khởi chạy máy chủ và đảm bảo rằng nó hoạt động chính xác, sẵn sàng tạo và thực hiện các hợp đồng Marlowe.

Phần kết luận:

Bằng cách làm theo hướng dẫn toàn diện này, người dùng có thể thiết lập thành công Marlowe Runtime bằng Docker, cho phép chúng tận dụng toàn bộ tiềm năng của Marlowe Starter Kit. Từ việc cài đặt Nix và Docker đến định cấu hình các biến môi trường và xác minh Hàm của hệ sinh thái Marlowe, mọi bước đều được giải thích cẩn thận để đảm bảo trải nghiệm phát triển Marlowe suôn sẻ và thành công.

Xem video

040705 - Marlowe Starter Kit: 0. Preliminaries

PPP 040705 - Marlowe Starter Kit: 0. Sơ bộ

Marlowe Starter Kit cung cấp một bộ hướng dẫn toàn diện để học Marlowe, một ngôn ngữ dành riêng cho miền (DSL) được xây dựng trên Cardano, một nền tảng blockchain. Các hướng dẫn này yêu cầu các khóa và địa chỉ mật mã để thực hiện các giao dịch trên blockchain. Trong Bài giảng này, chúng ta sẽ hướng dẫn quy trình tạo khóa ký và địa chỉ cần thiết cho các bên liên quan trong hướng dẫn Bộ công cụ dành cho người mới bắt đầu Marlowe.

Thiết lập môi trường

Để bắt đầu, bạn sẽ cần quyền truy cập vào một node, node này có thể được lấy từ nhiều nguồn khác nhau. Một tùy chọn là sử dụng Demeter run, cung cấp ổ cắm node cho bạn. Một tùy chọn khác là chạy một node cục bộ bằng Docker. Ngoài ra còn có các phương pháp thay thế có sẵn. Trong Bài giảng này, chúng ta sẽ trình bày phương pháp Docker trong sổ ghi chép Jupiter.

Dưới đây là các bước để thiết lập môi trường:

  1. Sao chép kho lưu trữ Marlowe Starter Kit.
  2. Điều hướng đến thư mục trên cùng của kho lưu trữ.
  3. Làm theo hướng dẫn được cung cấp để cài đặt trình quản lý gói Nix và bật hỗ trợ Nix flakes.
  4. Khởi chạy sổ ghi chép Jupiter bằng cách thực hiện lệnh thích hợp.
  5. Sau khi máy chủ Jupiter được xây dựng và khởi chạy, hãy mở Jupiter Lab.
  6. Truy cập sổ ghi chép trong bộ công cụ dành cho người mới bắt đầu, đặc biệt là sổ ghi chép có tên Preliminaries.

Hiểu công cụ Marlowe

Trước khi tiến hành tạo các khóa và địa chỉ ký, chúng ta hãy tự làm quen với các công cụ khác nhau được sử dụng để chạy các giao dịch Marlowe. Marlowe cung cấp một số quy trình công việc, bao gồm:

  1. Marlowe CLI: Quy trình làm việc gọn nhẹ này sử dụng giao diện dòng lệnh (CLI) của Marlowe mà không cần phụ trợ Marlowe Runtime. Nó cung cấp một giao diện cấp thấp để thử nghiệm và gỡ lỗi, nhưng yêu cầu quản lý thủ công các Đầu ra giao dịch chưa chi tiêu (UTXO).
  2. Truy cập dòng lệnh và web vào phần phụ trợ: Các dịch vụ phụ trợ Marlowe Runtime lập chỉ mục blockchain, diễn giải các giao dịch Marlowe, hỗ trợ xây dựng các giao dịch và cho phép truy vấn lịch sử Marlowe. Bạn có thể truy cập phần phụ trợ thông qua CLI Marlowe Runtime hoặc qua bất kỳ ứng dụng khách HTTP nào bằng API REST của Marlowe. Cách tiếp cận này cung cấp thêm sức mạnh và tính linh hoạt.

Với mục đích của hướng dẫn này, chúng ta chỉ yêu cầu một máy chủ node. Tuy nhiên, các phương pháp khác sẽ được sử dụng trong các hướng dẫn hợp đồng Marlowe tiếp theo.

Tạo khóa ký và địa chỉ

Bây giờ, hãy tiến hành tạo khóa ký và địa chỉ cho các bên liên quan trong hướng dẫn Bộ công cụ dành cho người mới bắt đầu Marlowe. Chúng ta giả định rằng bạn đã có một node được triển khai từ Demeter run hoặc cục bộ bằng Docker.

  1. Đặt biến môi trường: Để đơn giản hóa quy trình và giảm việc nhập sau này, chúng ta sẽ đặt một số biến môi trường. Các biến này sẽ giúp chúng ta xác định slot ổ cắm node và số magic mạng.
  2. Tạo faucet: Để cấp vốn thuận tiện cho các bên liên quan, chúng ta sẽ tạo thứ thường được gọi là faucet. Faucet này sẽ bao gồm một cặp khóa cho phép chúng ta lưu trữ một lượng lớn dữ liệu thử nghiệm ADA để phân phối cho các bên và hợp đồng.
  3. Tạo khóa: Chúng ta sẽ sử dụng Cardano CLI để tạo các khóa cần thiết. Bạn có thể tham khảo cổng thông tin dành cho nhà phát triển Cardano để biết thông tin chi tiết về địa chỉ và khóa.
  4. Tính toán địa chỉ: Sau khi các khóa được tạo, chúng ta có thể tính toán các địa chỉ được liên kết với mỗi bên. Các bên liên quan đến hướng dẫn bao gồm người cho vay, người đi vay và người hòa giải.

Nhận ADA thử nghiệm

Để tài trợ cho các địa chỉ chúng ta đã tạo, chúng ta cần thử nghiệm ADA. May mắn thay, trên testnetworks, có một faucet có thể truy cập công khai. Bằng cách truy cập trang web của faucet, bạn có thể dán địa chỉ và yêu cầu tiền. Ngoài ra, bạn có thể sử dụng Daedalus, ví Cardano, để gửi ADA thử nghiệm đến các địa chỉ. Trong hướng dẫn này,

Xem thêm chi tiết [tại đây](See more details here

Xem video

040706 - Marlowe Starter Kit: 1. ZCB using the Marlowe Runtime command-line client

PPP 040706 - Marlowe Starter Kit: 1. ZCB sử dụng ứng dụng khách dòng lệnh Marlowe Runtime

Marlowe Starter Kit cung cấp một hướng dẫn toàn diện để tạo hợp đồng thông minh bằng cách sử dụng Marlowe, một ngôn ngữ dành riêng cho miền cho các hợp đồng tài chính trên blockchain Cardano. Bài giảng này tập trung vào phần hướng dẫn đầu tiên của bộ công cụ khởi động, bao gồm việc tạo hợp đồng Trái phiếu không lãi suất (ZCB). Hướng dẫn trình bày ba phương pháp khác nhau để thực thi hợp đồng, bao gồm sử dụng ứng dụng khách dòng lệnh Marlowe Runtime, dịch vụ web Marlowe Runtime thông qua API REST và cách tiếp cận dòng lệnh nhẹ. Bằng cách làm theo hướng dẫn này, các nhà phát triển sẽ có được kiến ​​thức thực tế về xây dựng và chạy các hợp đồng Marlowe.

Mục lục:

  1. Giới thiệu

  2. Thiết lập Môi trường Marlowe Runtime

  3. Khởi chạy sổ tay Jupiter

  4. Thiết kế hợp đồng Trái phiếu Zero-coupon

  5. Phân tích Hợp đồng

  6. Tạo hợp đồng trên blockchain

  7. Ký quỹ vào Hợp đồng

  8. Thanh toán của Bên vay và Hoàn thành Hợp đồng

  9. Kiểm tra và thăm dò hợp đồng

  10. Kết luận

  11. Giới thiệu

Marlowe Starter Kit cung cấp một loạt hướng dẫn từng bước để giúp các nhà phát triển hiểu và sử dụng ngôn ngữ Marlowe để tạo các hợp đồng tài chính trên blockchain Cardano. Bài giảng này tập trung vào phần hướng dẫn đầu tiên, bao gồm việc tạo hợp đồng Zero Coupon Bond (ZCB).

  1. Thiết lập môi trường Marlowe Runtime

Để bắt đầu, các nhà phát triển cần thiết lập môi trường Marlowe Runtime. Điều này có thể được thực hiện thông qua Demeter run, dịch vụ lưu trữ đám mây có tích hợp Marlowe Runtime hoặc bằng cách chạy phiên bản Docker cục bộ. Hướng dẫn cung cấp hướng dẫn cho cả hai tùy chọn. Sau khi môi trường được thiết lập, các nhà phát triển có thể khởi chạy Jupiter Notebook, một giao diện dựa trên web để chạy các hợp đồng Marlowe.

  1. Khởi chạy sổ tay Jupiter

Hướng dẫn hướng dẫn các nhà phát triển thông qua việc khởi chạy Sổ tay Jupiter, cho phép chúng tương tác với môi trường Marlowe Runtime. Sổ tay cung cấp một hạt nhân bash đặc biệt với các công cụ Marlowe được cài đặt sẵn. Hướng dẫn này cũng giới thiệu các sổ ghi chép có sẵn cho các hướng dẫn khác nhau, tập trung vào hướng dẫn đầu tiên: Runtime CLI.

  1. Thiết kế hợp đồng Zero Coupon Bond

Phần hướng dẫn giới thiệu khái niệm về hợp đồng Trái phiếu không lãi suất (ZCB), đại diện cho khoản vay trong đó người cho vay cung cấp số tiền gốc sẽ được trả lại cùng với tiền lãi vào một ngày sau đó. Các nhà phát triển có thể sử dụng Marlowe Playground, một IDE trực tuyến, để thử nghiệm xây dựng hợp đồng ZCB. Hợp đồng cũng có thể được tạo bằng Haskell hoặc TypeScript. Hướng dẫn trình bày các biểu diễn định dạng Blockly và Marlowe của hợp đồng ZCB.

  1. Phân tích hợp đồng

Để đảm bảo tính an toàn và đúng đắn của hợp đồng, hướng dẫn nhấn mạnh tầm quan trọng của việc phân tích hợp đồng. Mặc dù hợp đồng ZCB tương đối đơn giản, nhưng các phương pháp hay nhất quy định rằng tất cả các hợp đồng phải được phân tích kỹ lưỡng. Marlowe Playground cung cấp các công cụ phân tích tĩnh và khả năng mô phỏng để giúp xác định các vấn đề tiềm ẩn. Hướng dẫn minh họa việc sử dụng công cụ analyze để phân tích hợp đồng ZCB, đảm bảo tính hợp lệ và tuân thủ các thông lệ tốt nhất.

  1. Tạo hợp đồng trên blockchain

Sau khi thiết kế và phân tích hợp đồng hoàn tất, các nhà phát triển tiến hành tạo hợp đồng ZCB trên blockchain bằng công cụ dòng lệnh Marlowe Runtime. Hướng dẫn phác thảo các bước và tham số cần thiết, chẳng hạn như chỉ định tệp hợp đồng, số lượng UTXO tối thiểu và địa chỉ của bên cho vay. Việc thực thi lệnh sẽ tạo ra một tệp giao dịch chưa được ký, tệp này sau đó có thể được ký để gửi tới blockchain.

  1. Gửi tiền vào hợp đồng

Để bắt đầu hợp đồng ZCB, người cho vay phải gửi tiền vào đó. Hướng dẫn trình bày cách lệnh Marlowe Runtime

Xem thêm chi tiết [tại đây](See more details here

Xem video

040707 - Marlowe Starter Kit: 2. ZCB using the Marlowe Runtime REST API

PPP 040707 - Marlowe Starter Kit: 2. ZCB sử dụng Marlowe Runtime REST API

Trong hướng dẫn này, chúng ta sẽ khám phá bài học thứ hai của bộ công cụ khởi động Marlowe, tập trung vào việc sử dụng Marlowe Runtime REST API để vận hành hợp đồng trái phiếu Zero-coupon. Không giống như bài học trước liên quan đến tương tác dòng lệnh, hướng dẫn này sẽ trình bày cách thực hiện các tác vụ tương tự bằng cách sử dụng các yêu cầu web RESTful. Chúng ta sẽ đề cập đến thiết lập cần thiết, thiết kế hợp đồng, tạo hợp đồng, truy xuất trạng thái hợp đồng, gửi tiền, rút ​​tiền và khám phá các khả năng của API Marlowe Runtime REST. Khi kết thúc hướng dẫn này, bạn sẽ hiểu rõ về cách tương tác với các hợp đồng Marlowe bằng API REST.

Thiết lập môi trường

Trước khi đi sâu vào chi tiết của hợp đồng trái phiếu Zero-coupon, chúng ta cần đảm bảo rằng môi trường phát triển của chúng ta được định cấu hình đúng cách. Điều này bao gồm thiết lập các biến môi trường cần thiết, ổ cắm node, magic mạng, URL máy chủ web cũng như lấy khóa và địa chỉ cho người cho vay và người vay. Khi chúng ta có tất cả các biến này, chúng ta có thể tiến hành thiết kế hợp đồng.

hợp đồng thiết kế

Hợp đồng trái phiếu không lãi suất trong bài học này tương tự như hợp đồng trong bài học trước, với một điểm khác biệt chính: việc sử dụng token vai trò thay vì địa chỉ. Chúng ta sẽ sử dụng token cuộn để ủy quyền cho các giao dịch Marlowe trong hợp đồng. Để thiết kế hợp đồng, chúng ta có thể sử dụng Marlowe Playground, cho phép chúng ta tạo hợp đồng một cách trực quan và mô phỏng hành vi của chúng. Ngoài ra, chúng ta có thể sử dụng công cụ Marlowe CLI để điền vào một mẫu. Trong hướng dẫn này, chúng ta sẽ sử dụng công cụ CLI để thuận tiện. Chúng ta sẽ xác định các tham số hợp đồng như tiền gốc, tiền lãi và tiền gửi ban đầu, đồng thời tạo tệp hợp đồng.

Tạo hợp đồng

Để tạo hợp đồng bằng Marlowe Runtime REST API, chúng ta cần tạo một tải trọng JSON chứa các chi tiết hợp đồng. Tải trọng này chỉ định phiên bản Marlowe, UTxO tối thiểu và địa chỉ token vai trò cho người cho vay và người vay. Chúng ta sẽ sử dụng Curl để gửi yêu cầu POST HTTP với tải trọng đến điểm cuối thích hợp. Phản hồi sẽ chứa ID hợp đồng và các chi tiết giao dịch khác. Chúng ta trích xuất giao dịch chưa ký từ phản hồi và ký nó bằng công cụ Marlowe CLI. Sau khi giao dịch được xác nhận, chúng ta có thể xác minh trạng thái của hợp đồng trên blockchain.

Gửi tiền và rút tiền

Các bước tiếp theo liên quan đến việc gửi tiền vào hợp đồng và sau đó rút tiền. Chúng ta tạo một yêu cầu JSON chỉ định số tiền gửi và gửi nó bằng HTTP POST. Tương tự, chúng ta truy xuất giao dịch chưa ký, ký tên và chờ xác nhận. Chúng ta có thể theo dõi những thay đổi trong số dư của bên cho vay và bên đi vay và đảm bảo rằng các token vai trò được chuyển đúng cách trong các giao dịch.

Truy xuất trạng thái hợp đồng

Sử dụng API REST Marlowe Runtime, chúng ta có thể truy vấn trạng thái hiện tại của hợp đồng bằng cách cung cấp ID hợp đồng. Phản hồi API chứa thông tin chi tiết về hợp đồng, bao gồm siêu dữ liệu, chính sách vai trò và trạng thái ban đầu. Chúng ta chuyển đổi phản hồi JSON sang định dạng YAML để dễ đọc hơn.

Khám phá API REST Marlowe Runtime

Ngoài các hành động cụ thể được thực hiện trong hướng dẫn này, Marlowe Runtime REST API cung cấp một loạt các điểm cuối và Hàm. Bằng cách thực hiện lệnh gọi OpenAPI, chúng ta có thể truy xuất mô tả mở rộng về API, bao gồm tất cả các điểm cuối có sẵn và khả năng tương ứng của chúng. Khám phá này cho phép chúng ta tận dụng toàn bộ tiềm năng của API REST Marlowe Runtime để xây dựng và quản lý các hợp đồng Marlowe.

Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách sử dụng API REST của Marlowe Runtime để tương tác với hợp đồng trái phiếu Zero-coupon. Chúng ta đề cập đến toàn bộ vòng đời của hợp đồng, bao gồm thiết lập, thiết kế hợp đồng, tạo hợp đồng, gửi và rút tiền, truy xuất trạng thái hợp đồng và khám phá các khả năng của Marlowe Runtime REST.

Xem thêm chi tiết [tại đây](See more details here

Xem video

040708 - Marlowe Starter Kit: 3. ZCB using the Marlowe Runtime CLI

PPP 040708 - Marlowe Starter Kit: 3. ZCB sử dụng Marlowe Runtime CLI

Trong hướng dẫn này, chúng ta sẽ trình bày cách thực hiện hợp đồng trái phiếu không lãi suất bằng công cụ Marlowe CLI trong Bộ công cụ dành cho người mới bắt đầu Marlowe. Chúng ta sẽ khám phá một ví dụ về việc chạy hợp đồng trái phiếu phiếu Zero-coupon trong Marlowe, sử dụng các công cụ cấp thấp hơn thay vì Marlowe Runtime thông qua dòng lệnh hoặc API REST. Hướng dẫn giả định rằng bạn đã quen thuộc với Marlowe và kiến ​​thức cơ bản về các khái niệm blockchain.

điều kiện tiên quyết:

Trước khi chúng ta đi sâu vào việc thực hiện hợp đồng trái phiếu Zero-coupon, hãy đảm bảo rằng chúng ta có sẵn các thiết lập cần thiết. Chúng ta yêu cầu phiên bản Jupiter Lab đang chạy và có quyền truy cập vào sổ ghi chép Bộ công cụ dành cho người mới bắt đầu Marlowe. Trong hướng dẫn này, chúng ta sẽ làm việc với sổ ghi chép thứ ba chứa hợp đồng mà chúng ta sẽ thực hiện. Chúng ta sẽ xóa Đầu ra để đảm bảo một khởi đầu mới.

Kết nối với Node và Đặt biến môi trường:

Để thực hiện hợp đồng, chúng ta cần thiết lập kết nối với ổ cắm node. Ngoài ra, chúng ta yêu cầu khóa ký và địa chỉ cho cả người vay và người cho vay. Chúng ta sẽ thiết lập các biến môi trường cần thiết để tạo điều kiện thuận lợi cho các kết nối này. Hơn nữa, chúng ta sẽ lấy địa chỉ và khóa cho ví của người cho vay và người đi vay, mặc dù chúng ta sẽ không khám phá chi tiết về chúng trong hướng dẫn này.

Hợp đồng thiết kế:

Hợp đồng trái phiếu không lãi suất mà chúng ta sẽ làm việc tương tự như hợp đồng được giới thiệu trong ví dụ đầu tiên. Đó là một hợp đồng dựa trên địa chỉ liên quan đến việc cho vay một số tiền gốc và trả lại tiền gốc cùng với tiền lãi. Hợp đồng chỉ định số tiền gốc, tiền lãi và khoản tiền gửi ban đầu của ADA để đáp ứng yêu cầu giao thức UTXO tối thiểu. Chúng ta cũng sẽ tính toán các khoảng thời gian, bao gồm thời gian bắt đầu, thời hạn gửi tiền của người cho vay và thời hạn trả nợ của người vay.

Tạo hợp đồng:

Để tạo hợp đồng trái phiếu Zero-coupon, chúng ta sẽ sử dụng mẫu Marlowe CLI. Marlowe Playground là một công cụ khác có thể được sử dụng để thiết kế hợp đồng, nhưng đối với hướng dẫn này, chúng ta sẽ tập trung vào việc thực thi dựa trên CLI. Chúng ta sẽ cung cấp tổng quan nhanh về biểu diễn YAML của hợp đồng nhằm mục đích dễ đọc. Chúng ta luôn khuyến nghị tìm hiểu kỹ lưỡng và xác minh tính khả thi của hợp đồng trước khi thực hiện nó trên mạng chính. Marlowe cung cấp các công cụ phân tích để đánh giá mức độ an toàn của hợp đồng và mạng thử nghiệm Cardano để chạy hợp đồng trong môi trường tương tự như mạng chính.

Thực hiện Hợp đồng:

Thay vì sử dụng Marlowe Runtime, chúng ta sẽ sử dụng công cụ Marlowe CLI để thực hiện hợp đồng. Công cụ CLI cung cấp lệnh run với nhiều lệnh con khác nhau. Chúng ta sẽ chủ yếu tập trung vào các lệnh con khởi tạotự động thực thi để khởi tạo hợp đồng và thực hiện các bước tương ứng.

  1. Khởi tạo Hợp đồng:

Bước đầu tiên là khởi tạo hợp đồng bằng cách thu thập thông tin về tệp hợp đồng và tệp trạng thái ban đầu. Chúng ta sẽ sử dụng lệnh khởi tạo, lệnh này cũng cung cấp các tùy chọn để ủy thác ADA tại trình xác thực Marlowe và chỉ định các tập lệnh tham chiếu nếu cần. Chúng ta sẽ khởi tạo hợp đồng và đảm bảo nó sẵn sàng để thực hiện.

  1. Các bước thực hiện hợp đồng tự động:

Lệnh tự động thực thi tạo điều kiện thuận lợi cho việc tạo và thực hiện các giao dịch cần thiết cho các bước hợp đồng. Vì chúng ta có một trạng thái trước đó trong ví dụ này, nên chúng ta cần đưa nó vào trong quá trình thực thi. Chúng ta sẽ bắt đầu với giao dịch tạo, trong đó người cho vay tạo hợp đồng, ký giao dịch và đợi nó được xác nhận trên blockchain. Số liệu thống kê của giao dịch sẽ được in để hiển thị tốt hơn.

  1. Tiền gửi của bên cho vay:

Sau giao dịch tạo, người cho vay cần gửi ADA như một phần của hợp đồng. Lệnh prepare cho phép chúng ta thực hiện hành động đối với hợp đồng Marlowe, bao gồm gửi tiền, lựa chọn và thông báo. Chúng ta sẽ chỉ định các ràng buộc về thời gian để gửi giao dịch. Trong trường hợp này, người cho vay sẽ gửi số tiền gốc

Xem thêm chi tiết [tại đây](See more details here

Xem video

040709 - Marlowe Starter Kit: 4. Escrow using the Marlowe Runtime's REST API

PPP 040709 - Marlowe Starter Kit: 4. Ký quỹ bằng API REST của Marlowe Runtime

Hợp đồng ký quỹ là một phần không thể thiếu trong nhiều giao dịch tài chính, cung cấp một trung gian đáng tin cậy để giữ tiền cho đến khi các điều kiện nhất định được đáp ứng. Trong hướng dẫn này, chúng ta sẽ khám phá việc triển khai hợp đồng ký quỹ bằng cách sử dụng API REST của Marlowe Runtime. Hướng dẫn này là phần tiếp theo của sê-ri Marlowe Starter Kit, nơi trước đây chúng ta đã kiểm tra hợp đồng Trái phiếu phiếu giảm giá Xero và trình bày các cách khác nhau để thực hiện nó. Bây giờ, chúng ta sẽ đi sâu vào một hợp đồng phức tạp hơn một chút—hợp đồng ký quỹ.

Thiết lập môi trường:

Để bắt đầu, hãy thiết lập môi trường phát triển của chúng ta trong JupiterLab. Chúng ta sẽ sử dụng một cuốn sổ ghi chép để làm việc trong suốt quá trình thực hiện. Đầu tiên, chúng ta xóa các kết quả Đầu ra trong sổ ghi chép để bắt đầu làm mới. Hợp đồng ký quỹ mà chúng ta sẽ làm việc có sẵn trên Marlowe Playground. Bạn có thể tải ví dụ từ sân chơi và kiểm tra nó ở đó. Hợp đồng liên quan đến người mua, người bán và người hòa giải. Người mua gửi tiền để mua hàng và chúng có tùy chọn báo cáo sự cố. Người bán nhận được tiền nếu không có vấn đề gì được báo cáo. Trong trường hợp có tranh chấp, hòa giải viên bước vào để giải quyết nó. Hợp đồng chứa nhiều đường dẫn và chúng ta sẽ tập trung vào một đường dẫn cụ thể cho mục đích trình diễn.

Thiết kế hợp đồng:

Trước khi bắt tay vào triển khai, chúng ta cần đảm bảo rằng tất cả các bên liên quan đều có đủ kinh phí cần thiết. Trong ví dụ này, chúng ta có người bán, người mua và người hòa giải, mỗi người có địa chỉ và số tiền riêng. Chúng ta thiết lập các biến môi trường để dễ dàng truy cập các địa chỉ này và xác định các hằng số cần thiết khác.

Bước tiếp theo là thiết kế hợp đồng. Chúng ta có thể tạo hợp đồng trong Marlowe Playground hoặc tạo hợp đồng thông qua dòng lệnh. Trong hướng dẫn này, chúng ta sẽ tập trung vào việc tạo hợp đồng bằng giao diện dòng lệnh. Chúng ta chỉ định các thông số như giá bán, số tiền đặt cọc và các thời hạn khác nhau. Các tham số này xác định hành vi và logic của hợp đồng ký quỹ. Sau khi hợp đồng được tạo, chúng ta chuyển đổi nó từ định dạng JSON sang định dạng YAML để dễ đọc hơn.

Đảm bảo an toàn hợp đồng:

Trước khi tiếp tục, điều quan trọng là phải xác minh tính an toàn của hợp đồng, đặc biệt nếu bạn định triển khai nó trên mạng chính. Hợp đồng ký quỹ có thể có nhiều đường dẫn thực hiện, điều cần thiết là đảm bảo rằng logic được mã hóa phù hợp với ý định của bạn. Bạn có thể xác minh hành vi của hợp đồng bằng cách chạy nó thông qua trình giả lập trong Marlowe Playground hoặc mạng thử nghiệm Cardano. Bước này giúp xác định bất kỳ sự khác biệt nào giữa hành vi dự định và hành vi thực tế của hợp đồng.

Triển khai hợp đồng:

Với hợp đồng được thiết kế và xác minh, chúng ta chuyển sang triển khai nó bằng cách sử dụng API REST của Marlowe Runtime. Hòa giải viên, đóng vai trò là người tạo hợp đồng, bắt đầu quá trình triển khai. Chúng ta sử dụng yêu cầu HTTP POST để gửi thông tin cần thiết, bao gồm hợp đồng, chi tiết người tham gia và hướng dẫn tạo token vai trò. Phản hồi chứa ID hợp đồng, đóng vai trò là tham chiếu đến hợp đồng đã triển khai.

Ký kết và gửi giao dịch:

Khi hợp đồng được triển khai, nó sẽ giữ tiền ký quỹ. Để tương tác với hợp đồng, chúng ta cần ký và gửi giao dịch. Có nhiều cách để đạt được điều này, bao gồm sử dụng Cardano CLI, ví Cardano, ví phần cứng hoặc tiện ích mở rộng trình duyệt web. Trong hướng dẫn này, chúng ta sử dụng Marlowe CLI, cung cấp lệnh thuận tiện để ký và gửi giao dịch. Giao dịch đã ký chuyển số tiền cần thiết vào hợp đồng và cập nhật trạng thái của nó cho phù hợp.

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

Bây giờ tiền đã được gửi vào hợp đồng, người mua cần đưa ra lựa chọn—báo cáo vấn đề hay xác nhận rằng mọi thứ đều ổn. Chúng ta sử dụng API REST của Marlowe Runtime để tạo JSON.

Xem thêm chi tiết [tại đây](See more details here

Xem video

040710 - Marlowe Starter Kit: 5. Swap contract using the Marlowe Runtime's REST API

PPP 040710 - Marlowe Starter Kit: 5. Hợp đồng hoán đổi sử dụng API REST của Marlowe Runtime

Trong hướng dẫn này, chúng ta sẽ khám phá Marlowe Starter Kit và trình bày cách triển khai hợp đồng hoán đổi bằng cách sử dụng API REST của Marlowe Runtime. Ví dụ này, ví dụ thứ năm trong bộ công cụ, liên quan đến việc hoán đổi ADA lấy token gốc có tên là Djed. Chúng ta sẽ cung cấp hướng dẫn từng bước, bao gồm các đoạn mã và giải thích, để hướng dẫn bạn trong quá trình thiết kế, tạo và thực hiện hợp đồng hoán đổi.

Mục lục

  1. Tổng quan về Marlowe Starter Kit
  2. Giới thiệu về Hợp đồng hoán đổi
  3. Thiết lập môi trường phát triển
  4. Thiết kế Hợp đồng hoán đổi
  5. Tạo hợp đồng bằng Marlowe Playground
  6. Triển khai Hợp đồng
  7. Ký kết và gửi giao dịch
  8. Kiểm tra Hợp đồng và Dữ liệu Giao dịch
  9. Gửi tiền ADA
  10. Gửi tiền token
  11. Rút tiền từ Trình xác thực xuất chi theo vai trò
  12. Kết luận
  13. Tổng quan về Marlowe Starter Kit

Marlowe Starter Kit là một tài nguyên toàn diện dành cho các nhà phát triển muốn tìm hiểu và thử nghiệm với Marlowe, một ngôn ngữ dành riêng cho miền (DSL) được xây dựng trên Cardano để triển khai các hợp đồng thông minh tài chính. Nó cung cấp một loạt các ví dụ và hướng dẫn về các Kiểu hợp đồng khác nhau, bao gồm trái phiếu Zero-coupon, hợp đồng ký quỹ và hợp đồng hoán đổi.

  1. Giới thiệu về Hợp đồng hoán đổi

Ví dụ về hợp đồng hoán đổi trong Marlowe Starter Kit tập trung vào việc trao đổi ADA lấy một token gốc có tên là Djed. Hợp đồng bao gồm tỷ giá hối đoái giữa ADA và Djed, cho phép các bên hoán đổi một lượng ADA được xác định trước để lấy một giá trị tương đương trong Djed. Ví dụ này cho thấy các khả năng của Marlowe và cách nó có thể tạo điều kiện thuận lợi cho việc hoán đổi token trên blockchain Cardano.

  1. Thiết lập môi trường phát triển

Trước khi đi sâu vào triển khai, chúng ta cần thiết lập môi trường phát triển của mình. Chúng ta sẽ sử dụng máy chủ web của JupiterLab và Marlowe Runtime. Phần này sẽ hướng dẫn bạn qua quá trình cài đặt và chỉ cho bạn cách định cấu hình các biến môi trường cần thiết.

  1. Thiết kế Hợp đồng hoán đổi

Để thực hiện hợp đồng hoán đổi, trước tiên chúng ta cần thiết kế nó. Phần này sẽ cung cấp một cái nhìn tổng quan về cấu trúc của hợp đồng và giải thích các thành phần chính liên quan. Chúng ta sẽ kiểm tra hợp đồng ở định dạng Blockly và Marlowe, làm nổi bật tên và ID chính sách token gốc.

  1. Tạo hợp đồng bằng Marlowe Playground

Trong bước này, chúng ta sẽ sử dụng Marlowe Playground, một IDE dựa trên web để thiết kế và thử nghiệm các hợp đồng Marlowe, để tạo hợp đồng hoán đổi. Chúng ta sẽ hướng dẫn bạn quy trình thiết lập các tham số hợp đồng, chẳng hạn như số tiền ADA và Djed, đồng thời trình bày cách tạo mã hợp đồng ở định dạng YAML.

  1. Triển khai Hợp đồng

Với mã hợp đồng được tạo, chúng ta đã sẵn sàng triển khai nó bằng cách sử dụng API REST của Marlowe Runtime. Phần này sẽ giải thích cách tạo yêu cầu HTTP POST tới điểm cuối hợp đồng và cung cấp mã hợp đồng cũng như tên vai trò. Chúng ta cũng sẽ đề cập đến các bước cần thiết để ký và gửi giao dịch bằng nhiều phương thức khác nhau, bao gồm Cardano CLI, Cardano Wallet và CLI không dây.

  1. Ký kết và gửi giao dịch

Sau khi hợp đồng được triển khai, chúng ta cần ký và gửi các giao dịch để thực hiện logic của nó. Phần này sẽ hướng dẫn bạn quy trình ký giao dịch bằng khóa riêng của nhà cung cấp Ada và chờ xác nhận giao dịch. Chúng ta sẽ cung cấp các ví dụ về mã và giải thích tầm quan trọng của từng bước.

  1. Kiểm tra Hợp đồng và Dữ liệu Giao dịch

Để hiểu trạng thái của hợp đồng và theo dõi các giao dịch, chúng ta sẽ khám phá cách truy vấn thông tin hợp đồng bằng API REST của Marlowe Runtime. Chúng ta sẽ kiểm tra trạng thái ban đầu của hợp đồng, xem chi tiết giao dịch và giải thích dữ liệu được lưu trữ trong các giao dịch.

  1. Gửi tiền ADA

Trong bước này, chúng ta sẽ mô phỏng việc gửi ADA vào hợp đồng hoán đổi. Chúng ta sẽ trình bày cách xây dựng yêu cầu cho giao dịch gửi tiền, xây dựng giao dịch bằng cách sử dụng API REST của Marlowe Runtime và gửi yêu cầu đó để xử lý. Chúng ta cũng sẽ kiểm tra giao dịch kết quả và quan sát những thay đổi trong hợp đồng và số dư của các bên.

  1. Gửi tiền token

Sau khi gửi thành công ADA, chúng ta cần gửi token Djed vào hợp đồng. Phần này sẽ hướng dẫn bạn quy trình xây dựng yêu cầu gửi tiền, xây dựng giao dịch và gửi yêu cầu để xử lý. Chúng ta sẽ kiểm tra giao dịch kết quả và quan sát cách hợp đồng xử lý khoản tiền gửi token.

  1. Rút tiền từ Trình xác thực xuất chi theo vai trò

Khi hợp đồng đã được thực hiện và số tiền có sẵn để rút, chúng ta sẽ trình bày cách rút tiền từ Trình xác thực xuất chi theo vai trò. Chúng ta sẽ cung cấp các bước cần thiết và đoạn mã để tạo yêu cầu rút tiền, xây dựng giao dịch và gửi yêu cầu đó để xử lý. Chúng ta cũng sẽ kiểm tra giao dịch kết quả và xác minh số dư của các bên liên quan.

  1. Kết luận

Trong hướng dẫn này, chúng ta đã khám phá Marlowe Starter Kit và tìm hiểu cách triển khai hợp đồng hoán đổi bằng cách sử dụng API REST của Marlowe Runtime. Chúng ta đề cập đến các giai đoạn khác nhau trong vòng đời của hợp đồng, từ thiết kế đến triển khai và thực hiện. Bằng cách làm theo các hướng dẫn từng bước và ví dụ về mã được cung cấp, giờ đây bạn đã hiểu rõ về cách tận dụng Marlowe để thực hiện các hợp đồng thông minh tài chính trên blockchain Cardano.

Xem thêm chi tiết [tại đây](See more details here

Xem video

Tuần 8


040801 - Introduction

PPP 040801 - Giới thiệu

Giai điệu nước ngoài tạo tiền đề cho một cuộc thảo luận hấp dẫn về ủy thác trong Context của chương trình Tiên phong Plutus. Trong bài giảng khai sáng này, chúng ta đi sâu vào những điểm phức tạp của việc ủy thác và mối liên hệ của nó với các khả năng tạo tập lệnh của Plutus. Các bài giảng trước đây đã nhấn mạnh mục đích chính của các tập lệnh Plutus, tập trung vào chi tiêu và đúc tiền. Mặc dù những mục đích này ai cũng biết, nhưng chúng ta không được bỏ qua mục đích thứ ba thường bị bỏ qua: phần thưởng. Bài giảng này khám phá cách ngôn ngữ Script Plutus có thể được sử dụng để quản lý và điều chỉnh phần thưởng ủy thác, bổ sung một khía cạnh mới cho các khả năng do Plutus cung cấp.

Sự phát triển của Staking trong Plutus

Sự ra đời của việc ủy thác vào Plutus đã được thực hiện nhờ hard fork rất được kỳ vọng của Alonso, tạo điều kiện thuận lợi cho việc triển khai Plutus cho mạng chính Cardano và các mạng thử nghiệm. Trước sự phát triển quan trọng này, các khả năng ủy thác chỉ giới hạn trong môi trường sân chơi và trình giả lập, hạn chế tính thực tế của việc thử nghiệm Hàm ủy thác. Việc không thể tiếp cận các tính năng ủy thác đã cản trở việc khám phá các ứng dụng tiềm năng của nó. Tuy nhiên, với việc triển khai thành công hard fork Alonso, staking đã trở thành một khía cạnh hữu hình của Plutus, mở ra một thế giới khả năng cho các nhà phát triển cũng như những người đam mê.

Những thách thức và giải pháp trong thử nghiệm ủy thác

Bất chấp khả năng tiếp cận mới của việc ủy thác, vẫn còn những thách thức liên quan đến việc kiểm tra và thử nghiệm Hàm ủy thác trên mạng thử nghiệm Cardano. Các hoạt động ủy thác trong hệ sinh thái Cardano được điều chỉnh theo các epoch, mỗi epoch kéo dài năm ngày. Do đó, mọi nỗ lực kiểm tra mã hoặc cấu hình liên quan đến ủy thác đều cần phải chờ vài ngày trước khi quan sát kết quả. Những hạn chế tốn thời gian như vậy cản trở việc khám phá nhanh chóng các khái niệm ủy thác và không phù hợp cho mục đích bài giảng.

May mắn thay, một giải pháp thay thế tồn tại dưới dạng một testnet riêng tư. Bằng cách thiết lập mạng thử nghiệm riêng, nhà phát triển có toàn quyền kiểm soát các tham số mạng, cho phép điều chỉnh độ dài slot và thời lượng epoch để đẩy nhanh quá trình thử nghiệm. Điều này trao quyền cho các cá nhân thử nghiệm ủy thác trong một môi trường được kiểm soát trong một khung thời gian hợp lý. Trong các phần sau, chúng ta sẽ hướng dẫn bạn quy trình truy cập và sử dụng mạng thử nghiệm riêng được điều chỉnh cho mục đích của bài giảng này.

Truy cập Testnet riêng tư

Để tham gia khám phá toàn diện các khái niệm ủy thác, điều cần thiết là có quyền truy cập vào mạng thử nghiệm riêng được thiết kế riêng cho bài giảng này. Trong phần này, chúng ta sẽ cung cấp hướng dẫn từng bước về cách kết nối với mạng thử nghiệm riêng tư và mint hết tiềm năng của nó. Bằng cách làm theo các hướng dẫn này, bạn sẽ có thể tham gia tích cực vào quá trình thử nghiệm và triển khai các Script ủy thác, do đó nâng cao hiểu biết của bạn về ngôn ngữ Script Plutus.

Hiểu phần thưởng ủy thác và ý nghĩa của chúng

Trước khi đi sâu vào các khía cạnh thực tế của việc ủy thác trên mạng thử nghiệm riêng tư, điều quan trọng là phải nắm được khái niệm về phần thưởng ủy thác và tầm quan trọng của chúng trong hệ sinh thái Cardano. Phần thưởng ủy thác đóng vai trò như một cơ chế khuyến khích, khuyến khích các bên liên quan tham gia vào quy trình đồng thuận của mạng và đóng góp vào tính bảo mật và tính toàn vẹn của mạng. Thông qua phân tích chuyên sâu về phần thưởng ủy thác, chúng ta khám phá các chiến lược khác nhau để hạn chế hoặc tác động đến việc rút phần thưởng, tận dụng sức mạnh của khả năng viết Script Plutus.

Thực hiện chính sách phần thưởng ủy thác với tập lệnh Plutus

Ngôn ngữ Script Plutus cho phép các nhà phát triển xác định các chính sách tùy chỉnh chi phối phần thưởng ủy thác. Trong phần này, chúng ta bắt đầu hành trình tìm hiểu cú pháp, cấu trúc và Hàm của các tập lệnh Plutus khi được áp dụng cho các chính sách phần thưởng ủy thác. Thông qua các giải thích chi tiết và các ví dụ thực tế, chúng ta trình bày cách xây dựng các tập lệnh thực thi các tiêu chí cụ thể để rút tiền thưởng. Bằng cách thành thạo trong việc thực hiện các chính sách phần thưởng ủy thác, bạn sẽ được trang bị một bộ kỹ năng có giá trị để tạo các giao thức ủy thác an toàn và linh hoạt.

khám phá

Script ủy thác nâng cao

Dựa trên kiến ​​thức cơ bản đã thu được cho đến nay, chúng ta đi sâu vào các Script ủy thác nâng cao giúp vượt qua ranh giới của những gì có thể với ngôn ngữ Script Plutus. Từ cấu trúc phần thưởng đa cấp đến các điều kiện động dựa trên các biến mạng, chúng ta kiểm tra các Script phức tạp đáp ứng các yêu cầu đa dạng của các bên liên quan. Các Script ủy thác nâng cao này thể hiện tính linh hoạt và tính biểu cảm của Plutus, thể hiện tiềm năng của nó trong việc cách mạng hóa Context ủy thác trong hệ sinh thái Cardano.

Kiểm tra và xác thực tập lệnh ủy thác

Như với bất kỳ nỗ lực lập trình nào, việc kiểm tra kỹ lưỡng và xác thực các tập lệnh ủy thác là điều tối quan trọng để đảm bảo độ tin cậy và bảo mật của chúng. Trong phần này, chúng ta khám phá các phương pháp hay nhất để thử nghiệm tập lệnh ủy thác, bao gồm thử nghiệm đơn vị, thử nghiệm tích hợp và môi trường mô phỏng. Chúng ta thảo luận về các kỹ thuật để mô phỏng các Script khác nhau và đánh giá hành vi của các tập lệnh ủy thác trong các điều kiện khác nhau. Bằng cách áp dụng các phương pháp thử nghiệm nghiêm ngặt, các nhà phát triển có thể tạo niềm tin vào Hàm và tính chính xác của các tập lệnh ủy thác của họ.

Các ứng dụng trong thế giới thực và viễn cảnh tương lai

Staking đã nổi lên như một nền tảng của hệ sinh thái tài chính phi tập trung (DeFi), với ý nghĩa mở rộng vượt xa sự tham gia đơn giản vào các cơ chế đồng thuận. Trong phần cuối cùng này, chúng ta khám phá các ứng dụng ủy thác trong thế giới thực trong Context rộng lớn hơn của hệ sinh thái Cardano. Chúng ta thảo luận về việc tích hợp phần thưởng ủy thác với các ứng dụng phi tập trung (dApp), tiềm năng canh tác năng suất và tác động của việc ủy thác đối với quản trị mạng. Hơn nữa, chúng ta cung cấp thông tin chi tiết về tương lai của việc ủy thác trong hệ sinh thái Cardano và suy đoán về những cải tiến và phát triển tiềm năng có thể định hình quỹ đạo của nó.

Phần kết luận

Hướng dẫn toàn diện này đã điều hướng qua những điểm phức tạp của việc ủy thác vào Plutus, cung cấp nền tảng vững chắc để hiểu các khái niệm, triển khai và ý nghĩa của nó. Từ những hạn chế của các lần lặp lại trước đó cho đến khả năng truy cập mới được cung cấp bởi hard fork Alonso, chúng ta đã chứng kiến ​​sự phát triển của việc ủy thác trong hệ sinh thái Cardano. Bằng cách mint sức mạnh của ngôn ngữ Script Plutus và tương tác với mạng thử nghiệm riêng, các nhà phát triển có thể mở khóa toàn bộ tiềm năng của việc ủy thác và khám phá vô số khả năng của nó. Với mỗi thử nghiệm và triển khai, Context ủy thác và các ứng dụng của nó tiếp tục mở rộng, mở đường cho một tương lai nơi Script Plutus và ủy thác đan xen liền mạch.

Xem video

040802 - The Private Testnet

PPP 040802 - Mạng thử nghiệm riêng tư

Trong Bài giảng này, chúng ta sẽ đi sâu vào khái niệm về Private Testnet, đặc biệt tập trung vào dự án PPP 040802. Mạng thử nghiệm riêng cung cấp một môi trường thuận tiện cho các nhà phát triển thử nghiệm các ứng dụng của chúng và thử nghiệm các Hàm khác nhau của blockchain Cardano. Chúng ta sẽ khám phá quy trình thiết lập, những lợi thế mà nó mang lại và cách nó có thể được sử dụng để kết hợp các tập lệnh Plutus với việc ủy thác. Thông qua Bài giảng này, người đọc sẽ có được sự hiểu biết toàn diện về Private Testnet và các ứng dụng thực tế của nó.

Thiết lập Testnet riêng

Để truy cập Testnet riêng tư, nó được bao gồm trong vùng chứa và không gian làm việc của dự án. Kho lưu trữ dự án, có tên Wolf Woods Cardano-private-testnet-setup, có sẵn dưới dạng cây con Git. Điều cần thiết là sử dụng nhánh beverage thay vì nhánh chính để kích hoạt khả năng tương thích với Babbage phiên bản 2. Theo mặc định, cấu hình thiết lập tạo ra ba node, tạo ba người dùng, thiết lập ba staking pool và cung cấp tiền ban đầu cho người dùng . Để đảm bảo Mạng thử nghiệm riêng hoạt động trơn tru, cần có một node Cardano. Bài giảng hướng dẫn độc giả khởi động lại bộ chứa để truy cập phiên bản mới nhất của kho lưu trữ và cung cấp node Cardano.

Chạy Testnet riêng tư

Chạy Private Testnet là một quá trình đơn giản. Bằng cách điều hướng đến thư mục được chỉ định và thực thi tập lệnh được cung cấp, người dùng có thể thiết lập Mạng thử nghiệm riêng trong giây lát. Sự phát triển nhanh chóng của Private Testnet được đánh dấu là một lợi thế đáng kể, giúp giảm đáng kể thời gian cần thiết cho quá trình chuyển đổi epoch so với mạng chính. Tuy nhiên, do tốc độ tăng nhanh, điều quan trọng cần lưu ý là cần phải gia hạn khóa Kes. Bài giảng cảnh báo người đọc về các sự cố tiềm ẩn có thể phát sinh từ các khóa lỗi thời và cung cấp hướng dẫn về cách giảm thiểu sự cố bằng cách gia hạn khóa hoặc khởi động lại mạng thử nghiệm.

Tương tác với Testnet riêng tư

Khi Mạng thử nghiệm riêng được thiết lập và chạy, người đọc sẽ được giới thiệu các tương tác khác nhau có thể được thực hiện bằng Cardano CLI. Bài giảng hướng dẫn người dùng cách thực thi các tập lệnh truy vấn trạng thái của mạng thử nghiệm, kiểm tra tiền của những người dùng cụ thể và liệt kê staking pool. Bằng cách làm theo các hướng dẫn được cung cấp, người đọc có thể thu thập thông tin quan trọng về mạng thử nghiệm, chẳng hạn như trạng thái đồng bộ hóa, địa chỉ người dùng và chi tiết ủy thác. Bài giảng tập trung vào một người dùng, cung cấp các ví dụ và giải thích liên quan đến người dùng cụ thể này.

Rút tiền thưởng

Một khía cạnh quan trọng của Private Testnet là tích lũy và rút phần thưởng ủy thác. Bài giảng phác thảo Script cần thiết để rút phần thưởng cho một người dùng cụ thể. Tập lệnh lấy một đối số dòng lệnh, cho biết UTXO sẽ được sử dụng. Ngoài ra, do đặc thù của quy trình rút phần thưởng ủy thác của Cardano, cần phải rút tất cả phần thưởng cùng một lúc. Để giải quyết vấn đề số tiền thưởng thay đổi nhanh chóng, Bài giảng trình bày cách tập lệnh tự động hóa quy trình tra cứu, đảm bảo số tiền thưởng chính xác được đưa vào giao dịch. Giải thích chi tiết về các bước liên quan đến việc xây dựng, ký kết và gửi giao dịch được cung cấp. Độc giả có thể làm theo hướng dẫn để rút thành công phần thưởng ủy thác và quan sát sự gia tăng tiền của người dùng.

Kết hợp Plutus Script với Staking

Trong phần cuối cùng của Bài giảng, trọng tâm chuyển sang kết hợp các tập lệnh Plutus với Hàm ủy thác. Thay vì sử dụng địa chỉ staking dựa trên cặp khóa công khai-riêng tư, Bài giảng giới thiệu khái niệm về địa chỉ staking dựa trên Plutus. Các tập lệnh Plutus cung cấp tính linh hoạt để kết hợp logic tùy chỉnh quản lý các hoạt động khác nhau, bao gồm cả việc rút tiền thưởng. Bài giảng giải thích cách tập lệnh Plutus thay thế khóa ký trong giao dịch, cho phép rút tiền có điều kiện dựa trên logic của tập lệnh. Phần này cung cấp cho người đọc thông tin chi tiết về các khả năng mạnh mẽ do các tập lệnh Plutus cung cấp và sự tích hợp của chúng với các hoạt động ủy thác.

Phần kết luận

Testnet riêng, cụ thể là PPP 040802

dự án, cung cấp cho các nhà phát triển một nền tảng có giá trị để thử nghiệm, kiểm tra và có được trải nghiệm thực tế với các Hàm của Cardano. Xuyên suốt Bài giảng này, người đọc đã được hướng dẫn về quy trình thiết lập, tương tác với mạng thử nghiệm và cách sử dụng các tập lệnh Plutus trong các hoạt động ủy thác. Bằng cách hiểu về Private Testnet và các khả năng của nó, các nhà phát triển có thể nâng cao kiến ​​thức của chúng về Cardano và khám phá các ứng dụng sáng tạo trong hệ sinh thái blockchain.

Xem video

040803 - Plutus & Staking

PPP 040803 - Plutus & Staking

PPP 040803 tập trung vào sự tương tác giữa Plutus và ủy thác, khám phá các mục đích của tập lệnh và ý nghĩa của chúng. Bài giảng này đi sâu vào chi tiết về các tập lệnh Plutus, vai trò của chúng trong việc chi tiêu, đúc, khen thưởng và xác nhận giao dịch. Nó cũng xem xét cách các tập lệnh Plutus ảnh hưởng đến việc rút phần thưởng và giới thiệu một tập lệnh ủy thác Plutus mẫu.

Plutus và Staking: Khám phá các mục đích của tập lệnh

Trong bài giảng, mối quan hệ giữa Plutus và ủy thác được thảo luận, đặc biệt nhấn mạnh Script Contexts và tác động của nó đối với các tập lệnh Plutus. Ngữ cảnh tập lệnh chứa một trường được gọi là Kiểumục đích của tập lệnh, xác định mục đích cụ thể của tập lệnh. Bài giảng chủ yếu tập trung vào hai mục đích: chi tiêu (TX Outreach) và đúc tiền.

Chi tiêu UTXO và thực thi tập lệnh Plutus

Khi sử dụng một Đầu ra giao dịch chưa sử dụng (UTXO) tại một địa chỉ tập lệnh, tập lệnh Plutus tương ứng sẽ được thực thi. Tập lệnh nhận Datum của UTXO hoặc Redeemer, cùng với Script Contexts. Điều này cho phép tập lệnh Plutus triển khai logic tùy chỉnh để xác thực việc chi tiêu của UTXO. Hiệu lực của giao dịch phụ thuộc vào kết quả thực hiện của tập lệnh.

Đúc và đốt token gốc

Mục đích của tập lệnh đúc được sử dụng để đúc và Burn token gốc. Bất cứ khi nào một giao dịch liên quan đến việc tạo hoặc hủy token, tập lệnh đúc tiền tương ứng sẽ được thực thi. Tương tự như chi tiêu, tập lệnh nhận được Redeemer và Script Contexts, cho phép logic tùy biến xác định tính hợp lệ của quy trình đúc hoặc ghi.

Khen thưởng và Chứng nhận: Plutus và Staking

Bài giảng giới thiệu hai khía cạnh quan trọng liên quan đến Plutus và ủy thác: khen thưởng và chứng nhận. Những khái niệm này được kết nối chặt chẽ và đóng một vai trò quan trọng trong quá trình ủy thác.

Sử dụng Tập lệnh Plutus để đặt địa chỉ

Thay vì sử dụng cặp khóa công khai-riêng tư truyền thống để tạo địa chỉ staking, có thể sử dụng các tập lệnh Plutus. Bằng cách sử dụng tập lệnh Plutus và hash tập lệnh đó, có thể tạo địa chỉ staking tập lệnh. Trái ngược với các địa chỉ staking thông thường, các địa chỉ staking tập lệnh thực thi tập lệnh tương ứng khi các hành động cụ thể được thực hiện.

Phần thưởng bằng địa chỉ Script Stake

Khi rút phần thưởng từ địa chỉ staking tập lệnh, tập lệnh Plutus tương ứng sẽ được thực thi. Tập lệnh nhận Redeemer và Script Contexts làm đối số, cho phép triển khai logic tùy chỉnh để xác định tính hợp lệ của việc rút tiền thưởng. Nếu quá trình thực thi tập lệnh gặp lỗi, giao dịch sẽ không hợp lệ.

Xác nhận giao dịch với địa chỉ Script Stake

Chứng nhận liên quan đến việc đính kèm các chứng chỉ khác nhau vào một giao dịch. Trong Context ủy thác, các chứng chỉ quan trọng bao gồm đăng ký, ủy quyền và hủy đăng ký. Các chứng chỉ này rất cần thiết để tạo, sửa đổi và hủy đăng ký địa chỉ staking. Khi thực hiện ủy quyền, tập lệnh Plutus tương ứng được thực thi để xác thực tính hợp pháp của ủy quyền.

Hiểu Mục Đích Khen Thưởng

Phần này của bài giảng tập trung vào mục đích phần thưởng của các tập lệnh Plutus. Bài giảng đi sâu vào chi tiết của Kiểu TXinfo, cụ thể là các trường liên quan đến rút tiền thưởng. Bài giảng khám phá cấu trúc của trường rút tiền TXInfo, là Map từ thông tin xác thực ủy thác đến số nguyên.

Thực thi các tập lệnh Plutus để rút tiền thưởng

Để hiểu cách các tập lệnh Plutus ảnh hưởng đến việc rút tiền thưởng, một tập lệnh ủy thác Plutus mẫu được cung cấp. Tập lệnh được thiết kế để hoạt động như một trình xác thực staking kiểm soát việc rút phần thưởng. Nó giới thiệu một địa chỉ được tham số hóa và thực thi quy tắc rằng ít nhất một nửa số phần thưởng được rút phải đến địa chỉ được chỉ định.

Phân tích Tập lệnh ủy thác Plutus mẫu

Tập lệnh ủy thác Plutus mẫu được trình bày trong phiên bản được định Kiểu, hiển thị tham số hóa, Redeemer và Script Contexts. Script kiểm tra mục đích

.

Xem video

040804 - Trying it on the Testnet

PPP 040804 - Dùng thử trên Testnet

Trong thế giới blockchain và crypto, Cardano đã nổi lên như một nền tảng nổi bật với các tính năng và khả năng độc đáo. Một trong những khía cạnh hấp dẫn của Cardano là hỗ trợ trình xác thực staking, cho phép người dùng ủy thác staking của chúng cho các nhóm và tham gia vào cơ chế đồng thuận. Trong Bài giảng này, chúng ta đi sâu vào quá trình thử nghiệm trình xác thực staking trên mạng thử nghiệm riêng tư, khám phá việc tạo địa chỉ staking dựa trên tập lệnh và thực hiện các hoạt động liên quan đến staking. Thông qua hướng dẫn từng bước, chúng ta hiểu rõ hơn về Hàm và lợi ích của trình xác thực staking trên hệ sinh thái của Cardano.

Kiểm tra Trình xác thực staking trên Testnet riêng tư:

Để bắt đầu khám phá, trước tiên chúng ta cần chọn một địa chỉ để sử dụng làm tham số để kiểm tra trình xác thực staking của chúng ta trên mạng thử nghiệm riêng tư. Mặc dù việc lựa chọn địa chỉ là tùy biến, nhưng mạng thử nghiệm riêng tư cung cấp ba người dùng được xác định trước và đối với bài tập này, chúng ta chọn người dùng thứ hai. Chúng ta trích xuất địa chỉ thanh toán được liên kết với người dùng này và tiến hành tuần tự hóa trình xác thực staking bằng Hàm trình bao bọc mà chúng ta đã xác định. Sau đó, trình xác thực được đăng tải nhiều kỳ này sẽ được lưu trong thư mục nội dung của chúng ta, chuẩn bị cho chúng ta cho giai đoạn thử nghiệm tiếp theo.

Xây Dựng Địa Chỉ Giáo Khu và Đăng Ký:

Hiện đã được trang bị trình xác thực staking được đăng ký theo số sê-ri, chúng ta chuyển sang một loạt các bước quan trọng. Đầu tiên, chúng ta cần xây dựng một địa chỉ staking bằng cách sử dụng tập lệnh mà chúng ta đã tạo trước đó. Điều này đánh dấu một cột mốc quan trọng vì nó cho thấy việc tạo địa chỉ staking không dựa trên cặp khóa mà dựa trên tập lệnh. Với địa chỉ staking được xây dựng, nhiệm vụ tiếp theo liên quan đến việc đăng ký địa chỉ này trên mạng thử nghiệm. Ngoài ra, chúng ta cần ủy quyền staking của mình cho một nhóm, do đó tham gia vào quá trình đồng thuận. Để tạo điều kiện thuận lợi cho việc này, chúng ta sử dụng tập lệnh để đăng ký và ủy quyền, tạo và gửi giao dịch cần thiết.

Tạo địa chỉ thanh toán và tạo chứng chỉ:

Sau khi hoàn tất quá trình đăng ký và ủy quyền, giờ đây chúng ta chuyển trọng tâm sang tạo địa chỉ thanh toán từ địa chỉ staking đã tạo trước đó. Trong trường hợp này, chúng ta sửa đổi phần thanh toán để phù hợp với người dùng đầu tiên trong khi vẫn giữ thành phần staking làm địa chỉ staking mới dựa trên tập lệnh. Bên cạnh đó, chúng ta tạo chứng chỉ đăng ký và chứng chỉ ủy quyền. Để tiếp tục, chúng ta trích xuất ID nhóm từ tập lệnh đã sử dụng trước đó liệt kê tất cả các staking pool. Việc truy xuất các tham số giao thức hỗ trợ thêm cho chúng ta trong việc xây dựng giao dịch.

Xây dựng giao dịch và ký kết:

Với các thành phần cần thiết tại chỗ, chúng ta tiến tới lắp ráp giao dịch. Giao dịch bao gồm epoch testnet, địa chỉ mới được tạo và thông tin Đầu vào từ các bước trước đó. Để đảm bảo tài trợ cho địa chỉ mới, chúng ta sử dụng tiền từ địa chỉ cũ của người dùng đầu tiên, chuyển tất cả ngoại trừ chi phí giao dịch. Ngoài ra, chúng ta tính đến tài sản thế chấp vì các tập lệnh Plutus có liên quan và việc đăng ký ủy quyền yêu cầu thực thi chúng. Chúng ta đính kèm giấy chứng nhận đăng ký và ủy quyền, đảm bảo rằng Script đóng vai trò là nhân chứng. Trái ngược với các giao dịch trước đó liên quan đến các địa chỉ dựa trên khóa, logic của tập lệnh chi phối thành phần ủy thác. Cuối cùng, chúng ta ký giao dịch bằng khóa thanh toán của người dùng đầu tiên, hoàn tất quy trình lắp ráp.

Xác minh kết quả:

Ở giai đoạn này, chúng ta tiến hành xác minh kết quả thử nghiệm của chúng ta. Chúng ta bắt đầu bằng cách kiểm tra địa chỉ ban đầu, địa chỉ này hiện không chứa tiền vì chúng đã được chuyển đến địa chỉ thanh toán mới được tạo. Bằng cách chạy tập lệnh kiểm tra địa chỉ mới, chúng ta xác nhận rằng phần lớn số tiền ban đầu, ngoại trừ tiền gửi đăng ký và phí giao dịch, hiện nằm trong địa chỉ mới. Quá trình xác thực này cho thấy quá trình chuyển tiền thành công sang địa chỉ thanh toán mới được tạo, trong đó khả năng chi tiêu vẫn thuộc về người dùng đầu tiên trong khi thành phần staking được thay thế bằng tập lệnh của chúng ta.

Rút tiền thưởng:

Để khám phá Hàm rút phần thưởng từ địa chỉ staking mới, chúng ta giới thiệu tập lệnh cuối cùng để khởi tạo

quá trình. Một người dùng, người đã tạo địa chỉ staking, cố gắng rút phần thưởng từ địa chỉ đó. Bằng cách tính toán phần thưởng tích lũy và xác định một nửa số tiền phải trả cho người dùng thứ hai, chúng ta đảm bảo rằng tập lệnh tuân thủ logic đã chỉ định. Một lần nữa, chúng ta thiết lập các tham số cần thiết, xây dựng giao dịch và thêm khoản thanh toán cho người dùng thứ hai theo số tiền đã tính toán. Việc rút tiền xảy ra và chúng ta quan sát việc phân phối phần thưởng giữa hai người dùng, làm nổi bật việc thực hiện thành công trình xác thực staking và các hoạt động liên quan của nó.

Gỡ lỗi tập lệnh và xử lý lỗi:

Trong thử nghiệm của mình, chúng ta gặp phải tình huống trong đó chúng ta loại trừ nhầm khoản thanh toán cho người dùng thứ hai. Do đó, chúng ta gặp lỗi trong quá trình thực thi tập lệnh. Lỗi này, được đánh dấu bằng thông báo chấm dứt máy, nhấn mạnh tầm quan trọng của việc chia sẻ phần thưởng chính xác theo logic của tập lệnh. Bằng cách khắc phục lỗi của chúng ta và bao gồm khoản thanh toán cho người dùng thứ hai, chúng ta đã thực hiện thành công giao dịch, do đó tránh được lỗi và đảm bảo phân phối phần thưởng chính xác.

Phần kết luận:

Thông qua hành trình thử nghiệm Trình xác thực staking này trên mạng thử nghiệm riêng tư Cardano, chúng ta đã hiểu toàn diện về cách triển khai và Hàm của chúng. Bằng cách sử dụng địa chỉ staking dựa trên tập lệnh, chúng ta khám phá các sắc thái của quy trình đăng ký, ủy quyền và rút tiền thưởng. Việc chuyển từ địa chỉ dựa trên khóa sang địa chỉ dựa trên tập lệnh thể hiện sức mạnh và tính linh hoạt do trình xác thực staking cung cấp. Với hệ sinh thái mạnh mẽ và sự phát triển không ngừng của Cardano, trình xác thực staking đóng vai trò quan trọng trong cơ chế đồng thuận phi tập trung của nền tảng, trao quyền cho người dùng tham gia và đóng góp cho mạng đồng thời đảm bảo tính toàn vẹn và bảo mật của giao dịch.

Xem video

040805 Homework

PPP 040805 Bài tập về nhà

Trong Bài giảng này, chúng ta sẽ đi sâu vào chủ đề xác thực staking và khám phá quá trình cải thiện trình xác thực staking để làm cho nó thực tế và an toàn hơn. Chúng ta sẽ kiểm tra các hạn chế của trình xác thực staking hiện tại, xác định nhu cầu đối với các hạn chế bổ sung và đề xuất các cải tiến để giải quyết những lo ngại này. Cụ thể, chúng ta sẽ giới thiệu một đối số thứ hai được gọi là pubkey hash, sẽ đóng một vai trò quan trọng trong việc ủy ​​quyền các giao dịch liên quan đến staking. Bằng cách yêu cầu pubkey hash ký tất cả các hoạt động liên quan đến staking, chẳng hạn như đăng ký, ủy quyền và rút tiền, chúng ta có thể nâng cao tính bảo mật và Hàm của trình xác thực staking.

Các hạn chế hiện tại của Trình xác thực staking:

Trình xác thực staking ban đầu đã thảo luận trước đó thiếu tính hiện thực và tính bảo mật do có một lỗ hổng đáng kể trong thiết kế của nó. Mặc dù nó phân phối thành công phần thưởng, nhưng bất kỳ ai cũng có thể rút phần thưởng mà không có bất kỳ hạn chế nào, ngoại trừ điều kiện là một nửa số phần thưởng được chuyển đến một địa chỉ cụ thể. Quyền truy cập không hạn chế này làm suy yếu tính hữu dụng và tính bảo mật của trình xác thực staking. Để giải quyết vấn đề này, chúng ta cần đưa ra các yêu cầu và kiểm tra bổ sung hạn chế quyền truy cập chỉ dành cho những cá nhân được ủy quyền.

Giới thiệu Trình xác thực staking nâng cao:

Để cải thiện tính hiện thực và bảo mật của trình xác thực staking, chúng ta đề xuất mở rộng nó bằng cách giới thiệu một đối số thứ hai, pubkey hash. Pubkey hash này sẽ đóng vai trò là yếu tố quan trọng trong tất cả các giao dịch liên quan đến staking. Cụ thể, nó phải ký mọi hoạt động liên quan đến staking, bao gồm đăng ký, ủy quyền và rút tiền. Yêu cầu này đảm bảo rằng chỉ những cá nhân được ủy quyền với pubkey hash chính xác mới có thể thực hiện những hành động này. Ngoài ra, địa chỉ ban đầu được chỉ định để rút tiền sẽ tiếp tục nhận được một nửa phần thưởng, duy trì tính nhất quán với việc triển khai trước đó.

Triển khai thực tế:

Bằng cách kết hợp pubkey hash vào trình xác thực staking, chúng ta đạt được một hệ thống thực tế và an toàn hơn. Chẳng hạn, hãy xem xét một ví dụ trong đó pubkey hash thuộc về khóa thanh toán của người dùng. Trong trường hợp này, chỉ người dùng một mới có quyền cần thiết để bắt đầu rút tiền, thay đổi cài đặt ủy quyền hoặc thiết lập ủy quyền mới. Việc triển khai này đảm bảo rằng các hành động liên quan đến staking được thực hiện độc quyền bởi các cá nhân được ủy quyền, nâng cao tính toàn vẹn tổng thể của hệ thống.

Kiểm tra thủ công trên Mạng kiểm tra riêng:

Không giống như phiên bản trước, trình xác thực staking nâng cao này không đi kèm với bộ thử nghiệm dựng sẵn. Do đó, để đảm bảo tính hiệu quả và độ tin cậy của nó, việc kiểm tra thủ công trên testnet riêng trở nên cần thiết. Bằng cách đánh giá tỉ mỉ hành vi của trình xác thực staking trong các tình huống khác nhau, chúng ta có thể xác định bất kỳ vấn đề hoặc lỗ hổng tiềm ẩn nào và thực hiện các điều chỉnh cần thiết để tối ưu hóa hiệu suất của nó.

Phần kết luận:

Trình xác thực staking ban đầu, trong khi hoạt động, có những hạn chế làm ảnh hưởng đến tính hiện thực và tính bảo mật của nó. Thông qua việc giới thiệu đối số thứ hai, pubkey hash, chúng ta đã nâng cao thành công thiết kế của Trình xác thực staking. Bằng cách yêu cầu pubkey hash ký tất cả các hoạt động liên quan đến staking, chúng ta hạn chế quyền truy cập chỉ cho những cá nhân được ủy quyền, cải thiện đáng kể khả năng sử dụng và bảo mật tổng thể của hệ thống. Hơn nữa, chúng ta đã nhấn mạnh tầm quan trọng của việc kiểm tra thủ công trên testnet riêng tư để đảm bảo Hàm phù hợp của trình xác thực staking. Với những cải tiến và thử nghiệm nghiêm ngặt này, chúng ta có thể tự tin triển khai trình xác thực staking thực tế và an toàn hơn, đáp ứng các yêu cầu của một hệ thống blockchain mạnh mẽ và hiệu quả.

Xem video

040806 Q&A Live Session - Lesson 8

Phiên hỏi đáp trực tiếp PPP 040806 - Bài 8

Bài giảng sau đây cung cấp bản ghi của Phiên hỏi đáp trực tiếp cho Bài 8, tập trung vào ủy thác và Plutus trong Cardano. Phiên này bao gồm những người tham gia đặt câu hỏi liên quan đến bài giảng trước đó và tìm kiếm sự làm rõ về các khía cạnh khác nhau của việc ủy thác, giao dịch và hợp đồng thông minh trong blockchain Cardano. Phần này nhằm mục đích giải quyết các thắc mắc của người tham gia và cung cấp thêm thông tin chi tiết về các khái niệm được đề cập trong bài học.


Phiên hỏi đáp trực tiếp - Bài 8

Phiên hỏi đáp bắt đầu với việc diễn giả thừa nhận sự tham gia ngày càng tăng và mời những người tham gia đặt thêm câu hỏi. Họ khuyến khích người tham dự gửi câu hỏi của chúng trong bảng Hỏi & Đáp hoặc hỏi trực tiếp. Người điều hành phiên đề cập đến việc không có bất kỳ câu hỏi Stack Exchange nào cần giải quyết và mở ra cơ hội cho những người tham gia đặt câu hỏi của họ.

Người tham gia 1: Về bài giảng cuối cùng về ủy thác và Plutus, khi chúng ta chuyển tiền và chỉ định thay đổi để chuyển từ người dùng sang tập lệnh, có cách nào để lấy lại số tiền này không? Theo hiểu biết của tôi, trình xác thực chỉ trả về true khi các điều kiện được đáp ứng và bất kỳ điều gì khác trả về false. Chúng ta có thể tạo một giao dịch để mở khóa và lấy lại tiền không?

Diễn giả: Điều quan trọng cần lưu ý là địa chỉ Cardano bao gồm phần thanh toán và phần ủy thác tùy chọn. Bài giảng chỉ tập trung vào phần ủy thác, trong khi các khía cạnh liên quan đến thanh toán không bị ảnh hưởng. Địa chỉ thay đổi được sử dụng trong ví dụ đã giữ lại phần thanh toán và chỉ phần ủy thác được sửa đổi. Chủ sở hữu ban đầu của số tiền vẫn có thể tự do chi tiêu bằng cách ký bằng chìa khóa của họ. Do đó, không cần phải lấy lại tiền vì chúng vẫn nằm dưới sự kiểm soát của cùng một người dùng.

Người tham gia 1: Điều đó làm rõ mọi thứ. . Vì vậy, tài khoản ủy thác đã được tách ra, nhưng việc ký thanh toán vẫn giữ nguyên?

Diễn giả: Chính xác. Cả phần thanh toán và phần ủy thác đều có thể được cung cấp bằng khóa hoặc tập lệnh. Trong ví dụ này, phần thanh toán được cung cấp bởi các khóa, trong khi phần ủy thác là tập lệnh Plutus. Các bài giảng trước đây chủ yếu tập trung vào các Script không có phần ủy thác, trong đó phần thanh toán được đưa ra bởi tập lệnh Plutus. Mỗi sự kết hợp quyền sở hữu khóa/tập lệnh đều có thể thực hiện được, mang lại sự linh hoạt trong việc thiết kế hợp đồng thông minh.

Người tham gia 2: Ai đó có thể gửi tiền đến địa chỉ thanh toán của tôi và sửa đổi phần ủy thác để nhận phần thưởng ủy thác không?

Diễn giả: Mặc dù về mặt kỹ thuật có thể sửa đổi phần ủy thác của một địa chỉ, nhưng nó không ảnh hưởng đến quyền sở hữu số tiền trong phần thanh toán. Trong ví dụ bạn đã cung cấp, ngay cả khi ai đó sửa đổi phần ủy thác, chúng sẽ không giành được quyền kiểm soát quyền sở hữu của quỹ. Phần thưởng ủy thác được gắn với phần ủy thác, nhưng chủ sở hữu ban đầu vẫn có thể tự do sử dụng phần thanh toán.

Người tham gia 2: Tôi hiểu rồi. . Vì vậy, nó đảm bảo rằng các quỹ vẫn nằm dưới sự kiểm soát của chủ sở hữu ban đầu. Cảm ơn bạn đã làm rõ.

Diễn giả: Không có chi. Nếu bạn có thêm bất kỳ câu hỏi nào, vui lòng hỏi.

Người tham gia 3: Bạn có thể giải thích quy trình tuyển dụng theo câu hỏi thứ hai không? Tôi là một fan hâm mộ của Haskell. Cardano có một nhóm Haskell riêng không và tôi có thể tham gia nhóm này không? Tôi nghe nói các nhóm khác nhau sử dụng các phiên bản Haskell khác nhau.

Diễn giả: Quy trình tuyển dụng cho các nhóm cụ thể trong Cardano có thể khác nhau và tốt nhất bạn nên hỏi trực tiếp các nhóm tương ứng để biết thông tin về việc tham gia. Mặc dù Cardano sử dụng Haskell, nhưng không có một nhóm Haskell riêng biệt nào. Các nhóm khác nhau trong Cardano có thể làm việc với các phiên bản Haskell khác nhau dựa trên yêu cầu của chúng và nhu cầu của dự án.

Người tham gia 3: Cảm ơn bạn đã trả lời. Tôi sẽ khám phá thêm dựa trên hướng dẫn của bạn.

Xem video

Tuần 9


040901 - Creating our own Stablecoin Dapp

PPP 040901 - Tạo Dapp Stablecoin của riêng chúng ta

Chào mừng đến với bài học thứ chín của Chương trình Tiên phong Plutus. Trong bài học này, chúng ta sẽ tập hợp mọi thứ đã học và bắt tay vào một dự án cuối cùng: xây dựng ứng dụng phi tập trung stablecoin (dApp) theo thuật toán của riêng chúng ta. Dự án này sẽ không chỉ bao gồm việc tạo ra các hợp đồng thông minh mà còn phát triển một giao diện web đầy đủ Hàm với tất cả các tính năng cần thiết. Chúng ta sẽ bắt đầu bằng cách tìm hiểu cách thức hoạt động của thuật toán đằng sau stablecoin của chúng ta và sau đó tiến hành triển khai các hợp đồng thông minh bằng cách sử dụng blockchain Cardano. Chúng ta sẽ đóng vai trò là người dùng, đúc và đốt stablecoin, để có được sự hiểu biết khái niệm về toàn bộ quá trình. Sau đó, chúng ta sẽ đi sâu vào mã, khám phá hai trình xác thực, Oracle, chính sách đúc tiền và các thành phần khác. Tôi rất vui mừng được hướng dẫn bạn trong suốt cuộc hành trình này và tôi hy vọng bạn cũng hào hứng như tôi. Bắt đầu nào!

Thuật toán Stablecoin và thế chấp

Các loại Stablecoin khác nhau sử dụng các cơ chế khác nhau để duy trì sự ổn định của chúng. Trong bài giảng này, chúng ta sẽ triển khai một stablecoin thuật toán được thế chấp quá mức sử dụng cơ chế thanh lý để đảm bảo sự ổn định. Mặc dù nghe có vẻ phức tạp, nhưng khái niệm này khá đơn giản. Như tên cho thấy, tài sản thế chấp phải được cung cấp để đúc stablecoin. Chúng ta sẽ sử dụng trình xác thực có tên là tài sản thế chấp để khóa và giải phóng tài sản thế chấp bằng Ada (crypto gốc của Cardano). Ngoài ra, chúng ta sẽ sử dụng chính sách đúc để quản lý việc đúc và đốt stablecoin. Vì chúng ta thực thi một thuật toán thông qua các hợp đồng thông minh để kiểm soát giá của stablecoin, nên nó được gọi là stablecoin thuật toán. Giá trị của tài sản thế chấp phải luôn vượt quá giá trị của stablecoin được đúc. Giá trị vượt quá bị khóa nhưng không thể đúc được dùng làm phần thưởng cho việc thanh lý vị thế của người khác. Thanh lý liên quan đến việc đốt một số lượng stablecoin tương đương do người dùng khác đúc để lấy lại tài sản thế chấp của họ. Việc thanh lý chỉ có thể xảy ra nếu giá trị của tài sản thế chấp bị khóa so với stablecoin được đúc giảm xuống dưới ngưỡng được xác định trước, chẳng hạn như 150 phần trăm. Cơ chế này đảm bảo rằng stablecoin vẫn được hỗ trợ và nếu giá của Ada tăng lên, nhiều stablecoin hơn có thể được tạo ra, trong khi giá của Ada giảm đòi hỏi phải có thêm tài sản thế chấp hoặc đốt stablecoin. Việc không thêm tài sản thế chấp hoặc đốt stablecoin có thể dẫn đến việc người dùng khác thanh lý vị thế và thu lợi nhuận từ giá trị vượt quá. Sự phụ thuộc vào tài sản thế chấp bị khóa này làm cho giá trị của stablecoin gắn liền với chính tài sản thế chấp. Bằng cách chỉ sử dụng hai trình xác thực này, stablecoin của chúng ta sẽ được gắn với giá trị của Ada. Để liên kết stablecoin của chúng ta với một loại tiền tệ fiat, chúng ta cần một Oracle cung cấp thông tin cập nhật theo thời gian thực về giá của Ada bằng Đô la Mỹ. Giá trị tài sản thế chấp và stablecoin sẽ bị ảnh hưởng bởi giá của Ada và do đó, stablecoin sẽ được gắn với Đô la Mỹ. Bây giờ hãy xem xét tất cả các thành phần này hoạt động cùng nhau như thế nào trong thực tế.

Triển khai dApp Stablecoin

Để triển khai một stablecoin, các nhà phát triển phải cung cấp trình xác thực Oracle bao gồm tỷ giá USD/Ada, trình xác thực tài sản thế chấp để khóa tài sản thế chấp trong Ada và chính sách đúc tiền để quản lý việc đúc và đốt stablecoin dựa trên tài sản thế chấp. Việc triển khai liên quan đến một loạt các giao dịch trên blockchain. Trước tiên, nhà phát triển tạo một NFT (token không thể thay thế) đại diện cho một UTXO mới (Đầu ra giao dịch chưa được sử dụng) trong địa chỉ của nhà phát triển stablecoin. NFT này sau đó được sử dụng để triển khai Oracle bằng cách bắt đầu một giao dịch bao gồm giá ADA hiện tại và NFT dưới dạng giá trị. Điều quan trọng là phải gắn NFT vào Oracle để đảm bảo sử dụng đúng Oracle, vì bất kỳ ai cũng có thể gửi UTXO đến một địa chỉ. NFT đóng vai trò là mã định danh duy nhất cho

Oracle. Hai giao dịch này là yêu cầu tối thiểu để triển khai Oracle cho blockchain. Tuy nhiên, chúng ta vẫn cần trình xác thực tài sản thế chấp và chính sách đúc tiền. Chúng ta có thể kết hợp việc triển khai chúng vào một giao dịch duy nhất bằng cách đính kèm trình xác thực tài sản thế chấp làm tập lệnh tham chiếu cho trình xác thực luôn sai. Trong ví dụ của chúng ta, chúng ta gửi nó đến ví của nhà phát triển stablecoin để giữ quyền kiểm soát và tạo điều kiện thử nghiệm. Tại thời điểm này, chúng ta có tất cả các thành phần cần thiết để đúc stablecoin. Tuy nhiên, ngay sau khi Oracle được triển khai, giá trị của nó sẽ trở nên lỗi thời. Chúng ta cần một cơ chế để giữ cho nó được cập nhật. Thông thường, nếu chúng ta tự quản lý Oracle, chúng ta sẽ yêu cầu một quy trình phụ trợ để lấy giá ADA hiện tại bằng USD từ một nguồn đáng tin cậy và đáng tin cậy. Đối với mục đích thử nghiệm, có thể sử dụng một API đơn giản. Trong trường hợp của chúng ta, chúng ta sẽ nhập giá trị theo cách thủ công để mô phỏng các tình huống khác nhau, bao gồm các điều kiện thanh lý. Để cập nhật Oracle, nhà phát triển stablecoin phải sử dụng trình xác thực Oracle cũ, chỉ định tỷ lệ mới. Điều này tạo ra một trình xác thực Oracle mới bao gồm cùng một NFT nhưng với tốc độ được cập nhật. Oracle đảm bảo rằng chỉ nhà phát triển stablecoin mới có thể cập nhật Oracle bằng cách xác minh chữ ký của giao dịch. Với việc triển khai và bảo trì Oracle được bảo hiểm, hãy khám phá cách người dùng có thể đúc và đốt stablecoin.

Đúc và đốt Stablecoin

Để đúc Stablecoin, người dùng chỉ cần trình xác thực chính sách đúc tiền vì không cần mở khóa tài sản thế chấp. Người dùng phải cung cấp tài sản thế chấp, chính sách đúc tiền dưới dạng tập lệnh tham chiếu và Oracle để tính toán tài sản thế chấp cần thiết cho số lượng stablecoin mong muốn. Sau khi các thành phần này được đặt đúng chỗ, người dùng có thể bắt đầu giao dịch tạo UTXO trong ví của họ, đại diện cho các stablecoin được đúc và một UTXO khác trong địa chỉ trình xác thực tài sản thế chấp. UTXO thứ hai chứa giá trị tài sản thế chấp và bao gồm thông tin về chủ sở hữu tài sản thế chấp cũng như số lượng stablecoin được đúc bằng tài sản thế chấp đó. Ví dụ: nếu giá ADA là 1 đô la và tỷ lệ phần trăm tài sản thế chấp tối thiểu được đặt ở mức 150 phần trăm, thì người dùng cần khóa 150 ADA để đúc 100 stablecoin, tương đương với 100 đô la. Mối quan hệ giữa tài sản thế chấp và stablecoin được đúc phải vượt quá ngưỡng được xác định trước (ví dụ: 150% trong ví dụ này). Để thuận tiện cho việc tính toán, dữ liệu tài sản thế chấp cũng bao gồm số lượng stablecoin được đúc. Với các bước này, người dùng đã đúc thành công stablecoin được hỗ trợ bởi các UTXO được thế chấp quá mức. Việc đốt stablecoin liên quan đến việc cung cấp trình xác thực tài sản thế chấp và chính sách đúc tiền làm tập lệnh tham chiếu vì cả hai trình xác thực đều cần được thực thi. Người dùng cũng cung cấp các stablecoin sẽ được đốt và tài sản thế chấp mà chúng muốn mở khóa. Điều quan trọng là chủ sở hữu của tài sản thế chấp phải giống với người cung cấp stablecoin. Ngoài ra, số lượng stablecoin bị đốt phải khớp với số tiền được đúc ban đầu bởi chủ sở hữu. Bằng cách tham chiếu hai tập lệnh này và sử dụng các Đầu vào tương ứng, người dùng có thể truy xuất tài sản thế chấp của họ. Vì Oracle không cần thiết để mở khóa tài sản thế chấp nên nó không đóng vai trò gì trong quá trình đốt. Quá trình này cho phép người dùng lấy lại quyền kiểm soát tài sản thế chấp của chúng bằng cách đốt số lượng stablecoin tương ứng. Cuối cùng, hãy khám phá trường hợp thú vị nhất: thanh lý vị thế của người khác.

Thanh lý slot và ưu đãi

Thanh lý slot của người dùng khác yêu cầu tham khảo cả trình xác thực, stablecoin sẽ được đốt và tài sản thế chấp sẽ được chuyển. Ngoài ra, Oracle cũng phải được cung cấp làm Đầu vào tham chiếu. Trong Script thanh lý, Người dùng 2 cung cấp stablecoin để đốt trong khi chủ sở hữu tài sản thế chấp là Người dùng 1. Bằng cách bắt đầu giao dịch này, Người dùng 2 nhận được tài sản thế chấp. Theo ví dụ trước, Người dùng 2 chỉ cần cung cấp số stablecoin trị giá 100 đô la để nhận được ADA trị giá 150 đô la. Động cơ này để thanh lý vị thế của người khác

tồn tại, nhưng nó không phải là không giới hạn. Để ngăn việc thanh lý không giới hạn, một ngưỡng được xác định trước. Người dùng chỉ có thể thanh lý một slot khác nếu giá trị tài sản thế chấp thấp hơn ngưỡng đã xác định. Trong ví dụ của chúng ta, Người dùng 1 đã đúc 100 stablecoin ($100) và khóa 150 ADA ($150). Nếu giá ADA thay đổi theo cách mà giá trị tài sản thế chấp trở nên thấp hơn 150% giá trị đúc, chẳng hạn như giảm xuống 130%, thì bất kỳ ai có đủ stablecoin đều có thể thanh lý vị thế. Khi thanh lý, cùng một lượng stablecoin được đúc ban đầu phải được đốt. Tuy nhiên, do giá trị tài sản thế chấp vượt quá nên người thanh lý được nhận phần chênh lệch. Trong trường hợp này, tài sản thế chấp bị khóa có giá trị cao hơn 30% so với giá trị của stablecoin sẽ bị đốt. Người thanh lý được hưởng lợi từ sự khác biệt này, điều này tạo ra động lực để duy trì sự ổn định trong khi vẫn cho phép thu được lợi nhuận tiềm năng. Các cơ chế này đảm bảo rằng giá của stablecoin vẫn ổn định, miễn là các quy tắc thế chấp được tuân thủ.

Phần kết luận

Trong bài học này, chúng ta đã học cách tạo một stablecoin thuật toán bằng cách sử dụng các hợp đồng thông minh và xây dựng một ứng dụng web đầy đủ Hàm để tương tác với nó. Stablecoin hoạt động như một stablecoin thuật toán được thế chấp quá mức, trong đó tài sản thế chấp được yêu cầu để đúc stablecoin. Bằng cách sử dụng các trình xác thực, chẳng hạn như trình xác thực tài sản thế chấp và chính sách đúc tiền, cùng với Oracle, giá trị của stablecoin được chốt bằng một loại tiền tệ fiat, trong trường hợp này là Đô la Mỹ. Oracle cung cấp giá hiện tại của ADA bằng USD, cho phép tính toán tài sản thế chấp cần thiết để đúc Stablecoin. Người dùng có thể đúc stablecoin bằng cách khóa tài sản thế chấp và đốt stablecoin để mở khóa tài sản thế chấp. Có thể thanh lý vị thế của người dùng khác khi giá trị tài sản thế chấp giảm xuống dưới ngưỡng được xác định trước, khuyến khích người dùng duy trì sự ổn định. Các cơ chế được mô tả đảm bảo rằng giá của stablecoin vẫn ổn định, gắn liền với giá trị tài sản thế chấp. Việc triển khai stablecoin yêu cầu hiểu đúng về mã và kiến ​​thức chi tiết về các thành phần hợp đồng thông minh. Bài học này đã cung cấp một cái nhìn tổng quan về các khái niệm chính và các bước liên quan đến việc tạo và triển khai stablecoin.

Xem video

040902 - Using our Stablecoin Dapp UI

PPP 040902 - Sử dụng giao diện người dùng Dapp Stablecoin của chúng ta

Trong hướng dẫn này, chúng ta sẽ hướng dẫn bạn quy trình sử dụng giao diện người dùng dApp Stablecoin của chúng ta, đặc biệt tập trung vào phiên bản PPP 040902. Chúng ta sẽ cung cấp giải thích từng bước về mã và trình bày cách điều hướng qua ứng dụng một cách hiệu quả. Khi kết thúc hướng dẫn này, bạn sẽ hiểu rõ về cách sử dụng giao diện người dùng dApp của Stablecoin cho mục đích của riêng bạn. Bắt đầu nào!

Mục lục

  1. Giới thiệu
  2. Thiết lập môi trường
  3. Triển khai Oracle
  4. Triển khai Script
  5. Đúc Stablecoin
  6. Đốt Stablecoin
  7. Thanh lý Vị thế
  8. Xử lý lỗi
  9. Kết luận

Phần 1 Giới thiệu

Giao diện người dùng dApp của Stablecoin, phiên bản PPP 040902, được thiết kế để tạo điều kiện thuận lợi cho việc tạo, quản lý và sử dụng stablecoin. Stablecoin là loại crypto được chốt vào một tài sản ổn định, chẳng hạn như tiền tệ fiat. Chúng mang lại sự ổn định và có thể được sử dụng như một phương tiện trao đổi trong các ứng dụng phi tập trung. DApp của chúng ta cung cấp giao diện thân thiện với người dùng để tương tác với stablecoin và các Hàm liên quan.

Phần 2: Thiết lập môi trường

Để bắt đầu sử dụng giao diện người dùng dApp của Stablecoin, bạn cần thiết lập môi trường phát triển. Thực hiện theo các bước sau:

  1. Điều hướng đến bài giảng thư mục Tuần 9 của Chain Front End.
  2. Tìm các trang mã nguồn và mở các trang ứng dụng.
  3. Thay thế khối frovski mặc định bằng khối của riêng bạn.
  4. Nếu bạn thích sử dụng ví khác, hãy sửa đổi các dòng mã có liên quan.
  5. Trong terminal, điều hướng đến không gian làm việc có tên Bài giảng tuần 9 của J fronten và chạy các lệnh npm installnpm run.

Sau khi các bước này hoàn tất, bạn có thể mở trang web và truy cập giao diện người dùng của dApp.

Phần 3: Triển khai Oracle

Oracle đóng một vai trò quan trọng trong việc cung cấp giá của tài sản cơ bản của stablecoin. Đây là cách triển khai Oracle:

  1. Chọn ví của Oracle từ các ví có sẵn.
  2. Xác minh rằng ví có chứa dữ liệu thử nghiệm cần thiết.
  3. Nhấp vào node Mint Oracles để bắt đầu giao dịch.
  4. Ký giao dịch và chờ xác nhận.
  5. Sau khi được xác nhận, Oracle NFT được đúc và gửi đến một ví riêng.
  6. Địa chỉ và UTXO của Oracle được hiển thị cùng với giá trị được cung cấp.

Phần 4: Triển khai Script

Để đảm bảo hoạt động bình thường của stablecoin, bạn cần triển khai các tập lệnh. Thực hiện theo các bước sau:

  1. Chuyển sang tab Chủ sở hữu trong giao diện người dùng dApp.
  2. Chọn tỷ lệ phần trăm tài sản thế chấp tối thiểu mong muốn cho stablecoin.
  3. Triển khai các tập lệnh, bao gồm tỷ lệ phần trăm tài sản thế chấp được chỉ định làm tham số.
  4. Ghi lại ID chính sách của stablecoin và loại tài sản liên quan.

Phần 5: Đúc tiền Stablecoin

Bây giờ, hãy khám phá quá trình đúc Stablecoin bằng cách sử dụng các tập lệnh đã triển khai:

  1. Chuyển sang tài khoản người dùng mong muốn.
  2. Xác minh rằng người dùng sở hữu đủ ADA (crypto Cardano) để thế chấp.
  3. Chỉ định số lượng stablecoin sẽ được đúc và loại tài sản (ví dụ: USD Pioneer).
  4. Gửi giao dịch, khóa tài sản thế chấp ADA bắt buộc.
  5. Chờ xác nhận và các stablecoin được đúc sẽ có sẵn trong ví của người dùng.

Phần 6: Đốt Stablecoin

Nếu bạn muốn mở khóa tài sản thế chấp và đốt stablecoin, hãy làm theo các bước sau:

  1. Truy cập chi tiết giao dịch của stablecoin bạn muốn đốt.

  2. Xác định chỉ số UTXO

    chứa tài sản thế chấp và Datum được liên kết.

  3. Sao chép chỉ mục UTXO và chỉ định nó làm tài sản thế chấp cho quá trình Burn.

  4. Chọn tùy chọn Burn để mở khóa tài sản thế chấp và truy xuất ADA.

  5. Chờ xác nhận và ADA sẽ được trả về ví của bạn.

Phần 7: Thanh lý Vị thế

Trong một số trường hợp nhất định, một người dùng có thể thanh lý vị thế của người dùng khác. Đây là cách nó có thể được thực hiện:

  1. Xác định người dùng mục tiêu và giao dịch của chúng có chứa tài sản thế chấp.
  2. Sao chép chỉ số UTXO của tài sản thế chấp và sử dụng nó làm Đầu vào cho quá trình thanh lý.
  3. Chọn số lượng stablecoin sẽ được cung cấp để thanh lý.
  4. Bắt đầu quy trình thanh lý, chuyển tài sản thế chấp cho người dùng thanh lý.
  5. Chờ xác nhận và người dùng thanh lý sẽ nhận được tài sản thế chấp và stablecoin.

Phần 8: Xử lý lỗi

Trong khi sử dụng giao diện người dùng dApp của Stablecoin, điều cần thiết là phải biết các lỗi tiềm ẩn. Ứng dụng kết hợp các cơ chế xử lý lỗi để ngăn chặn các hành động ngoài ý muốn. Ví dụ:

  1. Nếu số tiền đúc vượt quá mức tối đa cho phép dựa trên tài sản thế chấp, một thông báo lỗi sẽ được hiển thị.
  2. DApp xác minh rằng tài sản thế chấp được cung cấp đáp ứng ngưỡng bắt buộc để đúc stablecoin.

Phần 9: Kết luận

Chúc mừng! Bạn đã học thành công cách sử dụng Giao diện người dùng ứng dụng dApp của Stablecoin, phiên bản PPP 040902. Chúng ta đã đề cập đến toàn bộ quá trình, từ thiết lập môi trường đến đào stablecoin, đốt chúng và thậm chí thanh lý các vị thế. Bằng cách làm theo các bước được nêu trong hướng dẫn này, bạn có thể tự tin sử dụng giao diện người dùng dApp của Stablecoin cho các dự án của riêng mình. Chúc mừng stablecoin!

Xem video

040903 - Stablecoin's Oracle

PPP 040903 - Oracle của Stablecoin

Stablecoin đã thu hút được sự chú ý đáng kể trong lĩnh vực crypto do tiềm năng mang lại sự ổn định và giảm biến động. Một khía cạnh quan trọng của stablecoin là vai trò của Oracle trong hoạt động của chúng. Oracle đóng vai trò là nguồn dữ liệu bên ngoài đáng tin cậy, cung cấp thông tin theo thời gian thực giúp duy trì sự ổn định của giá stablecoin. Trong Bài giảng này, chúng ta sẽ đi sâu vào những điểm phức tạp của stablecoin Oracle, khám phá Hàm và tầm quan trọng của chúng trong Context rộng lớn hơn của hệ sinh thái blockchain.

Bài giảng Tuần 9: Khám phá Oracle

Trong tuần thứ 9 của loạt bài giảng, trọng tâm là tìm hiểu hoạt động bên trong của stablecoin Oracles. Thư mục bài giảng chứa hai phần chính: thư mục off-chain và thư mục on-chain. Thư mục off-chain chủ yếu chứa mã nguồn cho trình xác thực, trong khi thư mục on-chain cung cấp thông tin chi tiết về Hàm của Oracle.

Trong mã off-chain, các thành phần chính được quan tâm là node NFT Mint và thành phần Oracle React. Node đúc NFT chứa mã off-chain chịu trách nhiệm đúc NFT, trong khi thành phần Oracle React chứa mã off-chain để triển khai, cập nhật và xóa Oracle. Trong một Script trong thế giới thực, một chủ sở hữu phụ trợ cũng sẽ có mặt, tự động hóa các bản cập nhật Oracle thay vì dựa vào sự can thiệp thủ công.

Hiểu triển khai NFT

Để bắt đầu khám phá Oracle, điều cần thiết là phải hiểu việc triển khai token không thể thay thế (NFT). Mã off-chain để triển khai NFT bao gồm một số bước. Đầu tiên, mã kiểm tra xem có sẵn địa chỉ ví được kết nối hay không. Nếu vậy, bước tiếp theo là truy xuất UTXO (Đầu ra giao dịch chưa sử dụng) được liên kết với địa chỉ đó. UTXO đóng vai trò là điểm tham chiếu để tham số hóa chính sách đúc NFT.

Sau đó, mã off-chain đã xây dựng các tham số cần thiết cho NFT, chẳng hạn như tên token. Các tham số bao gồm ID giao dịch, chỉ mục UTXO và tên token. Các tham số này được sử dụng để áp dụng Hàm tập lệnh được tham số hóa, dẫn đến việc tạo chính sách đúc tiền cuối cùng. Kiểu tài sản của NFT được lấy từ ID chính sách và tên token. Cuối cùng, mã đã cập nhật trạng thái của giao diện người dùng, đảm bảo xử lý đúng cách các phần tử giao diện người dùng và cho phép tương tác với các thành phần khác.

Khi NFT được đúc thành công, bước tiếp theo liên quan đến việc sử dụng nó để triển khai Oracle.

Trình xác thực Oracle và Hàm của nó

Trái tim của Oracle nằm trong mã on-chain, cụ thể là trong trình xác thực Oracle. Trình xác thực, được triển khai dưới dạng hợp đồng thông minh Plutus, đã nhận được các tham số cần thiết cho hoạt động của nó. Các tham số này bao gồm loại tài sản NFT và nhà điều hành được phép cập nhật và xóa Oracle. Trình xác thực cho phép hai hành động: cập nhật Oracle và xóa nó.

Logic của trình xác thực dựa trên các tham số được cung cấp và dữ liệu (Datum) được liên kết với Oracle. Trong trường hợp cập nhật Oracle, cần phải thỏa mãn nhiều lần kiểm tra. Những kiểm tra này đảm bảo rằng các token cần thiết, chẳng hạn như NFT, đã được sử dụng và tạo ra trong giao dịch. Ngoài ra, quyền sở hữu Oracle đã được xác minh và tính hợp lệ của dữ liệu Đầu ra được đảm bảo.

Quá trình xóa Oracle tương đối đơn giản so với việc cập nhật. Nó chủ yếu liên quan đến việc xác minh xem thực thể bắt đầu xóa có phải là chủ sở hữu của Oracle hay không. Sau khi quá trình kiểm tra hoàn tất thành công, Oracle sẽ được cập nhật hoặc xóa tương ứng.

Phân tích cú pháp Datum của Oracle và các hàm tiện ích bổ sung

Để tạo thuận lợi cho quá trình xác thực, trình xác thực Oracle đã sử dụng một số Hàm tiện ích. Một Hàm như vậy liên quan đến việc phân tích cú pháp Datum của Oracle. Hàm này, được trích xuất từ ​​trình xác thực, cho phép phân tích cú pháp Datum bằng các kỹ thuật khác nhau. Nếu có Datum, nó có thể được phân tích cú pháp và trả về trực tiếp. Trong trường hợp hash

.

Xem video

040904 - Deploying Stablecoin's Reference Scripts

PPP 040904 - Triển khai tập lệnh tham chiếu của Stablecoin

Triển khai các tập lệnh tham chiếu stablecoin là một bước quan trọng trong quá trình đúc Stablecoin. Các tập lệnh này đóng vai trò là nền tảng cho chính sách đúc và trình xác thực dần dần, đảm bảo tính ổn định và toàn vẹn của hệ thống stablecoin. Trong hướng dẫn này, chúng ta sẽ hướng dẫn bạn quy trình triển khai các tập lệnh này và giải thích tầm quan trọng của chúng trong hệ sinh thái tổng thể. Bằng cách làm theo các bước được nêu bên dưới, bạn sẽ hiểu toàn diện về cách triển khai các tập lệnh tham chiếu stablecoin một cách hiệu quả.

Bước 1: Kiểm tra sơ bộ Trước khi đi sâu vào quy trình triển khai tập lệnh, điều cần thiết là phải tiến hành một số kiểm tra để đảm bảo rằng tất cả các giá trị được yêu cầu đều có sẵn ở trạng thái hiện tại. Bước này phục vụ như một đánh giá sơ bộ để xác minh rằng các điều kiện cần thiết được đáp ứng để triển khai thành công.

Bước 2: Nhận Chính sách đúc tiền cuối cùng Chính sách mint dựa trên một số tham số, bao gồm trình xác thực Oracle, trình xác thực tài sản thế chấp và tỷ lệ phần trăm trung bình của tài sản thế chấp. Để có được chính sách đúc tiền cuối cùng, các giá trị này phải được cung cấp. Bằng cách khám phá mã on-chain của chính sách đúc tiền, chúng ta có thể xác định nhu cầu tham số hóa nó với các giá trị nói trên. Khi chúng ta nắm bắt được sự tương tác giữa các tham số và giao dịch này, chúng ta có thể tiến hành để có được chính sách đúc tiền cuối cùng.

Bước 3: Triển khai Script - React Component Trong bước này, chúng ta triển khai các tập lệnh bằng cách sử dụng các thành phần React. Tên token, cần phải khớp với giá trị được mã hóa cứng trong chính sách đúc, sẽ được tạo trước tiên. Sau đó, hàm hash của trình xác thực Oracle có được bằng cách áp dụng hàm hash của tập lệnh xác thực cho tập lệnh Oracle. Mặt khác, hàm hash của trình xác thực tài sản thế chấp được lấy bằng cách sử dụng tập lệnh tài sản thế chấp, được mã hóa cứng và không đổi bất kể các thay đổi đối với chính sách đúc hoặc Oracle.

Bước 4: Tạo tham số Khi chúng ta có các giá trị hash của trình xác thực, chúng ta sẽ tạo các tham số cần thiết cho chính sách đúc. Các tham số này bao gồm hàm hash của trình xác thực Oracle, hàm hash của trình xác thực tài sản thế chấp và tỷ lệ phần trăm tối thiểu. Bằng cách áp dụng các tham số này cho mã thu được từ chính sách đúc tiền và tài sản thế chấp, chúng ta tạo ra chính sách stablecoin cuối cùng.

Bước 5: Tạo ID chính sách và Kiểu nội dung Với chính sách stablecoin cuối cùng trong tay, chúng ta có thể áp dụng chính sách đúc cho hàm ID để lấy ID chính sách. Ngoài ra, bằng cách kết hợp ID chính sách và tên token, chúng ta tạo loại tài sản cho stablecoin. Những giá trị này rất quan trọng để theo dõi và xác định stablecoin trong hệ sinh thái.

Bước 6: Cập nhật trạng thái Sau khi thu thập tất cả các giá trị cần thiết, chúng ta cập nhật trạng thái để phản ánh các thay đổi. Bước này liên quan đến việc tạo một bản cập nhật trạng thái tiềm năng cho biết sự thành công của giao dịch. Bản cập nhật trạng thái tiềm năng bao gồm ID chính sách ở định dạng thập lục phân, tên token, loại nội dung và các thông tin liên quan khác.

Bước 7: Giao dịch triển khai tập lệnh Trong bước này, chúng ta tập trung vào giao dịch thực tế triển khai tập lệnh. Giao dịch yêu cầu đính kèm tập lệnh vào UTXO. Chúng ta thực hiện hành động này hai lần, một lần cho mỗi tập lệnh. Thay vì sử dụng trình xác thực always false, chúng ta sử dụng địa chỉ của chính mình để duy trì quyền kiểm soát các tập lệnh. Để cân bằng giao dịch, chúng ta cung cấp lượng ADA cần thiết để tạo UTXO.

Bước 8: Hoàn thành triển khai Sau khi tạo và cân bằng giao dịch, chúng ta tiến hành gửi nó để thực hiện. Điều này hoàn tất quy trình triển khai, làm cho các tập lệnh chính sách đúc và tài sản thế chấp có sẵn on-chain để sử dụng.

Phần kết luận: Triển khai các tập lệnh tham chiếu stablecoin là một bước quan trọng trong việc thiết lập một hệ sinh thái stablecoin ổn định và đáng tin cậy. Bằng cách làm theo hướng dẫn từng bước được nêu ở trên, bạn có thể triển khai thành công trình xác thực dần dần và các tập lệnh chính sách đúc tiền, cho phép tạo và sử dụng stablecoin. Hiểu tầm quan trọng của các tập lệnh này và sự tương tác của chúng với toàn bộ hệ thống là rất quan trọng để duy trì sự ổn định và toàn vẹn của mạng stablecoin.

Xem video

040905 - Minting Stablecoins

PPP 040905 - Đúc Stablecoin

Đúc Stablecoin đã trở thành một thông lệ ngày càng phổ biến trong thế giới crypto. Stablecoin cung cấp các lợi ích của crypto, chẳng hạn như Phi tập trung và giao dịch nhanh, đồng thời duy trì giá trị ổn định bằng cách gắn chúng với các tài sản truyền thống như tiền tệ fiat hoặc hàng hóa. Trong Bài giảng này, chúng ta sẽ đi sâu vào quá trình đúc Stablecoin, tập trung vào các khía cạnh on-chain và off-chain. Chúng ta sẽ khám phá các tham số đúc, các kiểm tra cần thiết và xây dựng một giao dịch đáp ứng tất cả các yêu cầu.

Chương 1: Tìm hiểu các tham số đúc tiền Việc đúc Stablecoin yêu cầu xác định các tham số cụ thể chi phối quá trình. Các tham số này bao gồm hàm hash trình xác thực của Oracle và trình xác thực tài sản thế chấp, cũng như tỷ lệ phần trăm tài sản thế chấp tối thiểu. Bằng cách kết hợp các tham số này vào chính sách đúc, nó đảm bảo rằng chính sách này dành riêng cho Oracle và tài sản thế chấp dự định, ngăn chặn các thay đổi trái phép. Chúng ta sẽ thảo luận về tầm quan trọng của các tham số này và cách chúng đóng góp vào sự ổn định chung của stablecoin.

Chương 2: Quá trình đúc tiền Để bắt đầu quá trình đúc, cần phải thực hiện nhiều kiểm tra khác nhau. Những kiểm tra này đảm bảo rằng hoạt động đúc tiền là hợp lệ và tuân thủ chính sách đã thiết lập. Chúng ta sẽ khám phá ba bước kiểm tra cần thiết: số tiền đúc dương, số tiền đúc tối đa dựa trên giá trị tài sản thế chấp và tính chính xác của cấu trúc và giá trị Đầu ra tài sản thế chấp. Bằng cách hiểu các kiểm tra này, chúng ta hiểu rõ hơn về cách chính sách đúc và trình xác thực tài sản thế chấp phối hợp với nhau để đảm bảo quy trình đúc an toàn và hợp lệ.

Chương 3: Tính toán số tiền đúc tối đa Việc tính toán số tiền đúc tối đa liên quan đến các phép tính phức tạp xem xét số tiền thế chấp, tỷ lệ phần trăm thế chấp tối thiểu và tỷ lệ hiện tại do Oracle cung cấp. Chúng ta sẽ đi sâu vào công thức được sử dụng để xác định số tiền đúc tối đa và khám phá vai trò của Oracle trong việc cung cấp thông tin tỷ lệ chính xác. Hiểu cách tính này là rất quan trọng để duy trì tính ổn định và tính toàn vẹn của stablecoin.

Chương 4: Lấy dữ liệu Oracle Để có được dữ liệu Oracle cần thiết cho quy trình đúc tiền, cần phải tuân theo các bước cụ thể. Chúng ta sẽ khám phá quy trình truy xuất tốc độ và Đầu vào Oracle, bao gồm lọc các Đầu vào dựa trên địa chỉ của trình xác thực Oracle. Ngoài ra, chúng ta sẽ thảo luận về tầm quan trọng của Oracle Datum và vai trò của nó trong việc tính toán số lượng đúc tối đa. Bằng cách hiểu cách lấy và sử dụng dữ liệu Oracle, chúng ta đảm bảo các hoạt động mint chính xác và đáng tin cậy.

Chương 5: Xác thực kết quả thế chấp Datum Xác thực Đầu ra tài sản thế chấp Datum là một bước quan trọng trong quy trình đúc. Nó liên quan đến việc kiểm tra xem giao dịch có tạo địa chỉ của tài sản thế chấp với các giá trị và mục chính xác hay không. Chúng ta sẽ kiểm tra các kiểm tra được thực hiện để đảm bảo tính chính xác của Đầu ra tài sản thế chấp Datum, bao gồm xác minh ID chính sách đúc, số lượng stablecoin và chữ ký của chủ sở hữu tài sản thế chấp. Hiểu những kiểm tra này là rất quan trọng để duy trì tính bảo mật và tính toàn vẹn của stablecoin.

Chương 6: Xây dựng một giao dịch đúc tiền hợp lệ Xây dựng một giao dịch đáp ứng tất cả các kiểm tra và tham số cần thiết là bước cuối cùng trong quy trình đúc tiền. Chúng ta sẽ khám phá các thành phần cần thiết của một giao dịch đúc tiền hợp lệ, bao gồm hàm hash Pokey, tài sản thế chấp Datum, dẫn xuất địa chỉ tài sản thế chấp và xây dựng giao dịch. Bằng cách hiểu quy trình xây dựng, chúng ta có thể đảm bảo việc đúc Stablecoin thành công trong khi tuân thủ các quy tắc và chính sách đã thiết lập.

Phần kết luận: Đúc Stablecoin là một quá trình phức tạp liên quan đến nhiều cân nhắc on-chain và off-chain. Bằng cách hiểu các tham số đúc, kiểm tra cần thiết và xây dựng giao dịch, chúng ta có thể đảm bảo việc tạo stablecoin an toàn và hợp lệ. Quá trình đúc tiền đóng một vai trò quan trọng trong việc duy trì sự ổn định và độ tin cậy của stablecoin trong hệ sinh thái crypto. Khi mức độ phổ biến của stablecoin tiếp tục tăng lên, sự hiểu biết toàn diện về quy trình đúc tiền ngày càng trở nên quan trọng đối với những người tham gia vào không gian crypto.

Xem video

040906 - Burning Stablecoins and Liquidating positions

PPP 040906 - Đốt Stablecoin và thanh lý các vị thế

Bài giảng sau đây cung cấp phân tích chuyên sâu về việc đốt stablecoin và thanh lý các slot trong Context PPP 040906. Hai quy trình này được kiểm tra cùng nhau do các đặc điểm và kiểm tra chung của chúng. Bài giảng khám phá các kiểm tra liên quan đến cả việc đốt và thanh lý, nhấn mạnh tầm quan trọng của quyền sở hữu tài sản thế chấp và so sánh nhật ký tài sản thế chấp với số lượng stablecoin được đúc. Tập lệnh xác thực tài sản thế chấp cũng được thảo luận như một phần không thể thiếu của các quy trình này. Ngoài ra, Bài giảng đi sâu vào chính Trình xác thực tài sản thế chấp, phác thảo sự đơn giản của nó so với chính sách đúc tiền. Mã liên quan đến việc đốt và thanh lý stablecoin được giải thích, làm nổi bật sự khác biệt giữa hai hoạt động. Bài giảng kết thúc bằng cách giải quyết các hạn chế và cải tiến tiềm năng cho hệ thống stablecoin này.

Đốt Stablecoin và thanh lý các vị thế theo PPP 040906

PPP 040906 bao gồm một hệ thống stablecoin kết hợp việc đốt stablecoin và thanh lý các slot như các thành phần thiết yếu. Trong Bài giảng này, chúng ta sẽ khám phá những điểm phức tạp của các quy trình này, các bước kiểm tra liên quan và mã cơ bản.

  1. Tìm hiểu về các trường hợp Burn và Thanh lý Các trường hợp thanh lý và thanh lý có nhiều điểm tương đồng, với sự khác biệt chính nằm ở sự cần thiết phải xác minh quyền sở hữu tài sản thế chấp trong trường hợp thanh lý. Chúng ta sẽ xem xét các bước kiểm tra quan trọng liên quan đến cả hai trường hợp, nhấn mạnh việc khớp số tiền đốt với dữ liệu tài sản thế chấp và vai trò của người xác nhận tài sản thế chấp.

1.1 Kiểm tra: Ghi số tiền khớp với tài sản thế chấp Datum Để đảm bảo đốt stablecoin chính xác, điều quan trọng là phải xác minh rằng số tiền đốt khớp với tài sản thế chấp Datum. Việc kiểm tra này liên quan đến việc thu thập dữ liệu từ tài sản thế chấp và so sánh nó với dấu hiệu ngược lại của số lượng stablecoin sẽ bị đốt. Bài giảng giải thích cách thu thập và phân tích cú pháp Đầu vào tài sản thế chấp Datum. Tầm quan trọng của việc so sánh số lượng stablecoin với số tiền được đúc trong các giao dịch trước đó được nhấn mạnh.

1.2 Kiểm tra: Chủ sở hữu tài sản thế chấp (Chỉ trong trường hợp đốt hàng) Trong trường hợp thiêu hủy, điều quan trọng là phải xác nhận rằng chủ sở hữu tài sản thế chấp là người ký kết giao dịch. Việc kiểm tra này đảm bảo rằng chỉ chủ sở hữu hợp pháp mới có thể đốt tài sản thế chấp. Bài giảng phác thảo quy trình xác thực chủ sở hữu tài sản thế chấp bằng cách sử dụng Đầu vào tài sản thế chấp Datum.

1.3 Kiểm tra: Số tiền ghi âm Việc kiểm tra lượng ghi âm là rất quan trọng để ngăn chặn các lỗ hổng tiềm ẩn trong hệ thống. Bằng cách xác minh rằng số tiền ghi là âm, hệ thống sẽ tránh khả năng ai đó tạo UTXO với số tiền đúc âm. Việc kiểm tra này đóng vai trò như một biện pháp bảo vệ chống lại việc đúc Stablecoin tùy tiện mà không khóa tài sản thế chấp thích hợp.

1.4 Kiểm tra: Đủ điều kiện thanh lý Việc thanh lý đòi hỏi phải so sánh nhật ký tài sản thế chấp với số lượng stablecoin được đúc dựa trên tài sản thế chấp đó. Nếu tài sản thế chấp giảm xuống dưới một ngưỡng cụ thể, thì vị thế sẽ đủ điều kiện để thanh lý. Việc kiểm tra này đảm bảo rằng chỉ những slot không đủ tài sản thế chấp mới có thể được thanh lý. Việc so sánh giữa số tiền đúc tối đa và số tiền đúc âm đóng một vai trò quan trọng trong quá trình xác minh này.

  1. Trình xác thực tài sản thế chấp Trình xác thực tài sản thế chấp là một thành phần không thể thiếu hoạt động song song với các trường hợp đốt và thanh lý. Trong khi chính sách đúc tiền tập trung vào việc ghi và thanh lý séc, trình xác thực tài sản thế chấp mở rộng quy trình xác thực bằng cách xem xét tính hợp lệ của tài sản thế chấp. Bài giảng nhấn mạnh tính đơn giản của trình xác thực tài sản thế chấp so với chính sách đúc tiền và mô tả các bước kiểm tra chính của nó.

2.1 Kiểm tra: Mua lại tài sản đảm bảo (Redeem Case) Trong trường hợp Redeemer, người xác nhận tài sản thế chấp xác minh rằng chủ sở hữu của tài sản thế chấp là người ký giao dịch. Ngoài ra, nó đảm bảo rằng số lượng stablecoin khớp với số tiền được đúc trước đó. Việc kiểm tra này ngăn chủ sở hữu mở khóa tài sản thế chấp của chúng mà không hoàn trả các stablecoin.

2.2 Kiểm tra: Xác nhận thanh lý Khi thanh lý một slot, trình xác thực tài sản thế chấp đảm bảo rằng số tiền được đốt khớp với số tiền được lưu trữ trong Datum

. Không giống như trường hợp Redeemer, chủ sở hữu tài sản thế chấp không được kiểm tra vì việc thanh lý liên quan đến vị thế của người khác.

  1. Đốt và thanh lý trong mã tùy chọn Bài giảng đi sâu vào mã chịu trách nhiệm đốt và thanh lý stablecoin trong mã tùy chọn. Nó giải thích cách sử dụng Hàm ghi hoặc thanh lý dựa trên lựa chọn được thực hiện trong giao diện người dùng. Bài giảng nhấn mạnh tầm quan trọng của hàm hash Pokey, tài sản thế chấp Redeemer và tiền đúc Redeemer trong việc xây dựng giao dịch.

  2. Hạn chế và cải tiến Để kết luận, Bài giảng giải quyết các hạn chế tiềm ẩn trong hệ thống stablecoin PPP 040906 và đề xuất các cải tiến có thể nâng cao Hàm và bảo mật của nó. Nó khuyến khích thảo luận và khám phá thêm về các khía cạnh này để tinh chỉnh hệ thống stablecoin.

Phần kết luận: Việc đốt stablecoin và thanh lý các vị thế là những hoạt động quan trọng trong hệ thống stablecoin PPP 040906. Bài giảng này đã cung cấp một phân tích chuyên sâu về các kiểm tra liên quan đến cả hai quy trình, nhấn mạnh quyền sở hữu tài sản thế chấp, xác thực dữ liệu tài sản thế chấp và so sánh số lượng stablecoin được đúc. Vai trò của người xác nhận tài sản thế chấp trong việc đảm bảo tính hợp lệ của tài sản thế chấp cũng đã được khám phá. Bằng cách hiểu mã và kiểm tra liên quan, các bên liên quan có thể hiểu toàn diện về Hàm của hệ thống stablecoin. Bài giảng kết luận bằng cách nêu bật những hạn chế tiềm ẩn và đề xuất các cải tiến để nâng cao hơn nữa hệ thống.

Xem video

040907 - Testing our Stablecoin's scripts

PPP 040907 - Kiểm tra tập lệnh Stablecoin của chúng ta

Trong bài giảng do Antonio trình bày, trọng tâm là giai đoạn thử nghiệm của quy trình phát triển stablecoin. Bài giảng này đi sâu vào chi tiết của các quy trình thử nghiệm được thực hiện trên các tập lệnh của stablecoin. Cụ thể, Bài giảng kiểm tra việc triển khai stablecoin, sử dụng Seda làm tài sản thế chấp và khám phá các Hàm liên quan đến đúc, đốt và thanh lý. Thử nghiệm xoay quanh các trường hợp thử nghiệm từ đầu đến cuối và thanh lý, làm sáng tỏ tầm quan trọng của tính ổn định và thế chấp trong việc duy trì tính toàn vẹn của stablecoin.

Phần 1: Tổng quan về Unit Test trong tuần 9 Trong phần này, chúng ta cung cấp một cái nhìn tổng quan về phần kiểm tra được trình bày trong bài giảng thứ chín. Tệp Unit test, nằm trong thư mục kiểm tra của Tuần 09, chứa các trường hợp kiểm tra khác nhau. Trọng tâm của Bài giảng này sẽ là hai trường hợp thử nghiệm cuối cùng: trường hợp kết thúc và trường hợp thanh lý. Bằng cách kiểm tra những trường hợp này, chúng ta có thể hiểu rõ hơn về tính ổn định và độ tin cậy của stablecoin.

Phần 2: Chức năng kiểm tra đầu cuối Chức năng kiểm tra đầu cuối chịu trách nhiệm thực hiện tất cả các bước cần thiết để đúc, đốt và thanh lý stablecoin. Để hiểu rõ hơn về Hàm này, nó được chia thành hai phần: phần Oracle và phần stablecoin. Việc triển khai stablecoin sử dụng Seda làm tài sản thế chấp, nghĩa là Ada bị khóa để đúc stablecoin và được mở khóa để vận hành Oracle. Hàm sử dụng hai thao tác chính: triển khai Oracle và cập nhật giá trị của nó. Các hoạt động này đảm bảo tính ổn định và chính xác của dữ liệu giá của Oracle.

Phần 3: Chức năng triển khai Oracle Trong phần này, chúng ta đi sâu vào chi tiết của Hàm triển khai Oracle. Chức năng này liên quan đến việc tạo NFT (token không thể thay thế) sẽ được sử dụng trong Oracle. Ngoài ra, một UTXO mới (Đầu ra giao dịch chưa xác định) được tạo trong tập lệnh Oracle. Quy trình của hàm bao gồm sử dụng NFT và chuyển nó vào tập lệnh, tiếp theo là đặt giá trị làm Datum nội tuyến trong tập lệnh.

Phần 4: Chức năng cập nhật Oracle Chức năng Oracle cập nhật tập trung vào việc cập nhật UTXO hiện có trong tập lệnh với một giá trị mới. Tương tự như hàm Oracle triển khai, hàm Oracle cập nhật liên quan đến việc sử dụng UTXO của tập lệnh và tạo UTXO mới với giá trị Oracle được cập nhật. Ngoài ra, cùng một NFT được gửi tới tập lệnh, đảm bảo tính nhất quán và chính xác trong các hoạt động của Oracle.

Phần 5: Đúc, đốt và thanh lý Stablecoin Phần này cung cấp phân tích chuyên sâu về các quy trình liên quan đến đúc, đốt và thanh lý stablecoin. Để đúc stablecoin, cần có tài sản thế chấp và trong trường hợp này, ba Ada được đặt làm tài sản thế chấp. Tham chiếu trình xác thực Oracle đóng một vai trò quan trọng trong việc xác định giá của ADA. Quá trình đúc cũng yêu cầu người dùng chịu trách nhiệm bắt đầu quá trình đúc, cùng với giá trị cụ thể sẽ được đúc. Quá trình đúc bao gồm chi tiêu tài sản thế chấp, xây dựng giao dịch và tương tác với tập lệnh stablecoin.

Phần 6: Đốt Stablecoin Đốt stablecoin đề cập đến quá Redeemer stablecoin để đổi lấy tài sản thế chấp. Phần này xem xét các bước liên quan đến việc đốt stablecoin, bao gồm tìm UTXO với tài sản thế chấp bị khóa, cung cấp các tham số đúc stablecoin, chỉ định người dùng chịu trách nhiệm đốt và xác định giá trị sẽ bị đốt. Quá trình đốt yêu cầu xây dựng giao dịch cẩn thận để đảm bảo tính ổn định và toàn vẹn của hệ thống stablecoin.

Mục 7: Các trường hợp thanh lý Các trường hợp thanh lý rất quan trọng để đánh giá tính ổn định và mạnh mẽ của hệ thống stablecoin. Phần này khám phá các tình huống trong đó việc thanh lý được thực hiện khi giá của ADA không đổi. Script ví dụ liên quan đến ba người dùng

, mỗi người đúc một lượng stablecoin khác nhau và khóa tài sản thế chấp. Bằng cách cập nhật Oracle với một giá trị khác, một nỗ lực được thực hiện để thanh lý vị thế của hai người dùng. Kết quả của các nỗ lực thanh lý làm nổi bật tầm quan trọng của tài sản thế chấp và tác động của nó đối với sự ổn định của hệ thống stablecoin.

Phần 8: Kết luận Tóm lại, việc kiểm tra và phân tích độ ổn định của các tập lệnh của stablecoin đóng một vai trò quan trọng trong việc đảm bảo độ tin cậy và tính toàn vẹn của hệ thống. Bằng cách kiểm tra kỹ lưỡng quá trình thử nghiệm từ đầu đến cuối, các Hàm cập nhật và triển khai Oracle, quy trình đúc, đốt và thanh lý, chúng ta có được sự hiểu biết toàn diện về khả năng của stablecoin và các lỗ hổng tiềm ẩn. Bài giảng này nhấn mạnh tầm quan trọng của các phương pháp thử nghiệm phù hợp và phân tích độ ổn định trong quá trình phát triển và triển khai stablecoin.

Xem video

040908 - Homework

PPP 040908 - Bài tập về nhà

Bài giảng sau đây xem xét các hạn chế trong việc triển khai PPP 040908 và đề xuất các cải tiến tiềm năng để giải quyết các hạn chế đó. Việc triển khai hiện tại có những thiếu sót nhất định cần được giải quyết để có Hàm tối ưu. Bài giảng này sẽ tập trung vào hai vấn đề cụ thể và đưa ra các giải pháp có thể thực hiện được với kiến ​​thức hiện có. Vấn đề đầu tiên là rủi ro thanh lý cao liên quan đến tài sản thế chấp giảm xuống dưới ngưỡng, dẫn đến tổn thất đáng kể cho người dùng. Vấn đề thứ hai liên quan đến việc không có bồi thường cho các nhà phát triển trong quá trình triển khai hiện tại. Bằng cách xem xét những thách thức này, chúng ta có thể đưa ra các giải pháp đơn giản nhưng hiệu quả để nâng cao hiệu suất tổng thể của PPP 040908.

Hạn chế 1: Cập nhật tài sản thế chấp Datum

Một trong những hạn chế của việc triển khai hiện tại là không thể cập nhật tài sản thế chấp Datum mà không sử dụng và tạo lại tài liệu mới. Cách tiếp cận này trở nên có vấn đề khi giá của ADA (crypto) tăng lên, vì nó yêu cầu tiêu thụ tài sản thế chấp hiện có và tạo một tài sản thế chấp mới với số lượng Stablecoin khác để đúc thêm. Tuy nhiên, quá trình này có thể cồng kềnh và không hiệu quả. Một cải tiến về vấn đề này sẽ liên quan đến việc tìm cách cập nhật Datum mà không cần sử dụng và tái tạo tài sản thế chấp mới.

Việc tìm ra giải pháp cho hạn chế này có thể là một thách thức do sự phức tạp liên quan. Tuy nhiên, đây là một khía cạnh quan trọng cần chú ý để tối ưu hóa Hàm của PPP 040908.

Hạn chế 2: Rủi ro thanh lý quá mức

Hạn chế thứ hai của việc triển khai hiện tại là rủi ro thanh lý cao liên quan đến tài sản thế chấp giảm xuống dưới ngưỡng. Khi giá trị tài sản thế chấp giảm xuống dưới một mức nhất định, người dùng sẽ mất một số tiền đáng kể. Mặc dù nên duy trì thêm một lượng tài sản thế chấp để tính đến các biến động của thị trường, nhưng việc tiêu thụ toàn bộ tài sản thế chấp và đưa giá trị vượt quá cho người thanh lý là quá mức.

Để giảm thiểu rủi ro này, một giải pháp đơn giản sẽ là hạn chế phần thưởng được trao cho người thanh lý. Ví dụ: người thanh lý có thể nhận được tối đa hai phần trăm giá trị bổ sung, phần còn lại được trả lại cho chủ sở hữu ban đầu. Bằng cách thực hiện thay đổi này, rủi ro thanh lý sẽ giảm, cung cấp cho người dùng một hệ thống công bằng và cân bằng hơn.

Cải tiến 1: Hạn chế phần thưởng thanh lý

Cải tiến được đề xuất đầu tiên cho PPP 040908 là đưa ra giới hạn về phần thưởng cho người thanh lý. Hiện tại, người thanh lý nhận được toàn bộ giá trị tăng thêm thu được từ quá trình thanh lý. Cách tiếp cận này là không công bằng đối với người dùng đã thanh lý tài sản thế chấp của họ. Bằng cách giới hạn phần thưởng ở một tỷ lệ phần trăm cụ thể, chẳng hạn như hai phần trăm, có thể đạt được sự phân phối giá trị công bằng hơn. Điều này đảm bảo rằng người thanh lý nhận được khoản bồi thường hợp lý trong khi chủ sở hữu ban đầu giữ lại một phần đáng kể giá trị tài sản thế chấp của họ.

Việc triển khai thay đổi này yêu cầu sửa đổi cơ sở mã hiện tại của PPP 040908. Bằng cách kết hợp hạn chế đối với phần thưởng của người thanh lý, hệ thống trở nên cân bằng hơn và khuyến khích sự tham gia mà không thiên vị một bên một cách không tương xứng.

Cải tiến 2: Bồi thường cho nhà phát triển

Cải tiến thứ hai tập trung vào việc giải quyết tình trạng thiếu bồi thường cho các nhà phát triển trong quá trình triển khai hiện tại. Trong thiết lập hiện tại, các nhà phát triển không nhận được bất kỳ lợi ích tài chính trực tiếp nào, trong khi những người dùng thanh lý những người khác kiếm được tiền thông qua quy trình. Để khắc phục vấn đề này, điều cần thiết là giới thiệu một hệ thống đền bù cho các nhà phát triển vì những đóng góp của họ.

Một giải pháp hợp lý là thực hiện một khoản phí nhỏ cho các quy trình đúc, đốt và thanh lý. Chẳng hạn, một khoản phí 0,1 phần trăm có thể được áp dụng cho mỗi giao dịch, với số tiền thu được sẽ được phân bổ cho khoản bồi thường cho nhà phát triển. Khi làm như vậy, các nhà phát triển được khen thưởng cho những nỗ lực của chúng và được khuyến khích tiếp tục đóng góp vào sự phát triển và cải tiến của PPP 040908.

Phần kết luận:

PPP 040908, mặc dù có những ưu điểm, nhưng có một số hạn chế nhất định có thể được giải quyết thông qua các cải tiến có mục tiêu. Bài giảng này đã thảo luận

hai khía cạnh quan trọng cần được chú ý: cập nhật Datum của tài sản thế chấp và giảm thiểu rủi ro thanh lý. Bằng cách tìm cách cập nhật tài liệu thế chấp Datum mà không tiêu tốn và tạo lại tài liệu mới, việc triển khai có thể trở nên hiệu quả và thân thiện hơn với người dùng. Ngoài ra, bằng cách hạn chế phần thưởng cho người thanh lý và đưa ra một khoản phí để đền bù cho các nhà phát triển, một hệ sinh thái công bằng và bền vững hơn có thể được thiết lập.

Những cải tiến được đề xuất này không phải là toàn diện, nhưng chúng thể hiện các bước quan trọng nhằm nâng cao Hàm và tính công bằng của PPP 040908. Bằng cách triển khai những thay đổi này và lặp lại liên tục trên hệ thống, chúng ta có thể tạo ra một nền tảng toàn diện và mạnh mẽ hơn, mang lại lợi ích cho tất cả các bên liên quan. Điều cần thiết là phải xem xét những cải tiến này khi chúng ta cố gắng vì sự tăng trưởng và phát triển liên tục của PPP 040908.

Xem video

040909 - Q&A

PPP 040909 - Hỏi đáp

Bài giảng là một phiên hỏi đáp trong đó người dẫn chương trình đang cố gắng trả lời các câu hỏi của học viên. Phiên này dường như có liên quan đến kỹ thuật phương pháp chính thức và blockchain. Không có nhiều câu hỏi được đặt ra và hầu hết chúng đều liên quan đến các vấn đề kỹ thuật như phần thưởng ủy thác và cách tham gia vào các thử thách mở dành cho các kỹ sư hoặc thực tập sinh phương pháp chính thức. Người dẫn chương trình cố gắng trả lời các câu hỏi trong khả năng của mình, đồng thời hứa sẽ cung cấp thêm thông tin về chủ đề thử thách mở sau khi tham khảo ý kiến ​​của đồng nghiệp.

Về định dạng, bản ghi là một cuộc trò chuyện qua lại đơn giản. Người dẫn chương trình hỏi xem có ai có câu hỏi không và học viên sẽ trả lời câu hỏi của họ. Sau đó, người dẫn chương trình cố gắng đưa ra câu trả lời cho câu hỏi trước khi chuyển sang câu hỏi tiếp theo. Có một vài tiếp tuyến và bên lề, nhưng nhìn chung, cuộc trò chuyện vẫn đi đúng hướng.

Các giai điệu tổng thể của phiên là bình thường và không chính thức. Người dẫn chương trình có vẻ thân thiện và dễ gần, và học viên cảm thấy thoải mái khi đặt câu hỏi. Không có áp lực phải thực hiện hoặc phải biết tất cả các câu trả lời và người dẫn chương trình rất sẵn lòng tham khảo ý kiến ​​của đồng nghiệp hoặc tra cứu thông tin nếu chúng không biết câu trả lời.

Về nội dung, phiên này cung cấp một số thông tin hữu ích cho những người quan tâm đến kỹ thuật phương pháp chính thức hoặc blockchain. Cuộc thảo luận về phần thưởng ủy thác đặc biệt hữu ích, vì nó làm rõ cách người dùng có thể thu thập phần thưởng của chúng và những bước chúng cần thực hiện để làm như vậy. Thảo luận về những thách thức mở đối với các kỹ sư hoặc thực tập sinh phương pháp chính thức cũng rất thú vị, mặc dù người dẫn chương trình không đưa ra câu trả lời rõ ràng cho câu hỏi này. Tuy nhiên, chúng hứa sẽ tham khảo ý kiến ​​của đồng nghiệp và cung cấp thêm thông tin sau đó, điều này cho thấy sự sẵn sàng giúp đỡ và theo dõi các câu hỏi.

Nhìn chung, mặc dù phiên này không đặc biệt sâu hoặc chi tiết, nhưng nó cung cấp một số thông tin hữu ích và hiểu biết sâu sắc về kỹ thuật phương pháp chính thức và blockchain. Giọng điệu giản dị và thân mật cũng làm cho nó trở thành một trải nghiệm thú vị và dễ tiếp cận đối với những người quan tâm đến chủ đề này.

Xem video

Tuần 10


041001 - Introduction

PPP 041001 - Giới thiệu

Hợp đồng thông minh đóng một vai trò quan trọng trong hệ sinh thái blockchain, cho phép các giao dịch an toàn và phi tập trung. Trong Bài giảng này, chúng ta sẽ khám phá quy trình phát triển hợp đồng thông minh bằng OpShin và PyCardano, hai công cụ mạnh mẽ tận dụng Python để phát triển hợp đồng. OpShin cho phép các nhà phát triển viết hợp đồng thông minh bằng Python và tích hợp liền mạch với PyCardano, cung cấp quyền truy cập vào các thư viện off-chain, khung đo điểm chuẩn và công cụ tối ưu hóa. Bằng cách kết hợp tính linh hoạt của Python với sự mạnh mẽ của OpShin và PyCardano, các nhà phát triển có thể tạo ra các hợp đồng thông minh hiệu quả và đáng tin cậy.

Tổng quan về cú pháp Python

Trước khi đi sâu vào phát triển hợp đồng, hãy xem xét ngắn gọn các khía cạnh chính của cú pháp Python sẽ liên quan đến quy trình viết hợp đồng của chúng ta. Python cho phép chúng ta nhập các hàm từ các tập lệnh khác bằng cách sử dụng câu lệnh nhập, xác định hàm bằng chú thích Kiểu, gán biến, kiểm soát luồng chương trình bằng câu lệnh if và other, lặp qua các biến, in Đầu ra bằng câu lệnh in và sử dụng câu lệnh khẳng định để xác thực điều kiện. Ngoài ra, Python hỗ trợ định nghĩa lớp, truy cập thuộc tính và lập chỉ mục vào danh sách và chuỗi. Điều quan trọng cần lưu ý là OpShin là một tập hợp con nghiêm ngặt của Python, nghĩa là tất cả các hợp đồng OpShin đều là các chương trình Python hợp lệ.

Thiết lập môi trường phát triển

Để bắt đầu với OpShin, chúng ta cần đảm bảo rằng chúng ta đã cài đặt đúng phiên bản Python. Chúng ta có thể xác minh phiên bản Python của mình bằng cách chạy lệnh python3 --version. OpShin tương thích với Python 3.10, vì vậy cần phải cài đặt phiên bản này. Khi chúng ta có phiên bản Python chính xác, chúng ta có thể cài đặt OpShin bằng cách chạy pip install opshin. Lệnh này sẽ tải xuống tất cả các phụ thuộc cần thiết và thiết lập OpShin để phát triển hợp đồng. Với OpShin được cài đặt, chúng ta có thể sử dụng bất kỳ IDE nào được Python hỗ trợ, chẳng hạn như PyCharm hoặc Visual Studio Code, để viết hợp đồng của mình.

Viết một hợp đồng thông minh đơn giản

Đối với phần trình diễn này, hãy bắt đầu bằng cách viết một hợp đồng thông minh cơ bản. Trong OpShin, tất cả các hợp đồng được viết dưới dạng các hàm và điểm vào luôn là một hàm được gọi là validator. Hàm validator nhận ba tham số: Datum, Redeemer và Script_Context. Datum đại diện cho Kiểu dữ liệu được liên kết với hợp đồng, trong khi Redeemer thể hiện hành động hoặc điều kiện kích hoạt thực thi hợp đồng. Script_Context cung cấp thông tin theo Context về việc thực thi tập lệnh.

Trong OpShin, giá trị trả về của hàm validatorNone. Không giống như các trình xác thực dựa trên boolean truyền thống, trình xác thực OpShin hoạt động tương tự như các chương trình Unix. Nếu chương trình bị lỗi hoặc gặp lỗi, chương trình sẽ thoát ra với mã lỗi. Nếu chương trình hoàn tất mà không có lỗi, nó sẽ trả về None hoặc bất kỳ giá trị nào khác, cho biết việc thực thi thành công.

Để tạo một hợp đồng cơ bản, chúng ta có thể định nghĩa một hàm trình xác thực đơn giản luôn vượt qua. Điều này có thể đạt được bằng cách bỏ qua bất kỳ logic cụ thể nào bên trong hàm và cho phép nó trả về None theo mặc định. Đây là một ví dụ:

--Python trình xác thực def(Datum: Any, Redeemer: Any, Script_Context: ScriptContext) -> Không có: pass

Xây dựng hợp đồng

Khi chúng ta đã viết hợp đồng, chúng ta cần xây dựng nó để tạo ra các tạo phẩm cần thiết để triển khai. Để xây dựng hợp đồng, chúng ta có thể sử dụng lệnh opshin build <contract_file_name>.py. Lệnh này sẽ tạo ra các tạo phẩm tạo tác, bao gồm địa chỉ của hợp đồng trên mạng chính và mạng thử nghiệm, tệp Plutus để sử dụng với Cardano CLI và tập lệnh SIBO để sử dụng với PyCardano hoặc Lucid. Ngoài ra, nó cung cấp một ID chính sách để đúc các chính sách, mặc dù chúng ta sẽ không đề cập đến điều đó trong phần trình bày này.

Xem video

041002 - Developing a Dapp with MeshJS and PluTs (Typescript)

PPP 041002 - Phát triển Dapp với MeshJS và PluTs (Bản Kiểu)

Xây dựng các ứng dụng phi tập trung (DApps) đã đạt được động lực đáng kể trong những năm gần đây, với việc các nhà phát triển khám phá các nền tảng blockchain khác nhau để tạo ra các giải pháp sáng tạo. Trong hướng dẫn này, chúng ta sẽ giới thiệu MeshJS, một thư viện mã nguồn mở cung cấp nhiều loại công cụ để phát triển DApps trên blockchain Cardano. Mục tiêu chính của chúng ta là trao quyền cho các nhà phát triển cung cấp các ứng dụng sẵn sàng sản xuất mà người dùng có thể tương tác liền mạch.

Trong suốt hướng dẫn này, chúng ta sẽ đi sâu vào các khối xây dựng chính do MeshJS cung cấp và chứng minh cách chúng có thể được tận dụng một cách hiệu quả. Chúng ta sẽ đề cập đến các chủ đề thiết yếu như tích hợp ví, biên soạn hợp đồng thông minh, tạo giao dịch và khóa/mở khóa tài sản. Khi kết thúc hướng dẫn này, bạn sẽ có kiến ​​thức và kỹ năng cần thiết để phát triển các DApp mạnh mẽ có thể triển khai trên Cardano.

Phần 1: Giới thiệu về MeshJS

MeshJS là một thư viện mã nguồn mở mạnh mẽ được thiết kế để hỗ trợ phát triển DApp trên blockchain Cardano. Nó cung cấp nhiều công cụ và tính năng cho phép các nhà phát triển xây dựng các ứng dụng phức tạp. Trong phần này, chúng ta sẽ khám phá các khả năng cốt lõi của MeshJS và thảo luận về tầm quan trọng của nó trong hệ sinh thái Cardano.

1.1 Hiểu mục đích của MeshJS

Mục đích của MeshJS là cung cấp cho các nhà phát triển các khối xây dựng cần thiết để đưa các ứng dụng của chúng vào môi trường sản xuất nơi người dùng có thể dễ dàng tương tác với chúng. Bằng cách tận dụng MeshJS, các nhà phát triển có thể hợp lý hóa quy trình phát triển và tập trung vào việc tạo trải nghiệm người dùng hấp dẫn.

1.2 Các tính năng chính của MeshJS

MeshJS cung cấp một bộ tính năng toàn diện giúp đơn giản hóa việc phát triển DApp trên Cardano. Một số tính năng chính của nó bao gồm:

  • Tài liệu mở rộng: MeshJS cung cấp tài liệu chi tiết cho từng API, cho phép các nhà phát triển hiểu Hàm của chúng một cách hiệu quả. Tài liệu bao gồm các mô tả toàn diện, đoạn mã và thậm chí cả các bản trình diễn trực tiếp để thử nghiệm thực hành.

  • Tích hợp ví: Với MeshJS, các nhà phát triển có thể tích hợp liền mạch ví Cardano của người dùng vào ứng dụng của họ. Nó cung cấp các công cụ và thành phần cần thiết để kết nối, tương tác và thực hiện các hoạt động liên quan đến ví, chẳng hạn như ký giao dịch và truy xuất UTXO.

  • Biên dịch hợp đồng thông minh: MeshJS hỗ trợ biên dịch các hợp đồng thông minh được viết bằng PluTs (ngôn ngữ dựa trên TypeScript để viết các hợp đồng thông minh Cardano). Nó đơn giản hóa quá trình biên dịch các hợp đồng PluT và cung cấp phương tiện để nhập và sử dụng chúng trong quá trình phát triển DApp.

  • Tạo giao dịch: MeshJS cung cấp khả năng tạo và quản lý các giao dịch trên blockchain Cardano. Các nhà phát triển có thể sử dụng các API của nó để xây dựng giao dịch, xác định Đầu vào và Đầu ra, chỉ định chuyển tài sản cũng như xử lý việc ký và gửi giao dịch.

  • Khóa và mở khóa tài sản: MeshJS cho phép các nhà phát triển khóa và mở khóa tài sản trong hợp đồng thông minh. Nó cung cấp các công cụ cần thiết để xác định các điều kiện khóa, xác thực Đầu vào và tạo giao dịch cho các hoạt động khóa và mở khóa tài sản.

Phần 2: Bắt đầu với MeshJS

Trong phần này, chúng ta sẽ đi sâu vào các khía cạnh thực tế của việc sử dụng MeshJS để phát triển DApps trên Cardano. Chúng ta sẽ khám phá các hướng dẫn từng bước và các ví dụ về mã để minh họa cách tích hợp MeshJS vào quy trình phát triển của bạn một cách hiệu quả.

2.1 Tích hợp ví với MeshJS

Một trong những khía cạnh cơ bản của phát triển DApp là tích hợp ví Cardano của người dùng vào ứng dụng. Trong tiểu mục này, chúng ta sẽ thảo luận về cách tận dụng MeshJS để kết nối ví của người dùng và tương tác với chúng một cách liền mạch.

Để bắt đầu tích hợp ví, nhà phát triển có thể nhập các thành phần cần thiết từ thư viện React của MeshJS. Bằng cách sử dụng hook useWallet, các nhà phát triển có quyền truy cập vào một tập hợp các biến, bao gồm phiên bản ví và một giá trị boolean cho biết liệu ví có được kết nối hay không.

Hơn nữa, MeshJS cung cấp một thành phần giao diện người dùng được gọi là Ví Cardano có thể được nhập vào ứng dụng. Thành phần này cho phép người dùng chọn ví ưa thích của chúng từ các tùy chọn có sẵn trên thiết bị của họ. Các nhà phát triển có thể tùy chỉnh giao diện của thành phần giao diện người dùng và

hành vi dựa trên yêu cầu ứng dụng của họ.

2.2 Biên soạn hợp đồng thông minh với MeshJS

Biên dịch hợp đồng thông minh là một bước quan trọng trong quá trình phát triển DApp. MeshJS đơn giản hóa quy trình này, đặc biệt đối với các hợp đồng PluT, bằng cách cung cấp một giao diện đơn giản để biên dịch và tích hợp.

Để biên dịch hợp đồng thông minh PluTs, các nhà phát triển cần đưa vào một vài dòng mã. Bằng cách gọi hàm Script.cmo.toString(), sẽ thu được ký hiệu tập lệnh. Sau đó, ký hiệu tập lệnh này có thể được nhập và sử dụng để tạo đối tượng tập lệnh Plutus trong MeshJS.

Ngoài ra, MeshJS cho phép các nhà phát triển biên dịch các tập lệnh Plutus được viết bằng các ngôn ngữ khác, cho phép nhiều tùy chọn hơn để phát triển hợp đồng. Bằng cách tận dụng các trình phân giải được cung cấp, các nhà phát triển có thể lấy địa chỉ của tập lệnh, giải mã hàm hash khóa thanh toán và thực hiện nhiều hoạt động khác cần thiết để tích hợp hợp đồng.

Phần 3: Chức năng nâng cao với MeshJS

Dựa trên các khái niệm cơ bản được đề cập trong các phần trước, phần này khám phá Hàm nâng cao do MeshJS cung cấp. Chúng ta sẽ thảo luận về việc khóa và mở khóa tài sản trong hợp đồng thông minh, tạo giao dịch và nâng cao trải nghiệm người dùng.

3.1 Khóa và Mở khóa Tài sản

Khóa và mở khóa tài sản là các hoạt động quan trọng trong hợp đồng thông minh. MeshJS cung cấp các công cụ và API cần thiết để triển khai các hoạt động này một cách hiệu quả. Các nhà phát triển có thể xác định các điều kiện khóa, xác thực Đầu vào và xây dựng các giao dịch để khóa và mở khóa nội dung.

Thông qua việc sử dụng trình phân giải, nhà phát triển có thể lấy địa chỉ tập lệnh, địa chỉ ví và hàm hash khóa cần thiết để khóa và mở khóa nội dung. MeshJS hỗ trợ giải quyết các hàm hash dữ liệu, cho phép các nhà phát triển truy xuất các UTXO thuộc về những người dùng cụ thể. Bằng cách sử dụng nhà cung cấp dữ liệu MeshJS, chẳng hạn như Coils hoặc Blockfrost, các nhà phát triển có thể tìm nạp các UTXO có liên quan và lọc chúng cho phù hợp.

Sau đó, các nhà phát triển có thể tạo các giao dịch để khóa và mở khóa nội dung, chỉ định các Đầu vào, Đầu ra cần thiết và Redeemer. MeshJS tạo điều kiện thuận lợi cho việc xây dựng, ký kết và gửi giao dịch, cung cấp quy trình làm việc toàn diện để quản lý tài sản trong các hợp đồng thông minh.

3.2 Xác nhận giao dịch và Cải thiện trải nghiệm người dùng

Nâng cao trải nghiệm người dùng là rất quan trọng cho sự thành công của bất kỳ DApp nào. MeshJS cung cấp các tính năng hỗ trợ xác nhận giao dịch và cung cấp các bản cập nhật theo thời gian thực cho người dùng.

Bằng cách sử dụng trình lắng nghe sự kiện, nhà phát triển có thể lắng nghe các sự kiện xác nhận giao dịch và kích hoạt các hành động cụ thể tương ứng. Ví dụ: nhà phát triển có thể cập nhật giao diện người dùng để hiển thị trạng thái xác nhận giao dịch hoặc thực hiện các hoạt động khác sau khi giao dịch được xác nhận.

Những cải tiến trải nghiệm người dùng như vậy cải thiện đáng kể khả năng sử dụng tổng thể và độ tin cậy của DApps, đảm bảo người dùng được thông báo đầy đủ về trạng thái và tiến trình giao dịch của họ.

Phần 4: Tài nguyên và Bộ công cụ dành cho người mới bắt đầu MeshJS

Để đẩy nhanh quá trình phát triển, MeshJS cung cấp một loạt các bộ khởi động và tài nguyên bổ sung cho các nhà phát triển. Trong phần này, chúng ta sẽ khám phá các bộ khởi động có sẵn, cung cấp tổng quan về các tính năng của chúng và hướng dẫn các nhà phát triển cách tận dụng chúng một cách hiệu quả.

4.1 Bộ công cụ khởi động MeshJS

MeshJS cung cấp một số bộ công cụ khởi động đóng vai trò là điểm khởi đầu tuyệt vời để phát triển DApp trên Cardano. Những bộ công cụ khởi động này cung cấp các cấu trúc dự án được định cấu hình sẵn, các mẫu mã và tài nguyên bổ sung để bắt đầu quá trình phát triển.

Các nhà phát triển có thể chọn một bộ khởi động dựa trên yêu cầu và nhóm công nghệ ưa thích của họ. Cho dù đó là ứng dụng web dựa trên TypeScript hay một framework cụ thể như Next.js hoặc React, MeshJS đều cung cấp một loạt các tùy chọn để đáp ứng các nhu cầu phát triển đa dạng.

4.2 Bắt đầu với Bộ công cụ dành cho người mới bắt đầu của MeshJS

Để giúp các nhà phát triển bắt đầu nhanh chóng, MeshJS cung cấp các tài nguyên và hướng dẫn chi tiết cho từng bộ khởi động. Những hướng dẫn này cung cấp hướng dẫn từng bước, giải thích mã và các phương pháp hay nhất để tận dụng bộ công cụ khởi động một cách hiệu quả.

Các nhà phát triển có thể khám phá các mẫu mã được cung cấp, kiểm tra cấu trúc dự án và tự tin bắt đầu hành trình phát triển của mình. Các hướng dẫn cũng cung cấp thông tin chi tiết về việc triển khai DApps trên Cardano, đảm bảo các nhà phát triển có hiểu biết toàn diện về toàn bộ vòng đời phát triển.

Phần kết luận:

MeshJS cách mạng hóa việc phát triển DApps trên blockchain Cardano bằng cách cung cấp một bộ công cụ và tính năng toàn diện. Trong hướng dẫn này, chúng ta đã khám phá các khả năng cốt lõi của MeshJS, bao gồm tích hợp ví, biên soạn hợp đồng thông minh, tạo giao dịch và khóa/mở khóa tài sản.

Bằng cách tận dụng MeshJS, các nhà phát triển có thể hợp lý hóa quy trình phát triển của họ, tập trung vào việc tạo trải nghiệm người dùng hấp dẫn và cung cấp các ứng dụng sẵn sàng sản xuất mà người dùng có thể tương tác liền mạch.

Khi hệ sinh thái Cardano tiếp tục phát triển, MeshJS sẽ đóng một vai trò then chốt trong việc trao quyền cho các nhà phát triển xây dựng các DApps sáng tạo nhằm tận dụng toàn bộ tiềm năng của công nghệ blockchain.

Xem video

041003 - Developing smart contracts with PluTs (Typescript)

PPP 041003 - Phát triển hợp đồng thông minh với PluTs (Bản Kiểu)

PluTs (TypeScript) là một thư viện mạnh mẽ được phát triển bởi Harmonic Laboratories cho phép tạo và biên dịch các hợp đồng thông minh cho các ứng dụng phi tập trung Cardano (DApps). Trong Bài giảng này, chúng ta sẽ cung cấp thông tin tổng quan về PluT và khám phá các khả năng của nó. Tài liệu về PluT có thể được tìm thấy tại gluteus.harmoniclabs.tech.

Hiểu về PluT

PluTs bao gồm hai thành phần chính: Unchained và Off-chain. Phần Unchained cho phép các nhà phát triển viết và biên dịch các hợp đồng thông minh bằng TypeScript. Tính năng này làm cho PluT trở nên linh hoạt, cho phép sử dụng nó trong cả môi trường máy chủ và trình duyệt. Mặt khác, phần off-chain cho phép tạo các giao dịch bằng Bản mô tả mà không cần lắp ráp web, dẫn đến hiệu suất ứng dụng và trải nghiệm người dùng được cải thiện.

Hoạt động của PluTs: Ví dụ Hello.ts

Để chứng minh khả năng của PluT, chúng ta sẽ khám phá ví dụ hello.ts được cung cấp trong tài liệu. Chúng ta giả định rằng cấu trúc dự án và các phụ thuộc đã được thiết lập. Dự án mẫu sử dụng UTS (Uniswap TypeScript) và Message SDK để tương tác với hợp đồng thông minh.

Cấu trúc dự án bao gồm thư mục src chứa giao diện người dùng (UI) và logic off-chain và thư mục hợp đồng chứa mã hợp đồng thông minh. Giao diện người dùng bao gồm một trình xử lý kết nối cho ví và các node để gọi các Hàm mở khóakhóa. Các Hàm này sử dụng các giao dịch không đồng bộ, cung cấp phản hồi cho người dùng khi gửi thành công hoặc không thành công.

Phân tích hợp đồng thông minh

Cấu trúc hợp đồng thông minh tuân theo mẫu tiêu chuẩn, lấy Datum, Redeemer và Script Contexts làm Đầu vào và trả về giá trị Boolean để xác thực chi tiêu của Đầu ra. Logic hợp đồng liên quan đến việc kiểm tra xem thông báo được cung cấp có khớp với giá trị được xác định trước hay không và liệu giao dịch có được ký bởi chủ sở hữu hay không. Bằng cách kiểm tra mã hợp đồng, chúng ta hiểu rõ hơn về hành vi và yêu cầu của hợp đồng.

Hiểu giao dịch nhật ký

Hàm logTransaction trong hợp đồng là một hàm không đồng bộ gọi hàm getLockTransaction. Chức năng này tìm nạp các tham số giao thức từ blockchain Cardano để đảm bảo tính chính xác của giao dịch. Sử dụng các tham số này, một trình tạo giao dịch được xây dựng. Trình tạo tập hợp các Đầu vào, chẳng hạn như địa chỉ nguồn và Đầu ra, số tiền thanh toán và địa chỉ tập lệnh, đồng thời tạo một giao dịch để ký và gửi.

Kiểm tra hợp đồng tại địa phương

Để kiểm tra hợp đồng cục bộ, chúng ta cần đảm bảo rằng thiết lập cần thiết đã hoàn tất. Bằng cách chạy mã, chúng ta có thể quan sát quá trình xây dựng giao dịch, ký giao dịch và gửi. Đầu ra sẽ xác nhận xem giao dịch đã được gửi thành công hay có bất kỳ lỗi nào xảy ra trong quá trình này. Thử nghiệm cục bộ cho phép lặp lại và gỡ lỗi mã hợp đồng nhanh chóng.

Chuyển đổi hợp đồng đơn giản thành hợp đồng đầu tư

Để minh họa tính linh hoạt của PluTs, chúng ta khám phá việc chuyển đổi hợp đồng đơn giản thành hợp đồng đầu tư. Chúng ta xác định một cấu trúc mới Kiểu, InvestingDatum, và sử dụng khả năng phá hủy của TypeScript để trích xuất các trường chủ sở hữu và thời hạn. Chúng ta giới thiệu một điều kiện mới, deadlineReached, dựa trên so sánh giữa hiệu lực của khoảng thời gian giao dịch và thời hạn được chỉ định. Ví dụ này cho thấy cách PluT có thể được sử dụng để tạo các hợp đồng thông minh năng động và phức tạp hơn.

Mở rộng kiến ​​thức về PluTs

Bài giảng kết thúc bằng cách nêu bật các tài nguyên có sẵn để khám phá thêm về PluT. Máy chủ Harmonic Laboratories Discord cung cấp một cộng đồng các nhà phát triển sử dụng PluT, cung cấp hỗ trợ và cơ hội cộng tác. Bằng cách tương tác với cộng đồng Discord, các nhà phát triển có thể tìm kiếm sự hỗ trợ, chia sẻ kiến ​​thức và hiểu rõ hơn về các phương pháp hay nhất để sử dụng PluT một cách hiệu quả.

Phần kết luận

PluTs (TypeScript) là một thư viện có giá trị để phát triển các hợp đồng thông minh cho Cardano DApps.

Xem video

041004 - Developing smart contracts with OpShin and PyCardano (Python)

PPP 041004 - Phát triển hợp đồng thông minh với OpShin và PyCardano (Python)

Hợp đồng thông minh đã cách mạng hóa thế giới công nghệ blockchain, cho phép thực hiện các hợp đồng tự thực hiện với các điều kiện và kết quả được xác định trước. Trong Bài giảng này, chúng ta sẽ khám phá quy trình phát triển hợp đồng thông minh bằng OpShin và PyCardano, tận dụng sức mạnh của ngôn ngữ lập trình Python. OpShin cung cấp khả năng tích hợp liền mạch với PyCardano và cung cấp các tính năng bổ sung như khung đo điểm chuẩn và thử nghiệm. Chúng ta sẽ đi sâu vào cú pháp và khả năng của OpShin và chứng minh từng bước phát triển hợp đồng thông minh. . Vì vậy, hãy đi sâu vào thế giới hợp đồng thông minh và tìm hiểu cách tận dụng OpShin và PyCardano để phát triển hợp đồng hiệu quả.

Tổng quan và cú pháp Python:

Trước khi bắt đầu khám phá OpShin và PyCardano, hãy nhanh chóng tóm tắt lại cú pháp và các tính năng của Python. Python là một ngôn ngữ lập trình linh hoạt và được sử dụng rộng rãi, được biết đến với tính đơn giản và dễ đọc. Nó cung cấp nhiều cấu trúc khác nhau như câu lệnh nhập để bao gồm mô-đun, định nghĩa hàm với chú thích Kiểu, gán và gán lại biến, luồng điều khiển bằng cách sử dụng câu lệnh if-else, lặp qua các biến, truy tìm bằng cách sử dụng câu lệnh in, xác nhận để kiểm tra điều kiện, định nghĩa lớp với thuộc tính được định Kiểu, v.v. Python đóng vai trò là nền tảng tuyệt vời để phát triển các hợp đồng thông minh bằng cách sử dụng OpShin, đây là một tập hợp con nghiêm ngặt của Python hợp lệ.

Thiết lập OpShin và PyCardano:

Để bắt đầu với OpShin, hãy đảm bảo rằng bạn đã cài đặt đúng phiên bản Python. Bạn có thể kiểm tra phiên bản bằng cách chạy lệnh python3 --version, phiên bản này phải tương thích với Python 3.10. Tiếp theo, cài đặt OpShin bằng cách thực hiện pip install opshin. Lệnh này sẽ tải xuống tất cả các phụ thuộc cần thiết và thiết lập chương trình OpShin để phát triển hợp đồng. Bạn có thể sử dụng bất kỳ IDE Python nào, chẳng hạn như PyCharm hoặc Visual Studio Code, để viết các hợp đồng OpShin vì chúng thực chất là các chương trình Python.

Viết Hợp đồng thông minh với OpShin:

Hãy bắt đầu bằng cách tạo một tệp hợp đồng OpShin mới. Trong phần trình diễn này, chúng ta sẽ đặt tên nó là mycontract.py. Để bắt đầu viết hợp đồng, hãy nhập phần mở đầu, cung cấp các định nghĩa cần thiết, chẳng hạn như định nghĩa sổ cái. Trong OpShin, trình xác thực là một hàm nhận nhiều đối số. Chức năng trình xác thực là một thành phần quan trọng của hợp đồng thông minh Cardano và phải được đặt tên là validator. Chúng ta sẽ xác định Hàm trình xác thực của mình với ba tham số: Datum, Redeemer và Script Contexts. Kiểu trả lại của hợp đồng là Không. Điều quan trọng cần lưu ý là trình xác thực OpShin không giống với trình xác thực Plutus vì chúng không trả về giá trị Boolean. Thay vào đó, chúng hoạt động giống như các chương trình Unix, đạt hoặc không đạt với mã thoát. Nếu chương trình trả về một giá trị, bất kể nội dung của nó là gì, trình xác thực sẽ phê duyệt giao dịch.

Trong ví dụ này, chúng ta sẽ tạo một hợp đồng luôn trôi qua, được gọi là hợp đồng luôn đúng. Chúng ta có thể đạt được điều này bằng cách chỉ cần trả về None từ hàm trình xác thực. Ngoài ra, chúng ta sẽ khám phá một ví dụ về hợp đồng luôn thất bại bằng cách sử dụng câu lệnh assert với điều kiện sai. Chúng ta cũng sẽ đề cập đến cách xây dựng hợp đồng OpShin, hợp đồng tạo ra một số tạo phẩm xây dựng như địa chỉ trên mạng chính và mạng thử nghiệm, tệp Plutus cho Cardano CLI và tập lệnh CBO cho PyCardano hoặc Lucid.

Nâng cao Hợp đồng: Xác thực Datum và Redeemer:

Để làm cho hợp đồng của chúng ta mạnh mẽ hơn, chúng ta sẽ thêm các điều kiện để đảm bảo rằng chỉ người được ủy quyền mới có thể rút tiền từ địa chỉ được liên kết với trình xác thực của chúng ta. Chúng ta sẽ bắt đầu bằng cách giả định rằng Datum là hàm hash khóa công khai (pubkey hash) của Redeemer dự định. Redeemer sẽ cung cấp bằng chứng cần thiết về quyền sở hữu đối với số tiền.

Xem video

041005 - Developing smart contracts with Plutarch (Haskell)

PPP 041005 - Phát triển hợp đồng thông minh với Plutarch (Haskell)

Chào mừng bạn đến với cuộc thảo luận về phát triển hợp đồng thông minh với Plutarch, một ngôn ngữ nhúng dành riêng cho miền (DSL) chủ yếu được sử dụng để viết hợp đồng thông minh trong Haskell. Trong Bài giảng này, chúng ta sẽ khám phá các tính năng và ưu điểm của Plutarch, nó khác với PlutusTX như thế nào và cách viết hợp đồng thông minh bằng Plutarch.

Plutarch: Tổng quan

Plutarch là một DSL nhúng được thiết kế để viết hợp đồng thông minh bằng Haskell. Nó nhằm mục đích cung cấp hiệu quả cao và chính xác trong khi giải quyết tính chất tốn kém và nhạy cảm về bảo mật của việc chạy mã trên blockchain. Plutarch đạt được điều này bằng cách mã hóa trực tiếp các phần nguyên thủy của Plutus Core và sử dụng quy trình biên dịch trong thời gian chạy Haskell. Cách tiếp cận này cung cấp nhiều quyền kiểm soát hơn đối với việc tối ưu hóa và cho phép mô tả rõ ràng về Kiểu dành riêng cho miền, dẫn đến mã Plutus Core nhỏ hơn và hiệu quả hơn.

Sự khác biệt giữa PlutusTX và Plutarch

Mặt khác, PlutusTX biên dịch Haskell thành GHC Core và sau đó là GHC Core thành Plutus Core. Quá trình này bao gồm các kỹ thuật lập trình meta như mẫu Haskell và plugin trình biên dịch tùy chỉnh để chặn quá trình biên dịch Haskell. Trong khi PlutusTX nhằm mục đích biên dịch một ngôn ngữ được đánh giá lười biếng như Haskell thành Plutus Core được đánh giá nghiêm ngặt, Plutarch thực hiện một cách tiếp cận khác bằng cách mã hóa trực tiếp các phần nguyên thủy của Plutus Core và thực hiện quá trình biên dịch trong thời gian chạy Haskell. Sự khác biệt này cho phép Plutarch có quyền kiểm soát tốt hơn đối với việc tối ưu hóa và tạo ra mã Plutus Core ngắn gọn và hiệu quả hơn.

Viết hợp đồng thông minh với Plutarch

Để minh họa quá trình viết hợp đồng thông minh với Plutarch, hãy xem xét một ví dụ đơn giản về tính toán các số Fibonacci. Chúng ta sẽ bắt đầu bằng cách viết mã Haskell cho hàm Fibonacci và sau đó dịch nó sang Plutarch.

Trong Haskell, chúng ta có thể định nghĩa hàm Fibonacci bằng đệ quy. Chúng ta kiểm tra các trường hợp cơ bản là 0 và 1, và đối với các giá trị khác, chúng ta gọi hàm một cách đệ quy với hai số Fibonacci trước đó. Bản chất đệ quy của Haskell cho phép chúng ta biểu diễn hàm Fibonacci một cách chính xác.

Trong Plutarch, chúng ta cần thực hiện một số điều chỉnh khi chúng ta đang làm việc trong môi trường Plutus Core. Plutarch sử dụng Kiểu của riêng mình, chẳng hạn như PInteger, tương ứng với số nguyên sản xuất lõi. Chúng ta cũng sử dụng bộ kết hợp pfix để tính điểm cố định và hàm pif để thay thế cấu trúc if-then-else trong Haskell. Bằng cách thực hiện những sửa đổi này, chúng ta có thể viết hàm Fibonacci trong Plutarch, hàm này gần giống với cách triển khai Haskell.

Chúng ta biên dịch mã Plutarch và đánh giá nó để thu được số Fibonacci cho một Đầu vào nhất định. Mã Plutus Core thu được nhỏ hơn và hiệu quả hơn, đáp ứng các ràng buộc của hợp đồng thông minh trên blockchain. So sánh mức sử dụng CPU và bộ nhớ của Plutarch với PlutusTX cho thấy những lợi thế của việc sử dụng Plutarch để viết hợp đồng thông minh.

Viết Trình xác thực trong Plutarch

Ngoài các ví dụ cơ bản, chúng ta đi sâu vào viết trình xác thực trong Plutarch. Trình xác thực là một hàm nhận ba đối số: Datum, Redeemer và Script Contexts. Trong ví dụ này, chúng ta tập trung vào một trình xác thực được tham số hóa để kiểm tra xem một giao dịch có được ký bởi một hàm hash khóa công khai cụ thể hay không.

Mã trình xác thực Plutarch thể hiện việc sử dụng ký hiệu đơn nguyên Plutarch, cung cấp cách viết mã dễ đọc và có tổ chức hơn. Nó sử dụng ký hiệu qualified do để xử lý các phần tiếp theo một cách hiệu quả, cải thiện khả năng đọc mã.

Hàm trình xác thực tương tác với Script Contexts và trích xuất các trường cần thiết bằng cách sử dụng các hàm như plate fieldspfield. Nó cũng làm nổi bật các mã hóa rõ ràng của Kiểu dữ liệu trong Plutarch, đang được cải thiện.

Xem video

041006 - Aiken Hello World (CLI version)

PPP 041006 - Aiken Hello World (phiên bản CLI)

Công nghệ blockchain đã cách mạng hóa các ngành công nghiệp khác nhau, cung cấp các giải pháp phi tập trung và minh bạch. Icon, một nền tảng blockchain, cung cấp một hệ sinh thái mạnh mẽ để phát triển các ứng dụng phi tập trung (DApps). Một thành phần thiết yếu của DApps là trình xác thực, đảm bảo tính toàn vẹn và hợp lệ của các giao dịch trên blockchain. Trong hướng dẫn này, chúng ta sẽ khám phá cách xây dựng trình xác thực Plutus tùy chỉnh và thực thi nó trên blockchain Biểu tượng bằng Giao diện dòng lệnh Aiken (CLI).

Mục lục:

  1. Thiết lập môi trường

  2. Sửa mã Aiken

  3. Chuyển đổi mã biểu tượng thành UPLC

  4. Tạo địa chỉ tập lệnh và dữ liệu kiểm tra

  5. Truy vấn ví và xây dựng Datum

  6. Xây dựng và đệ trình giao dịch

  7. Ký và Gửi Giao dịch Mở khóa

  8. Kết luận

  9. Thiết lập môi trường:

Trước khi bắt đầu, hãy thiết lập môi trường cần thiết để phát triển và triển khai trình xác thực tùy chỉnh của chúng ta. Chúng ta cần cài đặt node Cabana, kết nối nó với testnetwork và cài đặt các công cụ cần thiết như Thống đốc, Chuỗi công cụ biểu tượng và Sổ ghi chép Jupiter. Ngoài ra, chúng ta có thể sử dụng Aiken CLI, cung cấp các thành phần này ngay lập tức. Bằng cách kết nối node Cabana và tạo không gian làm việc phát triển, chúng ta có thể tiến hành xây dựng trình xác thực tùy chỉnh của mình.

  1. Sửa mã Aiken:

Để tạo trình xác thực Plutus tùy chỉnh, chúng ta cần sửa đổi mã nguồn nằm trong thư mục trình xác thực. Bằng cách mở tệp hello_world.ak, chúng ta có thể thay đổi logic của trình xác thực. Aiken CLI cung cấp một môi trường thân thiện với người dùng với tính năng đánh dấu cú pháp và kiểm tra máy chủ ngôn ngữ. Chúng ta có thể tận dụng các tính năng này để đảm bảo mã của chúng ta không có lỗi và đáp ứng các yêu cầu. Khi các sửa đổi hoàn tất, chúng ta tiến hành bước tiếp theo.

  1. Chuyển đổi Icon Code thành UPLC:

Trước khi thực thi trình xác thực trên blockchain, chúng ta cần chuyển đổi mã Biểu tượng thành UPLC (Ngôn ngữ lập trình chung cho hợp đồng). Bước này liên quan đến việc chạy lệnh Kiểm tra biểu tượng để xác thực mã và thực hiện kiểm tra. Sau khi kiểm tra thành công, chúng ta sử dụng lệnh Icon build để tạo tệp JSON Plutus chứa đặc tả bản thiết kế cho mã của chúng ta. Tệp kế hoạch chi tiết này cung cấp tổng quan về mã được biên dịch và định nghĩa của miền Redeemer.

  1. Tạo địa chỉ tập lệnh và dữ liệu kiểm tra:

Vì chúng ta đang sử dụng ứng dụng khách Cabana để xây dựng và gửi giao dịch, chúng ta cần chuyển đổi tệp JSON Plutus thành định dạng tương thích với ứng dụng khách. Icon CLI cung cấp lệnh chuyển đổi bản thiết kế cho mục đích này. Bằng cách chuyển đổi tệp bản thiết kế, chúng ta có được tệp JSON tập lệnh phù hợp với yêu cầu của ứng dụng khách Cabana. Ngoài ra, chúng ta tạo địa chỉ tập lệnh bằng cách sử dụng lệnh địa chỉ Ican, lệnh này mô tả trình xác thực tùy chỉnh của chúng ta. Để kiểm tra trình xác thực của chúng ta, chúng ta tạo ví, tạo khóa bí mật và xác minh, đồng thời lấy dữ liệu thử nghiệm từ các faucet được chỉ định.

  1. Truy vấn ví và xây dựng Datum:

Để đánh giá nội dung trong ví của chúng ta, chúng ta sử dụng Econoclient để truy vấn UTXO (Đầu ra giao dịch chưa được xác định). Bằng cách chuyển địa chỉ của ví tới Econoclient, chúng ta truy xuất trạng thái của ví chứa thông tin về các UTXO mà nó nắm giữ. Chúng ta chọn một UTXO cụ thể làm Đầu vào cho giao dịch khóa của mình. Ngoài ra, chúng ta xây dựng Datum, một đối tượng JSON đặc biệt bao gồm thông tin về nội dung của chủ sở hữu. Datum này được thêm mã hash chính của ví và đóng vai trò là Đầu vào cho giao dịch tiếp theo.

  1. Xây dựng và đệ trình giao dịch:

Bây giờ, việc chuẩn bị của chúng ta đã hoàn tất, chúng ta có thể tiến hành xây dựng và gửi giao dịch khóa. Sử dụng lệnh áp dụng Cabana, chúng ta chỉ định UTXO Đầu vào, địa chỉ tập lệnh, lượng dữ liệu thử nghiệm sẽ được gửi và

bao gồm JSON Datum dưới dạng Datum nội tuyến. Tóm tắt giao dịch kết quả được hiển thị, hiển thị Đầu vào, Đầu ra và Datum đi kèm. Sau khi giao dịch được gửi thành công, chúng ta ký và gửi nó tới blockchain.

  1. Ký và Gửi Giao dịch Mở khóa:

Sau khi gửi thành công giao dịch khóa, chúng ta sẽ chờ xác nhận của nó trên blockchain. Sau khi giao dịch được ghi lại, chúng ta có thể tiến hành mở khóa nội dung bị khóa bởi trình xác thực tùy chỉnh của chúng ta. Chúng ta chọn UTXO mà chúng ta muốn mở khóa và tạo JSON Redeemer. Redeemer bao gồm thông báo tùy chỉnh theo yêu cầu của trình xác thực của chúng ta. Sau đó, chúng ta truy vấn ví để truy xuất UTXO thế chấp và các tham số giao thức cần thiết cho giao dịch. Với các thành phần này, chúng ta xây dựng giao dịch mở khóa bằng cách sử dụng lệnh áp dụng Cabana, đảm bảo bao gồm chữ ký của ví như một phần của quy trình xác thực. Cuối cùng, chúng ta ký và gửi giao dịch mở khóa, cho phép tài sản được trả lại ví.

  1. Kết luận:

Trong hướng dẫn này, chúng ta đã khám phá quy trình xây dựng trình xác thực Plutus tùy chỉnh và thực thi nó trên blockchain Biểu tượng bằng Aiken CLI. Chúng ta đã thực hiện các bước thiết lập môi trường, sửa đổi mã, chuyển đổi mã Biểu tượng thành UPLC, tạo địa chỉ tập lệnh và dữ liệu thử nghiệm, truy vấn ví cũng như xây dựng và gửi giao dịch. Bằng cách làm theo hướng dẫn này, các nhà phát triển có thể tận dụng Aiken CLI và hệ sinh thái Biểu tượng để tạo và triển khai các Trình xác thực tùy chỉnh của riêng họ, góp phần vào sự phát triển và đổi mới của các ứng dụng phi tập trung trên blockchain Biểu tượng.

Xem video

041007 - Live Q&A Session

PPP 041007 - Phiên hỏi đáp trực tiếp

Chào mừng bạn đến với phần tóm tắt và thông tin chi tiết về phiên Hỏi & Đáp trực tiếp cuối cùng của lần lặp lại này. Trong suốt phiên này, những người tham gia có cơ hội đặt câu hỏi, cung cấp phản hồi về Plutus Pioneer và thảo luận về các chủ đề khác nhau liên quan đến phát triển hợp đồng thông minh trên Cardano. Bài giảng này nhằm mục đích tóm tắt các điểm chính được thảo luận trong phiên họp và cung cấp những hiểu biết có giá trị cho độc giả. Chúng ta sẽ đề cập đến các chủ đề như quy trình phát triển của dự án stablecoin, việc sử dụng các tập lệnh tham chiếu, tác động của các ngôn ngữ lập trình khác nhau đối với tính xác định và bảo mật cũng như các khóa học và dịch vụ tiềm năng trong tương lai dành cho người tham gia. Hãy đi sâu vào các chi tiết của phiên đầy thông tin và hấp dẫn này.

Tóm tắt phiên hỏi đáp:

Phiên họp bắt đầu với một khoảng thời gian chờ đợi ngắn dành cho những người đến sau, nhưng ngay sau đó những người tham gia bắt đầu đặt câu hỏi và chia sẻ phản hồi của họ. Những người điều hành khuyến khích những người tham dự đặt câu hỏi hoặc cung cấp phản hồi về Plutus Pioneer. Họ cũng đề cập rằng những đóng góp từ những người tham gia như Robertino và Thomas đã nâng cao đáng kể tính đa dạng và chất lượng của phiên họp.

Câu hỏi đầu tiên hướng đến Robertino liên quan đến dự án stablecoin. Người tham gia đánh giá cao mức độ chi tiết ấn tượng trong dự án và hỏi về thời gian cần thiết để phát triển mã được trích dẫn. Robertino giải thích rằng anh ấy đã không bắt đầu từ đầu và sử dụng các hợp đồng thông minh hiện có do Sengun phát triển. Với một số thực hành và tinh chỉnh, anh ấy đã mất khoảng một tuần để viết mã cần thiết và đảm bảo giao diện người dùng thân thiện với người dùng. Quá trình này bao gồm các cân nhắc logic, thử nghiệm phù hợp và căn chỉnh mã off-chain với logic on-chain.

Một người tham gia khác đã hỏi về tính khả thi của việc sao chép và dán tập lệnh cuộc họp của trình xác thực từ mã Lucid vào TypeScript. Thomas đã cung cấp một giải pháp, giải thích rằng một người có thể đọc tập lệnh từ một tệp bằng các hàm không đồng bộ và phân tích cú pháp JSON. Cách tiếp cận này cho phép các nhà phát triển lặp lại và triển khai tập lệnh một cách dễ dàng cho mục đích thử nghiệm.

Sau đó, cuộc thảo luận chuyển sang tầm quan trọng của việc lưu trữ một số tập lệnh Plutus nhất định làm tập lệnh tham chiếu trên blockchain. Người hướng dẫn đã làm rõ rằng trong một số trường hợp, các tập lệnh được tham số hóa mang lại sự linh hoạt hơn, đặc biệt là khi áp dụng chúng cho các tình huống khác nhau hoặc khi tối ưu hóa chi phí cho các giao dịch của người dùng. Tập lệnh tham chiếu có thể hữu ích khi nhà phát triển muốn trang trải chi phí triển khai và giúp người dùng tương tác với tập lệnh rẻ hơn. Tuy nhiên, quyết định sử dụng tập lệnh tham chiếu phụ thuộc vào nhiều yếu tố khác nhau, chẳng hạn như mục đích sử dụng và khối lượng giao dịch.

Những người tham gia cũng bày tỏ mối quan tâm của chúng về độ tin cậy của các công cụ như Autonomy CLI và AP, cung cấp khả năng tối ưu hóa và biên dịch mã cho các hợp đồng thông minh Cardano. Người hướng dẫn thừa nhận câu hỏi hợp lệ và nhấn mạnh tầm quan trọng của sự tin tưởng khi sử dụng các công cụ này. Mặc dù chúng coi những công cụ này là đáng tin cậy, nhưng chúng thừa nhận sự cần thiết phải xem xét kỹ lưỡng và xác nhận thêm. Khả năng khám phá các công cụ thay thế, chẳng hạn như Helios PT, cũng đã được đề cập.

Phiên tiếp tục với một câu hỏi liên quan đến tác động của việc sử dụng các ngôn ngữ lập trình hướng đối tượng biên dịch thành Plutus đối với tính quyết định và bảo mật của Cardano. Những người điều hành thừa nhận rằng mặc dù lập trình Hàm được biết là đóng góp vào thuyết quyết định, nhưng việc sử dụng các ngôn ngữ lập trình hướng đối tượng cho phép khả năng tiếp cận rộng hơn và phục vụ cho các sở thích khác nhau. Họ đồng ý rằng trong một Script lý tưởng, mọi thứ sẽ được viết bằng Haskell hoặc một ngôn ngữ lập trình Hàm tương tự. Tuy nhiên, sự đánh đổi giữa khả năng tiếp cận và các mô hình lập trình Hàm là cần thiết để tiếp cận nhiều đối tượng hơn.

Thông tin chi tiết và ưu đãi trong tương lai:

Khi phiên hỏi đáp diễn ra, những người điều hành đã nhận được phản hồi tích cực từ Willem, bày tỏ lòng biết ơn về trải nghiệm tổng thể. Phản hồi này đã khuyến khích người điều hành xem xét các dịch vụ mới dành cho những người tham gia đã hoàn thành nhiều lần lặp lại và đã quen thuộc với những điều cơ bản. Họ đã thảo luận về khả năng của một khóa học theo nhịp độ riêng bao gồm các chủ đề, ứng dụng và ví dụ nâng cao hơn. Mục đích là tạo ra một luồng riêng biệt phục vụ cho những người tham gia hiểu sâu hơn về sự phát triển của Cardano.

Xem video