tx · Ay8wNqxsfK2U96xXWby59XxzBUJ1xFCQE3gsxnmAooxu

3N9kWNVas9Zo6jPdAeY5PJYQ3EC4yeNqwRu:  -0.01400000 Waves

2021.01.23 17:11 [1366259] smart account 3N9kWNVas9Zo6jPdAeY5PJYQ3EC4yeNqwRu > SELF 0.00000000 Waves

{ "type": 13, "id": "Ay8wNqxsfK2U96xXWby59XxzBUJ1xFCQE3gsxnmAooxu", "fee": 1400000, "feeAssetId": null, "timestamp": 1611411058000, "version": 2, "chainId": 84, "sender": "3N9kWNVas9Zo6jPdAeY5PJYQ3EC4yeNqwRu", "senderPublicKey": "7yUTF1W9LFP1DUSp158Ai5qKPqiGt5RHPuPw1fnsBWPB", "proofs": [ "5H4GjcAh1qv1WUkHv3tFQCHG8nAxrwZ1mbY9RfJhLSqGzQQURcRzp85HfAPCC6nTquTiRc5qxooF9vmtqzv7yDka", "iBX8w4DhkopKwhor1sLyrUJLrDucuBpLPSo8FrMckqjipeUv5bB9oGQcziXXnFnHZX3ZiT1WARoYRpxXW8fPXZV" ], "script": "base64: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", "height": 1366259, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8xmcMYk7VsLBzRXMmVUBpyHdPdpitEpSiX5C3xZdCBjw Next: none Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let digiliraPay = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
3+let digiliraPay = base58'4snGCeL4Wjopx9awWd7pfdqUYyN1CLqbPz66bn7VY8oe'
4+let gateway = base58'ActWMpdeyp8YHRhLxXmwdJmr37VXGgb44m8DuSVJW3k1'
5+let sponsorToken = base58'HLfv6YiY1ZpDktcKL9R79FTcez9WdMjaeMWxhREGcAqr'
6+let paymentToken = base58'HDBmVe4MFyVdh1Jy48m9XqXiHAVuNbwFB8dPskVMHS6B'
7+let recoveryToken = base58'HL1XtTLSdKMxB8LrkRYszqwtiSRepGTBBdnyrCqgaEVX'
8+let proxyWaves = base58'WAVES'
9+let recovery1 = base58'4snGCeL4Wjopx9awWd7pfdqUYyN1CLqbPz66bn7VY8oe'
10+let recovery2 = base58'ActWMpdeyp8YHRhLxXmwdJmr37VXGgb44m8DuSVJW3k1'
11+let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt'
12+let banned = 403000
13+let KYCPending = 0
14+let nonFungibleBlock = 50
15+let transferBlock = 100
16+let paymentBlock = 200
17+let fundBlock = 300
18+let paymentFundBlock = 400
19+let upperBlock = 500
420 match tx {
521 case w: TransferTransaction =>
6- if (isDefined(w.assetId))
7- then true
8- else if ((w.recipient == addressFromPublicKey(digiliraPay)))
9- then true
10- else throw("Unfortunately you can only send waves to issuer..")
22+ let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes))
23+ let isUser = getInteger(addressFromPublicKey(digiliraPay), toBase58String(addressFromRecipient(w.recipient).bytes))
24+ let feeToken = w.feeAssetId
25+ let feeAmount = w.fee
26+ let asset = valueOrElse(w.assetId, proxyWaves)
27+ let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(asset))
28+ if (isDefined(isUser))
29+ then if (isDefined(feeToken))
30+ then if ((feeToken == sponsorToken))
31+ then if (isDefined(isAsset))
32+ then if ((isAsset == banned))
33+ then throw("This asset cannot be transfered.")
34+ else if (if ((valueOrElse(isAsset, banned) >= transferBlock))
35+ then (upperBlock >= valueOrElse(isAsset, banned))
36+ else false)
37+ then if (if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
38+ then (valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned))
39+ else false)
40+ then true
41+ else throw("To transfer this asset user permission must be set correctly.")
42+ else throw("Transfer is not available right now.")
43+ else true
44+ else if ((feeToken == paymentToken))
45+ then if ((w.recipient == addressFromPublicKey(gateway)))
46+ then if ((myStatus == KYCPending))
47+ then throw("KYC Pending")
48+ else if ((myStatus == banned))
49+ then throw("Account has been banned payment option is disabled.")
50+ else if ((feeAmount > 10))
51+ then throw("Not allowed")
52+ else if ((isAsset == banned))
53+ then throw("This asset has been locked")
54+ else if (if (if ((valueOrElse(isAsset, banned) >= paymentBlock))
55+ then (fundBlock >= valueOrElse(isAsset, banned))
56+ else false)
57+ then true
58+ else if ((valueOrElse(isAsset, banned) >= paymentFundBlock))
59+ then (upperBlock >= valueOrElse(isAsset, banned))
60+ else false)
61+ then if ((valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned)))
62+ then true
63+ else throw("You can hold this token but you cannot use it for payments.")
64+ else throw("This asset cannot be used for payments.")
65+ else throw("Unfortunately you can only use this token for payment transfers.")
66+ else if ((feeToken == recoveryToken))
67+ then if ((w.recipient == addressFromPublicKey(gateway)))
68+ then if ((myStatus == banned))
69+ then {
70+ let recovery1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1))
71+ then 1
72+ else 0
73+ let recovery2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], recovery2))
74+ then 1
75+ else 0
76+ let recovery3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3))
77+ then 1
78+ else 0
79+ if ((((recovery1Signed + recovery2Signed) + recovery2Signed) >= 2))
80+ then true
81+ else throw("Unauthorized")
82+ }
83+ else throw("Unauthorized")
84+ else throw("Unauthorized")
85+ else if (isDefined(isAsset))
86+ then if ((isAsset == banned))
87+ then throw("This asset cannot be transfered.")
88+ else if (if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
89+ then (valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned))
90+ else false)
91+ then true
92+ else throw("You can hold this token but you cannot transfer to another user.")
93+ else true
94+ else if (isDefined(isAsset))
95+ then if ((valueOrElse(isAsset, 0) == banned))
96+ then throw("Can not transfer this asset")
97+ else if (if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
98+ then (valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned))
99+ else false)
100+ then true
101+ else throw("You can hold this token but you cannot transfer to another user.")
102+ else true
103+ else if (isDefined(isAsset))
104+ then if (if ((valueOrElse(isAsset, banned) >= transferBlock))
105+ then (fundBlock >= valueOrElse(isAsset, banned))
106+ else false)
107+ then true
108+ else throw("Cannot transfer this token to none DigiliraPay users.")
109+ else if (isDefined(feeToken))
110+ then if ((feeToken == sponsorToken))
111+ then throw("Cannot use this token for none DigiliraPay users transfers.")
112+ else if ((feeToken == paymentToken))
113+ then throw("Unfortunately you can only use this token for payments")
114+ else true
115+ else true
11116 case x: Order|LeaseTransaction|BurnTransaction =>
12117 false
13118 case t: DataTransaction|ExchangeTransaction|SetScriptTransaction =>
14119 sigVerify(t.bodyBytes, t.proofs[1], digiliraPay)
120+ case mtt: MassTransferTransaction =>
121+ false
15122 case _ =>
16123 true
17124 }

github/deemru/w8io/873ac7e 
41.06 ms