tx · F6UDdSc2s4YE5swmKjvihEDBzeYGcW63AvZG8qpb6zse 3PEBtiSVLrqyYxGd76vXKu8FFWWsD1c5uYG: -0.01400000 Waves 2021.11.17 16:23 [2860087] smart account 3PEBtiSVLrqyYxGd76vXKu8FFWWsD1c5uYG > SELF 0.00000000 Waves
{ "type": 13, "id": "F6UDdSc2s4YE5swmKjvihEDBzeYGcW63AvZG8qpb6zse", "fee": 1400000, "feeAssetId": null, "timestamp": 1637155425365, "version": 2, "chainId": 87, "sender": "3PEBtiSVLrqyYxGd76vXKu8FFWWsD1c5uYG", "senderPublicKey": "GPiVunnvoUZtBzkfVrpRsMBEf3mWdgRrex2zvzCtM6WQ", "proofs": [ "PxpAdWreocLEwsVnUxvMchVpaDiyiD1ir6S8fpENmo98BsnARQdKZJj3E5YH5pcAEv9YpQpMLtExdV4p9WB9sgh" ], "script": "base64:AAIFAAAAAAAAAwQIAhIGCgQBAQgEEgMKAQgSAwoBCBIDCgEIEgQKAggIEgQKAggIEgQKAggIGhYKAmExEhBpbmN1YmF0b3JBZGRyZXNzGhQKAmEyEg5icmVlZGVyQWRkcmVzcxoTCgJhMxINZmVlQWdncmVnYXRvchoQCgJhNBIKZWdnQXNzZXRJZBoUCgJhNRIOa0dsb2JhbENvdW50ZXIaEAoCYTYSCmZlZVBlcmNlbnQaEwoCYTcSDXRyeUdldEludGVnZXIaCQoCYTgSA2tleRoJCgJhORIDdmFsGg0KAmIxEgckbWF0Y2gwGhIKAmIyEgx0cnlHZXRTdHJpbmcaEwoCYjMSDXRyeUdldEJvb2xlYW4aFgoCYjQSEGdldEdsb2JhbENvdW50ZXIaFgoCYjUSEGdldEFzc2V0R2Vub3R5cGUaDQoCYjYSB2Fzc2V0SWQaDAoCYjcSBmFzc2V0MRoMCgJiOBIGYXNzZXQyGhkKAmI5EhNnZXRCaWRDYW5jZWxSZXN1bHRzGg8KAmMxEglhdWN0aW9uSWQaCwoCYzISBWJpZElkGg8KAmMzEglpc0VnZ1NlbGwaFAoCYzQSDnBheW1lbnRBc3NldElkGg8KAmM1EgliaWRBdXRob3IaDwoCYzYSCWJpZEFtb3VudBoQCgJjNxIKc3RhcnRQcmljZRoSCgJjOBIMaW5zdGFudFByaWNlGhEKAmM5EgtkZXNjcmlwdGlvbhoNCgJkMRIHZWdnU2VsbBoTCgJkMhINZ2xvYmFsQ291bnRlchoJCgJkMxIDcG10GgsKAmQ0EgVhc3NldBoSCgJkNRIMYXVjdGlvbk93bmVyGhYKAmQ2EhBwYXltZW50QXNzZXROYW1lGgwKAmQ3EgZhbW91bnQaEwoCZDgSDWF1Y3Rpb25TdGF0dXMaEQoCZDkSC3JlY29yZFByaWNlGhQKAmUxEg5uZXdSZWNvcmRQcmljZRoOCgJlMhIIbWluUHJpY2UaDwoCZTMSCWJpZFN0YXR1cxoMCgJlNBIGdmVyaWZ5AAAADAAAAAACYTEBAAAAGgFXjLVIn36eFdUYl44bd/sJf2di2uFtYyVJAAAAAAJhMgEAAAAaAVd+57n5ccRMeFx9eHuGcYJDFaZ5ag+2Hx4AAAAAAmEzAQAAABoBVy6CChx+cyHzIYU93pmy0O4XjdZ/888bhQAAAAACYTQBAAAAIKOff08jclHRLOIhkmKITQwL8+oiboHVr/wLkxfObbHJAAAAAAJhNQIAAAAOR0xPQkFMX0NPVU5URVIAAAAAAmE2AAAAAAAAAAAFAQAAAAJhNwAAAAEAAAACYTgEAAAAAmE5BAAAAAJiMQkABBoAAAACBQAAAAR0aGlzBQAAAAJhOAMJAAABAAAAAgUAAAACYjECAAAAA0ludAQAAAABYgUAAAACYjEFAAAAAWIAAAAAAAAAAAAFAAAAAmE5AQAAAAJiMgAAAAEAAAACYTgEAAAAAmE5BAAAAAJiMQkABB0AAAACBQAAAAR0aGlzBQAAAAJhOAMJAAABAAAAAgUAAAACYjECAAAABlN0cmluZwQAAAABYgUAAAACYjEFAAAAAWICAAAAAAUAAAACYTkBAAAAAmIzAAAAAQAAAAJhOAQAAAACYjEJAAQbAAAAAgUAAAAEdGhpcwUAAAACYTgDCQAAAQAAAAIFAAAAAmIxAgAAAAdCb29sZWFuBAAAAAFiBQAAAAJiMQUAAAABYgcBAAAAAmI0AAAAAAkBAAAAAmE3AAAAAQUAAAACYTUBAAAAAmI1AAAAAQAAAAJiNgQAAAACYjcEAAAAAmIxCQAEHQAAAAIJAQAAAAdBZGRyZXNzAAAAAQUAAAACYTEJAAJYAAAAAQUAAAACYjYDCQAAAQAAAAIFAAAAAmIxAgAAAAZTdHJpbmcEAAAAAWIFAAAAAmIxBQAAAAFiAgAAAAADCQEAAAACIT0AAAACBQAAAAJiNwIAAAAABQAAAAJiNwQAAAACYjgEAAAAAmIxCQAEHQAAAAIJAQAAAAdBZGRyZXNzAAAAAQUAAAACYTIJAAJYAAAAAQUAAAACYjYDCQAAAQAAAAIFAAAAAmIxAgAAAAZTdHJpbmcEAAAAAWMFAAAAAmIxBQAAAAFjAgAAAAADCQEAAAACIT0AAAACBQAAAAJiOAIAAAAABQAAAAJiOAIAAAAAAQAAAAJiOQAAAAIAAAACYzEAAAACYzIEAAAAAmMzCQEAAAACYjMAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfZWdnU2VsbAQAAAACYzQDCQAAAAAAAAIFAAAAAmMzBgUAAAACYTQFAAAABHVuaXQEAAAAAmI2CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfYXNzZXRJZAQAAAACYzUJAQAAAAJiMgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19hdXRob3IEAAAAAmM2CQEAAAACYTcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAFX2JpZF8FAAAAAmMyAgAAAAdfYW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXNzZXRJZF8FAAAAAmI2AgAAAAVfYmlkXwUAAAACYzICAAAABV9kYXRhCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA97ImF1Y3Rpb25JZCI6ICIFAAAAAmMxAgAAAA4iLCAiYXV0aG9yIjogIgUAAAACYzUCAAAADiIsICJhbW91bnQiOiAiCQABpAAAAAEFAAAAAmM2AgAAABkiLCAic3RhdHVzIjogImNhbmNlbGxlZCJ9CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19zdGF0dXMCAAAACWNhbmNlbGxlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAAmM1AgAAAAlfYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAAmM1BQAAAAJjNgUAAAACYzQFAAAAA25pbAAAAAcAAAABaQEAAAALaW5pdEF1Y3Rpb24AAAAEAAAAAmM3AAAAAmM4AAAAAmM5AAAAAmQxBAAAAAJkMgkBAAAAAmI0AAAAAAQAAAACYzEJAAEsAAAAAgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQABpAAAAAEFAAAAAmQyBAAAAAJkMwkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAACYjYJAQAAAAV2YWx1ZQAAAAEIBQAAAAJkMwAAAAdhc3NldElkBAAAAAJkNAkBAAAAAmI1AAAAAQUAAAACYjYDCQAAAAAAAAIFAAAAAmQ0AgAAAAAJAAACAAAAAQIAAAA9WW91IGNhbiBvbmx5IHNlbGwgYW4gTkZULWR1Y2sgY3JlYXRlZCBpbiBpbmN1YmF0b3Igb3IgYnJlZWRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAdfc3RhdHVzAgAAAARvcGVuCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfZWdnU2VsbAUAAAACZDEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAAmE1CQAAZAAAAAIFAAAAAmQyAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwkAAlgAAAABBQAAAAJiNgIAAAAFX2xhc3QFAAAAAmMxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAACV9hc3NldEdlbgUAAAACZDQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAIX2Fzc2V0SWQJAAJYAAAAAQUAAAACYjYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAACl9zdGFydGVkQXQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAABl9vd25lcgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAMX2Rlc2NyaXB0aW9uBQAAAAJjOQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAALX3N0YXJ0UHJpY2UFAAAAAmM3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAA1faW5zdGFudFByaWNlBQAAAAJjOAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgIAAAAJX2F1Y3Rpb25fBQAAAAJjMQIAAAAKX2xvY2tlZE5GVAkAAlgAAAABBQAAAAJiNgUAAAADbmlsAAAAAWkBAAAADWNhbmNlbEF1Y3Rpb24AAAABAAAAAmMxBAAAAAJkNQkBAAAAAmIyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAGX293bmVyAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAAAmQ1CQAAAgAAAAECAAAAHU9ubHkgYWxsb3dlZCB0byBhdWN0aW9uIG93bmVyAwkBAAAAAiE9AAAAAgkBAAAAAmIyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAHX3N0YXR1cwIAAAAEb3BlbgkAAAIAAAABAgAAABBhdWN0aW9uIGlzIGNsb3NlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAAB19zdGF0dXMCAAAACWNhbmNlbGxlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAJkNQIAAAAJX2F1Y3Rpb25fBQAAAAJjMQIAAAAKX2xvY2tlZE5GVAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAIX2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAppbnN0YW50QnV5AAAAAQAAAAJjMQQAAAACYzMJAQAAAAJiMwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAACF9lZ2dTZWxsBAAAAAJjNAMJAAAAAAAAAgUAAAACYzMGBQAAAAJhNAUAAAAEdW5pdAQAAAACZDYDCQAAAAAAAAIFAAAAAmMzBgIAAAADRUdHAgAAAAVXQVZFUwQAAAACZDMJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAAmQ3CAUAAAACZDMAAAAGYW1vdW50BAAAAAJiNgkBAAAAAmIyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAIX2Fzc2V0SWQEAAAAAmMyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAAmQ4CQEAAAACYjIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAdfc3RhdHVzAwkBAAAAAiE9AAAAAggFAAAAAmQzAAAAB2Fzc2V0SWQFAAAAAmM0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABpBdWN0aW9uIGRvZXMgb25seSBzdXBwb3J0IAUAAAACZDYCAAAACiBwYXltZW50cy4DCQEAAAACIT0AAAACBQAAAAJkOAIAAAAEb3BlbgkAAAIAAAABAgAAACpBdWN0aW9uIGlzIGNsb3NlZC4gWW91IGNhbm5vdCBwbGFjZSBhIGJpZC4EAAAAAmM4CQEAAAACYTcAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAA1faW5zdGFudFByaWNlAwkAAGYAAAACBQAAAAJjOAUAAAACZDcJAAACAAAAAQkAASwAAAACAgAAAC5Gb3IgaW5zdGFudCBwdXJjaGFzZSB5b3UgbmVlZCB0byBwYXkgYXQgbGVhc3QgCQABpAAAAAEFAAAAAmM4BAAAAAJkNQkBAAAAAmIyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAGX293bmVyBAAAAAJkOQkBAAAAAmE3AAAAAQkAASwAAAACBQAAAAJiNgIAAAAMX3JlY29yZFByaWNlBAAAAAJlMQkAAZYAAAABCQAETAAAAAIFAAAAAmQ5CQAETAAAAAIFAAAAAmQ3BQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAHX3N0YXR1cwIAAAAIZmluaXNoZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAAC19maW5hbFByaWNlBQAAAAJkNwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAJiNgIAAAAMX3JlY29yZFByaWNlBQAAAAJlMQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFzc2V0SWRfBQAAAAJiNgIAAAAFX2JpZF8FAAAAAmMyAgAAAAVfZGF0YQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPeyJhdWN0aW9uSWQiOiAiBQAAAAJjMQIAAAAOIiwgImF1dGhvciI6ICIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAgAAAA4iLCAiYW1vdW50IjogIgkAAaQAAAABBQAAAAJkNwIAAAAYIiwgInN0YXR1cyI6ICJmaW5pc2hlZCJ9CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAAmQ1AgAAAAlfYXVjdGlvbl8FAAAAAmMxAgAAAApfbG9ja2VkTkZUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgAAAAAAAAAAAQkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAJkNQkAAGsAAAADBQAAAAJkNwkAAGUAAAACAAAAAAAAAABkBQAAAAJhNgAAAAAAAAAAZAUAAAACYzQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABBQAAAAJhMwkAAGsAAAADBQAAAAJkNwUAAAACYTYAAAAAAAAAAGQFAAAAAmM0BQAAAANuaWwAAAABaQEAAAAIcGxhY2VCaWQAAAABAAAAAmMxBAAAAAJjMwkBAAAAAmIzAAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAIX2VnZ1NlbGwEAAAAAmM0AwkAAAAAAAACBQAAAAJjMwYFAAAAAmE0BQAAAAR1bml0BAAAAAJkNgMJAAAAAAAAAgUAAAACYzMGAgAAAANFR0cCAAAABVdBVkVTBAAAAAJkMwkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAACZDcIBQAAAAJkMwAAAAZhbW91bnQEAAAAAmMyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAAmI2CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfYXNzZXRJZAMJAQAAAAIhPQAAAAIIBQAAAAJkMwAAAAdhc3NldElkBQAAAAJjNAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAaQXVjdGlvbiBkb2VzIG9ubHkgc3VwcG9ydCAFAAAAAmQ2AgAAAAogcGF5bWVudHMuBAAAAAJlMgkBAAAAAmE3AAAAAQkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAALX3N0YXJ0UHJpY2UDCQAAZgAAAAIFAAAAAmUyBQAAAAJkNwkAAAIAAAABCQABLAAAAAICAAAAJFRoZSBtaW5pbWFsIGluaXRpYWwgcHJpY2UgaXMgc2V0IGFzIAkAAaQAAAABBQAAAAJlMgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAFX2JpZF8FAAAAAmMyAgAAAAdfYXV0aG9yCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFzc2V0SWRfBQAAAAJiNgIAAAAFX2JpZF8FAAAAAmMyAgAAAAVfZGF0YQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPeyJhdWN0aW9uSWQiOiAiBQAAAAJjMQIAAAAOIiwgImF1dGhvciI6ICIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAgAAAA4iLCAiYW1vdW50IjogIgkAAaQAAAABBQAAAAJkNwIAAAAUIiwgInN0YXR1cyI6ICJvcGVuIn0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19hbW91bnQFAAAAAmQ3CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXICAAAACV9hdWN0aW9uXwUAAAACYzECAAAABV9iaWRfBQAAAAJjMgUAAAACYjYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAABV9iaWRfBQAAAAJjMgIAAAAHX3N0YXR1cwIAAAAEb3BlbgUAAAADbmlsAAAAAWkBAAAACWNhbmNlbEJpZAAAAAIAAAACYzEAAAACYzIEAAAAAmI2CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfYXNzZXRJZAQAAAACYzUJAQAAAAJiMgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19hdXRob3IEAAAAAmM2CQEAAAACYTcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAFX2JpZF8FAAAAAmMyAgAAAAdfYW1vdW50AwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAAAmM1CQAAAgAAAAECAAAAHk9ubHkgYWxsb3dlZCB0byB0aGUgYmlkIGF1dGhvcgMJAQAAAAIhPQAAAAIJAQAAAAJiMgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19zdGF0dXMCAAAABG9wZW4JAAACAAAAAQIAAAAPYmlkIGlzIG5vdCBvcGVuCQEAAAACYjkAAAACBQAAAAJjMQUAAAACYzIAAAABaQEAAAARY2FuY2VsT3V0ZGF0ZWRCaWQAAAACAAAAAmMxAAAAAmMyCQAAAgAAAAECAAAADnRvIGJlIHJlbGVhc2VkAAAAAWkBAAAACWFjY2VwdEJpZAAAAAIAAAACYzEAAAACYzIEAAAAAmMzCQEAAAACYjMAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfZWdnU2VsbAQAAAACYzQDCQAAAAAAAAIFAAAAAmMzBgUAAAACYTQFAAAABHVuaXQEAAAAAmQ1CQEAAAACYjIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAZfb3duZXIEAAAAAmM1CQEAAAACYjIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAJjMQIAAAAFX2JpZF8FAAAAAmMyAgAAAAdfYXV0aG9yBAAAAAJjNgkBAAAAAmE3AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAABV9iaWRfBQAAAAJjMgIAAAAHX2Ftb3VudAQAAAACZTMJAQAAAAJiMgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19zdGF0dXMEAAAAAmI2CQEAAAACYjIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAhfYXNzZXRJZAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAJkNQkAAAIAAAABAgAAAB1Pbmx5IGFsbG93ZWQgdG8gYXVjdGlvbiBvd25lcgMJAQAAAAIhPQAAAAIFAAAAAmUzAgAAAARvcGVuCQAAAgAAAAECAAAAKEJpZCB3YXMgY2FuY2VsbGVkIGFuZCBjYW5ub3QgYmUgYWNjZXB0ZWQDCQEAAAACIT0AAAACCQEAAAACYjIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAdfc3RhdHVzAgAAAARvcGVuCQAAAgAAAAECAAAAEkF1Y3Rpb24gd2FzIGNsb3NlZAQAAAACZDkJAQAAAAJhNwAAAAEJAAEsAAAAAgUAAAACYjYCAAAADF9yZWNvcmRQcmljZQQAAAACZTEJAAGWAAAAAQkABEwAAAACBQAAAAJkOQkABEwAAAACBQAAAAJjNgUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzICAAAAB19zdGF0dXMCAAAACGZpbmlzaGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAAB19zdGF0dXMCAAAACGZpbmlzaGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXNzZXRJZF8FAAAAAmI2AgAAAAVfYmlkXwUAAAACYzICAAAABV9kYXRhCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA97ImF1Y3Rpb25JZCI6ICIFAAAAAmMxAgAAAA4iLCAiYXV0aG9yIjogIgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXICAAAADiIsICJhbW91bnQiOiAiCQABpAAAAAEFAAAAAmM2AgAAABgiLCAic3RhdHVzIjogImZpbmlzaGVkIn0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAACYzECAAAAC19maW5hbFByaWNlBQAAAAJjNgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAJiNgIAAAAMX3JlY29yZFByaWNlBQAAAAJlMQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAAmM1AgAAAAlfYXVjdGlvbl8FAAAAAmMxAgAAAAVfYmlkXwUAAAACYzIJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAACZDUCAAAACV9hdWN0aW9uXwUAAAACYzECAAAACl9sb2NrZWRORlQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAawAAAAMFAAAAAmM2CQAAZQAAAAIAAAAAAAAAAGQFAAAAAmE2AAAAAAAAAABkBQAAAAJjNAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEFAAAAAmEzCQAAawAAAAMFAAAAAmM2BQAAAAJhNgAAAAAAAAAAZAUAAAACYzQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAACYzUAAAAAAAAAAAEJAAJZAAAAAQUAAAACYjYFAAAAA25pbAAAAAEAAAACdHgBAAAAAmU0AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXlLjLDj", "height": 2860087, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5c12s3kxKjnyMGqGpvLVhNvDMfpXzwkhU2nbrxCa2Yad Next: J9hacNRtGzathpAfCzSpat6yZ2r1FQqoNyFU7hk5iXas Diff:
Old | New | Differences | |
---|---|---|---|
7 | 7 | ||
8 | 8 | let c = base58'3P6AobNbcQ3ZjcRY37mJPKN8PP9Giz8kgeY' | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS' | |
11 | 11 | ||
12 | - | func e (f) = { | |
13 | - | let g = { | |
14 | - | let h = getInteger(this, f) | |
15 | - | if ($isInstanceOf(h, "Int")) | |
12 | + | let e = "GLOBAL_COUNTER" | |
13 | + | ||
14 | + | let f = 5 | |
15 | + | ||
16 | + | func g (h) = { | |
17 | + | let i = { | |
18 | + | let j = getInteger(this, h) | |
19 | + | if ($isInstanceOf(j, "Int")) | |
16 | 20 | then { | |
17 | - | let | |
18 | - | | |
21 | + | let k = j | |
22 | + | k | |
19 | 23 | } | |
20 | 24 | else 0 | |
21 | 25 | } | |
22 | - | | |
26 | + | i | |
23 | 27 | } | |
24 | 28 | ||
25 | 29 | ||
26 | - | func | |
27 | - | let | |
28 | - | let | |
29 | - | if ($isInstanceOf( | |
30 | + | func l (h) = { | |
31 | + | let i = { | |
32 | + | let j = getString(this, h) | |
33 | + | if ($isInstanceOf(j, "String")) | |
30 | 34 | then { | |
31 | - | let | |
32 | - | | |
35 | + | let k = j | |
36 | + | k | |
33 | 37 | } | |
34 | 38 | else "" | |
35 | 39 | } | |
36 | - | | |
40 | + | i | |
37 | 41 | } | |
38 | 42 | ||
39 | 43 | ||
40 | - | func k (l) = { | |
41 | - | let m = { | |
42 | - | let h = getString(Address(a), toBase58String(l)) | |
43 | - | if ($isInstanceOf(h, "String")) | |
44 | + | func m (h) = { | |
45 | + | let j = getBoolean(this, h) | |
46 | + | if ($isInstanceOf(j, "Boolean")) | |
47 | + | then { | |
48 | + | let k = j | |
49 | + | k | |
50 | + | } | |
51 | + | else false | |
52 | + | } | |
53 | + | ||
54 | + | ||
55 | + | func n () = g(e) | |
56 | + | ||
57 | + | ||
58 | + | func o (p) = { | |
59 | + | let q = { | |
60 | + | let j = getString(Address(a), toBase58String(p)) | |
61 | + | if ($isInstanceOf(j, "String")) | |
44 | 62 | then { | |
45 | - | let | |
46 | - | | |
63 | + | let k = j | |
64 | + | k | |
47 | 65 | } | |
48 | 66 | else "" | |
49 | 67 | } | |
50 | - | if (( | |
51 | - | then | |
68 | + | if ((q != "")) | |
69 | + | then q | |
52 | 70 | else { | |
53 | - | let | |
54 | - | let | |
55 | - | if ($isInstanceOf( | |
71 | + | let r = { | |
72 | + | let j = getString(Address(b), toBase58String(p)) | |
73 | + | if ($isInstanceOf(j, "String")) | |
56 | 74 | then { | |
57 | - | let | |
58 | - | | |
75 | + | let s = j | |
76 | + | s | |
59 | 77 | } | |
60 | 78 | else "" | |
61 | 79 | } | |
62 | - | if (( | |
63 | - | then | |
80 | + | if ((r != "")) | |
81 | + | then r | |
64 | 82 | else "" | |
65 | 83 | } | |
66 | 84 | } | |
67 | 85 | ||
68 | 86 | ||
69 | - | func p (q,r) = { | |
70 | - | let l = getStringValue(this, (("auction_" + q) + "_assetId")) | |
71 | - | let s = j((((("auction_" + q) + "_bid_") + r) + "_author")) | |
72 | - | let t = e((((("auction_" + q) + "_bid_") + r) + "_amount")) | |
73 | - | [StringEntry((((("assetId_" + l) + "_bid_") + r) + "_data"), (((((("{\"auctionId\": \"" + q) + "\", \"author\": \"") + s) + "\", \"amount\": \"") + toString(t)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + q) + "_bid_") + r) + "_status"), "cancelled"), DeleteEntry(((((("address_" + s) + "_auction_") + q) + "_bid_") + r)), ScriptTransfer(Address(fromBase58String(s)), t, unit)] | |
87 | + | func t (u,v) = { | |
88 | + | let w = m((("auction_" + u) + "_eggSell")) | |
89 | + | let x = if ((w == true)) | |
90 | + | then d | |
91 | + | else unit | |
92 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
93 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
94 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
95 | + | [StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + y) + "\", \"amount\": \"") + toString(z)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "cancelled"), DeleteEntry(((((("address_" + y) + "_auction_") + u) + "_bid_") + v)), ScriptTransfer(Address(fromBase58String(y)), z, x)] | |
74 | 96 | } | |
75 | 97 | ||
76 | 98 | ||
77 | - | @Callable(u) | |
78 | - | func initAuction (v,w,x) = { | |
79 | - | let q = toBase58String(u.transactionId) | |
80 | - | let y = value(u.payments[0]) | |
81 | - | let l = value(y.assetId) | |
82 | - | let z = k(l) | |
83 | - | if ((z == "")) | |
99 | + | @Callable(A) | |
100 | + | func initAuction (B,C,D,E) = { | |
101 | + | let F = n() | |
102 | + | let u = (toBase58String(A.transactionId) + toString(F)) | |
103 | + | let G = value(A.payments[0]) | |
104 | + | let p = value(G.assetId) | |
105 | + | let H = o(p) | |
106 | + | if ((H == "")) | |
84 | 107 | then throw("You can only sell an NFT-duck created in incubator or breeder") | |
85 | - | else [StringEntry((("auction_" + | |
108 | + | else [StringEntry((("auction_" + u) + "_status"), "open"), BooleanEntry((("auction_" + u) + "_eggSell"), E), IntegerEntry(e, (F + 1)), StringEntry((("auction_" + toBase58String(p)) + "_last"), u), StringEntry((("auction_" + u) + "_assetGen"), H), StringEntry((("auction_" + u) + "_assetId"), toBase58String(p)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(A.originCaller)), StringEntry((("auction_" + u) + "_description"), D), IntegerEntry((("auction_" + u) + "_startPrice"), B), IntegerEntry((("auction_" + u) + "_instantPrice"), C), StringEntry((((("address_" + toString(A.originCaller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(p))] | |
86 | 109 | } | |
87 | 110 | ||
88 | 111 | ||
89 | 112 | ||
90 | - | @Callable( | |
91 | - | func cancelAuction ( | |
92 | - | let | |
93 | - | if ((toString( | |
113 | + | @Callable(A) | |
114 | + | func cancelAuction (u) = { | |
115 | + | let I = l((("auction_" + u) + "_owner")) | |
116 | + | if ((toString(A.originCaller) != I)) | |
94 | 117 | then throw("Only allowed to auction owner") | |
95 | - | else if (( | |
118 | + | else if ((l((("auction_" + u) + "_status")) != "open")) | |
96 | 119 | then throw("auction is close") | |
97 | - | else [StringEntry((("auction_" + | |
120 | + | else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))] | |
98 | 121 | } | |
99 | 122 | ||
100 | 123 | ||
101 | 124 | ||
102 | - | @Callable(u) | |
103 | - | func instantBuy (q) = { | |
104 | - | let y = value(u.payments[0]) | |
105 | - | let B = y.amount | |
106 | - | let l = j((("auction_" + q) + "_assetId")) | |
107 | - | let r = toBase58String(u.transactionId) | |
108 | - | let C = j((("auction_" + q) + "_status")) | |
109 | - | if ((y.assetId != unit)) | |
110 | - | then throw("Auction does only support WAVES payments.") | |
111 | - | else if ((C != "open")) | |
125 | + | @Callable(A) | |
126 | + | func instantBuy (u) = { | |
127 | + | let w = m((("auction_" + u) + "_eggSell")) | |
128 | + | let x = if ((w == true)) | |
129 | + | then d | |
130 | + | else unit | |
131 | + | let J = if ((w == true)) | |
132 | + | then "EGG" | |
133 | + | else "WAVES" | |
134 | + | let G = value(A.payments[0]) | |
135 | + | let K = G.amount | |
136 | + | let p = l((("auction_" + u) + "_assetId")) | |
137 | + | let v = toBase58String(A.transactionId) | |
138 | + | let L = l((("auction_" + u) + "_status")) | |
139 | + | if ((G.assetId != x)) | |
140 | + | then throw((("Auction does only support " + J) + " payments.")) | |
141 | + | else if ((L != "open")) | |
112 | 142 | then throw("Auction is closed. You cannot place a bid.") | |
113 | 143 | else { | |
114 | - | let | |
115 | - | if (( | |
116 | - | then throw(("For instant purchase you need to pay at least " + toString( | |
144 | + | let C = g((("auction_" + u) + "_instantPrice")) | |
145 | + | if ((C > K)) | |
146 | + | then throw(("For instant purchase you need to pay at least " + toString(C))) | |
117 | 147 | else { | |
118 | - | let | |
119 | - | let | |
120 | - | let | |
121 | - | [StringEntry((("auction_" + | |
148 | + | let I = l((("auction_" + u) + "_owner")) | |
149 | + | let M = g((p + "_recordPrice")) | |
150 | + | let N = max([M, K]) | |
151 | + | [StringEntry((("auction_" + u) + "_status"), "finished"), IntegerEntry((("auction_" + u) + "_finalPrice"), K), IntegerEntry((p + "_recordPrice"), N), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(K)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId")))), ScriptTransfer(addressFromStringValue(I), fraction(K, (100 - f), 100), x), ScriptTransfer(Address(c), fraction(K, f, 100), x)] | |
122 | 152 | } | |
123 | 153 | } | |
124 | 154 | } | |
125 | 155 | ||
126 | 156 | ||
127 | 157 | ||
128 | - | @Callable(u) | |
129 | - | func placeBid (q) = { | |
130 | - | let y = value(u.payments[0]) | |
131 | - | let B = y.amount | |
132 | - | let r = toBase58String(u.transactionId) | |
133 | - | let l = getStringValue(this, (("auction_" + q) + "_assetId")) | |
134 | - | if ((y.assetId != unit)) | |
135 | - | then throw("Auction does only support WAVES payments") | |
158 | + | @Callable(A) | |
159 | + | func placeBid (u) = { | |
160 | + | let w = m((("auction_" + u) + "_eggSell")) | |
161 | + | let x = if ((w == true)) | |
162 | + | then d | |
163 | + | else unit | |
164 | + | let J = if ((w == true)) | |
165 | + | then "EGG" | |
166 | + | else "WAVES" | |
167 | + | let G = value(A.payments[0]) | |
168 | + | let K = G.amount | |
169 | + | let v = toBase58String(A.transactionId) | |
170 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
171 | + | if ((G.assetId != x)) | |
172 | + | then throw((("Auction does only support " + J) + " payments.")) | |
136 | 173 | else { | |
137 | - | let | |
138 | - | if (( | |
139 | - | then throw(("The minimal initial price is set as " + toString( | |
140 | - | else [StringEntry((((("auction_" + | |
174 | + | let O = g((("auction_" + u) + "_startPrice")) | |
175 | + | if ((O > K)) | |
176 | + | then throw(("The minimal initial price is set as " + toString(O))) | |
177 | + | else [StringEntry((((("auction_" + u) + "_bid_") + v) + "_author"), toString(A.originCaller)), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(K)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + v) + "_amount"), K), StringEntry(((((("address_" + toString(A.originCaller)) + "_auction_") + u) + "_bid_") + v), p), StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "open")] | |
141 | 178 | } | |
142 | 179 | } | |
143 | 180 | ||
144 | 181 | ||
145 | 182 | ||
146 | - | @Callable( | |
147 | - | func cancelBid ( | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | if ((toString( | |
183 | + | @Callable(A) | |
184 | + | func cancelBid (u,v) = { | |
185 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
186 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
187 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
188 | + | if ((toString(A.originCaller) != y)) | |
152 | 189 | then throw("Only allowed to the bid author") | |
153 | - | else if (( | |
190 | + | else if ((l((((("auction_" + u) + "_bid_") + v) + "_status")) != "open")) | |
154 | 191 | then throw("bid is not open") | |
155 | - | else | |
192 | + | else t(u, v) | |
156 | 193 | } | |
157 | 194 | ||
158 | 195 | ||
159 | 196 | ||
160 | - | @Callable( | |
161 | - | func cancelOutdatedBid ( | |
197 | + | @Callable(A) | |
198 | + | func cancelOutdatedBid (u,v) = throw("to be released") | |
162 | 199 | ||
163 | 200 | ||
164 | 201 | ||
165 | - | @Callable(u) | |
166 | - | func acceptBid (q,r) = { | |
167 | - | let A = j((("auction_" + q) + "_owner")) | |
168 | - | let s = j((((("auction_" + q) + "_bid_") + r) + "_author")) | |
169 | - | let t = e((((("auction_" + q) + "_bid_") + r) + "_amount")) | |
170 | - | let G = j((((("auction_" + q) + "_bid_") + r) + "_status")) | |
171 | - | let l = j((("auction_" + q) + "_assetId")) | |
172 | - | if ((toString(u.originCaller) != A)) | |
202 | + | @Callable(A) | |
203 | + | func acceptBid (u,v) = { | |
204 | + | let w = m((("auction_" + u) + "_eggSell")) | |
205 | + | let x = if ((w == true)) | |
206 | + | then d | |
207 | + | else unit | |
208 | + | let I = l((("auction_" + u) + "_owner")) | |
209 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
210 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
211 | + | let P = l((((("auction_" + u) + "_bid_") + v) + "_status")) | |
212 | + | let p = l((("auction_" + u) + "_assetId")) | |
213 | + | if ((toString(A.originCaller) != I)) | |
173 | 214 | then throw("Only allowed to auction owner") | |
174 | - | else if (( | |
215 | + | else if ((P != "open")) | |
175 | 216 | then throw("Bid was cancelled and cannot be accepted") | |
176 | - | else if (( | |
217 | + | else if ((l((("auction_" + u) + "_status")) != "open")) | |
177 | 218 | then throw("Auction was closed") | |
178 | 219 | else { | |
179 | - | let | |
180 | - | let | |
181 | - | [StringEntry((((("auction_" + | |
220 | + | let M = g((p + "_recordPrice")) | |
221 | + | let N = max([M, z]) | |
222 | + | [StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(z)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), z), IntegerEntry((p + "_recordPrice"), N), DeleteEntry(((((("address_" + y) + "_auction_") + u) + "_bid_") + v)), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.caller, fraction(z, (100 - f), 100), x), ScriptTransfer(Address(c), fraction(z, f, 100), x), ScriptTransfer(addressFromStringValue(y), 1, fromBase58String(p))] | |
182 | 223 | } | |
183 | 224 | } | |
184 | 225 | ||
185 | 226 | ||
186 | - | @Verifier( | |
187 | - | func | |
227 | + | @Verifier(Q) | |
228 | + | func R () = sigVerify(Q.bodyBytes, Q.proofs[0], Q.senderPublicKey) | |
188 | 229 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv' | |
5 | 5 | ||
6 | 6 | let b = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb' | |
7 | 7 | ||
8 | 8 | let c = base58'3P6AobNbcQ3ZjcRY37mJPKN8PP9Giz8kgeY' | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS' | |
11 | 11 | ||
12 | - | func e (f) = { | |
13 | - | let g = { | |
14 | - | let h = getInteger(this, f) | |
15 | - | if ($isInstanceOf(h, "Int")) | |
12 | + | let e = "GLOBAL_COUNTER" | |
13 | + | ||
14 | + | let f = 5 | |
15 | + | ||
16 | + | func g (h) = { | |
17 | + | let i = { | |
18 | + | let j = getInteger(this, h) | |
19 | + | if ($isInstanceOf(j, "Int")) | |
16 | 20 | then { | |
17 | - | let | |
18 | - | | |
21 | + | let k = j | |
22 | + | k | |
19 | 23 | } | |
20 | 24 | else 0 | |
21 | 25 | } | |
22 | - | | |
26 | + | i | |
23 | 27 | } | |
24 | 28 | ||
25 | 29 | ||
26 | - | func | |
27 | - | let | |
28 | - | let | |
29 | - | if ($isInstanceOf( | |
30 | + | func l (h) = { | |
31 | + | let i = { | |
32 | + | let j = getString(this, h) | |
33 | + | if ($isInstanceOf(j, "String")) | |
30 | 34 | then { | |
31 | - | let | |
32 | - | | |
35 | + | let k = j | |
36 | + | k | |
33 | 37 | } | |
34 | 38 | else "" | |
35 | 39 | } | |
36 | - | | |
40 | + | i | |
37 | 41 | } | |
38 | 42 | ||
39 | 43 | ||
40 | - | func k (l) = { | |
41 | - | let m = { | |
42 | - | let h = getString(Address(a), toBase58String(l)) | |
43 | - | if ($isInstanceOf(h, "String")) | |
44 | + | func m (h) = { | |
45 | + | let j = getBoolean(this, h) | |
46 | + | if ($isInstanceOf(j, "Boolean")) | |
47 | + | then { | |
48 | + | let k = j | |
49 | + | k | |
50 | + | } | |
51 | + | else false | |
52 | + | } | |
53 | + | ||
54 | + | ||
55 | + | func n () = g(e) | |
56 | + | ||
57 | + | ||
58 | + | func o (p) = { | |
59 | + | let q = { | |
60 | + | let j = getString(Address(a), toBase58String(p)) | |
61 | + | if ($isInstanceOf(j, "String")) | |
44 | 62 | then { | |
45 | - | let | |
46 | - | | |
63 | + | let k = j | |
64 | + | k | |
47 | 65 | } | |
48 | 66 | else "" | |
49 | 67 | } | |
50 | - | if (( | |
51 | - | then | |
68 | + | if ((q != "")) | |
69 | + | then q | |
52 | 70 | else { | |
53 | - | let | |
54 | - | let | |
55 | - | if ($isInstanceOf( | |
71 | + | let r = { | |
72 | + | let j = getString(Address(b), toBase58String(p)) | |
73 | + | if ($isInstanceOf(j, "String")) | |
56 | 74 | then { | |
57 | - | let | |
58 | - | | |
75 | + | let s = j | |
76 | + | s | |
59 | 77 | } | |
60 | 78 | else "" | |
61 | 79 | } | |
62 | - | if (( | |
63 | - | then | |
80 | + | if ((r != "")) | |
81 | + | then r | |
64 | 82 | else "" | |
65 | 83 | } | |
66 | 84 | } | |
67 | 85 | ||
68 | 86 | ||
69 | - | func p (q,r) = { | |
70 | - | let l = getStringValue(this, (("auction_" + q) + "_assetId")) | |
71 | - | let s = j((((("auction_" + q) + "_bid_") + r) + "_author")) | |
72 | - | let t = e((((("auction_" + q) + "_bid_") + r) + "_amount")) | |
73 | - | [StringEntry((((("assetId_" + l) + "_bid_") + r) + "_data"), (((((("{\"auctionId\": \"" + q) + "\", \"author\": \"") + s) + "\", \"amount\": \"") + toString(t)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + q) + "_bid_") + r) + "_status"), "cancelled"), DeleteEntry(((((("address_" + s) + "_auction_") + q) + "_bid_") + r)), ScriptTransfer(Address(fromBase58String(s)), t, unit)] | |
87 | + | func t (u,v) = { | |
88 | + | let w = m((("auction_" + u) + "_eggSell")) | |
89 | + | let x = if ((w == true)) | |
90 | + | then d | |
91 | + | else unit | |
92 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
93 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
94 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
95 | + | [StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + y) + "\", \"amount\": \"") + toString(z)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "cancelled"), DeleteEntry(((((("address_" + y) + "_auction_") + u) + "_bid_") + v)), ScriptTransfer(Address(fromBase58String(y)), z, x)] | |
74 | 96 | } | |
75 | 97 | ||
76 | 98 | ||
77 | - | @Callable(u) | |
78 | - | func initAuction (v,w,x) = { | |
79 | - | let q = toBase58String(u.transactionId) | |
80 | - | let y = value(u.payments[0]) | |
81 | - | let l = value(y.assetId) | |
82 | - | let z = k(l) | |
83 | - | if ((z == "")) | |
99 | + | @Callable(A) | |
100 | + | func initAuction (B,C,D,E) = { | |
101 | + | let F = n() | |
102 | + | let u = (toBase58String(A.transactionId) + toString(F)) | |
103 | + | let G = value(A.payments[0]) | |
104 | + | let p = value(G.assetId) | |
105 | + | let H = o(p) | |
106 | + | if ((H == "")) | |
84 | 107 | then throw("You can only sell an NFT-duck created in incubator or breeder") | |
85 | - | else [StringEntry((("auction_" + | |
108 | + | else [StringEntry((("auction_" + u) + "_status"), "open"), BooleanEntry((("auction_" + u) + "_eggSell"), E), IntegerEntry(e, (F + 1)), StringEntry((("auction_" + toBase58String(p)) + "_last"), u), StringEntry((("auction_" + u) + "_assetGen"), H), StringEntry((("auction_" + u) + "_assetId"), toBase58String(p)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(A.originCaller)), StringEntry((("auction_" + u) + "_description"), D), IntegerEntry((("auction_" + u) + "_startPrice"), B), IntegerEntry((("auction_" + u) + "_instantPrice"), C), StringEntry((((("address_" + toString(A.originCaller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(p))] | |
86 | 109 | } | |
87 | 110 | ||
88 | 111 | ||
89 | 112 | ||
90 | - | @Callable( | |
91 | - | func cancelAuction ( | |
92 | - | let | |
93 | - | if ((toString( | |
113 | + | @Callable(A) | |
114 | + | func cancelAuction (u) = { | |
115 | + | let I = l((("auction_" + u) + "_owner")) | |
116 | + | if ((toString(A.originCaller) != I)) | |
94 | 117 | then throw("Only allowed to auction owner") | |
95 | - | else if (( | |
118 | + | else if ((l((("auction_" + u) + "_status")) != "open")) | |
96 | 119 | then throw("auction is close") | |
97 | - | else [StringEntry((("auction_" + | |
120 | + | else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))] | |
98 | 121 | } | |
99 | 122 | ||
100 | 123 | ||
101 | 124 | ||
102 | - | @Callable(u) | |
103 | - | func instantBuy (q) = { | |
104 | - | let y = value(u.payments[0]) | |
105 | - | let B = y.amount | |
106 | - | let l = j((("auction_" + q) + "_assetId")) | |
107 | - | let r = toBase58String(u.transactionId) | |
108 | - | let C = j((("auction_" + q) + "_status")) | |
109 | - | if ((y.assetId != unit)) | |
110 | - | then throw("Auction does only support WAVES payments.") | |
111 | - | else if ((C != "open")) | |
125 | + | @Callable(A) | |
126 | + | func instantBuy (u) = { | |
127 | + | let w = m((("auction_" + u) + "_eggSell")) | |
128 | + | let x = if ((w == true)) | |
129 | + | then d | |
130 | + | else unit | |
131 | + | let J = if ((w == true)) | |
132 | + | then "EGG" | |
133 | + | else "WAVES" | |
134 | + | let G = value(A.payments[0]) | |
135 | + | let K = G.amount | |
136 | + | let p = l((("auction_" + u) + "_assetId")) | |
137 | + | let v = toBase58String(A.transactionId) | |
138 | + | let L = l((("auction_" + u) + "_status")) | |
139 | + | if ((G.assetId != x)) | |
140 | + | then throw((("Auction does only support " + J) + " payments.")) | |
141 | + | else if ((L != "open")) | |
112 | 142 | then throw("Auction is closed. You cannot place a bid.") | |
113 | 143 | else { | |
114 | - | let | |
115 | - | if (( | |
116 | - | then throw(("For instant purchase you need to pay at least " + toString( | |
144 | + | let C = g((("auction_" + u) + "_instantPrice")) | |
145 | + | if ((C > K)) | |
146 | + | then throw(("For instant purchase you need to pay at least " + toString(C))) | |
117 | 147 | else { | |
118 | - | let | |
119 | - | let | |
120 | - | let | |
121 | - | [StringEntry((("auction_" + | |
148 | + | let I = l((("auction_" + u) + "_owner")) | |
149 | + | let M = g((p + "_recordPrice")) | |
150 | + | let N = max([M, K]) | |
151 | + | [StringEntry((("auction_" + u) + "_status"), "finished"), IntegerEntry((("auction_" + u) + "_finalPrice"), K), IntegerEntry((p + "_recordPrice"), N), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(K)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId")))), ScriptTransfer(addressFromStringValue(I), fraction(K, (100 - f), 100), x), ScriptTransfer(Address(c), fraction(K, f, 100), x)] | |
122 | 152 | } | |
123 | 153 | } | |
124 | 154 | } | |
125 | 155 | ||
126 | 156 | ||
127 | 157 | ||
128 | - | @Callable(u) | |
129 | - | func placeBid (q) = { | |
130 | - | let y = value(u.payments[0]) | |
131 | - | let B = y.amount | |
132 | - | let r = toBase58String(u.transactionId) | |
133 | - | let l = getStringValue(this, (("auction_" + q) + "_assetId")) | |
134 | - | if ((y.assetId != unit)) | |
135 | - | then throw("Auction does only support WAVES payments") | |
158 | + | @Callable(A) | |
159 | + | func placeBid (u) = { | |
160 | + | let w = m((("auction_" + u) + "_eggSell")) | |
161 | + | let x = if ((w == true)) | |
162 | + | then d | |
163 | + | else unit | |
164 | + | let J = if ((w == true)) | |
165 | + | then "EGG" | |
166 | + | else "WAVES" | |
167 | + | let G = value(A.payments[0]) | |
168 | + | let K = G.amount | |
169 | + | let v = toBase58String(A.transactionId) | |
170 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
171 | + | if ((G.assetId != x)) | |
172 | + | then throw((("Auction does only support " + J) + " payments.")) | |
136 | 173 | else { | |
137 | - | let | |
138 | - | if (( | |
139 | - | then throw(("The minimal initial price is set as " + toString( | |
140 | - | else [StringEntry((((("auction_" + | |
174 | + | let O = g((("auction_" + u) + "_startPrice")) | |
175 | + | if ((O > K)) | |
176 | + | then throw(("The minimal initial price is set as " + toString(O))) | |
177 | + | else [StringEntry((((("auction_" + u) + "_bid_") + v) + "_author"), toString(A.originCaller)), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(K)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + v) + "_amount"), K), StringEntry(((((("address_" + toString(A.originCaller)) + "_auction_") + u) + "_bid_") + v), p), StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "open")] | |
141 | 178 | } | |
142 | 179 | } | |
143 | 180 | ||
144 | 181 | ||
145 | 182 | ||
146 | - | @Callable( | |
147 | - | func cancelBid ( | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | if ((toString( | |
183 | + | @Callable(A) | |
184 | + | func cancelBid (u,v) = { | |
185 | + | let p = getStringValue(this, (("auction_" + u) + "_assetId")) | |
186 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
187 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
188 | + | if ((toString(A.originCaller) != y)) | |
152 | 189 | then throw("Only allowed to the bid author") | |
153 | - | else if (( | |
190 | + | else if ((l((((("auction_" + u) + "_bid_") + v) + "_status")) != "open")) | |
154 | 191 | then throw("bid is not open") | |
155 | - | else | |
192 | + | else t(u, v) | |
156 | 193 | } | |
157 | 194 | ||
158 | 195 | ||
159 | 196 | ||
160 | - | @Callable( | |
161 | - | func cancelOutdatedBid ( | |
197 | + | @Callable(A) | |
198 | + | func cancelOutdatedBid (u,v) = throw("to be released") | |
162 | 199 | ||
163 | 200 | ||
164 | 201 | ||
165 | - | @Callable(u) | |
166 | - | func acceptBid (q,r) = { | |
167 | - | let A = j((("auction_" + q) + "_owner")) | |
168 | - | let s = j((((("auction_" + q) + "_bid_") + r) + "_author")) | |
169 | - | let t = e((((("auction_" + q) + "_bid_") + r) + "_amount")) | |
170 | - | let G = j((((("auction_" + q) + "_bid_") + r) + "_status")) | |
171 | - | let l = j((("auction_" + q) + "_assetId")) | |
172 | - | if ((toString(u.originCaller) != A)) | |
202 | + | @Callable(A) | |
203 | + | func acceptBid (u,v) = { | |
204 | + | let w = m((("auction_" + u) + "_eggSell")) | |
205 | + | let x = if ((w == true)) | |
206 | + | then d | |
207 | + | else unit | |
208 | + | let I = l((("auction_" + u) + "_owner")) | |
209 | + | let y = l((((("auction_" + u) + "_bid_") + v) + "_author")) | |
210 | + | let z = g((((("auction_" + u) + "_bid_") + v) + "_amount")) | |
211 | + | let P = l((((("auction_" + u) + "_bid_") + v) + "_status")) | |
212 | + | let p = l((("auction_" + u) + "_assetId")) | |
213 | + | if ((toString(A.originCaller) != I)) | |
173 | 214 | then throw("Only allowed to auction owner") | |
174 | - | else if (( | |
215 | + | else if ((P != "open")) | |
175 | 216 | then throw("Bid was cancelled and cannot be accepted") | |
176 | - | else if (( | |
217 | + | else if ((l((("auction_" + u) + "_status")) != "open")) | |
177 | 218 | then throw("Auction was closed") | |
178 | 219 | else { | |
179 | - | let | |
180 | - | let | |
181 | - | [StringEntry((((("auction_" + | |
220 | + | let M = g((p + "_recordPrice")) | |
221 | + | let N = max([M, z]) | |
222 | + | [StringEntry((((("auction_" + u) + "_bid_") + v) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + p) + "_bid_") + v) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(A.originCaller)) + "\", \"amount\": \"") + toString(z)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), z), IntegerEntry((p + "_recordPrice"), N), DeleteEntry(((((("address_" + y) + "_auction_") + u) + "_bid_") + v)), DeleteEntry((((("address_" + I) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(A.caller, fraction(z, (100 - f), 100), x), ScriptTransfer(Address(c), fraction(z, f, 100), x), ScriptTransfer(addressFromStringValue(y), 1, fromBase58String(p))] | |
182 | 223 | } | |
183 | 224 | } | |
184 | 225 | ||
185 | 226 | ||
186 | - | @Verifier( | |
187 | - | func | |
227 | + | @Verifier(Q) | |
228 | + | func R () = sigVerify(Q.bodyBytes, Q.proofs[0], Q.senderPublicKey) | |
188 | 229 |
github/deemru/w8io/873ac7e 107.38 ms ◑![]()