Hiểu sâu hơn về lập trình Marlowe

Tìm hiểu cách tạo template của riêng bạn từ các hợp đồng Marlowe và cung cấp gợi ý cho người dùng bằng cách sử dụng siêu dữ liệu tùy chỉnh

Lặn sâu hơn vào Sân chơi Marlowe

Marlowe là một ngôn ngữ dành riêng cho miền (DSL) được nhúng trong Haskell, cung cấp các hợp đồng tài chính cho blockchain mà mọi người đều có thể viết mã. Nó là một nền tảng cho tài chính phi tập trung (DeFi) hỗ trợ cho vay trực tiếp, ngang hàng, hợp đồng chênh lệch (CFD) và các công cụ tương tự khác. Marlowe cho phép người dùng áp dụng kiến ​​thức chuyên môn về miền của họ để viết và quản lý các hợp đồng một cách thuận tiện mà không cần phải học quá nhiều liên quan đến phát triển phần mềm, blockchain hoặc hợp đồng thông minh.

Sân chơi Marlowe là môi trường hộp cát nơi bạn có thể thực hành viết các hợp đồng tài chính của mình. Sân chơi này cung cấp cho bạn lựa chọn làm việc trực tiếp bằng nhiều ngôn ngữ như chính Marlowe, JavaScript , Haskell hoặc Blockly , tùy thuộc vào ngôn ngữ bạn muốn sử dụng. Gần đây, chúng tôi đã thêm các tính năng mới vào Sân chơi Marlowe để xây dựng và chỉnh sửa các mẫu và tùy chỉnh siêu dữ liệu, cũng như tùy chọn tải xuống JSON mới cho chính các hợp đồng. Trong bài đăng này, chúng tôi xem xét kỹ hơn các tính năng mới này.

Từ hợp đồng đến mẫu

Với sự ra đời của Marlowe Run, chúng tôi đã mở rộng Sân chơi Marlowe để hỗ trợ những gì chúng tôi gọi là mẫu . Các mẫu này được triển khai bằng cách sử dụng phiên bản mở rộng của Marlowe (được gọi là Extended Marlowe, phiên bản có sẵn trong Sân chơi Marlowe). Các mẫu mới này sẽ có nghĩa là người dùng có thể dễ dàng sử dụng lại và sử dụng lại các hợp đồng cho các tình huống và bối cảnh khác nhau.

Marlowe mở rộng cung cấp tính linh hoạt cao hơn Marlowe đơn thuần (hoặc Core Marlowe). Các hợp đồng rất cụ thể và chỉ định thời gian chờ theo giá trị tuyệt đối, ban đầu thông qua số vị trí và gần đây hơn là sử dụng dấu thời gian chuẩn hóa (thời gian POSIX).

Ngoài ra, Marlowe Valuesthường được mã hóa cứng trong Marlowe, ngoại trừ những mã được chuyển thành Inputs. Ví dụ: bạn có thể triển khai một khoản vay cho ₳100hoặc một khoản yêu cầu người dùng cho vay bao nhiêu thông qua một Choicecông Whentrình xây dựng, nhưng chúng tôi không thể có hợp đồng Marlowe có thể tái sử dụng có thể được triển khai bất kỳ lúc nào và với bất kỳ thông số nhất định nào. Extended Marlowe giải quyết những hạn chế này bằng cách thêm tùy chọn bao gồm các tham số hợp đồng. Hiện tại, Marlowe mở rộng thực tế giống với Marlowe thuần túy ngoại trừ ở chỗ nó bao gồm hai hàm tạo phụ đại diện cho các tham số của mẫu :

  • SlotParam– có thể được viết thay cho thời gian chờ trong một Whencấu trúc
  • ConstantParam– là một loại Valuecấu trúc

Cả hai hàm tạo đều lấy, làm tham số duy nhất của chúng, một chuỗi dùng làm mã định danh cho tham số, ví dụ:

  • SlotParam "Payment deadline
  • ConstantParam "Price"

Hai tham số cùng loại (hoặc SlotParamhoặc ConstantParam) và có cùng số nhận dạng được coi là cùng một tham số, ngay cả khi chúng xuất hiện ở những nơi khác nhau.

Nếu hợp đồng chứa các tham số (nói cách khác, nếu đó là một mẫu ), thì người dùng sẽ được yêu cầu nhập giá trị cho các tham số đó trước khi bắt đầu mô phỏng hợp đồng hoặc trước khi triển khai hợp đồng trong Marlowe Run:

