2021.09.17 19:17 [2772195] smart account 3PBns59bMvZXnWnsxgtL3oPCujBtTB2PPBc > SELF 0.00000000 Waves
{ "type": 13, "id": "ApdXPS4ZCtM2iVTiaMoBcpha7yrcgwjpyNxv7Y9zCJJx", "fee": 1000000, "feeAssetId": null, "timestamp": 1631895437907, "version": 2, "chainId": 87, "sender": "3PBns59bMvZXnWnsxgtL3oPCujBtTB2PPBc", "senderPublicKey": "2A4wibqMQzyx8jGiLhvPu2mVtnghPGTAuCVPg8JBJvk9", "proofs": [ "kYgUCTXumzvcmsnmHFJYNMy5VeUHtSuYHKc6c4wRVocAnRLadsU9C1t9i3fwJWHXLFUpAyf1o6noCVXXS2jo5SW" ], "script": "base64:AAIFAAAAAAAAABAIAhIAEgASABIAEgQKAggBAAAAFAAAAAABVAAAAAAAAAAAAgAAAAAIYXNzZXRJZHMJAARMAAAAAgEAAAAgpspUmHPcWVP6FPnnTQyyn4Yy8p9KHAWQMpXaTlJMpNQJAARMAAAAAgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEFAAAAA25pbAAAAAANQXNzZXRzV2VpZ2h0cwkABEwAAAACAAAAAAAAAABQCQAETAAAAAIAAAAAAAAAABQFAAAAA25pbAAAAAAVQXNzZXRzV2VpZ2h0c0RlY2ltYWxzAAAAAAAAAAACAAAAABFQb29sVG9rZW5EZWNpbWFscwAAAAAAAAAACAAAAAAIRGVjaW1hbHMJAARMAAAAAgAAAAAAAAAACAkABEwAAAACAAAAAAAAAAAGBQAAAANuaWwAAAAABlNjYWxlcwkABEwAAAACAAAAAAAF9eEACQAETAAAAAIAAAAAAAAPQkAFAAAAA25pbAAAAAADRmVlAAAAAAAAAADIAAAAAAVTY2FsZQAAAAAAAAAnEAAAAAAIRmVlU2NhbGUAAAAAAAAAJxAAAAAADWZlZUFnZ3JlZ2F0b3IJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVdLw2zO+zNYQ1hDURDu7+4hEBdL8njLfDIBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAMdHJ5R2V0QmluYXJ5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQcAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAQAAAAABAAAAFmdldEN1cnJlbnRUb2tlbkJhbGFuY2UAAAABAAAACXRva2VuVHlwZQQAAAAHdG9rZW5JZAkAAlgAAAABCQABkQAAAAIFAAAACGFzc2V0SWRzBQAAAAl0b2tlblR5cGUJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8FAAAAB3Rva2VuSWQCAAAACF9iYWxhbmNlAQAAABBjYWxjdWxhdGVQSXNzdWVkAAAAAgAAAAZhbW91bnQAAAAHdG9rZW5JZAQAAAAHUHN1cHBseQkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAQAAAAHQmFsYW5jZQkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHZ2xvYmFsXwkAAlgAAAABBQAAAAd0b2tlbklkAgAAAAhfYmFsYW5jZQkAAGsAAAADBQAAAAZhbW91bnQFAAAAB1BzdXBwbHkFAAAAB0JhbGFuY2UBAAAADWdldE1pblBJc3N1ZWQAAAABAAAACHBheW1lbnRzCgEAAAAHaGFuZGxlcgAAAAIAAAAFYWNjdW0AAAAHY3VycmVudAQAAAAHUElzc3VlZAkBAAAAEGNhbGN1bGF0ZVBJc3N1ZWQAAAACCAUAAAAHY3VycmVudAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdjdXJyZW50AAAAB2Fzc2V0SWQDAwkAAAAAAAACBQAAAAVhY2N1bQAAAAAAAAAAAAYJAABmAAAAAgUAAAAFYWNjdW0FAAAAB1BJc3N1ZWQFAAAAB1BJc3N1ZWQFAAAABWFjY3VtBAAAAAltaW5QSXNzZWQEAAAADSRsaXN0MTQ3MzE1MDMFAAAACHBheW1lbnRzBAAAAA0kc2l6ZTE0NzMxNTAzCQABkAAAAAEFAAAADSRsaXN0MTQ3MzE1MDMEAAAADSRhY2MwMTQ3MzE1MDMAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMTQ3MzE1MDMAAAAAAAAAAAAFAAAADSRhY2MwMTQ3MzE1MDMEAAAADSRhY2MxMTQ3MzE1MDMJAQAAAAdoYW5kbGVyAAAAAgUAAAANJGFjYzAxNDczMTUwMwkAAZEAAAACBQAAAA0kbGlzdDE0NzMxNTAzAAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTE0NzMxNTAzAAAAAAAAAAABBQAAAA0kYWNjMTE0NzMxNTAzBAAAAA0kYWNjMjE0NzMxNTAzCQEAAAAHaGFuZGxlcgAAAAIFAAAA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MAkAAZEAAAACBQAAAA0kbGlzdDE5MjkxOTYwAAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTE5MjkxOTYwAAAAAAAAAAAHBQAAAA0kYWNjNzE5MjkxOTYwBAAAAA0kYWNjODE5MjkxOTYwCQEAAAAIaGFuZGxlcjIAAAACBQAAAA0kYWNjNzE5MjkxOTYwCQABkQAAAAIFAAAADSRsaXN0MTkyOTE5NjAAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMTkyOTE5NjAAAAAAAAAAAAgFAAAADSRhY2M4MTkyOTE5NjAEAAAADSRhY2M5MTkyOTE5NjAJAQAAAAhoYW5kbGVyMgAAAAIFAAAADSRhY2M4MTkyOTE5NjAJAAGRAAAAAgUAAAANJGxpc3QxOTI5MTk2MAAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemUxOTI5MTk2MAAAAAAAAAAACQUAAAANJGFjYzkxOTI5MTk2MAQAAAAOJGFjYzEwMTkyOTE5NjAJAQAAAAhoYW5kbGVyMgAAAAIFAAAADSRhY2M5MTkyOTE5NjAJAAGRAAAAAgUAAAANJGxpc3QxOTI5MTk2MAAAAAAAAAAACQMJAAAAAAAAAgUAAAANJHNpemUxOTI5MTk2MAAAAAAAAAAACgUAAAAOJGFjYzEwMTkyOTE5NjAEAAAADiRhY2MxMTE5MjkxOTYwCQEAAAAIaGFuZGxlcjIAAAACBQAAAA4kYWNjMTAxOTI5MTk2MAkAAZEAAAACBQAAAA0kbGlzdDE5MjkxOTYwAAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAGAQAAABNoYW5kbGVQb29sVG9rZW5zQWRkAAAAAwAAAAdQSXNzdWVkAAAACHBheW1lbnRzAAAAC3VzZXJBZGRyZXNzCgEAAAAVZ2V0VG9rZW5QYXltZW50QW1vdW50AAAAAQAAAAd0b2tlbklkCgEAAAAHaGFuZGxlcgAAAAIAAAAFYWNjdW0AAAAHcGF5bWVudAMJAAAAAAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAHdG9rZW5JZAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAVhY2N1bQQAAAANJGxpc3QyMjY1MjI5NQUAAAAIcGF5bWVudHME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AgUAAAANJGFjYzMzNDk0MzUzNQkAAZEAAAACBQAAAA0kbGlzdDM0OTQzNTM1AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTM0OTQzNTM1AAAAAAAAAAAEBQAAAA0kYWNjNDM0OTQzNTM1BAAAAA0kYWNjNTM0OTQzNTM1CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA0kYWNjNDM0OTQzNTM1CQABkQAAAAIFAAAADSRsaXN0MzQ5NDM1MzUAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMzQ5NDM1MzUAAAAAAAAAAAUFAAAADSRhY2M1MzQ5NDM1MzUEAAAADSRhY2M2MzQ5NDM1MzUJAQAAABFoYW5kbGVUb2tlbkNoYW5nZQAAAAIFAAAADSRhY2M1MzQ5NDM1MzUJAAGRAAAAAgUAAAANJGxpc3QzNDk0MzUzNQAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemUzNDk0MzUzNQAAAAAAAAAABgUAAAANJGFjYzYzNDk0MzUzNQQAAAANJGFjYzczNDk0MzUzNQkBAAAAEWhhbmRsZVRva2VuQ2hhbmdlAAAAAgUAAAANJGFjYzYzNDk0MzUzNQkAAZEAAAACBQAAAA0kbGlzdDM0OTQzNTM1AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTM0OTQzNTM1AAAAAAAAAAAHBQAAAA0kYWNjNzM0OTQzNTM1BAAAAA0kYWNjODM0OTQzNTM1CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA0kYWNjNzM0OTQzNTM1CQABkQAAAAIFAAAADSRsaXN0MzQ5NDM1MzUAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMzQ5NDM1MzUAAAAAAAAAAAgFAAAADSRhY2M4MzQ5NDM1MzUEAAAADSRhY2M5MzQ5NDM1MzUJAQAAABFoYW5kbGVUb2tlbkNoYW5nZQAAAAIFAAAADSRhY2M4MzQ5NDM1MzUJAAGRAAAAAgUAAAANJGxpc3QzNDk0MzUzNQAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemUzNDk0MzUzNQAAAAAAAAAACQUAAAANJGFjYzkzNDk0MzUzNQQAAAAOJGFjYzEwMzQ5NDM1MzUJAQAAABFoYW5kbGVUb2tlbkNoYW5nZQAAAAIFAAAADSRhY2M5MzQ5NDM1MzUJAAGRAAAAAgUAAAANJGxpc3QzNDk0MzUzNQAAAAAAAAAACQMJAAAAAAAAAgUAAAANJHNpemUzNDk0MzUzNQAAAAAAAAAACgUAAAAOJGFjYzEwMzQ5NDM1MzUEAAAADiRhY2MxMTM0OTQzNTM1CQEAAAARaGFuZGxlVG9rZW5DaGFuZ2UAAAACBQAAAA4kYWNjMTAzNDk0MzUzNQkAAZEAAAACBQAAAA0kbGlzdDM0OTQzNTM1AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAADSRsaXN0MzU0MjM1ODQFAAAACGFzc2V0SWRzBAAAAA0kc2l6ZTM1NDIzNTg0CQABkAAAAAEFAAAADSRsaXN0MzU0MjM1ODQEAAAADSRhY2MwMzU0MjM1ODQFAAAAA25pbAMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAAAAUAAAANJGFjYzAzNTQyMzU4NAQAAAANJGFjYzEzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2MwMzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAAAQUAAAANJGFjYzEzNTQyMzU4NAQAAAANJGFjYzIzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2MxMzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAAAgUAAAANJGFjYzIzNTQyMzU4NAQAAAANJGFjYzMzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2MyMzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAAAwUAAAANJGFjYzMzNTQyMzU4NAQAAAANJGFjYzQzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2MzMzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAABAUAAAANJGFjYzQzNTQyMzU4NAQAAAANJGFjYzUzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2M0MzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAABQUAAAANJGFjYzUzNTQyMzU4NAQAAAANJGFjYzYzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2M1MzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAABgUAAAANJGFjYzYzNTQyMzU4NAQAAAANJGFjYzczNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2M2MzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAABwUAAAANJGFjYzczNTQyMzU4NAQAAAANJGFjYzgzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2M3MzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAACAUAAAANJGFjYzgzNTQyMzU4NAQAAAANJGFjYzkzNTQyMzU4NAkBAAAAEmhhbmRsZVRva2VuQ2hhbmdlMgAAAAIFAAAADSRhY2M4MzU0MjM1ODQJAAGRAAAAAgUAAAANJGxpc3QzNTQyMzU4NAAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemUzNTQyMzU4NAAAAAAAAAAACQUAAAANJGFjYzkzNTQyMzU4NAQAAAAOJGFjYzEwMzU0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YW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADSRhY2MxNDY2NjQ3MDcJAAGRAAAAAgUAAAANJGxpc3Q0NjY2NDcwNwAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU0NjY2NDcwNwAAAAAAAAAAAgUAAAANJGFjYzI0NjY2NDcwNwQAAAANJGFjYzM0NjY2NDcwNwkBAAAAEWhhbmRsZVRva2VuUmVkZWVtAAAAAgUAAAANJGFjYzI0NjY2NDcwNwkAAZEAAAACBQAAAA0kbGlzdDQ2NjY0NzA3AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTQ2NjY0NzA3AAAAAAAAAAADBQAAAA0kYWNjMzQ2NjY0NzA3BAAAAA0kYWNjNDQ2NjY0NzA3CQEAAAARaGFuZGxlVG9rZW5SZWRlZW0AAAACBQAAAA0kYWNjMzQ2NjY0NzA3CQABkQAAAAIFAAAADSRsaXN0NDY2NjQ3MDcAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplNDY2NjQ3MDcAAAAAAAAAAAQFAAAADSRhY2M0NDY2NjQ3MDcEAAAADSRhY2M1NDY2NjQ3MDcJAQAAABFoYW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADSRhY2M0NDY2NjQ3MDcJAAGRAAAAAgUAAAANJGxpc3Q0NjY2NDcwNwAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU0NjY2NDcwNwAAAAAAAAAABQUAAAANJGFjYzU0NjY2NDcwNwQAAAANJGFjYzY0NjY2NDcwNwkBAAAAEWhhbmRsZVRva2VuUmVkZWVtAAAAAgUAAAANJGFjYzU0NjY2NDcwNwkAAZEAAAACBQAAAA0kbGlzdDQ2NjY0NzA3AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTQ2NjY0NzA3AAAAAAAAAAAGBQAAAA0kYWNjNjQ2NjY0NzA3BAAAAA0kYWNjNzQ2NjY0NzA3CQEAAAARaGFuZGxlVG9rZW5SZWRlZW0AAAACBQAAAA0kYWNjNjQ2NjY0NzA3CQABkQAAAAIFAAAADSRsaXN0NDY2NjQ3MDcAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplNDY2NjQ3MDcAAAAAAAAAAAcFAAAADSRhY2M3NDY2NjQ3MDcEAAAADSRhY2M4NDY2NjQ3MDcJAQAAABFoYW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADSRhY2M3NDY2NjQ3MDcJAAGRAAAAAgUAAAANJGxpc3Q0NjY2NDcwNwAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU0NjY2NDcwNwAAAAAAAAAACAUAAAANJGFjYzg0NjY2NDcwNwQAAAANJGFjYzk0NjY2NDcwNwkBAAAAEWhhbmRsZVRva2VuUmVkZWVtAAAAAgUAAAANJGFjYzg0NjY2NDcwNwkAAZEAAAACBQAAAA0kbGlzdDQ2NjY0NzA3AAAAAAAAAAAIAwkAAAAAAAACBQAAAA0kc2l6ZTQ2NjY0NzA3AAAAAAAAAAAJBQAAAA0kYWNjOTQ2NjY0NzA3BAAAAA4kYWNjMTA0NjY2NDcwNwkBAAAAEWhhbmRsZVRva2VuUmVkZWVtAAAAAgUAAAANJGFjYzk0NjY2NDcwNwkAAZEAAAACBQAAAA0kbGlzdDQ2NjY0NzA3AAAAAAAAAAAJAwkAAAAAAAACBQAAAA0kc2l6ZTQ2NjY0NzA3AAAAAAAAAAAKBQAAAA4kYWNjMTA0NjY2NDcwNwQAAAAOJGFjYzExNDY2NjQ3MDcJAQAAABFoYW5kbGVUb2tlblJlZGVlbQAAAAIFAAAADiRhY2MxMDQ2NjY0NzA3CQABkQAAAAIFAAAADSRsaXN0NDY2NjQ3MDcAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAANJGxpc3Q0NzEzNDc1NQUAAAAIYXNzZXRJZHMEAAAADSRzaXplNDcxMzQ3NTUJAAGQAAAAAQUAAAANJGxpc3Q0NzEzNDc1NQQAAAANJGFjYzA0NzEzNDc1NQUAAAADbmlsAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAABQAAAA0kYWNjMDQ3MTM0NzU1BAAAAA0kYWNjMTQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzA0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAABBQAAAA0kYWNjMTQ3MTM0NzU1BAAAAA0kYWNjMjQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzE0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAACBQAAAA0kYWNjMjQ3MTM0NzU1BAAAAA0kYWNjMzQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzI0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAADBQAAAA0kYWNjMzQ3MTM0NzU1BAAAAA0kYWNjNDQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzM0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAEBQAAAA0kYWNjNDQ3MTM0NzU1BAAAAA0kYWNjNTQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzQ0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAFBQAAAA0kYWNjNTQ3MTM0NzU1BAAAAA0kYWNjNjQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzU0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAGBQAAAA0kYWNjNjQ3MTM0NzU1BAAAAA0kYWNjNzQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzY0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAHBQAAAA0kYWNjNzQ3MTM0NzU1BAAAAA0kYWNjODQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzc0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAIBQAAAA0kYWNjODQ3MTM0NzU1BAAAAA0kYWNjOTQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAANJGFjYzg0NzEzNDc1NQkAAZEAAAACBQAAAA0kbGlzdDQ3MTM0NzU1AAAAAAAAAAAIAwkAAAAAAAACBQAAAA0kc2l6ZTQ3MTM0NzU1AAAAAAAAAAAJBQAAAA0kYWNjOTQ3MTM0NzU1BAAAAA4kYWNjMTA0NzEzNDc1NQkBAAAAEmhhbmRsZVRva2VuUmVkZWVtMgAAAAIFAAAADSRhY2M5NDcxMzQ3NTUJAAGRAAAAAgUAAAANJGxpc3Q0NzEzNDc1NQAAAAAAAAAACQMJAAAAAAAAAgUAAAANJHNpemU0NzEzNDc1NQAAAAAAAAAACgUAAAAOJGFjYzEwNDcxMzQ3NTUEAAAADiRhY2MxMTQ3MTM0NzU1CQEAAAASaGFuZGxlVG9rZW5SZWRlZW0yAAAAAgUAAAAOJGFjYzEwNDcxMzQ3NTUJAAGRAAAAAgUAAAANJGxpc3Q0NzEzNDc1NQAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwAQAAABJjYWxjdWxhdGVPdXRBbW91bnQAAAADAAAACEFtb3VudEluAAAAB2Fzc2V0SW4AAAAIYXNzZXRPdXQEAAAAB0luZGV4SW4JAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAIYXNzZXRJZHMFAAAAB2Fzc2V0SW4EAAAACEluZGV4T3V0CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAhhc3NldE91dAQAAAAJQmFsYW5jZUluCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQACWAAAAAEFAAAAB2Fzc2V0SW4CAAAACF9iYWxhbmNlBAAAAApCYWxhbmNlT3V0CQEAAAAN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AQAAAAdoYW5kbGVyAAAAAgUAAAAOJGFjYzEwNjQwMTY0MzEJAAGRAAAAAgUAAAANJGxpc3Q2NDAxNjQzMQAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEGdsb2JhbF93YXNJbml0ZWQAAAAAAAAAAAAJAAACAAAAAQIAAAATcG9vbCBhbHJlYWR5IGluaXRlZAQAAAARaW5pdGlhbFBvb2xUb2tlbnMJAQAAABljYWxjdWxhdGVQb29sVG9rZW5zQW1vdW50AAAAAQgFAAAAAWkAAAAIcGF5bWVudHMEAAAADnBvb2xUb2tlbklzc3VlCQAEQwAAAAcCAAAAB1B1enpsZTICAAAAFlB1enpsZSBTd2FwIFBvb2wgVG9rZW4FAAAAEWluaXRpYWxQb29sVG9rZW5zBQAAABFQb29sVG9rZW5EZWNpbWFscwYFAAAABHVuaXQAAAAAAAAAAAAEAAAAC3Bvb2xUb2tlbklkCQAEOAAAAAEFAAAADnBvb2xUb2tlbklzc3VlCQAETgAAAAIJAQAAAAtwcmVwYXJlTGlzdAAAAAAJAARMAAAAAgUAAAAOcG9vbFRva2VuSXNzdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BQAAABFpbml0aWFsUG9vbFRva2VucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQZ2xvYmFsX3dhc0luaXRlZAAAAAAAAAAAAQkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAAtwb29sVG9rZW5JZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEWluaXRpYWxQb29sVG9rZW5zBQAAAAtwb29sVG9rZW5JZAUAAAADbmlsAAAAAWkBAAAADGFkZExpcXVpZGl0eQAAAAADCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzBQAAAAFUCQAAAgAAAAEJAAEsAAAAAgIAAAA7eW91IG5lZWQgdG8gYXR0YWNoIGFsbCBwb29sIHRva2Vucy4gYW1vdW50IG9mIHBvb2wgdG9rZW5zOiAJAAGkAAAAAQUAAAABVAMJAQAAAAEhAAAAAQkBAAAAE2NoZWNrVG9rZW5zVmFsaWRpdHkAAAABCAUAAAABaQAAAAhwYXltZW50cwkAAAIAAAABAgAAABV3cm9uZyBhc3NldHMgYXR0YWNoZWQEAAAAB1BJc3N1ZWQJAQAAAA1nZXRNaW5QSXNzdWVkAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMEAAAABnJlc3VsdAkBAAAAE2hhbmRsZVBvb2xUb2tlbnNBZGQAAAADBQAAAAdQSXNzdWVkCAUAAAABaQAAAAhwYXltZW50cwgFAAAAAWkAAAAGY2FsbGVyBAAAAAdyZWlzc3VlCQEAAAAHUmVpc3N1ZQAAAAMJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkBQAAAAdQSXNzdWVkBgkABE4AAAACBQAAAAZyZXN1bHQJAARMAAAAAgUAAAAHcmVpc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAB1BJc3N1ZWQJAQAAAAx0cnlHZXRCaW5hcnkAAAABAgAAABNnbG9iYWxfcG9vbFRva2VuX2lkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BQAAAAdQSXNzdWVkBQAAAANuaWwAAAABaQEAAAAPcmVtb3ZlTGlxdWlkaXR5AAAAAAQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkCQEAAAAMdHJ5R2V0QmluYXJ5AAAAAQIAAAATZ2xvYmFsX3Bvb2xUb2tlbl9pZAkAAAIAAAABAgAAAB5wbGVhc2UgYXR0YWNoIHBvb2wgc2hhcmUgdG9rZW4EAAAACVBSZWRlZW1lZAgFAAAAA3BtdAAAAAZh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", "height": 2772195, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: D9M9i7yfZsdhQACEiow3mZZSywyqmTXEiiYfBpuZuwaW Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let T = 2 | |
5 | + | ||
6 | + | let assetIds = [base58'CE5cxMvz7865CyFZPFUmDiL4KRkYXP6b6oYgN3vmWdV5', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'] | |
7 | + | ||
8 | + | let AssetsWeights = [80, 20] | |
9 | + | ||
10 | + | let AssetsWeightsDecimals = 2 | |
11 | + | ||
12 | + | let PoolTokenDecimals = 8 | |
13 | + | ||
14 | + | let Decimals = [8, 6] | |
15 | + | ||
16 | + | let Scales = [100000000, 1000000] | |
17 | + | ||
18 | + | let Fee = 200 | |
19 | + | ||
20 | + | let Scale = 10000 | |
21 | + | ||
22 | + | let FeeScale = 10000 | |
23 | + | ||
24 | + | let feeAggregator = Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd') | |
25 | + | ||
26 | + | func tryGetInteger (key) = match getInteger(this, key) { | |
27 | + | case b: Int => | |
28 | + | b | |
29 | + | case _ => | |
30 | + | 0 | |
31 | + | } | |
32 | + | ||
33 | + | ||
34 | + | func tryGetBinary (key) = match getBinary(this, key) { | |
35 | + | case b: ByteVector => | |
36 | + | b | |
37 | + | case _ => | |
38 | + | base58'' | |
39 | + | } | |
40 | + | ||
41 | + | ||
42 | + | func getCurrentTokenBalance (tokenType) = { | |
43 | + | let tokenId = toBase58String(assetIds[tokenType]) | |
44 | + | tryGetInteger((("global_" + tokenId) + "_balance")) | |
45 | + | } | |
46 | + | ||
47 | + | ||
48 | + | func calculatePIssued (amount,tokenId) = { | |
49 | + | let Psupply = tryGetInteger("global_poolToken_amount") | |
50 | + | let Balance = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
51 | + | fraction(amount, Psupply, Balance) | |
52 | + | } | |
53 | + | ||
54 | + | ||
55 | + | func getMinPIssued (payments) = { | |
56 | + | func handler (accum,current) = { | |
57 | + | let PIssued = calculatePIssued(current.amount, value(current.assetId)) | |
58 | + | if (if ((accum == 0)) | |
59 | + | then true | |
60 | + | else (accum > PIssued)) | |
61 | + | then PIssued | |
62 | + | else accum | |
63 | + | } | |
64 | + | ||
65 | + | let minPIssed = { | |
66 | + | let $list14731503 = payments | |
67 | + | let $size14731503 = size($list14731503) | |
68 | + | let $acc014731503 = 0 | |
69 | + | if (($size14731503 == 0)) | |
70 | + | then $acc014731503 | |
71 | + | else { | |
72 | + | let $acc114731503 = handler($acc014731503, $list14731503[0]) | |
73 | + | if (($size14731503 == 1)) | |
74 | + | then $acc114731503 | |
75 | + | else { | |
76 | + | let $acc214731503 = handler($acc114731503, $list14731503[1]) | |
77 | + | if (($size14731503 == 2)) | |
78 | + | then $acc214731503 | |
79 | + | else { | |
80 | + | let $acc314731503 = handler($acc214731503, $list14731503[2]) | |
81 | + | if (($size14731503 == 3)) | |
82 | + | then $acc314731503 | |
83 | + | else { | |
84 | + | let $acc414731503 = handler($acc314731503, $list14731503[3]) | |
85 | + | if (($size14731503 == 4)) | |
86 | + | then $acc414731503 | |
87 | + | else { | |
88 | + | let $acc514731503 = handler($acc414731503, $list14731503[4]) | |
89 | + | if (($size14731503 == 5)) | |
90 | + | then $acc514731503 | |
91 | + | else { | |
92 | + | let $acc614731503 = handler($acc514731503, $list14731503[5]) | |
93 | + | if (($size14731503 == 6)) | |
94 | + | then $acc614731503 | |
95 | + | else { | |
96 | + | let $acc714731503 = handler($acc614731503, $list14731503[6]) | |
97 | + | if (($size14731503 == 7)) | |
98 | + | then $acc714731503 | |
99 | + | else { | |
100 | + | let $acc814731503 = handler($acc714731503, $list14731503[7]) | |
101 | + | if (($size14731503 == 8)) | |
102 | + | then $acc814731503 | |
103 | + | else { | |
104 | + | let $acc914731503 = handler($acc814731503, $list14731503[8]) | |
105 | + | if (($size14731503 == 9)) | |
106 | + | then $acc914731503 | |
107 | + | else { | |
108 | + | let $acc1014731503 = handler($acc914731503, $list14731503[9]) | |
109 | + | if (($size14731503 == 10)) | |
110 | + | then $acc1014731503 | |
111 | + | else { | |
112 | + | let $acc1114731503 = handler($acc1014731503, $list14731503[10]) | |
113 | + | throw("List size exceed 10") | |
114 | + | } | |
115 | + | } | |
116 | + | } | |
117 | + | } | |
118 | + | } | |
119 | + | } | |
120 | + | } | |
121 | + | } | |
122 | + | } | |
123 | + | } | |
124 | + | } | |
125 | + | } | |
126 | + | minPIssed | |
127 | + | } | |
128 | + | ||
129 | + | ||
130 | + | func checkTokensValidity (payments) = { | |
131 | + | func handler1 (accum,payment) = (accum ++ [value(payment.assetId)]) | |
132 | + | ||
133 | + | let ids = { | |
134 | + | let $list17071739 = payments | |
135 | + | let $size17071739 = size($list17071739) | |
136 | + | let $acc017071739 = nil | |
137 | + | if (($size17071739 == 0)) | |
138 | + | then $acc017071739 | |
139 | + | else { | |
140 | + | let $acc117071739 = handler1($acc017071739, $list17071739[0]) | |
141 | + | if (($size17071739 == 1)) | |
142 | + | then $acc117071739 | |
143 | + | else { | |
144 | + | let $acc217071739 = handler1($acc117071739, $list17071739[1]) | |
145 | + | if (($size17071739 == 2)) | |
146 | + | then $acc217071739 | |
147 | + | else { | |
148 | + | let $acc317071739 = handler1($acc217071739, $list17071739[2]) | |
149 | + | if (($size17071739 == 3)) | |
150 | + | then $acc317071739 | |
151 | + | else { | |
152 | + | let $acc417071739 = handler1($acc317071739, $list17071739[3]) | |
153 | + | if (($size17071739 == 4)) | |
154 | + | then $acc417071739 | |
155 | + | else { | |
156 | + | let $acc517071739 = handler1($acc417071739, $list17071739[4]) | |
157 | + | if (($size17071739 == 5)) | |
158 | + | then $acc517071739 | |
159 | + | else { | |
160 | + | let $acc617071739 = handler1($acc517071739, $list17071739[5]) | |
161 | + | if (($size17071739 == 6)) | |
162 | + | then $acc617071739 | |
163 | + | else { | |
164 | + | let $acc717071739 = handler1($acc617071739, $list17071739[6]) | |
165 | + | if (($size17071739 == 7)) | |
166 | + | then $acc717071739 | |
167 | + | else { | |
168 | + | let $acc817071739 = handler1($acc717071739, $list17071739[7]) | |
169 | + | if (($size17071739 == 8)) | |
170 | + | then $acc817071739 | |
171 | + | else { | |
172 | + | let $acc917071739 = handler1($acc817071739, $list17071739[8]) | |
173 | + | if (($size17071739 == 9)) | |
174 | + | then $acc917071739 | |
175 | + | else { | |
176 | + | let $acc1017071739 = handler1($acc917071739, $list17071739[9]) | |
177 | + | if (($size17071739 == 10)) | |
178 | + | then $acc1017071739 | |
179 | + | else { | |
180 | + | let $acc1117071739 = handler1($acc1017071739, $list17071739[10]) | |
181 | + | throw("List size exceed 10") | |
182 | + | } | |
183 | + | } | |
184 | + | } | |
185 | + | } | |
186 | + | } | |
187 | + | } | |
188 | + | } | |
189 | + | } | |
190 | + | } | |
191 | + | } | |
192 | + | } | |
193 | + | } | |
194 | + | func handler2 (accum,assetId) = if ((indexOf(ids, assetId) != unit)) | |
195 | + | then (accum + 1) | |
196 | + | else throw(("asset not attached: " + toBase58String(assetId))) | |
197 | + | ||
198 | + | let checks = { | |
199 | + | let $list19291960 = assetIds | |
200 | + | let $size19291960 = size($list19291960) | |
201 | + | let $acc019291960 = 0 | |
202 | + | if (($size19291960 == 0)) | |
203 | + | then $acc019291960 | |
204 | + | else { | |
205 | + | let $acc119291960 = handler2($acc019291960, $list19291960[0]) | |
206 | + | if (($size19291960 == 1)) | |
207 | + | then $acc119291960 | |
208 | + | else { | |
209 | + | let $acc219291960 = handler2($acc119291960, $list19291960[1]) | |
210 | + | if (($size19291960 == 2)) | |
211 | + | then $acc219291960 | |
212 | + | else { | |
213 | + | let $acc319291960 = handler2($acc219291960, $list19291960[2]) | |
214 | + | if (($size19291960 == 3)) | |
215 | + | then $acc319291960 | |
216 | + | else { | |
217 | + | let $acc419291960 = handler2($acc319291960, $list19291960[3]) | |
218 | + | if (($size19291960 == 4)) | |
219 | + | then $acc419291960 | |
220 | + | else { | |
221 | + | let $acc519291960 = handler2($acc419291960, $list19291960[4]) | |
222 | + | if (($size19291960 == 5)) | |
223 | + | then $acc519291960 | |
224 | + | else { | |
225 | + | let $acc619291960 = handler2($acc519291960, $list19291960[5]) | |
226 | + | if (($size19291960 == 6)) | |
227 | + | then $acc619291960 | |
228 | + | else { | |
229 | + | let $acc719291960 = handler2($acc619291960, $list19291960[6]) | |
230 | + | if (($size19291960 == 7)) | |
231 | + | then $acc719291960 | |
232 | + | else { | |
233 | + | let $acc819291960 = handler2($acc719291960, $list19291960[7]) | |
234 | + | if (($size19291960 == 8)) | |
235 | + | then $acc819291960 | |
236 | + | else { | |
237 | + | let $acc919291960 = handler2($acc819291960, $list19291960[8]) | |
238 | + | if (($size19291960 == 9)) | |
239 | + | then $acc919291960 | |
240 | + | else { | |
241 | + | let $acc1019291960 = handler2($acc919291960, $list19291960[9]) | |
242 | + | if (($size19291960 == 10)) | |
243 | + | then $acc1019291960 | |
244 | + | else { | |
245 | + | let $acc1119291960 = handler2($acc1019291960, $list19291960[10]) | |
246 | + | throw("List size exceed 10") | |
247 | + | } | |
248 | + | } | |
249 | + | } | |
250 | + | } | |
251 | + | } | |
252 | + | } | |
253 | + | } | |
254 | + | } | |
255 | + | } | |
256 | + | } | |
257 | + | } | |
258 | + | } | |
259 | + | true | |
260 | + | } | |
261 | + | ||
262 | + | ||
263 | + | func handlePoolTokensAdd (PIssued,payments,userAddress) = { | |
264 | + | func getTokenPaymentAmount (tokenId) = { | |
265 | + | func handler (accum,payment) = if ((payment.assetId == tokenId)) | |
266 | + | then payment.amount | |
267 | + | else accum | |
268 | + | ||
269 | + | let $list22652295 = payments | |
270 | + | let $size22652295 = size($list22652295) | |
271 | + | let $acc022652295 = 0 | |
272 | + | if (($size22652295 == 0)) | |
273 | + | then $acc022652295 | |
274 | + | else { | |
275 | + | let $acc122652295 = handler($acc022652295, $list22652295[0]) | |
276 | + | if (($size22652295 == 1)) | |
277 | + | then $acc122652295 | |
278 | + | else { | |
279 | + | let $acc222652295 = handler($acc122652295, $list22652295[1]) | |
280 | + | if (($size22652295 == 2)) | |
281 | + | then $acc222652295 | |
282 | + | else { | |
283 | + | let $acc322652295 = handler($acc222652295, $list22652295[2]) | |
284 | + | if (($size22652295 == 3)) | |
285 | + | then $acc322652295 | |
286 | + | else { | |
287 | + | let $acc422652295 = handler($acc322652295, $list22652295[3]) | |
288 | + | if (($size22652295 == 4)) | |
289 | + | then $acc422652295 | |
290 | + | else { | |
291 | + | let $acc522652295 = handler($acc422652295, $list22652295[4]) | |
292 | + | if (($size22652295 == 5)) | |
293 | + | then $acc522652295 | |
294 | + | else { | |
295 | + | let $acc622652295 = handler($acc522652295, $list22652295[5]) | |
296 | + | if (($size22652295 == 6)) | |
297 | + | then $acc622652295 | |
298 | + | else { | |
299 | + | let $acc722652295 = handler($acc622652295, $list22652295[6]) | |
300 | + | if (($size22652295 == 7)) | |
301 | + | then $acc722652295 | |
302 | + | else { | |
303 | + | let $acc822652295 = handler($acc722652295, $list22652295[7]) | |
304 | + | if (($size22652295 == 8)) | |
305 | + | then $acc822652295 | |
306 | + | else { | |
307 | + | let $acc922652295 = handler($acc822652295, $list22652295[8]) | |
308 | + | if (($size22652295 == 9)) | |
309 | + | then $acc922652295 | |
310 | + | else { | |
311 | + | let $acc1022652295 = handler($acc922652295, $list22652295[9]) | |
312 | + | if (($size22652295 == 10)) | |
313 | + | then $acc1022652295 | |
314 | + | else { | |
315 | + | let $acc1122652295 = handler($acc1022652295, $list22652295[10]) | |
316 | + | throw("List size exceed 10") | |
317 | + | } | |
318 | + | } | |
319 | + | } | |
320 | + | } | |
321 | + | } | |
322 | + | } | |
323 | + | } | |
324 | + | } | |
325 | + | } | |
326 | + | } | |
327 | + | } | |
328 | + | } | |
329 | + | ||
330 | + | func handleTokenChange (accum,tokenId) = { | |
331 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
332 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
333 | + | let tokenDecimals = tryGetInteger((("static_" + toBase58String(tokenId)) + "_scale")) | |
334 | + | let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply) - tokenDecimals), Bk, tokenDecimals) | |
335 | + | (accum ++ [IntegerEntry((("global_" + toBase58String(tokenId)) + "_balance"), (Bk + Dk))]) | |
336 | + | } | |
337 | + | ||
338 | + | func handleTokenChange2 (accum,tokenId) = { | |
339 | + | let Bk = tryGetInteger((("global_" + toBase58String(tokenId)) + "_balance")) | |
340 | + | let PSupply = tryGetInteger("global_poolToken_amount") | |
341 | + | let tokenDecimals = tryGetInteger((("static_" + toBase58String(tokenId)) + "_scale")) | |
342 | + | let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply) - tokenDecimals), Bk, tokenDecimals) | |
343 | + | let paymentAmount = getTokenPaymentAmount(tokenId) | |
344 | + | let toReturn = ((if ((paymentAmount != 0)) | |
345 | + | then paymentAmount | |
346 | + | else 0) - Dk) | |
347 | + | (accum ++ [ScriptTransfer(userAddress, toReturn, tokenId)]) | |
348 | + | } | |
349 | + | ||
350 | + | ({ | |
351 | + | let $list34943535 = assetIds | |
352 | + | let $size34943535 = size($list34943535) | |
353 | + | let $acc034943535 = nil | |
354 | + | if (($size34943535 == 0)) | |
355 | + | then $acc034943535 | |
356 | + | else { | |
357 | + | let $acc134943535 = handleTokenChange($acc034943535, $list34943535[0]) | |
358 | + | if (($size34943535 == 1)) | |
359 | + | then $acc134943535 | |
360 | + | else { | |
361 | + | let $acc234943535 = handleTokenChange($acc134943535, $list34943535[1]) | |
362 | + | if (($size34943535 == 2)) | |
363 | + | then $acc234943535 | |
364 | + | else { | |
365 | + | let $acc334943535 = handleTokenChange($acc234943535, $list34943535[2]) | |
366 | + | if (($size34943535 == 3)) | |
367 | + | then $acc334943535 | |
368 | + | else { | |
369 | + | let $acc434943535 = handleTokenChange($acc334943535, $list34943535[3]) | |
370 | + | if (($size34943535 == 4)) | |
371 | + | then $acc434943535 | |
372 | + | else { | |
373 | + | let $acc534943535 = handleTokenChange($acc434943535, $list34943535[4]) | |
374 | + | if (($size34943535 == 5)) | |
375 | + | then $acc534943535 | |
376 | + | else { | |
377 | + | let $acc634943535 = handleTokenChange($acc534943535, $list34943535[5]) | |
378 | + | if (($size34943535 == 6)) | |
379 | + | then $acc634943535 | |
380 | + | else { | |
381 | + | let $acc734943535 = handleTokenChange($acc634943535, $list34943535[6]) | |
382 | + | if (($size34943535 == 7)) | |
383 | + | then $acc734943535 | |
384 | + | else { | |
385 | + | let $acc834943535 = handleTokenChange($acc734943535, $list34943535[7]) | |
386 | + | if (($size34943535 == 8)) | |
387 | + | then $acc834943535 | |
388 | + | else { | |
389 | + | let $acc934943535 = handleTokenChange($acc834943535, $list34943535[8]) | |
390 | + | if (($size34943535 == 9)) | |
391 | + | then $acc934943535 | |
392 | + | else { | |
393 | + | let $acc1034943535 = handleTokenChange($acc934943535, $list34943535[9]) | |
394 | + | if (($size34943535 == 10)) | |
395 | + | then $acc1034943535 | |
396 | + | else { | |
397 | + | let $acc1134943535 = handleTokenChange($acc1034943535, $list34943535[10]) | |
398 | + | throw("List size exceed 10") | |
399 | + | } | |
400 | + | } | |
401 | + | } | |
402 | + | } | |
403 | + | } | |
404 | + | } | |
405 | + | } | |
406 | + | } | |
407 | + | } | |
408 | + | } | |
409 | + | } | |
410 | + | } ++ { | |
411 | + | let $list35423584 = assetIds | |
412 | + | let $size35423584 = size($list35423584) | |
413 | + | let $acc035423584 = nil | |
414 | + | if (($size35423584 == 0)) | |
415 | + | then $acc035423584 | |
416 | + | else { | |
417 | + | let $acc135423584 = handleTokenChange2($acc035423584, $list35423584[0]) | |
418 | + | if (($size35423584 == 1)) | |
419 | + | then $acc135423584 | |
420 | + | else { | |
421 | + | let $acc235423584 = handleTokenChange2($acc135423584, $list35423584[1]) | |
422 | + | if (($size35423584 == 2)) | |
423 | + | then $acc235423584 | |
424 | + | else { | |
425 | + | let $acc335423584 = handleTokenChange2($acc235423584, $list35423584[2]) | |
426 | + | if (($size35423584 == 3)) | |
427 | + | then $acc335423584 | |
428 | + | else { | |
429 | + | let $acc435423584 = handleTokenChange2($acc335423584, $list35423584[3]) | |
430 | + | if (($size35423584 == 4)) | |
431 | + | then $acc435423584 | |
432 | + | else { | |
433 | + | let $acc535423584 = handleTokenChange2($acc435423584, $list35423584[4]) | |
434 | + | if (($size35423584 == 5)) | |
435 | + | then $acc535423584 | |
436 | + | else { | |
437 | + | let $acc635423584 = handleTokenChange2($acc535423584, $list35423584[5]) | |
438 | + | if (($size35423584 == 6)) | |
439 | + | then $acc635423584 | |
440 | + | else { | |
441 | + | let $acc735423584 = handleTokenChange2($acc635423584, $list35423584[6]) | |
442 | + | if (($size35423584 == 7)) | |
443 | + | then $acc735423584 | |
444 | + | else { | |
445 | + | let $acc835423584 = handleTokenChange2($acc735423584, $list35423584[7]) | |
446 | + | if (($size35423584 == 8)) | |
447 | + | then $acc835423584 | |
448 | + | else { | |
449 | + | let $acc935423584 = handleTokenChange2($acc835423584, $list35423584[8]) | |
450 | + | if (($size35423584 == 9)) | |
451 | + | then $acc935423584 | |
452 | + | else { | |
453 | + | let $acc1035423584 = handleTokenChange2($acc935423584, $list35423584[9]) | |
454 | + | if (($size35423584 == 10)) | |
455 | + | then $acc1035423584 | |
456 | + | else { | |
457 | + | let $acc1135423584 = handleTokenChange2($acc1035423584, $list35423584[10]) | |
458 | + | throw("List size exceed 10") | |
459 | + | } | |
460 | + | } | |
461 | + | } | |
462 | + | } | |
463 | + | } | |
464 | + | } | |
465 | + | } | |
466 | + | } | |
467 | + | } | |
468 | + | } | |
469 | + | } | |
470 | + | }) | |
471 | + | } | |
472 | + | ||
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((("static_" + 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((("static_" + 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 $list46664707 = assetIds | |
493 | + | let $size46664707 = size($list46664707) | |
494 | + | let $acc046664707 = nil | |
495 | + | if (($size46664707 == 0)) | |
496 | + | then $acc046664707 | |
497 | + | else { | |
498 | + | let $acc146664707 = handleTokenRedeem($acc046664707, $list46664707[0]) | |
499 | + | if (($size46664707 == 1)) | |
500 | + | then $acc146664707 | |
501 | + | else { | |
502 | + | let $acc246664707 = handleTokenRedeem($acc146664707, $list46664707[1]) | |
503 | + | if (($size46664707 == 2)) | |
504 | + | then $acc246664707 | |
505 | + | else { | |
506 | + | let $acc346664707 = handleTokenRedeem($acc246664707, $list46664707[2]) | |
507 | + | if (($size46664707 == 3)) | |
508 | + | then $acc346664707 | |
509 | + | else { | |
510 | + | let $acc446664707 = handleTokenRedeem($acc346664707, $list46664707[3]) | |
511 | + | if (($size46664707 == 4)) | |
512 | + | then $acc446664707 | |
513 | + | else { | |
514 | + | let $acc546664707 = handleTokenRedeem($acc446664707, $list46664707[4]) | |
515 | + | if (($size46664707 == 5)) | |
516 | + | then $acc546664707 | |
517 | + | else { | |
518 | + | let $acc646664707 = handleTokenRedeem($acc546664707, $list46664707[5]) | |
519 | + | if (($size46664707 == 6)) | |
520 | + | then $acc646664707 | |
521 | + | else { | |
522 | + | let $acc746664707 = handleTokenRedeem($acc646664707, $list46664707[6]) | |
523 | + | if (($size46664707 == 7)) | |
524 | + | then $acc746664707 | |
525 | + | else { | |
526 | + | let $acc846664707 = handleTokenRedeem($acc746664707, $list46664707[7]) | |
527 | + | if (($size46664707 == 8)) | |
528 | + | then $acc846664707 | |
529 | + | else { | |
530 | + | let $acc946664707 = handleTokenRedeem($acc846664707, $list46664707[8]) | |
531 | + | if (($size46664707 == 9)) | |
532 | + | then $acc946664707 | |
533 | + | else { | |
534 | + | let $acc1046664707 = handleTokenRedeem($acc946664707, $list46664707[9]) | |
535 | + | if (($size46664707 == 10)) | |
536 | + | then $acc1046664707 | |
537 | + | else { | |
538 | + | let $acc1146664707 = handleTokenRedeem($acc1046664707, $list46664707[10]) | |
539 | + | throw("List size exceed 10") | |
540 | + | } | |
541 | + | } | |
542 | + | } | |
543 | + | } | |
544 | + | } | |
545 | + | } | |
546 | + | } | |
547 | + | } | |
548 | + | } | |
549 | + | } | |
550 | + | } | |
551 | + | } ++ { | |
552 | + | let $list47134755 = assetIds | |
553 | + | let $size47134755 = size($list47134755) | |
554 | + | let $acc047134755 = nil | |
555 | + | if (($size47134755 == 0)) | |
556 | + | then $acc047134755 | |
557 | + | else { | |
558 | + | let $acc147134755 = handleTokenRedeem2($acc047134755, $list47134755[0]) | |
559 | + | if (($size47134755 == 1)) | |
560 | + | then $acc147134755 | |
561 | + | else { | |
562 | + | let $acc247134755 = handleTokenRedeem2($acc147134755, $list47134755[1]) | |
563 | + | if (($size47134755 == 2)) | |
564 | + | then $acc247134755 | |
565 | + | else { | |
566 | + | let $acc347134755 = handleTokenRedeem2($acc247134755, $list47134755[2]) | |
567 | + | if (($size47134755 == 3)) | |
568 | + | then $acc347134755 | |
569 | + | else { | |
570 | + | let $acc447134755 = handleTokenRedeem2($acc347134755, $list47134755[3]) | |
571 | + | if (($size47134755 == 4)) | |
572 | + | then $acc447134755 | |
573 | + | else { | |
574 | + | let $acc547134755 = handleTokenRedeem2($acc447134755, $list47134755[4]) | |
575 | + | if (($size47134755 == 5)) | |
576 | + | then $acc547134755 | |
577 | + | else { | |
578 | + | let $acc647134755 = handleTokenRedeem2($acc547134755, $list47134755[5]) | |
579 | + | if (($size47134755 == 6)) | |
580 | + | then $acc647134755 | |
581 | + | else { | |
582 | + | let $acc747134755 = handleTokenRedeem2($acc647134755, $list47134755[6]) | |
583 | + | if (($size47134755 == 7)) | |
584 | + | then $acc747134755 | |
585 | + | else { | |
586 | + | let $acc847134755 = handleTokenRedeem2($acc747134755, $list47134755[7]) | |
587 | + | if (($size47134755 == 8)) | |
588 | + | then $acc847134755 | |
589 | + | else { | |
590 | + | let $acc947134755 = handleTokenRedeem2($acc847134755, $list47134755[8]) | |
591 | + | if (($size47134755 == 9)) | |
592 | + | then $acc947134755 | |
593 | + | else { | |
594 | + | let $acc1047134755 = handleTokenRedeem2($acc947134755, $list47134755[9]) | |
595 | + | if (($size47134755 == 10)) | |
596 | + | then $acc1047134755 | |
597 | + | else { | |
598 | + | let $acc1147134755 = handleTokenRedeem2($acc1047134755, $list47134755[10]) | |
599 | + | throw("List size exceed 10") | |
600 | + | } | |
601 | + | } | |
602 | + | } | |
603 | + | } | |
604 | + | } | |
605 | + | } | |
606 | + | } | |
607 | + | } | |
608 | + | } | |
609 | + | } | |
610 | + | } | |
611 | + | }) | |
612 | + | } | |
613 | + | ||
614 | + | ||
615 | + | func calculateOutAmount (AmountIn,assetIn,assetOut) = { | |
616 | + | let IndexIn = value(indexOf(assetIds, assetIn)) | |
617 | + | let IndexOut = value(indexOf(assetIds, assetOut)) | |
618 | + | let BalanceIn = tryGetInteger((("global_" + toBase58String(assetIn)) + "_balance")) | |
619 | + | let BalanceOut = tryGetInteger((("global_" + toBase58String(assetOut)) + "_balance")) | |
620 | + | fraction(BalanceOut, (10000 - pow(((BalanceIn * 10000) / (BalanceIn + AmountIn)), 4, fraction(AssetsWeights[IndexIn], 10000, AssetsWeights[IndexOut]), 4, 4, FLOOR)), 10000) | |
621 | + | } | |
622 | + | ||
623 | + | ||
624 | + | @Callable(i) | |
625 | + | func preInit () = [IntegerEntry((("static_" + toBase58String(assetIds[0])) + "_scale"), Scales[0]), IntegerEntry((("static_" + toBase58String(assetIds[1])) + "_scale"), Scales[1])] | |
626 | + | ||
627 | + | ||
628 | + | ||
629 | + | @Callable(i) | |
630 | + | func init () = { | |
631 | + | func prepareList () = { | |
632 | + | func handler (accum,n) = (accum ++ [IntegerEntry((("global_" + toBase58String(value(n.assetId))) + "_amount"), n.amount)]) | |
633 | + | ||
634 | + | let $list58865919 = i.payments | |
635 | + | let $size58865919 = size($list58865919) | |
636 | + | let $acc058865919 = nil | |
637 | + | if (($size58865919 == 0)) | |
638 | + | then $acc058865919 | |
639 | + | else { | |
640 | + | let $acc158865919 = handler($acc058865919, $list58865919[0]) | |
641 | + | if (($size58865919 == 1)) | |
642 | + | then $acc158865919 | |
643 | + | else { | |
644 | + | let $acc258865919 = handler($acc158865919, $list58865919[1]) | |
645 | + | if (($size58865919 == 2)) | |
646 | + | then $acc258865919 | |
647 | + | else { | |
648 | + | let $acc358865919 = handler($acc258865919, $list58865919[2]) | |
649 | + | if (($size58865919 == 3)) | |
650 | + | then $acc358865919 | |
651 | + | else { | |
652 | + | let $acc458865919 = handler($acc358865919, $list58865919[3]) | |
653 | + | if (($size58865919 == 4)) | |
654 | + | then $acc458865919 | |
655 | + | else { | |
656 | + | let $acc558865919 = handler($acc458865919, $list58865919[4]) | |
657 | + | if (($size58865919 == 5)) | |
658 | + | then $acc558865919 | |
659 | + | else { | |
660 | + | let $acc658865919 = handler($acc558865919, $list58865919[5]) | |
661 | + | if (($size58865919 == 6)) | |
662 | + | then $acc658865919 | |
663 | + | else { | |
664 | + | let $acc758865919 = handler($acc658865919, $list58865919[6]) | |
665 | + | if (($size58865919 == 7)) | |
666 | + | then $acc758865919 | |
667 | + | else { | |
668 | + | let $acc858865919 = handler($acc758865919, $list58865919[7]) | |
669 | + | if (($size58865919 == 8)) | |
670 | + | then $acc858865919 | |
671 | + | else { | |
672 | + | let $acc958865919 = handler($acc858865919, $list58865919[8]) | |
673 | + | if (($size58865919 == 9)) | |
674 | + | then $acc958865919 | |
675 | + | else { | |
676 | + | let $acc1058865919 = handler($acc958865919, $list58865919[9]) | |
677 | + | if (($size58865919 == 10)) | |
678 | + | then $acc1058865919 | |
679 | + | else { | |
680 | + | let $acc1158865919 = handler($acc1058865919, $list58865919[10]) | |
681 | + | throw("List size exceed 10") | |
682 | + | } | |
683 | + | } | |
684 | + | } | |
685 | + | } | |
686 | + | } | |
687 | + | } | |
688 | + | } | |
689 | + | } | |
690 | + | } | |
691 | + | } | |
692 | + | } | |
693 | + | } | |
694 | + | ||
695 | + | func calculatePoolTokensAmount (payments) = { | |
696 | + | func handler (accum,pmt) = { | |
697 | + | let assetId = value(pmt.assetId) | |
698 | + | func handler2 (accum,n) = if ((n == assetId)) | |
699 | + | then value(indexOf(assetIds, n)) | |
700 | + | else accum | |
701 | + | ||
702 | + | let Token = { | |
703 | + | let $list62416272 = assetIds | |
704 | + | let $size62416272 = size($list62416272) | |
705 | + | let $acc062416272 = 1 | |
706 | + | if (($size62416272 == 0)) | |
707 | + | then $acc062416272 | |
708 | + | else { | |
709 | + | let $acc162416272 = handler2($acc062416272, $list62416272[0]) | |
710 | + | if (($size62416272 == 1)) | |
711 | + | then $acc162416272 | |
712 | + | else { | |
713 | + | let $acc262416272 = handler2($acc162416272, $list62416272[1]) | |
714 | + | if (($size62416272 == 2)) | |
715 | + | then $acc262416272 | |
716 | + | else { | |
717 | + | let $acc362416272 = handler2($acc262416272, $list62416272[2]) | |
718 | + | if (($size62416272 == 3)) | |
719 | + | then $acc362416272 | |
720 | + | else { | |
721 | + | let $acc462416272 = handler2($acc362416272, $list62416272[3]) | |
722 | + | if (($size62416272 == 4)) | |
723 | + | then $acc462416272 | |
724 | + | else { | |
725 | + | let $acc562416272 = handler2($acc462416272, $list62416272[4]) | |
726 | + | if (($size62416272 == 5)) | |
727 | + | then $acc562416272 | |
728 | + | else { | |
729 | + | let $acc662416272 = handler2($acc562416272, $list62416272[5]) | |
730 | + | if (($size62416272 == 6)) | |
731 | + | then $acc662416272 | |
732 | + | else { | |
733 | + | let $acc762416272 = handler2($acc662416272, $list62416272[6]) | |
734 | + | if (($size62416272 == 7)) | |
735 | + | then $acc762416272 | |
736 | + | else { | |
737 | + | let $acc862416272 = handler2($acc762416272, $list62416272[7]) | |
738 | + | if (($size62416272 == 8)) | |
739 | + | then $acc862416272 | |
740 | + | else { | |
741 | + | let $acc962416272 = handler2($acc862416272, $list62416272[8]) | |
742 | + | if (($size62416272 == 9)) | |
743 | + | then $acc962416272 | |
744 | + | else { | |
745 | + | let $acc1062416272 = handler2($acc962416272, $list62416272[9]) | |
746 | + | if (($size62416272 == 10)) | |
747 | + | then $acc1062416272 | |
748 | + | else { | |
749 | + | let $acc1162416272 = handler2($acc1062416272, $list62416272[10]) | |
750 | + | throw("List size exceed 10") | |
751 | + | } | |
752 | + | } | |
753 | + | } | |
754 | + | } | |
755 | + | } | |
756 | + | } | |
757 | + | } | |
758 | + | } | |
759 | + | } | |
760 | + | } | |
761 | + | } | |
762 | + | } | |
763 | + | (accum * pow(pmt.amount, Decimals[Token], AssetsWeights[Token], AssetsWeightsDecimals, PoolTokenDecimals, FLOOR)) | |
764 | + | } | |
765 | + | ||
766 | + | let $list64016431 = payments | |
767 | + | let $size64016431 = size($list64016431) | |
768 | + | let $acc064016431 = 1 | |
769 | + | if (($size64016431 == 0)) | |
770 | + | then $acc064016431 | |
771 | + | else { | |
772 | + | let $acc164016431 = handler($acc064016431, $list64016431[0]) | |
773 | + | if (($size64016431 == 1)) | |
774 | + | then $acc164016431 | |
775 | + | else { | |
776 | + | let $acc264016431 = handler($acc164016431, $list64016431[1]) | |
777 | + | if (($size64016431 == 2)) | |
778 | + | then $acc264016431 | |
779 | + | else { | |
780 | + | let $acc364016431 = handler($acc264016431, $list64016431[2]) | |
781 | + | if (($size64016431 == 3)) | |
782 | + | then $acc364016431 | |
783 | + | else { | |
784 | + | let $acc464016431 = handler($acc364016431, $list64016431[3]) | |
785 | + | if (($size64016431 == 4)) | |
786 | + | then $acc464016431 | |
787 | + | else { | |
788 | + | let $acc564016431 = handler($acc464016431, $list64016431[4]) | |
789 | + | if (($size64016431 == 5)) | |
790 | + | then $acc564016431 | |
791 | + | else { | |
792 | + | let $acc664016431 = handler($acc564016431, $list64016431[5]) | |
793 | + | if (($size64016431 == 6)) | |
794 | + | then $acc664016431 | |
795 | + | else { | |
796 | + | let $acc764016431 = handler($acc664016431, $list64016431[6]) | |
797 | + | if (($size64016431 == 7)) | |
798 | + | then $acc764016431 | |
799 | + | else { | |
800 | + | let $acc864016431 = handler($acc764016431, $list64016431[7]) | |
801 | + | if (($size64016431 == 8)) | |
802 | + | then $acc864016431 | |
803 | + | else { | |
804 | + | let $acc964016431 = handler($acc864016431, $list64016431[8]) | |
805 | + | if (($size64016431 == 9)) | |
806 | + | then $acc964016431 | |
807 | + | else { | |
808 | + | let $acc1064016431 = handler($acc964016431, $list64016431[9]) | |
809 | + | if (($size64016431 == 10)) | |
810 | + | then $acc1064016431 | |
811 | + | else { | |
812 | + | let $acc1164016431 = handler($acc1064016431, $list64016431[10]) | |
813 | + | throw("List size exceed 10") | |
814 | + | } | |
815 | + | } | |
816 | + | } | |
817 | + | } | |
818 | + | } | |
819 | + | } | |
820 | + | } | |
821 | + | } | |
822 | + | } | |
823 | + | } | |
824 | + | } | |
825 | + | } | |
826 | + | ||
827 | + | if ((tryGetInteger("global_wasInited") > 0)) | |
828 | + | then throw("pool already inited") | |
829 | + | else { | |
830 | + | let initialPoolTokens = calculatePoolTokensAmount(i.payments) | |
831 | + | let poolTokenIssue = Issue("Puzzle2", "Puzzle Swap Pool Token", initialPoolTokens, PoolTokenDecimals, true, unit, 0) | |
832 | + | let poolTokenId = calculateAssetId(poolTokenIssue) | |
833 | + | (prepareList() ++ [poolTokenIssue, IntegerEntry("global_poolToken_amount", initialPoolTokens), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", poolTokenId), ScriptTransfer(i.caller, initialPoolTokens, poolTokenId)]) | |
834 | + | } | |
835 | + | } | |
836 | + | ||
837 | + | ||
838 | + | ||
839 | + | @Callable(i) | |
840 | + | func addLiquidity () = if ((size(i.payments) != T)) | |
841 | + | then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(T))) | |
842 | + | else if (!(checkTokensValidity(i.payments))) | |
843 | + | then throw("wrong assets attached") | |
844 | + | else { | |
845 | + | let PIssued = getMinPIssued(i.payments) | |
846 | + | let result = handlePoolTokensAdd(PIssued, i.payments, i.caller) | |
847 | + | let reissue = Reissue(tryGetBinary("global_poolToken_id"), PIssued, true) | |
848 | + | (result ++ [reissue, ScriptTransfer(i.caller, PIssued, tryGetBinary("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") + PIssued))]) | |
849 | + | } | |
850 | + | ||
851 | + | ||
852 | + | ||
853 | + | @Callable(i) | |
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 | + | } | |
864 | + | ||
865 | + | ||
866 | + | ||
867 | + | @Callable(i) | |
868 | + | func swap (assetOut,minimum) = { | |
869 | + | let pmt = value(i.payments[0]) | |
870 | + | let AmountIn = value(i.payments[0].amount) | |
871 | + | let AssetIn = value(pmt.assetId) | |
872 | + | let AssetOut = fromBase58String(assetOut) | |
873 | + | let AmountOut = calculateOutAmount(AmountIn, AssetIn, AssetOut) | |
874 | + | if ((minimum > AmountOut)) | |
875 | + | then throw(("amount to recieve it lower than given one: " + toString(AmountOut))) | |
876 | + | else if ((0 > (tryGetInteger((("global_" + toBase58String(AssetOut)) + "_balance")) - AmountOut))) | |
877 | + | then throw("contract is out of reserves") | |
878 | + | else { | |
879 | + | let feeAmount = fraction(AmountOut, Fee, FeeScale) | |
880 | + | let cleanAmountOut = (AmountOut - feeAmount) | |
881 | + | [ScriptTransfer(feeAggregator, feeAmount, AssetOut), IntegerEntry((("global_" + toBase58String(AssetOut)) + "_balance"), (tryGetInteger((("global_" + toBase58String(AssetOut)) + "_balance")) - cleanAmountOut)), IntegerEntry((("global_" + toBase58String(AssetIn)) + "_balance"), (tryGetInteger((("global_" + toBase58String(AssetIn)) + "_balance")) + AmountIn)), ScriptTransfer(i.caller, cleanAmountOut, AssetOut)] | |
882 | + | } | |
883 | + | } | |
884 | + | ||
885 | + | ||
886 | + | @Verifier(tx) | |
887 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
888 | + |
github/deemru/w8io/786bc32 53.03 ms ◑