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:
OldNewDifferences
5757 }
5858
5959
60+func getStringOrEmpty (keyName) = match getString(this, keyName) {
61+ case isStr: String =>
62+ isStr
63+ case _ =>
64+ ""
65+}
66+
67+
6068 @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)]
6676
6777
6878
7484 else if ((isListedAssetToStake(assetIdStr) != false))
7585 then throw("Asset is already listed")
7686 else {
77- let updatedATSList = addEntryToStringList(getStringValue(this, keyAssetsToStakeList), assetIdStr)
87+ let updatedATSList = addEntryToStringList(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
7888 let keyOrigin = (keyAssetToStake + assetIdStr)
7989 let keyOptionIsEnabled = (keyOrigin + keySuffixIsEnabled)
8090 let keyOptionMinimumAmount = (keyOrigin + keySuffixMinAmount)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "___"
55
66 let hardcoredMaximumDepositFee = 100
77
88 let hardcoredDappName = "FOKOFF"
99
1010 let hardcoredAssetIdForWaves = "WAVES"
1111
1212 let keyAssetToStake = (hardcoredDappName + "_AssetToStake_")
1313
1414 let keyAssetsToStakeList = (hardcoredDappName + "_AssetsToStakeList")
1515
1616 let keyDefaultDepositFee = (hardcoredDappName + "_DefaultDepositFee")
1717
1818 let keySuffixIsEnabled = "_isEnabled"
1919
2020 let keySuffixMinAmount = "_minimumAmount"
2121
2222 let keySuffixAfterHeight = "_allowStakingAfterBlockHeight"
2323
2424 let keySuffixBlockDelay = "_BlocksDelayAfterDepositToStake"
2525
2626 let keySuffixEnableSpecFee = "_enableSpecificDepositFee"
2727
2828 let keySuffixSpecFee = "_specificDepositFee"
2929
3030 func isAdmin (caller) = (this == caller)
3131
3232
3333 func addEntryToStringList (stringList,entry) = if ((1 > size(stringList)))
3434 then entry
3535 else ((stringList + separator) + entry)
3636
3737
3838 func isListedAssetToStake (assetIdStr) = contains(getStringValue(this, keyAssetsToStakeList), assetIdStr)
3939
4040
4141 func isNFT (nftAsset) = if (if ((nftAsset.decimals == 0))
4242 then (nftAsset.quantity == 1)
4343 else false)
4444 then (nftAsset.reissuable == false)
4545 else false
4646
4747
4848 func isValidAsset (assetIdStr) = if ((assetIdStr == hardcoredAssetIdForWaves))
4949 then true
5050 else match assetInfo(fromBase58String(assetIdStr)) {
5151 case isAsset: Asset =>
5252 if ((isNFT(isAsset) != true))
5353 then true
5454 else false
5555 case _ =>
5656 false
5757 }
5858
5959
60+func getStringOrEmpty (keyName) = match getString(this, keyName) {
61+ case isStr: String =>
62+ isStr
63+ case _ =>
64+ ""
65+}
66+
67+
6068 @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)]
6676
6777
6878
6979 @Callable(i)
7080 func createAssetToStake (assetIdStr,optIsEnabled,optMinAmount,optBlockHeightStaking,optBlockStakeDelay,optEnableSpecificFee,optSpecificFee) = if ((isAdmin(i.caller) != true))
7181 then throw("Access denied")
7282 else if ((isValidAsset(assetIdStr) != true))
7383 then throw("Not an valid asset")
7484 else if ((isListedAssetToStake(assetIdStr) != false))
7585 then throw("Asset is already listed")
7686 else {
77- let updatedATSList = addEntryToStringList(getStringValue(this, keyAssetsToStakeList), assetIdStr)
87+ let updatedATSList = addEntryToStringList(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
7888 let keyOrigin = (keyAssetToStake + assetIdStr)
7989 let keyOptionIsEnabled = (keyOrigin + keySuffixIsEnabled)
8090 let keyOptionMinimumAmount = (keyOrigin + keySuffixMinAmount)
8191 let keyOptionAllowStakingAfterBlockHeight = (keyOrigin + keySuffixAfterHeight)
8292 let keyOptionDelayInBlockAfterDepositToStake = (keyOrigin + keySuffixBlockDelay)
8393 let keyOptionEnableSpecificDepositFee = (keyOrigin + keySuffixEnableSpecFee)
8494 let keyOptionSpecificDepositFee = (keyOrigin + keySuffixSpecFee)
8595 [StringEntry(keyAssetsToStakeList, updatedATSList), BooleanEntry(keyOptionIsEnabled, optIsEnabled), IntegerEntry(keyOptionMinimumAmount, optMinAmount), IntegerEntry(keyOptionAllowStakingAfterBlockHeight, optBlockHeightStaking), IntegerEntry(keyOptionDelayInBlockAfterDepositToStake, optBlockStakeDelay), BooleanEntry(keyOptionEnableSpecificDepositFee, optEnableSpecificFee), IntegerEntry(keyOptionSpecificDepositFee, optSpecificFee)]
8696 }
8797
8898
8999
90100 @Callable(i)
91101 func updateAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
92102 then throw("Access denied")
93103 else {
94104 let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
95105 let currentOpt = getIntegerValue(this, fullKey)
96106 if ((currentOpt == optionNewValue))
97107 then throw("Value to update == current value")
98108 else [IntegerEntry(fullKey, optionNewValue)]
99109 }
100110
101111
102112
103113 @Callable(i)
104114 func enableAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
105115 then throw("Access denied")
106116 else {
107117 let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
108118 let currentOpt = getBooleanValue(this, fullKey)
109119 if ((currentOpt == optionNewValue))
110120 then throw("Value to update == current value")
111121 else [BooleanEntry(fullKey, optionNewValue)]
112122 }
113123
114124
115125 @Verifier(tx)
116126 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
117127

github/deemru/w8io/169f3d6 
35.52 ms