Giới thiệu 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ữ dành riêng cho miền đượ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 tương tác với blockchain.
Ngôn ngữ lập trình và ngôn ngữ dành riêng cho miền
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à 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 dành riêng cho miền (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 tôi 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ế loại bỏ những khả năng đó ra khỏi ngôn ngữ. Bằng cách làm này, chúng tôi 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 tôi 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 tôi muốn hay không: ví dụ: trong trường hợp hợp đồng Marlowe, chúng tôi 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 tôi 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 tôi đảm bảo rằng hợp đồng mà chúng tôi đã 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 tôi cũng đã phát triển một môi trường JavaScript cho Marlowe. Sân chơi Marlowe, công cụ trực tuyến giúp bạn xây dựng hợp đồng Marlowe, hỗ trợ cả hai, cũng như một cách trực quan để viết Marlowe.
Tóm lại 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 phổ biến trong thập kỷ qua, cung cấp phần mềm hợp đồng trong lĩnh vực tài chính. Trong quá trình phát triển Marlowe, chúng tôi đã điều chỉnh các ngôn ngữ này để hoạt động trên blockchain. Marlowe được triển khai trên chuỗi khối 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 - platform agnostic” 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 máy khách cho phép bạn chạy các hợp đồng Marlowe trên chuỗi: nó có sẵn dưới dạng nguyên mẫu và hiện sẽ chạy "trực tiếp" trên chính chuỗi khối Cardano.
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ờ (Timeouts), đặt cọc (deposits) và cam kết (commitments)
Điểm khác biệt của chúng tôi so với các phương pháp tiếp cận non-blockchain là ở cách chúng tôi đảm bảo rằng hợp đồng được tuân thủ. Điều này không những giúp các hướng dẫn của hợp đồng luôn được thực hiện - “không có gì xấu xảy ra” - mà còn chắc chắn rằng những người tham gia và không bỏ đi sớm, để tiền bị khóa trong hợp đồng mãi mãi: “ những điều tốt đẹp thực sự xảy ra ”. Chúng tôi làm điều này bằng cách sử dụng thời gian chờ (timeouts).
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 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 việc 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 lại hoặc chấm dứt . Vì vậy, bất kỳ khoản tiền nào mà 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 tôi dễ dàng đọc ra khỏi hợp đồng khi hợp đồng sẽ chấm dứt, chúng tôi gọi đây là thời gian tồn tại (lifetime) 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 tôi, 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 hành động 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 trong hành động
Chúng tôi đang làm việc trên bản phát hành sản xuất của Marlowe trên chuỗi khối Cardano vào đầu năm 2023. 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. Đây cũng sẽ bao gồm các thông tin 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 tôi 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.
Vì Marlowe là DSL nên chúng tôi 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 tôi 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 tôi 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 tôi cũng đang làm việc chung với Phòng thí nghiệm R&D Blockchain tiên tiến 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 chuỗi khối 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 tôi 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 chuỗi khối Cardano Trong bài báo này, chúng tôi 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 tôi đư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
Sân chơi Marlowe 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 chuỗi khối Cardano; hiện đang ở dạng nguyên mẫu.
Kho lưu trữ github của Marlowe mà từ đó bạn có thể tải xuống Marlowe.
Trang đích của Trang web Marlowe cho tất cả mọi thứ Marlowe.
Video
Danh sách phát trên YouTube: Marlowe: hợp đồng tài chính trên blockchain . Giới thiệu chung về Marlowe từ tháng 10 năm 2020. Một số tính năng của Sân chơi đã được cập nhật kể từ đó.
Last updated