tx · 7hse1P3VwSC38PcRrEjK1k9PULJYD4Ld1jRt4T6x7BRY

3PDp4muG1YbKpvAdAAs1aCaDpodCFx7aL6Q:  -0.01400000 Waves

2021.01.30 22:15 [2440362] smart account 3PDp4muG1YbKpvAdAAs1aCaDpodCFx7aL6Q > SELF 0.00000000 Waves

{ "type": 13, "id": "7hse1P3VwSC38PcRrEjK1k9PULJYD4Ld1jRt4T6x7BRY", "fee": 1400000, "feeAssetId": null, "timestamp": 1612034133586, "version": 2, "chainId": 87, "sender": "3PDp4muG1YbKpvAdAAs1aCaDpodCFx7aL6Q", "senderPublicKey": "CKzTR32R4SN2FcT6GeY9s9HegcXHYfovEWPFfRc9Schh", "proofs": [ "2cqHzMYkVtCrzKajMvWDzHhHgh2uGLNmYm63m32i6onr2feshskbWHPuCNJf3WYysVAN3hzPikPDG4nFWtQ7FHqq", "4JxsrLTECR3MqF5nbJqhJWo9KawsUcbr9ZpF72Toc2LLae8EWx2kjqoiAP1aVUwHoUcWGFyFZbz45NTsUoZX1WRX" ], "script": "base64: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", "height": 2440362, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4RaMUxtAhD4Jhi81jaDBJKRnxf3DPW2qABMpCbV62cWC Next: 2Mr3wSWHAesTPQ9Tw6J9WozBU8xGHejxLL9GHiELCi9f Diff:
OldNewDifferences
1010 let recovery2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT'
1111 let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt'
1212 let banned = 403000
13-let KYCPending = 0
1413 let nonFungibleBlock = 50
1514 let digiliraPayOnly = 99
1615 let transferBlock = 100
1817 let paymentFundBlock = 300
1918 let fundBlock = 400
2019 let upperBlock = 500
21-func recovery (w,isUser) = {
20+func recovery (w) = {
2221 let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1))
2322 then 1
2423 else 0
2827 let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3))
2928 then 1
3029 else 0
31- let ifRecipient = if ((w.recipient == addressFromPublicKey(gateway)))
32- then 10
33- else 0
34- let isUserLocked = if ((isUser == banned))
35- then 10
36- else 0
37- if ((((((s1 + s2) + s3) + ifRecipient) + isUserLocked) >= 22))
30+ if ((((s1 + s2) + s3) >= 2))
3831 then true
3932 else throw("Unauthorized")
4033 }
41-
42-func transfer (w,lowerLimit,upperLimit,isAsset,isUser,myStatus) = if (if (if ((isUser == -1))
43- then (w.feeAssetId == sponsorToken)
44- else false)
45- then true
46- else if ((isUser == -1))
47- then (w.feeAssetId == paymentToken)
48- else false)
49- then throw("This fee token cannot be used for transfering tokens to non DigiliraPay users")
50- else if (isDefined(isAsset))
51- then if (if ((isAsset == banned))
52- then true
53- else (myStatus == banned))
54- then throw("This asset cannot be transfered.")
55- else if (if ((valueOrElse(isAsset, 0) >= lowerLimit))
56- then (upperLimit > valueOrElse(isAsset, 0))
57- else false)
58- then if (if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
59- then (valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned))
60- else false)
61- then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
62- else throw("To transfer this asset user permission must be set correctly.")
63- else throw("Transfer is not available right now.")
64- else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
6534
6635 match tx {
6736 case w: TransferTransaction =>
6837 let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes))
6938 let isUser = getInteger(addressFromPublicKey(digiliraPay), toBase58String(addressFromRecipient(w.recipient).bytes))
70- let asset = valueOrElse(w.assetId, proxyWaves)
71- let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(asset))
39+ let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(valueOrElse(w.assetId, proxyWaves)))
7240 if (isDefined(isUser))
73- then if ((w.feeAssetId == paymentToken))
74- then if ((w.recipient == addressFromPublicKey(gateway)))
75- then transfer(w, digiliraPayOnly, fundBlock, isAsset, isUser, myStatus)
76- else throw("Unfortunately you can only use this token for payment transfers.")
77- else if ((w.feeAssetId == recoveryToken))
78- then recovery(w, isUser)
79- else transfer(w, digiliraPayOnly, upperBlock, isAsset, isUser, myStatus)
80- else transfer(w, transferBlock, paymentFundBlock, isAsset, -1, myStatus)
81- case x: Order|LeaseTransaction|BurnTransaction =>
82- false
83- case t: DataTransaction|ExchangeTransaction|SetScriptTransaction =>
41+ then if (if (if (if (if (if ((isUser == banned))
42+ then true
43+ else (isAsset == banned))
44+ then true
45+ else (myStatus == banned))
46+ then true
47+ else (valueOrElse(isAsset, banned) > valueOrElse(isUser, 0)))
48+ then true
49+ else (valueOrElse(isAsset, banned) > valueOrElse(myStatus, 0)))
50+ then true
51+ else (digiliraPayOnly > valueOrElse(isAsset, 0)))
52+ then if (if (if ((w.feeAssetId == recoveryToken))
53+ then (w.recipient == addressFromPublicKey(gateway))
54+ else false)
55+ then (myStatus == banned)
56+ else false)
57+ then recovery(w)
58+ else throw("Transfer is not available right now. User banned or permission denied")
59+ else if ((w.recipient == addressFromPublicKey(gateway)))
60+ then if ((fundBlock > valueOrElse(isAsset, 0)))
61+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
62+ else throw("Transfer is not available right now. Asset cannot be used on payment transactions.")
63+ else if ((w.feeAssetId != paymentToken))
64+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
65+ else throw("Transfer is not available right now. Payment Fee Token")
66+ else if (if (if (if (if ((w.feeAssetId == sponsorToken))
67+ then true
68+ else (w.feeAssetId == paymentToken))
69+ then true
70+ else (myStatus == banned))
71+ then true
72+ else (transferBlock > valueOrElse(isAsset, 0)))
73+ then true
74+ else (valueOrElse(isAsset, 0) >= paymentFundBlock))
75+ then throw("Transfer is not available right now.")
76+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
77+ case t: DataTransaction|SetScriptTransaction =>
8478 sigVerify(t.bodyBytes, t.proofs[1], digiliraPay)
85- case mtt: MassTransferTransaction =>
86- false
8779 case _ =>
8880 false
8981 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let digiliraPay = base58'4snGCeL4Wjopx9awWd7pfdqUYyN1CLqbPz66bn7VY8oe'
44 let gateway = base58'ActWMpdeyp8YHRhLxXmwdJmr37VXGgb44m8DuSVJW3k1'
55 let sponsorToken = base58'HLfv6YiY1ZpDktcKL9R79FTcez9WdMjaeMWxhREGcAqr'
66 let paymentToken = base58'HDBmVe4MFyVdh1Jy48m9XqXiHAVuNbwFB8dPskVMHS6B'
77 let recoveryToken = base58'HL1XtTLSdKMxB8LrkRYszqwtiSRepGTBBdnyrCqgaEVX'
88 let proxyWaves = base58'WAVES'
99 let recovery1 = base58'2tKRd22A8nkVNjtgT7JJxqSR8D9EA2RfsprJt35jw8Hr'
1010 let recovery2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT'
1111 let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt'
1212 let banned = 403000
13-let KYCPending = 0
1413 let nonFungibleBlock = 50
1514 let digiliraPayOnly = 99
1615 let transferBlock = 100
1716 let paymentBlock = 200
1817 let paymentFundBlock = 300
1918 let fundBlock = 400
2019 let upperBlock = 500
21-func recovery (w,isUser) = {
20+func recovery (w) = {
2221 let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1))
2322 then 1
2423 else 0
2524 let s2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], recovery2))
2625 then 1
2726 else 0
2827 let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3))
2928 then 1
3029 else 0
31- let ifRecipient = if ((w.recipient == addressFromPublicKey(gateway)))
32- then 10
33- else 0
34- let isUserLocked = if ((isUser == banned))
35- then 10
36- else 0
37- if ((((((s1 + s2) + s3) + ifRecipient) + isUserLocked) >= 22))
30+ if ((((s1 + s2) + s3) >= 2))
3831 then true
3932 else throw("Unauthorized")
4033 }
41-
42-func transfer (w,lowerLimit,upperLimit,isAsset,isUser,myStatus) = if (if (if ((isUser == -1))
43- then (w.feeAssetId == sponsorToken)
44- else false)
45- then true
46- else if ((isUser == -1))
47- then (w.feeAssetId == paymentToken)
48- else false)
49- then throw("This fee token cannot be used for transfering tokens to non DigiliraPay users")
50- else if (isDefined(isAsset))
51- then if (if ((isAsset == banned))
52- then true
53- else (myStatus == banned))
54- then throw("This asset cannot be transfered.")
55- else if (if ((valueOrElse(isAsset, 0) >= lowerLimit))
56- then (upperLimit > valueOrElse(isAsset, 0))
57- else false)
58- then if (if ((valueOrElse(isUser, 0) >= valueOrElse(isAsset, banned)))
59- then (valueOrElse(myStatus, 0) >= valueOrElse(isAsset, banned))
60- else false)
61- then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
62- else throw("To transfer this asset user permission must be set correctly.")
63- else throw("Transfer is not available right now.")
64- else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
6534
6635 match tx {
6736 case w: TransferTransaction =>
6837 let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes))
6938 let isUser = getInteger(addressFromPublicKey(digiliraPay), toBase58String(addressFromRecipient(w.recipient).bytes))
70- let asset = valueOrElse(w.assetId, proxyWaves)
71- let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(asset))
39+ let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(valueOrElse(w.assetId, proxyWaves)))
7240 if (isDefined(isUser))
73- then if ((w.feeAssetId == paymentToken))
74- then if ((w.recipient == addressFromPublicKey(gateway)))
75- then transfer(w, digiliraPayOnly, fundBlock, isAsset, isUser, myStatus)
76- else throw("Unfortunately you can only use this token for payment transfers.")
77- else if ((w.feeAssetId == recoveryToken))
78- then recovery(w, isUser)
79- else transfer(w, digiliraPayOnly, upperBlock, isAsset, isUser, myStatus)
80- else transfer(w, transferBlock, paymentFundBlock, isAsset, -1, myStatus)
81- case x: Order|LeaseTransaction|BurnTransaction =>
82- false
83- case t: DataTransaction|ExchangeTransaction|SetScriptTransaction =>
41+ then if (if (if (if (if (if ((isUser == banned))
42+ then true
43+ else (isAsset == banned))
44+ then true
45+ else (myStatus == banned))
46+ then true
47+ else (valueOrElse(isAsset, banned) > valueOrElse(isUser, 0)))
48+ then true
49+ else (valueOrElse(isAsset, banned) > valueOrElse(myStatus, 0)))
50+ then true
51+ else (digiliraPayOnly > valueOrElse(isAsset, 0)))
52+ then if (if (if ((w.feeAssetId == recoveryToken))
53+ then (w.recipient == addressFromPublicKey(gateway))
54+ else false)
55+ then (myStatus == banned)
56+ else false)
57+ then recovery(w)
58+ else throw("Transfer is not available right now. User banned or permission denied")
59+ else if ((w.recipient == addressFromPublicKey(gateway)))
60+ then if ((fundBlock > valueOrElse(isAsset, 0)))
61+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
62+ else throw("Transfer is not available right now. Asset cannot be used on payment transactions.")
63+ else if ((w.feeAssetId != paymentToken))
64+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
65+ else throw("Transfer is not available right now. Payment Fee Token")
66+ else if (if (if (if (if ((w.feeAssetId == sponsorToken))
67+ then true
68+ else (w.feeAssetId == paymentToken))
69+ then true
70+ else (myStatus == banned))
71+ then true
72+ else (transferBlock > valueOrElse(isAsset, 0)))
73+ then true
74+ else (valueOrElse(isAsset, 0) >= paymentFundBlock))
75+ then throw("Transfer is not available right now.")
76+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
77+ case t: DataTransaction|SetScriptTransaction =>
8478 sigVerify(t.bodyBytes, t.proofs[1], digiliraPay)
85- case mtt: MassTransferTransaction =>
86- false
8779 case _ =>
8880 false
8981 }

github/deemru/w8io/873ac7e 
184.38 ms