tx · AiaYmsFwgMEe37gTwXgCtTtKKArDWLTsDML1J3eXVZrz 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua: -0.01400000 Waves 2021.04.01 13:57 [1463270] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves
{ "type": 13, "id": "AiaYmsFwgMEe37gTwXgCtTtKKArDWLTsDML1J3eXVZrz", "fee": 1400000, "feeAssetId": null, "timestamp": 1617274632478, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "2dXSydHDiZTuGWgCnASquuNLB6T9L7wHybzfvZiLeZagYp4GMxSbmR9k5oZPsPvKDfDJ6jmqNmGSXHzzHeBGQuhb" ], "script": "base64:AAIEAAAAAAAAAAwIAhIDCgEIEgMKAQgAAAACAAAAAAlzZXBhcmF0b3ICAAAAA19fXwAAAAAMa2V5UG9vbHNMaXN0AgAAAApQT09MU19MSVNUAAAAAgAAAAFpAQAAAAdhZGRQb29sAAAAAQAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAAEdGhpcwgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAADUFjY2VzcyBkZW5pZWQDCQAAAAAAAAIJAQAAAAhjb250YWlucwAAAAIFAAAAB2Fzc2V0SWQFAAAACXNlcGFyYXRvcgYJAAACAAAAAQIAAAAZU2VwYXJhdG9yIGZvdW5kIGluIHN0cmluZwQAAAAJYXNzZXREYXRhCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAAA1Vbmtub3duIGFzc2V0BAAAAAlwb29sc0xpc3QJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAxrZXlQb29sc0xpc3QCAAAAAAUAAAAJc2VwYXJhdG9yAwkAAAAAAAACCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9vbHNMaXN0BQAAAAdhc3NldElkBgkAAAIAAAABAgAAABhBc3NldCBhbHJlYWR5IGhhcyBhIHBvb2wEAAAADG5ld1Bvb2xzTGlzdAkABLkAAAACCQAETAAAAAIFAAAAB2Fzc2V0SWQFAAAACXBvb2xzTGlzdAUAAAAJc2VwYXJhdG9yCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtleVBvb2xzTGlzdAUAAAAMbmV3UG9vbHNMaXN0BQAAAANuaWwAAAABaQEAAAAKcmVtb3ZlUG9vbAAAAAEAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIFAAAABHRoaXMIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAAA1BY2Nlc3MgZGVuaWVkBAAAAAlwb29sc0xpc3QJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADGtleVBvb2xzTGlzdAIAAAAITm8gcG9vbHMFAAAACXNlcGFyYXRvcgQAAAAJcG9vbEluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAARPAAAAAgUAAAAJcG9vbHNMaXN0BQAAAAdhc3NldElkAgAAABZObyBwb29sIGZvciB0aGlzIGFzc2V0BAAAAAxuZXdQb29sc0xpc3QJAAS5AAAAAgkABFEAAAACBQAAAAlwb29sc0xpc3QFAAAACXBvb2xJbmRleAUAAAAJc2VwYXJhdG9yCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtleVBvb2xzTGlzdAUAAAAMbmV3UG9vbHNMaXN0BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkaJ00=", "height": 1463270, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4KmcyQi2QQ3359NkwCaJWzYdjxPjxK4gwTNtsB89EcS7 Next: 7kmj5sqRMbheYWBSdUCh5ub32G9mYet1Na2snBtjZ7d6 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let separator = "___" | |
5 | + | ||
6 | + | let keyPoolsList = "POOLS_LIST" | |
7 | + | ||
8 | + | @Callable(i) | |
9 | + | func addPool (assetId) = if ((this != i.caller)) | |
10 | + | then throw("Access denied") | |
11 | + | else if ((contains(assetId, separator) == true)) | |
12 | + | then throw("Separator found in string") | |
13 | + | else { | |
14 | + | let assetData = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Unknown asset") | |
15 | + | let poolsList = split(valueOrElse(getString(this, keyPoolsList), ""), separator) | |
16 | + | if ((containsElement(poolsList, assetId) == true)) | |
17 | + | then throw("Asset already has a pool") | |
18 | + | else { | |
19 | + | let newPoolsList = makeString(assetId :: poolsList, separator) | |
20 | + | [StringEntry(keyPoolsList, newPoolsList)] | |
21 | + | } | |
22 | + | } | |
23 | + | ||
4 | 24 | ||
5 | 25 | ||
6 | 26 | @Callable(i) | |
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 | - | } | |
27 | + | func removePool (assetId) = if ((this != i.caller)) | |
28 | + | then throw("Access denied") | |
29 | + | else { | |
30 | + | let poolsList = split(valueOrErrorMessage(getString(this, keyPoolsList), "No pools"), separator) | |
31 | + | let poolIndex = valueOrErrorMessage(indexOf(poolsList, assetId), "No pool for this asset") | |
32 | + | let newPoolsList = makeString(removeByIndex(poolsList, poolIndex), separator) | |
33 | + | [StringEntry(keyPoolsList, newPoolsList)] | |
34 | + | } | |
12 | 35 | ||
13 | 36 | ||
14 | 37 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let separator = "___" | |
5 | + | ||
6 | + | let keyPoolsList = "POOLS_LIST" | |
7 | + | ||
8 | + | @Callable(i) | |
9 | + | func addPool (assetId) = if ((this != i.caller)) | |
10 | + | then throw("Access denied") | |
11 | + | else if ((contains(assetId, separator) == true)) | |
12 | + | then throw("Separator found in string") | |
13 | + | else { | |
14 | + | let assetData = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Unknown asset") | |
15 | + | let poolsList = split(valueOrElse(getString(this, keyPoolsList), ""), separator) | |
16 | + | if ((containsElement(poolsList, assetId) == true)) | |
17 | + | then throw("Asset already has a pool") | |
18 | + | else { | |
19 | + | let newPoolsList = makeString(assetId :: poolsList, separator) | |
20 | + | [StringEntry(keyPoolsList, newPoolsList)] | |
21 | + | } | |
22 | + | } | |
23 | + | ||
4 | 24 | ||
5 | 25 | ||
6 | 26 | @Callable(i) | |
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 | - | } | |
27 | + | func removePool (assetId) = if ((this != i.caller)) | |
28 | + | then throw("Access denied") | |
29 | + | else { | |
30 | + | let poolsList = split(valueOrErrorMessage(getString(this, keyPoolsList), "No pools"), separator) | |
31 | + | let poolIndex = valueOrErrorMessage(indexOf(poolsList, assetId), "No pool for this asset") | |
32 | + | let newPoolsList = makeString(removeByIndex(poolsList, poolIndex), separator) | |
33 | + | [StringEntry(keyPoolsList, newPoolsList)] | |
34 | + | } | |
12 | 35 | ||
13 | 36 | ||
14 | 37 | @Verifier(tx) | |
15 | 38 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
16 | 39 |
github/deemru/w8io/169f3d6 41.87 ms ◑![]()