tx · 8ayBRm1Gc1PwqdWX83e68GGQesLtrojwKdU6o5k3ri6F

3MsryPHGVR5NWpGqXNw1LbqEYUx3Vk88yxN:  -0.05000000 Waves

2021.08.10 20:09 [1652528] smart account 3MsryPHGVR5NWpGqXNw1LbqEYUx3Vk88yxN > SELF 0.00000000 Waves

{ "type": 13, "id": "8ayBRm1Gc1PwqdWX83e68GGQesLtrojwKdU6o5k3ri6F", "fee": 5000000, "feeAssetId": null, "timestamp": 1628615409049, "version": 2, "chainId": 84, "sender": "3MsryPHGVR5NWpGqXNw1LbqEYUx3Vk88yxN", "senderPublicKey": "EkxY8bYYRAdDeo26yCeHLGSzDnPpuye9m2yxFRQGpXVy", "proofs": [ "4DRcacMZh9L6Sz3PCS4drsR1kYimULAua1deNjKXs7QjR1A36JuGW2XEodZwrocEv8RUgBF5i2ah4rP767wK6YoW" ], "script": "base64:AAIFAAAAAAAAACMIAhIAEgMKAQESABIAEgcKBQgICAgBEgMKAQESABIAEgASAAAAACUAAAAACmxQZGVjaW1hbHMAAAAAAAAAAAgAAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAADU0VQAgAAAAJfXwAAAAAKUG9vbEFjdGl2ZQAAAAAAAAAAAQAAAAAPUG9vbFB1dERpc2FibGVkAAAAAAAAAAACAAAAABNQb29sTWF0Y2hlckRpc2FibGVkAAAAAAAAAAADAAAAAAxQb29sU2h1dGRvd24AAAAAAAAAAAQAAAAAEGZhY3RvcnlQdWJsaWNLZXkJAAJZAAAAAQIAAAArTWltUXRCeDdhemhTdEFIMlI1UVY3VWs4aFdFYm03cTg5NzkzZmsxajFtaAAAAAAOaWR4UG9vbEFkZHJlc3MAAAAAAAAAAAIAAAAADWlkeFBvb2xTdGF0dXMAAAAAAAAAAAMAAAAAEGlkeFBvb2xMUEFzc2V0SWQAAAAAAAAAAAQAAAAAEGlkeEFtb3VudEFzc2V0SWQAAAAAAAAAAAUAAAAAD2lkeFByaWNlQXNzZXRJZAAAAAAAAAAABgAAAAAWaWR4QW1vdW50QXNzZXREZWNpbWFscwAAAAAAAAAABwAAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzAAAAAAAAAAAIAAAAABhpZHhBbW91bnRBc3NldEludGVybmFsSWQAAAAAAAAAAAkAAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkAAAAAAAAAAAKAAAAAA1pZHhQb29sV2VpZ2h0AAAAAAAAAAALAAAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQAAAAAAAAAAAIAAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10AAAAAAAAAAADAAAAABFpZHhQb29sTFBBc3NldEFtdAAAAAAAAAAABAEAAAAMa2V5UHJpY2VMYXN0AAAAAAIAAAARJXMlc19fcHJpY2VfX2xhc3QBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAARMAAAAAgkAAaQAAAABBQAAAAFoCQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIAAAATaW50ZXJuYWxBbW91bnRBc3NldAAAABJpbnRlcm5hbFByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2ludGVybmFsQW1vdW50QXNzZXQCAAAAAl9fBQAAABJpbnRlcm5hbFByaWNlQXNzZXQCAAAACF9fbG9ja2VkAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwAAABNpbnRlcm5hbEFtb3VudEFzc2V0AAAAEmludGVybmFsUHJpY2VBc3NldAAAAAt1c2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKJWQlZCVzJXNfXwUAAAATaW50ZXJuYWxBbW91bnRBc3NldAIAAAACX18FAAAAEmludGVybmFsUHJpY2VBc3NldAIAAAACX18FAAAAC3VzZXJBZGRyZXNzAgAAAAhfX2xvY2tlZAEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAslcyVzJXNfX1BfXwUAAAALdXNlckFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACAAAAC3VzZXJBZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACyVzJXMlc19fR19fBQAAAAt1c2VyQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MCAAAAIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQAAAA1rZXlQb29sQ29uZmlnAAAAAgAAABNhbW91bnRBc3NldEludGVybmFsAAAAEnByaWNlQXNzZXRJbnRlcm5hbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAolcyVkJWQlc19fBQAAABNhbW91bnRBc3NldEludGVybmFsAgAAAAJfXwUAAAAScHJpY2VBc3NldEludGVybmFsAgAAAAhfX2NvbmZpZwEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAADmZhY3RvcnlBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABBmYWN0b3J5UHVibGljS2V5BAAAABFjdXJyZW50UG9vbEFzc2V0cwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEJAAQlAAAAAQUAAAAEdGhpcwIAAAApTm8gZmFjdG9yeSBjb25maWcgZm91bmQgZm9yIHBvb2wgYWRkcmVzcy4FAAAAA1NFUAQAAAARY3VycmVudFBvb2xDb25maWcJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADmZhY3RvcnlBZGRyZXNzCQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGRAAAAAgUAAAARY3VycmVudFBvb2xBc3NldHMAAAAAAAAAAAIJAAGRAAAAAgUAAAARY3VycmVudFBvb2xBc3NldHMAAAAAAAAAAAMCAAAAKE5vIGZhY3RvcnkgY29uZmlnIGZvdW5kIGZvciBwb29sIGFzc2V0cy4FAAAAA1NFUAUAAAARY3VycmVudFBvb2xDb25maWcBAAAAEGdldFBvb2xMaXF1aWRpdHkAAAACAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQkABCIAAAABCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlBQAAAANuaWwEAAAAFGN1cnJlbnRQb29sTGlxdWlkaXR5CQAEtQAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAAGWN1cnJlbnRQb29sTGlxdWlkaXR5VmFsdWUFAAAAA1NFUAUAAAAUY3VycmVudFBvb2xMaXF1aWRpdHkBAAAAFmdldFBvb2xMaXF1aWRpdHlCeVVzZXIAAAADAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAAAAAt1c2VyQWRkcmVzcwQAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQkABCIAAAABCQEAAAAWa2V5UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAAC3VzZXJBZGRyZXNzAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQkABEwAAAACAgAAAAAJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAEwCQAETAAAAAICAAAAATAFAAAAA25pbAQAAAAUY3VycmVudFBvb2xMaXF1aWRpdHkJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQUAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQUAAAADU0VQBQAAABRjdXJyZW50UG9vbExpcXVpZGl0eQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADAAAAEWFtb3VudEFzc2V0TG9ja2VkAAAAEHByaWNlQXNzZXRMb2NrZWQAAAANbHBUb2tlbkxvY2tlZAkABLkAAAACCQAETAAAAAICAAAABiVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEWFtb3VudEFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAAQcHJpY2VBc3NldExvY2tlZAkABEwAAAACCQABpAAAAAEFAAAADWxwVG9rZW5Mb2NrZWQFAAAAA25pbAUAAAADU0VQAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAcAAAAQaW5BbW91bnRBc3NldEFtdAAAAA9pblByaWNlQXNzZXRBbXQAAAAIb3V0THBBbXQAAAAFcHJpY2UAAAAdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEGluQW1vdW50QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAA9pblByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRMcEFtdAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIJAARMAAAAAgkAAaQAAAABBQAAAAh0eEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAAC3R4VGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAAEW91dEFtb3VudEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEW91dEFtb3VudEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABdkYXRhUG9vbExpcXVpZGl0eUJ5VXNlcgAAAAQAAAARYW1vdW50QXNzZXRMb2NrZWQAAAAQcHJpY2VBc3NldExvY2tlZAAAAA1scFRva2VuTG9ja2VkAAAAC3VzZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAGJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARYW1vdW50QXNzZXRMb2NrZWQJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAANbHBUb2tlbkxvY2tlZAUAAAADbmlsBQAAAANTRVABAAAADmNhbGN1bGF0ZVByaWNlAAAABAAAAA5hbW91bnRBc3NldEFtdAAAABNhbW91bnRBc3NldERlY2ltYWxzAAAADXByaWNlQXNzZXRBbXQAAAAScHJpY2VBc3NldERlY2ltYWxzBAAAABhkZWNpbWFsc011bHQ0QW1vdW50QXNzZXQJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAkAAGUAAAACBQAAAApsUGRlY2ltYWxzBQAAABNhbW91bnRBc3NldERlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABdkZWNpbWFsc011bHQ0UHJpY2VBc3NldAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACQAAZQAAAAIFAAAACmxQZGVjaW1hbHMFAAAAEnByaWNlQXNzZXREZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAAVaW5BbW91bnRBc3NldEFtdEZpbmFsCQAAaAAAAAIFAAAADmFtb3VudEFzc2V0QW10BQAAABhkZWNpbWFsc011bHQ0QW1vdW50QXNzZXQEAAAAD2luUHJpY2VBbXRGaW5hbAkAAGgAAAACBQAAAA1wcmljZUFzc2V0QW10BQAAABdkZWNpbWFsc011bHQ0UHJpY2VBc3NldAQAAAAFcHJpY2UJAABrAAAAAwUAAAAPaW5QcmljZUFtdEZpbmFsBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAVaW5BbW91bnRBc3NldEFtdEZpbmFsBQAAAAVwcmljZQAAAAoAAAABaQEAAAANZ2V0U2NyaXB0SGFzaAAAAAAEAAAABGhhc2gJAAJaAAAAAQkBAAAABXZhbHVlAAAAAQkAA/EAAAABBQAAAAR0aGlzCQAAAgAAAAEFAAAABGhhc2gAAAABaQEAAAADcHV0AAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAAA5wbXRBbW91bnRBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAQaW5BbW91bnRBc3NldEFtdAgFAAAADnBtdEFtb3VudEFzc2V0AAAABmFtb3VudAQAAAAPaW5BbW91bnRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAAOcG10QW1vdW50QXNzZXQAAAAHYXNzZXRJZAQAAAANcG10UHJpY2VBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAPaW5QcmljZUFzc2V0QW10CAUAAAANcG10UHJpY2VBc3NldAAAAAZhbW91bnQEAAAADmluUHJpY2VBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAANcG10UHJpY2VBc3NldAAAAAdhc3NldElkBAAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10BAAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0CQEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXVzZXJMaXF1aWRpdHlEYXRhTGlzdAUAAAAUaWR4UG9vbFByaWNlQXNzZXRBbXQEAAAADXVzZXJMUEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABV1c2VyTGlxdWlkaXR5RGF0YUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10AwMJAQAAAAIhPQAAAAIFAAAADWFtb3VudEFzc2V0SWQJAAJYAAAAAQUAAAAPaW5BbW91bnRBc3NldElkBgkBAAAAAiE9AAAAAgUAAAAMcHJpY2VBc3NldElkCQACWAAAAAEFAAAADmluUHJpY2VBc3NldElkCQAAAgAAAAECAAAAJUludmFsaWQgYW1vdW50IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4DBgkAAAIAAAABAgAAAAVERUJVRwQAAAAYZGVjaW1hbHNNdWx0NEFtb3VudEFzc2V0CQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAJAABlAAAAAgUAAAAKbFBkZWNpbWFscwUAAAASYW1vdXRBc3NldERlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABdkZWNpbWFsc011bHQ0UHJpY2VBc3NldAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACQAAZQAAAAIFAAAACmxQZGVjaW1hbHMFAAAAEnByaWNlQXNzZXREZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAAaaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWQJAABoAAAAAgUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAAYZGVjaW1hbHNNdWx0NEFtb3VudEFzc2V0BAAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkCQAAaAAAAAIFAAAAD2luUHJpY2VBc3NldEFtdAUAAAAXZGVjaW1hbHNNdWx0NFByaWNlQXNzZXQEAAAAEWV4cGVjdGVkVXNlclByaWNlCQAAawAAAAMFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAQAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQAAaAAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAGGRlY2ltYWxzTXVsdDRBbW91bnRBc3NldAQAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQJAABoAAAAAgUAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlBQAAABdkZWNpbWFsc011bHQ0UHJpY2VBc3NldAQAAAAQY3VycmVudFBvb2xQcmljZQkAAGsAAAADBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAMJAAAAAAAAAgkAAZAAAAABBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QAAAAAAAAAAAAEAAAABXBhcnRBCQAAbAAAAAYFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAABBQAAAARET1dOBAAAAAVwYXJ0QgkAAGwAAAAGBQAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAABBQAAAARET1dOBAAAABBscEFzc2V0c1RvUmV0dXJuCQAAaAAAAAIFAAAABXBhcnRBBQAAAAVwYXJ0QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAkAASwAAAACAgAAAAQlc19fCQABpAAAAAEFAAAAEGN1cnJlbnRQb29sUHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAABBjdXJyZW50UG9vbFByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlQdXRBY3Rpb25CeVVzZXIAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAHBQAAABBpbkFtb3VudEFzc2V0QW10BQAAAA9pblByaWNlQXNzZXRBbXQFAAAAEGxwQXNzZXRzVG9SZXR1cm4FAAAAEGN1cnJlbnRQb29sUHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMFAAAAEGluQW1vdW50QXNzZXRBbXQFAAAAD2luUHJpY2VBc3NldEFtdAUAAAAQbHBBc3NldHNUb1JldHVybgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMFAAAAEGluQW1vdW50QXNzZXRBbXQFAAAAD2luUHJpY2VBc3NldEFtdAUAAAAQbHBBc3NldHNUb1JldHVybgkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAACWxwQXNzZXRJZAUAAAAQbHBBc3NldHNUb1JldHVybgYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBscEFzc2V0c1RvUmV0dXJuBQAAAAlscEFzc2V0SWQFAAAAA25pbAQAAAAIc2xpcHBhZ2UJAABrAAAAAwUAAAAQY3VycmVudFBvb2xQcmljZQAAAAAAAAAAZAUAAAARZXhwZWN0ZWRVc2VyUHJpY2UDCQAAZgAAAAIFAAAACHNsaXBwYWdlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QcmljZSBzbGlwcGFnZSAJAAGkAAAAAQUAAAAIc2xpcHBhZ2UCAAAAHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkAAaQAAAABBQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAASbHBBbXRCeUFtb3VudEFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQEAAAAEWxwQW10QnlQcmljZUFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BAAAAAx0b3RhbExwNFVzZXIDCQAAZgAAAAIFAAAAEWxwQW10QnlQcmljZUFzc2V0BQAAABJscEFtdEJ5QW1vdW50QXNzZXQFAAAAEmxwQW10QnlBbW91bnRBc3NldAUAAAARbHBBbXRCeVByaWNlQXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAABBjdXJyZW50UG9vbFByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABLAAAAAICAAAABCVzX18JAAGkAAAAAQUAAAAQY3VycmVudFBvb2xQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAABwUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAAPaW5QcmljZUFzc2V0QW10BQAAAAx0b3RhbExwNFVzZXIFAAAAEGN1cnJlbnRQb29sUHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABkAAAAAgUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAkAAGQAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAD2luUHJpY2VBc3NldEFtdAkAAGQAAAACBQAAAA11c2VyTFBCYWxhbmNlBQAAAAx0b3RhbExwNFVzZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleVBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADCQAAZAAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAEGluQW1vdW50QXNzZXRBbXQJAABkAAAAAgUAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlBQAAAA9pblByaWNlQXNzZXRBbXQJAABkAAAAAgUAAAANcG9vbExQQmFsYW5jZQUAAAAMdG90YWxMcDRVc2VyCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAJbHBBc3NldElkBQAAAAx0b3RhbExwNFVzZXIGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMdG90YWxMcDRVc2VyBQAAAAlscEFzc2V0SWQFAAAAA25pbAAAAAFpAQAAAANnZXQAAAAABAAAAA5wb29sQ29uZmlnTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAPaWR4UHJpY2VBc3NldElkBAAAABVhbW91bnRBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAQAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABF1c2VyTGlxdWlkaXR5TGlzdAkBAAAAFmdldFBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANdXNlckxQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAARcG9vbExpcXVpZGl0eUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAAOcG10QW1vdW50QXNzZXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAA5wbXRBbW91bnRBc3NldAAAAAdhc3NldElkBAAAAA5wbXRBc3NldEFtb3VudAgFAAAADnBtdEFtb3VudEFzc2V0AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAACWxwQXNzZXRJZAkAAlgAAAABBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAFUludmFsaWQgYXNzZXQgcGFzc2VkLgMJAABmAAAAAgUAAAAOcG10QXNzZXRBbW91bnQFAAAADXVzZXJMUEJhbGFuY2UJAAACAAAAAQIAAAAySW52YWxpZCBhbW91bnQgcGFzc2VkLiBBbW91bnQgbGVzcyB0aGFuIGF2YWlsYWJsZS4EAAAAEW91dEFtb3VudEFzc2V0QW10CQAAawAAAAMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAADnBtdEFzc2V0QW1vdW50BQAAAA1wb29sTFBCYWxhbmNlBAAAABBvdXRQcmljZUFzc2V0QW10CQAAawAAAAMFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAAOcG10QXNzZXRBbW91bnQFAAAADXBvb2xMUEJhbGFuY2UEAAAADGN1cnJlbnRQcmljZQkAAGsAAAADBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAOcG10QXNzZXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABFvdXRBbW91bnRBc3NldEFtdAkAAlkAAAABBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAlkAAAABBQAAAAxwcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmtleVBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWRhdGFQb29sTGlxdWlkaXR5AAAAAwkAAGUAAAACBQAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlBQAAABFvdXRBbW91bnRBc3NldEFtdAkAAGUAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAEG91dFByaWNlQXNzZXRBbXQJAABlAAAAAgUAAAANdXNlckxQQmFsYW5jZQUAAAAOcG10QXNzZXRBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleVBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADCQAAZQAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAEW91dEFtb3VudEFzc2V0QW10CQAAZQAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAGUAAAACBQAAAA1wb29sTFBCYWxhbmNlBQAAAA5wbXRBc3NldEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAARb3V0QW1vdW50QXNzZXRBbXQFAAAAEG91dFByaWNlQXNzZXRBbXQFAAAADnBtdEFzc2V0QW1vdW50BQAAAAxjdXJyZW50UHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UFAAAAA25pbAAAAAFpAQAAAAV0b3B1cAAAAAAFAAAAA25pbAAAAAFpAQAAAAhhY3RpdmF0ZQAAAAUAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAAAtscEFzc2V0TmFtZQAAAAxscEFzc2V0RGVzY3IAAAAKcG9vbFdlaWdodAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAQZmFjdG9yeVB1YmxpY0tleQkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAADWFtb3VudEFzc2V0SWQJAAJZAAAAAQUAAAAOYW1vdW50QXNzZXRTdHIEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADWFtb3VudEFzc2V0SWQAAAAIZGVjaW1hbHMEAAAADHByaWNlQXNzZXRJZAkAAlkAAAABBQAAAA1wcmljZUFzc2V0U3RyBAAAABJwcmljZUFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAASbHBBc3NldElzc3VlQWN0aW9uCQAEQgAAAAUFAAAAC2xwQXNzZXROYW1lBQAAAAxscEFzc2V0RGVzY3IAAAAAAAAAAAEAAAAAAAAAAAgGBAAAAAlscEFzc2V0SWQJAAQ4AAAAAQUAAAASbHBBc3NldElzc3VlQWN0aW9uBAAAABFscEFzc2V0SWRBc1N0cmluZwkAAlgAAAABBQAAAAlscEFzc2V0SWQJAAUUAAAAAgkABEwAAAACBQAAABJscEFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAlscEFzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAUAAAARbHBBc3NldElkQXNTdHJpbmcAAAABaQEAAAAGbWFuYWdlAAAAAQAAAAZzdGF0dXMFAAAAA25pbAAAAAFpAQAAAAxlc3RpbWF0ZWRQdXQAAAAABQAAAANuaWwAAAABaQEAAAAFc3RhdHMAAAAABQAAAANuaWwAAAABaQEAAAAMZXN0aW1hdGVkR2V0AAAAAAUAAAADbmlsAAAAAWkBAAAABXByaWNlAAAAAAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXnn8BRr", "height": 1652528, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CECMuG6w2Ut58RJhRkS2KbnXpatHCxvFQYivVLgYAuSr Next: HnrahnbHtu2gf5jaL2yrYRaM5RHKzwQWcHqL6SoMpGPM Diff:
OldNewDifferences
155155 then true
156156 else (priceAssetId != toBase58String(inPriceAssetId)))
157157 then throw("Invalid amount or price asset passed.")
158- else {
159- let decimalsMult4AmountAsset = pow(10, 0, (lPdecimals - amoutAssetDecimals), 0, 0, DOWN)
160- let decimalsMult4PriceAsset = pow(10, 0, (lPdecimals - priceAssetDecimals), 0, 0, DOWN)
161- let inAmountAssetAmtCalculated = (inAmountAssetAmt * decimalsMult4AmountAsset)
162- let inPriceAssetAmtCalculated = (inPriceAssetAmt * decimalsMult4PriceAsset)
163- if (true)
164- then throw("DEBUG")
165- else {
166- let expectedUserPrice = fraction(inPriceAssetAmtCalculated, decimalsMultPrice, inAmountAssetAmtCalculated)
167- let amountAssetPoolLockedAmt = (poolAmountAssetBalance * decimalsMult4AmountAsset)
168- let priceAssetPoolLockedAmt = (poolPriceAssetBalance * decimalsMult4PriceAsset)
169- let currentPoolPrice = fraction(priceAssetPoolLockedAmt, decimalsMultPrice, amountAssetPoolLockedAmt)
170- if ((size(poolLiquidityDataList) == 0))
171- then {
172- let partA = pow(inAmountAssetAmtCalculated, 0, 0, 50, 1, DOWN)
173- let partB = pow(inPriceAssetAmtCalculated, 0, 0, 50, 1, DOWN)
174- let lpAssetsToReturn = (partA * partB)
158+ else if (true)
159+ then throw("DEBUG")
160+ else {
161+ let decimalsMult4AmountAsset = pow(10, 0, (lPdecimals - amoutAssetDecimals), 0, 0, DOWN)
162+ let decimalsMult4PriceAsset = pow(10, 0, (lPdecimals - priceAssetDecimals), 0, 0, DOWN)
163+ let inAmountAssetAmtCalculated = (inAmountAssetAmt * decimalsMult4AmountAsset)
164+ let inPriceAssetAmtCalculated = (inPriceAssetAmt * decimalsMult4PriceAsset)
165+ let expectedUserPrice = fraction(inPriceAssetAmtCalculated, decimalsMultPrice, inAmountAssetAmtCalculated)
166+ let amountAssetPoolLockedAmt = (poolAmountAssetBalance * decimalsMult4AmountAsset)
167+ let priceAssetPoolLockedAmt = (poolPriceAssetBalance * decimalsMult4PriceAsset)
168+ let currentPoolPrice = fraction(priceAssetPoolLockedAmt, decimalsMultPrice, amountAssetPoolLockedAmt)
169+ if ((size(poolLiquidityDataList) == 0))
170+ then {
171+ let partA = pow(inAmountAssetAmtCalculated, 0, 0, 50, 1, DOWN)
172+ let partB = pow(inPriceAssetAmtCalculated, 0, 0, 50, 1, DOWN)
173+ let lpAssetsToReturn = (partA * partB)
175174 [StringEntry(keyPriceLast(), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPriceHistory(height, lastBlock.timestamp), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPutActionByUser(toString(i.caller), toBase58String(i.transactionId)), dataPutActionInfo(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn, currentPoolPrice, slippageTolerance, height, lastBlock.timestamp)), StringEntry(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller)), dataPoolLiquidity(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn)), StringEntry(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId), dataPoolLiquidity(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn)), Reissue(lpAssetId, lpAssetsToReturn, true), ScriptTransfer(i.caller, lpAssetsToReturn, lpAssetId)]
176- }
177- else {
178- let slippage = fraction(currentPoolPrice, 100, expectedUserPrice)
179- if ((slippage > slippageTolerance))
180- then throw(((("Price slippage " + toString(slippage)) + " exceeded the passed limit of ") + toString(slippageTolerance)))
181- else {
182- let lpAmtByAmountAsset = fraction(poolLPBalance, inAmountAssetAmtCalculated, amountAssetPoolLockedAmt)
183- let lpAmtByPriceAsset = fraction(poolLPBalance, inPriceAssetAmtCalculated, priceAssetPoolLockedAmt)
184- let totalLp4User = if ((lpAmtByPriceAsset > lpAmtByAmountAsset))
185- then lpAmtByAmountAsset
186- else lpAmtByPriceAsset
175+ }
176+ else {
177+ let slippage = fraction(currentPoolPrice, 100, expectedUserPrice)
178+ if ((slippage > slippageTolerance))
179+ then throw(((("Price slippage " + toString(slippage)) + " exceeded the passed limit of ") + toString(slippageTolerance)))
180+ else {
181+ let lpAmtByAmountAsset = fraction(poolLPBalance, inAmountAssetAmtCalculated, amountAssetPoolLockedAmt)
182+ let lpAmtByPriceAsset = fraction(poolLPBalance, inPriceAssetAmtCalculated, priceAssetPoolLockedAmt)
183+ let totalLp4User = if ((lpAmtByPriceAsset > lpAmtByAmountAsset))
184+ then lpAmtByAmountAsset
185+ else lpAmtByPriceAsset
187186 [StringEntry(keyPriceLast(), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPriceHistory(height, lastBlock.timestamp), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPutActionByUser(toString(i.caller), toBase58String(i.transactionId)), dataPutActionInfo(inAmountAssetAmt, inPriceAssetAmt, totalLp4User, currentPoolPrice, slippageTolerance, height, lastBlock.timestamp)), StringEntry(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller)), dataPoolLiquidity((userAmountAssetBalance + inAmountAssetAmt), (userPriceAssetBalance + inPriceAssetAmt), (userLPBalance + totalLp4User))), StringEntry(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId), dataPoolLiquidity((poolAmountAssetBalance + inAmountAssetAmt), (poolPriceAssetBalance + inPriceAssetAmt), (poolLPBalance + totalLp4User))), Reissue(lpAssetId, totalLp4User, true), ScriptTransfer(i.caller, totalLp4User, lpAssetId)]
188- }
189- }
190- }
191- }
187+ }
188+ }
189+ }
192190 }
193191
194192
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let lPdecimals = 8
55
66 let decimalsMultPrice = ((100 * 1000) * 1000)
77
88 let SEP = "__"
99
1010 let PoolActive = 1
1111
1212 let PoolPutDisabled = 2
1313
1414 let PoolMatcherDisabled = 3
1515
1616 let PoolShutdown = 4
1717
1818 let factoryPublicKey = fromBase58String("MimQtBx7azhStAH2R5QV7Uk8hWEbm7q89793fk1j1mh")
1919
2020 let idxPoolAddress = 2
2121
2222 let idxPoolStatus = 3
2323
2424 let idxPoolLPAssetId = 4
2525
2626 let idxAmountAssetId = 5
2727
2828 let idxPriceAssetId = 6
2929
3030 let idxAmountAssetDecimals = 7
3131
3232 let idxPriceAssetDecimals = 8
3333
3434 let idxAmountAssetInternalId = 9
3535
3636 let idxPriceAssetInternalId = 10
3737
3838 let idxPoolWeight = 11
3939
4040 let idxPoolAmountAssetAmt = 2
4141
4242 let idxPoolPriceAssetAmt = 3
4343
4444 let idxPoolLPAssetAmt = 4
4545
4646 func keyPriceLast () = "%s%s__price__last"
4747
4848
4949 func keyPriceHistory (h,timestamp) = makeString(["%s%s%d%d__price__history", toString(h), toString(timestamp)], SEP)
5050
5151
5252 func keyPoolLiquidity (internalAmountAsset,internalPriceAsset) = (((("%d%d%s__" + internalAmountAsset) + "__") + internalPriceAsset) + "__locked")
5353
5454
5555 func keyPoolLiquidityByUser (internalAmountAsset,internalPriceAsset,userAddress) = (((((("%d%d%s%s__" + internalAmountAsset) + "__") + internalPriceAsset) + "__") + userAddress) + "__locked")
5656
5757
5858 func keyPutActionByUser (userAddress,txId) = ((("%s%s%s__P__" + userAddress) + "__") + txId)
5959
6060
6161 func keyGetActionByUser (userAddress,txId) = ((("%s%s%s__G__" + userAddress) + "__") + txId)
6262
6363
6464 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2LpAsset")
6565
6666
6767 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = (((("%s%d%d%s__" + amountAssetInternal) + "__") + priceAssetInternal) + "__config")
6868
6969
7070 func getPoolConfig () = {
7171 let factoryAddress = addressFromPublicKey(factoryPublicKey)
7272 let currentPoolAssets = split(valueOrErrorMessage(getString(factoryAddress, keyMappingPoolContractAddressToPoolAssets(toString(this))), "No factory config found for pool address."), SEP)
7373 let currentPoolConfig = split(valueOrErrorMessage(getString(factoryAddress, keyPoolConfig(currentPoolAssets[2], currentPoolAssets[3])), "No factory config found for pool assets."), SEP)
7474 currentPoolConfig
7575 }
7676
7777
7878 func getPoolLiquidity (amountAssetInternalId,priceAssetInternalId) = {
7979 let currentPoolLiquidityValue = getString(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId))
8080 if (!(isDefined(currentPoolLiquidityValue)))
8181 then nil
8282 else {
8383 let currentPoolLiquidity = split(value(currentPoolLiquidityValue), SEP)
8484 currentPoolLiquidity
8585 }
8686 }
8787
8888
8989 func getPoolLiquidityByUser (amountAssetInternalId,priceAssetInternalId,userAddress) = {
9090 let currentPoolLiquidityValue = getString(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, userAddress))
9191 if (!(isDefined(currentPoolLiquidityValue)))
9292 then ["", "0", "0", "0"]
9393 else {
9494 let currentPoolLiquidity = split(value(currentPoolLiquidityValue), SEP)
9595 currentPoolLiquidity
9696 }
9797 }
9898
9999
100100 func dataPoolLiquidity (amountAssetLocked,priceAssetLocked,lpTokenLocked) = makeString(["%d%d%d", toString(amountAssetLocked), toString(priceAssetLocked), toString(lpTokenLocked)], SEP)
101101
102102
103103 func dataPutActionInfo (inAmountAssetAmt,inPriceAssetAmt,outLpAmt,price,slippageTolerancePassedByUser,txHeight,txTimestamp) = makeString(["%d%d%d%d%d%d%d", toString(inAmountAssetAmt), toString(inPriceAssetAmt), toString(outLpAmt), toString(price), toString(slippageTolerancePassedByUser), toString(txHeight), toString(txTimestamp)], SEP)
104104
105105
106106 func dataGetActionInfo (outAmountAssetAmt,outPriceAssetAmt,inLpAmt,price,txHeight,txTimestamp) = makeString(["%d%d%d%d%d%d", toString(outAmountAssetAmt), toString(outPriceAssetAmt), toString(inLpAmt), toString(price), toString(txHeight), toString(txTimestamp)], SEP)
107107
108108
109109 func dataPoolLiquidityByUser (amountAssetLocked,priceAssetLocked,lpTokenLocked,userAddress) = makeString(["%d%d%d", toString(amountAssetLocked), toString(priceAssetLocked), toString(lpTokenLocked)], SEP)
110110
111111
112112 func calculatePrice (amountAssetAmt,amountAssetDecimals,priceAssetAmt,priceAssetDecimals) = {
113113 let decimalsMult4AmountAsset = pow(10, 0, (lPdecimals - amountAssetDecimals), 0, 0, DOWN)
114114 let decimalsMult4PriceAsset = pow(10, 0, (lPdecimals - priceAssetDecimals), 0, 0, DOWN)
115115 let inAmountAssetAmtFinal = (amountAssetAmt * decimalsMult4AmountAsset)
116116 let inPriceAmtFinal = (priceAssetAmt * decimalsMult4PriceAsset)
117117 let price = fraction(inPriceAmtFinal, decimalsMultPrice, inAmountAssetAmtFinal)
118118 price
119119 }
120120
121121
122122 @Callable(i)
123123 func getScriptHash () = {
124124 let hash = toBase64String(value(scriptHash(this)))
125125 throw(hash)
126126 }
127127
128128
129129
130130 @Callable(i)
131131 func put (slippageTolerance) = {
132132 let poolConfigDataList = getPoolConfig()
133133 let lpAssetId = fromBase58String(poolConfigDataList[idxPoolLPAssetId])
134134 let amountAssetId = poolConfigDataList[idxAmountAssetId]
135135 let priceAssetId = poolConfigDataList[idxPriceAssetId]
136136 let amountAssetInternalId = poolConfigDataList[idxAmountAssetInternalId]
137137 let priceAssetInternalId = poolConfigDataList[idxPriceAssetInternalId]
138138 let amoutAssetDecimals = parseIntValue(poolConfigDataList[idxAmountAssetDecimals])
139139 let priceAssetDecimals = parseIntValue(poolConfigDataList[idxPriceAssetDecimals])
140140 let pmtAmountAsset = value(i.payments[0])
141141 let inAmountAssetAmt = pmtAmountAsset.amount
142142 let inAmountAssetId = value(pmtAmountAsset.assetId)
143143 let pmtPriceAsset = value(i.payments[1])
144144 let inPriceAssetAmt = pmtPriceAsset.amount
145145 let inPriceAssetId = value(pmtPriceAsset.assetId)
146146 let poolLiquidityDataList = getPoolLiquidity(amountAssetInternalId, priceAssetInternalId)
147147 let poolAmountAssetBalance = parseIntValue(poolLiquidityDataList[idxPoolAmountAssetAmt])
148148 let poolPriceAssetBalance = parseIntValue(poolLiquidityDataList[idxPoolPriceAssetAmt])
149149 let poolLPBalance = parseIntValue(poolLiquidityDataList[idxPoolLPAssetAmt])
150150 let userLiquidityDataList = getPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller))
151151 let userAmountAssetBalance = parseIntValue(userLiquidityDataList[idxPoolAmountAssetAmt])
152152 let userPriceAssetBalance = parseIntValue(userLiquidityDataList[idxPoolPriceAssetAmt])
153153 let userLPBalance = parseIntValue(userLiquidityDataList[idxPoolLPAssetAmt])
154154 if (if ((amountAssetId != toBase58String(inAmountAssetId)))
155155 then true
156156 else (priceAssetId != toBase58String(inPriceAssetId)))
157157 then throw("Invalid amount or price asset passed.")
158- else {
159- let decimalsMult4AmountAsset = pow(10, 0, (lPdecimals - amoutAssetDecimals), 0, 0, DOWN)
160- let decimalsMult4PriceAsset = pow(10, 0, (lPdecimals - priceAssetDecimals), 0, 0, DOWN)
161- let inAmountAssetAmtCalculated = (inAmountAssetAmt * decimalsMult4AmountAsset)
162- let inPriceAssetAmtCalculated = (inPriceAssetAmt * decimalsMult4PriceAsset)
163- if (true)
164- then throw("DEBUG")
165- else {
166- let expectedUserPrice = fraction(inPriceAssetAmtCalculated, decimalsMultPrice, inAmountAssetAmtCalculated)
167- let amountAssetPoolLockedAmt = (poolAmountAssetBalance * decimalsMult4AmountAsset)
168- let priceAssetPoolLockedAmt = (poolPriceAssetBalance * decimalsMult4PriceAsset)
169- let currentPoolPrice = fraction(priceAssetPoolLockedAmt, decimalsMultPrice, amountAssetPoolLockedAmt)
170- if ((size(poolLiquidityDataList) == 0))
171- then {
172- let partA = pow(inAmountAssetAmtCalculated, 0, 0, 50, 1, DOWN)
173- let partB = pow(inPriceAssetAmtCalculated, 0, 0, 50, 1, DOWN)
174- let lpAssetsToReturn = (partA * partB)
158+ else if (true)
159+ then throw("DEBUG")
160+ else {
161+ let decimalsMult4AmountAsset = pow(10, 0, (lPdecimals - amoutAssetDecimals), 0, 0, DOWN)
162+ let decimalsMult4PriceAsset = pow(10, 0, (lPdecimals - priceAssetDecimals), 0, 0, DOWN)
163+ let inAmountAssetAmtCalculated = (inAmountAssetAmt * decimalsMult4AmountAsset)
164+ let inPriceAssetAmtCalculated = (inPriceAssetAmt * decimalsMult4PriceAsset)
165+ let expectedUserPrice = fraction(inPriceAssetAmtCalculated, decimalsMultPrice, inAmountAssetAmtCalculated)
166+ let amountAssetPoolLockedAmt = (poolAmountAssetBalance * decimalsMult4AmountAsset)
167+ let priceAssetPoolLockedAmt = (poolPriceAssetBalance * decimalsMult4PriceAsset)
168+ let currentPoolPrice = fraction(priceAssetPoolLockedAmt, decimalsMultPrice, amountAssetPoolLockedAmt)
169+ if ((size(poolLiquidityDataList) == 0))
170+ then {
171+ let partA = pow(inAmountAssetAmtCalculated, 0, 0, 50, 1, DOWN)
172+ let partB = pow(inPriceAssetAmtCalculated, 0, 0, 50, 1, DOWN)
173+ let lpAssetsToReturn = (partA * partB)
175174 [StringEntry(keyPriceLast(), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPriceHistory(height, lastBlock.timestamp), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPutActionByUser(toString(i.caller), toBase58String(i.transactionId)), dataPutActionInfo(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn, currentPoolPrice, slippageTolerance, height, lastBlock.timestamp)), StringEntry(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller)), dataPoolLiquidity(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn)), StringEntry(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId), dataPoolLiquidity(inAmountAssetAmt, inPriceAssetAmt, lpAssetsToReturn)), Reissue(lpAssetId, lpAssetsToReturn, true), ScriptTransfer(i.caller, lpAssetsToReturn, lpAssetId)]
176- }
177- else {
178- let slippage = fraction(currentPoolPrice, 100, expectedUserPrice)
179- if ((slippage > slippageTolerance))
180- then throw(((("Price slippage " + toString(slippage)) + " exceeded the passed limit of ") + toString(slippageTolerance)))
181- else {
182- let lpAmtByAmountAsset = fraction(poolLPBalance, inAmountAssetAmtCalculated, amountAssetPoolLockedAmt)
183- let lpAmtByPriceAsset = fraction(poolLPBalance, inPriceAssetAmtCalculated, priceAssetPoolLockedAmt)
184- let totalLp4User = if ((lpAmtByPriceAsset > lpAmtByAmountAsset))
185- then lpAmtByAmountAsset
186- else lpAmtByPriceAsset
175+ }
176+ else {
177+ let slippage = fraction(currentPoolPrice, 100, expectedUserPrice)
178+ if ((slippage > slippageTolerance))
179+ then throw(((("Price slippage " + toString(slippage)) + " exceeded the passed limit of ") + toString(slippageTolerance)))
180+ else {
181+ let lpAmtByAmountAsset = fraction(poolLPBalance, inAmountAssetAmtCalculated, amountAssetPoolLockedAmt)
182+ let lpAmtByPriceAsset = fraction(poolLPBalance, inPriceAssetAmtCalculated, priceAssetPoolLockedAmt)
183+ let totalLp4User = if ((lpAmtByPriceAsset > lpAmtByAmountAsset))
184+ then lpAmtByAmountAsset
185+ else lpAmtByPriceAsset
187186 [StringEntry(keyPriceLast(), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPriceHistory(height, lastBlock.timestamp), ("%s__" + toString(currentPoolPrice))), StringEntry(keyPutActionByUser(toString(i.caller), toBase58String(i.transactionId)), dataPutActionInfo(inAmountAssetAmt, inPriceAssetAmt, totalLp4User, currentPoolPrice, slippageTolerance, height, lastBlock.timestamp)), StringEntry(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller)), dataPoolLiquidity((userAmountAssetBalance + inAmountAssetAmt), (userPriceAssetBalance + inPriceAssetAmt), (userLPBalance + totalLp4User))), StringEntry(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId), dataPoolLiquidity((poolAmountAssetBalance + inAmountAssetAmt), (poolPriceAssetBalance + inPriceAssetAmt), (poolLPBalance + totalLp4User))), Reissue(lpAssetId, totalLp4User, true), ScriptTransfer(i.caller, totalLp4User, lpAssetId)]
188- }
189- }
190- }
191- }
187+ }
188+ }
189+ }
192190 }
193191
194192
195193
196194 @Callable(i)
197195 func get () = {
198196 let poolConfigList = getPoolConfig()
199197 let lpAssetId = poolConfigList[idxPoolLPAssetId]
200198 let amountAssetId = poolConfigList[idxAmountAssetId]
201199 let priceAssetId = poolConfigList[idxPriceAssetId]
202200 let amountAssetInternalId = poolConfigList[idxAmountAssetInternalId]
203201 let priceAssetInternalId = poolConfigList[idxPriceAssetInternalId]
204202 let userLiquidityList = getPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller))
205203 let userLPBalance = parseIntValue(userLiquidityList[idxPoolLPAssetAmt])
206204 let userAmountAssetBalance = parseIntValue(userLiquidityList[idxPoolAmountAssetAmt])
207205 let userPriceAssetBalance = parseIntValue(userLiquidityList[idxPoolPriceAssetAmt])
208206 let poolLiquidityList = getPoolLiquidity(amountAssetInternalId, priceAssetInternalId)
209207 let poolLPBalance = parseIntValue(poolLiquidityList[idxPoolLPAssetAmt])
210208 let poolAmountAssetBalance = parseIntValue(poolLiquidityList[idxPoolAmountAssetAmt])
211209 let poolPriceAssetBalance = parseIntValue(poolLiquidityList[idxPoolPriceAssetAmt])
212210 let pmtAmountAsset = value(i.payments[0])
213211 let pmtAssetId = value(pmtAmountAsset.assetId)
214212 let pmtAssetAmount = pmtAmountAsset.amount
215213 if ((lpAssetId != toBase58String(pmtAssetId)))
216214 then throw("Invalid asset passed.")
217215 else if ((pmtAssetAmount > userLPBalance))
218216 then throw("Invalid amount passed. Amount less than available.")
219217 else {
220218 let outAmountAssetAmt = fraction(poolAmountAssetBalance, pmtAssetAmount, poolLPBalance)
221219 let outPriceAssetAmt = fraction(poolPriceAssetBalance, pmtAssetAmount, poolLPBalance)
222220 let currentPrice = fraction(poolPriceAssetBalance, decimalsMultPrice, poolAmountAssetBalance)
223221 [Burn(pmtAssetId, pmtAssetAmount), ScriptTransfer(i.caller, outAmountAssetAmt, fromBase58String(amountAssetId)), ScriptTransfer(i.caller, outPriceAssetAmt, fromBase58String(priceAssetId)), StringEntry(keyPoolLiquidityByUser(amountAssetInternalId, priceAssetInternalId, toString(i.caller)), dataPoolLiquidity((userAmountAssetBalance - outAmountAssetAmt), (userPriceAssetBalance - outPriceAssetAmt), (userLPBalance - pmtAssetAmount))), StringEntry(keyPoolLiquidity(amountAssetInternalId, priceAssetInternalId), dataPoolLiquidity((poolAmountAssetBalance - outAmountAssetAmt), (poolPriceAssetBalance - outPriceAssetAmt), (poolLPBalance - pmtAssetAmount))), StringEntry(keyGetActionByUser(toString(i.caller), toBase58String(i.transactionId)), dataGetActionInfo(outAmountAssetAmt, outPriceAssetAmt, pmtAssetAmount, currentPrice, height, lastBlock.timestamp)), StringEntry(keyPriceLast(), ("%s__" + toString(currentPrice))), StringEntry(keyPriceHistory(height, lastBlock.timestamp), ("%s__" + toString(currentPrice)))]
224222 }
225223 }
226224
227225
228226
229227 @Callable(i)
230228 func topup () = nil
231229
232230
233231
234232 @Callable(i)
235233 func activate (amountAssetStr,priceAssetStr,lpAssetName,lpAssetDescr,poolWeight) = if ((i.callerPublicKey != factoryPublicKey))
236234 then throw("permissions denied")
237235 else {
238236 let amountAssetId = fromBase58String(amountAssetStr)
239237 let amountAssetDecimals = value(assetInfo(amountAssetId)).decimals
240238 let priceAssetId = fromBase58String(priceAssetStr)
241239 let priceAssetDecimals = value(assetInfo(priceAssetId)).decimals
242240 let lpAssetIssueAction = Issue(lpAssetName, lpAssetDescr, 1, 8, true)
243241 let lpAssetId = calculateAssetId(lpAssetIssueAction)
244242 let lpAssetIdAsString = toBase58String(lpAssetId)
245243 $Tuple2([lpAssetIssueAction, Burn(lpAssetId, 1)], lpAssetIdAsString)
246244 }
247245
248246
249247
250248 @Callable(i)
251249 func manage (status) = nil
252250
253251
254252
255253 @Callable(i)
256254 func estimatedPut () = nil
257255
258256
259257
260258 @Callable(i)
261259 func stats () = nil
262260
263261
264262
265263 @Callable(i)
266264 func estimatedGet () = nil
267265
268266
269267
270268 @Callable(i)
271269 func price () = nil
272270
273271
274272 @Verifier(tx)
275273 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
276274

github/deemru/w8io/873ac7e 
47.26 ms