Hiểu sâu hơn về lập trình Marlowe

Hình 1. Hộp thoại mô phỏng

Lưu ý rằng đầu vào tham số mẫu giá trị trong hình không chỉ là một trường nhập số nguyên. Thay vào đó, nó mong đợi một số có số thập phân và nó có nhãn với ký hiệu tiền tệ cho biết rằng số được mong đợi đại diện cho một lượng ada. Quy tắc này cũng đúng cho các giá trị được yêu cầu thông qua một Choicetrong một Whencấu trúc. Ngoài ra, các lựa chọn không cần phải đại diện cho số lượng ada. Chúng có thể đại diện cho bất kỳ thứ gì, chẳng hạn như một tỷ lệ, như sau:

Hiểu sâu hơn về lập trình Marlowe

Hình 2. Hộp thoại hành động

Ngoài ra còn có các gợi ý cho mỗi tham số mà người dùng có thể hiển thị bằng cách nhấp vào dấu hỏi màu tím bên cạnh mỗi thuật ngữ. Văn bản trong gợi ý dành riêng cho mẫu hợp đồng và nó chứa văn bản được định dạng, ví dụ: văn bản in đậm , văn bản in nghiêng hoặc văn bản gạch chân.

Hiểu sâu hơn về lập trình Marlowe

Hình 3. Gợi ý tham số

Các hợp đồng do người dùng xác định có thể tùy chỉnh tất cả các chi tiết này thông qua việc sử dụng siêu dữ liệu . Chúng ta hãy xem cách này được thực hiện như thế nào.

Tùy chỉnh siêu dữ liệu

Có một tab Siêu dữ liệu ở cuối mỗi trình chỉnh sửa trong Sân chơi Marlowe. Ở đó, người dùng có thể tùy chỉnh siêu dữ liệu khi cần thiết. Ví dụ:

Hiểu sâu hơn về lập trình Marlowe

Hình 4. Tab siêu dữ liệu

Có một số siêu dữ liệu cơ bản mà mọi hợp đồng dự kiến ​​sẽ bao gồm, chẳng hạn như:

  • Loại hợp đồng – Đây là loại hợp đồng nào? Danh mục này sẽ giúp phân loại các hợp đồng để chúng dễ dàng tìm kiếm hơn trong tương lai. Hiện tại, có rất ít danh mục có sẵn, nhưng chúng tôi sẽ bổ sung thêm trong tương lai. Nếu không có danh mục nào phù hợp với hợp đồng của bạn, bạn luôn có thể chọn “Khác”.
  • Tên hợp đồng – Chỉ là một cái tên ngắn gọn để xác định hợp đồng.
  • Mô tả ngắn về hợp đồng – Mô tả rất ngắn gọn để hiển thị trong danh sách.
  • Mô tả dài hợp đồng – Mô tả chi tiết hơn sẽ được hiển thị sau mô tả ngắn trong trường hợp người dùng đã chọn mẫu và muốn biết thêm (ví dụ: khi tạo hợp đồng trong Marlowe Run).

Lưu ý rằng văn bản trong mô tả hỗ trợ sử dụng một số chức năng định dạng có trong Markdown. Ví dụ: thêm hai dấu hoa thị trước và sau một phần của văn bản mô tả sẽ làm cho văn bản đó được in đậm khi mô phỏng hợp đồng, như chúng ta đã thấy trong phần trước. Theo cách này, văn bản thuần túy:

Số tiền * * tiền * * phải trả

sẽ được hiển thị dưới dạng

Số tiền phải trả

Chúng tôi khuyên bạn nên sử dụng chức năng này để làm nổi bật những từ khóa nào đại diện cho các thực thể có ý nghĩa đặc biệt trong ngữ cảnh của hợp đồng, chẳng hạn như tên của các vai trò hoặc lựa chọn, chẳng hạn.

Tab siêu dữ liệu cũng hỗ trợ chỉ định gợi ý cho các vai trò, lựa chọn, vị trí và tham số giá trị được xác định trong hợp đồng, cũng như định dạng cho các lựa chọn và tham số giá trị.

