2021.02.09 16:53 [2454492] smart account 3PN5a1L7vYobZ4H17vTjUP4P44XJUW9qf17 > SELF 0.00000000 Waves

{ "type": 13, "id": "8ys5HoC34aQZe2qt2tw92Mz6mHnhgDHt85JabMwpe2wP", "fee": 1400000, "feeAssetId": null, "timestamp": 1612878825000, "version": 1, "sender": "3PN5a1L7vYobZ4H17vTjUP4P44XJUW9qf17", "senderPublicKey": "6bXp6YGL5YRgjbv5d9VZt42VjBn66pesptB8jcRB5A8v", "proofs": [ "wxQiUXPpgbwTwFrHHWbYXHiEqnvhY74EiGQ3RT4oJoJsiArXufHZ1NDRNtRSeJcGDmsTNARJ4vk1vWzbrQ3CJCi" ], "script": "base64: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BQAAAANmZWUCAAAAEyBmZWVBbW91bnQgaXMgd3JvbmcKAQAAAAlnZXRTdGF0dXMAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtESUdJTElSQVBBWQkAAlgAAAABBQAAAANrZXkAAAAAAAAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF3BQAAAAckbWF0Y2gwBAAAAAhteVN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICAUAAAABdwAAAAZzZW5kZXIAAAAFYnl0ZXMEAAAAD3JlY2lwaWVudFN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICQAEJAAAAAEIBQAAAAF3AAAACXJlY2lwaWVudAAAAAVieXRlcwQAAAALYXNzZXRTdGF0dXMJAQAAAAlnZXRTdGF0dXMAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCAUAAAABdwAAAAdhc3NldElkBQAAAApQUk9YWVdBVkVTBAAAABFkaWdpbGlyYVJlY2lwaWVudAkAAGYAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMAAAAAAAAAAAAEAAAADm15U3RhdHVzQmFubmVkCQAAAAAAAAIFAAAACG15U3RhdHVzBQAAAAZCQU5ORUQEAAAAFXJlY2lwaWVudFN0YXR1c0Jhbm5lZAkAAAAAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMFAAAABkJBTk5FRAQAAAARYXNzZXRTdGF0dXNCYW5uZWQJAAAAAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABkJBTk5FRAQAAAASaXNGZWVSZWNvdmVyeVRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADVJFQ09WRVJZVE9LRU4EAAAAEmlzUmVjaXBpZW50R2F0ZXdheQkAAAAAAAACCAUAAAABdwAAAAlyZWNpcGllbnQJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAB0dBVEVXQVkEAAAAEWlzRmVlUGF5bWVudFRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADFBBWU1FTlRUT0tFTgQAAAARaXNGZWVTcG9uc29yVG9rZW4JAAAAAAAAAggFAAAAAXcAAAAKZmVlQXNzZXRJZAUAAAAMU1BPTlNPUlRPS0VOBAAAABBpc0V4Y2x1c2l2ZVRva2VuCQAAAAAAAAIFAAAAD0RJR0lMSVJBUEFZT05MWQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAEAAAAFmlzRGlnaWxpcmFQYXlFeGNsdXNpdmUJAABmAAAAAgUAAAAPRElHSUxJUkFQQVlPTkxZCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAQAAAAWcGVybWlzc2lvblRyYW5zZmVyVG9EUAMJAABmAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABkJBTk5FRAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAAPcmVjaXBpZW50U3RhdHVzAAAAAAAAAAAABgkAAGYAAAACCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwUAAAAGQkFOTkVECQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAhteVN0YXR1cwAAAAAAAAAAAAQAAAARcGVybWlzc2lvblBheW1lbnQDCQAAZgAAAAIFAAAACUZVTkRCTE9DSwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAADFBBWU1FTlRCTE9DSwcEAAAAF3Blcm1pc3Npb25UcmFuc2Zlck5vdERQAwkAAGYAAAACBQAAAA1UUkFOU0ZFUkJMT0NLCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAYJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAAEFBBWU1FTlRGVU5EQkxPQ0sEAAAACmlzUmVjb3ZlcnkDAwMFAAAAEWRpZ2lsaXJhUmVjaXBpZW50BQAAABJpc0ZlZVJlY292ZXJ5VG9rZW4HBQAAABJpc1JlY2lwaWVudEdhdGV3YXkHBQAAAA5teVN0YXR1c0Jhbm5lZAcDAwUAAAAKaXNSZWNvdmVyeQkBAAAACHJlY292ZXJ5AAAAAAcGAwUAAAARZGlnaWxpcmFSZWNpcGllbnQEAAAABnByb2xvZwIAAAAjVHJhbnNmZXIgdG8gRGlnaWxpcmFQYXkgcmVjaXBpZW50OiADBQAAAA5teVN0YXR1c0Jhbm5lZAkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAgVGhpcyBhY2NvdW50IGhhcyBiZWVuIHN1c3BlbmRlZC4DBQAAABVyZWNpcGllbnRTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAJ1JlY2lwaWVudCdzIGFjY291bnQgaGFzIGJlZW4gc3VzcGVuZGVkLgMFAAAAEWFzc2V0U3RhdHVzQmFubmVkCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAABtBc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4DBQAAABZwZXJtaXNzaW9uVHJhbnNmZXJUb0RQCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAAD1Bc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4gUmVjaXBpZW50L1NlbmRlciBpcyBub3QgZWxpZ2libGUuAwUAAAAWaXNEaWdpbGlyYVBheUV4Y2x1c2l2ZQkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAXTm9uLVRyYW5zZmVyYWJsZSBUb2tlbi4DBQAAABJpc1JlY2lwaWVudEdhdGV3YXkDAwUAAAARcGVybWlzc2lvblBheW1lbnQGBQAAABBpc0V4Y2x1c2l2ZVRva2VuCQEAAAAIY2hlY2tGZWUAAAABBQAAAAF3CQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAACFBc3NldCBjYW5ub3QgYmUgdXNlZCBvbiBwYXltZW50cy4DBQAAABFpc0ZlZVBheW1lbnRUb2tlbgkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAdUGF5bWVudCBUb2tlbiBjYW5ub3QgYmUgdXNlZC4JAQAAAAhjaGVja0ZlZQAAAAEFAAAAAXcEAAAABnByb2xvZwIAAAAnVHJhbnNmZXIgdG8gbm90IERpZ2lsaXJhUGF5IHJlY2lwaWVudDogAwUAAAARaXNGZWVQYXltZW50VG9rZW4JAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAHVBheW1lbnQgVG9rZW4gY2Fubm90IGJlIHVzZWQuAwUAAAAObXlTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYWNjb3VudCBoYXMgYmVlbiBzdXNwZW5kZWQuAwUAAAAXcGVybWlzc2lvblRyYW5zZmVyTm90RFAJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYXNzZXQgY2Fubm90IGJlIHRyYW5zZmVyZWQuCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDAEAAAAAnMxAwkAAfQAAAADCAUAAAABdAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAXQAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAABdAAAAA9zZW5kZXJQdWJsaWNLZXkAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAnMyAwkAAfQAAAADCAUAAAABdAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAXQAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAtESUdJTElSQVBBWQAAAAAAAAAAAQAAAAAAAAAAAAMJAAAAAAAAAgkAAGQAAAACBQAAAAJzMQUAAAACczIAAAAAAAAAAAIGCQAAAgAAAAECAAAAF0ludGVncml0eSBDaGVjayBGYWlsZWQhCQEAAAAIcmVjb3ZlcnkAAAAAXpR2lg==", "chainId": 87, "height": 2454492, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
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'2tKRd22A8nkVNjtgT7JJxqSR8D9EA2RfsprJt35jw8Hr'
10+let RECOVERY2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT'
11+let RECOVERY3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt'
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+
64+match tx {
65+ case w: TransferTransaction =>
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)))
80+ then true
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: 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 _ =>
143+ recovery()
144+}

github/deemru/w8io/786bc32 
25.97 ms