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ửi1000
Lovelace vào investortài khoản của, và sau đó ngay lập tức được thanh toáninvestor
đầ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ậyinvestor
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.
Đưa ra một biến thể của
zeroCouponBond
hợp đồng trong đó cần thiếtissuer
để đặ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ộtguarantor
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
Đư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.