tx · F4jVT4YahcqoGxCvTcEDRB85nev78NgXjtdtT2kUZncW

3N4krpNZH3wkcGUaP33dgeUFWtHwynPqekk:  -0.03400000 Waves

2022.07.14 00:11 [2138480] smart account 3N4krpNZH3wkcGUaP33dgeUFWtHwynPqekk > SELF 0.00000000 Waves

{ "type": 13, "id": "F4jVT4YahcqoGxCvTcEDRB85nev78NgXjtdtT2kUZncW", "fee": 3400000, "feeAssetId": null, "timestamp": 1657746713323, "version": 2, "chainId": 84, "sender": "3N4krpNZH3wkcGUaP33dgeUFWtHwynPqekk", "senderPublicKey": "DX1JDZPT4ZYQ58Jy3oYKk9K8ojvUapLgAQbvGjpEqVnw", "proofs": [ "36AJVpwSiAPNxgvKQF4WBbKtFCsX4g7TFVJ19NwtDyL6U6T7D3keSe6yWYABaBMfWTmetD7yQjD99XsoLN1CYJkb" ], "script": "base64:AAIFAAAAAAAAAA4IAhIDCgEIEgMKAQESAAAAABQAAAAAC2tfaW5zdXJhbmNlAgAAAAtrX2luc3VyYW5jZQAAAAAUa19jb29yZGluYXRvckFkZHJlc3MCAAAAFGtfY29vcmRpbmF0b3JBZGRyZXNzAAAAAAVrX2FtbQIAAAAFa19hbW0AAAAAD2tfYWRtaW5fYWRkcmVzcwIAAAAPa19hZG1pbl9hZGRyZXNzAAAAABJrX2FkbWluX3B1YmxpY19rZXkCAAAAEmtfYWRtaW5fcHVibGljX2tleQAAAAANa19xdW90ZV9hc3NldAIAAAANa19xdW90ZV9hc3NldAAAAAAPa19xdW90ZV9zdGFraW5nAgAAAA9rX3F1b3RlX3N0YWtpbmcAAAAAEWtfc3Rha2luZ19hZGRyZXNzAgAAABFrX3N0YWtpbmdfYWRkcmVzcwAAAAANa19pbml0aWFsaXplZAIAAAANa19pbml0aWFsaXplZAEAAAAOdG9Db21wb3NpdGVLZXkAAAACAAAABF9rZXkAAAAIX2FkZHJlc3MJAAEsAAAAAgkAASwAAAACBQAAAARfa2V5AgAAAAFfBQAAAAhfYWRkcmVzcwEAAAAJaW5zdXJhbmNlAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAtrX2luc3VyYW5jZQAAAAAAAAAAAAEAAAALY29vcmRpbmF0b3IAAAAACQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAUa19jb29yZGluYXRvckFkZHJlc3MCAAAAE0Nvb3JkaW5hdG9yIG5vdCBzZXQBAAAAC2lzV2hpdGVsaXN0AAAAAQAAAAhfYWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACCQEAAAALY29vcmRpbmF0b3IAAAAACQEAAAAOdG9Db21wb3NpdGVLZXkAAAACBQAAAAVrX2FtbQUAAAAIX2FkZHJlc3MHAQAAAAtpbml0aWFsaXplZAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAANa19pbml0aWFsaXplZAcBAAAADGFkbWluQWRkcmVzcwAAAAAJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAAPa19hZG1pbl9hZGRyZXNzAQAAAA5hZG1pblB1YmxpY0tleQAAAAAJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAASa19hZG1pbl9wdWJsaWNfa2V5AQAAAApxdW90ZUFzc2V0AAAAAAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAALY29vcmRpbmF0b3IAAAAABQAAAA1rX3F1b3RlX2Fzc2V0AQAAABFxdW90ZUFzc2V0U3Rha2luZwAAAAAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAALY29vcmRpbmF0b3IAAAAABQAAAA9rX3F1b3RlX3N0YWtpbmcCAAAAG1F1b3RlIGFzc2V0IHN0YWtpbmcgbm90IHNldAEAAAAOc3Rha2luZ0FkZHJlc3MAAAAACQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAARa19zdGFraW5nX2FkZHJlc3MCAAAAEUluc3VyYW5jZSBub3Qgc2V0AQAAAA91cGRhdGVJbnN1cmFuY2UAAAABAAAAAWkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tfaW5zdXJhbmNlBQAAAAFpBQAAAANuaWwAAAADAAAAAWkBAAAACmluaXRpYWxpemUAAAABAAAADF9jb29yZGluYXRvcgMJAQAAAAtpbml0aWFsaXplZAAAAAAJAAACAAAAAQIAAAATQWxyZWFkeSBpbml0aWFsaXplZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUAAAAMX2Nvb3JkaW5hdG9yCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA1rX2luaXRpYWxpemVkBgUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAdfYW1vdW50AwMDCQEAAAABIQAAAAEJAQAAAAtpc1doaXRlbGlzdAAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkBAAAAASEAAAABCQEAAAALaW5pdGlhbGl6ZWQAAAAABgkAAGYAAAACBQAAAAdfYW1vdW50CQEAAAAJaW5zdXJhbmNlAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABhJbnZhbGlkIHdpdGhkcmF3IHBhcmFtcyAJAAGkAAAAAQUAAAAHX2Ftb3VudAIAAAADID4gCQABpAAAAAEJAQAAAAlpbnN1cmFuY2UAAAAABAAAAAd1bnN0YWtlCQAD/AAAAAQJAQAAABFxdW90ZUFzc2V0U3Rha2luZwAAAAACAAAADnVubG9ja05ldXRyaW5vCQAETAAAAAIFAAAAB19hbW91bnQJAARMAAAAAgkAAlgAAAABCQEAAAAKcXVvdGVBc3NldAAAAAAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAd1bnN0YWtlBQAAAAd1bnN0YWtlCQAETgAAAAIJAQAAAA91cGRhdGVJbnN1cmFuY2UAAAABCQAAZQAAAAIJAQAAAAlpbnN1cmFuY2UAAAAABQAAAAdfYW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAHX2Ftb3VudAkBAAAACnF1b3RlQXNzZXQAAAAABQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAdfYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQDAwMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQJAQAAAApxdW90ZUFzc2V0AAAAAAYJAQAAAAEhAAAAAQkBAAAAC2luaXRpYWxpemVkAAAAAAYDCQEAAAABIQAAAAEJAQAAAAtpc1doaXRlbGlzdAAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAAAxhZG1pbkFkZHJlc3MAAAAABwkAAAIAAAABAgAAABZJbnZhbGlkIGRlcG9zaXQgcGFyYW1zBAAAAAVzdGFrZQkAA/wAAAAECQEAAAARcXVvdGVBc3NldFN0YWtpbmcAAAAAAgAAAAxsb2NrTmV1dHJpbm8FAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAACnF1b3RlQXNzZXQAAAAABQAAAAdfYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAABXN0YWtlBQAAAAVzdGFrZQkBAAAAD3VwZGF0ZUluc3VyYW5jZQAAAAEJAABkAAAAAgkBAAAACWluc3VyYW5jZQAAAAAFAAAAB19hbW91bnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAQAAAA5hZG1pblB1YmxpY0tleQAAAABs+eQR", "height": 2138480, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let k_insurance = "k_insurance"
5+
6+let k_coordinatorAddress = "k_coordinatorAddress"
7+
8+let k_amm = "k_amm"
9+
10+let k_admin_address = "k_admin_address"
11+
12+let k_admin_public_key = "k_admin_public_key"
13+
14+let k_quote_asset = "k_quote_asset"
15+
16+let k_quote_staking = "k_quote_staking"
17+
18+let k_staking_address = "k_staking_address"
19+
20+let k_initialized = "k_initialized"
21+
22+func toCompositeKey (_key,_address) = ((_key + "_") + _address)
23+
24+
25+func insurance () = valueOrElse(getInteger(this, k_insurance), 0)
26+
27+
28+func coordinator () = valueOrErrorMessage(addressFromString(getStringValue(this, k_coordinatorAddress)), "Coordinator not set")
29+
30+
31+func isWhitelist (_address) = valueOrElse(getBoolean(coordinator(), toCompositeKey(k_amm, _address)), false)
32+
33+
34+func initialized () = valueOrElse(getBoolean(this, k_initialized), false)
35+
36+
37+func adminAddress () = addressFromString(getStringValue(coordinator(), k_admin_address))
38+
39+
40+func adminPublicKey () = fromBase58String(getStringValue(coordinator(), k_admin_public_key))
41+
42+
43+func quoteAsset () = fromBase58String(getStringValue(coordinator(), k_quote_asset))
44+
45+
46+func quoteAssetStaking () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_quote_staking)), "Quote asset staking not set")
47+
48+
49+func stakingAddress () = valueOrErrorMessage(addressFromString(getStringValue(coordinator(), k_staking_address)), "Insurance not set")
50+
51+
52+func updateInsurance (i) = [IntegerEntry(k_insurance, i)]
53+
54+
55+@Callable(i)
56+func initialize (_coordinator) = if (initialized())
57+ then throw("Already initialized")
58+ else [StringEntry(k_coordinatorAddress, _coordinator), BooleanEntry(k_initialized, true)]
59+
60+
61+
62+@Callable(i)
63+func withdraw (_amount) = if (if (if (!(isWhitelist(toString(i.caller))))
64+ then true
65+ else !(initialized()))
66+ then true
67+ else (_amount > insurance()))
68+ then throw(((("Invalid withdraw params " + toString(_amount)) + " > ") + toString(insurance())))
69+ else {
70+ let unstake = invoke(quoteAssetStaking(), "unlockNeutrino", [_amount, toBase58String(quoteAsset())], nil)
71+ if ((unstake == unstake))
72+ then (updateInsurance((insurance() - _amount)) ++ [ScriptTransfer(i.caller, _amount, quoteAsset())])
73+ else throw("Strict value is not equal to itself.")
74+ }
75+
76+
77+
78+@Callable(i)
79+func deposit () = {
80+ let _amount = i.payments[0].amount
81+ if (if (if ((i.payments[0].assetId != quoteAsset()))
82+ then true
83+ else !(initialized()))
84+ then true
85+ else if (!(isWhitelist(toString(i.caller))))
86+ then (i.caller != adminAddress())
87+ else false)
88+ then throw("Invalid deposit params")
89+ else {
90+ let stake = invoke(quoteAssetStaking(), "lockNeutrino", nil, [AttachedPayment(quoteAsset(), _amount)])
91+ if ((stake == stake))
92+ then updateInsurance((insurance() + _amount))
93+ else throw("Strict value is not equal to itself.")
94+ }
95+ }
96+
97+
98+@Verifier(tx)
99+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], adminPublicKey())
100+

github/deemru/w8io/169f3d6 
33.06 ms