tx · 5MV4P83BuhnrM2PGAZ4nqZJN8UEBoeMTqo6CmSsUQUnG

3N4Cinou7W65jPtxbCQfkWvoufpE7EtDxEi:  -0.01000000 Waves

2022.03.02 09:33 [1946001] smart account 3N4Cinou7W65jPtxbCQfkWvoufpE7EtDxEi > SELF 0.00000000 Waves

{ "type": 13, "id": "5MV4P83BuhnrM2PGAZ4nqZJN8UEBoeMTqo6CmSsUQUnG", "fee": 1000000, "feeAssetId": null, "timestamp": 1646202835889, "version": 2, "chainId": 84, "sender": "3N4Cinou7W65jPtxbCQfkWvoufpE7EtDxEi", "senderPublicKey": "9LwVd54LSaLqmYkBabSayYmCmRWHb32zKseLNJeKhaLD", "proofs": [ "2mMaYQHUETJsudqG2xxkGaEQBsDPf1vwQd5MNbs6rrBMuX4xypY3Hcw1sgPoBdRFKXA6kjKszRGTXLVqZ2FoimES" ], "script": "base64:AAIEAAAAAAAAAAYIAhIAEgAAAAAAAAAAAgAAAAFpAQAAAAdhZGRQb29sAAAAAAUAAAADbmlsAAAAAWkBAAAAC2FkZFBvb2xUZXN0AAAAAAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAAZpbnZva2UFAAAAByRtYXRjaDAEAAAADGlzU2VsZkludm9rZQMJAAAAAAAAAggFAAAABmludm9rZQAAAARkQXBwBQAAAAR0aGlzCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACAgAAAAdhZGRQb29sCQAETAAAAAICAAAACnJlbmFtZVBvb2wFAAAAA25pbAgFAAAABmludm9rZQAAAAhmdW5jdGlvbgcDCQAAAAAAAAIJAAGQAAAAAQgFAAAABmludm9rZQAAAAhwYXltZW50cwAAAAAAAAAAAAUAAAAMaXNTZWxmSW52b2tlBwMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABU9yZGVyBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAVU3BvbnNvckZlZVRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABZDcmVhdGVBbGlhc1RyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAWTGVhc2VDYW5jZWxUcmFuc2FjdGlvbgYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAEExlYXNlVHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBJc3N1ZVRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAaVXBkYXRlQXNzZXRJbmZvVHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAGVNldEFzc2V0U2NyaXB0VHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATRXhjaGFuZ2VUcmFuc2FjdGlvbgYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPQnVyblRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABJSZWlzc3VlVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAADdHR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAADdHR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAA3R0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3LThTI7", "height": 1946001, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6uBys4rvihK3X8h8YPUEAVKdF37Fnd67RtH5NgmhCieW Next: Fu3PkFrfwFbBqNhzma4aSAi5M2ggJn6Rbx9xEUoRRJyx Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let keyPoolsListName = "pools"
5-
6-let keyPrefixPoolName = "pool_"
7-
8-let keyPrefixPoolIndex = "index_"
9-
10-let pools = match getString(this, keyPoolsListName) {
11- case string: String =>
12- split(string, ",")
13- case nothing =>
14- nil
15-}
16-
17-func isSelfCall (i) = if ((i.caller == this))
18- then unit
19- else unit
20-
21-
22-func getPoolNameIfValid (poolName) = {
23- let underscoreIndex = valueOrElse(indexOf(poolName, "_"), -1)
24- let underscoreLastIndex = valueOrElse(lastIndexOf(poolName, "_"), -1)
25- let hasSingleUnderscore = if (if ((underscoreIndex == underscoreLastIndex))
26- then (underscoreIndex > 0)
27- else false)
28- then (underscoreIndex != (size(poolName) - 1))
29- else false
30- if (hasSingleUnderscore)
31- then poolName
32- else throw("Pool name must consist of two asset names separated by an underscore character")
33- }
34-
35-
36-func getAddressIfValid (address) = toString(valueOrErrorMessage(addressFromString(address), (("Can't parse \"" + address) + "\" as address")))
374
385
396 @Callable(i)
40-func addPool (poolAddress,poolName) = valueOrElse(isSelfCall(i), {
41- let validatedAddress = getAddressIfValid(poolAddress)
42- let keyName = (keyPrefixPoolName + validatedAddress)
43- let keyIndex = (keyPrefixPoolIndex + validatedAddress)
44- let possiblyAlreadyAddedPool = getString(this, keyName)
45- if (isDefined(possiblyAlreadyAddedPool))
46- then throw((((("Pool with address \"" + validatedAddress) + "\" is already defined with name \"") + value(possiblyAlreadyAddedPool)) + "\""))
47- else [IntegerEntry(keyIndex, size(pools)), StringEntry(keyName, getPoolNameIfValid(poolName)), StringEntry(keyPoolsListName, makeString((pools :+ validatedAddress), ","))]
48- })
7+func addPool () = nil
498
9+
10+
11+@Callable(i)
12+func addPoolTest () = nil
13+
14+
15+@Verifier(tx)
16+func verify () = match tx {
17+ case invoke: InvokeScriptTransaction =>
18+ let isSelfInvoke = if ((invoke.dApp == this))
19+ then containsElement(["addPool", "renamePool"], invoke.function)
20+ else false
21+ if ((size(invoke.payments) == 0))
22+ then isSelfInvoke
23+ else false
24+ case ttx: Order|DataTransaction|SponsorFeeTransaction|SetScriptTransaction|CreateAliasTransaction|LeaseCancelTransaction|LeaseTransaction|IssueTransaction|UpdateAssetInfoTransaction|InvokeScriptTransaction|SetAssetScriptTransaction|TransferTransaction|ExchangeTransaction|MassTransferTransaction|BurnTransaction|ReissueTransaction =>
25+ sigVerify(ttx.bodyBytes, ttx.proofs[0], ttx.senderPublicKey)
26+ case _ =>
27+ throw("Match error")
28+}
5029

github/deemru/w8io/873ac7e 
40.85 ms