SC CODE: Function Initialize(feeRecipientAddress String, feeBasisPoints Uint64) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF EXISTS("merchant") THEN GOTO 200
30 IF feeBasisPoints > 10000 THEN GOTO 200
40 STORE("merchant", SIGNER())
50 IF feeBasisPoints > 0 THEN GOTO 70
60 STORE("feeRecipient", SIGNER())
65 GOTO 80
70 STORE("feeRecipient", ADDRESS_RAW(feeRecipientAddress))
80 STORE("feeBasisPoints", feeBasisPoints)
90 STORE("totalProcessed", 0)
100 STORE("totalFees", 0)
110 STORE("paymentCount", 0)
120 STORE("paused", 0)
130 RETURN 0
200 RETURN 1
End Function
Function Pay(invoiceId String) Uint64
10 IF DEROVALUE() == 0 THEN GOTO 200
20 IF LOAD("paused") == 1 THEN GOTO 200
30 DIM amount, fee, payout AS Uint64
40 LET amount = DEROVALUE()
50 LET fee = amount * LOAD("feeBasisPoints") / 10000
60 LET payout = amount - fee
70 IF payout > 0 THEN GOTO 80 ELSE GOTO 90
80 SEND_DERO_TO_ADDRESS(LOAD("merchant"), payout)
90 IF fee > 0 THEN GOTO 100 ELSE GOTO 110
100 SEND_DERO_TO_ADDRESS(LOAD("feeRecipient"), fee)
110 STORE("totalProcessed", LOAD("totalProcessed") + amount)
120 STORE("totalFees", LOAD("totalFees") + fee)
130 STORE("paymentCount", LOAD("paymentCount") + 1)
140 RETURN 0
200 RETURN 1
End Function
Function UpdateMerchant(newAddress String) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("merchant", ADDRESS_RAW(newAddress))
40 RETURN 0
200 RETURN 1
End Function
Function Pause() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("paused", 1)
40 RETURN 0
200 RETURN 1
End Function
Function Resume() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("paused", 0)
40 RETURN 0
200 RETURN 1
End Function
Function WithdrawTrapped(amount Uint64) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 SEND_DERO_TO_ADDRESS(LOAD("merchant"), amount)
40 RETURN 0
200 RETURN 1
End Function
Function GetStats() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 RETURN LOAD("totalProcessed")
200 RETURN 1
End Function |
| SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'Function Initialize(feeRecipientAddress String, feeBasisPoints Uint64) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF EXISTS("merchant") THEN GOTO 200
30 IF feeBasisPoints > 10000 THEN GOTO 200
40 STORE("merchant", SIGNER())
50 IF feeBasisPoints > 0 THEN GOTO 70
60 STORE("feeRecipient", SIGNER())
65 GOTO 80
70 STORE("feeRecipient", ADDRESS_RAW(feeRecipientAddress))
80 STORE("feeBasisPoints", feeBasisPoints)
90 STORE("totalProcessed", 0)
100 STORE("totalFees", 0)
110 STORE("paymentCount", 0)
120 STORE("paused", 0)
130 RETURN 0
200 RETURN 1
End Function
Function Pay(invoiceId String) Uint64
10 IF DEROVALUE() == 0 THEN GOTO 200
20 IF LOAD("paused") == 1 THEN GOTO 200
30 DIM amount, fee, payout AS Uint64
40 LET amount = DEROVALUE()
50 LET fee = amount * LOAD("feeBasisPoints") / 10000
60 LET payout = amount - fee
70 IF payout > 0 THEN GOTO 80 ELSE GOTO 90
80 SEND_DERO_TO_ADDRESS(LOAD("merchant"), payout)
90 IF fee > 0 THEN GOTO 100 ELSE GOTO 110
100 SEND_DERO_TO_ADDRESS(LOAD("feeRecipient"), fee)
110 STORE("totalProcessed", LOAD("totalProcessed") + amount)
120 STORE("totalFees", LOAD("totalFees") + fee)
130 STORE("paymentCount", LOAD("paymentCount") + 1)
140 RETURN 0
200 RETURN 1
End Function
Function UpdateMerchant(newAddress String) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("merchant", ADDRESS_RAW(newAddress))
40 RETURN 0
200 RETURN 1
End Function
Function Pause() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("paused", 1)
40 RETURN 0
200 RETURN 1
End Function
Function Resume() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 STORE("paused", 0)
40 RETURN 0
200 RETURN 1
End Function
Function WithdrawTrapped(amount Uint64) Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 IF SIGNER() != LOAD("merchant") THEN GOTO 200
30 SEND_DERO_TO_ADDRESS(LOAD("merchant"), amount)
40 RETURN 0
200 RETURN 1
End Function
Function GetStats() Uint64
10 IF DEROVALUE() > 0 THEN GOTO 200
20 RETURN LOAD("totalProcessed")
200 RETURN 1
End Function' Name:feeBasisPoints Type:uint64 Value:'250' Name:feeRecipientAddress Type:string Value:'dero1qyh48zrjre004kx6wnynl9xghfvjud6h6r27vnwfmqv2jw8f3aaayqgugv9va'] |