tx · JqJhjmwZaQ5bRHBaxBi3LMg3xhQcXUukSnTr1KS6kE6

3N7StS38EvzCuzkL942TQrWGeCZ9ReigTHL:  -0.01400000 Waves

2021.02.01 16:05 [1379138] smart account 3N7StS38EvzCuzkL942TQrWGeCZ9ReigTHL > SELF 0.00000000 Waves

{ "type": 13, "id": "JqJhjmwZaQ5bRHBaxBi3LMg3xhQcXUukSnTr1KS6kE6", "fee": 1400000, "feeAssetId": null, "timestamp": 1612184750000, "version": 1, "sender": "3N7StS38EvzCuzkL942TQrWGeCZ9ReigTHL", "senderPublicKey": "AppANb5CN2o6bBiQWn2rhQN5MNVjzAkGzGbaGHj2rUT7", "proofs": [ "SnnJqPeJ9vsSq6Pb6g729XmdMstbWmyFAHcdcZnAGRkHk6E9kfFo21B6NQCWLA1XzUwB6ojwUr9XJ5vKNDpM4QN", "44Uo6WxRe67XDbre22Biv818tBTDMBA4Qj3DDaGj9Gn76RJ3tyNxkCBxJXzXD1A6ZmFoZqYSmUvWUDP4wtTAZUp2" ], "script": "base64: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BQAAAANmZWUCAAAAEyBmZWVBbW91bnQgaXMgd3JvbmcKAQAAAAlnZXRTdGF0dXMAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtkaWdpbGlyYVBheQkAAlgAAAABBQAAAANrZXkAAAAAAAAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF3BQAAAAckbWF0Y2gwBAAAAAhteVN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICAUAAAABdwAAAAZzZW5kZXIAAAAFYnl0ZXMEAAAAD3JlY2lwaWVudFN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAEICQAEJAAAAAEIBQAAAAF3AAAACXJlY2lwaWVudAAAAAVieXRlcwQAAAALYXNzZXRTdGF0dXMJAQAAAAlnZXRTdGF0dXMAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCAUAAAABdwAAAAdhc3NldElkBQAAAApwcm94eVdhdmVzBAAAABFkaWdpbGlyYVJlY2lwaWVudAkAAGYAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMAAAAAAAAAAAAEAAAADm15U3RhdHVzQmFubmVkCQAAAAAAAAIFAAAACG15U3RhdHVzBQAAAAZiYW5uZWQEAAAAFXJlY2lwaWVudFN0YXR1c0Jhbm5lZAkAAAAAAAACBQAAAA9yZWNpcGllbnRTdGF0dXMFAAAABmJhbm5lZAQAAAARYXNzZXRTdGF0dXNCYW5uZWQJAAAAAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABmJhbm5lZAQAAAASaXNGZWVSZWNvdmVyeVRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADXJlY292ZXJ5VG9rZW4EAAAAEmlzUmVjaXBpZW50R2F0ZXdheQkAAAAAAAACCAUAAAABdwAAAAlyZWNpcGllbnQJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAB2dhdGV3YXkEAAAAEWlzRmVlUGF5bWVudFRva2VuCQAAAAAAAAIIBQAAAAF3AAAACmZlZUFzc2V0SWQFAAAADHBheW1lbnRUb2tlbgQAAAARaXNGZWVTcG9uc29yVG9rZW4JAAAAAAAAAggFAAAAAXcAAAAKZmVlQXNzZXRJZAUAAAAMc3BvbnNvclRva2VuBAAAABBpc0V4Y2x1c2l2ZVRva2VuCQAAAAAAAAIFAAAAD2RpZ2lsaXJhUGF5T25seQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAEAAAAFmlzRGlnaWxpcmFQYXlFeGNsdXNpdmUJAABmAAAAAgUAAAAPZGlnaWxpcmFQYXlPbmx5CQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAQAAAAWcGVybWlzc2lvblRyYW5zZmVyVG9EUAMJAABmAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMFAAAABmJhbm5lZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAAPcmVjaXBpZW50U3RhdHVzAAAAAAAAAAAABgkAAGYAAAACCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwUAAAAGYmFubmVkCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAhteVN0YXR1cwAAAAAAAAAAAAQAAAARcGVybWlzc2lvblBheW1lbnQDCQAAZgAAAAIFAAAACWZ1bmRCbG9jawkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAADHBheW1lbnRCbG9jawcEAAAAF3Blcm1pc3Npb25UcmFuc2Zlck5vdERQAwkAAGYAAAACBQAAAA10cmFuc2ZlckJsb2NrCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAthc3NldFN0YXR1cwAAAAAAAAAAAAYJAABnAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALYXNzZXRTdGF0dXMAAAAAAAAAAAAFAAAAEHBheW1lbnRGdW5kQmxvY2sEAAAACmlzUmVjb3ZlcnkDAwMFAAAAEWRpZ2lsaXJhUmVjaXBpZW50BQAAABJpc0ZlZVJlY292ZXJ5VG9rZW4HBQAAABJpc1JlY2lwaWVudEdhdGV3YXkHBQAAAA5teVN0YXR1c0Jhbm5lZAcDAwUAAAAKaXNSZWNvdmVyeQkBAAAACHJlY292ZXJ5AAAAAAcGAwUAAAARZGlnaWxpcmFSZWNpcGllbnQEAAAABnByb2xvZwIAAAAjVHJhbnNmZXIgdG8gRGlnaWxpcmFQYXkgcmVjaXBpZW50OiADBQAAAA5teVN0YXR1c0Jhbm5lZAkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAgVGhpcyBhY2NvdW50IGhhcyBiZWVuIHN1c3BlbmRlZC4DBQAAABVyZWNpcGllbnRTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAJ1JlY2lwaWVudCdzIGFjY291bnQgaGFzIGJlZW4gc3VzcGVuZGVkLgMFAAAAEWFzc2V0U3RhdHVzQmFubmVkCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAABtBc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4DBQAAABZwZXJtaXNzaW9uVHJhbnNmZXJUb0RQCQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAAD1Bc3NldCBjYW5ub3QgYmUgdHJhbnNmZXJlZC4gUmVjaXBpZW50L1NlbmRlciBpcyBub3QgZWxpZ2libGUuAwUAAAAWaXNEaWdpbGlyYVBheUV4Y2x1c2l2ZQkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAXTm9uLVRyYW5zZmVyYWJsZSBUb2tlbi4DBQAAABJpc1JlY2lwaWVudEdhdGV3YXkDAwUAAAARcGVybWlzc2lvblBheW1lbnQGBQAAABBpc0V4Y2x1c2l2ZVRva2VuCQEAAAAIY2hlY2tGZWUAAAABBQAAAAF3CQAAAgAAAAEJAAEsAAAAAgUAAAAGcHJvbG9nAgAAACFBc3NldCBjYW5ub3QgYmUgdXNlZCBvbiBwYXltZW50cy4DBQAAABFpc0ZlZVBheW1lbnRUb2tlbgkAAAIAAAABCQABLAAAAAIFAAAABnByb2xvZwIAAAAdUGF5bWVudCBUb2tlbiBjYW5ub3QgYmUgdXNlZC4JAQAAAAhjaGVja0ZlZQAAAAEFAAAAAXcEAAAABnByb2xvZwIAAAAnVHJhbnNmZXIgdG8gbm90IERpZ2lsaXJhUGF5IHJlY2lwaWVudDogAwUAAAARaXNGZWVTcG9uc29yVG9rZW4JAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAHVNwb25zb3IgVG9rZW4gY2Fubm90IGJlIHVzZWQuAwUAAAARaXNGZWVQYXltZW50VG9rZW4JAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAHVBheW1lbnQgVG9rZW4gY2Fubm90IGJlIHVzZWQuAwUAAAAObXlTdGF0dXNCYW5uZWQJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYWNjb3VudCBoYXMgYmVlbiBzdXNwZW5kZWQuAwUAAAAXcGVybWlzc2lvblRyYW5zZmVyTm90RFAJAAACAAAAAQkAASwAAAACBQAAAAZwcm9sb2cCAAAAIFRoaXMgYXNzZXQgY2Fubm90IGJlIHRyYW5zZmVyZWQuCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDAEAAAAAnMxAwkAAfQAAAADCAUAAAABdAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAXQAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAABdAAAAA9zZW5kZXJQdWJsaWNLZXkAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAnMyAwkAAfQAAAADCAUAAAABdAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAXQAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAtkaWdpbGlyYVBheQAAAAAAAAAAAQAAAAAAAAAAAAMJAAAAAAAAAgkAAGQAAAACBQAAAAJzMQUAAAACczIAAAAAAAAAAAIGCQAAAgAAAAECAAAAF0ludGVncml0eSBDaGVjayBGYWlsZWQhCQEAAAAIcmVjb3ZlcnkAAAAA2PF45g==", "chainId": 84, "height": 1379138, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8wZ8Rtgp5ghBsBCuxGAAwA7X9q72Ee5S8sAfAGd5uVLz Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let digiliraPay = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
4+let gateway = base58'57EFni8M1XesEurFh3c4jnpLExP2PCPd5TRrwMjePAT4'
45 let sponsorToken = base58'7GnHzTaDe3YbDiCD9rueHiSfPB7hdanPpN4Ab79fJGtD'
56 let paymentToken = base58'FLsa9hfu1jvXC6jhDP2x6DHHQHK2qiKPtS7D74ZFNsE1'
6-let proxyWaves = base58'nqAJcPZzdav7orQg3U78Nno2eF4J9bmeBbU2WtPaYkv'
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'
712 let banned = 403000
8-let KYCPending = 0
9-let nonFungibleBlock = 100
13+let digiliraPayOnly = 99
1014 let transferBlock = 100
1115 let paymentBlock = 200
12-let fundBlock = 300
13-let paymentFundBlock = 400
14-let upperBlock = 500
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+
1564 match tx {
1665 case w: TransferTransaction =>
17- let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes))
18- let isUser = getInteger(addressFromPublicKey(digiliraPay), toBase58String(addressFromRecipient(w.recipient).bytes))
19- let feeToken = w.feeAssetId
20- let feeAmount = w.fee
21- let asset = valueOrElse(w.assetId, proxyWaves)
22- let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(asset))
23- if (isDefined(isUser))
24- then if (isDefined(feeToken))
25- then if ((feeToken == sponsorToken))
26- then if (isDefined(isAsset))
27- then if ((isAsset == banned))
28- then throw("This asset cannot be transfered.")
29- else if (if ((valueOrElse(isAsset, banned) >= transferBlock))
30- then (upperBlock >= valueOrElse(isAsset, banned))
31- else false)
32- then if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
33- then true
34- else throw("To transfer this asset user permission must be set correctly.")
35- else throw("Transfer is not available right now.")
36- else true
37- else if ((feeToken == paymentToken))
38- then if ((w.recipient == addressFromPublicKey(digiliraPay)))
39- then if ((myStatus == KYCPending))
40- then throw("KYC Pending")
41- else if ((myStatus == banned))
42- then throw("Account Banned Can't Operate")
43- else if ((feeAmount > 10))
44- then throw("Not Allowed")
45- else if ((isAsset == banned))
46- then throw("Can not transfer this asset 3")
47- else if (if (if ((valueOrElse(isAsset, banned) >= paymentBlock))
48- then (fundBlock >= valueOrElse(isAsset, banned))
49- else false)
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)
50114 then true
51- else if ((valueOrElse(isAsset, banned) >= paymentFundBlock))
52- then (upperBlock >= valueOrElse(isAsset, banned))
53- else false)
54- then if ((valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned)))
55- then true
56- else throw("This asset has special requirements 2")
57- else throw("Can not transfer this asset 4")
58- else throw("Unfortunately you can only use this token for payments")
59- else if (isDefined(isAsset))
60- then if ((isAsset == banned))
61- then throw("Can not transfer this asset 5")
62- else if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
63- then true
64- else throw("This asset has special requirements 5")
65- else true
66- else if (isDefined(isAsset))
67- then if ((valueOrElse(isAsset, 0) == banned))
68- then throw("Can not transfer this asset")
69- else if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
70- then true
71- else throw("This asset has special requirements 1")
72- else true
73- else if (isDefined(isAsset))
74- then if (if ((valueOrElse(isAsset, banned) >= transferBlock))
75- then (fundBlock >= valueOrElse(isAsset, banned))
76- else false)
77- then true
78- else throw("Cannot transfer this token to none DigiliraPay users.")
79- else if (isDefined(feeToken))
80- then if ((feeToken == sponsorToken))
81- then throw("Cannot use this token for none DigiliraPay users transfers.")
82- else if ((feeToken == paymentToken))
83- then throw("Unfortunately you can only use this token for payments")
84- else true
85- else true
86- case x: Order|LeaseTransaction|BurnTransaction =>
87- false
88- case t: DataTransaction|ExchangeTransaction|SetScriptTransaction =>
89- sigVerify(t.bodyBytes, t.proofs[1], digiliraPay)
90- case mtt: MassTransferTransaction =>
91- false
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 (isFeeSponsorToken)
125+ then throw((prolog + "Sponsor Token cannot be used."))
126+ else if (isFeePaymentToken)
127+ then throw((prolog + "Payment Token cannot be used."))
128+ else if (myStatusBanned)
129+ then throw((prolog + "This account has been suspended."))
130+ else if (permissionTransferNotDP)
131+ then throw((prolog + "This asset cannot be transfered."))
132+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
133+ }
134+ case t: DataTransaction|SetScriptTransaction =>
135+ let s1 = if (sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey))
136+ then 1
137+ else 0
138+ let s2 = if (sigVerify(t.bodyBytes, t.proofs[1], digiliraPay))
139+ then 1
140+ else 0
141+ if (((s1 + s2) == 2))
142+ then true
143+ else throw("Integrity Check Failed!")
92144 case _ =>
93- true
145+ recovery()
94146 }

github/deemru/w8io/6500d08 
48.57 ms