tx · TDkYpgePahS6ZjHADHRVAdU4WMizeijcjrbC3eDMokr

3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4:  -0.01000000 Waves

2022.10.13 21:00 [3336363] smart account 3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4 > SELF 0.00000000 Waves

{ "type": 13, "id": "TDkYpgePahS6ZjHADHRVAdU4WMizeijcjrbC3eDMokr", "fee": 1000000, "feeAssetId": null, "timestamp": 1665684046991, "version": 2, "chainId": 87, "sender": "3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4", "senderPublicKey": "2zZ2ZoogVGxjTRzxu9Sx5JG6nwmctE4TPGZTxc6DiWp9", "proofs": [ "5qaFhUYRpgjy7gSQZQ3wnXXdX6qQc9EyARaRdqGR5EBvruh9326dHBEeZ74xRoVnzXegGnuFfobe6qcFLfmaqXQE" ], "script": "base64:BgINCAISAwoBCBIECgIICAoACXNlcGFyYXRvcgIBOwAQY29uZmlnQWRkcmVzc0tleQIGY29uZmlnAAlhZG1pbnNLZXkCBmFkbWlucwANY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQY29uZmlnQWRkcmVzc0tleQEHaXNBZG1pbgEGY2FsbGVyBAZhZG1Sb3cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwUJYWRtaW5zS2V5AgADAwkAAAIFBmNhbGxlcgUEdGhpcwYJAQhjb250YWlucwIFBmFkbVJvdwkApQgBBQZjYWxsZXIGBwENZ2V0RXZlbnRlcktleQEHZXZlbnRlcgkArAICAghldmVudGVyXwUHZXZlbnRlcgEJaXNFdmVudGVyAQdldmVudGVyBAhpc0V4aXN0cwkBCWlzRGVmaW5lZAEJAJ0IAgUNY29uZmlnQWRkcmVzcwkBDWdldEV2ZW50ZXJLZXkBCQClCAEFB2V2ZW50ZXIFCGlzRXhpc3RzAQdnZXRJdGVtAgdldmVudElkBGRhcHAJAKwCAgkArAICBQdldmVudElkAgFfBQRkYXBwARlnZXRIaXN0b3J5U3RvcmFnZUNvdW50S2V5AQdhZGRyZXNzCQCsAgICGnN0b3JhZ2VfY291bnRfZm9yX2FkZHJlc3NfBQdhZGRyZXNzARVnZXRIaXN0b3J5U3RvcmFnZU5LZXkCB2FkZHJlc3MBbgkArAICCQCsAgIJAKwCAgIUc3RvcmFnZV9mb3JfYWRkcmVzc18FB2FkZHJlc3MCAV8JAKQDAQUBbgIBaQEEaW5pdAEGY29uZmlnAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIQb25seSBtYWluIGNhbiBkbwQIaXNFeGlzdHMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFEGNvbmZpZ0FkZHJlc3NLZXkDCQEBIQEFCGlzRXhpc3RzBANpbnYJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUGY29uZmlnAgpzZXRDaGVja2VyCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAMwIAgkBC1N0cmluZ0VudHJ5AgUQY29uZmlnQWRkcmVzc0tleQUGY29uZmlnBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg5hbHJlYWR5IGluaXRlZAFpAQ1zYXZlVG9IaXN0b3J5AgdldmVudElkB2FkZHJlc3MDCQEBIQEJAQlpc0V2ZW50ZXIBCAUBaQZjYWxsZXIJAAIBAhNvbmx5IGV2ZW50ZXIgY2FuIGRvBAxjdXJyZW50SW5kZXgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGWdldEhpc3RvcnlTdG9yYWdlQ291bnRLZXkBBQdhZGRyZXNzAAEEDmN1cnJlbnRIaXN0b3J5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARVnZXRIaXN0b3J5U3RvcmFnZU5LZXkCBQdhZGRyZXNzBQxjdXJyZW50SW5kZXgCAAQLbGlzdEhpc3RvcnkJALUJAgUOY3VycmVudEhpc3RvcnkFCXNlcGFyYXRvcgQEaXRlbQkBB2dldEl0ZW0CBQdldmVudElkCQClCAEIBQFpBmNhbGxlcgMJAGcCAGQJAJADAQULbGlzdEhpc3RvcnkECm5ld0hpc3RvcnkDCQAAAgkAsQIBBQ5jdXJyZW50SGlzdG9yeQAABQRpdGVtCQCsAgIJAKwCAgUOY3VycmVudEhpc3RvcnkFCXNlcGFyYXRvcgUEaXRlbQkAzAgCCQELU3RyaW5nRW50cnkCCQEVZ2V0SGlzdG9yeVN0b3JhZ2VOS2V5AgUHYWRkcmVzcwUMY3VycmVudEluZGV4BQpuZXdIaXN0b3J5BQNuaWwECm5ld0hpc3RvcnkFBGl0ZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWdldEhpc3RvcnlTdG9yYWdlTktleQIFB2FkZHJlc3MJAGQCBQxjdXJyZW50SW5kZXgAAQUKbmV3SGlzdG9yeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWdldEhpc3RvcnlTdG9yYWdlQ291bnRLZXkBBQdhZGRyZXNzCQBkAgUMY3VycmVudEluZGV4AAEFA25pbADiEUWr", "height": 3336363, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6zENLFRRGFjtaA9Q4yXE5yFnbGdQpLH2JFkWs8S12EpH Next: 7BUs6T8o7McbLTqpVrUt1PKrnPmSFfpMayS3ofKmCsdL Diff:
OldNewDifferences
4444 let isExists = isDefined(getString(this, configAddressKey))
4545 if (!(isExists))
4646 then {
47- let inv = invoke(configAddress, "setChecker", [toString(this)], nil)
47+ let inv = invoke(addressFromStringValue(config), "setChecker", [toString(this)], nil)
4848 if ((inv == inv))
4949 then [StringEntry(configAddressKey, config)]
5050 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = ";"
55
66 let configAddressKey = "config"
77
88 let adminsKey = "admins"
99
1010 let configAddress = addressFromStringValue(getStringValue(this, configAddressKey))
1111
1212 func isAdmin (caller) = {
1313 let admRow = valueOrElse(getString(configAddress, adminsKey), "")
1414 if (if ((caller == this))
1515 then true
1616 else contains(admRow, toString(caller)))
1717 then true
1818 else false
1919 }
2020
2121
2222 func getEventerKey (eventer) = ("eventer_" + eventer)
2323
2424
2525 func isEventer (eventer) = {
2626 let isExists = isDefined(getString(configAddress, getEventerKey(toString(eventer))))
2727 isExists
2828 }
2929
3030
3131 func getItem (eventId,dapp) = ((eventId + "_") + dapp)
3232
3333
3434 func getHistoryStorageCountKey (address) = ("storage_count_for_address_" + address)
3535
3636
3737 func getHistoryStorageNKey (address,n) = ((("storage_for_address_" + address) + "_") + toString(n))
3838
3939
4040 @Callable(i)
4141 func init (config) = if ((i.caller != this))
4242 then throw("only main can do")
4343 else {
4444 let isExists = isDefined(getString(this, configAddressKey))
4545 if (!(isExists))
4646 then {
47- let inv = invoke(configAddress, "setChecker", [toString(this)], nil)
47+ let inv = invoke(addressFromStringValue(config), "setChecker", [toString(this)], nil)
4848 if ((inv == inv))
4949 then [StringEntry(configAddressKey, config)]
5050 else throw("Strict value is not equal to itself.")
5151 }
5252 else throw("already inited")
5353 }
5454
5555
5656
5757 @Callable(i)
5858 func saveToHistory (eventId,address) = if (!(isEventer(i.caller)))
5959 then throw("only eventer can do")
6060 else {
6161 let currentIndex = valueOrElse(getInteger(this, getHistoryStorageCountKey(address)), 1)
6262 let currentHistory = valueOrElse(getString(this, getHistoryStorageNKey(address, currentIndex)), "")
6363 let listHistory = split(currentHistory, separator)
6464 let item = getItem(eventId, toString(i.caller))
6565 if ((100 >= size(listHistory)))
6666 then {
6767 let newHistory = if ((size(currentHistory) == 0))
6868 then item
6969 else ((currentHistory + separator) + item)
7070 [StringEntry(getHistoryStorageNKey(address, currentIndex), newHistory)]
7171 }
7272 else {
7373 let newHistory = item
7474 [StringEntry(getHistoryStorageNKey(address, (currentIndex + 1)), newHistory), IntegerEntry(getHistoryStorageCountKey(address), (currentIndex + 1))]
7575 }
7676 }
7777
7878

github/deemru/w8io/0e76f2f 
94.32 ms