Skip to main content

Bài 12: ACTUS và Marlowe

Hướng dẫn này giới thiệu về ý tưởng chung của các tiêu chuẩn ACTUS để trình bày theo thuật toán của các hợp đồng tài chính, cùng với các ví dụ được triển khai trong Marlowe.

thực thi

Quỹ Nghiên cứu Tài chính ACTUS https://www.actusfrf.org đã tạo ra một tiêu chuẩn cho các hợp đồng tài chính, được phân loại theo phương pháp phân loại và được mô tả trong một đặc điểm kỹ thuật chi tiết.

Các tiêu chuẩn ACTUS được xây dựng dựa trên sự hiểu biết rằng hợp đồng tài chính là các thỏa thuận pháp lý giữa hai (hoặc nhiều) đối tác về việc trao đổi các dòng tiền trong tương lai. Về mặt lịch sử, các thỏa thuận pháp lý như vậy được mô tả bằng ngôn ngữ tự nhiên dẫn đến sự mơ hồ và đa dạng giả tạo. Để đáp ứng, các tiêu chuẩn ACTUS xác định các hợp đồng tài chính bằng một tập hợp các điều khoản hợp đồng và các chức năng xác định ánh xạ các điều khoản này với các nghĩa vụ thanh toán trong tương lai. Qua đó, có thể mô tả phần lớn các công cụ tài chính thông qua một bộ tương ứng gồm hơn 30 Loại hợp đồng hoặc mẫu mô-đun.

Các đặc tả ACTUS cung cấp nhiều bài tập để triển khai trong Marlowe và chúng ta minh họa một cách tiếp cận điều này trong ví dụ sau.

Ví dụ về trái phiếu phiếu giảm giá đơn giản

Trái phiếu không phiếu giảm giá là một chứng khoán nợ không phải trả lãi (phiếu giảm giá) nhưng được phát hành với giá chiết khấu, mang lại lợi nhuận khi đáo hạn khi trái phiếu được mua lại cho đủ mệnh giá của nó.

Ví dụ, một người investorcó thể mua một trái phiếu có giá 1000 Lovelace với chiết khấu 15%. Cô ấy trả 850 Lovelace cho công ty phát hành trái phiếu trước thời gian bắt đầu, tại đây 10.

Sau đó, sau ngày đáo hạn, thời gian 20ở đây, nhà đầu tư có thể đổi trái phiếu lấy danh nghĩa đầy đủ của nó, tức là 1000 Lovelace.

When [
(Case
(Deposit
"investor"
"investor" ada
(Constant 850))
(Pay
"investor"
(Party "issuer") ada
(Constant 850)
(When [
(Case
(Deposit
"investor"
"issuer" ada
(Constant 1000))
(Pay
"investor"
(Party "investor") ada
(Constant 1000)
Close))
]
20
Close)))
]
10
Close

Hợp đồng này có một nhược điểm đáng kể. Khi người đó investor đã đặt cược 850 Lovelace, nó sẽ được thanh toán ngay lập tức cho issuer (nếu người investor đó không đầu tư đúng lúc, hợp đồng sẽ kết thúc). Sau đó, hai kết quả có thể xảy ra

  • Số issuer tiền gửi 1000 Lovelace vào investortài khoản của, và sau đó ngay lập tức được thanh toán investor đầy đủ;
  • Nếu investor không đặt cược, thì hợp đồng được đóng và tất cả số tiền trong hợp đồng sẽ được hoàn trả, nhưng không có tiền trong hợp đồng vào thời điểm này, vì vậy investor mất tiền.

Làm thế nào chúng ta có thể tránh được vấn đề issuer mặc định này?

Có ít nhất hai cách để giải quyết vấn đề này: chúng ta có thể yêu cầu người issuer đặt cược toàn bộ số tiền trước khi hợp đồng bắt đầu, nhưng điều đó sẽ đánh bại đối tượng phát hành trái phiếu ngay từ đầu. Thực tế hơn, chúng ta có thể yêu cầu một bên thứ ba làm người bảo lãnh cho thỏa thuận.

Bài tập
  • Đưa ra một biến thể của zeroCouponBond hợp đồng trong đó cần thiết issuer để đặt toàn bộ giá trị của khoản tiền trước khi trái phiếu được phát hành.

  • Đưa ra một biến thể của zeroCouponBond hợp đồng cũng bao gồm một guarantor người thanh toán đầy đủ trước khi trái phiếu được phát hành và người sẽ thanh toán cho bên đối tác đó nếu nhà phát hành vỡ nợ; nếu người phát hành thực hiện thanh toán đúng hạn, thì người bảo lãnh sẽ thu hồi tiền của họ.

Ví dụ về trái phiếu phiếu giảm giá được đảm bảo

Trái phiếu phức tạp hơn này liên quan đến một investorngười đặt cược 1000 Lovelace, ngay lập tức được thanh toán cho issuer. Sau issuer đó, phải trả 10 Lovelace lãi suất cho mỗi 10 slot. Khi đáo hạn, nhà đầu tư sẽ nhận lại tiền lãi cộng với toàn bộ giá trị của trái phiếu.

couponBondFor3Month12Percent =
-- investor deposits 1000 Lovelace
When [ Case (Deposit "investor" "investor" ada (Constant 1000))
*-- and pays it to the issuer*
(Pay "investor" (Party "issuer") ada (Constant 1000)
-- after 10 slots expect to receive 10 Lovelace interest
(When [ Case (Deposit "investor" "issuer" ada (Constant 10))
-- and pay it to the investor
(Pay "investor" (Party "investor" ) ada (Constant 10)
-- same for 2nd 10 slots
(When [ Case (Deposit "investor" "issuer" ada (Constant 10))
(Pay "investor" (Party "investor" ) ada (Constant 10)
-- after maturity date investor
-- expects to receive notional + interest payment
(When [ Case (Deposit "investor" "issuer" ada (Constant 1010))
(Pay "investor" (Party "investor" ) ada (Constant 1010) Close)]
(Slot 40)
Close))]
(Slot 30)
Close))]
(Slot 20)
Close))]
(Slot 10)
Close
Bài tập

Đưa ra một biến thể của zcouponBondFor3Month12Percent hợp đồng cũng bao gồm một guarantor người thanh toán đầy đủ trước khi trái phiếu được phát hành và người sẽ thanh toán cho bên đối tác đó nếu nhà phát hành vỡ nợ; nếu người phát hành thực hiện thanh toán đúng hạn, thì người bảo lãnh sẽ thu hồi tiền của họ.

IOHK có kế hoạch triển khai tiêu chuẩn ACTUS đầy đủ bằng cách sử dụng Marlowe và Plutus trong năm tới.


Picture