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:
Old | New | Differences | |
---|---|---|---|
10 | 10 | let recovery2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT' | |
11 | 11 | let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt' | |
12 | 12 | let banned = 403000 | |
13 | - | let KYCPending = 0 | |
14 | 13 | let nonFungibleBlock = 50 | |
15 | 14 | let digiliraPayOnly = 99 | |
16 | 15 | let transferBlock = 100 | |
18 | 17 | let paymentFundBlock = 300 | |
19 | 18 | let fundBlock = 400 | |
20 | 19 | let upperBlock = 500 | |
21 | - | func recovery (w | |
20 | + | func recovery (w) = { | |
22 | 21 | let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1)) | |
23 | 22 | then 1 | |
24 | 23 | else 0 | |
28 | 27 | let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3)) | |
29 | 28 | then 1 | |
30 | 29 | 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)) | |
38 | 31 | then true | |
39 | 32 | else throw("Unauthorized") | |
40 | 33 | } | |
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) | |
65 | 34 | ||
66 | 35 | match tx { | |
67 | 36 | case w: TransferTransaction => | |
68 | 37 | let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes)) | |
69 | 38 | 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))) | |
72 | 40 | 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 => | |
84 | 78 | sigVerify(t.bodyBytes, t.proofs[1], digiliraPay) | |
85 | - | case mtt: MassTransferTransaction => | |
86 | - | false | |
87 | 79 | case _ => | |
88 | 80 | false | |
89 | 81 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let digiliraPay = base58'4snGCeL4Wjopx9awWd7pfdqUYyN1CLqbPz66bn7VY8oe' | |
4 | 4 | let gateway = base58'ActWMpdeyp8YHRhLxXmwdJmr37VXGgb44m8DuSVJW3k1' | |
5 | 5 | let sponsorToken = base58'HLfv6YiY1ZpDktcKL9R79FTcez9WdMjaeMWxhREGcAqr' | |
6 | 6 | let paymentToken = base58'HDBmVe4MFyVdh1Jy48m9XqXiHAVuNbwFB8dPskVMHS6B' | |
7 | 7 | let recoveryToken = base58'HL1XtTLSdKMxB8LrkRYszqwtiSRepGTBBdnyrCqgaEVX' | |
8 | 8 | let proxyWaves = base58'WAVES' | |
9 | 9 | let recovery1 = base58'2tKRd22A8nkVNjtgT7JJxqSR8D9EA2RfsprJt35jw8Hr' | |
10 | 10 | let recovery2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT' | |
11 | 11 | let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt' | |
12 | 12 | let banned = 403000 | |
13 | - | let KYCPending = 0 | |
14 | 13 | let nonFungibleBlock = 50 | |
15 | 14 | let digiliraPayOnly = 99 | |
16 | 15 | let transferBlock = 100 | |
17 | 16 | let paymentBlock = 200 | |
18 | 17 | let paymentFundBlock = 300 | |
19 | 18 | let fundBlock = 400 | |
20 | 19 | let upperBlock = 500 | |
21 | - | func recovery (w | |
20 | + | func recovery (w) = { | |
22 | 21 | let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1)) | |
23 | 22 | then 1 | |
24 | 23 | else 0 | |
25 | 24 | let s2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], recovery2)) | |
26 | 25 | then 1 | |
27 | 26 | else 0 | |
28 | 27 | let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3)) | |
29 | 28 | then 1 | |
30 | 29 | 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)) | |
38 | 31 | then true | |
39 | 32 | else throw("Unauthorized") | |
40 | 33 | } | |
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) | |
65 | 34 | ||
66 | 35 | match tx { | |
67 | 36 | case w: TransferTransaction => | |
68 | 37 | let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes)) | |
69 | 38 | 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))) | |
72 | 40 | 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 => | |
84 | 78 | sigVerify(t.bodyBytes, t.proofs[1], digiliraPay) | |
85 | - | case mtt: MassTransferTransaction => | |
86 | - | false | |
87 | 79 | case _ => | |
88 | 80 | false | |
89 | 81 | } |
github/deemru/w8io/873ac7e 184.38 ms ◑