tx · AcpcJRxkdbqQJr84xfp1rMDRV8M7QmodW6Rvb5kpWLPj

3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX:  -0.01400000 Waves

2021.03.19 17:08 [1444722] smart account 3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX > SELF 0.00000000 Waves

{ "type": 13, "id": "AcpcJRxkdbqQJr84xfp1rMDRV8M7QmodW6Rvb5kpWLPj", "fee": 1400000, "feeAssetId": null, "timestamp": 1616162947714, "version": 2, "chainId": 84, "sender": "3N1QJTUhZ6VWAFh4uQvEjtG9AFce38REuyX", "senderPublicKey": "Dhv6VmiXeYBexgvExZwJaGUDv5PJQNU8QoLwPhVZXHfE", "proofs": [ "3WQDU1ZxUrpPfjWZFgXSxXD1TsVM5cg6H7Sva5EJp4ndu2N5wKuyrDSWLt5sCdBJFxaEyUG3kVi5PAaPpjSRDj3k" ], "script": "base64:AAIEAAAAAAAAAAQIAhIAAAAAAAAAAAEAAAABaQEAAAAEY2FsbAAAAAAEAAAABWFzc2V0CQAEQwAAAAcCAAAABUFzc2V0AgAAAAAAAAAAAAAAAAEAAAAAAAAAAAAGBQAAAAR1bml0AAAAAAAAAAAABAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0CQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAAA2JpbgEAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAARib29sBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAADaW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAA3N0cgIAAAAACQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAA3N0cgkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAAB2Fzc2V0SWQAAAAAAAAAAAEHCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAHYXNzZXRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5KOU8bg==", "height": 1444722, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G6ZdB1pvX6ezXVDzKG8rWNLCRYALxYoMPqJbGHxAKqAB Next: Ea9bETiCY3RcofvtZzjQyRhLhgHDiMzQJGiar6vLKr2 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 isNFT (nftAsset) = if (if ((nftAsset.decimals == 0))
39- then (nftAsset.quantity == 1)
40- else false)
41- then (nftAsset.reissuable == false)
42- else false
43-
44-
45-func isValidAsset (assetIdStr) = if ((assetIdStr == hardcoredAssetIdForWaves))
46- then true
47- else match assetInfo(fromBase58String(assetIdStr)) {
48- case isAsset: Asset =>
49- if ((isNFT(isAsset) != true))
50- then true
51- else false
52- case _ =>
53- false
54- }
55-
56-
57-func getStringOrEmpty (keyName) = match getString(this, keyName) {
58- case isStr: String =>
59- isStr
60- case _ =>
61- ""
62-}
63-
64-
65-func isListedAssetToStake (assetIdStr) = contains(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
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 isNFT (nftAsset) = if (if ((nftAsset.decimals == 0))
39- then (nftAsset.quantity == 1)
40- else false)
41- then (nftAsset.reissuable == false)
42- else false
43-
44-
45-func isValidAsset (assetIdStr) = if ((assetIdStr == hardcoredAssetIdForWaves))
46- then true
47- else match assetInfo(fromBase58String(assetIdStr)) {
48- case isAsset: Asset =>
49- if ((isNFT(isAsset) != true))
50- then true
51- else false
52- case _ =>
53- false
54- }
55-
56-
57-func getStringOrEmpty (keyName) = match getString(this, keyName) {
58- case isStr: String =>
59- isStr
60- case _ =>
61- ""
62-}
63-
64-
65-func isListedAssetToStake (assetIdStr) = contains(getStringOrEmpty(keyAssetsToStakeList), assetIdStr)
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 
136.12 ms