Skip to content

Instantly share code, notes, and snippets.

@acidjunk
Last active February 20, 2023 11:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acidjunk/3f72ffd5d4a21b6ffe0a91478b651bbc to your computer and use it in GitHub Desktop.
Save acidjunk/3f72ffd5d4a21b6ffe0a91478b651bbc to your computer and use it in GitHub Desktop.
KPI contract
{"valueParameterInfo":[["Price",{"valueParameterFormat":{"contents":[6,"₳"],"tag":"DecimalFormat"},"valueParameterDescription":"The price of the item."}]],"timeParameterDescriptions":[["Payment deadline","The _**buyer**_ must pay the _price_ of the item by this time, otherwise the contract is cancelled."],["Complaint deadline","The _**buyer**_ can only complain until this deadline, otherwise the contract will assume the transaction went smoothly and pay the _**seller**_."],["Complaint response deadline","If the _**buyer**_ complained, the _**seller**_ must respond before this deadline, otherwise the contract will assume there was a problem with the transaction and refund the _**buyer**_."],["Mediation deadline","If the _**buyer**_ and the _**seller**_ disagree, the _**mediator**_ must weigh in before this deadline, otherwise the contract will assume there was a problem with the transaction and refund the _**buyer**_."]],"roleDescriptions":[["Buyer","The buyer of the item."],["Mediator","The mediator decides who is right in the case of dispute."],["Seller","The seller of the item."]],"contractType":"Escrow","contractShortDescription":"In this contract a _**seller**_ wants to sell an item (like a bicycle) to a _**buyer**_ for a _price_.","contractName":"Purchase","contractLongDescription":"Neither trusts each other, but they both trust a _**mediator**_. The _**buyer**_ pays the _price_ into the contract account: if both the _**buyer**_ and the _**seller**_ agree that the _**buyer**_ has received the item, then the _**seller**_ receives the _price_; if not, then the _**mediator**_ ensures that the _**buyer**_ gets their money back.","choiceInfo":[["Confirm problem",{"choiceFormat":{"contents":null,"tag":"DefaultFormat"},"choiceDescription":"Acknowledge there was a problem and a refund must be granted."}],["Dismiss claim",{"choiceFormat":{"contents":null,"tag":"DefaultFormat"},"choiceDescription":"The _**Mediator**_ does not see any problem with the exchange and the _**Seller**_ must be paid."}],["Dispute problem",{"choiceFormat":{"contents":null,"tag":"DefaultFormat"},"choiceDescription":"The _**Seller**_ disagrees with the _**Buyer**_ about the claim that something went wrong."}],["Everything is alright",{"choiceFormat":{"contents":null,"tag":"DefaultFormat"},"choiceDescription":"The transaction was uneventful, _**Buyer**_ agrees to pay the _**Seller**_."}],["Report problem",{"choiceFormat":{"contents":null,"tag":"DefaultFormat"},"choiceDescription":"The _**Buyer**_ claims not having received the product that was paid for as agreed and would like a refund."}]]}
When
[Case
(Deposit
(Role "Employee")
(Role "Employer")
(Token "" "")
(ConstantParam "Price")
)
(When
[Case
(Choice
(ChoiceId
"KPI reached"
(Role "Employer")
)
[Bound 0 8]
)
Close , Case
(Choice
(ChoiceId
"Report problem"
(Role "Employer")
)
[Bound 8 10]
)
(Pay
(Role "Employer")
(Account (Role "Employee"))
(Token "" "")
(ConstantParam "Price")
(When
[Case
(Choice
(ChoiceId
"Confirm problem"
(Role "Employer")
)
[Bound 8 10]
)
Close , Case
(Choice
(ChoiceId
"Dispute problem"
(Role "Employee")
)
[Bound 0 8]
)
(When
[Case
(Choice
(ChoiceId
"Dismiss claim"
(Role "Mediator")
)
[Bound 0 8]
)
(Pay
(Role "Employee")
(Party (Role "Employer"))
(Token "" "")
(ConstantParam "Price")
Close
), Case
(Choice
(ChoiceId
"Confirm problem"
(Role "Mediator")
)
[Bound 8 10]
)
Close ]
(TimeParam "Mediation deadline")
Close
)]
(TimeParam "Complaint response deadline")
Close
)
)]
(TimeParam "Complaint deadline")
Close
)]
(TimeParam "Payment deadline")
Close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment