tx · Dor9dkz3NGwra7PBS2KoRWBdUV8PPPozdoXQBC5TY9f6

3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX:  -0.01400000 Waves

2021.03.18 13:41 [1443067] smart account 3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX > SELF 0.00000000 Waves

{ "type": 13, "id": "Dor9dkz3NGwra7PBS2KoRWBdUV8PPPozdoXQBC5TY9f6", "fee": 1400000, "feeAssetId": null, "timestamp": 1616064069346, "version": 2, "chainId": 84, "sender": "3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX", "senderPublicKey": "Dhv6VmiXeYBexgvExZwJaGUDv5PJQNU8QoLwPhVZXHfE", "proofs": [ "3pCtFnGVXyrYMCFBEZi4PQrTXbB5HfcXq8bs5dTQv2R3JmYtD2G3HvDvdY2wFQvgyaF6nAVD9c1MTTUzRFmwHy8v" ], "script": "base64:AAIEAAAAAAAAACAIAhIDCgEBEgkKBwgEAQEBBAESBQoDCAgBEgUKAwgIBAAAABIAAAAACXNlcGFyYXRvcgIAAAADX19fAAAAABpoYXJkY29yZWRNYXhpbXVtRGVwb3NpdEZlZQAAAAAAAAAAZAAAAAARaGFyZGNvcmVkRGFwcE5hbWUCAAAABkZPS09GRgAAAAAYaGFyZGNvcmVkQXNzZXRJZEZvcldhdmVzAgAAAAVXQVZFUwAAAAAPa2V5QXNzZXRUb1N0YWtlCQABLAAAAAIFAAAAEWhhcmRjb3JlZERhcHBOYW1lAgAAAA5fQXNzZXRUb1N0YWtlXwAAAAAUa2V5QXNzZXRzVG9TdGFrZUxpc3QJAAEsAAAAAgUAAAARaGFyZGNvcmVkRGFwcE5hbWUCAAAAEl9Bc3NldHNUb1N0YWtlTGlzdAAAAAAUa2V5RGVmYXVsdERlcG9zaXRGZWUJAAEsAAAAAgUAAAARaGFyZGNvcmVkRGFwcE5hbWUCAAAAEl9EZWZhdWx0RGVwb3NpdEZlZQAAAAASa2V5U3VmZml4SXNFbmFibGVkAgAAAApfaXNFbmFibGVkAAAAABJrZXlTdWZmaXhNaW5BbW91bnQCAAAADl9taW5pbXVtQW1vdW50AAAAABRrZXlTdWZmaXhBZnRlckhlaWdodAIAAAAdX2FsbG93U3Rha2luZ0FmdGVyQmxvY2tIZWlnaHQAAAAAE2tleVN1ZmZpeEJsb2NrRGVsYXkCAAAAH19CbG9ja3NEZWxheUFmdGVyRGVwb3NpdFRvU3Rha2UAAAAAFmtleVN1ZmZpeEVuYWJsZVNwZWNGZWUCAAAAGV9lbmFibGVTcGVjaWZpY0RlcG9zaXRGZWUAAAAAEGtleVN1ZmZpeFNwZWNGZWUCAAAAE19zcGVjaWZpY0RlcG9zaXRGZWUBAAAAB2lzQWRtaW4AAAABAAAABmNhbGxlcgkAAAAAAAACBQAAAAR0aGlzBQAAAAZjYWxsZXIBAAAAFGFkZEVudHJ5VG9TdHJpbmdMaXN0AAAAAgAAAApzdHJpbmdMaXN0AAAABWVudHJ5AwkAAGYAAAACAAAAAAAAAAABCQABMQAAAAEFAAAACnN0cmluZ0xpc3QFAAAABWVudHJ5CQABLAAAAAIJAAEsAAAAAgUAAAAKc3RyaW5nTGlzdAUAAAAJc2VwYXJhdG9yBQAAAAVlbnRyeQEAAAAUaXNMaXN0ZWRBc3NldFRvU3Rha2UAAAABAAAACmFzc2V0SWRTdHIJAQAAAAhjb250YWlucwAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAFGtleUFzc2V0c1RvU3Rha2VMaXN0BQAAAAphc3NldElkU3RyAQAAAAVpc05GVAAAAAEAAAAIbmZ0QXNzZXQDAwkAAAAAAAACCAUAAAAIbmZ0QXNzZXQAAAAIZGVjaW1hbHMAAAAAAAAAAAAJAAAAAAAAAggFAAAACG5mdEFzc2V0AAAACHF1YW50aXR5AAAAAAAAAAABBwkAAAAAAAACCAUAAAAIbmZ0QXNzZXQAAAAKcmVpc3N1YWJsZQcHAQAAAAxpc1ZhbGlkQXNzZXQAAAABAAAACmFzc2V0SWRTdHIDCQAAAAAAAAIFAAAACmFzc2V0SWRTdHIFAAAAGGhhcmRjb3JlZEFzc2V0SWRGb3JXYXZlcwYEAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAAAphc3NldElkU3RyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAHaXNBc3NldAUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIJAQAAAAVpc05GVAAAAAEFAAAAB2lzQXNzZXQGBgcHAAAABAAAAAFpAQAAABB1cGRhdGVEZWZhdWx0RmVlAAAAAQAAAA1uZXdEZWZhdWx0RmVlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAANbmV3RGVmYXVsdEZlZQYJAABmAAAAAgUAAAANbmV3RGVmYXVsdEZlZQUAAAAaaGFyZGNvcmVkTWF4aW11bURlcG9zaXRGZWUJAAACAAAAAQIAAAAkTmV3IGRlZmF1bHQgZmVlIHJhbmdlIGlzIG5vdCBjb3JyZWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABRrZXlEZWZhdWx0RGVwb3NpdEZlZQUAAAANbmV3RGVmYXVsdEZlZQUAAAADbmlsAAAAAWkBAAAAEmNyZWF0ZUFzc2V0VG9TdGFrZQAAAAcAAAAKYXNzZXRJZFN0cgAAAAxvcHRJc0VuYWJsZWQAAAAMb3B0TWluQW1vdW50AAAAFW9wdEJsb2NrSGVpZ2h0U3Rha2luZwAAABJvcHRCbG9ja1N0YWtlRGVsYXkAAAAUb3B0RW5hYmxlU3BlY2lmaWNGZWUAAAAOb3B0U3BlY2lmaWNGZWUDCQEAAAACIT0AAAACCQEAAAAHaXNBZG1pbgAAAAEIBQAAAAFpAAAABmNhbGxlcgYJAAACAAAAAQIAAAANQWNjZXNzIGRlbmllZAMJAQAAAAIhPQAAAAIJAQAAAAxpc1ZhbGlkQXNzZXQAAAABBQAAAAphc3NldElkU3RyBgkAAAIAAAABAgAAABJOb3QgYW4gdmFsaWQgYXNzZXQDCQEAAAACIT0AAAACCQEAAAAUaXNMaXN0ZWRBc3NldFRvU3Rha2UAAAABBQAAAAphc3NldElkU3RyBwkAAAIAAAABAgAAABdBc3NldCBpcyBhbHJlYWR5IGxpc3RlZAQAAAAOdXBkYXRlZEFUU0xpc3QJAQAAABRhZGRFbnRyeVRvU3RyaW5nTGlzdAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAFGtleUFzc2V0c1RvU3Rha2VMaXN0BQAAAAphc3NldElkU3RyBAAAAAlrZXlPcmlnaW4JAAEsAAAAAgUAAAAPa2V5QXNzZXRUb1N0YWtlBQAAAAphc3NldElkU3RyBAAAABJrZXlPcHRpb25Jc0VuYWJsZWQJAAEsAAAAAgUAAAAJa2V5T3JpZ2luBQAAABJrZXlTdWZmaXhJc0VuYWJsZWQEAAAAFmtleU9wdGlvbk1pbmltdW1BbW91bnQJAAEsAAAAAgUAAAAJa2V5T3JpZ2luBQAAABJrZXlTdWZmaXhNaW5BbW91bnQEAAAAJWtleU9wdGlvbkFsbG93U3Rha2luZ0FmdGVyQmxvY2tIZWlnaHQJAAEsAAAAAgUAAAAJa2V5T3JpZ2luBQAAABRrZXlTdWZmaXhBZnRlckhlaWdodAQAAAAoa2V5T3B0aW9uRGVsYXlJbkJsb2NrQWZ0ZXJEZXBvc2l0VG9TdGFrZQkAASwAAAACBQAAAAlrZXlPcmlnaW4FAAAAE2tleVN1ZmZpeEJsb2NrRGVsYXkEAAAAIWtleU9wdGlvbkVuYWJsZVNwZWNpZmljRGVwb3NpdEZlZQkAASwAAAACBQAAAAlrZXlPcmlnaW4FAAAAFmtleVN1ZmZpeEVuYWJsZVNwZWNGZWUEAAAAG2tleU9wdGlvblNwZWNpZmljRGVwb3NpdEZlZQkAASwAAAACBQAAAAlrZXlPcmlnaW4FAAAAEGtleVN1ZmZpeFNwZWNGZWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUa2V5QXNzZXRzVG9TdGFrZUxpc3QFAAAADnVwZGF0ZWRBVFNMaXN0CQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAABJrZXlPcHRpb25Jc0VuYWJsZWQFAAAADG9wdElzRW5hYmxlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAWa2V5T3B0aW9uTWluaW11bUFtb3VudAUAAAAMb3B0TWluQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACVrZXlPcHRpb25BbGxvd1N0YWtpbmdBZnRlckJsb2NrSGVpZ2h0BQAAABVvcHRCbG9ja0hlaWdodFN0YWtpbmcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAKGtleU9wdGlvbkRlbGF5SW5CbG9ja0FmdGVyRGVwb3NpdFRvU3Rha2UFAAAAEm9wdEJsb2NrU3Rha2VEZWxheQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAha2V5T3B0aW9uRW5hYmxlU3BlY2lmaWNEZXBvc2l0RmVlBQAAABRvcHRFbmFibGVTcGVjaWZpY0ZlZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5T3B0aW9uU3BlY2lmaWNEZXBvc2l0RmVlBQAAAA5vcHRTcGVjaWZpY0ZlZQUAAAADbmlsAAAAAWkBAAAAGHVwZGF0ZUFzc2V0VG9TdGFrZU9wdGlvbgAAAAMAAAAKYXNzZXRJZFN0cgAAAApvcHRpb25OYW1lAAAADm9wdGlvbk5ld1ZhbHVlAwkBAAAAAiE9AAAAAgkBAAAAB2lzQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIGCQAAAgAAAAECAAAADUFjY2VzcyBkZW5pZWQEAAAAB2Z1bGxLZXkJAAEsAAAAAgkAASwAAAACBQAAAA9rZXlBc3NldFRvU3Rha2UFAAAACmFzc2V0SWRTdHIFAAAACm9wdGlvbk5hbWUEAAAACmN1cnJlbnRPcHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAB2Z1bGxLZXkDCQAAAAAAAAIFAAAACmN1cnJlbnRPcHQFAAAADm9wdGlvbk5ld1ZhbHVlCQAAAgAAAAECAAAAIFZhbHVlIHRvIHVwZGF0ZSA9PSBjdXJyZW50IHZhbHVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAdmdWxsS2V5BQAAAA5vcHRpb25OZXdWYWx1ZQUAAAADbmlsAAAAAWkBAAAAGGVuYWJsZUFzc2V0VG9TdGFrZU9wdGlvbgAAAAMAAAAKYXNzZXRJZFN0cgAAAApvcHRpb25OYW1lAAAADm9wdGlvbk5ld1ZhbHVlAwkBAAAAAiE9AAAAAgkBAAAAB2lzQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIGCQAAAgAAAAECAAAADUFjY2VzcyBkZW5pZWQEAAAAB2Z1bGxLZXkJAAEsAAAAAgkAASwAAAACBQAAAA9rZXlBc3NldFRvU3Rha2UFAAAACmFzc2V0SWRTdHIFAAAACm9wdGlvbk5hbWUEAAAACmN1cnJlbnRPcHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAAB2Z1bGxLZXkDCQAAAAAAAAIFAAAACmN1cnJlbnRPcHQFAAAADm9wdGlvbk5ld1ZhbHVlCQAAAgAAAAECAAAAIFZhbHVlIHRvIHVwZGF0ZSA9PSBjdXJyZW50IHZhbHVlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAdmdWxsS2V5BQAAAA5vcHRpb25OZXdWYWx1ZQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXnCCQ8V", "height": 1443067, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 6HvqjYAMt2LqQy4vHKNBrxUrcfBGGqykrcmE9f63YhuS Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let separator = "___"
5+
6+let hardcoredMaximumDepositFee = 100
7+
8+let hardcoredDappName = "FOKOFF"
9+
10+let hardcoredAssetIdForWaves = "WAVES"
11+
12+let keyAssetToStake = (hardcoredDappName + "_AssetToStake_")
13+
14+let keyAssetsToStakeList = (hardcoredDappName + "_AssetsToStakeList")
15+
16+let keyDefaultDepositFee = (hardcoredDappName + "_DefaultDepositFee")
17+
18+let keySuffixIsEnabled = "_isEnabled"
19+
20+let keySuffixMinAmount = "_minimumAmount"
21+
22+let keySuffixAfterHeight = "_allowStakingAfterBlockHeight"
23+
24+let keySuffixBlockDelay = "_BlocksDelayAfterDepositToStake"
25+
26+let keySuffixEnableSpecFee = "_enableSpecificDepositFee"
27+
28+let keySuffixSpecFee = "_specificDepositFee"
29+
30+func isAdmin (caller) = (this == caller)
31+
32+
33+func addEntryToStringList (stringList,entry) = if ((1 > size(stringList)))
34+ then entry
35+ else ((stringList + separator) + entry)
36+
37+
38+func isListedAssetToStake (assetIdStr) = contains(getStringValue(this, keyAssetsToStakeList), assetIdStr)
39+
40+
41+func isNFT (nftAsset) = if (if ((nftAsset.decimals == 0))
42+ then (nftAsset.quantity == 1)
43+ else false)
44+ then (nftAsset.reissuable == false)
45+ else false
46+
47+
48+func isValidAsset (assetIdStr) = if ((assetIdStr == hardcoredAssetIdForWaves))
49+ then true
50+ else match assetInfo(fromBase58String(assetIdStr)) {
51+ case isAsset: Asset =>
52+ if ((isNFT(isAsset) != true))
53+ then true
54+ else false
55+ case _ =>
56+ false
57+ }
58+
59+
60+@Callable(i)
61+func updateDefaultFee (newDefaultFee) = if (if ((0 > newDefaultFee))
62+ then true
63+ else (newDefaultFee > hardcoredMaximumDepositFee))
64+ then throw("New default fee range is not correct")
65+ else [IntegerEntry(keyDefaultDepositFee, newDefaultFee)]
66+
67+
68+
69+@Callable(i)
70+func createAssetToStake (assetIdStr,optIsEnabled,optMinAmount,optBlockHeightStaking,optBlockStakeDelay,optEnableSpecificFee,optSpecificFee) = if ((isAdmin(i.caller) != true))
71+ then throw("Access denied")
72+ else if ((isValidAsset(assetIdStr) != true))
73+ then throw("Not an valid asset")
74+ else if ((isListedAssetToStake(assetIdStr) != false))
75+ then throw("Asset is already listed")
76+ else {
77+ let updatedATSList = addEntryToStringList(getStringValue(this, keyAssetsToStakeList), assetIdStr)
78+ let keyOrigin = (keyAssetToStake + assetIdStr)
79+ let keyOptionIsEnabled = (keyOrigin + keySuffixIsEnabled)
80+ let keyOptionMinimumAmount = (keyOrigin + keySuffixMinAmount)
81+ let keyOptionAllowStakingAfterBlockHeight = (keyOrigin + keySuffixAfterHeight)
82+ let keyOptionDelayInBlockAfterDepositToStake = (keyOrigin + keySuffixBlockDelay)
83+ let keyOptionEnableSpecificDepositFee = (keyOrigin + keySuffixEnableSpecFee)
84+ let keyOptionSpecificDepositFee = (keyOrigin + keySuffixSpecFee)
85+[StringEntry(keyAssetsToStakeList, updatedATSList), BooleanEntry(keyOptionIsEnabled, optIsEnabled), IntegerEntry(keyOptionMinimumAmount, optMinAmount), IntegerEntry(keyOptionAllowStakingAfterBlockHeight, optBlockHeightStaking), IntegerEntry(keyOptionDelayInBlockAfterDepositToStake, optBlockStakeDelay), BooleanEntry(keyOptionEnableSpecificDepositFee, optEnableSpecificFee), IntegerEntry(keyOptionSpecificDepositFee, optSpecificFee)]
86+ }
87+
88+
89+
90+@Callable(i)
91+func updateAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
92+ then throw("Access denied")
93+ else {
94+ let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
95+ let currentOpt = getIntegerValue(this, fullKey)
96+ if ((currentOpt == optionNewValue))
97+ then throw("Value to update == current value")
98+ else [IntegerEntry(fullKey, optionNewValue)]
99+ }
100+
101+
102+
103+@Callable(i)
104+func enableAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
105+ then throw("Access denied")
106+ else {
107+ let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
108+ let currentOpt = getBooleanValue(this, fullKey)
109+ if ((currentOpt == optionNewValue))
110+ then throw("Value to update == current value")
111+ else [BooleanEntry(fullKey, optionNewValue)]
112+ }
113+
114+
115+@Verifier(tx)
116+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
117+

github/deemru/w8io/169f3d6 
28.17 ms