Bài 1: Giới thiệu về Marlowe
Hướng dẫn này cung cấp tổng quan về các ý tưởng đằng sau Marlowe, như một ngôn ngữ ngành riêng biệt được nhúng trong Haskell. Nó cũng giới thiệu các cam kết và thời gian chờ, là trọng tâm của cách Marlowe hoạt động trong bối cảnh blockchain.
Ngôn ngữ lập trình và Ngôn ngữ ngành riêng biệt
Những chiếc máy tính đầu tiên được lập trình bằng “mã máy”. Mỗi loại hệ thống có một mã khác nhau, và những mã này ở mức thấp và không thể diễn tả được: các chương trình là một chuỗi dài các hướng dẫn rất đơn giản, không thể hiểu được đối với bất kỳ ai chưa viết chúng. Ngày nay chúng ta có thể sử dụng các ngôn ngữ cấp cao hơn như C, Java và Haskell để lập trình hệ thống. Các ngôn ngữ giống nhau có thể được sử dụng trên nhiều máy khác nhau và cấu trúc của các chương trình phản ánh những gì chúng thực hiện. Trên blockchain, các ngôn ngữ tương đương của chúng là các ngôn ngữ như Plutus, Solidity và Simplicity. Các ngôn ngữ cấp cao hơn này có mục đích chung - chúng có thể được sử dụng để giải quyết tất cả các loại vấn đề khác nhau - nhưng các giải pháp mà chúng thể hiện vẫn là các chương trình và chúng vẫn yêu cầu kỹ năng lập trình để sử dụng chúng một cách hiệu quả.
Ngược lại, Marlowe là một ngôn ngữ dành cho mục đích đặc biệt hoặc ngành riêng biệt (DSL) được thiết kế để một người là chuyên gia trong một lĩnh vực cụ thể có thể sử dụng được, chứ không yêu cầu kỹ năng lập trình để sử dụng nó. Trong trường hợp của Marlowe, lĩnh vực này là lĩnh vực của các hợp đồng tài chính.
Sử dụng DSL có nhiều lợi thế ngoài việc sử dụng bởi những người không phải là lập trình viên:
- Chúng ta có thể đảm bảo rằng một số loại chương trình tồi thậm chí không thể viết được, bằng cách thiết kế những khả năng đó ra khỏi ngôn ngữ. Bằng cách này, chúng ta có thể nhằm mục đích tránh một số khai thác không lường trước được, vốn là một vấn đề đối với các blockchain hiện tại.
- Chúng ta cũng có thể dễ dàng kiểm tra xem các chương trình có thuộc tính mà chúng ta muốn hay không: ví dụ: trong trường hợp hợp đồng Marlowe, chúng ta có thể đảm bảo rằng hợp đồng sẽ không bao giờ thất bại trong việc thanh toán.
- Vì nó là DSL, chúng ta có thể xây dựng các công cụ có mục đích đặc biệt để giúp mọi người viết chương trình bằng ngôn ngữ này. Trong trường hợp của Marlowe, chúng ta có thể mô phỏng cách một hợp đồng sẽ hoạt động như thế nào trước khi nó được thực thi trên blockchain; điều này giúp chúng ta đảm bảo rằng hợp đồng mà chúng ta đã viết đang thực hiện những gì nó dự định.
Marlowe cũng là một DSL được nhúng, được lưu trữ bằng ngôn ngữ lập trình Haskell. Mặc dù có thể sử dụng Marlowe “thuần túy” nếu chúng ta muốn, việc được nhúng trong một ngôn ngữ có mục đích chung cho phép người viết hợp đồng khai thác có chọn lọc các tính năng của Haskell trong việc viết các hợp đồng Marlowe, giúp chúng dễ đọc hơn và hỗ trợ việc sử dụng lại. Trên thực tế, Marlowe không bị ràng buộc với Haskell, và chúng ta cũng đã phát triển một môi trường JavaScript cho Marlowe. Marlowe Playground, công cụ trực tuyến giúp bạn xây dựng các hợp đồng Marlowe, hỗ trợ cả hai, cũng như một cách trực quan để viết Marlowe.
Ngắn gọn về Marlowe
Marlowe được mô phỏng dựa trên các ngôn ngữ hợp đồng tài chính có mục đích đặc biệt được các học giả và doanh nghiệp như LexiFi, công ty cung cấp phần mềm hợp đồng trong lĩnh vực tài chính phổ biến trong thập kỷ qua. Trong quá trình phát triển Marlowe, chúng ta đã điều chỉnh các ngôn ngữ này để hoạt động trên blockchain. Marlowe được triển khai trên blockchain Cardano, nhưng cũng có thể được triển khai trên Ethereum hoặc các nền tảng blockchain khác; về mặt này, nó là “nền tảng bất khả tri” giống như các ngôn ngữ lập trình hiện đại như Java và C ++. Mô phỏng trực tuyến Marlowe Playground cho phép bạn thử nghiệm, phát triển, mô phỏng và phân tích các hợp đồng Marlowe trong trình duyệt web của bạn mà không cần phải cài đặt bất kỳ phần mềm nào. Marlowe Run là ứng dụng khách cho phép bạn chạy các hợp đồng Marlowe trên chuỗi:
Hợp đồng Marlowe trông như thế nào? Nó được xây dựng bằng cách kết hợp một số lượng nhỏ các khối xây dựng mô tả việc thanh toán, quan sát điều gì đó trong “thế giới thực”, đợi cho đến khi một điều kiện nhất định trở thành sự thật, v.v.
Thời gian chờ, Đặt cược và Cam kết
Điểm khác biệt của chúng ta so với các phương pháp tiếp cận không phải blockchain là ở cách chúng ta đảm bảo rằng hợp đồng được tuân thủ. Điều này không chỉ có nghĩa là các hướng dẫn của hợp đồng không được tuân theo - “không có gì xấu xảy ra” - mà còn rằng những người tham gia tham gia và không bỏ đi sớm, để tiền mãi mãi bị khóa chặt trong hợp đồng: “ những điều tốt đẹp thực sự xảy ra ”. chúng ta làm điều này bằng cách sử dụng thời gian chờ.
Hợp đồng có thể yêu cầu người tham gia đặt cược một số khoản tiền, nhưng rõ ràng là hợp đồng không thể thực sự buộc người tham gia đặt cược. Thay vào đó, hợp đồng có thể đợi một khoảng thời gian để người tham gia cam kết với hợp đồng: khi khoảng thời gian đó hết hạn, hợp đồng sẽ chuyển sang thực hiện theo một số hướng dẫn thay thế. Điều này ngăn người tham gia dừng hợp đồng bằng cách không tham gia, do đó đảm bảo rằng "mọi thứ sẽ xảy ra".
Tất cả các cấu trúc của Marlowe yêu cầu sự tham gia của người dùng - bao gồm tiền gửi của người dùng và lựa chọn của người dùng - đều được bảo vệ bằng thời gian chờ. Do đó, có thể dễ dàng nhận thấy rằng cam kết của một bên tham gia đối với hợp đồng là hữu hạn : chúng ta có thể dự đoán khi nào thì hợp đồng sẽ không còn gì để làm - khi nào thì hợp đồng có thể được đóng lại. Tại thời điểm này, bất kỳ khoản tiền chưa sử dụng nào còn lại trong hợp đồng sẽ được hoàn trả cho người tham gia và hợp đồng dừng hoặc chấm dứt. Vì vậy, bất kỳ khoản tiền nào do người tham gia đưa vào hợp đồng không thể bị khóa mãi mãi : tại thời điểm này, cam kết sẽ kết thúc.
Hơn nữa, chúng ta dễ dàng đọc ra khỏi hợp đồng khi hợp đồng sẽ chấm dứt, chúng ta gọi đây là thời gian tồn tại của hợp đồng: do đó tất cả những người tham gia sẽ có thể tìm hiểu thời gian tồn tại này trước khi tham gia vào bất kỳ hợp đồng nào,
Trong mô hình của chúng ta, một hợp đồng đang chạy không thể buộc một khoản đặt cược hoặc một sự lựa chọn xảy ra: tất cả những gì nó có thể làm là yêu cầu một khoản đặt cược hoặc sự lựa chọn từ người tham gia. Nói cách khác, đối với những thực thi này, nó không thể “ đẩy ”, nhưng nó có thể “ kéo ”. Mặt khác, nó có thể thực hiện thanh toán tự động, vì vậy một số khía cạnh của hợp đồng Marlowe có thể “thúc đẩy” một số điều xảy ra, ví dụ: đảm bảo rằng một khoản thanh toán được thực hiện cho người tham gia bằng cách xây dựng một đầu ra giao dịch thích hợp.
Marlowe thực thi
Chúng ta đang làm việc trên một bản phát hành sản xuất của Marlowe trên blockchain Cardano vào đầu năm 2021. Từ hôm nay, bạn có thể tự mình khám phá Marlowe, bằng cách tải xuống và sử dụng triển khai Haskell trực tiếp hoặc bằng cách sử dụng công cụ mô phỏng Marlowe Playground trực tuyến; cả hai đều được đề cập trong các hướng dẫn tiếp theo. Những điều này cũng sẽ bao gồm các chi tiết về Marlowe, giới thiệu một loạt các ví dụ, tìm hiểu sâu hơn về các công cụ dành cho Marlowe.
chúng ta cũng đã làm việc để phát triển một bộ mẫu cho các công cụ tài chính phổ biến được lấy từ tiêu chuẩn Actus và có thể tạo các hợp đồng cụ thể từ các mẫu này theo các thông số và tùy chọn khác nhau có thể được thiết lập.
Bởi vì Marlowe là DSL, chúng ta có thể tìm ra cách các hợp đồng Marlowe sẽ hoạt động mà không cần chạy chúng: điều này có nghĩa là chúng ta có thể cung cấp các chẩn đoán có giá trị cho những người tham gia tiềm năng trước khi họ cam kết hợp đồng bằng cách sử dụng phân tích tĩnh. chúng ta cũng có thể sử dụng các công cụ logic để chính thức chứng minh các thuộc tính của hợp đồng Marlowe, mang lại cho người dùng mức độ đảm bảo cao nhất rằng hợp đồng của họ hoạt động như dự định.
Dựa trên nghiên cứu
Marlowe dựa trên nghiên cứu ban đầu, được đánh giá ngang hàng, được thực hiện bởi nhóm Marlowe, ban đầu tại Đại học Kent được hỗ trợ bởi khoản tài trợ nghiên cứu từ IOHK, và sau đó là nhóm kỹ sư nội bộ của công ty. chúng ta cũng đang hợp tác với Phòng thí nghiệm R&D Blockchain nâng cao của Wyoming (WABL) tại Đại học Wyoming. Nếu bạn muốn làm việc với chúng tôi, vui lòng liên hệ.
Công việc nghiên cứu của chúng tôi được báo cáo trong các bài báo đã xuất bản này.
- Marlowe: hợp đồng tài chính trên blockchain Bài báo giới thiệu ngôn ngữ Marlowe. Nó là một phiên bản cũ hơn, nhưng tuy nhiên nó giải thích các nguyên tắc và cơ sở lý luận đằng sau thiết kế và triển khai của nó.
- Marlowe: thực hiện và phân tích các hợp đồng tài chính trên blockchain Bài báo này mô tả việc triển khai Marlowe trên blockchain Cardano và phân tích được hỗ trợ bởi môi trường mô phỏng và phát triển dựa trên web Marlowe Playground.
- Phân tích tĩnh hiệu quả các hợp đồng Marlowe Bài báo này giải thích cách chúng ta tối ưu hóa phân tích tĩnh đã giải thích trong bài báo trước.
- Các khoản cho vay tiền điện tử được tiêu chuẩn hóa trên blockchain Cardano Trong bài báo này, chúng ta khám phá một khuôn khổ hợp đồng thông minh để xây dựng các khoản vay tiền điện tử được tiêu chuẩn hóa bằng cách sử dụng Marlowe, với tiêu chuẩn ACTUS làm cốt lõi của nó.
và trong bài khảo sát eprint này.
- Viết các hợp đồng thông minh cho công nghệ sổ cái phân tán Ở đây chúng ta đưa ra cái nhìn tổng quan về các ngôn ngữ kịch bản được sử dụng trong các loại tiền điện tử hiện có.
Tìm hiểu thêm
Hệ thống
- Marlowe Playground một môi trường phát triển, phân tích và mô phỏng trong trình duyệt.
- Marlowe Run ứng dụng khách người dùng cuối để tải xuống và chạy các hợp đồng Marlowe trên blockchain Cardano; hiện đang ở dạng nguyên mẫu.
- Kho lưu trữ Marlowe github mà từ đó bạn có thể tải xuống Marlowe.
- Marlowe Starter Kit Kho lưu trữ này chứa các bài học về cách sử dụng Marlowe qua REST và dòng lệnh CLI.
- Thực hành tốt nhất cho Marlowe trên Cardano
- Trang đích của Trang web Marlowe cho tất cả mọi thứ Marlowe.
Video