Thông số vai trò hoặc lựa chọn, vị trí hoặc giá trị mới được thêm vào hợp đồng sẽ xuất hiện trong tab Siêu dữ liệu với màu đỏ. Trong trường hợp của trình chỉnh sửa Haskell và JavaScript, có thể cần phải biên dịch mã thành công trước khi điều này xảy ra.

Hiểu sâu hơn về lập trình Marlowe

Hình 5. Tab siêu dữ liệu – thêm các mục siêu dữ liệu

Nhấn nút “+” màu đỏ sẽ tạo mục nhập siêu dữ liệu mới cho mục nhất định. Theo cách tương tự, nếu vai trò, sự lựa chọn hoặc thông số vị trí hoặc giá trị ngừng được sử dụng trong hợp đồng, siêu dữ liệu hiện có sẽ được gắn cờ màu đỏ để xóa và người dùng phải nhấn nút “-” để xóa mục nhập siêu dữ liệu khỏi hợp đồng.

Hiểu sâu hơn về lập trình Marlowe

Hình 6. Tab siêu dữ liệu – xóa các mục nhập siêu dữ liệu

Ngoài mô tả, trong các trường hợp lựa chọn và tham số giá trị, người dùng có thể tùy ý chỉ định định dạng cho số mà họ muốn người dùng cuối cung cấp. Để làm điều đó, hãy chọn “Số tiền điểm cố định” từ menu thả xuống. Điều này sẽ cung cấp hai trường bổ sung:

  • Số chữ số thập phân cho giá trị (dưới cùng bên trái) – các số trong Marlowe bên trong luôn là số nguyên, nhưng để thuận tiện, người dùng có thể nhập số dưới dạng điểm cố định. Ví dụ: lượng ada của Marlowe được biểu thị bằng lovelace (một phần triệu ada) nhưng nói chung, người dùng cuối thích làm việc với lượng ada hơn (vì chúng dễ đọc hơn). Các nhà phát triển có thể hỗ trợ điều này bằng cách viết 6 dưới dạng số chữ số thập phân. Do đó, người dùng cuối sẽ thấy dấu phân tách thập phân ở vị trí thứ 6, mặc dù nội bộ hợp đồng vẫn hoạt động với lovelace (đơn vị quảng cáo).
  • Nhãn tiền tệ cho giá trị (dưới cùng bên phải) – nhà phát triển cũng có thể hiển thị ký hiệu tiền tệ gần hộp nhập giá trị như một gợi ý cho người dùng cuối về đơn vị số tiền mà chúng tôi mong đợi từ họ. Ví dụ, trong trường hợp của ada, chỉ cần viết ký hiệu ada là “₳”.
Hiểu sâu hơn về lập trình Marlowe

Hình 7. Định dạng số

Cuối cùng, thứ tự của các tham số là quan trọng. Ví dụ: hãy tưởng tượng một số thông số vị trí để người dùng cuối chọn. Sẽ là hợp lý nếu hiển thị các thông số đó theo thứ tự thời gian.

Để sắp xếp siêu dữ liệu, hãy kéo các mục nhập theo thứ tự mong muốn, ví dụ:

Hiểu sâu hơn về lập trình Marlowe

Hình 8. Thứ tự siêu dữ liệu

Thứ tự của các tham số trong siêu dữ liệu sẽ được sử dụng để tạo biểu mẫu được hiển thị ở phần đầu của mô phỏng hoặc thực hiện hợp đồng.

Phần kết luận

Với mẫu mới và tiện ích mở rộng siêu dữ liệu cho Marlowe, các nhà phát triển hợp đồng giờ đây có thể cung cấp các gợi ý và thông số để giúp người dùng cuối sử dụng lại hợp đồng đó dễ dàng hơn trong một số trường hợp mà không cần phải hiểu cách triển khai đầy đủ và các chi tiết của hợp đồng.

Đây chỉ là một số cải tiến mới mà nhóm Marlowe tiếp tục thực hiện và chúng tôi mong sớm được chia sẻ thông tin chi tiết về các cải tiến khác.

Để tìm hiểu thêm về các bản phát hành sắp tới của Marlowe và các tính năng mới, hãy theo dõi các kênh truyền thông xã hội của chúng tôi hoặc kênh Marlowe Discord mới để biết thêm thông tin. Ngoài ra, hãy theo dõi để biết thông tin chi tiết về Chương trình Tiên phong Marlowe đầu tiên của chúng tôi sẽ sớm ra mắt!

Tổng hợp

Comments (No)

Leave a Reply