tx · 48t5M35TS5TcK9wTNwVNrVwZDCfDJFnzUVXmZcdvrFor 3PL3TvgimsLFWs3xW4kpVmvRf3c8HX7JMS7: -0.01400000 Waves 2021.09.13 12:05 [2765983] smart account 3PL3TvgimsLFWs3xW4kpVmvRf3c8HX7JMS7 > SELF 0.00000000 Waves
{ "type": 13, "id": "48t5M35TS5TcK9wTNwVNrVwZDCfDJFnzUVXmZcdvrFor", "fee": 1400000, "feeAssetId": null, "timestamp": 1631523909312, "version": 2, "chainId": 87, "sender": "3PL3TvgimsLFWs3xW4kpVmvRf3c8HX7JMS7", "senderPublicKey": "5jVqgvJACVFibQhE9zUTopGq8uHYdbZMxmihBQ7V6VYm", "proofs": [ "3Qfx5cRi8JAwZ9yhH57SgwK4XqgoJBufENxSz6UHcmBb4bsewmn2sz5FvaVzRGQ3K7GUr3sVYLjFLqUmJngg4qyB" ], "script": "base64:AAIFAAAAAAAAABAIAhIAEgASABIAEgQKAggBAAAAFAAAAAABVAAAAAAAAAAAAgAAAAAIYXNzZXRJZHMJAARMAAAAAgEAAAAgpspUmHPcWVP6FPnnTQyyn4Yy8p9KHAWQMpXaTlJMpNQJAARMAAAAAgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEFAAAAA25pbAAAAAANQXNzZXRzV2VpZ2h0cwkABEwAAAACAAAAAAAAAAAyCQAETAAAAAIAAAAAAAAAADIFAAAAA25pbAAAAAAVQXNzZXRzV2VpZ2h0c0RlY2ltYWxzAAAAAAAAAAACAAAAABFQb29sVG9rZW5EZWNpbWFscwAAAAAAAAAACAAAAAAIRGVjaW1hbHMJAARMAAAAAgAAAAAAAAAACAkABEwAAAACAAAAAAAAAAAGBQAAAANuaWwAAAAABlNjYWxlcwkABEwAAAACAAAAAAAF9eEACQAETAAAAAIAAAAAAAAPQkAFAAAAA25pbAAAAAADRmVlAAAAAAAAAAAyAAAAAAVTY2FsZQAAAAAAAAAnEAAAAAAVRmVlRGVjaW1hbHNNdWx0aXBsaWVyAAAAAAAAACcQAAAAAA1mZWVBZ2dyZWdhdG9yCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXS8NszvszWENYQ1EQ7u/uIRAXS/J4y3wyAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADHRyeUdldEJpbmFyeQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgEAAAAAAQAAABZnZXRDdXJyZW50VG9rZW5CYWxhbmNlAAAAAQAAAAl0b2tlblR5cGUEAAAAB3Rva2VuSWQJAAJYAAAAAQkAAZEAAAACBQAAAAhhc3NldElkcwUAAAAJdG9rZW5UeXBlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfBQAAAAd0b2tlbklkAgAAAAhfYmFsYW5jZQEAAAAQY2FsY3VsYXRlUElzc3VlZAAAAAIAAAAGYW1vdW50AAAAB3Rva2VuSWQEAAAAB1BzdXBwbHkJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQEAAAAB0JhbGFuY2UJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAAJYAAAAAQUAAAAHdG9rZW5JZAIAAAAIX2JhbGFuY2UJAABrAAAAAwUAAAAGYW1vdW50BQAAAAdQc3VwcGx5BQAAAAdCYWxhbmNlAQAAAA1nZXRNaW5QSXNzdWVkAAAAAQAAAAhwYXltZW50cwoBAAAAB2hhbmRsZXIAAAACAAAABWFjY3VtAAAAB2N1cnJlbnQEAAAAB1BJc3N1ZWQJAQAAABBjYWxjdWxhdGVQSXNzdWVkAAAAAggFAAAAB2N1cnJlbnQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHY3VycmVudAAAAAdhc3NldElkAwMJAAAAAAAAAgUAAAAFYWNjdW0AAAAAAAAAAAAGCQAAZgAAAAIFAAAABWFjY3VtBQAAAAdQSXNzdWVkBQAAAAdQSXNzdWVkBQAAAAVhY2N1bQQAAAAJbWluUElzc2VkBAAAAA0kbGlzdDE0ODUxNTE1BQAAAAhwYXltZW50cwQAAAANJHNpemUxNDg1MTUxNQkAAZAAAAABBQAAAA0kbGlzdDE0ODUxNTE1BAAAAA0kYWNjMDE0ODUxNTE1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTE0ODUxNTE1AAAAAAAAAAAABQAAAA0kYWNjMDE0ODUxNTE1BAAAAA0kYWNjMTE0ODUxNTE1CQEAAAAHaGFuZGxlcgAAAAIFAAAADSRhY2MwMTQ4NTE1MTUJAAGRAAAAAgUAAAANJGxpc3QxNDg1MTUxNQAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemUxNDg1MTUxNQAAAAAAAAAAAQUAAAANJGFjYzExNDg1MTUxNQQAAAANJGFjYzIxNDg1MTUxNQkBAAAAB2hh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DSRhY2M2MTk0MTE5NzIJAAGRAAAAAgUAAAANJGxpc3QxOTQxMTk3MgAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemUxOTQxMTk3MgAAAAAAAAAABwUAAAANJGFjYzcxOTQxMTk3MgQAAAANJGFjYzgxOTQxMTk3MgkBAAAACGhhbmRsZXIyAAAAAgUAAAANJGFjYzcxOTQxMTk3MgkAAZEAAAACBQAAAA0kbGlzdDE5NDExOTcyAAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTE5NDExOTcyAAAAAAAAAAAIBQAAAA0kYWNjODE5NDExOTcyBAAAAA0kYWNjOTE5NDExOTcyCQEAAAAIaGFuZGxlcjIAAAACBQAAAA0kYWNjODE5NDExOTcyCQABkQAAAAIFAAAADSRsaXN0MTk0MTE5NzIAAAAAAAAAAAgDCQAAAAAAAAIFAAAADSRzaXplMTk0MTE5NzIAAAAAAAAAAAkFAAAADSRhY2M5MTk0MTE5NzIEAAAADiRhY2MxMDE5NDExOTcyCQEAAAAIaGFuZGxlcjIAAAACBQAAAA0kYWNjOTE5NDExOTcyCQABkQAAAAIFAAAADSRsaXN0MTk0MTE5NzIAAAAAAAAAAAkDCQAAAAAAAAIFAAAADSRzaXplMTk0MTE5NzIAAAAAAAAAAAoFAAAADiRhY2MxMDE5NDExOTcyBAAAAA4kYWNjMTExOTQxMTk3MgkBAAAACGhhbmRsZXIyAAAAAgUAAAAOJGFjYzEwMTk0MTE5NzIJAAGRAAAAAgUAAAANJGxpc3QxOTQxMTk3MgAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBgEAAAATaGFuZGxlUG9vbFRva2Vuc0FkZAAAAAMAAAAHUElzc3VlZAAAAAhwYXltZW50cwAAAAt1c2VyQWRkcmVzcwoBAAAAFWdldFRva2VuUGF5bWVudEFtb3VudAAAAAEAAAAHdG9rZW5JZAoBAAAAB2hhbmRsZXIAAAACAAAABWFjY3VtAAAAB3BheW1lbnQDCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAB3Rva2VuSWQIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAFYWNjdW0EAAAADSRsaXN0MjI3NzIzMDcF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b2tlbkNoYW5nZQAAAAIFAAAADSRhY2MzMzUwNjM1NDcJAAGRAAAAAgUAAAANJGxpc3QzNTA2MzU0NwAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemUzNTA2MzU0NwAAAAAAAAAABAUAAAANJGFjYzQzNTA2MzU0NwQAAAANJGFjYzUzNTA2MzU0NwkBAAAAEWhhbmRsZVRva2VuQ2hhbmdlAAAAAgUAAAANJGFjYzQzNTA2MzU0NwkAAZEAAAACBQAAAA0kbGlzdDM1MDYzNTQ3AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTM1MDYzNTQ3AAAAAAAAAAAFBQAAAA0kYWNjNTM1MDYzNTQ3BAAAAA0kYWNjNjM1MDYzNTQ3CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA0kYWNjNTM1MDYzNTQ3CQABkQAAAAIFAAAADSRsaXN0MzUwNjM1NDcAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMzUwNjM1NDcAAAAAAAAAAAYFAAAADSRhY2M2MzUwNjM1NDcEAAAADSRhY2M3MzUwNjM1NDcJAQAAABFoYW5kbGVUb2tlbkNoYW5nZQAAAAIFAAAADSRhY2M2MzUwNjM1NDcJAAGRAAAAAgUAAAANJGxpc3QzNTA2MzU0NwAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemUzNTA2MzU0NwAAAAAAAAAABwUAAAANJGFjYzczNTA2MzU0NwQAAAANJGFjYzgzNTA2MzU0NwkBAAAAEWhhbmRsZVRva2VuQ2hhbmdlAAAAAgUAAAANJGFjYzczNTA2MzU0NwkAAZEAAAACBQAAAA0kbGlzdDM1MDYzNTQ3AAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTM1MDYzNTQ3AAAAAAAAAAAIBQAAAA0kYWNjODM1MDYzNTQ3BAAAAA0kYWNjOTM1MDYzNTQ3CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA0kYWNjODM1MDYzNTQ3CQABkQAAAAIFAAAADSRsaXN0MzUwNjM1NDcAAAAAAAAAAAgDCQAAAAAAAAIFAAAADSRzaXplMzUwNjM1NDcAAAAAAAAAAAkFAAAADSRhY2M5MzUwNjM1NDcEAAAADiRhY2MxMDM1MDYzNTQ3CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA0kYWNjOTM1MDYzNTQ3CQABkQAAAAIFAAAADSRsaXN0MzUwNjM1NDcAAAAAAAAAAAkDCQAAAAAAAAIFAAAADSRzaXplMzUwNjM1NDcAAAAAAAAAAAoFAAAADiRhY2MxMDM1MDYzNTQ3BAAAAA4kYWNjMTEzNTA2MzU0NwkBAAAAEWhhbmRsZVRva2VuQ2hhbmdlAAAAAgUAAAAOJGFjYzEwMzUwNjM1NDcJAAGRAAAAAgUAAAANJGxpc3QzNTA2MzU0NwAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBAAAAA0kbGlzdDM1NTQzNTk2BQAAAAhhc3NldElkcwQAAAANJHNpemUzNTU0MzU5NgkAAZAAAAABBQAAAA0kbGlzdDM1NTQzNTk2BAAAAA0kYWNjMDM1NTQzNTk2BQAAAANuaWwDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAAFAAAADSRhY2MwMzU1NDM1OTYEAAAADSRhY2MxMzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjMDM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAEFAAAADSRhY2MxMzU1NDM1OTYEAAAADSRhY2MyMzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjMTM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAIFAAAADSRhY2MyMzU1NDM1OTYEAAAADSRhY2MzMzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjMjM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAMFAAAADSRhY2MzMzU1NDM1OTYEAAAADSRhY2M0MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjMzM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAQFAAAADSRhY2M0MzU1NDM1OTYEAAAADSRhY2M1MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjNDM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAUFAAAADSRhY2M1MzU1NDM1OTYEAAAADSRhY2M2MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjNTM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAYFAAAADSRhY2M2MzU1NDM1OTYEAAAADSRhY2M3MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjNjM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAcFAAAADSRhY2M3MzU1NDM1OTYEAAAADSRhY2M4MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjNzM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAgFAAAADSRhY2M4MzU1NDM1OTYEAAAADSRhY2M5MzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA0kYWNjODM1NTQzNTk2CQABkQAAAAIFAAAADSRsaXN0MzU1NDM1OTYAAAAAAAAAAAgDCQAAAAAAAAIFAAAADSRzaXplMzU1NDM1OTYAAAAAAAAAAAkFAAAADSRhY2M5MzU1NDM1OTYEAAAADiRhY2MxMDM1NTQzNTk2CQEAAAASaGFuZGxlVG9rZW5DaGFuZ2UyAAAAAgUAAAANJGFjYzkzNTU0MzU5NgkAAZEAAAACBQAAAA0kbGlzdDM1NTQzNTk2AAAAAAAAAAAJAwkAAAAAAAACBQAAAA0kc2l6ZTM1NTQzNTk2AAAAAAAAAAAKBQAAAA4kYWNjMTAzNTU0MzU5NgQAAAAOJGFjYzExMzU1NDM1OTYJAQAAABJoYW5kbGVUb2tlbkNoYW5nZTIAAAACBQAAAA4kYWNjMTAzNTU0MzU5NgkAAZEAAAACBQAAAA0kbGlzdDM1NTQzNTk2AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTABAAAAFmhhbmRsZVBvb2xUb2tlbnNSZWRlZW0AAAACAAAACVBSZWRlZW1lZAAAAAt1c2VyQWRkcmVzcwoBAAAAEWhhbmRsZVRva2VuUmVkZWVtAAAAAgAAAAVhY2N1bQAAAAd0b2tlbklkBAAAAAJCawkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkAAlgAAAABBQAAAAd0b2tlbklkAgAAAAhfYmFsYW5jZQQAAAAHUFN1cHBseQkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAQAAAANdG9rZW5EZWNpbWFscwkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkAAlgAAAABBQAAAAd0b2tlbklkAgAAAAZfc2NhbGUEAAAABmFtb3VudAkAAGsAAAADCQAAZQAAAAIFAAAADXRva2VuRGVjaW1hbHMJAABrAAAAAwkAAGUAAAACBQAAAAdQU3VwcGx5BQAAAAlQUmVkZWVtZWQFAAAADXRva2VuRGVjaW1hbHMFAAAAB1BTdXBwbHkFAAAAAkJrBQAAAA10b2tlbkRlY2ltYWxzCQAETgAAAAIFAAAABWFjY3VtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkAAlgAAAABBQAAAAd0b2tlbklkAgAAAAhfYmFsYW5jZQkA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BAAAAA0kYWNjODQ2Nzg0NzE5CQEAAAARaGFuZGxlVG9rZW5SZWRlZW0AAAACBQAAAA0kYWNjNzQ2Nzg0NzE5CQABkQAAAAIFAAAADSRsaXN0NDY3ODQ3MTkAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplNDY3ODQ3MTkAAAAAAAAAAAgFAAAADSRhY2M4NDY3ODQ3MTkEAAAADSRhY2M5NDY3ODQ3MTkJAQAAABFoYW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADSRhY2M4NDY3ODQ3MTkJAAGRAAAAAgUAAAANJGxpc3Q0Njc4NDcxOQAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemU0Njc4NDcxOQAAAAAAAAAACQUAAAANJGFjYzk0Njc4NDcxOQQAAAAOJGFjYzEwNDY3ODQ3MTkJAQAAABFoYW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADSRhY2M5NDY3ODQ3MTkJAAGRAAAAAgUAAAANJGxpc3Q0Njc4NDcxOQAAAAAAAAAACQMJAAAAAAAAAgUAAAANJHNpemU0Njc4NDcxOQAAAAAAAAAACgUAAAAOJGFjYzEwNDY3ODQ3MTkEAAAADiRhY2MxMTQ2Nzg0NzE5CQEAAAARaGFuZGxlVG9rZW5SZWRlZW0AAAACBQAAAA4kYWNjMTA0Njc4NDcxOQkAAZEAAAACBQAAAA0kbGlzdDQ2Nzg0NzE5AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAADSRsaXN0NDcyNTQ3NjcFAAAACGFzc2V0SWRzBAAAAA0kc2l6ZTQ3MjU0NzY3CQABkAAAAAEFAAAADSRsaXN0NDcyNTQ3NjcEAAAADSRhY2MwNDcyNTQ3NjcFAAAAA25pbAMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAAAAUAAAANJGFjYzA0NzI1NDc2NwQAAAANJGFjYzE0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2MwNDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAAAQUAAAANJGFjYzE0NzI1NDc2NwQAAAANJGFjYzI0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2MxNDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAAAgUAAAANJGFjYzI0NzI1NDc2NwQAAAANJGFjYzM0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2MyNDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAAAwUAAAANJGFjYzM0NzI1NDc2NwQAAAANJGFjYzQ0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2MzNDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAABAUAAAANJGFjYzQ0NzI1NDc2NwQAAAANJGFjYzU0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M0NDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAABQUAAAANJGFjYzU0NzI1NDc2NwQAAAANJGFjYzY0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M1NDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAABgUAAAANJGFjYzY0NzI1NDc2NwQAAAANJGFjYzc0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M2NDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAABwUAAAANJGFjYzc0NzI1NDc2NwQAAAANJGFjYzg0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M3NDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAACAUAAAANJGFjYzg0NzI1NDc2NwQAAAANJGFjYzk0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M4NDcyNTQ3NjcJAAGRAAAAAgUAAAANJGxpc3Q0NzI1NDc2NwAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemU0NzI1NDc2NwAAAAAAAAAACQUAAAANJGFjYzk0NzI1NDc2NwQAAAAOJGFjYzEwNDcyNTQ3NjcJAQAAABJoYW5kbGVUb2tlblJlZGVlbTIAAAACBQAAAA0kYWNjOTQ3MjU0NzY3CQABkQAAAAIFAAAADSRsaXN0NDcyNTQ3NjcAAAAAAAAAAAkDCQAAAAAAAAIFAAAADSRzaXplNDcyNTQ3NjcAAAAAAAAAAAoFAAAADiRhY2MxMDQ3MjU0NzY3BAAAAA4kYWNjMTE0NzI1NDc2NwkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADiRhY2MxMDQ3MjU0NzY3CQABkQAAAAIFAAAADSRsaXN0NDcyNTQ3NjcAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAEAAAASY2FsY3VsYXRlT3V0QW1vdW50AAAAAwAAAAhBbW91bnRJbgAAAAdhc3NldEluAAAACGFzc2V0T3V0BAAAAAdJbmRleEluCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAdhc3NldEluBAAAAAhJbmRleE91dAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAhhc3NldElkcwUAAAAIYXNzZXRPdXQEAAAACUJhbGFuY2VJbgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkAAlgAAAABBQAAAAdhc3NldEluAgAAAAhfYmFsYW5jZQQAAAAKQmFs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Y2MxMTY0MTM2NDQzCQEAAAAHaGFuZGxlcgAAAAIFAAAADiRhY2MxMDY0MTM2NDQzCQABkQAAAAIFAAAADSRsaXN0NjQxMzY0NDMAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAMJAABmAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABBnbG9iYWxfd2FzSW5pdGVkAAAAAAAAAAABCQAAAgAAAAECAAAAE3Bvb2wgYWxyZWFkeSBpbml0ZWQEAAAAEWluaXRpYWxQb29sVG9rZW5zCQEAAAAZY2FsY3VsYXRlUG9vbFRva2Vuc0Ftb3VudAAAAAEIBQAAAAFpAAAACHBheW1lbnRzBAAAAAtwb29sVG9rZW5JZAkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAEdGhpcwIAAAATZ2xvYmFsX3Bvb2xUb2tlbl9pZAQAAAAQcG9vbFRva2VuUmVpc3N1ZQkBAAAAB1JlaXNzdWUAAAADBQAAAAtwb29sVG9rZW5JZAUAAAARaW5pdGlhbFBvb2xUb2tlbnMGCQAETgAAAAIJAQAAAAtwcmVwYXJlTGlzdAAAAAAJAARMAAAAAgUAAAAQcG9vbFRva2VuUmVpc3N1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFAAAAEWluaXRpYWxQb29sVG9rZW5zCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAAE2dsb2JhbF9wb29sVG9rZW5faWQFAAAAC3Bvb2xUb2tlbklkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARaW5pdGlhbFBvb2xUb2tlbnMFAAAAC3Bvb2xUb2tlbklkBQAAAANuaWwAAAABaQEAAAAMYWRkTGlxdWlkaXR5AAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMFAAAAAVQJAAACAAAAAQkAASwAAAACAgAAADt5b3UgbmVlZCB0byBhdHRhY2ggYWxsIHBvb2wgdG9rZW5zLiBhbW91bnQgb2YgcG9vbCB0b2tlbnM6IAkAAaQAAAABBQAAAAFUAwkBAAAAASEAAAABCQEAAAATY2hlY2tUb2tlbnNWYWxpZGl0eQAAAAEIBQAAAAFpAAAACHBheW1lbnRzCQAAAgAAAAECAAAAFXdyb25nIGFzc2V0cyBhdHRhY2hlZAQAAAAHUElzc3VlZAkBAAAADWdldE1pblBJc3N1ZWQAAAABCAUAAAABaQAAAAhwYXltZW50cwQAAAAGcmVzdWx0CQEAAAATaGFuZGxlUG9vbFRva2Vuc0FkZAAAAAMFAAAAB1BJc3N1ZWQIBQAAAAFpAAAACHBheW1lbnRzCAUAAAABaQAAAAZjYWxsZXIEAAAAB3JlaXNzdWUJAQAAAAdSZWlzc3VlAAAAAwkBAAAADHRyeUdldEJpbmFyeQAAAAECAAAAE2dsb2JhbF9wb29sVG9rZW5faWQFAAAAB1BJc3N1ZWQGCQAETgAAAAIFAAAABnJlc3VsdAkABEwAAAACBQAAAAdyZWlzc3VlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAHUElzc3VlZAkBAAAADHRyeUdldEJpbmFyeQAAAAECAAAAE2dsb2JhbF9wb29sVG9rZW5faWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFAAAAB1BJc3N1ZWQFAAAAA25pbAAAAAFpAQAAAA9yZW1vdmVMaXF1aWRpdHkAAAAABAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkCQAAAgAAAAECAAAAHnBsZWFzZSBhdHRhY2ggcG9vbCBzaGFyZSB0b2tlbgQAAAAJUFJlZGVlbWVkCAUAAAADcG10AAAABmFtb3VudAQAAAAGcmVzdWx0CQEAAAAWaGFuZGxlUG9vbFRva2Vuc1JlZGVlbQAAAAIFAAAACVBSZWRlZW1lZAgFAAAAAWkAAAAGY2FsbGVyCQAETgAAAAIFAAAABnJlc3VsdAkABEwAAAACCQEAAAAEQnVybgAAAAIJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAAlQUmVkZWVtZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50CQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFAAAACVBSZWRlZW1lZAUAAAADbmlsAAAAAWkBAAAABHN3YXAAAAACAAAACGFzc2V0T3V0AAAAB21pbmltdW0EAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIQW1vdW50SW4JAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAQAAAAHQXNzZXRJbgkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAhBc3NldE91dAkAAlkAAAABBQAAAAhhc3NldE91dAQAAAAJQW1vdW50T3V0CQEAAAASY2FsY3VsYXRlT3V0QW1vdW50AAAAAwUAAAAIQW1vdW50SW4FAAAAB0Fzc2V0SW4FAAAACEFzc2V0T3V0AwkAAGYAAAACBQAAAAdtaW5pbXVtBQAAAAlBbW91bnRPdXQJAAACAAAAAQkAASwAAAACAgAAACthbW91bnQgdG8gcmVjaWV2ZSBpdCBsb3dlciB0aGFuIGdpdmVuIG9uZTogCQABpAAAAAEFAAAACUFtb3VudE91dAMJAABmAAAAAgAAAAAAAAAAAAkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQACWAAAAAEFAAAACEFzc2V0T3V0AgAAAAhfYmFsYW5jZQUAAAAJQW1vdW50T3V0CQAAAgAAAAECAAAAG2NvbnRyYWN0IGlzIG91dCBvZiByZXNlcnZlcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAAJYAAAAAQUAAAAIQXNzZXRPdXQCAAAACF9iYWxhbmNlCQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAAJYAAAAAQUAAAAIQXNzZXRPdXQCAAAACF9iYWxhbmNlBQAAAAlBbW91bnRPdXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQACWAAAAAEFAAAAB0Fzc2V0SW4CAAAACF9iYWxhbmNlCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAAJYAAAAAQUAAAAHQXNzZXRJbgIAAAAIX2JhbGFuY2UFAAAACEFtb3VudEluCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJQW1vdW50T3V0BQAAAAhBc3NldE91dAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkSAYbp", "height": 2765983, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8niMRya5FGQLQA3Fd4gusvmZmP1pubdTBDhXNpee8iMP Next: xAxjGekNg24nkebaBZFE7f6pH4gXVxSsLR7GZrzPBEn Diff:
Old | New | Differences | |
---|---|---|---|
471 | 471 | } | |
472 | 472 | ||
473 | 473 | ||
474 | + | func handlePoolTokensRedeem (PRedeemed,userAddress) = { | |
475 | + | func handleTokenRedeem (accum,tokenId) = { | |
476 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
477 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
478 | + | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
479 | + | let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply)), Bk, tokenDecimals) | |
480 | + | (accum ++ [IntegerEntry((("global_" + toBase58String(tokenId)) + "_balance"), (Bk - amount))]) | |
481 | + | } | |
482 | + | ||
483 | + | func handleTokenRedeem2 (accum,tokenId) = { | |
484 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
485 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
486 | + | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
487 | + | let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply)), Bk, tokenDecimals) | |
488 | + | (accum ++ [ScriptTransfer(userAddress, amount, tokenId)]) | |
489 | + | } | |
490 | + | ||
491 | + | ({ | |
492 | + | let $list46784719 = assetIds | |
493 | + | let $size46784719 = size($list46784719) | |
494 | + | let $acc046784719 = nil | |
495 | + | if (($size46784719 == 0)) | |
496 | + | then $acc046784719 | |
497 | + | else { | |
498 | + | let $acc146784719 = handleTokenRedeem($acc046784719, $list46784719[0]) | |
499 | + | if (($size46784719 == 1)) | |
500 | + | then $acc146784719 | |
501 | + | else { | |
502 | + | let $acc246784719 = handleTokenRedeem($acc146784719, $list46784719[1]) | |
503 | + | if (($size46784719 == 2)) | |
504 | + | then $acc246784719 | |
505 | + | else { | |
506 | + | let $acc346784719 = handleTokenRedeem($acc246784719, $list46784719[2]) | |
507 | + | if (($size46784719 == 3)) | |
508 | + | then $acc346784719 | |
509 | + | else { | |
510 | + | let $acc446784719 = handleTokenRedeem($acc346784719, $list46784719[3]) | |
511 | + | if (($size46784719 == 4)) | |
512 | + | then $acc446784719 | |
513 | + | else { | |
514 | + | let $acc546784719 = handleTokenRedeem($acc446784719, $list46784719[4]) | |
515 | + | if (($size46784719 == 5)) | |
516 | + | then $acc546784719 | |
517 | + | else { | |
518 | + | let $acc646784719 = handleTokenRedeem($acc546784719, $list46784719[5]) | |
519 | + | if (($size46784719 == 6)) | |
520 | + | then $acc646784719 | |
521 | + | else { | |
522 | + | let $acc746784719 = handleTokenRedeem($acc646784719, $list46784719[6]) | |
523 | + | if (($size46784719 == 7)) | |
524 | + | then $acc746784719 | |
525 | + | else { | |
526 | + | let $acc846784719 = handleTokenRedeem($acc746784719, $list46784719[7]) | |
527 | + | if (($size46784719 == 8)) | |
528 | + | then $acc846784719 | |
529 | + | else { | |
530 | + | let $acc946784719 = handleTokenRedeem($acc846784719, $list46784719[8]) | |
531 | + | if (($size46784719 == 9)) | |
532 | + | then $acc946784719 | |
533 | + | else { | |
534 | + | let $acc1046784719 = handleTokenRedeem($acc946784719, $list46784719[9]) | |
535 | + | if (($size46784719 == 10)) | |
536 | + | then $acc1046784719 | |
537 | + | else { | |
538 | + | let $acc1146784719 = handleTokenRedeem($acc1046784719, $list46784719[10]) | |
539 | + | throw("List size exceed 10") | |
540 | + | } | |
541 | + | } | |
542 | + | } | |
543 | + | } | |
544 | + | } | |
545 | + | } | |
546 | + | } | |
547 | + | } | |
548 | + | } | |
549 | + | } | |
550 | + | } | |
551 | + | } ++ { | |
552 | + | let $list47254767 = assetIds | |
553 | + | let $size47254767 = size($list47254767) | |
554 | + | let $acc047254767 = nil | |
555 | + | if (($size47254767 == 0)) | |
556 | + | then $acc047254767 | |
557 | + | else { | |
558 | + | let $acc147254767 = handleTokenRedeem2($acc047254767, $list47254767[0]) | |
559 | + | if (($size47254767 == 1)) | |
560 | + | then $acc147254767 | |
561 | + | else { | |
562 | + | let $acc247254767 = handleTokenRedeem2($acc147254767, $list47254767[1]) | |
563 | + | if (($size47254767 == 2)) | |
564 | + | then $acc247254767 | |
565 | + | else { | |
566 | + | let $acc347254767 = handleTokenRedeem2($acc247254767, $list47254767[2]) | |
567 | + | if (($size47254767 == 3)) | |
568 | + | then $acc347254767 | |
569 | + | else { | |
570 | + | let $acc447254767 = handleTokenRedeem2($acc347254767, $list47254767[3]) | |
571 | + | if (($size47254767 == 4)) | |
572 | + | then $acc447254767 | |
573 | + | else { | |
574 | + | let $acc547254767 = handleTokenRedeem2($acc447254767, $list47254767[4]) | |
575 | + | if (($size47254767 == 5)) | |
576 | + | then $acc547254767 | |
577 | + | else { | |
578 | + | let $acc647254767 = handleTokenRedeem2($acc547254767, $list47254767[5]) | |
579 | + | if (($size47254767 == 6)) | |
580 | + | then $acc647254767 | |
581 | + | else { | |
582 | + | let $acc747254767 = handleTokenRedeem2($acc647254767, $list47254767[6]) | |
583 | + | if (($size47254767 == 7)) | |
584 | + | then $acc747254767 | |
585 | + | else { | |
586 | + | let $acc847254767 = handleTokenRedeem2($acc747254767, $list47254767[7]) | |
587 | + | if (($size47254767 == 8)) | |
588 | + | then $acc847254767 | |
589 | + | else { | |
590 | + | let $acc947254767 = handleTokenRedeem2($acc847254767, $list47254767[8]) | |
591 | + | if (($size47254767 == 9)) | |
592 | + | then $acc947254767 | |
593 | + | else { | |
594 | + | let $acc1047254767 = handleTokenRedeem2($acc947254767, $list47254767[9]) | |
595 | + | if (($size47254767 == 10)) | |
596 | + | then $acc1047254767 | |
597 | + | else { | |
598 | + | let $acc1147254767 = handleTokenRedeem2($acc1047254767, $list47254767[10]) | |
599 | + | throw("List size exceed 10") | |
600 | + | } | |
601 | + | } | |
602 | + | } | |
603 | + | } | |
604 | + | } | |
605 | + | } | |
606 | + | } | |
607 | + | } | |
608 | + | } | |
609 | + | } | |
610 | + | } | |
611 | + | }) | |
612 | + | } | |
613 | + | ||
614 | + | ||
474 | 615 | func calculateOutAmount (AmountIn,assetIn,assetOut) = { | |
475 | 616 | let IndexIn = value(indexOf(assetIds, assetIn)) | |
476 | 617 | let IndexOut = value(indexOf(assetIds, assetOut)) | |
490 | 631 | func prepareList () = { | |
491 | 632 | func handler (accum,n) = (accum ++ [IntegerEntry((("global_" + toBase58String(value(n.assetId))) + "_amount"), n.amount)]) | |
492 | 633 | ||
493 | - | let $ | |
494 | - | let $ | |
495 | - | let $ | |
496 | - | if (($ | |
497 | - | then $ | |
634 | + | let $list58985931 = i.payments | |
635 | + | let $size58985931 = size($list58985931) | |
636 | + | let $acc058985931 = nil | |
637 | + | if (($size58985931 == 0)) | |
638 | + | then $acc058985931 | |
498 | 639 | else { | |
499 | - | let $ | |
500 | - | if (($ | |
501 | - | then $ | |
640 | + | let $acc158985931 = handler($acc058985931, $list58985931[0]) | |
641 | + | if (($size58985931 == 1)) | |
642 | + | then $acc158985931 | |
502 | 643 | else { | |
503 | - | let $ | |
504 | - | if (($ | |
505 | - | then $ | |
644 | + | let $acc258985931 = handler($acc158985931, $list58985931[1]) | |
645 | + | if (($size58985931 == 2)) | |
646 | + | then $acc258985931 | |
506 | 647 | else { | |
507 | - | let $ | |
508 | - | if (($ | |
509 | - | then $ | |
648 | + | let $acc358985931 = handler($acc258985931, $list58985931[2]) | |
649 | + | if (($size58985931 == 3)) | |
650 | + | then $acc358985931 | |
510 | 651 | else { | |
511 | - | let $ | |
512 | - | if (($ | |
513 | - | then $ | |
652 | + | let $acc458985931 = handler($acc358985931, $list58985931[3]) | |
653 | + | if (($size58985931 == 4)) | |
654 | + | then $acc458985931 | |
514 | 655 | else { | |
515 | - | let $ | |
516 | - | if (($ | |
517 | - | then $ | |
656 | + | let $acc558985931 = handler($acc458985931, $list58985931[4]) | |
657 | + | if (($size58985931 == 5)) | |
658 | + | then $acc558985931 | |
518 | 659 | else { | |
519 | - | let $ | |
520 | - | if (($ | |
521 | - | then $ | |
660 | + | let $acc658985931 = handler($acc558985931, $list58985931[5]) | |
661 | + | if (($size58985931 == 6)) | |
662 | + | then $acc658985931 | |
522 | 663 | else { | |
523 | - | let $ | |
524 | - | if (($ | |
525 | - | then $ | |
664 | + | let $acc758985931 = handler($acc658985931, $list58985931[6]) | |
665 | + | if (($size58985931 == 7)) | |
666 | + | then $acc758985931 | |
526 | 667 | else { | |
527 | - | let $ | |
528 | - | if (($ | |
529 | - | then $ | |
668 | + | let $acc858985931 = handler($acc758985931, $list58985931[7]) | |
669 | + | if (($size58985931 == 8)) | |
670 | + | then $acc858985931 | |
530 | 671 | else { | |
531 | - | let $ | |
532 | - | if (($ | |
533 | - | then $ | |
672 | + | let $acc958985931 = handler($acc858985931, $list58985931[8]) | |
673 | + | if (($size58985931 == 9)) | |
674 | + | then $acc958985931 | |
534 | 675 | else { | |
535 | - | let $ | |
536 | - | if (($ | |
537 | - | then $ | |
676 | + | let $acc1058985931 = handler($acc958985931, $list58985931[9]) | |
677 | + | if (($size58985931 == 10)) | |
678 | + | then $acc1058985931 | |
538 | 679 | else { | |
539 | - | let $ | |
680 | + | let $acc1158985931 = handler($acc1058985931, $list58985931[10]) | |
540 | 681 | throw("List size exceed 10") | |
541 | 682 | } | |
542 | 683 | } | |
559 | 700 | else accum | |
560 | 701 | ||
561 | 702 | let Token = { | |
562 | - | let $ | |
563 | - | let $ | |
564 | - | let $ | |
565 | - | if (($ | |
566 | - | then $ | |
703 | + | let $list62536284 = assetIds | |
704 | + | let $size62536284 = size($list62536284) | |
705 | + | let $acc062536284 = 1 | |
706 | + | if (($size62536284 == 0)) | |
707 | + | then $acc062536284 | |
567 | 708 | else { | |
568 | - | let $ | |
569 | - | if (($ | |
570 | - | then $ | |
709 | + | let $acc162536284 = handler2($acc062536284, $list62536284[0]) | |
710 | + | if (($size62536284 == 1)) | |
711 | + | then $acc162536284 | |
571 | 712 | else { | |
572 | - | let $ | |
573 | - | if (($ | |
574 | - | then $ | |
713 | + | let $acc262536284 = handler2($acc162536284, $list62536284[1]) | |
714 | + | if (($size62536284 == 2)) | |
715 | + | then $acc262536284 | |
575 | 716 | else { | |
576 | - | let $ | |
577 | - | if (($ | |
578 | - | then $ | |
717 | + | let $acc362536284 = handler2($acc262536284, $list62536284[2]) | |
718 | + | if (($size62536284 == 3)) | |
719 | + | then $acc362536284 | |
579 | 720 | else { | |
580 | - | let $ | |
581 | - | if (($ | |
582 | - | then $ | |
721 | + | let $acc462536284 = handler2($acc362536284, $list62536284[3]) | |
722 | + | if (($size62536284 == 4)) | |
723 | + | then $acc462536284 | |
583 | 724 | else { | |
584 | - | let $ | |
585 | - | if (($ | |
586 | - | then $ | |
725 | + | let $acc562536284 = handler2($acc462536284, $list62536284[4]) | |
726 | + | if (($size62536284 == 5)) | |
727 | + | then $acc562536284 | |
587 | 728 | else { | |
588 | - | let $ | |
589 | - | if (($ | |
590 | - | then $ | |
729 | + | let $acc662536284 = handler2($acc562536284, $list62536284[5]) | |
730 | + | if (($size62536284 == 6)) | |
731 | + | then $acc662536284 | |
591 | 732 | else { | |
592 | - | let $ | |
593 | - | if (($ | |
594 | - | then $ | |
733 | + | let $acc762536284 = handler2($acc662536284, $list62536284[6]) | |
734 | + | if (($size62536284 == 7)) | |
735 | + | then $acc762536284 | |
595 | 736 | else { | |
596 | - | let $ | |
597 | - | if (($ | |
598 | - | then $ | |
737 | + | let $acc862536284 = handler2($acc762536284, $list62536284[7]) | |
738 | + | if (($size62536284 == 8)) | |
739 | + | then $acc862536284 | |
599 | 740 | else { | |
600 | - | let $ | |
601 | - | if (($ | |
602 | - | then $ | |
741 | + | let $acc962536284 = handler2($acc862536284, $list62536284[8]) | |
742 | + | if (($size62536284 == 9)) | |
743 | + | then $acc962536284 | |
603 | 744 | else { | |
604 | - | let $ | |
605 | - | if (($ | |
606 | - | then $ | |
745 | + | let $acc1062536284 = handler2($acc962536284, $list62536284[9]) | |
746 | + | if (($size62536284 == 10)) | |
747 | + | then $acc1062536284 | |
607 | 748 | else { | |
608 | - | let $ | |
749 | + | let $acc1162536284 = handler2($acc1062536284, $list62536284[10]) | |
609 | 750 | throw("List size exceed 10") | |
610 | 751 | } | |
611 | 752 | } | |
622 | 763 | (accum * pow(pmt.amount, Decimals[Token], AssetsWeights[Token], AssetsWeightsDecimals, PoolTokenDecimals, FLOOR)) | |
623 | 764 | } | |
624 | 765 | ||
625 | - | let $ | |
626 | - | let $ | |
627 | - | let $ | |
628 | - | if (($ | |
629 | - | then $ | |
766 | + | let $list64136443 = payments | |
767 | + | let $size64136443 = size($list64136443) | |
768 | + | let $acc064136443 = 1 | |
769 | + | if (($size64136443 == 0)) | |
770 | + | then $acc064136443 | |
630 | 771 | else { | |
631 | - | let $ | |
632 | - | if (($ | |
633 | - | then $ | |
772 | + | let $acc164136443 = handler($acc064136443, $list64136443[0]) | |
773 | + | if (($size64136443 == 1)) | |
774 | + | then $acc164136443 | |
634 | 775 | else { | |
635 | - | let $ | |
636 | - | if (($ | |
637 | - | then $ | |
776 | + | let $acc264136443 = handler($acc164136443, $list64136443[1]) | |
777 | + | if (($size64136443 == 2)) | |
778 | + | then $acc264136443 | |
638 | 779 | else { | |
639 | - | let $ | |
640 | - | if (($ | |
641 | - | then $ | |
780 | + | let $acc364136443 = handler($acc264136443, $list64136443[2]) | |
781 | + | if (($size64136443 == 3)) | |
782 | + | then $acc364136443 | |
642 | 783 | else { | |
643 | - | let $ | |
644 | - | if (($ | |
645 | - | then $ | |
784 | + | let $acc464136443 = handler($acc364136443, $list64136443[3]) | |
785 | + | if (($size64136443 == 4)) | |
786 | + | then $acc464136443 | |
646 | 787 | else { | |
647 | - | let $ | |
648 | - | if (($ | |
649 | - | then $ | |
788 | + | let $acc564136443 = handler($acc464136443, $list64136443[4]) | |
789 | + | if (($size64136443 == 5)) | |
790 | + | then $acc564136443 | |
650 | 791 | else { | |
651 | - | let $ | |
652 | - | if (($ | |
653 | - | then $ | |
792 | + | let $acc664136443 = handler($acc564136443, $list64136443[5]) | |
793 | + | if (($size64136443 == 6)) | |
794 | + | then $acc664136443 | |
654 | 795 | else { | |
655 | - | let $ | |
656 | - | if (($ | |
657 | - | then $ | |
796 | + | let $acc764136443 = handler($acc664136443, $list64136443[6]) | |
797 | + | if (($size64136443 == 7)) | |
798 | + | then $acc764136443 | |
658 | 799 | else { | |
659 | - | let $ | |
660 | - | if (($ | |
661 | - | then $ | |
800 | + | let $acc864136443 = handler($acc764136443, $list64136443[7]) | |
801 | + | if (($size64136443 == 8)) | |
802 | + | then $acc864136443 | |
662 | 803 | else { | |
663 | - | let $ | |
664 | - | if (($ | |
665 | - | then $ | |
804 | + | let $acc964136443 = handler($acc864136443, $list64136443[8]) | |
805 | + | if (($size64136443 == 9)) | |
806 | + | then $acc964136443 | |
666 | 807 | else { | |
667 | - | let $ | |
668 | - | if (($ | |
669 | - | then $ | |
808 | + | let $acc1064136443 = handler($acc964136443, $list64136443[9]) | |
809 | + | if (($size64136443 == 10)) | |
810 | + | then $acc1064136443 | |
670 | 811 | else { | |
671 | - | let $ | |
812 | + | let $acc1164136443 = handler($acc1064136443, $list64136443[10]) | |
672 | 813 | throw("List size exceed 10") | |
673 | 814 | } | |
674 | 815 | } | |
710 | 851 | ||
711 | 852 | ||
712 | 853 | @Callable(i) | |
713 | - | func removeLiquidity () = nil | |
854 | + | func removeLiquidity () = { | |
855 | + | let pmt = i.payments[0] | |
856 | + | if ((pmt.assetId != tryGetBinary("global_poolToken_id"))) | |
857 | + | then throw("please attach pool share token") | |
858 | + | else { | |
859 | + | let PRedeemed = pmt.amount | |
860 | + | let result = handlePoolTokensRedeem(PRedeemed, i.caller) | |
861 | + | (result ++ [Burn(tryGetBinary("global_poolToken_id"), PRedeemed), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") - PRedeemed))]) | |
862 | + | } | |
863 | + | } | |
714 | 864 | ||
715 | 865 | ||
716 | 866 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let T = 2 | |
5 | 5 | ||
6 | 6 | let assetIds = [base58'CE5cxMvz7865CyFZPFUmDiL4KRkYXP6b6oYgN3vmWdV5', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'] | |
7 | 7 | ||
8 | 8 | let AssetsWeights = [50, 50] | |
9 | 9 | ||
10 | 10 | let AssetsWeightsDecimals = 2 | |
11 | 11 | ||
12 | 12 | let PoolTokenDecimals = 8 | |
13 | 13 | ||
14 | 14 | let Decimals = [8, 6] | |
15 | 15 | ||
16 | 16 | let Scales = [100000000, 1000000] | |
17 | 17 | ||
18 | 18 | let Fee = 50 | |
19 | 19 | ||
20 | 20 | let Scale = 10000 | |
21 | 21 | ||
22 | 22 | let FeeDecimalsMultiplier = 10000 | |
23 | 23 | ||
24 | 24 | let feeAggregator = Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd') | |
25 | 25 | ||
26 | 26 | func tryGetInteger (key) = match getInteger(this, key) { | |
27 | 27 | case b: Int => | |
28 | 28 | b | |
29 | 29 | case _ => | |
30 | 30 | 0 | |
31 | 31 | } | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func tryGetBinary (key) = match getBinary(this, key) { | |
35 | 35 | case b: ByteVector => | |
36 | 36 | b | |
37 | 37 | case _ => | |
38 | 38 | base58'' | |
39 | 39 | } | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func getCurrentTokenBalance (tokenType) = { | |
43 | 43 | let tokenId = toBase58String(assetIds[tokenType]) | |
44 | 44 | tryGetInteger((("global_" + tokenId) + "_balance")) | |
45 | 45 | } | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func calculatePIssued (amount,tokenId) = { | |
49 | 49 | let Psupply = tryGetInteger("global_poolToken_amount") | |
50 | 50 | let Balance = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
51 | 51 | fraction(amount, Psupply, Balance) | |
52 | 52 | } | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func getMinPIssued (payments) = { | |
56 | 56 | func handler (accum,current) = { | |
57 | 57 | let PIssued = calculatePIssued(current.amount, value(current.assetId)) | |
58 | 58 | if (if ((accum == 0)) | |
59 | 59 | then true | |
60 | 60 | else (accum > PIssued)) | |
61 | 61 | then PIssued | |
62 | 62 | else accum | |
63 | 63 | } | |
64 | 64 | ||
65 | 65 | let minPIssed = { | |
66 | 66 | let $list14851515 = payments | |
67 | 67 | let $size14851515 = size($list14851515) | |
68 | 68 | let $acc014851515 = 0 | |
69 | 69 | if (($size14851515 == 0)) | |
70 | 70 | then $acc014851515 | |
71 | 71 | else { | |
72 | 72 | let $acc114851515 = handler($acc014851515, $list14851515[0]) | |
73 | 73 | if (($size14851515 == 1)) | |
74 | 74 | then $acc114851515 | |
75 | 75 | else { | |
76 | 76 | let $acc214851515 = handler($acc114851515, $list14851515[1]) | |
77 | 77 | if (($size14851515 == 2)) | |
78 | 78 | then $acc214851515 | |
79 | 79 | else { | |
80 | 80 | let $acc314851515 = handler($acc214851515, $list14851515[2]) | |
81 | 81 | if (($size14851515 == 3)) | |
82 | 82 | then $acc314851515 | |
83 | 83 | else { | |
84 | 84 | let $acc414851515 = handler($acc314851515, $list14851515[3]) | |
85 | 85 | if (($size14851515 == 4)) | |
86 | 86 | then $acc414851515 | |
87 | 87 | else { | |
88 | 88 | let $acc514851515 = handler($acc414851515, $list14851515[4]) | |
89 | 89 | if (($size14851515 == 5)) | |
90 | 90 | then $acc514851515 | |
91 | 91 | else { | |
92 | 92 | let $acc614851515 = handler($acc514851515, $list14851515[5]) | |
93 | 93 | if (($size14851515 == 6)) | |
94 | 94 | then $acc614851515 | |
95 | 95 | else { | |
96 | 96 | let $acc714851515 = handler($acc614851515, $list14851515[6]) | |
97 | 97 | if (($size14851515 == 7)) | |
98 | 98 | then $acc714851515 | |
99 | 99 | else { | |
100 | 100 | let $acc814851515 = handler($acc714851515, $list14851515[7]) | |
101 | 101 | if (($size14851515 == 8)) | |
102 | 102 | then $acc814851515 | |
103 | 103 | else { | |
104 | 104 | let $acc914851515 = handler($acc814851515, $list14851515[8]) | |
105 | 105 | if (($size14851515 == 9)) | |
106 | 106 | then $acc914851515 | |
107 | 107 | else { | |
108 | 108 | let $acc1014851515 = handler($acc914851515, $list14851515[9]) | |
109 | 109 | if (($size14851515 == 10)) | |
110 | 110 | then $acc1014851515 | |
111 | 111 | else { | |
112 | 112 | let $acc1114851515 = handler($acc1014851515, $list14851515[10]) | |
113 | 113 | throw("List size exceed 10") | |
114 | 114 | } | |
115 | 115 | } | |
116 | 116 | } | |
117 | 117 | } | |
118 | 118 | } | |
119 | 119 | } | |
120 | 120 | } | |
121 | 121 | } | |
122 | 122 | } | |
123 | 123 | } | |
124 | 124 | } | |
125 | 125 | } | |
126 | 126 | minPIssed | |
127 | 127 | } | |
128 | 128 | ||
129 | 129 | ||
130 | 130 | func checkTokensValidity (payments) = { | |
131 | 131 | func handler1 (accum,payment) = (accum ++ [value(payment.assetId)]) | |
132 | 132 | ||
133 | 133 | let ids = { | |
134 | 134 | let $list17191751 = payments | |
135 | 135 | let $size17191751 = size($list17191751) | |
136 | 136 | let $acc017191751 = nil | |
137 | 137 | if (($size17191751 == 0)) | |
138 | 138 | then $acc017191751 | |
139 | 139 | else { | |
140 | 140 | let $acc117191751 = handler1($acc017191751, $list17191751[0]) | |
141 | 141 | if (($size17191751 == 1)) | |
142 | 142 | then $acc117191751 | |
143 | 143 | else { | |
144 | 144 | let $acc217191751 = handler1($acc117191751, $list17191751[1]) | |
145 | 145 | if (($size17191751 == 2)) | |
146 | 146 | then $acc217191751 | |
147 | 147 | else { | |
148 | 148 | let $acc317191751 = handler1($acc217191751, $list17191751[2]) | |
149 | 149 | if (($size17191751 == 3)) | |
150 | 150 | then $acc317191751 | |
151 | 151 | else { | |
152 | 152 | let $acc417191751 = handler1($acc317191751, $list17191751[3]) | |
153 | 153 | if (($size17191751 == 4)) | |
154 | 154 | then $acc417191751 | |
155 | 155 | else { | |
156 | 156 | let $acc517191751 = handler1($acc417191751, $list17191751[4]) | |
157 | 157 | if (($size17191751 == 5)) | |
158 | 158 | then $acc517191751 | |
159 | 159 | else { | |
160 | 160 | let $acc617191751 = handler1($acc517191751, $list17191751[5]) | |
161 | 161 | if (($size17191751 == 6)) | |
162 | 162 | then $acc617191751 | |
163 | 163 | else { | |
164 | 164 | let $acc717191751 = handler1($acc617191751, $list17191751[6]) | |
165 | 165 | if (($size17191751 == 7)) | |
166 | 166 | then $acc717191751 | |
167 | 167 | else { | |
168 | 168 | let $acc817191751 = handler1($acc717191751, $list17191751[7]) | |
169 | 169 | if (($size17191751 == 8)) | |
170 | 170 | then $acc817191751 | |
171 | 171 | else { | |
172 | 172 | let $acc917191751 = handler1($acc817191751, $list17191751[8]) | |
173 | 173 | if (($size17191751 == 9)) | |
174 | 174 | then $acc917191751 | |
175 | 175 | else { | |
176 | 176 | let $acc1017191751 = handler1($acc917191751, $list17191751[9]) | |
177 | 177 | if (($size17191751 == 10)) | |
178 | 178 | then $acc1017191751 | |
179 | 179 | else { | |
180 | 180 | let $acc1117191751 = handler1($acc1017191751, $list17191751[10]) | |
181 | 181 | throw("List size exceed 10") | |
182 | 182 | } | |
183 | 183 | } | |
184 | 184 | } | |
185 | 185 | } | |
186 | 186 | } | |
187 | 187 | } | |
188 | 188 | } | |
189 | 189 | } | |
190 | 190 | } | |
191 | 191 | } | |
192 | 192 | } | |
193 | 193 | } | |
194 | 194 | func handler2 (accum,assetId) = if ((indexOf(ids, assetId) != unit)) | |
195 | 195 | then (accum + 1) | |
196 | 196 | else throw(("asset not attached: " + toBase58String(assetId))) | |
197 | 197 | ||
198 | 198 | let checks = { | |
199 | 199 | let $list19411972 = assetIds | |
200 | 200 | let $size19411972 = size($list19411972) | |
201 | 201 | let $acc019411972 = 0 | |
202 | 202 | if (($size19411972 == 0)) | |
203 | 203 | then $acc019411972 | |
204 | 204 | else { | |
205 | 205 | let $acc119411972 = handler2($acc019411972, $list19411972[0]) | |
206 | 206 | if (($size19411972 == 1)) | |
207 | 207 | then $acc119411972 | |
208 | 208 | else { | |
209 | 209 | let $acc219411972 = handler2($acc119411972, $list19411972[1]) | |
210 | 210 | if (($size19411972 == 2)) | |
211 | 211 | then $acc219411972 | |
212 | 212 | else { | |
213 | 213 | let $acc319411972 = handler2($acc219411972, $list19411972[2]) | |
214 | 214 | if (($size19411972 == 3)) | |
215 | 215 | then $acc319411972 | |
216 | 216 | else { | |
217 | 217 | let $acc419411972 = handler2($acc319411972, $list19411972[3]) | |
218 | 218 | if (($size19411972 == 4)) | |
219 | 219 | then $acc419411972 | |
220 | 220 | else { | |
221 | 221 | let $acc519411972 = handler2($acc419411972, $list19411972[4]) | |
222 | 222 | if (($size19411972 == 5)) | |
223 | 223 | then $acc519411972 | |
224 | 224 | else { | |
225 | 225 | let $acc619411972 = handler2($acc519411972, $list19411972[5]) | |
226 | 226 | if (($size19411972 == 6)) | |
227 | 227 | then $acc619411972 | |
228 | 228 | else { | |
229 | 229 | let $acc719411972 = handler2($acc619411972, $list19411972[6]) | |
230 | 230 | if (($size19411972 == 7)) | |
231 | 231 | then $acc719411972 | |
232 | 232 | else { | |
233 | 233 | let $acc819411972 = handler2($acc719411972, $list19411972[7]) | |
234 | 234 | if (($size19411972 == 8)) | |
235 | 235 | then $acc819411972 | |
236 | 236 | else { | |
237 | 237 | let $acc919411972 = handler2($acc819411972, $list19411972[8]) | |
238 | 238 | if (($size19411972 == 9)) | |
239 | 239 | then $acc919411972 | |
240 | 240 | else { | |
241 | 241 | let $acc1019411972 = handler2($acc919411972, $list19411972[9]) | |
242 | 242 | if (($size19411972 == 10)) | |
243 | 243 | then $acc1019411972 | |
244 | 244 | else { | |
245 | 245 | let $acc1119411972 = handler2($acc1019411972, $list19411972[10]) | |
246 | 246 | throw("List size exceed 10") | |
247 | 247 | } | |
248 | 248 | } | |
249 | 249 | } | |
250 | 250 | } | |
251 | 251 | } | |
252 | 252 | } | |
253 | 253 | } | |
254 | 254 | } | |
255 | 255 | } | |
256 | 256 | } | |
257 | 257 | } | |
258 | 258 | } | |
259 | 259 | true | |
260 | 260 | } | |
261 | 261 | ||
262 | 262 | ||
263 | 263 | func handlePoolTokensAdd (PIssued,payments,userAddress) = { | |
264 | 264 | func getTokenPaymentAmount (tokenId) = { | |
265 | 265 | func handler (accum,payment) = if ((payment.assetId == tokenId)) | |
266 | 266 | then payment.amount | |
267 | 267 | else accum | |
268 | 268 | ||
269 | 269 | let $list22772307 = payments | |
270 | 270 | let $size22772307 = size($list22772307) | |
271 | 271 | let $acc022772307 = 0 | |
272 | 272 | if (($size22772307 == 0)) | |
273 | 273 | then $acc022772307 | |
274 | 274 | else { | |
275 | 275 | let $acc122772307 = handler($acc022772307, $list22772307[0]) | |
276 | 276 | if (($size22772307 == 1)) | |
277 | 277 | then $acc122772307 | |
278 | 278 | else { | |
279 | 279 | let $acc222772307 = handler($acc122772307, $list22772307[1]) | |
280 | 280 | if (($size22772307 == 2)) | |
281 | 281 | then $acc222772307 | |
282 | 282 | else { | |
283 | 283 | let $acc322772307 = handler($acc222772307, $list22772307[2]) | |
284 | 284 | if (($size22772307 == 3)) | |
285 | 285 | then $acc322772307 | |
286 | 286 | else { | |
287 | 287 | let $acc422772307 = handler($acc322772307, $list22772307[3]) | |
288 | 288 | if (($size22772307 == 4)) | |
289 | 289 | then $acc422772307 | |
290 | 290 | else { | |
291 | 291 | let $acc522772307 = handler($acc422772307, $list22772307[4]) | |
292 | 292 | if (($size22772307 == 5)) | |
293 | 293 | then $acc522772307 | |
294 | 294 | else { | |
295 | 295 | let $acc622772307 = handler($acc522772307, $list22772307[5]) | |
296 | 296 | if (($size22772307 == 6)) | |
297 | 297 | then $acc622772307 | |
298 | 298 | else { | |
299 | 299 | let $acc722772307 = handler($acc622772307, $list22772307[6]) | |
300 | 300 | if (($size22772307 == 7)) | |
301 | 301 | then $acc722772307 | |
302 | 302 | else { | |
303 | 303 | let $acc822772307 = handler($acc722772307, $list22772307[7]) | |
304 | 304 | if (($size22772307 == 8)) | |
305 | 305 | then $acc822772307 | |
306 | 306 | else { | |
307 | 307 | let $acc922772307 = handler($acc822772307, $list22772307[8]) | |
308 | 308 | if (($size22772307 == 9)) | |
309 | 309 | then $acc922772307 | |
310 | 310 | else { | |
311 | 311 | let $acc1022772307 = handler($acc922772307, $list22772307[9]) | |
312 | 312 | if (($size22772307 == 10)) | |
313 | 313 | then $acc1022772307 | |
314 | 314 | else { | |
315 | 315 | let $acc1122772307 = handler($acc1022772307, $list22772307[10]) | |
316 | 316 | throw("List size exceed 10") | |
317 | 317 | } | |
318 | 318 | } | |
319 | 319 | } | |
320 | 320 | } | |
321 | 321 | } | |
322 | 322 | } | |
323 | 323 | } | |
324 | 324 | } | |
325 | 325 | } | |
326 | 326 | } | |
327 | 327 | } | |
328 | 328 | } | |
329 | 329 | ||
330 | 330 | func handleTokenChange (accum,tokenId) = { | |
331 | 331 | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
332 | 332 | let PSupply = tryGetInteger("global_poolToken_amount") | |
333 | 333 | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
334 | 334 | let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply) - tokenDecimals), Bk, tokenDecimals) | |
335 | 335 | (accum ++ [IntegerEntry((("global_" + toBase58String(tokenId)) + "_balance"), (Bk + Dk))]) | |
336 | 336 | } | |
337 | 337 | ||
338 | 338 | func handleTokenChange2 (accum,tokenId) = { | |
339 | 339 | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
340 | 340 | let PSupply = tryGetInteger("global_poolToken_amount") | |
341 | 341 | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
342 | 342 | let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply) - tokenDecimals), Bk, tokenDecimals) | |
343 | 343 | let paymentAmount = getTokenPaymentAmount(tokenId) | |
344 | 344 | let toReturn = ((if ((paymentAmount != 0)) | |
345 | 345 | then paymentAmount | |
346 | 346 | else 0) - Dk) | |
347 | 347 | (accum ++ [ScriptTransfer(userAddress, toReturn, tokenId)]) | |
348 | 348 | } | |
349 | 349 | ||
350 | 350 | ({ | |
351 | 351 | let $list35063547 = assetIds | |
352 | 352 | let $size35063547 = size($list35063547) | |
353 | 353 | let $acc035063547 = nil | |
354 | 354 | if (($size35063547 == 0)) | |
355 | 355 | then $acc035063547 | |
356 | 356 | else { | |
357 | 357 | let $acc135063547 = handleTokenChange($acc035063547, $list35063547[0]) | |
358 | 358 | if (($size35063547 == 1)) | |
359 | 359 | then $acc135063547 | |
360 | 360 | else { | |
361 | 361 | let $acc235063547 = handleTokenChange($acc135063547, $list35063547[1]) | |
362 | 362 | if (($size35063547 == 2)) | |
363 | 363 | then $acc235063547 | |
364 | 364 | else { | |
365 | 365 | let $acc335063547 = handleTokenChange($acc235063547, $list35063547[2]) | |
366 | 366 | if (($size35063547 == 3)) | |
367 | 367 | then $acc335063547 | |
368 | 368 | else { | |
369 | 369 | let $acc435063547 = handleTokenChange($acc335063547, $list35063547[3]) | |
370 | 370 | if (($size35063547 == 4)) | |
371 | 371 | then $acc435063547 | |
372 | 372 | else { | |
373 | 373 | let $acc535063547 = handleTokenChange($acc435063547, $list35063547[4]) | |
374 | 374 | if (($size35063547 == 5)) | |
375 | 375 | then $acc535063547 | |
376 | 376 | else { | |
377 | 377 | let $acc635063547 = handleTokenChange($acc535063547, $list35063547[5]) | |
378 | 378 | if (($size35063547 == 6)) | |
379 | 379 | then $acc635063547 | |
380 | 380 | else { | |
381 | 381 | let $acc735063547 = handleTokenChange($acc635063547, $list35063547[6]) | |
382 | 382 | if (($size35063547 == 7)) | |
383 | 383 | then $acc735063547 | |
384 | 384 | else { | |
385 | 385 | let $acc835063547 = handleTokenChange($acc735063547, $list35063547[7]) | |
386 | 386 | if (($size35063547 == 8)) | |
387 | 387 | then $acc835063547 | |
388 | 388 | else { | |
389 | 389 | let $acc935063547 = handleTokenChange($acc835063547, $list35063547[8]) | |
390 | 390 | if (($size35063547 == 9)) | |
391 | 391 | then $acc935063547 | |
392 | 392 | else { | |
393 | 393 | let $acc1035063547 = handleTokenChange($acc935063547, $list35063547[9]) | |
394 | 394 | if (($size35063547 == 10)) | |
395 | 395 | then $acc1035063547 | |
396 | 396 | else { | |
397 | 397 | let $acc1135063547 = handleTokenChange($acc1035063547, $list35063547[10]) | |
398 | 398 | throw("List size exceed 10") | |
399 | 399 | } | |
400 | 400 | } | |
401 | 401 | } | |
402 | 402 | } | |
403 | 403 | } | |
404 | 404 | } | |
405 | 405 | } | |
406 | 406 | } | |
407 | 407 | } | |
408 | 408 | } | |
409 | 409 | } | |
410 | 410 | } ++ { | |
411 | 411 | let $list35543596 = assetIds | |
412 | 412 | let $size35543596 = size($list35543596) | |
413 | 413 | let $acc035543596 = nil | |
414 | 414 | if (($size35543596 == 0)) | |
415 | 415 | then $acc035543596 | |
416 | 416 | else { | |
417 | 417 | let $acc135543596 = handleTokenChange2($acc035543596, $list35543596[0]) | |
418 | 418 | if (($size35543596 == 1)) | |
419 | 419 | then $acc135543596 | |
420 | 420 | else { | |
421 | 421 | let $acc235543596 = handleTokenChange2($acc135543596, $list35543596[1]) | |
422 | 422 | if (($size35543596 == 2)) | |
423 | 423 | then $acc235543596 | |
424 | 424 | else { | |
425 | 425 | let $acc335543596 = handleTokenChange2($acc235543596, $list35543596[2]) | |
426 | 426 | if (($size35543596 == 3)) | |
427 | 427 | then $acc335543596 | |
428 | 428 | else { | |
429 | 429 | let $acc435543596 = handleTokenChange2($acc335543596, $list35543596[3]) | |
430 | 430 | if (($size35543596 == 4)) | |
431 | 431 | then $acc435543596 | |
432 | 432 | else { | |
433 | 433 | let $acc535543596 = handleTokenChange2($acc435543596, $list35543596[4]) | |
434 | 434 | if (($size35543596 == 5)) | |
435 | 435 | then $acc535543596 | |
436 | 436 | else { | |
437 | 437 | let $acc635543596 = handleTokenChange2($acc535543596, $list35543596[5]) | |
438 | 438 | if (($size35543596 == 6)) | |
439 | 439 | then $acc635543596 | |
440 | 440 | else { | |
441 | 441 | let $acc735543596 = handleTokenChange2($acc635543596, $list35543596[6]) | |
442 | 442 | if (($size35543596 == 7)) | |
443 | 443 | then $acc735543596 | |
444 | 444 | else { | |
445 | 445 | let $acc835543596 = handleTokenChange2($acc735543596, $list35543596[7]) | |
446 | 446 | if (($size35543596 == 8)) | |
447 | 447 | then $acc835543596 | |
448 | 448 | else { | |
449 | 449 | let $acc935543596 = handleTokenChange2($acc835543596, $list35543596[8]) | |
450 | 450 | if (($size35543596 == 9)) | |
451 | 451 | then $acc935543596 | |
452 | 452 | else { | |
453 | 453 | let $acc1035543596 = handleTokenChange2($acc935543596, $list35543596[9]) | |
454 | 454 | if (($size35543596 == 10)) | |
455 | 455 | then $acc1035543596 | |
456 | 456 | else { | |
457 | 457 | let $acc1135543596 = handleTokenChange2($acc1035543596, $list35543596[10]) | |
458 | 458 | throw("List size exceed 10") | |
459 | 459 | } | |
460 | 460 | } | |
461 | 461 | } | |
462 | 462 | } | |
463 | 463 | } | |
464 | 464 | } | |
465 | 465 | } | |
466 | 466 | } | |
467 | 467 | } | |
468 | 468 | } | |
469 | 469 | } | |
470 | 470 | }) | |
471 | 471 | } | |
472 | 472 | ||
473 | 473 | ||
474 | + | func handlePoolTokensRedeem (PRedeemed,userAddress) = { | |
475 | + | func handleTokenRedeem (accum,tokenId) = { | |
476 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
477 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
478 | + | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
479 | + | let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply)), Bk, tokenDecimals) | |
480 | + | (accum ++ [IntegerEntry((("global_" + toBase58String(tokenId)) + "_balance"), (Bk - amount))]) | |
481 | + | } | |
482 | + | ||
483 | + | func handleTokenRedeem2 (accum,tokenId) = { | |
484 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
485 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
486 | + | let tokenDecimals = tryGetInteger((("global_" + toBase58String(tokenId)) + "_scale")) | |
487 | + | let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply)), Bk, tokenDecimals) | |
488 | + | (accum ++ [ScriptTransfer(userAddress, amount, tokenId)]) | |
489 | + | } | |
490 | + | ||
491 | + | ({ | |
492 | + | let $list46784719 = assetIds | |
493 | + | let $size46784719 = size($list46784719) | |
494 | + | let $acc046784719 = nil | |
495 | + | if (($size46784719 == 0)) | |
496 | + | then $acc046784719 | |
497 | + | else { | |
498 | + | let $acc146784719 = handleTokenRedeem($acc046784719, $list46784719[0]) | |
499 | + | if (($size46784719 == 1)) | |
500 | + | then $acc146784719 | |
501 | + | else { | |
502 | + | let $acc246784719 = handleTokenRedeem($acc146784719, $list46784719[1]) | |
503 | + | if (($size46784719 == 2)) | |
504 | + | then $acc246784719 | |
505 | + | else { | |
506 | + | let $acc346784719 = handleTokenRedeem($acc246784719, $list46784719[2]) | |
507 | + | if (($size46784719 == 3)) | |
508 | + | then $acc346784719 | |
509 | + | else { | |
510 | + | let $acc446784719 = handleTokenRedeem($acc346784719, $list46784719[3]) | |
511 | + | if (($size46784719 == 4)) | |
512 | + | then $acc446784719 | |
513 | + | else { | |
514 | + | let $acc546784719 = handleTokenRedeem($acc446784719, $list46784719[4]) | |
515 | + | if (($size46784719 == 5)) | |
516 | + | then $acc546784719 | |
517 | + | else { | |
518 | + | let $acc646784719 = handleTokenRedeem($acc546784719, $list46784719[5]) | |
519 | + | if (($size46784719 == 6)) | |
520 | + | then $acc646784719 | |
521 | + | else { | |
522 | + | let $acc746784719 = handleTokenRedeem($acc646784719, $list46784719[6]) | |
523 | + | if (($size46784719 == 7)) | |
524 | + | then $acc746784719 | |
525 | + | else { | |
526 | + | let $acc846784719 = handleTokenRedeem($acc746784719, $list46784719[7]) | |
527 | + | if (($size46784719 == 8)) | |
528 | + | then $acc846784719 | |
529 | + | else { | |
530 | + | let $acc946784719 = handleTokenRedeem($acc846784719, $list46784719[8]) | |
531 | + | if (($size46784719 == 9)) | |
532 | + | then $acc946784719 | |
533 | + | else { | |
534 | + | let $acc1046784719 = handleTokenRedeem($acc946784719, $list46784719[9]) | |
535 | + | if (($size46784719 == 10)) | |
536 | + | then $acc1046784719 | |
537 | + | else { | |
538 | + | let $acc1146784719 = handleTokenRedeem($acc1046784719, $list46784719[10]) | |
539 | + | throw("List size exceed 10") | |
540 | + | } | |
541 | + | } | |
542 | + | } | |
543 | + | } | |
544 | + | } | |
545 | + | } | |
546 | + | } | |
547 | + | } | |
548 | + | } | |
549 | + | } | |
550 | + | } | |
551 | + | } ++ { | |
552 | + | let $list47254767 = assetIds | |
553 | + | let $size47254767 = size($list47254767) | |
554 | + | let $acc047254767 = nil | |
555 | + | if (($size47254767 == 0)) | |
556 | + | then $acc047254767 | |
557 | + | else { | |
558 | + | let $acc147254767 = handleTokenRedeem2($acc047254767, $list47254767[0]) | |
559 | + | if (($size47254767 == 1)) | |
560 | + | then $acc147254767 | |
561 | + | else { | |
562 | + | let $acc247254767 = handleTokenRedeem2($acc147254767, $list47254767[1]) | |
563 | + | if (($size47254767 == 2)) | |
564 | + | then $acc247254767 | |
565 | + | else { | |
566 | + | let $acc347254767 = handleTokenRedeem2($acc247254767, $list47254767[2]) | |
567 | + | if (($size47254767 == 3)) | |
568 | + | then $acc347254767 | |
569 | + | else { | |
570 | + | let $acc447254767 = handleTokenRedeem2($acc347254767, $list47254767[3]) | |
571 | + | if (($size47254767 == 4)) | |
572 | + | then $acc447254767 | |
573 | + | else { | |
574 | + | let $acc547254767 = handleTokenRedeem2($acc447254767, $list47254767[4]) | |
575 | + | if (($size47254767 == 5)) | |
576 | + | then $acc547254767 | |
577 | + | else { | |
578 | + | let $acc647254767 = handleTokenRedeem2($acc547254767, $list47254767[5]) | |
579 | + | if (($size47254767 == 6)) | |
580 | + | then $acc647254767 | |
581 | + | else { | |
582 | + | let $acc747254767 = handleTokenRedeem2($acc647254767, $list47254767[6]) | |
583 | + | if (($size47254767 == 7)) | |
584 | + | then $acc747254767 | |
585 | + | else { | |
586 | + | let $acc847254767 = handleTokenRedeem2($acc747254767, $list47254767[7]) | |
587 | + | if (($size47254767 == 8)) | |
588 | + | then $acc847254767 | |
589 | + | else { | |
590 | + | let $acc947254767 = handleTokenRedeem2($acc847254767, $list47254767[8]) | |
591 | + | if (($size47254767 == 9)) | |
592 | + | then $acc947254767 | |
593 | + | else { | |
594 | + | let $acc1047254767 = handleTokenRedeem2($acc947254767, $list47254767[9]) | |
595 | + | if (($size47254767 == 10)) | |
596 | + | then $acc1047254767 | |
597 | + | else { | |
598 | + | let $acc1147254767 = handleTokenRedeem2($acc1047254767, $list47254767[10]) | |
599 | + | throw("List size exceed 10") | |
600 | + | } | |
601 | + | } | |
602 | + | } | |
603 | + | } | |
604 | + | } | |
605 | + | } | |
606 | + | } | |
607 | + | } | |
608 | + | } | |
609 | + | } | |
610 | + | } | |
611 | + | }) | |
612 | + | } | |
613 | + | ||
614 | + | ||
474 | 615 | func calculateOutAmount (AmountIn,assetIn,assetOut) = { | |
475 | 616 | let IndexIn = value(indexOf(assetIds, assetIn)) | |
476 | 617 | let IndexOut = value(indexOf(assetIds, assetOut)) | |
477 | 618 | let BalanceIn = tryGetInteger((("global_" + toBase58String(assetIn)) + "_balance")) | |
478 | 619 | let BalanceOut = tryGetInteger((("global_" + toBase58String(assetOut)) + "_balance")) | |
479 | 620 | fraction(BalanceOut, (10000 - pow(((BalanceIn * 10000) / (BalanceIn + AmountIn)), 4, fraction(AssetsWeights[IndexIn], 10000, AssetsWeights[IndexOut]), 4, 4, FLOOR)), 10000) | |
480 | 621 | } | |
481 | 622 | ||
482 | 623 | ||
483 | 624 | @Callable(i) | |
484 | 625 | func preInit () = [IntegerEntry((("global_" + toBase58String(assetIds[0])) + "_scale"), Scales[0]), IntegerEntry((("global_" + toBase58String(assetIds[1])) + "_scale"), Scales[1])] | |
485 | 626 | ||
486 | 627 | ||
487 | 628 | ||
488 | 629 | @Callable(i) | |
489 | 630 | func init () = { | |
490 | 631 | func prepareList () = { | |
491 | 632 | func handler (accum,n) = (accum ++ [IntegerEntry((("global_" + toBase58String(value(n.assetId))) + "_amount"), n.amount)]) | |
492 | 633 | ||
493 | - | let $ | |
494 | - | let $ | |
495 | - | let $ | |
496 | - | if (($ | |
497 | - | then $ | |
634 | + | let $list58985931 = i.payments | |
635 | + | let $size58985931 = size($list58985931) | |
636 | + | let $acc058985931 = nil | |
637 | + | if (($size58985931 == 0)) | |
638 | + | then $acc058985931 | |
498 | 639 | else { | |
499 | - | let $ | |
500 | - | if (($ | |
501 | - | then $ | |
640 | + | let $acc158985931 = handler($acc058985931, $list58985931[0]) | |
641 | + | if (($size58985931 == 1)) | |
642 | + | then $acc158985931 | |
502 | 643 | else { | |
503 | - | let $ | |
504 | - | if (($ | |
505 | - | then $ | |
644 | + | let $acc258985931 = handler($acc158985931, $list58985931[1]) | |
645 | + | if (($size58985931 == 2)) | |
646 | + | then $acc258985931 | |
506 | 647 | else { | |
507 | - | let $ | |
508 | - | if (($ | |
509 | - | then $ | |
648 | + | let $acc358985931 = handler($acc258985931, $list58985931[2]) | |
649 | + | if (($size58985931 == 3)) | |
650 | + | then $acc358985931 | |
510 | 651 | else { | |
511 | - | let $ | |
512 | - | if (($ | |
513 | - | then $ | |
652 | + | let $acc458985931 = handler($acc358985931, $list58985931[3]) | |
653 | + | if (($size58985931 == 4)) | |
654 | + | then $acc458985931 | |
514 | 655 | else { | |
515 | - | let $ | |
516 | - | if (($ | |
517 | - | then $ | |
656 | + | let $acc558985931 = handler($acc458985931, $list58985931[4]) | |
657 | + | if (($size58985931 == 5)) | |
658 | + | then $acc558985931 | |
518 | 659 | else { | |
519 | - | let $ | |
520 | - | if (($ | |
521 | - | then $ | |
660 | + | let $acc658985931 = handler($acc558985931, $list58985931[5]) | |
661 | + | if (($size58985931 == 6)) | |
662 | + | then $acc658985931 | |
522 | 663 | else { | |
523 | - | let $ | |
524 | - | if (($ | |
525 | - | then $ | |
664 | + | let $acc758985931 = handler($acc658985931, $list58985931[6]) | |
665 | + | if (($size58985931 == 7)) | |
666 | + | then $acc758985931 | |
526 | 667 | else { | |
527 | - | let $ | |
528 | - | if (($ | |
529 | - | then $ | |
668 | + | let $acc858985931 = handler($acc758985931, $list58985931[7]) | |
669 | + | if (($size58985931 == 8)) | |
670 | + | then $acc858985931 | |
530 | 671 | else { | |
531 | - | let $ | |
532 | - | if (($ | |
533 | - | then $ | |
672 | + | let $acc958985931 = handler($acc858985931, $list58985931[8]) | |
673 | + | if (($size58985931 == 9)) | |
674 | + | then $acc958985931 | |
534 | 675 | else { | |
535 | - | let $ | |
536 | - | if (($ | |
537 | - | then $ | |
676 | + | let $acc1058985931 = handler($acc958985931, $list58985931[9]) | |
677 | + | if (($size58985931 == 10)) | |
678 | + | then $acc1058985931 | |
538 | 679 | else { | |
539 | - | let $ | |
680 | + | let $acc1158985931 = handler($acc1058985931, $list58985931[10]) | |
540 | 681 | throw("List size exceed 10") | |
541 | 682 | } | |
542 | 683 | } | |
543 | 684 | } | |
544 | 685 | } | |
545 | 686 | } | |
546 | 687 | } | |
547 | 688 | } | |
548 | 689 | } | |
549 | 690 | } | |
550 | 691 | } | |
551 | 692 | } | |
552 | 693 | } | |
553 | 694 | ||
554 | 695 | func calculatePoolTokensAmount (payments) = { | |
555 | 696 | func handler (accum,pmt) = { | |
556 | 697 | let assetId = value(pmt.assetId) | |
557 | 698 | func handler2 (accum,n) = if ((n == assetId)) | |
558 | 699 | then value(indexOf(assetIds, n)) | |
559 | 700 | else accum | |
560 | 701 | ||
561 | 702 | let Token = { | |
562 | - | let $ | |
563 | - | let $ | |
564 | - | let $ | |
565 | - | if (($ | |
566 | - | then $ | |
703 | + | let $list62536284 = assetIds | |
704 | + | let $size62536284 = size($list62536284) | |
705 | + | let $acc062536284 = 1 | |
706 | + | if (($size62536284 == 0)) | |
707 | + | then $acc062536284 | |
567 | 708 | else { | |
568 | - | let $ | |
569 | - | if (($ | |
570 | - | then $ | |
709 | + | let $acc162536284 = handler2($acc062536284, $list62536284[0]) | |
710 | + | if (($size62536284 == 1)) | |
711 | + | then $acc162536284 | |
571 | 712 | else { | |
572 | - | let $ | |
573 | - | if (($ | |
574 | - | then $ | |
713 | + | let $acc262536284 = handler2($acc162536284, $list62536284[1]) | |
714 | + | if (($size62536284 == 2)) | |
715 | + | then $acc262536284 | |
575 | 716 | else { | |
576 | - | let $ | |
577 | - | if (($ | |
578 | - | then $ | |
717 | + | let $acc362536284 = handler2($acc262536284, $list62536284[2]) | |
718 | + | if (($size62536284 == 3)) | |
719 | + | then $acc362536284 | |
579 | 720 | else { | |
580 | - | let $ | |
581 | - | if (($ | |
582 | - | then $ | |
721 | + | let $acc462536284 = handler2($acc362536284, $list62536284[3]) | |
722 | + | if (($size62536284 == 4)) | |
723 | + | then $acc462536284 | |
583 | 724 | else { | |
584 | - | let $ | |
585 | - | if (($ | |
586 | - | then $ | |
725 | + | let $acc562536284 = handler2($acc462536284, $list62536284[4]) | |
726 | + | if (($size62536284 == 5)) | |
727 | + | then $acc562536284 | |
587 | 728 | else { | |
588 | - | let $ | |
589 | - | if (($ | |
590 | - | then $ | |
729 | + | let $acc662536284 = handler2($acc562536284, $list62536284[5]) | |
730 | + | if (($size62536284 == 6)) | |
731 | + | then $acc662536284 | |
591 | 732 | else { | |
592 | - | let $ | |
593 | - | if (($ | |
594 | - | then $ | |
733 | + | let $acc762536284 = handler2($acc662536284, $list62536284[6]) | |
734 | + | if (($size62536284 == 7)) | |
735 | + | then $acc762536284 | |
595 | 736 | else { | |
596 | - | let $ | |
597 | - | if (($ | |
598 | - | then $ | |
737 | + | let $acc862536284 = handler2($acc762536284, $list62536284[7]) | |
738 | + | if (($size62536284 == 8)) | |
739 | + | then $acc862536284 | |
599 | 740 | else { | |
600 | - | let $ | |
601 | - | if (($ | |
602 | - | then $ | |
741 | + | let $acc962536284 = handler2($acc862536284, $list62536284[8]) | |
742 | + | if (($size62536284 == 9)) | |
743 | + | then $acc962536284 | |
603 | 744 | else { | |
604 | - | let $ | |
605 | - | if (($ | |
606 | - | then $ | |
745 | + | let $acc1062536284 = handler2($acc962536284, $list62536284[9]) | |
746 | + | if (($size62536284 == 10)) | |
747 | + | then $acc1062536284 | |
607 | 748 | else { | |
608 | - | let $ | |
749 | + | let $acc1162536284 = handler2($acc1062536284, $list62536284[10]) | |
609 | 750 | throw("List size exceed 10") | |
610 | 751 | } | |
611 | 752 | } | |
612 | 753 | } | |
613 | 754 | } | |
614 | 755 | } | |
615 | 756 | } | |
616 | 757 | } | |
617 | 758 | } | |
618 | 759 | } | |
619 | 760 | } | |
620 | 761 | } | |
621 | 762 | } | |
622 | 763 | (accum * pow(pmt.amount, Decimals[Token], AssetsWeights[Token], AssetsWeightsDecimals, PoolTokenDecimals, FLOOR)) | |
623 | 764 | } | |
624 | 765 | ||
625 | - | let $ | |
626 | - | let $ | |
627 | - | let $ | |
628 | - | if (($ | |
629 | - | then $ | |
766 | + | let $list64136443 = payments | |
767 | + | let $size64136443 = size($list64136443) | |
768 | + | let $acc064136443 = 1 | |
769 | + | if (($size64136443 == 0)) | |
770 | + | then $acc064136443 | |
630 | 771 | else { | |
631 | - | let $ | |
632 | - | if (($ | |
633 | - | then $ | |
772 | + | let $acc164136443 = handler($acc064136443, $list64136443[0]) | |
773 | + | if (($size64136443 == 1)) | |
774 | + | then $acc164136443 | |
634 | 775 | else { | |
635 | - | let $ | |
636 | - | if (($ | |
637 | - | then $ | |
776 | + | let $acc264136443 = handler($acc164136443, $list64136443[1]) | |
777 | + | if (($size64136443 == 2)) | |
778 | + | then $acc264136443 | |
638 | 779 | else { | |
639 | - | let $ | |
640 | - | if (($ | |
641 | - | then $ | |
780 | + | let $acc364136443 = handler($acc264136443, $list64136443[2]) | |
781 | + | if (($size64136443 == 3)) | |
782 | + | then $acc364136443 | |
642 | 783 | else { | |
643 | - | let $ | |
644 | - | if (($ | |
645 | - | then $ | |
784 | + | let $acc464136443 = handler($acc364136443, $list64136443[3]) | |
785 | + | if (($size64136443 == 4)) | |
786 | + | then $acc464136443 | |
646 | 787 | else { | |
647 | - | let $ | |
648 | - | if (($ | |
649 | - | then $ | |
788 | + | let $acc564136443 = handler($acc464136443, $list64136443[4]) | |
789 | + | if (($size64136443 == 5)) | |
790 | + | then $acc564136443 | |
650 | 791 | else { | |
651 | - | let $ | |
652 | - | if (($ | |
653 | - | then $ | |
792 | + | let $acc664136443 = handler($acc564136443, $list64136443[5]) | |
793 | + | if (($size64136443 == 6)) | |
794 | + | then $acc664136443 | |
654 | 795 | else { | |
655 | - | let $ | |
656 | - | if (($ | |
657 | - | then $ | |
796 | + | let $acc764136443 = handler($acc664136443, $list64136443[6]) | |
797 | + | if (($size64136443 == 7)) | |
798 | + | then $acc764136443 | |
658 | 799 | else { | |
659 | - | let $ | |
660 | - | if (($ | |
661 | - | then $ | |
800 | + | let $acc864136443 = handler($acc764136443, $list64136443[7]) | |
801 | + | if (($size64136443 == 8)) | |
802 | + | then $acc864136443 | |
662 | 803 | else { | |
663 | - | let $ | |
664 | - | if (($ | |
665 | - | then $ | |
804 | + | let $acc964136443 = handler($acc864136443, $list64136443[8]) | |
805 | + | if (($size64136443 == 9)) | |
806 | + | then $acc964136443 | |
666 | 807 | else { | |
667 | - | let $ | |
668 | - | if (($ | |
669 | - | then $ | |
808 | + | let $acc1064136443 = handler($acc964136443, $list64136443[9]) | |
809 | + | if (($size64136443 == 10)) | |
810 | + | then $acc1064136443 | |
670 | 811 | else { | |
671 | - | let $ | |
812 | + | let $acc1164136443 = handler($acc1064136443, $list64136443[10]) | |
672 | 813 | throw("List size exceed 10") | |
673 | 814 | } | |
674 | 815 | } | |
675 | 816 | } | |
676 | 817 | } | |
677 | 818 | } | |
678 | 819 | } | |
679 | 820 | } | |
680 | 821 | } | |
681 | 822 | } | |
682 | 823 | } | |
683 | 824 | } | |
684 | 825 | } | |
685 | 826 | ||
686 | 827 | if ((tryGetInteger("global_wasInited") > 1)) | |
687 | 828 | then throw("pool already inited") | |
688 | 829 | else { | |
689 | 830 | let initialPoolTokens = calculatePoolTokensAmount(i.payments) | |
690 | 831 | let poolTokenId = getBinaryValue(this, "global_poolToken_id") | |
691 | 832 | let poolTokenReissue = Reissue(poolTokenId, initialPoolTokens, true) | |
692 | 833 | (prepareList() ++ [poolTokenReissue, IntegerEntry("global_poolToken_amount", initialPoolTokens), BinaryEntry("global_poolToken_id", poolTokenId), ScriptTransfer(i.caller, initialPoolTokens, poolTokenId)]) | |
693 | 834 | } | |
694 | 835 | } | |
695 | 836 | ||
696 | 837 | ||
697 | 838 | ||
698 | 839 | @Callable(i) | |
699 | 840 | func addLiquidity () = if ((size(i.payments) != T)) | |
700 | 841 | then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(T))) | |
701 | 842 | else if (!(checkTokensValidity(i.payments))) | |
702 | 843 | then throw("wrong assets attached") | |
703 | 844 | else { | |
704 | 845 | let PIssued = getMinPIssued(i.payments) | |
705 | 846 | let result = handlePoolTokensAdd(PIssued, i.payments, i.caller) | |
706 | 847 | let reissue = Reissue(tryGetBinary("global_poolToken_id"), PIssued, true) | |
707 | 848 | (result ++ [reissue, ScriptTransfer(i.caller, PIssued, tryGetBinary("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") + PIssued))]) | |
708 | 849 | } | |
709 | 850 | ||
710 | 851 | ||
711 | 852 | ||
712 | 853 | @Callable(i) | |
713 | - | func removeLiquidity () = nil | |
854 | + | func removeLiquidity () = { | |
855 | + | let pmt = i.payments[0] | |
856 | + | if ((pmt.assetId != tryGetBinary("global_poolToken_id"))) | |
857 | + | then throw("please attach pool share token") | |
858 | + | else { | |
859 | + | let PRedeemed = pmt.amount | |
860 | + | let result = handlePoolTokensRedeem(PRedeemed, i.caller) | |
861 | + | (result ++ [Burn(tryGetBinary("global_poolToken_id"), PRedeemed), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") - PRedeemed))]) | |
862 | + | } | |
863 | + | } | |
714 | 864 | ||
715 | 865 | ||
716 | 866 | ||
717 | 867 | @Callable(i) | |
718 | 868 | func swap (assetOut,minimum) = { | |
719 | 869 | let pmt = value(i.payments[0]) | |
720 | 870 | let AmountIn = value(i.payments[0].amount) | |
721 | 871 | let AssetIn = value(pmt.assetId) | |
722 | 872 | let AssetOut = fromBase58String(assetOut) | |
723 | 873 | let AmountOut = calculateOutAmount(AmountIn, AssetIn, AssetOut) | |
724 | 874 | if ((minimum > AmountOut)) | |
725 | 875 | then throw(("amount to recieve it lower than given one: " + toString(AmountOut))) | |
726 | 876 | else if ((0 > (tryGetInteger((("global_" + toBase58String(AssetOut)) + "_balance")) - AmountOut))) | |
727 | 877 | then throw("contract is out of reserves") | |
728 | 878 | else [IntegerEntry((("global_" + toBase58String(AssetOut)) + "_balance"), (tryGetInteger((("global_" + toBase58String(AssetOut)) + "_balance")) - AmountOut)), IntegerEntry((("global_" + toBase58String(AssetIn)) + "_balance"), (tryGetInteger((("global_" + toBase58String(AssetIn)) + "_balance")) + AmountIn)), ScriptTransfer(i.caller, AmountOut, AssetOut)] | |
729 | 879 | } | |
730 | 880 | ||
731 | 881 | ||
732 | 882 | @Verifier(tx) | |
733 | 883 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
734 | 884 |
github/deemru/w8io/3ef1775 211.32 ms ◑