tx · 5fzpwRTRw119f6ejAPzb3viUvukvXJD8DqYxaQcQuYQm

3N1MvShcUgGjWDvcRYZN4cp1Sh9rAsj8Z77:  -0.01000000 Waves

2022.10.17 19:30 [2276620] smart account 3N1MvShcUgGjWDvcRYZN4cp1Sh9rAsj8Z77 > SELF 0.00000000 Waves

{ "type": 13, "id": "5fzpwRTRw119f6ejAPzb3viUvukvXJD8DqYxaQcQuYQm", "fee": 1000000, "feeAssetId": null, "timestamp": 1666024267843, "version": 2, "chainId": 84, "sender": "3N1MvShcUgGjWDvcRYZN4cp1Sh9rAsj8Z77", "senderPublicKey": "CbEqmUJa3RTP3dRGztuPxb5k45ikmHMijSeVYzUDgSr4", "proofs": [ "3XQkNbokrNnnPVsj8R9Y6rbw3SVq92ofqGWGRUGMemmQRuY8m8s8Xm6JnZ5nFpHmitGyJFGij5XV3uL8XLTRnLSe" ], "script": "base64:BgIYCAISBAoCCBgSABIAEgUKAwQBCBIDCgEBJgAHa0FjdGl2ZQIGYWN0aXZlAAZrQ2F1c2UCDnNodXRkb3duX2NhdXNlAAxrVVNETkFkZHJlc3MCGHN0YWtpbmdfdXNkbm5zYnRfYWRkcmVzcwAMa0VVUk5BZGRyZXNzAhRzdGFraW5nX2V1cm5fYWRkcmVzcwAMa0xlYXNpbmdQb29sAg9sZWFzaW5nX2FkZHJlc3MADmtMZWFzaW5nQW1vdW50Ag5sZWFzaW5nX2Ftb3VudAAKa0xlYXNpbmdJZAIKbGVhc2luZ19pZAANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViAA1rQ3BtbUNvbnRyYWN0Ag1jcG1tX2NvbnRyYWN0AAxrVVNETkFzc2V0SWQCDXVzZG5fYXNzZXRfaWQADGtFVVJOQXNzZXRJZAINZXVybl9hc3NldF9pZAAOa1N0YWtpbmdBc3NldHMCDnN0YWtpbmdfYXNzZXRzAA1rU2hhcmVBc3NldElkAg5zaGFyZV9hc3NldF9pZAAGb3JhY2xlCQEHQWRkcmVzcwEBGgFUSBOXDMDTM8wlMoC2KfenZGiAq+PMe0uZARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pblB1YktleUludm9rZQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAEnN0YWtpbmdVU0ROQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQWRkcmVzcwASc3Rha2luZ0VVUk5BZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5BZGRyZXNzAAxjcG1tQ29udHJhY3QJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQ3BtbUNvbnRyYWN0AARVU0ROCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQXNzZXRJZAAERVVSTgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRVVSTkFzc2V0SWQADXN0YWtpbmdBc3NldHMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUOa1N0YWtpbmdBc3NldHMABmFjdGl2ZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgEIaXNBY3RpdmUAAwUGYWN0aXZlBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAEOaXNHbG9iYWxDYWxsZXIBBmNhbGxlcgMJAAACBQZjYWxsZXIFDGNwbW1Db250cmFjdAUEdW5pdAkAAgECLU9ubHkgZ2xvYmFsIENvbnRyYWN0IGNhbiBpbnZva2UgdGhpcyBmdW5jdGlvbgELaXNBZG1pbkNhbGwBDGNhbGxlclB1YktleQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwFDGNhbGxlclB1YktleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAgVzdGFrZQdhc3NldElkAwUFc3Rha2UDCQAAAgUHYXNzZXRJZAUEVVNETgkAlAoCAgxsb2NrTmV1dHJpbm8FEnN0YWtpbmdVU0ROQWRkcmVzcwkAlAoCAgxzdGFydFN0YWtpbmcFEnN0YWtpbmdFVVJOQWRkcmVzcwMJAAACBQdhc3NldElkBQRVU0ROCQCUCgICDnVubG9ja05ldXRyaW5vBRJzdGFraW5nVVNETkFkZHJlc3MJAJQKAgILc3RvcFN0YWtpbmcFEnN0YWtpbmdFVVJOQWRkcmVzcwERY2FsY1N0YWtpbmdQYXJhbXMDBXN0YWtlBmFtb3VudAdhc3NldElkAwUFc3Rha2UECyR0MDI0NzMyNTM5CQEYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAgUFc3Rha2UFB2Fzc2V0SWQEBGNhbGwIBQskdDAyNDczMjUzOQJfMQQLc3Rha2luZ0FkZHIIBQskdDAyNDczMjUzOQJfMgkAlgoEBQRjYWxsBQtzdGFraW5nQWRkcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQZhbW91bnQFA25pbAQLJHQwMjYyNTI2OTEJARhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMCBQVzdGFrZQUHYXNzZXRJZAQEY2FsbAgFCyR0MDI2MjUyNjkxAl8xBAtzdGFraW5nQWRkcggFCyR0MDI2MjUyNjkxAl8yCQCWCgQFBGNhbGwFC3N0YWtpbmdBZGRyCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEFB2Fzc2V0SWQFA25pbAUDbmlsAQ9jb2xsZWN0UGF5bWVudHMCA2FjYwdwYXltZW50BAskdDAyODUzMjg5NgUDYWNjBA5wYXltZW50QW1vdW50cwgFCyR0MDI4NTMyODk2Al8xBA9wYXltZW50QXNzZXRJZHMIBQskdDAyODUzMjg5NgJfMgkAlAoCCQDNCAIFDnBheW1lbnRBbW91bnRzCAUHcGF5bWVudAZhbW91bnQJAM0IAgUPcGF5bWVudEFzc2V0SWRzAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQBAAgFB3BheW1lbnQHYXNzZXRJZAEMY29sbGVjdFN0YXRlAgZyZXN1bHQGc291cmNlBAckbWF0Y2gwBQZzb3VyY2UDAwkAAQIFByRtYXRjaDACBUlzc3VlBgMJAAECBQckbWF0Y2gw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AgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwkAlAoCBQ1tYXBwZWRBY3Rpb25zBQptYXBwZWREYXRhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDBQZhY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELRGVsZXRlRW50cnkBBQZrQ2F1c2UFA25pbAFpAQxzdGFrZVVuc3Rha2UDBXN0YWtlBmFtb3VudA1hc3NldElkU3RyaW5nCQELdmFsdWVPckVsc2UCCQEOaXNHbG9iYWxDYWxsZXIBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFDGNwbW1Db250cmFjdAkAAgECLU9ubHkgZ2xvYmFsIENvbnRyYWN0IGNhbiBpbnZva2UgdGhpcyBmdW5jdGlvbgMJAAACBQ1hc3NldElkU3RyaW5nAgVXQVZFUwQEcG9vbAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBm9yYWNsZQUMa0xlYXNpbmdQb29sAhlObyBsZWFzaW5nIHBvb2wgaW4gb3JhY2xlBAlsZWFzaW5nSWQJAJwIAgUEdGhpcwUKa0xlYXNpbmdJZAQNbGVhc2luZ0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rTGVhc2luZ0Ftb3VudAAABA5uZXdMZWFzZUFtb3VudAMFBXN0YWtlCQBkAgUNbGVhc2luZ0Ftb3VudAUGYW1vdW50CQBlAgUNbGVhc2luZ0Ftb3VudAUGYW1vdW50BAhuZXdMZWFzZQkAxAgCBQRwb29sBQ5uZXdMZWFzZUFtb3VudAQKbmV3TGVhc2VJZAkAuQgBBQhuZXdMZWFzZQQIYmFzZUV0cnkJAMwIAgUIbmV3TGVhc2UJAMwIAgkBC0JpbmFyeUVudHJ5AgUKa0xlYXNpbmdJZAUKbmV3TGVhc2VJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa0xlYXNpbmdBbW91bnQFDm5ld0xlYXNlQW1vdW50BQNuaWwEByRtYXRjaDAFCWxlYXNpbmdJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBANsSWQFByRtYXRjaDAJAM4IAgkAzAgCCQELTGVhc2VDYW5jZWwBBQNsSWQFA25pbAUIYmFzZUV0cnkFCGJhc2VFdHJ5BAskdDA1OTc3NjA4MAkBEWNhbGNTdGFraW5nUGFyYW1zAwUFc3Rha2UFBmFtb3VudAkA2QQBBQ1hc3NldElkU3RyaW5nBARjYWxsCAULJHQwNTk3NzYwODACXzEEBGFkZHIIBQskdDA1OTc3NjA4MAJfMgQGcGFyYW1zCAULJHQwNTk3NzYwODACXzMECHBheW1lbnRzCAULJHQwNTk3NzYwODACXzQEA2ludgkA/AcEBQRhZGRyBQRjYWxsBQZwYXJhbXMFCHBheW1lbnRzAwkAAAIFA2ludgUDaW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERcmVpc3N1ZVNoYXJlVG9rZW4BBmFtb3VudAkBC3ZhbHVlT3JFbHNlAgkBDmlzR2xvYmFsQ2FsbGVyAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAxzaGFyZUFzc2V0SWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUNa1NoYXJlQXNzZXRJZAkAzAgCCQEHUmVpc3N1ZQMFDHNoYXJlQXNzZXRJZAUGYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUMc2hhcmVBc3NldElkBQNuaWwBAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIFE211bHRpU2lnbmVkQnlBZG1pbnNoVo6P", "height": 2276620, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: GzTi56tZmnqnJGUXAt5H7xCPFYXWxkqLY6UJrDuKydnb Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let kActive = "active"
5+
6+let kCause = "shutdown_cause"
7+
8+let kUSDNAddress = "staking_usdnnsbt_address"
9+
10+let kEURNAddress = "staking_eurn_address"
11+
12+let kLeasingPool = "leasing_address"
13+
14+let kLeasingAmount = "leasing_amount"
15+
16+let kLeasingId = "leasing_id"
17+
18+let kAdminPubKey1 = "admin_pub_1"
19+
20+let kAdminPubKey2 = "admin_pub_2"
21+
22+let kAdminPubKey3 = "admin_pub_3"
23+
24+let kAdminInvokePubKey = "admin_invoke_pub"
25+
26+let kCpmmContract = "cpmm_contract"
27+
28+let kUSDNAssetId = "usdn_asset_id"
29+
30+let kEURNAssetId = "eurn_asset_id"
31+
32+let kStakingAssets = "staking_assets"
33+
34+let kShareAssetId = "share_asset_id"
35+
36+let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
37+
38+func getBase58FromOracle (key) = match getString(oracle, key) {
39+ case string: String =>
40+ fromBase58String(string)
41+ case nothing =>
42+ throw((key + "is empty"))
43+}
44+
45+
46+let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
47+
48+let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
49+
50+let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
51+
52+let adminPubKeyInvoke = getBase58FromOracle(kAdminInvokePubKey)
53+
54+let stakingUSDNAddress = Address(getBase58FromOracle(kUSDNAddress))
55+
56+let stakingEURNAddress = Address(getBase58FromOracle(kEURNAddress))
57+
58+let cpmmContract = Address(getBase58FromOracle(kCpmmContract))
59+
60+let USDN = getBase58FromOracle(kUSDNAssetId)
61+
62+let EURN = getBase58FromOracle(kEURNAssetId)
63+
64+let stakingAssets = getStringValue(oracle, kStakingAssets)
65+
66+let active = valueOrElse(getBoolean(this, kActive), true)
67+
68+func isActive () = if (active)
69+ then unit
70+ else throw("DApp is inactive at this moment")
71+
72+
73+func isGlobalCaller (caller) = if ((caller == cpmmContract))
74+ then unit
75+ else throw("Only global Contract can invoke this function")
76+
77+
78+func isAdminCall (callerPubKey) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], callerPubKey))
79+ then unit
80+ else throw("Only admin can call this function")
81+
82+
83+func suspend (cause) = [BooleanEntry(kActive, false), StringEntry(kCause, cause)]
84+
85+
86+func calcStakingFuncAndAddres (stake,assetId) = if (stake)
87+ then if ((assetId == USDN))
88+ then $Tuple2("lockNeutrino", stakingUSDNAddress)
89+ else $Tuple2("startStaking", stakingEURNAddress)
90+ else if ((assetId == USDN))
91+ then $Tuple2("unlockNeutrino", stakingUSDNAddress)
92+ else $Tuple2("stopStaking", stakingEURNAddress)
93+
94+
95+func calcStakingParams (stake,amount,assetId) = if (stake)
96+ then {
97+ let $t024732539 = calcStakingFuncAndAddres(stake, assetId)
98+ let call = $t024732539._1
99+ let stakingAddr = $t024732539._2
100+ $Tuple4(call, stakingAddr, nil, [AttachedPayment(assetId, amount)])
101+ }
102+ else {
103+ let $t026252691 = calcStakingFuncAndAddres(stake, assetId)
104+ let call = $t026252691._1
105+ let stakingAddr = $t026252691._2
106+ $Tuple4(call, stakingAddr, [amount, toBase58String(assetId)], nil)
107+ }
108+
109+
110+func collectPayments (acc,payment) = {
111+ let $t028532896 = acc
112+ let paymentAmounts = $t028532896._1
113+ let paymentAssetIds = $t028532896._2
114+ $Tuple2((paymentAmounts :+ payment.amount), (paymentAssetIds :+ (if ((payment.assetId == unit))
115+ then base58''
116+ else payment.assetId)))
117+ }
118+
119+
120+func collectState (result,source) = match source {
121+ case e: Issue|Burn|Reissue|ScriptTransfer|BinaryEntry|BooleanEntry|StringEntry|IntegerEntry =>
122+ (result :+ e)
123+ case _ =>
124+ result
125+}
126+
127+
128+func collectData (result,source) = match source {
129+ case v: String =>
130+ (result :+ v)
131+ case v: Int =>
132+ (result :+ v)
133+ case v: Boolean =>
134+ (result :+ v)
135+ case v: ByteVector =>
136+ (result :+ v)
137+ case _ =>
138+ throw()
139+}
140+
141+
142+@Callable(i)
143+func callFunction (funcName,args) = valueOrElse(isActive(), {
144+ let $t037383824 = {
145+ let $l = i.payments
146+ let $s = size($l)
147+ let $acc0 = $Tuple2(nil, nil)
148+ func $f0_1 ($a,$i) = if (($i >= $s))
149+ then $a
150+ else collectPayments($a, $l[$i])
151+
152+ func $f0_2 ($a,$i) = if (($i >= $s))
153+ then $a
154+ else throw("List size exceeds 10")
155+
156+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
157+ }
158+ let paymentAmounts = $t037383824._1
159+ let paymentAssetIds = $t037383824._2
160+ let $t038273983 = {
161+ let @ = reentrantInvoke(cpmmContract, funcName, [i.caller.bytes, args, paymentAmounts, paymentAssetIds], nil)
162+ if ($isInstanceOf(@, "(List[Any], List[Any])"))
163+ then @
164+ else throw(($getType(@) + " couldn't be cast to (List[Any], List[Any])"))
165+ }
166+ if (($t038273983 == $t038273983))
167+ then {
168+ let data = $t038273983._2
169+ let actions = $t038273983._1
170+ let mappedData = {
171+ let $l = data
172+ let $s = size($l)
173+ let $acc0 = nil
174+ func $f1_1 ($a,$i) = if (($i >= $s))
175+ then $a
176+ else collectData($a, $l[$i])
177+
178+ func $f1_2 ($a,$i) = if (($i >= $s))
179+ then $a
180+ else throw("List size exceeds 10")
181+
182+ $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
183+ }
184+ let mappedActions = {
185+ let $l = actions
186+ let $s = size($l)
187+ let $acc0 = nil
188+ func $f2_1 ($a,$i) = if (($i >= $s))
189+ then $a
190+ else collectState($a, $l[$i])
191+
192+ func $f2_2 ($a,$i) = if (($i >= $s))
193+ then $a
194+ else throw("List size exceeds 15")
195+
196+ $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
197+ }
198+ $Tuple2(mappedActions, mappedData)
199+ }
200+ else throw("Strict value is not equal to itself.")
201+ })
202+
203+
204+
205+@Callable(i)
206+func shutdown () = valueOrElse(isAdminCall(i.callerPublicKey), if (!(active))
207+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, kCause), "the cause wasn't specified")))
208+ else suspend("Paused by admin"))
209+
210+
211+
212+@Callable(i)
213+func activate () = valueOrElse(isAdminCall(i.callerPublicKey), if (active)
214+ then throw("DApp is already active")
215+ else [BooleanEntry(kActive, true), DeleteEntry(kCause)])
216+
217+
218+
219+@Callable(i)
220+func stakeUnstake (stake,amount,assetIdString) = valueOrElse(isGlobalCaller(i.caller), valueOrElse(isActive(), if ((i.caller != cpmmContract))
221+ then throw("Only global Contract can invoke this function")
222+ else if ((assetIdString == "WAVES"))
223+ then {
224+ let pool = addressFromStringValue(valueOrErrorMessage(getString(oracle, kLeasingPool), "No leasing pool in oracle"))
225+ let leasingId = getBinary(this, kLeasingId)
226+ let leasingAmount = valueOrElse(getInteger(this, kLeasingAmount), 0)
227+ let newLeaseAmount = if (stake)
228+ then (leasingAmount + amount)
229+ else (leasingAmount - amount)
230+ let newLease = Lease(pool, newLeaseAmount)
231+ let newLeaseId = calculateLeaseId(newLease)
232+ let baseEtry = [newLease, BinaryEntry(kLeasingId, newLeaseId), IntegerEntry(kLeasingAmount, newLeaseAmount)]
233+ match leasingId {
234+ case lId: ByteVector =>
235+ ([LeaseCancel(lId)] ++ baseEtry)
236+ case _ =>
237+ baseEtry
238+ }
239+ }
240+ else {
241+ let $t059776080 = calcStakingParams(stake, amount, fromBase58String(assetIdString))
242+ let call = $t059776080._1
243+ let addr = $t059776080._2
244+ let params = $t059776080._3
245+ let payments = $t059776080._4
246+ let inv = invoke(addr, call, params, payments)
247+ if ((inv == inv))
248+ then nil
249+ else throw("Strict value is not equal to itself.")
250+ }))
251+
252+
253+
254+@Callable(i)
255+func reissueShareToken (amount) = valueOrElse(isGlobalCaller(i.caller), valueOrElse(isActive(), {
256+ let shareAssetId = fromBase58String(getStringValue(this, kShareAssetId))
257+[Reissue(shareAssetId, amount, true), ScriptTransfer(i.caller, amount, shareAssetId)]
258+ }))
259+
260+
261+@Verifier(tx)
262+func verify () = {
263+ let multiSignedByAdmins = {
264+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
265+ then 1
266+ else 0
267+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
268+ then 1
269+ else 0
270+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
271+ then 1
272+ else 0
273+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
274+ }
275+ multiSignedByAdmins
276+ }
277+

github/deemru/w8io/3ef1775 
29.95 ms