tx · 2uP8kiTf22dqn4EmRGfPCLSSTSJ7EoxxYTv1L89WTAiV 3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp: -0.00800000 Waves 2022.10.27 11:07 [3355941] smart account 3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp > SELF 0.00000000 Waves
{ "type": 13, "id": "2uP8kiTf22dqn4EmRGfPCLSSTSJ7EoxxYTv1L89WTAiV", "fee": 800000, "feeAssetId": null, "timestamp": 1666858040355, "version": 2, "chainId": 87, "sender": "3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp", "senderPublicKey": "94U1i8a6xwSbEsdvuEn8qhxovgKQFvb3a3cdJD2J27qH", "proofs": [ "", "", "59K328pDoDt3LFpiUDq2P1B8Z1PJ58nBP48Fr7qDhP6BaAcBmnnNSmHd3U5tCm8GE6unur6YJoqwCiz4ZGWA7LzH" ], "script": "base64:BgIKCAISBgoECAgIARsACWtBc3NldElkQQIKQV9hc3NldF9pZAAJa0Fzc2V0SWRCAgpCX2Fzc2V0X2lkAAlrQmFsYW5jZUECD0FfYXNzZXRfYmFsYW5jZQAJa0JhbGFuY2VCAg9CX2Fzc2V0X2JhbGFuY2UACmtEaXNjb3VudHMCCWRpc2NvdW50cwAPa0Rpc2NvdW50VmFsdWVzAg9kaXNjb3VudF92YWx1ZXMAD2tVc2VyR1N3b3BJbkdvdgINX0dTd29wX2Ftb3VudAAOa1VzZXJTd29wSW5Hb3YCDF9TV09QX2Ftb3VudAAEa0ZlZQIKY29tbWlzc2lvbgANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzAAlmZWVTY2FsZTYAwIQ9AAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAEWFkbWluSW52b2tlUHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzARRjYWxjdWxhdGVGZWVEaXNjb3VudAEIdXNlckFkZHIECnN3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQh1c2VyQWRkcgUOa1VzZXJTd29wSW5Hb3YAAAQLZ1N3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQh1c2VyQWRkcgUPa1VzZXJHU3dvcEluR292BQpzd29wQW1vdW50BA5kaXNjb3VudFZhbHVlcwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFD2tEaXNjb3VudFZhbHVlcwIBLAQJZGlzY291bnRzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUKa0Rpc2NvdW50cwIBLAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAACQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAEFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwAAAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAEJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAgULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAEDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAgkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwADBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAgMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwADCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAQFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwADAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMABAkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwAEBQlmZWVTY2FsZTYBD2dldFBvb2xCYWxhbmNlcwEEcG9vbAQIYmFsYW5jZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQQQIYmFsYW5jZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQgkAlAoCBQhiYWxhbmNlQQUIYmFsYW5jZUIBDWdldFBvb2xBc3NldHMBBHBvb2wEC3N0ckFzc2V0SWRBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQlrQXNzZXRJZEEEC3N0ckFzc2V0SWRCCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQlrQXNzZXRJZEIECGFzc2V0SWRBAwkAAAIFC3N0ckFzc2V0SWRBAgVXQVZFUwUEdW5pdAkA2QQBBQtzdHJBc3NldElkQQQIYXNzZXRJZEIDCQAAAgULc3RyQXNzZXRJZEICBVdBVkVTBQR1bml0CQDZBAEFC3N0ckFzc2V0SWRCCQCWCgQFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgUIYXNzZXRJZEEFCGFzc2V0SWRCAQxnZXRGZWVQYXJhbXMCBHBvb2wGY2FsbGVyBAtmZWVEaXNjb3VudAkBFGNhbGN1bGF0ZUZlZURpc2NvdW50AQUGY2FsbGVyBANmZWUJAG4ECQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBQRrRmVlBQtmZWVEaXNjb3VudAUJZmVlU2NhbGU2BQdDRUlMSU5HBAZnb3ZGZWUJAG4ECQBrAwUDZmVlACgAZAULZmVlRGlzY291bnQFCWZlZVNjYWxlNgUHQ0VJTElORwkAlAoCBQNmZWUFBmdvdkZlZQENY2FsY3VsYXRlRmVlcwUJcG10QW1vdW50CXRva2VuRnJvbQd0b2tlblRvA2ZlZQ1mZWVHb3Zlcm5hbmNlBBBhbW91bnRXaXRob3V0RmVlCQBrAwUHdG9rZW5UbwUJcG10QW1vdW50CQBkAgUJcG10QW1vdW50BQl0b2tlbkZyb20EDWFtb3VudFdpdGhGZWUJAGsDBRBhbW91bnRXaXRob3V0RmVlCQBlAgUJZmVlU2NhbGU2BQNmZWUFCWZlZVNjYWxlNgkAlAoCBRBhbW91bnRXaXRob3V0RmVlBQ1hbW91bnRXaXRoRmVlAQFpARFjYWxjR2V0QW1vdW50Q1BNTQQIZEFwcEFkZHIIdXNlckFkZHIKcG10QXNzZXRJZAlwbXRBbW91bnQEBHBvb2wJAQdBZGRyZXNzAQkA2QQBBQhkQXBwQWRkcgQLJHQwMzYxNzM2NjMJAQ1nZXRQb29sQXNzZXRzAQUEcG9vbAQIYXNzZXRJZEEIBQskdDAzNjE3MzY2MwJfMQQIYXNzZXRJZEIIBQskdDAzNjE3MzY2MwJfMgQLJHQwMzY2NzM3MTUJAQ9nZXRQb29sQmFsYW5jZXMBBQRwb29sBAhiYWxhbmNlQQgFCyR0MDM2NjczNzE1Al8xBAhiYWxhbmNlQggFCyR0MDM2NjczNzE1Al8yAwMJAAACBQhiYWxhbmNlQQAABgkAAAIFCGJhbGFuY2VCAAAJAAIBAiBDYW4ndCBleGNoYW5nZSB3aXRoIHplcm8gYmFsYW5jZQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUIYXNzZXRJZEEJAMwIAgUIYXNzZXRJZEIFA25pbAUKcG10QXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAUIYXNzZXRJZEECBCBvciAFCGFzc2V0SWRCBAskdDAzOTc1NDAyMwkBDGdldEZlZVBhcmFtcwIFBHBvb2wFCHVzZXJBZGRyBANmZWUIBQskdDAzOTc1NDAyMwJfMQQGZ292RmVlCAULJHQwMzk3NTQwMjMCXzIECyR0MDQwMzA0MjUzAwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQENY2FsY3VsYXRlRmVlcwUFCXBtdEFtb3VudAUIYmFsYW5jZUEFCGJhbGFuY2VCBQNmZWUFBmdvdkZlZQkBDWNhbGN1bGF0ZUZlZXMFBQlwbXRBbW91bnQFCGJhbGFuY2VCBQhiYWxhbmNlQQUDZmVlBQZnb3ZGZWUEEGFtb3VudFdpdGhvdXRGZWUIBQskdDA0MDMwNDI1MwJfMQQNYW1vdW50V2l0aEZlZQgFCyR0MDQwMzA0MjUzAl8yCQCUCgIFA25pbAUNYW1vdW50V2l0aEZlZQECdHgBBnZlcmlmeQAEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAASRIGOI=", "height": 3355941, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8npbGPFUmCGzE5xTCGGrbZRJH9wH67rRTDojpFdeRmE1 Next: none Diff:
Old | New | Differences | |
---|---|---|---|
52 | 52 | let govAddress = Address(getBase58FromOracle(kGovAddress)) | |
53 | 53 | ||
54 | 54 | func calculateFeeDiscount (userAddr) = { | |
55 | - | let swopAmount = valueOrElse(getInteger(govAddress, ( | |
56 | - | let gSwopAmount = valueOrElse(getInteger(govAddress, ( | |
55 | + | let swopAmount = valueOrElse(getInteger(govAddress, (userAddr + kUserSwopInGov)), 0) | |
56 | + | let gSwopAmount = valueOrElse(getInteger(govAddress, (userAddr + kUserGSwopInGov)), swopAmount) | |
57 | 57 | let discountValues = split(getStringValue(oracle, kDiscountValues), ",") | |
58 | 58 | let discounts = split(getStringValue(oracle, kDiscounts), ",") | |
59 | 59 | if (if ((gSwopAmount >= parseIntValue(discountValues[0]))) | |
116 | 116 | @Callable(i) | |
117 | 117 | func calcGetAmountCPMM (dAppAddr,userAddr,pmtAssetId,pmtAmount) = { | |
118 | 118 | let pool = Address(fromBase58String(dAppAddr)) | |
119 | - | let $ | |
120 | - | let assetIdA = $ | |
121 | - | let assetIdB = $ | |
122 | - | let $ | |
123 | - | let balanceA = $ | |
124 | - | let balanceB = $ | |
119 | + | let $t036173663 = getPoolAssets(pool) | |
120 | + | let assetIdA = $t036173663._1 | |
121 | + | let assetIdB = $t036173663._2 | |
122 | + | let $t036673715 = getPoolBalances(pool) | |
123 | + | let balanceA = $t036673715._1 | |
124 | + | let balanceB = $t036673715._2 | |
125 | 125 | if (if ((balanceA == 0)) | |
126 | 126 | then true | |
127 | 127 | else (balanceB == 0)) | |
129 | 129 | else if (!(containsElement([assetIdA, assetIdB], pmtAssetId))) | |
130 | 130 | then throw(((("Incorrect asset attached. Expected: " + assetIdA) + " or ") + assetIdB)) | |
131 | 131 | else { | |
132 | - | let $ | |
133 | - | let fee = $ | |
134 | - | let govFee = $ | |
135 | - | let $ | |
132 | + | let $t039754023 = getFeeParams(pool, userAddr) | |
133 | + | let fee = $t039754023._1 | |
134 | + | let govFee = $t039754023._2 | |
135 | + | let $t040304253 = if ((pmtAssetId == assetIdA)) | |
136 | 136 | then calculateFees(pmtAmount, balanceA, balanceB, fee, govFee) | |
137 | 137 | else calculateFees(pmtAmount, balanceB, balanceA, fee, govFee) | |
138 | - | let amountWithoutFee = $ | |
139 | - | let amountWithFee = $ | |
138 | + | let amountWithoutFee = $t040304253._1 | |
139 | + | let amountWithFee = $t040304253._2 | |
140 | 140 | $Tuple2(nil, amountWithFee) | |
141 | 141 | } | |
142 | 142 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let kAssetIdA = "A_asset_id" | |
5 | 5 | ||
6 | 6 | let kAssetIdB = "B_asset_id" | |
7 | 7 | ||
8 | 8 | let kBalanceA = "A_asset_balance" | |
9 | 9 | ||
10 | 10 | let kBalanceB = "B_asset_balance" | |
11 | 11 | ||
12 | 12 | let kDiscounts = "discounts" | |
13 | 13 | ||
14 | 14 | let kDiscountValues = "discount_values" | |
15 | 15 | ||
16 | 16 | let kUserGSwopInGov = "_GSwop_amount" | |
17 | 17 | ||
18 | 18 | let kUserSwopInGov = "_SWOP_amount" | |
19 | 19 | ||
20 | 20 | let kFee = "commission" | |
21 | 21 | ||
22 | 22 | let kAdminPubKey1 = "admin_pub_1" | |
23 | 23 | ||
24 | 24 | let kAdminPubKey2 = "admin_pub_2" | |
25 | 25 | ||
26 | 26 | let kAdminPubKey3 = "admin_pub_3" | |
27 | 27 | ||
28 | 28 | let kAdminInvokePubKey = "admin_invoke_pub" | |
29 | 29 | ||
30 | 30 | let kGovAddress = "governance_address" | |
31 | 31 | ||
32 | 32 | let feeScale6 = 1000000 | |
33 | 33 | ||
34 | 34 | let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') | |
35 | 35 | ||
36 | 36 | func getBase58FromOracle (key) = match getString(oracle, key) { | |
37 | 37 | case string: String => | |
38 | 38 | fromBase58String(string) | |
39 | 39 | case nothing => | |
40 | 40 | throw((key + "is empty")) | |
41 | 41 | } | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | let adminPubKey1 = getBase58FromOracle(kAdminPubKey1) | |
45 | 45 | ||
46 | 46 | let adminPubKey2 = getBase58FromOracle(kAdminPubKey2) | |
47 | 47 | ||
48 | 48 | let adminPubKey3 = getBase58FromOracle(kAdminPubKey3) | |
49 | 49 | ||
50 | 50 | let adminInvokePubKey = getBase58FromOracle(kAdminInvokePubKey) | |
51 | 51 | ||
52 | 52 | let govAddress = Address(getBase58FromOracle(kGovAddress)) | |
53 | 53 | ||
54 | 54 | func calculateFeeDiscount (userAddr) = { | |
55 | - | let swopAmount = valueOrElse(getInteger(govAddress, ( | |
56 | - | let gSwopAmount = valueOrElse(getInteger(govAddress, ( | |
55 | + | let swopAmount = valueOrElse(getInteger(govAddress, (userAddr + kUserSwopInGov)), 0) | |
56 | + | let gSwopAmount = valueOrElse(getInteger(govAddress, (userAddr + kUserGSwopInGov)), swopAmount) | |
57 | 57 | let discountValues = split(getStringValue(oracle, kDiscountValues), ",") | |
58 | 58 | let discounts = split(getStringValue(oracle, kDiscounts), ",") | |
59 | 59 | if (if ((gSwopAmount >= parseIntValue(discountValues[0]))) | |
60 | 60 | then (parseIntValue(discountValues[1]) > gSwopAmount) | |
61 | 61 | else false) | |
62 | 62 | then (feeScale6 - parseIntValue(discounts[0])) | |
63 | 63 | else if (if ((gSwopAmount >= parseIntValue(discountValues[1]))) | |
64 | 64 | then (parseIntValue(discountValues[2]) > gSwopAmount) | |
65 | 65 | else false) | |
66 | 66 | then (feeScale6 - parseIntValue(discounts[1])) | |
67 | 67 | else if (if ((gSwopAmount >= parseIntValue(discountValues[2]))) | |
68 | 68 | then (parseIntValue(discountValues[3]) > gSwopAmount) | |
69 | 69 | else false) | |
70 | 70 | then (feeScale6 - parseIntValue(discounts[2])) | |
71 | 71 | else if (if ((gSwopAmount >= parseIntValue(discountValues[3]))) | |
72 | 72 | then (parseIntValue(discountValues[4]) > gSwopAmount) | |
73 | 73 | else false) | |
74 | 74 | then (feeScale6 - parseIntValue(discounts[3])) | |
75 | 75 | else if ((gSwopAmount >= parseIntValue(discountValues[4]))) | |
76 | 76 | then (feeScale6 - parseIntValue(discounts[4])) | |
77 | 77 | else feeScale6 | |
78 | 78 | } | |
79 | 79 | ||
80 | 80 | ||
81 | 81 | func getPoolBalances (pool) = { | |
82 | 82 | let balanceA = getIntegerValue(pool, kBalanceA) | |
83 | 83 | let balanceB = getIntegerValue(pool, kBalanceB) | |
84 | 84 | $Tuple2(balanceA, balanceB) | |
85 | 85 | } | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | func getPoolAssets (pool) = { | |
89 | 89 | let strAssetIdA = getStringValue(pool, kAssetIdA) | |
90 | 90 | let strAssetIdB = getStringValue(pool, kAssetIdB) | |
91 | 91 | let assetIdA = if ((strAssetIdA == "WAVES")) | |
92 | 92 | then unit | |
93 | 93 | else fromBase58String(strAssetIdA) | |
94 | 94 | let assetIdB = if ((strAssetIdB == "WAVES")) | |
95 | 95 | then unit | |
96 | 96 | else fromBase58String(strAssetIdB) | |
97 | 97 | $Tuple4(strAssetIdA, strAssetIdB, assetIdA, assetIdB) | |
98 | 98 | } | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func getFeeParams (pool,caller) = { | |
102 | 102 | let feeDiscount = calculateFeeDiscount(caller) | |
103 | 103 | let fee = fraction(getIntegerValue(pool, kFee), feeDiscount, feeScale6, CEILING) | |
104 | 104 | let govFee = fraction(fraction(fee, 40, 100), feeDiscount, feeScale6, CEILING) | |
105 | 105 | $Tuple2(fee, govFee) | |
106 | 106 | } | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func calculateFees (pmtAmount,tokenFrom,tokenTo,fee,feeGovernance) = { | |
110 | 110 | let amountWithoutFee = fraction(tokenTo, pmtAmount, (pmtAmount + tokenFrom)) | |
111 | 111 | let amountWithFee = fraction(amountWithoutFee, (feeScale6 - fee), feeScale6) | |
112 | 112 | $Tuple2(amountWithoutFee, amountWithFee) | |
113 | 113 | } | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | @Callable(i) | |
117 | 117 | func calcGetAmountCPMM (dAppAddr,userAddr,pmtAssetId,pmtAmount) = { | |
118 | 118 | let pool = Address(fromBase58String(dAppAddr)) | |
119 | - | let $ | |
120 | - | let assetIdA = $ | |
121 | - | let assetIdB = $ | |
122 | - | let $ | |
123 | - | let balanceA = $ | |
124 | - | let balanceB = $ | |
119 | + | let $t036173663 = getPoolAssets(pool) | |
120 | + | let assetIdA = $t036173663._1 | |
121 | + | let assetIdB = $t036173663._2 | |
122 | + | let $t036673715 = getPoolBalances(pool) | |
123 | + | let balanceA = $t036673715._1 | |
124 | + | let balanceB = $t036673715._2 | |
125 | 125 | if (if ((balanceA == 0)) | |
126 | 126 | then true | |
127 | 127 | else (balanceB == 0)) | |
128 | 128 | then throw("Can't exchange with zero balance") | |
129 | 129 | else if (!(containsElement([assetIdA, assetIdB], pmtAssetId))) | |
130 | 130 | then throw(((("Incorrect asset attached. Expected: " + assetIdA) + " or ") + assetIdB)) | |
131 | 131 | else { | |
132 | - | let $ | |
133 | - | let fee = $ | |
134 | - | let govFee = $ | |
135 | - | let $ | |
132 | + | let $t039754023 = getFeeParams(pool, userAddr) | |
133 | + | let fee = $t039754023._1 | |
134 | + | let govFee = $t039754023._2 | |
135 | + | let $t040304253 = if ((pmtAssetId == assetIdA)) | |
136 | 136 | then calculateFees(pmtAmount, balanceA, balanceB, fee, govFee) | |
137 | 137 | else calculateFees(pmtAmount, balanceB, balanceA, fee, govFee) | |
138 | - | let amountWithoutFee = $ | |
139 | - | let amountWithFee = $ | |
138 | + | let amountWithoutFee = $t040304253._1 | |
139 | + | let amountWithFee = $t040304253._2 | |
140 | 140 | $Tuple2(nil, amountWithFee) | |
141 | 141 | } | |
142 | 142 | } | |
143 | 143 | ||
144 | 144 | ||
145 | 145 | @Verifier(tx) | |
146 | 146 | func verify () = { | |
147 | 147 | let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1)) | |
148 | 148 | then 1 | |
149 | 149 | else 0 | |
150 | 150 | let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2)) | |
151 | 151 | then 1 | |
152 | 152 | else 0 | |
153 | 153 | let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3)) | |
154 | 154 | then 1 | |
155 | 155 | else 0 | |
156 | 156 | (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 1) | |
157 | 157 | } | |
158 | 158 |
github/deemru/w8io/873ac7e 47.49 ms ◑![]()