tx · Eqxpbmnww4kMtUmUjJ8Y3PgG8kfEuJGhVuMeM1qTtSWq

3NAWFr2qyF3KDr7koKfBrRsuttpUTHcgH1u:  -0.01400000 Waves

2021.02.23 11:34 [1410512] smart account 3NAWFr2qyF3KDr7koKfBrRsuttpUTHcgH1u > SELF 0.00000000 Waves

{ "type": 13, "id": "Eqxpbmnww4kMtUmUjJ8Y3PgG8kfEuJGhVuMeM1qTtSWq", "fee": 1400000, "feeAssetId": null, "timestamp": 1614069337000, "version": 1, "sender": "3NAWFr2qyF3KDr7koKfBrRsuttpUTHcgH1u", "senderPublicKey": "G9hEGAj9KbJrnsTpYDpMdxBW1AQABMUh6ud1fmzJg5cU", "proofs": [ "3g9aCFGqe5NHg99NS1ywhRNNYcHPNkkGcv9sDhMpZ3sesetZqruHo3bAGJN1eWUPn57E16eJfsVBRiJ8EVBJTkKC", "3hdyzaAY9GsQWdzF6ijhfyASzMBk4a7JWJuG5scqtryVVsW4Giztgn8DBgxEAfZrFEpSEAdNbWjVSxGgQpt1nN4x" ], "script": "base64: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BQAAAANmZWUCAAAAEyBmZWVBbW91bnQgaXMgd3JvbmcKAQAAAAlnZXRTdGF0dXMAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtkaWdpbGlyYVBheQkAAlgAAAABBQAAAANrZXkAAAAAAAAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF3BQAAAAckbWF0Y2gwBAAAAAhteVN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICAUAAAABdwAAAAZzZW5kZXIAAAAFYnl0ZXMEAAAAD3JlY2lwaWVudFN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICQAEJAAAAAEIBQAAAAF3AAAACXJlY2lwaWVudAAAAAVieXRlcwQAAAALYXNzZXRTdGF0dXMJAQAAAAlnZXRTdGF0dXMAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCAUAAAABdwAAAAdhc3NldElkBQAAAApwcm94eVdhdmVzBAAAABFkaWdpbGlyYVJlY2lwaWVudAkAAGYAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMAAAAAAAAAAAAEAAAADm15U3RhdHVzQmFubmVkCQAAAAAAAAIFAAAACG15U3RhdHVzBQAAAAZiYW5uZWQEAAAAFXJlY2lwaWVudFN0YXR1c0Jhbm5lZAkAAAAAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMFAAAABmJhbm5lZAQAAAARYXNzZXRTdGF0dXNCYW5uZWQJAAAAAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABmJhbm5lZAQAAAASaXNGZWVSZWNvdmVyeVRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADXJlY292ZXJ5VG9rZW4EAAAAEmlzUmVjaXBpZW50R2F0ZXdheQkAAAAAAAACCAUAAAABdwAAAAlyZWNpcGllbnQJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAB2dhdGV3YXkEAAAAEWlzRmVlUGF5bWVudFRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADHBheW1lbnRUb2tlbgQAAAARaXNGZWVTcG9uc29yVG9rZW4JAAAAAAAAAggFAAAAAXcAAAAKZmVlQXNzZXRJZAUAAAAMc3BvbnNvclRva2VuBAAAABBpc0V4Y2x1c2l2ZVRva2VuCQAAAAAAAAIFAAAAD2RpZ2lsaXJhUGF5T25seQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAEAAAAFmlzRGlnaWxpcmFQYXlFeGNsdXNpdmUJAABmAAAAAgUAAAAPZGlnaWxpcmFQYXlPbmx5CQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAQAAAAWcGVybWlzc2lvblRyYW5zZmVyVG9EUAMJAABmAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABmJhbm5lZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAAPcmVjaXBpZW50U3RhdHVzAAAAAAAAAAAABgkAAGYAAAACCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwUAAAAGYmFubmVkCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAhteVN0YXR1cwAAAAAAAAAAAAQAAAARcGVybWlzc2lvblBheW1lbnQDCQAAZgAAAAIFAAAACWZ1bmRCbG9jawkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAADHBheW1lbnRCbG9jawcEAAAAF3Blcm1pc3Npb25UcmFuc2Zlck5vdERQAwkAAGYAAAACBQAAAA10cmFuc2ZlckJsb2NrCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAYJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAAEHBheW1lbnRGdW5kQmxvY2sEAAAACmlzUmVjb3ZlcnkDAwMFAAAAEWRpZ2lsaXJhUmVjaXBpZW50BQAAABJpc0ZlZVJlY292ZXJ5VG9rZW4HBQAAABJpc1JlY2lwaWVudEdhdGV3YXkHBQAAAA5teVN0YXR1c0Jhbm5lZAcDAwUAAAAKaXNSZWNvdmVyeQkBAAAACHJlY292ZXJ5AAAAAAcGAwUAAAARZGlnaWxpcmFSZWNpcGllbnQEAAAABnByb2xvZwIAAAAjVHJhbnNmZXIgdG8gRGlnaWxpcmFQYXkgcmVjaXBpZW50OiADBQAAAA5teVN0YXR1c0Jhbm5lZAkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAgVGhpcyBhY2NvdW50IGhhcyBiZWVuIHN1c3BlbmRlZC4DBQAAABVyZWNpcGllbnRTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAJ1JlY2lwaWVudCdzIGFjY291bnQgaGFzIGJlZW4gc3VzcGVuZGVkLgMFAAAAEWFzc2V0U3RhdHVzQmFubmVkCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAABtBc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4DBQAAABZwZXJtaXNzaW9uVHJhbnNmZXJUb0RQCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAAD1Bc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4gUmVjaXBpZW50L1NlbmRlciBpcyBub3QgZWxpZ2libGUuAwUAAAAWaXNEaWdpbGlyYVBheUV4Y2x1c2l2ZQkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAXTm9uLVRyYW5zZmVyYWJsZSBUb2tlbi4DBQAAABJpc1JlY2lwaWVudEdhdGV3YXkDAwUAAAARcGVybWlzc2lvblBheW1lbnQGBQAAABBpc0V4Y2x1c2l2ZVRva2VuCQEAAAAIY2hlY2tGZWUAAAABBQAAAAF3CQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAACFBc3NldCBjYW5ub3QgYmUgdXNlZCBvbiBwYXltZW50cy4DBQAAABFpc0ZlZVBheW1lbnRUb2tlbgkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAdUGF5bWVudCBUb2tlbiBjYW5ub3QgYmUgdXNlZC4JAQAAAAhjaGVja0ZlZQAAAAEFAAAAAXcEAAAABnByb2xvZwIAAAAnVHJhbnNmZXIgdG8gbm90IERpZ2lsaXJhUGF5IHJlY2lwaWVudDogAwUAAAARaXNGZWVQYXltZW50VG9rZW4JAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAHVBheW1lbnQgVG9rZW4gY2Fubm90IGJlIHVzZWQuAwUAAAAObXlTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYWNjb3VudCBoYXMgYmVlbiBzdXNwZW5kZWQuAwUAAAAXcGVybWlzc2lvblRyYW5zZmVyTm90RFAJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYXNzZXQgY2Fubm90IGJlIHRyYW5zZmVyZWQuCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAQAAAACczEDCQAB9AAAAAMIBQAAAAF0AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAABdAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAF0AAAAD3NlbmRlclB1YmxpY0tleQAAAAAAAAAAAQAAAAAAAAAAAAQAAAACczIDCQAB9AAAAAMIBQAAAAF0AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAABdAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAAC2RpZ2lsaXJhUGF5AAAAAAAAAAABAAAAAAAAAAAAAwkAAAAAAAACCQAAZAAAAAIFAAAAAnMxBQAAAAJzMgAAAAAAAAAAAgYJAAACAAAAAQIAAAAXSW50ZWdyaXR5IENoZWNrIEZhaWxlZCEDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFkxlYXNlQ2FuY2VsVHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAEExlYXNlVHJhbnNhY3Rpb24EAAAAAXgFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQEAAAAIcmVjb3ZlcnkAAAAANjiyjw==", "chainId": 84, "height": 1410512, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2p3ohCkpAW3eFKkRTyYq6vLuEE8draQgKpyQNKyXhkh6 Next: none Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let digiliraPay = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
4+let gateway = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
5+let sponsorToken = base58'7GnHzTaDe3YbDiCD9rueHiSfPB7hdanPpN4Ab79fJGtD'
6+let paymentToken = base58'FLsa9hfu1jvXC6jhDP2x6DHHQHK2qiKPtS7D74ZFNsE1'
7+let recoveryToken = base58'FLsa9hfu1jvXC6jhDP2x6DHHQHK2qiKPtS7D74ZFNsE1'
8+let proxyWaves = base58'WAVES'
9+let recovery1 = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
10+let recovery2 = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
11+let recovery3 = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
12+let banned = 403000
13+let digiliraPayOnly = 99
14+let transferBlock = 100
15+let paymentBlock = 200
16+let paymentFundBlock = 300
17+let fundBlock = 400
18+func recovery () = {
19+ let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1))
20+ then 1
21+ else 0
22+ let s2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], recovery2))
23+ then 1
24+ else 0
25+ let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3))
26+ then 1
27+ else 0
28+ if ((((s1 + s2) + s3) >= 2))
29+ then true
30+ else throw("Unauthorized")
31+ }
32+
33+func checkFee (w) = {
34+ let fee = w.fee
35+ let isFeePaymentToken = (w.feeAssetId == paymentToken)
36+ let isFeeSponsorToken = (w.feeAssetId == sponsorToken)
37+ let unScriptedFee = 5
38+ let scriptedFee = 9
39+ let isScripted = match assetInfo(valueOrElse(w.assetId, proxyWaves)) {
40+ case asset: Asset =>
41+ if (asset.scripted)
42+ then true
43+ else false
44+ case _ =>
45+ false
46+ }
47+ if (if (!(isFeePaymentToken))
48+ then !(isFeeSponsorToken)
49+ else false)
50+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
51+ else if (if (if (isScripted)
52+ then (fee == scriptedFee)
53+ else false)
54+ then true
55+ else if (!(isScripted))
56+ then (fee == unScriptedFee)
57+ else false)
58+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
59+ else throw((toString(fee) + " feeAmount is wrong"))
60+ }
61+
62+func getStatus (key) = valueOrElse(getInteger(addressFromPublicKey(digiliraPay), toBase58String(key)), 0)
63+
464 match tx {
565 case w: TransferTransaction =>
6- if (isDefined(w.assetId))
66+ let myStatus = getStatus(w.sender.bytes)
67+ let recipientStatus = getStatus(addressFromRecipient(w.recipient).bytes)
68+ let assetStatus = getStatus(valueOrElse(w.assetId, proxyWaves))
69+ let digiliraRecipient = (recipientStatus > 0)
70+ let myStatusBanned = (myStatus == banned)
71+ let recipientStatusBanned = (recipientStatus == banned)
72+ let assetStatusBanned = (assetStatus == banned)
73+ let isFeeRecoveryToken = (w.feeAssetId == recoveryToken)
74+ let isRecipientGateway = (w.recipient == addressFromPublicKey(gateway))
75+ let isFeePaymentToken = (w.feeAssetId == paymentToken)
76+ let isFeeSponsorToken = (w.feeAssetId == sponsorToken)
77+ let isExclusiveToken = (digiliraPayOnly == valueOrElse(assetStatus, 0))
78+ let isDigiliraPayExclusive = (digiliraPayOnly > valueOrElse(assetStatus, 0))
79+ let permissionTransferToDP = if ((valueOrElse(assetStatus, banned) > valueOrElse(recipientStatus, 0)))
780 then true
8- else if ((w.recipient == addressFromPublicKey(digiliraPay)))
9- then true
10- else throw("Unfortunately you can only send waves to issuer..")
11- case x: Order|LeaseTransaction|BurnTransaction =>
12- false
13- case t: DataTransaction|ExchangeTransaction|SetScriptTransaction =>
14- sigVerify(t.bodyBytes, t.proofs[1], digiliraPay)
81+ else (valueOrElse(assetStatus, banned) > valueOrElse(myStatus, 0))
82+ let permissionPayment = if ((fundBlock > valueOrElse(assetStatus, 0)))
83+ then (valueOrElse(assetStatus, 0) >= paymentBlock)
84+ else false
85+ let permissionTransferNotDP = if ((transferBlock > valueOrElse(assetStatus, 0)))
86+ then true
87+ else (valueOrElse(assetStatus, 0) >= paymentFundBlock)
88+ let isRecovery = if (if (if (digiliraRecipient)
89+ then isFeeRecoveryToken
90+ else false)
91+ then isRecipientGateway
92+ else false)
93+ then myStatusBanned
94+ else false
95+ if (if (isRecovery)
96+ then recovery()
97+ else false)
98+ then true
99+ else if (digiliraRecipient)
100+ then {
101+ let prolog = "Transfer to DigiliraPay recipient: "
102+ if (myStatusBanned)
103+ then throw((prolog + "This account has been suspended."))
104+ else if (recipientStatusBanned)
105+ then throw((prolog + "Recipient's account has been suspended."))
106+ else if (assetStatusBanned)
107+ then throw((prolog + "Asset cannot be transfered."))
108+ else if (permissionTransferToDP)
109+ then throw((prolog + "Asset cannot be transfered. Recipient/Sender is not eligible."))
110+ else if (isDigiliraPayExclusive)
111+ then throw((prolog + "Non-Transferable Token."))
112+ else if (isRecipientGateway)
113+ then if (if (permissionPayment)
114+ then true
115+ else isExclusiveToken)
116+ then checkFee(w)
117+ else throw((prolog + "Asset cannot be used on payments."))
118+ else if (isFeePaymentToken)
119+ then throw((prolog + "Payment Token cannot be used."))
120+ else checkFee(w)
121+ }
122+ else {
123+ let prolog = "Transfer to not DigiliraPay recipient: "
124+ if (isFeePaymentToken)
125+ then throw((prolog + "Payment Token cannot be used."))
126+ else if (myStatusBanned)
127+ then throw((prolog + "This account has been suspended."))
128+ else if (permissionTransferNotDP)
129+ then throw((prolog + "This asset cannot be transfered."))
130+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131+ }
132+ case t: InvokeScriptTransaction|DataTransaction|SetScriptTransaction =>
133+ let s1 = if (sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey))
134+ then 1
135+ else 0
136+ let s2 = if (sigVerify(t.bodyBytes, t.proofs[1], digiliraPay))
137+ then 1
138+ else 0
139+ if (((s1 + s2) == 2))
140+ then true
141+ else throw("Integrity Check Failed!")
142+ case x: InvokeScriptTransaction|LeaseCancelTransaction|LeaseTransaction =>
143+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
15144 case _ =>
16- true
145+ recovery()
17146 }

github/deemru/w8io/169f3d6 
32.36 ms