tx · E2UWZQjsVUh4wwXeFAgYJrKBhgYrzWcWjtXqbbZhVyZk

3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg:  -0.01100000 Waves

2022.09.12 12:08 [3291172] smart account 3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg > SELF 0.00000000 Waves

{ "type": 13, "id": "E2UWZQjsVUh4wwXeFAgYJrKBhgYrzWcWjtXqbbZhVyZk", "fee": 1100000, "feeAssetId": null, "timestamp": 1662973712544, "version": 2, "chainId": 87, "sender": "3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg", "senderPublicKey": "FR8teTy3vHXM8K3qgseLD8fgBc5Rw5ge9NBZQFYYUJYL", "proofs": [ "4RMsvWSUe2C12HfvEZVe6xAdFP7q5jc7ETVk6eEz6tvWzWyRUXWqj347PvjsLoCYaw41BU7ceoznHjRd22B5LUXt" ], "script": "base64:AAIFAAAAAAAAABIIAhIOCgwIAQEICAgICAEIAQgAAAAiAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABZzdGF0aWNfY2ZNYXN0ZXJBZGRyZXNzAQAAABBnZXRCYWNrZW5kUHViS2V5AAAAAAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAUc3RhdGljX2JhY2tlbmRQdWJLZXkAAAAAD2tUb3RhbExpcXVpZGl0eQIAAAAPdG90YWxfbGlxdWlkaXR5AAAAAAxrSW5pdGlhbGl6ZWQCAAAAC0lOSVRJQUxJWkVEAAAAABNrTGlxdWlkaXR5VGhyZXNob2xkAgAAABNMSVFVSURJVFlfVEhSRVNIT0xEAAAAABFrVG90YWxTaGFyZVRva2VucwIAAAASdG90YWxfc2hhcmVfdG9rZW5zAAAAAA1rU2hhcmVBc3NldElkAgAAAA5TSEFSRV9BU1NFVF9JRAAAAAAOa0luY3ViYXRvckRhcHACAAAADklOQ1VCQVRPUl9EQVBQAAAAAAxrQnJlZWRlckRhcHACAAAADEJSRUVERVJfREFQUAAAAAAMa0Zhcm1pbmdEYXBwAgAAAAxGQVJNSU5HX0RBUFAAAAAAEGtNYXJrZXRQcm94eURhcHACAAAAFk1BUktFVFBMQUNFX1BST1hZX0RBUFAAAAAADGtBdWN0aW9uRGFwcAIAAAAMQVVDVElPTl9EQVBQAAAAAAdrTG9ja2VkAgAAAAZMT0NLRUQAAAAAE2tUb3RhbEZhcm1pbmdSZXdhcmQCAAAAFHRvdGFsX2Zhcm1pbmdfcmV3YXJkAAAAABBrQ2VvQ29sbGVjdGVkRmVlAgAAABFjZW9fY29sbGVjdGVkX2ZlZQAAAAAXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwCAAAAD2Nlb19mZWVfb3ZlcmFsbAAAAAAIa1RvRGlzdHICAAAADXRvX2Rpc3RyaWJ1dGUBAAAABmdldEludAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAdnZXRCb29sAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBQAAAAR1bml0AQAAAAhnZXRCb29sQQAAAAIAAAABYQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAABYQUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBQAAAAR1bml0AQAAAAdnZXRJbnRBAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAOZ2V0QXVjdGlvbkFkZHIAAAAACQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAUAAAAMa0F1Y3Rpb25EYXBwAQAAAA1hbW91bnRPckNsZWFyAAAAAQAAAAZhbW91bnQDCQEAAAAIY29udGFpbnMAAAACBQAAAAZhbW91bnQCAAAAATACAAAAAAUAAAAGYW1vdW50AQAAAA5nZXRBc3NldE9yaWdpbgAAAAEAAAAKZ2VuZXJhdGlvbgQAAAAQaW5jdWJhdG9yQWRkcmVzcwkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAADmtJbmN1YmF0b3JEYXBwBAAAAA5icmVlZGVyQWRkcmVzcwkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAADGtCcmVlZGVyRGFwcAMJAAAAAAAAAgUAAAAKZ2VuZXJhdGlvbgIAAAABRwkAAlkAAAABBQAAABBpbmN1YmF0b3JBZGRyZXNzCQACWQAAAAEFAAAADmJyZWVkZXJBZGRyZXNzAQAAAA5nZXRBc3NldFJhcml0eQAAAAIAAAAEZ2VubwAAAApnZW5lcmF0aW9uBAAAAAhxdWFudGl0eQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAB0FkZHJlc3MAAAABCQEAAAAOZ2V0QXNzZXRPcmlnaW4AAAABBQAAAApnZW5lcmF0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAARnZW5vAgAAAAlfcXVhbnRpdHkEAAAABXBvd2VyCQAAbAAAAAYJAABpAAAAAgAAAAAAAAAnEAUAAAAIcXVhbnRpdHkAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAIFAAAABUZMT09SAwkAAGYAAAACBQAAAAVwb3dlcgAAAAAAAAAAAAUAAAAFcG93ZXIAAAAAAAAAAAIBAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABAAAAB2Fzc2V0SWQEAAAADmJyZWVkZXJBZGRyZXNzCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAABQAAAAxrQnJlZWRlckRhcHAEAAAAEGluY3ViYXRvckFkZHJlc3MJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAADmtJbmN1YmF0b3JEYXBwAwMJAAAAAAAAAggJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAAZpc3N1ZXIJAQAAAAdBZGRyZXNzAAAAAQUAAAAOYnJlZWRlckFkZHJlc3MGCQAAAAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAGaXNzdWVyCQEAAAAHQWRkcmVzcwAAAAEFAAAAEGluY3ViYXRvckFkZHJlc3MEAAAACWFzc2V0TmFtZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAARuYW1lBAAAAApnZW5lcmF0aW9uCQABLwAAAAIJAQAAAAl0YWtlUmlnaHQAAAACBQAAAAlhc3NldE5hbWUAAAAAAAAAAAIAAAAAAAAAAAEEAAAAB2Zhcm1HZW4JAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAA5icmVlZGVyQWRkcmVzcwIAAAAOZ2V0R2VuRnJvbU5hbWUJAARMAAAAAgUAAAAJYXNzZXROYW1lBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAHZmFybUdlbgUAAAAHZmFybUdlbgkBAAAADmdldEFzc2V0UmFyaXR5AAAAAgUAAAAHZmFybUdlbgUAAAAKZ2VuZXJhdGlvbgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAADXzIwAQAAABJnZXREdWNrTWFya2V0UHJpY2UAAAABAAAABW5mdElkBAAAAAZyYXJpdHkJAQAAABRnZXRBc3NldEZhcm1pbmdQb3dlcgAAAAEFAAAABW5mdElkBAAAAA5icmVlZGVyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAADGtCcmVlZGVyRGFwcAQAAAAHc3RlcmlsZQkBAAAAB2dldEludEEAAAACBQAAAA5icmVlZGVyQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwkAAlgAAAABBQAAAAVuZnRJZAIAAAAJX2NoaWxkcmVuBAAAAAxjYW5CcmVlZFRleHQDCQAAZgAAAAIFAAAAB3N0ZXJpbGUAAAAAAAAAAAACAAAAATACAAAAATEEAAAAA3ZhbAkABBoAAAACCQEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAACci0JAAGkAAAAAQUAAAAGcmFyaXR5AgAAAAMtYi0FAAAADGNhbkJyZWVkVGV4dAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABXByaWNlBQAAAAckbWF0Y2gwBAAAAAhtaW5QcmljZQMJAABmAAAAAgUAAAAHc3RlcmlsZQAAAAAAAAAAAAkAAGgAAAACAAAAAAAL68IABQAAAAZyYXJpdHkAAAAABDDiNAADCQAAZgAAAAIFAAAACG1pblByaWNlBQAAAAVwcmljZQUAAAAIbWluUHJpY2UFAAAABXByaWNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAhVGhlcmUgaXMgbm8gcHJpY2UgZm9yIHN1Y2ggZHVjazogAgAAAAJyLQkAAaQAAAABBQAAAAZyYXJpdHkCAAAAAy1iLQUAAAAMY2FuQnJlZWRUZXh0AQAAABRnZXREdWNrSWRCeUF1Y3Rpb25JZAAAAAEAAAAJYXVjdGlvbklkBAAAAAptYXJrZXRBZGRyCQEAAAAOZ2V0QXVjdGlvbkFkZHIAAAAACQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAptYXJrZXRBZGRyCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAACWF1Y3Rpb25JZAIAAAAIX2Fzc2V0SWQBAAAADGdldEJpZEFtb3VudAAAAAIAAAAJYXVjdGlvbklkAAAABWJpZElkBAAAAAptYXJrZXRBZGRyCQEAAAAOZ2V0QXVjdGlvbkFkZHIAAAAACQEAAAAHZ2V0SW50QQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACm1hcmtldEFkZHIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYXVjdGlvbl8FAAAACWF1Y3Rpb25JZAIAAAAFX2JpZF8FAAAABWJpZElkAgAAAAdfYW1vdW50AQAAABFjaGVja0RhdGFHZXRQcmljZQAAAAgAAAADYWNoAAAABWJyZWVkAAAAA2dlbgAAAAVwcmljZQAAAAZyYXJpdHkAAAACdHMAAAAJc2lnbmF0dXJlAAAABmR1Y2tJZAQAAAAEdGV4dAkABLkAAAACCQAETAAAAAIFAAAABnJhcml0eQkABEwAAAACBQAAAAVicmVlZAkABEwAAAACBQAAAANhY2gJAARMAAAAAgUAAAADZ2VuCQAETAAAAAIJAAGkAAAAAQUAAAAFcHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAAJ0cwUAAAADbmlsAgAAAAE7BAAAAAhNU0lOSE9VUgAAAAAAADbugAMJAQAAAAEhAAAAAQkACcQAAAADCQABmwAAAAEFAAAABHRleHQJAAJZAAAAAQUAAAAJc2lnbmF0dXJlCQEAAAAQZ2V0QmFja2VuZFB1YktleQAAAAAJAAACAAAAAQIAAAAhTUNBQ1M6IEludmFsaWQgcHJvb2YgZnJvbSBiYWNrZW5kBAAAAAljdXJyZW50VHMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwkAAGYAAAACBQAAAAljdXJyZW50VHMJAABkAAAAAgUAAAACdHMFAAAACE1TSU5IT1VSCQAAAgAAAAECAAAAGk1DQUNTOiBPdXRkYXRlZCBzaWduYXR1cmUhBAAAAApkdWNrUmFyaXR5CQEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABCQACWQAAAAEFAAAABmR1Y2tJZAMJAQAAAAIhPQAAAAIFAAAACmR1Y2tSYXJpdHkJAAS2AAAAAQUAAAAGcmFyaXR5CQAAAgAAAAECAAAANk1DQUNTOiBJdCBzZWVtcyBub3QgdGhlIGNvcnJlY3QgcHJpY2UgaW5mbyB3YXMgcGFzc2VkIQUAAAAFcHJpY2UAAAABAAAAAWkBAAAAFGNhbGxNYXJrZXRwbGFjZVByb3h5AAAADAAAAAhmdW5jdGlvbgAAAARpbnQxAAAABGludDIAAAAEc3RyMQAAAARzdHIyAAAAA2FjaAAAAAVicmVlZAAAAANnZW4AAAAFcHJpY2UAAAAGcmFyaXR5AAAAAnRzAAAACXNpZ25hdHVyZQQAAAASYXVjdGlvbkRhcHBBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAOZ2V0QXVjdGlvbkFkZHIAAAAAAwkBAAAAAiE9AAAAAgkBAAAACGdldEJvb2xBAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAJAAEsAAAAAgIAAAAFZmFybV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkAAAIAAAABAgAAAAVfMzAxPQMJAAAAAAAAAgUAAAAIZnVuY3Rpb24CAAAAC2luaXRBdWN0aW9uBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPZHVja01hcmtldFByaWNlCQEAAAARY2hlY2tEYXRhR2V0UHJpY2UAAAAIBQAAAANhY2gFAAAABWJyZWVkBQAAAANnZW4FAAAABXByaWNlBQAAAAZyYXJpdHkFAAAAAnRzBQAAAAlzaWduYXR1cmUJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAABWFzc2V0AAAAB2Fzc2V0SWQEAAAADG1heFByaWNlRGlmZgkAAGsAAAADBQAAAA9kdWNrTWFya2V0UHJpY2UAAAAAAAAAAA8AAAAAAAAAAGQEAAAADGluaXRpYWxQcmljZQUAAAAEaW50MQQAAAALYnV5b3V0UHJpY2UFAAAABGludDIDAwkAAGYAAAACCQAAZQAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmBQAAAAxpbml0aWFsUHJpY2UGCQAAZgAAAAIFAAAADGluaXRpYWxQcmljZQUAAAALYnV5b3V0UHJpY2UJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHVByaWNlIGlzIHRvbyBsb3csIGF2ZyBwcmljZTogCQABpAAAAAEFAAAAD2R1Y2tNYXJrZXRQcmljZQIAAAAOLCBtaW4uIHByaWNlOiAJAAGkAAAAAQkAAGUAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UFAAAADG1heFByaWNlRGlmZgIAAAAMLCB5b3VyIGJpZDogCQABpAAAAAEFAAAADGluaXRpYWxQcmljZQMJAQAAAAIhPQAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAVhc3NldAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAAEXzEwMwQAAAALaW5pdEF1Y3Rpb24JAAP8AAAABAUAAAASYXVjdGlvbkRhcHBBZGRyZXNzAgAAAAtpbml0QXVjdGlvbgkABEwAAAACBQAAAAxpbml0aWFsUHJpY2UJAARMAAAAAgUAAAALYnV5b3V0UHJpY2UJAARMAAAAAgUAAAAEc3RyMQkABEwAAAACBQAAAARzdHIyBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAVhc3NldAAAAAdhc3NldElkAAAAAAAAAAABBQAAAANuaWwDCQAAAAAAAAIFAAAAC2luaXRBdWN0aW9uBQAAAAtpbml0QXVjdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAA3R4XwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAVhc3NldAAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAAAAAACBQAAAAhmdW5jdGlvbgIAAAAIcGxhY2VCaWQEAAAACWF1Y3Rpb25JZAUAAAAEc3RyMQQAAAALZHVja0Fzc2V0SWQJAQAAABRnZXREdWNrSWRCeUF1Y3Rpb25JZAAAAAEFAAAACWF1Y3Rpb25JZAQAAAAJYmlkQW1vdW50CQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAD2R1Y2tNYXJrZXRQcmljZQkBAAAAEWNoZWNrRGF0YUdldFByaWNlAAAACAUAAAADYWNoBQAAAAVicmVlZAUAAAADZ2VuBQAAAAVwcmljZQUAAAAGcmFyaXR5BQAAAAJ0cwUAAAAJc2lnbmF0dXJlBQAAAAtkdWNrQXNzZXRJZAQAAAAMbWF4UHJpY2VEaWZmCQAAawAAAAMFAAAAD2R1Y2tNYXJrZXRQcmljZQAAAAAAAAAADwAAAAAAAAAAZAMJAABmAAAAAgUAAAAJYmlkQW1vdW50CQAAZAAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB5QcmljZSBpcyB0b28gaGlnaCwgYXZnIHByaWNlOiAJAAGkAAAAAQUAAAAPZHVja01hcmtldFByaWNlAgAAAA4sIG1heC4gcHJpY2U6IAkAAaQAAAABCQAAZAAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmAgAAAAwsIHlvdXIgYmlkOiAJAAGkAAAAAQUAAAAJYmlkQW1vdW50AwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAARfMTAzBAAAAAhwbGFjZUJpZAkAA/wAAAAEBQAAABJhdWN0aW9uRGFwcEFkZHJlc3MCAAAACHBsYWNlQmlkCQAETAAAAAIFAAAACWF1Y3Rpb25JZAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAR1bml0BQAAAAliaWRBbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAIcGxhY2VCaWQFAAAACHBsYWNlQmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAADdHhfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAACWF1Y3Rpb25JZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAAAAAAAAgUAAAAIZnVuY3Rpb24CAAAACWFjY2VwdEJpZAQAAAAJYXVjdGlvbklkBQAAAARzdHIxBAAAAAViaWRJZAUAAAAEc3RyMgQAAAALZHVja0Fzc2V0SWQJAQAAABRnZXREdWNrSWRCeUF1Y3Rpb25JZAAAAAEFAAAACWF1Y3Rpb25JZAQAAAAJYmlkQW1vdW50CQEAAAAMZ2V0QmlkQW1vdW50AAAAAgUAAAAJYXVjdGlvbklkBQAAAAViaWRJZAQAAAAPZHVja01hcmtldFByaWNlCQEAAAARY2hlY2tEYXRhR2V0UHJpY2UAAAAIBQAAAANhY2gFAAAABWJyZWVkBQAAAANnZW4FAAAABXByaWNlBQAAAAZyYXJpdHkFAAAAAnRzBQAAAAlzaWduYXR1cmUFAAAAC2R1Y2tBc3NldElkBAAAAAxtYXhQcmljZURpZmYJAABrAAAAAwUAAAAPZHVja01hcmtldFByaWNlAAAAAAAAAAAPAAAAAAAAAABkAwkAAGYAAAACCQAAZQAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmBQAAAAliaWRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHVByaWNlIGlzIHRvbyBsb3csIGF2ZyBwcmljZTogCQABpAAAAAEFAAAAD2R1Y2tNYXJrZXRQcmljZQIAAAAOLCBtaW4uIHByaWNlOiAJAAGkAAAAAQkAAGUAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UFAAAADG1heFByaWNlRGlmZgIAAAAMLCB5b3VyIGJpZDogCQABpAAAAAEFAAAACWJpZEFtb3VudAQAAAAJYWNjZXB0QmlkCQAD/AAAAAQFAAAAEmF1Y3Rpb25EYXBwQWRkcmVzcwIAAAAJYWNjZXB0QmlkCQAETAAAAAIFAAAACWF1Y3Rpb25JZAkABEwAAAACBQAAAAViaWRJZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACWFjY2VwdEJpZAUAAAAJYWNjZXB0QmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAADdHhfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAACWF1Y3Rpb25JZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAAAAAAAAgUAAAAIZnVuY3Rpb24CAAAACmluc3RhbnRCdXkEAAAACWF1Y3Rpb25JZAUAAAAEc3RyMQQAAAALZHVja0Fzc2V0SWQJAQAAABRnZXREdWNrSWRCeUF1Y3Rpb25JZAAAAAEFAAAACWF1Y3Rpb25JZAQAAAAJYmlkQW1vdW50CQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAD2R1Y2tNYXJrZXRQcmljZQkBAAAAEWNoZWNrRGF0YUdldFByaWNlAAAACAUAAAADYWNoBQAAAAVicmVlZAUAAAADZ2VuBQAAAAVwcmljZQUAAAAGcmFyaXR5BQAAAAJ0cwUAAAAJc2lnbmF0dXJlBQAAAAtkdWNrQXNzZXRJZAQAAAAMbWF4UHJpY2VEaWZmCQAAawAAAAMFAAAAD2R1Y2tNYXJrZXRQcmljZQAAAAAAAAAADwAAAAAAAAAAZAMJAABmAAAAAgUAAAAJYmlkQW1vdW50CQAAZAAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB5QcmljZSBpcyB0b28gaGlnaCwgYXZnIHByaWNlOiAJAAGkAAAAAQUAAAAPZHVja01hcmtldFByaWNlAgAAAA4sIG1heC4gcHJpY2U6IAkAAaQAAAABCQAAZAAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQUAAAAMbWF4UHJpY2VEaWZmAgAAAAwsIHlvdXIgYmlkOiAJAAGkAAAAAQUAAAAJYmlkQW1vdW50AwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAARfMTAzAwkBAAAAAiE9AAAAAggJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAEdW5pdAkAAAIAAAABAgAAAARfMTA0BAAAAAppbnN0YW50QnV5CQAD/AAAAAQFAAAAEmF1Y3Rpb25EYXBwQWRkcmVzcwIAAAAKaW5zdGFudEJ1eQkABEwAAAACBQAAAAlhdWN0aW9uSWQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEdW5pdAUAAAAJYmlkQW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAACmluc3RhbnRCdXkFAAAACmluc3RhbnRCdXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAAN0eF8JAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAJYXVjdGlvbklkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAAAAAACBQAAAAhmdW5jdGlvbgIAAAAJY2FuY2VsQmlkBAAAAAlhdWN0aW9uSWQFAAAABHN0cjEEAAAABWJpZElkBQAAAARzdHIyBAAAAAlhY2NlcHRCaWQJAAP8AAAABAUAAAASYXVjdGlvbkRhcHBBZGRyZXNzAgAAAAljYW5jZWxCaWQJAARMAAAAAgUAAAAJYXVjdGlvbklkCQAETAAAAAIFAAAABWJpZElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAJYWNjZXB0QmlkBQAAAAlhY2NlcHRCaWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAAN0eF8JAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAJYXVjdGlvbklkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAAAAAACBQAAAAhmdW5jdGlvbgIAAAANY2FuY2VsQXVjdGlvbgQAAAAJYXVjdGlvbklkBQAAAARzdHIxBAAAAAlhY2NlcHRCaWQJAAP8AAAABAUAAAASYXVjdGlvbkRhcHBBZGRyZXNzAgAAAA1jYW5jZWxBdWN0aW9uCQAETAAAAAIFAAAACWF1Y3Rpb25JZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACWFjY2VwdEJpZAUAAAAJYWNjZXB0QmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAADdHhfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAACWF1Y3Rpb25JZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAAANfMTMAAAAALTnwZQ==", "height": 3291172, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: E7mhTsRFnaHDQfK4ruZmzWViP5rw1znQqMReAcxb36Bp Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func tryGetStringExternal (address,key) = match getString(address, key) {
5+ case a: String =>
6+ a
7+ case _ =>
8+ ""
9+}
10+
11+
12+func tryGetString (key) = tryGetStringExternal(this, key)
13+
14+
15+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
16+
17+
18+func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_cfMasterAddress")))
19+
20+
21+func getBackendPubKey () = fromBase58String(getStringValue(getOracle(), "static_backendPubKey"))
22+
23+
24+let kTotalLiquidity = "total_liquidity"
25+
26+let kInitialized = "INITIALIZED"
27+
28+let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
29+
30+let kTotalShareTokens = "total_share_tokens"
31+
32+let kShareAssetId = "SHARE_ASSET_ID"
33+
34+let kIncubatorDapp = "INCUBATOR_DAPP"
35+
36+let kBreederDapp = "BREEDER_DAPP"
37+
38+let kFarmingDapp = "FARMING_DAPP"
39+
40+let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
41+
42+let kAuctionDapp = "AUCTION_DAPP"
43+
44+let kLocked = "LOCKED"
45+
46+let kTotalFarmingReward = "total_farming_reward"
47+
48+let kCeoCollectedFee = "ceo_collected_fee"
49+
50+let kCeoCollectedFeeOverall = "ceo_fee_overall"
51+
52+let kToDistr = "to_distribute"
53+
54+func getInt (key) = match getInteger(this, key) {
55+ case b: Int =>
56+ b
57+ case _ =>
58+ 0
59+}
60+
61+
62+func getBool (key) = match getBoolean(this, key) {
63+ case b: Boolean =>
64+ b
65+ case _ =>
66+ unit
67+}
68+
69+
70+func getBoolA (a,key) = match getBoolean(a, key) {
71+ case b: Boolean =>
72+ b
73+ case _ =>
74+ unit
75+}
76+
77+
78+func getIntA (address,key) = match getInteger(address, key) {
79+ case b: Int =>
80+ b
81+ case _ =>
82+ 0
83+}
84+
85+
86+func getAuctionAddr () = tryGetStringExternal(getCfMasterAddress(), kAuctionDapp)
87+
88+
89+func amountOrClear (amount) = if (contains(amount, "0"))
90+ then ""
91+ else amount
92+
93+
94+func getAssetOrigin (generation) = {
95+ let incubatorAddress = tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp)
96+ let breederAddress = tryGetStringExternal(getCfMasterAddress(), kBreederDapp)
97+ if ((generation == "G"))
98+ then fromBase58String(incubatorAddress)
99+ else fromBase58String(breederAddress)
100+ }
101+
102+
103+func getAssetRarity (geno,generation) = {
104+ let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + geno) + "_quantity"))
105+ let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
106+ if ((power > 0))
107+ then power
108+ else 2
109+ }
110+
111+
112+func asString (value) = match value {
113+ case string: String =>
114+ string
115+ case _ =>
116+ throw("wrong type, expected: String")
117+}
118+
119+
120+func getAssetFarmingPower (assetId) = {
121+ let breederAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
122+ let incubatorAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp))
123+ if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
124+ then true
125+ else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
126+ then {
127+ let assetName = value(assetInfo(assetId)).name
128+ let generation = take(takeRight(assetName, 2), 1)
129+ let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
130+ if ((farmGen == farmGen))
131+ then getAssetRarity(farmGen, generation)
132+ else throw("Strict value is not equal to itself.")
133+ }
134+ else throw("_20")
135+ }
136+
137+
138+func getDuckMarketPrice (nftId) = {
139+ let rarity = getAssetFarmingPower(nftId)
140+ let breederAddress = addressFromStringValue(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
141+ let sterile = getIntA(breederAddress, (("asset_" + toBase58String(nftId)) + "_children"))
142+ let canBreedText = if ((sterile > 0))
143+ then "0"
144+ else "1"
145+ let val = getInteger(getCfMasterAddress(), ((("r-" + toString(rarity)) + "-b-") + canBreedText))
146+ match val {
147+ case price: Int =>
148+ let minPrice = if ((sterile > 0))
149+ then (200000000 * rarity)
150+ else 18000000000
151+ if ((minPrice > price))
152+ then minPrice
153+ else price
154+ case _ =>
155+ throw((((("There is no price for such duck: " + "r-") + toString(rarity)) + "-b-") + canBreedText))
156+ }
157+ }
158+
159+
160+func getDuckIdByAuctionId (auctionId) = {
161+ let marketAddr = getAuctionAddr()
162+ tryGetStringExternal(addressFromStringValue(marketAddr), (("auction_" + auctionId) + "_assetId"))
163+ }
164+
165+
166+func getBidAmount (auctionId,bidId) = {
167+ let marketAddr = getAuctionAddr()
168+ getIntA(addressFromStringValue(marketAddr), (((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
169+ }
170+
171+
172+func checkDataGetPrice (ach,breed,gen,price,rarity,ts,signature,duckId) = {
173+ let text = makeString([rarity, breed, ach, gen, toString(price), toString(ts)], ";")
174+ let MSINHOUR = 3600000
175+ if (!(sigVerify_8Kb(toBytes(text), fromBase58String(signature), getBackendPubKey())))
176+ then throw("MCACS: Invalid proof from backend")
177+ else {
178+ let currentTs = lastBlock.timestamp
179+ if ((currentTs > (ts + MSINHOUR)))
180+ then throw("MCACS: Outdated signature!")
181+ else {
182+ let duckRarity = getAssetFarmingPower(fromBase58String(duckId))
183+ if ((duckRarity != parseInt(rarity)))
184+ then throw("MCACS: It seems not the correct price info was passed!")
185+ else price
186+ }
187+ }
188+ }
189+
190+
191+@Callable(i)
192+func callMarketplaceProxy (function,int1,int2,str1,str2,ach,breed,gen,price,rarity,ts,signature) = {
193+ let auctionDappAddress = addressFromStringValue(getAuctionAddr())
194+ if ((getBoolA(getCfMasterAddress(), ("farm_" + toString(i.caller))) != true))
195+ then throw("_301=")
196+ else if ((function == "initAuction"))
197+ then {
198+ let asset = value(i.payments[0])
199+ let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, toBase58String(value(asset.assetId)))
200+ let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
201+ let initialPrice = int1
202+ let buyoutPrice = int2
203+ if (if (((duckMarketPrice - maxPriceDiff) > initialPrice))
204+ then true
205+ else (initialPrice > buyoutPrice))
206+ then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString((duckMarketPrice - maxPriceDiff))) + ", your bid: ") + toString(initialPrice)))
207+ else if ((value(asset.amount) != 1))
208+ then throw("_103")
209+ else {
210+ let initAuction = invoke(auctionDappAddress, "initAuction", [initialPrice, buyoutPrice, str1, str2], [AttachedPayment(value(asset.assetId), 1)])
211+ if ((initAuction == initAuction))
212+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), toBase58String(value(asset.assetId)))]
213+ else throw("Strict value is not equal to itself.")
214+ }
215+ }
216+ else if ((function == "placeBid"))
217+ then {
218+ let auctionId = str1
219+ let duckAssetId = getDuckIdByAuctionId(auctionId)
220+ let bidAmount = value(value(i.payments[0]).amount)
221+ let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
222+ let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
223+ if ((bidAmount > (duckMarketPrice + maxPriceDiff)))
224+ then throw(((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString((duckMarketPrice + maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
225+ else if ((size(i.payments) != 1))
226+ then throw("_103")
227+ else {
228+ let placeBid = invoke(auctionDappAddress, "placeBid", [auctionId], [AttachedPayment(unit, bidAmount)])
229+ if ((placeBid == placeBid))
230+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
231+ else throw("Strict value is not equal to itself.")
232+ }
233+ }
234+ else if ((function == "acceptBid"))
235+ then {
236+ let auctionId = str1
237+ let bidId = str2
238+ let duckAssetId = getDuckIdByAuctionId(auctionId)
239+ let bidAmount = getBidAmount(auctionId, bidId)
240+ let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
241+ let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
242+ if (((duckMarketPrice - maxPriceDiff) > bidAmount))
243+ then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString((duckMarketPrice - maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
244+ else {
245+ let acceptBid = invoke(auctionDappAddress, "acceptBid", [auctionId, bidId], nil)
246+ if ((acceptBid == acceptBid))
247+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
248+ else throw("Strict value is not equal to itself.")
249+ }
250+ }
251+ else if ((function == "instantBuy"))
252+ then {
253+ let auctionId = str1
254+ let duckAssetId = getDuckIdByAuctionId(auctionId)
255+ let bidAmount = value(value(i.payments[0]).amount)
256+ let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
257+ let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
258+ if ((bidAmount > (duckMarketPrice + maxPriceDiff)))
259+ then throw(((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString((duckMarketPrice + maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
260+ else if ((size(i.payments) != 1))
261+ then throw("_103")
262+ else if ((value(i.payments[0]).assetId != unit))
263+ then throw("_104")
264+ else {
265+ let instantBuy = invoke(auctionDappAddress, "instantBuy", [auctionId], [AttachedPayment(unit, bidAmount)])
266+ if ((instantBuy == instantBuy))
267+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
268+ else throw("Strict value is not equal to itself.")
269+ }
270+ }
271+ else if ((function == "cancelBid"))
272+ then {
273+ let auctionId = str1
274+ let bidId = str2
275+ let acceptBid = invoke(auctionDappAddress, "cancelBid", [auctionId, bidId], nil)
276+ if ((acceptBid == acceptBid))
277+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
278+ else throw("Strict value is not equal to itself.")
279+ }
280+ else if ((function == "cancelAuction"))
281+ then {
282+ let auctionId = str1
283+ let acceptBid = invoke(auctionDappAddress, "cancelAuction", [auctionId], nil)
284+ if ((acceptBid == acceptBid))
285+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
286+ else throw("Strict value is not equal to itself.")
287+ }
288+ else throw("_13")
289+ }
290+
291+

github/deemru/w8io/6500d08 
30.10 ms