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