tx · FpsKxZdY18zu69KKS5rAenpUNnYJfeSjfu6FXcJrPL68

3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo:  -0.01000000 Waves

2023.04.29 18:54 [3621644] smart account 3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo > SELF 0.00000000 Waves

{ "type": 13, "id": "FpsKxZdY18zu69KKS5rAenpUNnYJfeSjfu6FXcJrPL68", "fee": 1000000, "feeAssetId": null, "timestamp": 1682783703788, "version": 2, "chainId": 87, "sender": "3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo", "senderPublicKey": "BWuWWmBJHo8KE9WfGzFmnn2sJwxdKxGxqy6UpnPB3ygn", "proofs": [ "U9JvASgv9Wa7cdwAewavT2cbqs7RBR4ncZR9L6wP7EToz1tmpe9FQQqoGRBgcF2fpj3rDwa9cVJHyAEAEGAR7D4" ], "script": "base64:AAIFAAAAAAAAAB4IAhIECgIICBIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAfAQAAAAhrZXlPd25lcgAAAAEAAAALZHVja0hvdXNlSWQJAAEsAAAAAgUAAAALZHVja0hvdXNlSWQCAAAABl9vd25lcgEAAAAMa2V5RHVja0hvdXNlAAAAAQAAAAZkdWNrSWQJAAEsAAAAAgUAAAAGZHVja0lkAgAAAAtfZHVja19ob3VzZQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABAAAAC2R1Y2tIb3VzZUlkCQABLAAAAAIFAAAAC2R1Y2tIb3VzZUlkAgAAAA1fZmlsbGVkX3Nwb3RzAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAYc3RhdGljS2V5X2Zhcm1pbmdBZGRyZXNzAAAAAAIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAABJzdGF0aWNLZXlfbWF4RHVja3MAAAAAAgAAAA9zdGF0aWNfbWF4RHVja3MBAAAAE3N0YXRpY0tleV9zdGFrZUNhbGwAAAAAAgAAABBzdGF0aWNfc3Rha2VDYWxsAQAAABRzdGF0aWNLZXlfSlN0YWtlQ2FsbAAAAAACAAAAEXN0YXRpY19KU3Rha2VDYWxsAQAAAA5zdGF0aWNLZXlfdHlwZQAAAAACAAAAC3N0YXRpY190eXBlAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAgAAAAxzdGF0aWNfYm9vc3QBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAABAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2Zhcm1pbmdBZGRyZXNzAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAACG1heER1Y2tzAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAASc3RhdGljS2V5X21heER1Y2tzAAAAAAEAAAAJc3Rha2VDYWxsAAAAAAkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABNzdGF0aWNLZXlfc3Rha2VDYWxsAAAAAAEAAAAKSlN0YWtlQ2FsbAAAAAAJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAUc3RhdGljS2V5X0pTdGFrZUNhbGwAAAAAAQAAAAR0eXBlAAAAAAkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAA5zdGF0aWNLZXlfdHlwZQAAAAABAAAABWJvb3N0AAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAPc3RhdGljS2V5X2Jvb3N0AAAAAAEAAAAJaXNKYWNrcG90AAAAAQAAAAdhc3NldElkCQAAAAAAAAIJAQAAAAl0YWtlUmlnaHQAAAACCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABG5hbWUAAAAAAAAAAAECAAAAAVUBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABlXQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABxXQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAABgAAAAFpAQAAAA9jb25maWd1cmVPcmFjbGUAAAACAAAABm9yYWNsZQAAAAR0eXBlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkEAAAABXNldHVwAwkAAAAAAAACBQAAAAR0eXBlAgAAAAxBUlQtQklHSE9VU0UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAAAAAAAAAAAPCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASc3RhdGljS2V5X21heER1Y2tzAAAAAAAAAAAAAAAACgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATc3RhdGljS2V5X3N0YWtlQ2FsbAAAAAACAAAAFHN0YWtlTkZUV2l0aG91dFBlcmNoCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5zdGF0aWNLZXlfdHlwZQAAAAACAAAADEFSVC1CSUdIT1VTRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUc3RhdGljS2V5X0pTdGFrZUNhbGwAAAAAAgAAABRzdGFrZU5GVFdpdGhvdXRQZXJjaAUAAAADbmlsAwkAAAAAAAACBQAAAAR0eXBlAgAAAAlBUlQtSE9VU0UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAAAAAAAAAAAeCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASc3RhdGljS2V5X21heER1Y2tzAAAAAAAAAAAAAAAABAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATc3RhdGljS2V5X3N0YWtlQ2FsbAAAAAACAAAACHN0YWtlTkZUCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5zdGF0aWNLZXlfdHlwZQAAAAACAAAACUFSVC1IT1VTRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUc3RhdGljS2V5X0pTdGFrZUNhbGwAAAAAAgAAABRzdGFrZU5GVFdpdGhvdXRQZXJjaAUAAAADbmlsCQAAAgAAAAECAAAADVVua25vd24gdHlwZSEJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAABQAAAAZvcmFjbGUFAAAAA25pbAUAAAAFc2V0dXAAAAABaQEAAAAOc3Rha2VEdWNrSG91c2UAAAAABAAAAAVvd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD2FydGVmYWN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAMdmFsaWRQYXltZW50CQEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAAD2FydGVmYWN0QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAPYXJ0ZWZhY3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAPYXJ0ZWZhY3RQYXltZW50AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAAxhcnRlZmFjdE5hbWUJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAACAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQAETAAAAAIFAAAAD2FydGVmYWN0QXNzZXRJZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAMYXJ0ZWZhY3ROYW1lAwkBAAAAAiE9AAAAAgUAAAAMYXJ0ZWZhY3ROYW1lCQEAAAAEdHlwZQAAAAAJAAACAAAAAQIAAAAOV3JvbmcgYXJ0ZWZhY3QJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAIa2V5T3duZXIAAAABBQAAAA9hcnRlZmFjdEFzc2V0SWQFAAAABW93bmVyBQAAAANuaWwFAAAADHZhbGlkUGF5bWVudAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAQdW5zdGFrZUR1Y2tIb3VzZQAAAAEAAAALZHVja0hvdXNlSWQEAAAABmNhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADmR1Y2tIb3VzZU93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAACGtleU93bmVyAAAAAQUAAAALZHVja0hvdXNlSWQEAAAADHZhbGlkUGF5bWVudAkBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAwkAAAAAAAACBQAAAA5kdWNrSG91c2VPd25lcgIAAAAACQAAAgAAAAECAAAAHVRoaXMgZHVja2hvdXNlIGlzIG5vdCBzdGFrZWQhAwkBAAAAAiE9AAAAAgUAAAAOZHVja0hvdXNlT3duZXIFAAAABmNhbGxlcgkAAAIAAAABAgAAABxUaGlzIGR1Y2tob3VzZSBpcyBub3QgeW91cnMhAwkBAAAAAiE9AAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAAAAAAAAAAAAAkAAAIAAAABAgAAADFQbGVhc2UgZmlyc3QgcmVtb3ZlIHlvdXIgZHVja3MgZnJvbSB0aGUgZHVja2hvdXNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAC2R1Y2tIb3VzZUlkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAhrZXlPd25lcgAAAAEFAAAAC2R1Y2tIb3VzZUlkBQAAAANuaWwFAAAADHZhbGlkUGF5bWVudAAAAAFpAQAAAAlzdGFrZUR1Y2sAAAABAAAAC2R1Y2tIb3VzZUlkBAAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAOZHVja0hvdXNlT3duZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAIa2V5T3duZXIAAAABBQAAAAtkdWNrSG91c2VJZAMJAAAAAAAAAgUAAAAOZHVja0hvdXNlT3duZXICAAAAAAkAAAIAAAABAgAAAB1UaGlzIGR1Y2tob3VzZSBpcyBub3Qgc3Rha2VkIQMJAQAAAAIhPQAAAAIFAAAADmR1Y2tIb3VzZU93bmVyBQAAAAdhZGRyZXNzCQAAAgAAAAECAAAAHFRoaXMgZHVja2hvdXNlIGlzIG5vdCB5b3VycyEEAAAAC2ZpbGxlZFNwb3RzCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABdvY2N1cGllZFNwb3RzRHVja3NIb3VzZQAAAAEFAAAAC2R1Y2tIb3VzZUlkAwkAAAAAAAACBQAAAAtmaWxsZWRTcG90cwkBAAAACG1heER1Y2tzAAAAAAkAAAIAAAABAgAAABxObyBzcGFjZSBpbiBkdWNrIGhvdXNlIGxlZnQhBAAAAAlib29zdER1Y2sJAAP8AAAABAkBAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAACAAAAD21hbmlwdWxhdGVCb29zdAkABEwAAAACCQEAAAAFYm9vc3QAAAAACQAETAAAAAIJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACWJvb3N0RHVjawUAAAAJYm9vc3REdWNrBAAAAAlzdGFrZUR1Y2sDCQEAAAAJaXNKYWNrcG90AAAAAQUAAAAHYXNzZXRJZAkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAKSlN0YWtlQ2FsbAAAAAAFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAkBAAAACXN0YWtlQ2FsbAAAAAAFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMDCQAAAAAAAAIFAAAACXN0YWtlRHVjawUAAAAJc3Rha2VEdWNrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAkAAGQAAAACBQAAAAtmaWxsZWRTcG90cwAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5RHVja0hvdXNlAAAAAQkAAlgAAAABBQAAAAdhc3NldElkBQAAAAtkdWNrSG91c2VJZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALdW5zdGFrZUR1Y2sAAAABAAAABWFzc2V0BAAAAAtkdWNrSG91c2VJZAkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAAxrZXlEdWNrSG91c2UAAAABBQAAAAVhc3NldAQAAAAFb3duZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAIa2V5T3duZXIAAAABBQAAAAtkdWNrSG91c2VJZAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAVvd25lcgUAAAAHYWRkcmVzcwkAAAIAAAABAgAAACBEb24ndCB0cnkgdG8gc3RlYWwgc29tZW9uZSBkdWNrIQQAAAARdW5zdGFrZUR1Y2tSZXdhcmQDCQEAAAAJaXNKYWNrcG90AAAAAQkAAlkAAAABBQAAAAVhc3NldAkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAA51bnN0YWtlSmFja3BvdAkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAAp1bnN0YWtlTkZUCQAETAAAAAIFAAAABWFzc2V0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAARdW5zdGFrZUR1Y2tSZXdhcmQFAAAAEXVuc3Rha2VEdWNrUmV3YXJkBAAAAAtmaWxsZWRTcG90cwkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAMJAAAAAAAAAgUAAAALZmlsbGVkU3BvdHMAAAAAAAAAAAAJAAACAAAAAQIAAAAdWW91IGFyZW4ndCBzdGFraW5nIGFueSBkdWNrcyEEAAAAC3VuYm9vc3REdWNrCQAD/AAAAAQJAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAAAgAAAA9tYW5pcHVsYXRlQm9vc3QJAARMAAAAAgkBAAAAAS0AAAABCQEAAAAFYm9vc3QAAAAACQAETAAAAAIFAAAABWFzc2V0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAALdW5ib29zdER1Y2sFAAAAC3VuYm9vc3REdWNrCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARdW5zdGFrZUR1Y2tSZXdhcmQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUR1Y2tIb3VzZQAAAAEFAAAABWFzc2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABBQAAAAtkdWNrSG91c2VJZAkAAGUAAAACBQAAAAtmaWxsZWRTcG90cwAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAQY2xhaW1EdWNrUmV3YXJkcwAAAAEAAAAFYXNzZXQEAAAADGNsYWltUmV3YXJkcwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAAtjbGFpbVJld2FyZAkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAAMY2xhaW1SZXdhcmRzBQAAAAxjbGFpbVJld2FyZHMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAAAtn81VA==", "height": 3621644, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F9qVjZSfRbJ1QWdoVHj7dr28LdcuH6z1H4oDzyoXcaHx Next: 59F3S8CgsJ3uorSgdu5RFR2kScJCJUkcm2jZ1GcqZvBH Diff:
OldNewDifferences
4545 }
4646
4747
48-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
48+func staticKey_oracleAddress () = "static_oracleAddress"
4949
5050
51-func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
51+func staticKey_itemsAddress () = "static_itemsAddress"
5252
5353
54-func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
54+func staticKey_extraFee () = "static_extraFee"
5555
5656
57-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
57+func staticKey_feeAggregator () = "static_feeAggregator"
5858
5959
60-func maxDucks () = tryGetInteger("static_maxDucks")
60+func staticKey_eggAssetId () = "static_eggAssetId"
6161
6262
63-func stakeCall () = tryGetString("static_stakeCall")
63+func staticKey_farmingAddress () = "static_farmingAddress"
6464
6565
66-func JStakeCall () = tryGetString("static_JStakeCall")
66+func staticKey_maxDucks () = "static_maxDucks"
6767
6868
69-func type () = tryGetString("static_type")
69+func staticKey_stakeCall () = "static_stakeCall"
7070
7171
72-func boost () = tryGetInteger("static_boost")
72+func staticKey_JStakeCall () = "static_JStakeCall"
73+
74+
75+func staticKey_type () = "static_type"
76+
77+
78+func staticKey_boost () = "static_boost"
79+
80+
81+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
82+
83+
84+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
85+
86+
87+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
88+
89+
90+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
91+
92+
93+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
94+
95+
96+func maxDucks () = tryGetInteger(staticKey_maxDucks())
97+
98+
99+func stakeCall () = tryGetString(staticKey_stakeCall())
100+
101+
102+func JStakeCall () = tryGetString(staticKey_JStakeCall())
103+
104+
105+func type () = tryGetString(staticKey_type())
106+
107+
108+func boost () = tryGetInteger(staticKey_boost())
73109
74110
75111 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
112+
113+
114+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
115+ then throw("WCAP: Please attach waves")
116+ else {
117+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
118+ if ((payment.amount != feeAmount))
119+ then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
120+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
121+ }
76122
77123
78124 @Callable(i)
80126 then throw("admin only")
81127 else {
82128 let setup = if ((type == "ART-BIGHOUSE"))
83- then [IntegerEntry("static_boost", 15), IntegerEntry("static_maxDucks", 10), StringEntry("static_stakeCall", "stakeNFTWithoutPerch"), StringEntry("static_type", "ART-BIGHOUSE"), StringEntry("static_JStakeCall", "stakeNFTWithoutPerch")]
129+ then [IntegerEntry(staticKey_boost(), 15), IntegerEntry(staticKey_maxDucks(), 10), StringEntry(staticKey_stakeCall(), "stakeNFTWithoutPerch"), StringEntry(staticKey_type(), "ART-BIGHOUSE"), StringEntry(staticKey_JStakeCall(), "stakeNFTWithoutPerch")]
84130 else if ((type == "ART-HOUSE"))
85- then [IntegerEntry("static_boost", 30), IntegerEntry("static_maxDucks", 4), StringEntry("static_stakeCall", "stakeNFT"), StringEntry("static_type", "ART-HOUSE"), StringEntry("static_JStakeCall", "stakeNFTWithoutPerch")]
131+ then [IntegerEntry(staticKey_boost(), 30), IntegerEntry(staticKey_maxDucks(), 4), StringEntry(staticKey_stakeCall(), "stakeNFT"), StringEntry(staticKey_type(), "ART-HOUSE"), StringEntry(staticKey_JStakeCall(), "stakeNFTWithoutPerch")]
86132 else throw("Unknown type!")
87- ([StringEntry("static_oracleAddress", oracle)] ++ setup)
133+ ([StringEntry(staticKey_oracleAddress(), oracle)] ++ setup)
88134 }
89135
90136
93139 func stakeDuckHouse () = {
94140 let owner = toString(i.caller)
95141 let artefactPayment = value(i.payments[0])
142+ let validPayment = checkAdditionalPayment(i.payments[1])
96143 let artefactAssetId = toBase58String(value(artefactPayment.assetId))
97144 if ((artefactPayment.amount != 1))
98145 then throw("NFT is not attached")
101148 if ((artefactName == artefactName))
102149 then if ((artefactName != type()))
103150 then throw("Wrong artefact")
104- else [StringEntry(keyOwner(artefactAssetId), owner)]
151+ else ([StringEntry(keyOwner(artefactAssetId), owner)] ++ validPayment)
105152 else throw("Strict value is not equal to itself.")
106153 }
107154 }
112159 func unstakeDuckHouse (duckHouseId) = {
113160 let caller = toString(i.caller)
114161 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
162+ let validPayment = checkAdditionalPayment(i.payments[1])
115163 if ((duckHouseOwner == ""))
116164 then throw("This duckhouse is not staked!")
117165 else if ((duckHouseOwner != caller))
118166 then throw("This duckhouse is not yours!")
119167 else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
120168 then throw("Please first remove your ducks from the duckhouse")
121- else [ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))]
169+ else ([ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))] ++ validPayment)
122170 }
123171
124172
163211 then throw("Don't try to steal someone duck!")
164212 else {
165213 let unstakeDuckReward = if (isJackpot(fromBase58String(asset)))
166- then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [asset], nil))
214+ then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [asset], i.payments))
167215 else asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], nil))
168216 if ((unstakeDuckReward == unstakeDuckReward))
169217 then {
185233
186234 @Callable(i)
187235 func claimDuckRewards (asset) = {
188- let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], nil))
236+ let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], i.payments))
189237 if ((claimRewards == claimRewards))
190238 then nil
191239 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyOwner (duckHouseId) = (duckHouseId + "_owner")
55
66
77 func keyDuckHouse (duckId) = (duckId + "_duck_house")
88
99
1010 func occupiedSpotsDucksHouse (duckHouseId) = (duckHouseId + "_filled_spots")
1111
1212
1313 func tryGetStringExternal (address,key) = match getString(address, key) {
1414 case a: String =>
1515 a
1616 case _ =>
1717 ""
1818 }
1919
2020
2121 func tryGetString (key) = tryGetStringExternal(this, key)
2222
2323
2424 func tryGetInteger (key) = match getInteger(this, key) {
2525 case b: Int =>
2626 b
2727 case _ =>
2828 0
2929 }
3030
3131
3232 func asString (value) = match value {
3333 case string: String =>
3434 string
3535 case _ =>
3636 throw("wrong type, expected: String")
3737 }
3838
3939
4040 func asInt (value) = match value {
4141 case int: Int =>
4242 int
4343 case _ =>
4444 throw("wrong type, expected: Int")
4545 }
4646
4747
48-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
48+func staticKey_oracleAddress () = "static_oracleAddress"
4949
5050
51-func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
51+func staticKey_itemsAddress () = "static_itemsAddress"
5252
5353
54-func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
54+func staticKey_extraFee () = "static_extraFee"
5555
5656
57-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
57+func staticKey_feeAggregator () = "static_feeAggregator"
5858
5959
60-func maxDucks () = tryGetInteger("static_maxDucks")
60+func staticKey_eggAssetId () = "static_eggAssetId"
6161
6262
63-func stakeCall () = tryGetString("static_stakeCall")
63+func staticKey_farmingAddress () = "static_farmingAddress"
6464
6565
66-func JStakeCall () = tryGetString("static_JStakeCall")
66+func staticKey_maxDucks () = "static_maxDucks"
6767
6868
69-func type () = tryGetString("static_type")
69+func staticKey_stakeCall () = "static_stakeCall"
7070
7171
72-func boost () = tryGetInteger("static_boost")
72+func staticKey_JStakeCall () = "static_JStakeCall"
73+
74+
75+func staticKey_type () = "static_type"
76+
77+
78+func staticKey_boost () = "static_boost"
79+
80+
81+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
82+
83+
84+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
85+
86+
87+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
88+
89+
90+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
91+
92+
93+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
94+
95+
96+func maxDucks () = tryGetInteger(staticKey_maxDucks())
97+
98+
99+func stakeCall () = tryGetString(staticKey_stakeCall())
100+
101+
102+func JStakeCall () = tryGetString(staticKey_JStakeCall())
103+
104+
105+func type () = tryGetString(staticKey_type())
106+
107+
108+func boost () = tryGetInteger(staticKey_boost())
73109
74110
75111 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
112+
113+
114+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
115+ then throw("WCAP: Please attach waves")
116+ else {
117+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
118+ if ((payment.amount != feeAmount))
119+ then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
120+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
121+ }
76122
77123
78124 @Callable(i)
79125 func configureOracle (oracle,type) = if ((i.caller != this))
80126 then throw("admin only")
81127 else {
82128 let setup = if ((type == "ART-BIGHOUSE"))
83- then [IntegerEntry("static_boost", 15), IntegerEntry("static_maxDucks", 10), StringEntry("static_stakeCall", "stakeNFTWithoutPerch"), StringEntry("static_type", "ART-BIGHOUSE"), StringEntry("static_JStakeCall", "stakeNFTWithoutPerch")]
129+ then [IntegerEntry(staticKey_boost(), 15), IntegerEntry(staticKey_maxDucks(), 10), StringEntry(staticKey_stakeCall(), "stakeNFTWithoutPerch"), StringEntry(staticKey_type(), "ART-BIGHOUSE"), StringEntry(staticKey_JStakeCall(), "stakeNFTWithoutPerch")]
84130 else if ((type == "ART-HOUSE"))
85- then [IntegerEntry("static_boost", 30), IntegerEntry("static_maxDucks", 4), StringEntry("static_stakeCall", "stakeNFT"), StringEntry("static_type", "ART-HOUSE"), StringEntry("static_JStakeCall", "stakeNFTWithoutPerch")]
131+ then [IntegerEntry(staticKey_boost(), 30), IntegerEntry(staticKey_maxDucks(), 4), StringEntry(staticKey_stakeCall(), "stakeNFT"), StringEntry(staticKey_type(), "ART-HOUSE"), StringEntry(staticKey_JStakeCall(), "stakeNFTWithoutPerch")]
86132 else throw("Unknown type!")
87- ([StringEntry("static_oracleAddress", oracle)] ++ setup)
133+ ([StringEntry(staticKey_oracleAddress(), oracle)] ++ setup)
88134 }
89135
90136
91137
92138 @Callable(i)
93139 func stakeDuckHouse () = {
94140 let owner = toString(i.caller)
95141 let artefactPayment = value(i.payments[0])
142+ let validPayment = checkAdditionalPayment(i.payments[1])
96143 let artefactAssetId = toBase58String(value(artefactPayment.assetId))
97144 if ((artefactPayment.amount != 1))
98145 then throw("NFT is not attached")
99146 else {
100147 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [artefactAssetId], nil))
101148 if ((artefactName == artefactName))
102149 then if ((artefactName != type()))
103150 then throw("Wrong artefact")
104- else [StringEntry(keyOwner(artefactAssetId), owner)]
151+ else ([StringEntry(keyOwner(artefactAssetId), owner)] ++ validPayment)
105152 else throw("Strict value is not equal to itself.")
106153 }
107154 }
108155
109156
110157
111158 @Callable(i)
112159 func unstakeDuckHouse (duckHouseId) = {
113160 let caller = toString(i.caller)
114161 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
162+ let validPayment = checkAdditionalPayment(i.payments[1])
115163 if ((duckHouseOwner == ""))
116164 then throw("This duckhouse is not staked!")
117165 else if ((duckHouseOwner != caller))
118166 then throw("This duckhouse is not yours!")
119167 else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
120168 then throw("Please first remove your ducks from the duckhouse")
121- else [ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))]
169+ else ([ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))] ++ validPayment)
122170 }
123171
124172
125173
126174 @Callable(i)
127175 func stakeDuck (duckHouseId) = {
128176 let assetId = value(value(i.payments[0]).assetId)
129177 let address = toString(i.caller)
130178 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
131179 if ((duckHouseOwner == ""))
132180 then throw("This duckhouse is not staked!")
133181 else if ((duckHouseOwner != address))
134182 then throw("This duckhouse is not yours!")
135183 else {
136184 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
137185 if ((filledSpots == maxDucks()))
138186 then throw("No space in duck house left!")
139187 else {
140188 let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
141189 if ((boostDuck == boostDuck))
142190 then {
143191 let stakeDuck = if (isJackpot(assetId))
144192 then invoke(getFarmingAddress(), JStakeCall(), nil, i.payments)
145193 else invoke(getFarmingAddress(), stakeCall(), nil, i.payments)
146194 if ((stakeDuck == stakeDuck))
147195 then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
148196 else throw("Strict value is not equal to itself.")
149197 }
150198 else throw("Strict value is not equal to itself.")
151199 }
152200 }
153201 }
154202
155203
156204
157205 @Callable(i)
158206 func unstakeDuck (asset) = {
159207 let duckHouseId = tryGetString(keyDuckHouse(asset))
160208 let owner = tryGetString(keyOwner(duckHouseId))
161209 let address = toString(i.caller)
162210 if ((owner != address))
163211 then throw("Don't try to steal someone duck!")
164212 else {
165213 let unstakeDuckReward = if (isJackpot(fromBase58String(asset)))
166- then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [asset], nil))
214+ then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [asset], i.payments))
167215 else asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], nil))
168216 if ((unstakeDuckReward == unstakeDuckReward))
169217 then {
170218 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
171219 if ((filledSpots == 0))
172220 then throw("You aren't staking any ducks!")
173221 else {
174222 let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
175223 if ((unboostDuck == unboostDuck))
176224 then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
177225 else throw("Strict value is not equal to itself.")
178226 }
179227 }
180228 else throw("Strict value is not equal to itself.")
181229 }
182230 }
183231
184232
185233
186234 @Callable(i)
187235 func claimDuckRewards (asset) = {
188- let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], nil))
236+ let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], i.payments))
189237 if ((claimRewards == claimRewards))
190238 then nil
191239 else throw("Strict value is not equal to itself.")
192240 }
193241
194242

github/deemru/w8io/873ac7e 
53.47 ms