tx · Bd55XmExNtfgy4yuRLkCxmayqy42evz4cPjPwo8hPyAK

3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua:  -0.01400000 Waves

2021.03.17 13:27 [1441601] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves

{ "type": 13, "id": "Bd55XmExNtfgy4yuRLkCxmayqy42evz4cPjPwo8hPyAK", "fee": 1400000, "feeAssetId": null, "timestamp": 1615976869756, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "5yKcWQUgzm7gCueLMZQRWbioRLSjkMxN8YQDCxVaQnc4U1noGGStNgHmjytGkR8BzsK7896eebqzPiWG9z5EEyqi" ], "script": "base64:AAIEAAAAAAAAAAkIAhIAEgMKAQgAAAAEAAAAAAlzZXBhcmF0b3ICAAAAA19fXwAAAAARa2V5TG9ja2FibGVBc3NldHMCAAAAE2RBcHBfTG9ja2FibGVBc3NldHMBAAAACmNoZWNrQXNzZXQAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAJAAPsAAAAAQUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAAB2lzQXNzZXQFAAAAByRtYXRjaDAGBwEAAAARZ2V0TG9ja2FibGVBc3NldHMAAAAABAAAAAdzdHJMaXN0CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABFrZXlMb2NrYWJsZUFzc2V0cwQAAAAHc3BsaXRlZAkABLUAAAACBQAAAAdzdHJMaXN0BQAAAAlzZXBhcmF0b3IDCQAAZgAAAAIAAAAAAAAAAGQJAAGQAAAAAQUAAAAHc3BsaXRlZAkAAAIAAAABCQABpAAAAAEJAAGQAAAAAQUAAAAHc3BsaXRlZAUAAAAHc3BsaXRlZAAAAAIAAAABaQEAAAAEaW5pdAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa2V5TG9ja2FibGVBc3NldHMCAAAAAAUAAAADbmlsAAAAAWkBAAAAEm9wQWRkTG9ja2FibGVBc3NldAAAAAEAAAAKYXNzZXRJZFN0cgQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphc3NldElkU3RyAwkBAAAAAiE9AAAAAgUAAAAEdGhpcwgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAADUFjY2VzcyBkZW5pZWQDCQAAAAAAAAIJAQAAAApjaGVja0Fzc2V0AAAAAQUAAAAHYXNzZXRJZAcJAAACAAAAAQIAAAAVTm90IGFuIGV4aXN0aW5nIGFzc2V0BAAAAA5sb2NrYWJsZUFzc2V0cwkBAAAAEWdldExvY2thYmxlQXNzZXRzAAAAAAMJAAAAAAAAAgkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADmxvY2thYmxlQXNzZXRzBQAAAAphc3NldElkU3RyBgkAAAIAAAABAgAAABZBc3NldCBhbHJlYWR5IGxvY2thYmxlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtleUxvY2thYmxlQXNzZXRzCQAEuQAAAAIJAARMAAAAAgUAAAAKYXNzZXRJZFN0cgUAAAAObG9ja2FibGVBc3NldHMFAAAACXNlcGFyYXRvcgUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXl55157", "height": 1441601, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EQo1RE32saFNforZA4FDPBjNY1VsVtUGMZxPV1Lgt9LD Next: AKbfDgGo4yC2Wi4D1b3w14ig8fHHyApWqQjPQwfKvSkT Diff:
OldNewDifferences
55
66 let keyLockableAssets = "dApp_LockableAssets"
77
8-func getAssetInfos (assetId) = match assetInfo(assetId) {
8+func checkAsset (assetId) = match assetInfo(assetId) {
99 case isAsset: Asset =>
10- isAsset
10+ true
1111 case _ =>
12- throw("Not an existing asset")
12+ false
1313 }
1414
1515
16-func getLockableAssets () = split(getStringValue(this, keyLockableAssets), separator)
16+func getLockableAssets () = {
17+ let strList = getStringValue(this, keyLockableAssets)
18+ let splited = split(strList, separator)
19+ if ((100 > size(splited)))
20+ then throw(toString(size(splited)))
21+ else splited
22+ }
1723
1824
1925 @Callable(i)
2228
2329
2430 @Callable(i)
25-func opAddLockableAsset (assetIdStr) = if ((this != i.caller))
26- then throw("Access denied")
27- else {
28- let assetId = fromBase58String(assetIdStr)
29- let assetInfos = getAssetInfos(assetId)
30- let lockableAssets = getLockableAssets()
31- if ((containsElement(lockableAssets, assetIdStr) == true))
32- then throw("Asset already lockable")
33- else [StringEntry(keyLockableAssets, makeString(assetIdStr :: lockableAssets, separator))]
34- }
31+func opAddLockableAsset (assetIdStr) = {
32+ let assetId = fromBase58String(assetIdStr)
33+ if ((this != i.caller))
34+ then throw("Access denied")
35+ else if ((checkAsset(assetId) == false))
36+ then throw("Not an existing asset")
37+ else {
38+ let lockableAssets = getLockableAssets()
39+ if ((containsElement(lockableAssets, assetIdStr) == true))
40+ then throw("Asset already lockable")
41+ else [StringEntry(keyLockableAssets, makeString(assetIdStr :: lockableAssets, separator))]
42+ }
43+ }
3544
3645
3746 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "___"
55
66 let keyLockableAssets = "dApp_LockableAssets"
77
8-func getAssetInfos (assetId) = match assetInfo(assetId) {
8+func checkAsset (assetId) = match assetInfo(assetId) {
99 case isAsset: Asset =>
10- isAsset
10+ true
1111 case _ =>
12- throw("Not an existing asset")
12+ false
1313 }
1414
1515
16-func getLockableAssets () = split(getStringValue(this, keyLockableAssets), separator)
16+func getLockableAssets () = {
17+ let strList = getStringValue(this, keyLockableAssets)
18+ let splited = split(strList, separator)
19+ if ((100 > size(splited)))
20+ then throw(toString(size(splited)))
21+ else splited
22+ }
1723
1824
1925 @Callable(i)
2026 func init () = [StringEntry(keyLockableAssets, "")]
2127
2228
2329
2430 @Callable(i)
25-func opAddLockableAsset (assetIdStr) = if ((this != i.caller))
26- then throw("Access denied")
27- else {
28- let assetId = fromBase58String(assetIdStr)
29- let assetInfos = getAssetInfos(assetId)
30- let lockableAssets = getLockableAssets()
31- if ((containsElement(lockableAssets, assetIdStr) == true))
32- then throw("Asset already lockable")
33- else [StringEntry(keyLockableAssets, makeString(assetIdStr :: lockableAssets, separator))]
34- }
31+func opAddLockableAsset (assetIdStr) = {
32+ let assetId = fromBase58String(assetIdStr)
33+ if ((this != i.caller))
34+ then throw("Access denied")
35+ else if ((checkAsset(assetId) == false))
36+ then throw("Not an existing asset")
37+ else {
38+ let lockableAssets = getLockableAssets()
39+ if ((containsElement(lockableAssets, assetIdStr) == true))
40+ then throw("Asset already lockable")
41+ else [StringEntry(keyLockableAssets, makeString(assetIdStr :: lockableAssets, separator))]
42+ }
43+ }
3544
3645
3746 @Verifier(tx)
3847 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
3948

github/deemru/w8io/169f3d6 
29.45 ms