tx · 4AxfNBjDx64akYRvCSCqU2RZHfGrUGW9uyNnFethohTi 3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp: -0.01400000 Waves 2022.05.19 14:51 [2058515] smart account 3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp > SELF 0.00000000 Waves
{ "type": 13, "id": "4AxfNBjDx64akYRvCSCqU2RZHfGrUGW9uyNnFethohTi", "fee": 1400000, "feeAssetId": null, "timestamp": 1652961123296, "version": 2, "chainId": 84, "sender": "3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp", "senderPublicKey": "74D2dSZ2CcYprVwEPr2GayHyp7wbLrppDt4SWXZcfT1z", "proofs": [ "3Bs7zPatiiawn4qGz42ZUpFrruEGf36bBQVTuSrzwNu7vsLKQcAsY5GrvGa9ikZWXr9ZnrESaELre3MWHzFEo1sw" ], "script": "base64:AAIFAAAAAAAAAAwIAhIDCgEBEgMKAQEAAAAhAAAAAAlzZXBhcmF0b3ICAAAAAV8AAAAAE2tleUxhc3RCYXR0bGVIZWlnaHQCAAAAEmxhc3RfYmF0dGxlX2hlaWdodAAAAAANa2V5SXRlbXNDb3VudAIAAAALaXRlbXNfY291bnQAAAAADGtleUl0ZW1Pd25lcgIAAAAKaXRlbV9vd25lcgAAAAAPa2V5SXRlbUNhdGVnb3J5AgAAAA1pdGVtX2NhdGVnb3J5AAAAAAtrZXlJdGVtVHlwZQIAAAAJaXRlbV90eXBlAAAAABJrZXlJdGVtRWZmZWN0VHlwZTECAAAAEml0ZW1fZWZmZWN0X3R5cGVfMQAAAAATa2V5SXRlbUVmZmVjdFZhbHVlMQIAAAATaXRlbV9lZmZlY3RfdmFsdWVfMQAAAAASa2V5SXRlbUVmZmVjdFR5cGUyAgAAABJpdGVtX2VmZmVjdF90eXBlXzIAAAAAE2tleUl0ZW1FZmZlY3RWYWx1ZTICAAAAE2l0ZW1fZWZmZWN0X3ZhbHVlXzIAAAAAEmtleUl0ZW1FZmZlY3RUeXBlMwIAAAASaXRlbV9lZmZlY3RfdHlwZV8zAAAAABNrZXlJdGVtRWZmZWN0VmFsdWUzAgAAABNpdGVtX2VmZmVjdF92YWx1ZV8zAAAAABJrZXlJdGVtRWZmZWN0VHlwZTQCAAAAEml0ZW1fZWZmZWN0X3R5cGVfNAAAAAATa2V5SXRlbUVmZmVjdFZhbHVlNAIAAAATaXRlbV9lZmZlY3RfdmFsdWVfNAAAAAAGZ292QXBwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzTXl4Znd2YnVlVUJ5bllIZlFzdXROWFpOcU5vekdpTW5zRwAAAAAVa2V5RWNvc3lzdGVtQWRkcmVzc2VzAgAAABNlY29zeXN0ZW1fYWRkcmVzc2VzAAAAABNrZXlCYXR0bGVSZXN0UGVyaW9kAgAAABJiYXR0bGVfcmVzdF9wZXJpb2QAAAAAGWtleUJhdHRsZVdpbkNoYW5jZUhhcmRjYXACAAAAGWJhdHRsZV93aW5fY2hhbmNlX2hhcmRjYXAAAAAAHmtleUJhdHRsZVdpbkNoYW5jZUluY3JQZXJCbG9jawIAAAAgYmF0dGxlX3dpbl9jaGFuY2VfaW5jcl9wZXJfYmxvY2sAAAAAGWtleUJhdHRsZUxvb3RSYXJpdHlSYW5nZXMCAAAAGWJhdHRsZV9sb290X3Jhcml0eV9yYW5nZXMAAAAAIGtleUNoYXJzTmF0dXJhbEJhdHRsZUJvbnVzUmFuZ2VzAgAAACFjaGFyc19uYXR1cmFsX2JhdHRsZV9ib251c19yYW5nZXMAAAAAEmtleUl0ZW1zQ2F0ZWdvcmllcwIAAAAQaXRlbXNfY2F0ZWdvcmllcwAAAAATa2V5SXRlbXNUeXBlc1BlckNhdAIAAAATaXRlbXNfdHlwZXNfcGVyX2NhdAAAAAAPa2V5SXRlbXNFZmZlY3RzAgAAAA1pdGVtc19lZmZlY3RzAAAAABhrZXlpdGVtc0VmZmVjdHNNYXhSYW5nZXMCAAAAF2l0ZW1zX2VmZmVjdHNfbWF4X3JhbmdlAAAAAAhjaGFyc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM05BM0xSU2lnazZrbkxaMTZ1VHpjZExOb3cyRVFadFhUYUoAAAAACGtleU93bmVyAgAAAAVvd25lcgAAAAAVa2V5TmF0dXJhbEJhdHRsZUJvbnVzAgAAABRuYXR1cmFsX2JhdHRsZV9ib251cwAAAAAIbGFuZHNBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNeGlKTHJZNlFhNWJTWXh4U0ZIU0c1YlZWMm41OXgxTUduAQAAAAxpbnZva2VDaGVja3MAAAABAAAACmNhbGxlckFkZHIDCQEAAAACIT0AAAACCQAEHgAAAAEFAAAABmdvdkFwcAcJAAACAAAAAQIAAAAXR292ZXJuaW5nIGFwcCBub3QgcmVhZHkEAAAAEmVjb3N5c3RlbUFkZHJlc3NlcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAGZ292QXBwBQAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMDCQEAAAACIT0AAAACCQEAAAAIY29udGFpbnMAAAACBQAAABJlY29zeXN0ZW1BZGRyZXNzZXMJAAQlAAAAAQUAAAAKY2FsbGVyQWRkcgcJAAACAAAAAQIAAAANQWNjZXNzIGRlbmllZAYBAAAADmVjb3N5c3RlbUNoZWNrAAAAAQAAAAZjYWxsZXIDCQEAAAACIT0AAAACCQEAAAAIY29udGFpbnMAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMJAAJYAAAAAQgFAAAABmNhbGxlcgAAAAVieXRlcwYJAAACAAAAAQIAAAANQWNjZXNzIGRlbmllZAYBAAAABHdpdGgAAAACAAAAAWEAAAABYgQAAAABYwQAAAAHJG1hdGNoMAUAAAABYgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVpc0ludAUAAAAHJG1hdGNoMAkAAaQAAAABBQAAAAVpc0ludAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAVpc1N0cgUAAAAHJG1hdGNoMAUAAAAFaXNTdHIJAAACAAAAAQIAAAAfTWF0Y2hpbmcgaXNzdWUgaW4gd2l0aCBmdW5jdGlvbgkAASwAAAACCQABLAAAAAIFAAAAAWMFAAAACXNlcGFyYXRvcgUAAAABYQEAAAAHcmFuZEludAAAAAQAAAADbWluAAAAA21heAAAAAR0eElkAAAABW5vbmNlBAAAAARoYXNoCQEAAAAFdmFsdWUAAAABCQALVAAAAAEJAADLAAAAAgkAAMsAAAACCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAA+0AAAABBQAAAAZoZWlnaHQAAAADdnJmBQAAAAR0eElkCQABmgAAAAEFAAAABW5vbmNlCQEAAAAFdmFsdWUAAAABCQAAZAAAAAIJAABqAAAAAgkBAAAABXZhbHVlAAAAAQkABLEAAAABBQAAAARoYXNoCQAAZAAAAAIJAABlAAAAAgUAAAADbWF4BQAAAANtaW4AAAAAAAAAAAEFAAAAA21pbgAAAAIAAAABaQEAAAAGYmF0dGxlAAAAAQAAAAZjaGFySWQDCQEAAAACIT0AAAACCQEAAAAMaW52b2tlQ2hlY2tzAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkBAAAABXRocm93AAAAAAQAAAAKY2FsbGVyQWRkcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAR0eElkCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAAiE9AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAIY2hhcnNBcHAJAQAAAAR3aXRoAAAAAgUAAAAIa2V5T3duZXIFAAAABmNoYXJJZAUAAAAKY2FsbGVyQWRkcgkAAAIAAAABAgAAABxDYWxsZXIgZG9lc24ndCBvd24gdGhpcyBjaGFyBAAAABFiYXR0bGVSZWFkeUhlaWdodAkAAGQAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAAEd2l0aAAAAAIFAAAAE2tleUxhc3RCYXR0bGVIZWlnaHQFAAAABmNoYXJJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAGZ292QXBwBQAAABNrZXlCYXR0bGVSZXN0UGVyaW9kAwkAAGYAAAACBQAAABFiYXR0bGVSZWFkeUhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAECAAAADVN0aWxsIHJlc3RpbmcEAAAACXdpbkNoYW5jZQkAAZcAAAABCQAETAAAAAIJAABkAAAAAgkAAGgAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZnb3ZBcHAFAAAAHmtleUJhdHRsZVdpbkNoYW5jZUluY3JQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEWJhdHRsZVJlYWR5SGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAhjaGFyc0FwcAkBAAAABHdpdGgAAAACBQAAABVrZXlOYXR1cmFsQmF0dGxlQm9udXMFAAAABmNoYXJJZAkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZnb3ZBcHAFAAAAGWtleUJhdHRsZVdpbkNoYW5jZUhhcmRjYXAFAAAAA25pbAMJAABmAAAAAgUAAAAJd2luQ2hhbmNlCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAAAAAAAAAAAJxAFAAAABHR4SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TGFzdEJhdHRsZUhlaWdodAUAAAAGY2hhcklkBQAAAAZoZWlnaHQFAAAAA25pbAQAAAAHaXRlbUNhdAkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZnb3ZBcHAFAAAAEmtleUl0ZW1zQ2F0ZWdvcmllcwUAAAAEdHhJZAAAAAAAAAAAAQQAAAASaXRlbUNhdFR5cGVzQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAZnb3ZBcHAFAAAAE2tleUl0ZW1zVHlwZXNQZXJDYXQFAAAACXNlcGFyYXRvcgkAAGUAAAACBQAAAAdpdGVtQ2F0AAAAAAAAAAABBAAAAAhpdGVtVHlwZQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAABJpdGVtQ2F0VHlwZXNBbW91bnQFAAAABHR4SWQAAAAAAAAAAAIEAAAAEGl0ZW1SYXJpdHlSYW5nZXMJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAGZ292QXBwBQAAABlrZXlCYXR0bGVMb290UmFyaXR5UmFuZ2VzBQAAAAlzZXBhcmF0b3IEAAAACml0ZW1SYXJpdHkJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAAAAAAAAAAAnEAUAAAAEdHhJZAAAAAAAAAAAAwQAAAAPaXRlbUVmZmVjdFNsb3RzAwkAAGcAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAQaXRlbVJhcml0eVJhbmdlcwAAAAAAAAAAAAUAAAAKaXRlbVJhcml0eQAAAAAAAAAAAQMJAABnAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEGl0ZW1SYXJpdHlSYW5nZXMAAAAAAAAAAAEFAAAACml0ZW1SYXJpdHkAAAAAAAAAAAIDCQAAZwAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABBpdGVtUmFyaXR5UmFuZ2VzAAAAAAAAAAACBQAAAAppdGVtUmFyaXR5AAAAAAAAAAADAAAAAAAAAAAEBAAAABJpdGVtRWZmZWN0c0Ftb3VudHMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABmdvdkFwcAUAAAAPa2V5SXRlbXNFZmZlY3RzBAAAABRpdGVtRWZmZWN0c01heFJhbmdlcwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAZnb3ZBcHAFAAAAGGtleWl0ZW1zRWZmZWN0c01heFJhbmdlcwUAAAAJc2VwYXJhdG9yBAAAAA9pdGVtRWZmZWN0VHlwZTEJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQUAAAASaXRlbUVmZmVjdHNBbW91bnRzBQAAAAR0eElkAAAAAAAAAAAEBAAAABBpdGVtRWZmZWN0VmFsdWUxCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABRpdGVtRWZmZWN0c01heFJhbmdlcwUAAAAPaXRlbUVmZmVjdFR5cGUxBQAAAAR0eElkAAAAAAAAAAAFBAAAAA9pdGVtRWZmZWN0VHlwZTIDCQAAZgAAAAIFAAAAD2l0ZW1FZmZlY3RTbG90cwAAAAAAAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAABJpdGVtRWZmZWN0c0Ftb3VudHMFAAAABHR4SWQAAAAAAAAAAAYAAAAAAAAAAAAEAAAAEGl0ZW1FZmZlY3RWYWx1ZTIDCQAAZgAAAAIFAAAAD2l0ZW1FZmZlY3RTbG90cwAAAAAAAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAUaXRlbUVmZmVjdHNNYXhSYW5nZXMFAAAAD2l0ZW1FZmZlY3RUeXBlMgUAAAAEdHhJZAAAAAAAAAAABwAAAAAAAAAAAAQAAAAPaXRlbUVmZmVjdFR5cGUzAwkAAGYAAAACBQAAAA9pdGVtRWZmZWN0U2xvdHMAAAAAAAAAAAIJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQUAAAASaXRlbUVmZmVjdHNBbW91bnRzBQAAAAR0eElkAAAAAAAAAAAIAAAAAAAAAAAABAAAABBpdGVtRWZmZWN0VmFsdWUzAwkAAGYAAAACBQAAAA9pdGVtRWZmZWN0U2xvdHMAAAAAAAAAAAIJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFGl0ZW1FZmZlY3RzTWF4UmFuZ2VzBQAAAA9pdGVtRWZmZWN0VHlwZTMFAAAABHR4SWQAAAAAAAAAAAkAAAAAAAAAAAAEAAAAD2l0ZW1FZmZlY3RUeXBlNAMJAABmAAAAAgUAAAAPaXRlbUVmZmVjdFNsb3RzAAAAAAAAAAADCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEFAAAAEml0ZW1FZmZlY3RzQW1vdW50cwUAAAAEdHhJZAAAAAAAAAAACgAAAAAAAAAAAAQAAAAQaXRlbUVmZmVjdFZhbHVlNAMJAABmAAAAAgUAAAAPaXRlbUVmZmVjdFNsb3RzAAAAAAAAAAADCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABRpdGVtRWZmZWN0c01heFJhbmdlcwUAAAAPaXRlbUVmZmVjdFR5cGU0BQAAAAR0eElkAAAAAAAAAAALAAAAAAAAAAAABAAAAAZpdGVtSWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADWtleUl0ZW1zQ291bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TGFzdEJhdHRsZUhlaWdodAUAAAAGY2hhcklkBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUl0ZW1zQ291bnQJAABkAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAMa2V5SXRlbU93bmVyBQAAAAZpdGVtSWQFAAAACmNhbGxlckFkZHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAPa2V5SXRlbUNhdGVnb3J5BQAAAAZpdGVtSWQFAAAAB2l0ZW1DYXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAALa2V5SXRlbVR5cGUFAAAABml0ZW1JZAUAAAAIaXRlbVR5cGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUxBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUxBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUyBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUyBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUzBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUzBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGU0BQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWU0BQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTQFAAAAA25pbAAAAAFpAQAAABZ1cGRhdGVMYXN0QmF0dGxlSGVpZ2h0AAAAAQAAAAZjaGFySWQDCQEAAAACIT0AAAACCQEAAAAOZWNvc3lzdGVtQ2hlY2sAAAABCAUAAAABaQAAAAZjYWxsZXIGCQEAAAAFdGhyb3cAAAAACQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TGFzdEJhdHRsZUhlaWdodAUAAAAGY2hhcklkBQAAAAZoZWlnaHQFAAAAA25pbAUAAAAGaGVpZ2h0AAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkkXxOb", "height": 2058515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: CpkC2rZHyT7bxghCZKwzjxWzGdJ6qKnfuhV9qK1Zq3Lx Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let separator = "_" | |
5 | + | ||
6 | + | let keyLastBattleHeight = "last_battle_height" | |
7 | + | ||
8 | + | let keyItemsCount = "items_count" | |
9 | + | ||
10 | + | let keyItemOwner = "item_owner" | |
11 | + | ||
12 | + | let keyItemCategory = "item_category" | |
13 | + | ||
14 | + | let keyItemType = "item_type" | |
15 | + | ||
16 | + | let keyItemEffectType1 = "item_effect_type_1" | |
17 | + | ||
18 | + | let keyItemEffectValue1 = "item_effect_value_1" | |
19 | + | ||
20 | + | let keyItemEffectType2 = "item_effect_type_2" | |
21 | + | ||
22 | + | let keyItemEffectValue2 = "item_effect_value_2" | |
23 | + | ||
24 | + | let keyItemEffectType3 = "item_effect_type_3" | |
25 | + | ||
26 | + | let keyItemEffectValue3 = "item_effect_value_3" | |
27 | + | ||
28 | + | let keyItemEffectType4 = "item_effect_type_4" | |
29 | + | ||
30 | + | let keyItemEffectValue4 = "item_effect_value_4" | |
31 | + | ||
32 | + | let govApp = addressFromStringValue("3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG") | |
33 | + | ||
34 | + | let keyEcosystemAddresses = "ecosystem_addresses" | |
35 | + | ||
36 | + | let keyBattleRestPeriod = "battle_rest_period" | |
37 | + | ||
38 | + | let keyBattleWinChanceHardcap = "battle_win_chance_hardcap" | |
39 | + | ||
40 | + | let keyBattleWinChanceIncrPerBlock = "battle_win_chance_incr_per_block" | |
41 | + | ||
42 | + | let keyBattleLootRarityRanges = "battle_loot_rarity_ranges" | |
43 | + | ||
44 | + | let keyCharsNaturalBattleBonusRanges = "chars_natural_battle_bonus_ranges" | |
45 | + | ||
46 | + | let keyItemsCategories = "items_categories" | |
47 | + | ||
48 | + | let keyItemsTypesPerCat = "items_types_per_cat" | |
49 | + | ||
50 | + | let keyItemsEffects = "items_effects" | |
51 | + | ||
52 | + | let keyitemsEffectsMaxRanges = "items_effects_max_range" | |
53 | + | ||
54 | + | let charsApp = addressFromStringValue("3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ") | |
55 | + | ||
56 | + | let keyOwner = "owner" | |
57 | + | ||
58 | + | let keyNaturalBattleBonus = "natural_battle_bonus" | |
59 | + | ||
60 | + | let landsApp = addressFromStringValue("3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn") | |
61 | + | ||
62 | + | func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false)) | |
63 | + | then throw("Governing app not ready") | |
64 | + | else { | |
65 | + | let ecosystemAddresses = getStringValue(govApp, keyEcosystemAddresses) | |
66 | + | if ((contains(ecosystemAddresses, toString(callerAddr)) != false)) | |
67 | + | then throw("Access denied") | |
68 | + | else true | |
69 | + | } | |
70 | + | ||
71 | + | ||
72 | + | func ecosystemCheck (caller) = if ((contains(getStringValue(this, keyEcosystemAddresses), toBase58String(caller.bytes)) != true)) | |
73 | + | then throw("Access denied") | |
74 | + | else true | |
75 | + | ||
76 | + | ||
77 | + | func with (a,b) = { | |
78 | + | let c = match b { | |
79 | + | case isInt: Int => | |
80 | + | toString(isInt) | |
81 | + | case isStr: String => | |
82 | + | isStr | |
83 | + | case _ => | |
84 | + | throw("Matching issue in with function") | |
85 | + | } | |
86 | + | ((c + separator) + a) | |
87 | + | } | |
88 | + | ||
89 | + | ||
90 | + | func randInt (min,max,txId,nonce) = { | |
91 | + | let hash = value(sha256_16Kb(((value(value(blockInfoByHeight(height)).vrf) + txId) + toBytes(nonce)))) | |
92 | + | value(((value(toInt(hash)) % ((max - min) + 1)) + min)) | |
93 | + | } | |
94 | + | ||
95 | + | ||
96 | + | @Callable(i) | |
97 | + | func battle (charId) = if ((invokeChecks(i.caller) != true)) | |
98 | + | then throw() | |
99 | + | else { | |
100 | + | let callerAddr = toBase58String(i.caller.bytes) | |
101 | + | let txId = i.transactionId | |
102 | + | if ((getStringValue(charsApp, with(keyOwner, charId)) != callerAddr)) | |
103 | + | then throw("Caller doesn't own this char") | |
104 | + | else { | |
105 | + | let battleReadyHeight = (getIntegerValue(this, with(keyLastBattleHeight, charId)) + getIntegerValue(govApp, keyBattleRestPeriod)) | |
106 | + | if ((battleReadyHeight > height)) | |
107 | + | then throw("Still resting") | |
108 | + | else { | |
109 | + | let winChance = min([((getIntegerValue(govApp, keyBattleWinChanceIncrPerBlock) * (height - battleReadyHeight)) + getIntegerValue(charsApp, with(keyNaturalBattleBonus, charId))), getIntegerValue(govApp, keyBattleWinChanceHardcap)]) | |
110 | + | if ((winChance > randInt(0, 10000, txId, 0))) | |
111 | + | then [IntegerEntry(with(keyLastBattleHeight, charId), height)] | |
112 | + | else { | |
113 | + | let itemCat = randInt(1, getIntegerValue(govApp, keyItemsCategories), txId, 1) | |
114 | + | let itemCatTypesAmount = parseIntValue(split(getStringValue(govApp, keyItemsTypesPerCat), separator)[(itemCat - 1)]) | |
115 | + | let itemType = randInt(1, itemCatTypesAmount, txId, 2) | |
116 | + | let itemRarityRanges = split(getStringValue(govApp, keyBattleLootRarityRanges), separator) | |
117 | + | let itemRarity = randInt(0, 10000, txId, 3) | |
118 | + | let itemEffectSlots = if ((parseIntValue(itemRarityRanges[0]) >= itemRarity)) | |
119 | + | then 1 | |
120 | + | else if ((parseIntValue(itemRarityRanges[1]) >= itemRarity)) | |
121 | + | then 2 | |
122 | + | else if ((parseIntValue(itemRarityRanges[2]) >= itemRarity)) | |
123 | + | then 3 | |
124 | + | else 4 | |
125 | + | let itemEffectsAmounts = getIntegerValue(govApp, keyItemsEffects) | |
126 | + | let itemEffectsMaxRanges = split(getStringValue(govApp, keyitemsEffectsMaxRanges), separator) | |
127 | + | let itemEffectType1 = randInt(1, itemEffectsAmounts, txId, 4) | |
128 | + | let itemEffectValue1 = randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType1]), txId, 5) | |
129 | + | let itemEffectType2 = if ((itemEffectSlots > 1)) | |
130 | + | then randInt(1, itemEffectsAmounts, txId, 6) | |
131 | + | else 0 | |
132 | + | let itemEffectValue2 = if ((itemEffectSlots > 1)) | |
133 | + | then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType2]), txId, 7) | |
134 | + | else 0 | |
135 | + | let itemEffectType3 = if ((itemEffectSlots > 2)) | |
136 | + | then randInt(1, itemEffectsAmounts, txId, 8) | |
137 | + | else 0 | |
138 | + | let itemEffectValue3 = if ((itemEffectSlots > 2)) | |
139 | + | then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType3]), txId, 9) | |
140 | + | else 0 | |
141 | + | let itemEffectType4 = if ((itemEffectSlots > 3)) | |
142 | + | then randInt(1, itemEffectsAmounts, txId, 10) | |
143 | + | else 0 | |
144 | + | let itemEffectValue4 = if ((itemEffectSlots > 3)) | |
145 | + | then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType4]), txId, 11) | |
146 | + | else 0 | |
147 | + | let itemId = getIntegerValue(this, keyItemsCount) | |
148 | + | [IntegerEntry(with(keyLastBattleHeight, charId), height), IntegerEntry(keyItemsCount, (itemId + 1)), StringEntry(with(keyItemOwner, itemId), callerAddr), IntegerEntry(with(keyItemCategory, itemId), itemCat), IntegerEntry(with(keyItemType, itemId), itemType), IntegerEntry(with(keyItemEffectType1, itemId), itemEffectType1), IntegerEntry(with(keyItemEffectValue1, itemId), itemEffectValue1), IntegerEntry(with(keyItemEffectType2, itemId), itemEffectType2), IntegerEntry(with(keyItemEffectValue2, itemId), itemEffectValue2), IntegerEntry(with(keyItemEffectType3, itemId), itemEffectType3), IntegerEntry(with(keyItemEffectValue3, itemId), itemEffectValue3), IntegerEntry(with(keyItemEffectType4, itemId), itemEffectType4), IntegerEntry(with(keyItemEffectValue4, itemId), itemEffectValue4)] | |
149 | + | } | |
150 | + | } | |
151 | + | } | |
152 | + | } | |
153 | + | ||
154 | + | ||
155 | + | ||
156 | + | @Callable(i) | |
157 | + | func updateLastBattleHeight (charId) = if ((ecosystemCheck(i.caller) != true)) | |
158 | + | then throw() | |
159 | + | else $Tuple2([IntegerEntry(with(keyLastBattleHeight, charId), height)], height) | |
160 | + | ||
161 | + | ||
162 | + | @Verifier(tx) | |
163 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
164 | + |
github/deemru/w8io/169f3d6 21.11 ms ◑