tx · 3ZBXayPTm9ZUz9K3hjNoT4ztiF7DyjT82ZRuTPfFi7RA

3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX:  -0.01400000 Waves

2021.03.18 18:59 [1443387] smart account 3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX > SELF 0.00000000 Waves

{ "type": 13, "id": "3ZBXayPTm9ZUz9K3hjNoT4ztiF7DyjT82ZRuTPfFi7RA", "fee": 1400000, "feeAssetId": null, "timestamp": 1616083198180, "version": 2, "chainId": 84, "sender": "3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX", "senderPublicKey": "Dhv6VmiXeYBexgvExZwJaGUDv5PJQNU8QoLwPhVZXHfE", "proofs": [ "3a5z25t49qifjLqBFgPdixpx4MASf8oMnSc2eitP4auJUc8bubNroQhxzLECWgrRu7soCKJ5eD4csX7SBPMecD19" ], "script": "base64:AAIEAAAAAAAAAAQIAhIAAAAAAAAAAAEAAAABaQEAAAAEY2FsbAAAAAAEAAAABWFzc2V0CQAEQwAAAAcCAAAABUFzc2V0AgAAAAAAAAAAAAAAAAEAAAAAAAAAAAAGBQAAAAR1bml0AAAAAAAAAAAABAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0CQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAAA2JpbgEAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAARib29sBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAADaW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAA3N0cgIAAAAACQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAA3N0cgkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAAB2Fzc2V0SWQAAAAAAAAAAAEHCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAHYXNzZXRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5KOU8bg==", "height": 1443387, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6HvqjYAMt2LqQy4vHKNBrxUrcfBGGqykrcmE9f63YhuS Next: 6mabcnjvqRJNMjUAnXZtnqQjYVTTi67tsFahS5mCosNs Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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-func getStringOrEmpty (keyName) = match getString(this, keyName) {
61- case isStr: String =>
62- isStr
63- case _ =>
64- ""
65-}
664
675
686 @Callable(i)
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)]
76-
77-
78-
79-@Callable(i)
80-func createAssetToStake (assetIdStr,optIsEnabled,optMinAmount,optBlockHeightStaking,optBlockStakeDelay,optEnableSpecificFee,optSpecificFee) = if ((isAdmin(i.caller) != true))
81- then throw("Access denied")
82- else if ((isValidAsset(assetIdStr) != true))
83- then throw("Not an valid asset")
84- else if ((isListedAssetToStake(assetIdStr) != false))
85- then throw("Asset is already listed")
86- else {
87- let updatedATSList = addEntryToStringList(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
88- let keyOrigin = (keyAssetToStake + assetIdStr)
89- let keyOptionIsEnabled = (keyOrigin + keySuffixIsEnabled)
90- let keyOptionMinimumAmount = (keyOrigin + keySuffixMinAmount)
91- let keyOptionAllowStakingAfterBlockHeight = (keyOrigin + keySuffixAfterHeight)
92- let keyOptionDelayInBlockAfterDepositToStake = (keyOrigin + keySuffixBlockDelay)
93- let keyOptionEnableSpecificDepositFee = (keyOrigin + keySuffixEnableSpecFee)
94- let keyOptionSpecificDepositFee = (keyOrigin + keySuffixSpecFee)
95-[StringEntry(keyAssetsToStakeList, updatedATSList), BooleanEntry(keyOptionIsEnabled, optIsEnabled), IntegerEntry(keyOptionMinimumAmount, optMinAmount), IntegerEntry(keyOptionAllowStakingAfterBlockHeight, optBlockHeightStaking), IntegerEntry(keyOptionDelayInBlockAfterDepositToStake, optBlockStakeDelay), BooleanEntry(keyOptionEnableSpecificDepositFee, optEnableSpecificFee), IntegerEntry(keyOptionSpecificDepositFee, optSpecificFee)]
96- }
97-
98-
99-
100-@Callable(i)
101-func updateAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
102- then throw("Access denied")
103- else {
104- let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
105- let currentOpt = getIntegerValue(this, fullKey)
106- if ((currentOpt == optionNewValue))
107- then throw("Value to update == current value")
108- else [IntegerEntry(fullKey, optionNewValue)]
109- }
110-
111-
112-
113-@Callable(i)
114-func enableAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
115- then throw("Access denied")
116- else {
117- let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
118- let currentOpt = getBooleanValue(this, fullKey)
119- if ((currentOpt == optionNewValue))
120- then throw("Value to update == current value")
121- else [BooleanEntry(fullKey, optionNewValue)]
122- }
7+func call () = {
8+ let asset = Issue("Asset", "", 1, 0, true, unit, 0)
9+ let assetId = calculateAssetId(asset)
10+[BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), asset, Reissue(assetId, 1, false), Burn(assetId, 1), ScriptTransfer(i.caller, 1, assetId)]
11+ }
12312
12413
12514 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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-func getStringOrEmpty (keyName) = match getString(this, keyName) {
61- case isStr: String =>
62- isStr
63- case _ =>
64- ""
65-}
664
675
686 @Callable(i)
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)]
76-
77-
78-
79-@Callable(i)
80-func createAssetToStake (assetIdStr,optIsEnabled,optMinAmount,optBlockHeightStaking,optBlockStakeDelay,optEnableSpecificFee,optSpecificFee) = if ((isAdmin(i.caller) != true))
81- then throw("Access denied")
82- else if ((isValidAsset(assetIdStr) != true))
83- then throw("Not an valid asset")
84- else if ((isListedAssetToStake(assetIdStr) != false))
85- then throw("Asset is already listed")
86- else {
87- let updatedATSList = addEntryToStringList(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
88- let keyOrigin = (keyAssetToStake + assetIdStr)
89- let keyOptionIsEnabled = (keyOrigin + keySuffixIsEnabled)
90- let keyOptionMinimumAmount = (keyOrigin + keySuffixMinAmount)
91- let keyOptionAllowStakingAfterBlockHeight = (keyOrigin + keySuffixAfterHeight)
92- let keyOptionDelayInBlockAfterDepositToStake = (keyOrigin + keySuffixBlockDelay)
93- let keyOptionEnableSpecificDepositFee = (keyOrigin + keySuffixEnableSpecFee)
94- let keyOptionSpecificDepositFee = (keyOrigin + keySuffixSpecFee)
95-[StringEntry(keyAssetsToStakeList, updatedATSList), BooleanEntry(keyOptionIsEnabled, optIsEnabled), IntegerEntry(keyOptionMinimumAmount, optMinAmount), IntegerEntry(keyOptionAllowStakingAfterBlockHeight, optBlockHeightStaking), IntegerEntry(keyOptionDelayInBlockAfterDepositToStake, optBlockStakeDelay), BooleanEntry(keyOptionEnableSpecificDepositFee, optEnableSpecificFee), IntegerEntry(keyOptionSpecificDepositFee, optSpecificFee)]
96- }
97-
98-
99-
100-@Callable(i)
101-func updateAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
102- then throw("Access denied")
103- else {
104- let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
105- let currentOpt = getIntegerValue(this, fullKey)
106- if ((currentOpt == optionNewValue))
107- then throw("Value to update == current value")
108- else [IntegerEntry(fullKey, optionNewValue)]
109- }
110-
111-
112-
113-@Callable(i)
114-func enableAssetToStakeOption (assetIdStr,optionName,optionNewValue) = if ((isAdmin(i.caller) != true))
115- then throw("Access denied")
116- else {
117- let fullKey = ((keyAssetToStake + assetIdStr) + optionName)
118- let currentOpt = getBooleanValue(this, fullKey)
119- if ((currentOpt == optionNewValue))
120- then throw("Value to update == current value")
121- else [BooleanEntry(fullKey, optionNewValue)]
122- }
7+func call () = {
8+ let asset = Issue("Asset", "", 1, 0, true, unit, 0)
9+ let assetId = calculateAssetId(asset)
10+[BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), asset, Reissue(assetId, 1, false), Burn(assetId, 1), ScriptTransfer(i.caller, 1, assetId)]
11+ }
12312
12413
12514 @Verifier(tx)
12615 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
12716

github/deemru/w8io/169f3d6 
32.08 ms