This is a payment contract that pays out a fixed amount each time a button is pressed.
This is template pays out a fixed amount each time a button is pressed.
It responds to:
- single press : increments a counter by 1
- double press : decrements a counter by 1
- long press : pays out based on the current counter and resets the counter to 0
Upon long button press, "Dan" shall pay to "Grant" 10 USD for each short button press. A maximum of 5 payments may be made before this contract is COMPLETED.
Note: to undo a short button press the buyer may double-press the button.
Upon long button press, "Dan" shall pay to "Grant" 10 USD for each short button press. A maximum of 5 payments may be made before this contract is COMPLETED.
Note: to undo a short button press the buyer may double-press the button.
Upon long button press, {{buyer}} shall pay to {{seller}} {{amountPerUnit}} for each short button press. A maximum of {{paymentCount}} payments may be made before this contract is COMPLETED.
Note: to undo a short button press the buyer may double-press the button.
{
"$class": "org.accordproject.payment.iot.PaymentUponButtonContract",
"buyer": "resource:org.accordproject.party.Party#Dan",
"seller": "resource:org.accordproject.party.Party#Grant",
"amountPerUnit": {
"$class": "org.accordproject.money.MonetaryAmount",
"doubleValue": 10,
"currencyCode": "USD"
},
"paymentCount": 5,
"contractId": "26e6ce86-69ee-4967-bc6f-ab422c382512",
"$identifier": "26e6ce86-69ee-4967-bc6f-ab422c382512"
}
namespace org.accordproject.payment.iot
import org.accordproject.contract.* from https://models.accordproject.org/accordproject/contract.cto
import org.accordproject.party.* from https://models.accordproject.org/accordproject/party.cto
import org.accordproject.runtime.* from https://models.accordproject.org/accordproject/runtime.cto
import org.accordproject.obligation.* from https://models.accordproject.org/accordproject/obligation.cto
import org.accordproject.money.MonetaryAmount from https://models.accordproject.org/money@0.2.0.cto
import org.accordproject.payment.PaymentReceived from https://models.accordproject.org/payment/payment@0.2.0.cto
import org.accordproject.signature.ContractSigned from https://models.accordproject.org/signature/signature@0.2.0.cto
import org.accordproject.iot.SingleButtonPress from https://models.accordproject.org/iot/iot.cto
import org.accordproject.iot.DoubleButtonPress from https://models.accordproject.org/iot/iot.cto
import org.accordproject.iot.LongButtonPress from https://models.accordproject.org/iot/iot.cto
asset CounterState extends State {
o ContractLifecycleStatus status
o Double counter
o Double paymentCount
}
enum ContractLifecycleStatus {
o INITIALIZED
o RUNNING
o COMPLETED
}
transaction CounterResponse extends Response {
o Double counter
o Double paymentCount
}
transaction MonetaryAmountPayment extends PaymentReceived {
o MonetaryAmount amount
}
/**
* The template model
*/
asset PaymentUponButtonContract extends Contract {
--> Party buyer
--> Party seller
o MonetaryAmount amountPerUnit
o Integer paymentCount
}