tx · 7BUs6T8o7McbLTqpVrUt1PKrnPmSFfpMayS3ofKmCsdL

3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4:  -0.01000000 Waves

2022.10.13 21:01 [3336365] smart account 3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4 > SELF 0.00000000 Waves

{ "type": 13, "id": "7BUs6T8o7McbLTqpVrUt1PKrnPmSFfpMayS3ofKmCsdL", "fee": 1000000, "feeAssetId": null, "timestamp": 1665684118794, "version": 2, "chainId": 87, "sender": "3PJpd1tujGgKdHEAXjG9oGsMxyE8vzx1eJ4", "senderPublicKey": "2zZ2ZoogVGxjTRzxu9Sx5JG6nwmctE4TPGZTxc6DiWp9", "proofs": [ "4m6QsQbKuD6zAMzccMsQazFQfw9KDryLGWbUwWpy1qnDk2DLuosNg2kjbTiDg5cf2FnMJdxpAUPYisnqRRZrvkKM" ], "script": "base64:BgINCAISAwoBCBIECgIICAoACXNlcGFyYXRvcgIBOwAQY29uZmlnQWRkcmVzc0tleQIGY29uZmlnAAlhZG1pbnNLZXkCBmFkbWlucwANY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQY29uZmlnQWRkcmVzc0tleQEHaXNBZG1pbgEGY2FsbGVyBAZhZG1Sb3cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwUJYWRtaW5zS2V5AgADAwkAAAIFBmNhbGxlcgUEdGhpcwYJAQhjb250YWlucwIFBmFkbVJvdwkApQgBBQZjYWxsZXIGBwENZ2V0RXZlbnRlcktleQEHZXZlbnRlcgkArAICAghldmVudGVyXwUHZXZlbnRlcgEJaXNFdmVudGVyAQdldmVudGVyBAhpc0V4aXN0cwkBCWlzRGVmaW5lZAEJAJ0IAgUNY29uZmlnQWRkcmVzcwkBDWdldEV2ZW50ZXJLZXkBCQClCAEFB2V2ZW50ZXIFCGlzRXhpc3RzAQdnZXRJdGVtAgdldmVudElkBGRhcHAJAKwCAgkArAICBQdldmVudElkAgFfBQRkYXBwARlnZXRIaXN0b3J5U3RvcmFnZUNvdW50S2V5AQdhZGRyZXNzCQCsAgICGnN0b3JhZ2VfY291bnRfZm9yX2FkZHJlc3NfBQdhZGRyZXNzARVnZXRIaXN0b3J5U3RvcmFnZU5LZXkCB2FkZHJlc3MBbgkArAICCQCsAgIJAKwCAgIUc3RvcmFnZV9mb3JfYWRkcmVzc18FB2FkZHJlc3MCAV8JAKQDAQUBbgIBaQEEaW5pdAEGY29uZmlnAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIQb25seSBtYWluIGNhbiBkbwQIaXNFeGlzdHMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFEGNvbmZpZ0FkZHJlc3NLZXkDCQEBIQEFCGlzRXhpc3RzCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGNvbmZpZ0FkZHJlc3NLZXkFBmNvbmZpZwUDbmlsCQACAQIOYWxyZWFkeSBpbml0ZWQBaQENc2F2ZVRvSGlzdG9yeQIHZXZlbnRJZAdhZGRyZXNzAwkBASEBCQEJaXNFdmVudGVyAQgFAWkGY2FsbGVyCQACAQITb25seSBldmVudGVyIGNhbiBkbwQMY3VycmVudEluZGV4CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARlnZXRIaXN0b3J5U3RvcmFnZUNvdW50S2V5AQUHYWRkcmVzcwABBA5jdXJyZW50SGlzdG9yeQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEVZ2V0SGlzdG9yeVN0b3JhZ2VOS2V5AgUHYWRkcmVzcwUMY3VycmVudEluZGV4AgAEC2xpc3RIaXN0b3J5CQC1CQIFDmN1cnJlbnRIaXN0b3J5BQlzZXBhcmF0b3IEBGl0ZW0JAQdnZXRJdGVtAgUHZXZlbnRJZAkApQgBCAUBaQZjYWxsZXIDCQBnAgBkCQCQAwEFC2xpc3RIaXN0b3J5BApuZXdIaXN0b3J5AwkAAAIJALECAQUOY3VycmVudEhpc3RvcnkAAAUEaXRlbQkArAICCQCsAgIFDmN1cnJlbnRIaXN0b3J5BQlzZXBhcmF0b3IFBGl0ZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWdldEhpc3RvcnlTdG9yYWdlTktleQIFB2FkZHJlc3MFDGN1cnJlbnRJbmRleAUKbmV3SGlzdG9yeQUDbmlsBApuZXdIaXN0b3J5BQRpdGVtCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVnZXRIaXN0b3J5U3RvcmFnZU5LZXkCBQdhZGRyZXNzCQBkAgUMY3VycmVudEluZGV4AAEFCm5ld0hpc3RvcnkJAMwIAgkBDEludGVnZXJFbnRyeQIJARlnZXRIaXN0b3J5U3RvcmFnZUNvdW50S2V5AQUHYWRkcmVzcwkAZAIFDGN1cnJlbnRJbmRleAABBQNuaWwAwOsSnA==", "height": 3336365, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: TDkYpgePahS6ZjHADHRVAdU4WMizeijcjrbC3eDMokr Next: 6mZ7mNrRRfr4AFinxiox3HQzMRXSXeCptSQMGvWBFLzh Diff:
OldNewDifferences
4343 else {
4444 let isExists = isDefined(getString(this, configAddressKey))
4545 if (!(isExists))
46- then {
47- let inv = invoke(addressFromStringValue(config), "setChecker", [toString(this)], nil)
48- if ((inv == inv))
49- then [StringEntry(configAddressKey, config)]
50- else throw("Strict value is not equal to itself.")
51- }
46+ then [StringEntry(configAddressKey, config)]
5247 else throw("already inited")
5348 }
5449
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))
46- then {
47- let inv = invoke(addressFromStringValue(config), "setChecker", [toString(this)], nil)
48- if ((inv == inv))
49- then [StringEntry(configAddressKey, config)]
50- else throw("Strict value is not equal to itself.")
51- }
46+ then [StringEntry(configAddressKey, config)]
5247 else throw("already inited")
5348 }
5449
5550
5651
5752 @Callable(i)
5853 func saveToHistory (eventId,address) = if (!(isEventer(i.caller)))
5954 then throw("only eventer can do")
6055 else {
6156 let currentIndex = valueOrElse(getInteger(this, getHistoryStorageCountKey(address)), 1)
6257 let currentHistory = valueOrElse(getString(this, getHistoryStorageNKey(address, currentIndex)), "")
6358 let listHistory = split(currentHistory, separator)
6459 let item = getItem(eventId, toString(i.caller))
6560 if ((100 >= size(listHistory)))
6661 then {
6762 let newHistory = if ((size(currentHistory) == 0))
6863 then item
6964 else ((currentHistory + separator) + item)
7065 [StringEntry(getHistoryStorageNKey(address, currentIndex), newHistory)]
7166 }
7267 else {
7368 let newHistory = item
7469 [StringEntry(getHistoryStorageNKey(address, (currentIndex + 1)), newHistory), IntegerEntry(getHistoryStorageCountKey(address), (currentIndex + 1))]
7570 }
7671 }
7772
7873

github/deemru/w8io/3ef1775 
26.03 ms