tx · 4JzjkXSxpGMpTDHYR3jdqf8dhmEesbVX3FDQYvPjDNDV

3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv:  -0.01400000 Waves

2022.01.06 20:04 [1867313] smart account 3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv > SELF 0.00000000 Waves

{ "type": 13, "id": "4JzjkXSxpGMpTDHYR3jdqf8dhmEesbVX3FDQYvPjDNDV", "fee": 1400000, "feeAssetId": null, "timestamp": 1641488703052, "version": 2, "chainId": 84, "sender": "3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv", "senderPublicKey": "28sGn7FYnmxceAmnGYiDiKuMK1QyXiqX8zQXfKDnrc8t", "proofs": [ "58tMstaDzyRkVGmvT6eaKgdRUhcLuiT15C3HdPNw2cgyevXaPKs1wqDpyBAA74B9prSonBViPr96u5R9CYYggzUw" ], "script": "base64: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Vm90ZXNfUmN2ZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAUAAAAUaW5kaXZpZHVhbHZvdGVzY291bnQFAAAAA25pbAAAAAFpAQAAABNXaXRoZHJhd1ZvdGVkVG9rZW5zAAAAAQAAAAxFbnRlckFzc2V0SUQEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAAC0wLjEgVE4gVG9rZW4gaXMgcmVxdWlyZWQgYXMgQXR0YWNoZWQgcGF5bWVudC4EAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAOY2hlY2tlbmRoZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAKVm90aW5nX0VIXwUAAAAMRW50ZXJBc3NldElEBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAIUGFpcl9VVl8FAAAADEVudGVyQXNzZXRJRAQAAAAWY2hlY2t1c2Vydm90aW5nYmFsYW5jZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC1ZvdGVzX1JjdmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAAlIEFkZHJlc3MgbmV2ZXIgdm90ZWQgJiBleGlzdCBpbiBsaXN0LgQAAAAdcGVuZGluZ2Jsb2Nrc2ZvcnByb2plY3RleHBpcmUJAABlAAAAAgUAAAAOY2hlY2tlbmRoZWlnaHQFAAAABmhlaWdodAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACVQYWlyIGlzIG5vdCBhdmFpbGFi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AAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADVXaGl0ZWxpc3RlZCBUb2tlbiBpcyByZXF1aXJlZCBhcyBBdHRhY2hlZCBwYXltZW50WzFdLgQAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAACFBhaXJfVVZfBQAAAAxFbnRlckFzc2V0SUQEAAAADFZvdGluZ1N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA5Wb3RpbmdfU3RhdHVzXwUAAAAMRW50ZXJBc3NldElEBAAAABBDaGVja1VTRFRCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBAAAABFDaGVja0Fzc2V0QmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAQAAAAQbmV3YmFsYW5jZW9mVVNEVAkAAGsAAAADBQAAABBDaGVja1VTRFRCYWxhbmNlBQAAABFDaGVja0Fzc2V0QmFsYW5jZQkAAGQAAAACBQAAABFDaGVja0Fzc2V0QmFsYW5jZQgFAAAAA3BtdAAAAAZhbW91bnQEAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAZQAAAAIFAAAAEENoZWNrVVNEVEJhbGFuY2UFAAAAEG5ld2JhbGFuY2VvZlVTRFQEAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMCAAAAAUYEAAAAB1N3YXBGZWUAAAAAAAAAAAMEAAAAEFN3YXBGZWV0b3JlY2VpdmUJAABpAAAAAgkAAGgAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAUAAAAHU3dhcEZlZQAAAAAAAAAD6AQAAAAUdXNlcmJhbGFuY2V0b3JlY2VpdmUJAABlAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAAEFN3YXBGZWV0b3JlY2VpdmUEAAAAGVN1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAHE5ld1N1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUJAABkAAAAAgUAAAAZU3VtdXBvZkFzc2V0VG9VU0RUU3dhcEZlZQUAAAAQU3dhcEZlZXRvcmVjZWl2ZQQAAAARU3VtdXBBc3NldEJhbGFuY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQAAZAAAAAIFAAAAEUNoZWNrQXNzZXRCYWxhbmNlCAUAAAADcG10AAAABmFtb3VudAQAAAAQU3VtdXBVU0RUQmFsYW5jZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFU5ld1N1bXVwb2ZVU0RUQmFsYW5jZQkAAGUAAAACBQAAABBDaGVja1VTRFRCYWxhbmNlBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAQAAAAEVE9QVAQAAAAHJG1hdGNoMAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABNUb3RhbF9vZl9QYWlyX1R4bnNfBQAAAAxFbnRlckFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAGTmV3VFBUCQAAZAAAAAIFAAAABFRPUFQAAAAAAAAAAAEDCQAAAAAAAAIFAAAADEVudGVyQXNzZXRJRAkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAIZJbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RUIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgJiBBdHRhY2ggV2hpdGVsaXN0ZWQgQXNzZXQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACtQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAAAAAACBQAAAAxWb3RpbmdTdGF0dXMFAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMJAAACAAAAAQkAASwAAAACBQAAAAxFbnRlckFzc2V0SUQCAAAAICBpcyBub3QgQSBXaGl0ZWxpc3RlZCBUb2tlbiBZZXQuAwkAAAAAAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAC1VTRFRBc3NldElECQAAAgAAAAECAAAAU1lvdSBjYW4ndCBBdHRhY2ggVVNEVCBhcyBhbiBBdHRhY2hlZCBQYXltZW50LiBPbmx5IFdoaXRlbGlzdGVkIFRva2VucyBhcmUgYWNjZXB0ZWQuAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkCQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABCQABLAAAAAICAAAAMEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCwgcGxlYXNlIGF0dGFjaCBvciBzZW5kIAUAAAAMRW50ZXJBc3NldElEAwkAAAAAAAACBQAAABBDaGVja1VTRFRCYWxhbmNlAAAAAAAAAAAACQAAAgAAAAECAAAAZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAAAAAAACBQAAABFDaGVja0Fzc2V0QmFsYW5jZQAAAAAAAAAAAAkAAAIAAAABAgAAAGVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAABmAAAAAgAAAAAAAJiWgAUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAANFlvdXIgQXR0YWNoZWQgQXNzZXQgQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggTW9yZSAFAAAADEVudGVyQXNzZXRJRAIAAAA5IFRva2VucyB0byBDbGFpbSB0aGUgbWluaW11bSBBbW91bnQgb2YgMTAgZG9sbGFyIGF0bGVhc3QuAwkAAGYAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAUAAAAQQ2hlY2tVU0RUQmFsYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAdUG9vbCBPbmx5IGhhcyBhIExpcXVpZGl0eSBvZiAJAAGkAAAAAQkAAGkAAAACBQAAABBDaGVja1VTRFRCYWxhbmNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQAgAAAB8gVVNEVC4gQWRkIExpcXVpZGl0eSBpbnRvIFBvb2wuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAAHE5ld1N1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAATVG90YWxfb2ZfUGFpcl9UeG5zXwUAAAAMRW50ZXJBc3NldElEBQAAAAZOZXdUUFQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQFAAAAFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAAFU5ld1N1bXVwb2ZVU0RUQmFsYW5jZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFHVzZXJiYWxhbmNldG9yZWNlaXZlBQAAAAtVU0RUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABlDb2xsZWN0VVNEVFN3YXBGZWVBZGRyZXNzBQAAABBTd2FwRmVldG9yZWNlaXZlBQAAAAtVU0RUQXNzZXRJRAUAAAADbmlsAAAAAWkBAAAAGFN3YXBVU0RUVG9Bc3NldFBhaXJFbnRyeQAAAAEAAAAMRW50ZXJBc3NldElEBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADZPbmx5IFVTRFQgVG9rZW4gaXMgcmVxdWlyZWQgYXMgYW4gQXR0YWNoZWQgcGF5bWVudFsxXS4EAAAAEENoZWNrVVNEVEJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQEAAAAEUNoZWNrQXNzZXRCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEBAAAABFuZXdiYWxhbmNlb2ZBc3NldAkAAGsAAAADBQAAABBDaGVja1VTRFRCYWxhbmNlBQAAABFDaGVja0Fzc2V0QmFsYW5jZQkAAGQAAAACBQAAABBDaGVja1VTRFRCYWxhbmNlCAUAAAADcG10AAAABmFtb3VudAQAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQJAABlAAAAAgUAAAARQ2hlY2tBc3NldEJhbGFuY2UFAAAAEW5ld2JhbGFuY2VvZkFzc2V0BAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAIUGFpcl9VVl8FAAAADEVudGVyQXNzZXRJRAQAAAAMVm90aW5nU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQEAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMCAAAAAUYEAAAAB1N3YXBGZWUAAAAAAAAAAAMEAAAAEFN3YXBGZWV0b3JlY2VpdmUJAABpAAAAAgkAAGgAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAUAAAAHU3dhcEZlZQAAAAAAAAAD6AQAAAAUdXNlcmJhbGFuY2V0b3JlY2VpdmUJAABlAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAAEFN3YXBGZWV0b3JlY2VpdmUEAAAAGVN1bXVwb2ZVU0RUVG9Bc3NldFN3YXBGZWUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQAAAAxFbnRlckFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAcTmV3U3VtdXBvZlVTRFRUb0Fzc2V0U3dhcEZlZQkAAGQAAAACBQAAABlTdW11cG9mVVNEVFRvQXNzZXRTd2FwRmVlBQAAABBTd2FwRmVldG9yZWNlaXZlBAAAABFTdW11cEFzc2V0QmFsYW5jZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAABlAAAAAgUAAAARQ2hlY2tBc3NldEJhbGFuY2UFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BAAAABBTdW11cFVTRFRCYWxhbmNlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAVTmV3U3VtdXBvZlVTRFRCYWxhbmNlCQAAZAAAAAIFAAAAEENoZWNrVVNEVEJhbGFuY2UIBQAAAANwbXQAAAAGYW1vdW50BAAAAARUT1BUBAAAAAckbWF0Y2gwCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAE1RvdGFsX29mX1BhaXJfVHhuc18FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAZOZXdUUFQJAABkAAAAAgUAAAAEVE9QVAAAAAAAAAAAAQMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACtQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAAAAAACBQAAAAxWb3RpbmdTdGF0dXMFAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMJAAACAAAAAQkAASwAAAACBQAAAAxFbnRlckFzc2V0SUQCAAAAICBpcyBub3QgQSBXaGl0ZWxpc3RlZCBUb2tlbiBZZXQuAwkAAAAAAAACBQAAAAxFbnRlckFzc2V0SUQJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAAB5SW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEVCBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFVTRFQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAAB+WW91IGNhbiBBdHRhY2ggVVNEVCBhcyBhbiBBdHRhY2hlZCBQYXltZW50WzFdIHRvIFN3YXAgVVNEVCBUbyBSZXF1aXJlZCBUb2tlbi4gQW55IG90aGVyIGFzc2V0IGVsc2UgdGhhbiBVU0RUIHdpbGwgYmUgcmVqZWN0ZWQuAwkAAGYAAAACAAAAAAAAmJaACAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAAFpZb3VyIEF0dGFjaGVkIFVTRFQgQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggQXRsZWFzdCAxMCBVU0RUIHRvIENsYWltIHRoZSBtaW5pbXVtIFRva2Vucy4DCQAAAAAAAAIFAAAAEENoZWNrVVNEVEJhbGFuY2UAAAAAAAAAAAAJAAACAAAAAQIAAABlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAAAAAAAIFAAAAEUNoZWNrQXNzZXRCYWxhbmNlAAAAAAAAAAAACQAAAgAAAAECAAAAZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAGYAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAUAAAARQ2hlY2tBc3NldEJhbGFuY2UJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQABpAAAAAEFAAAAEUNoZWNrQXNzZXRCYWxhbmNlAgAAACEgVG9rZW5zLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUAAAAMRW50ZXJBc3NldElEBQAAABxOZXdTdW11cG9mVVNEVFRvQXNzZXRTd2FwRmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAE1RvdGFsX29mX1BhaXJfVHhuc18FAAAADEVudGVyQXNzZXRJRAUAAAAGTmV3VFBUCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEBQAAABZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQAETAAAAAIJ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aW4gcGF5bWVudFsxXSAmIEF0dGFjaCBVU0RUIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsyXS4DCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAnlR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQgYXMgcGF5bWVudCBpbiA1MCUtNTAlLiBLaW5kbHkgQXR0YWNoIHBheW1lbnQxID0gVG9rZW4geW91IHdhbnQgdG8gYWRkIGZvciBMaXF1aWRpdHkgJiBwYXltZW50MiA9IEVxdWl2YWxlbnQgQW1vdW50IG9mIFVTRFQgVG9rZW4uAwkAAAAAAAACCAUAAAAEcG10MQAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAHhZb3UgQXR0YWNoZWQgVVNEVCBhc3NldCBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIG9ubHkgd2hpdGVsaXN0ZWQgVG9rZW4gaW4gcGF5bWVudFsxXSBhbG9uZyB3aXRoIFVTRFQgaW4gcGF5bWVudFsyXS4DCQEAAAACIT0AAAACCAUAAAAEcG10MQAAAAdhc3NldElkCQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAAGtJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQgZm9yIExpcXVpZGl0eSBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIFN0cmluZyBBc3NldCBvciBXaGl0ZWxpc3RlZCBUb2tlbiBvbmx5LgMJAQAAAAIhPQAAAAIIBQAAAARwbXQxAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAa0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggU3RyaW5nIEFzc2V0IG9yIFdoaXRlbGlzdGVkIFRva2VuIG9ubHkuAwkBAAAAAiE9AAAAAggFAAAABHBtdDIAAAAHYXNzZXRJZAUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAABqV3JvbmcgQXNzZXQgQXR0YWNoZWQgaW4gcGF5bWVudHNbMl0sIFBsZWFzZSBhdHRhY2ggcGF5bWVudFsxXSA9IExpcXVpZGl0eSBUb2tlbiAmIHBheW1lbnRbMl0gPSBVU0RUIFRva2VuLgMJAABmAAAAAgAAAAAAAJiWgAgFAAAABHBtdDIAAAAGYW1vdW50CQAAAgAAAAECAAAAVXBsZWFzZSBhdHRhY2ggYXRsZWFzdCAxMCBVU0RUIGluIHBheW1lbnRbMl0gJiBFcXVpdmFsZW50IHdvcnRoIG9mIFRva2VuIGluIHBheW1lbnRbMV0DCQEAAAACIT0AAAACCAUAAAAEcG10MgAAAAZhbW91bnQFAAAAFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAAACAAAAAQkAASwAAAACAgAAAFtBdHRhY2hlZCBwYXltZW50WzJdIHF1YW50aXR5IGlzIG5vdCBtYXRjaGluZyBhcyBwZXIgYXR0YWNoZWQgcGF5bWVudFsxXS5wYXltZW50WzJdIG11c3QgYmUgCQABpAAAAAEFAAAAFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAAFE5ld1VTRFRIb2xkaW5nSW5QYWlyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEBQAAABVOZXdBc3NldEhvbGRpbmdJblBhaXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAJVG90YWxfTFBfBQAAAAxFbnRlckFzc2V0SUQFAAAAEE5ld0xQVG9rZW5Jc3N1ZWQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAA5SZWlzc3VlYXNzZXRJZAUAAAAScXVhbnRpdHlvZkxQVG9rZW4xBgkABEwAAAACCQEAAAAOU2NyaXB0VHJh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SG9sZGluZ0luUGFpcgkAAGUAAAACBQAAABJBc3NldEhvbGRpbmdJblBhaXIFAAAAEFNxcnRvZkF0dGFjaFB5bXQEAAAADUxQVG9rZW5Jc3N1ZWQEAAAAByRtYXRjaDAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAJVG90YWxfTFBfBQAAAAxFbnRlckFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAQTmV3TFBUb2tlbklzc3VlZAkAAGUAAAACBQAAAA1MUFRva2VuSXNzdWVkCAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACNQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0LgMJAAAAAAAAAgUAAAAMVm90aW5nU3RhdHVzBQAAABNDdXJyZW50Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAAB4gaXMgbm90IEEgV2hpdGVsaXN0IFRva2VuIFlldC4DCQAAAAAAAAIJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElEBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAGtEb24ndCBjaG9vc2UgVVNEVCBBc3NldElEIGFzIElucHV0LCBPbmx5IFdoaXRlbGlzdGVkIEFzc2V0IGFzIElucHV0IFN0cmluZyAmIEF0dGFjaCBMUCBUb2tlbnMgYXMgcGF5bWVudFsxXQMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAASUmVpc3N1ZWFibGVhc3NldElkCQAAAgAAAAECAAAAR1dyb25nIEFzc2V0IGlzIGF0dGFjaGVkIGluIHBheW1lbnRbMV0gb3IgTFAgVG9rZW4gTm90IEZvdW5kIG9yIE1pc3NpbmcuCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAASUmVpc3N1ZWFibGVhc3NldElkCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAlUb3RhbF9MUF8FAAAADEVudGVyQXNzZXRJRAUAAAAQTmV3TFBUb2tlbklzc3VlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAUAAAAUTmV3VVNEVEhvbGRpbmdJblBhaXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQFAAAAFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAC1VzZXJMUFdvcnRoBQAAAAtVU0RUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEFNxcnRvZkF0dGFjaFB5bXQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElEBQAAAANuaWwAAAABaQEAAAALUmVtb3ZlRW50cnkAAAAEAAAAA0tleQAAAARLZXkxAAAABEtleTIAAAAES2V5MwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAANLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAES2V5MQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAARLZXkyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAABEtleTMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tlea9/OU0=", "height": 1867313, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BU3QW2q2cdpG8iJuszoMVi2W4dFxf56KQk1gwddyECU5 Next: 4Aj7MvmJcYb9PC41x4CMuZvZPsFdwKF8uEk72pjfGLUv Diff:
OldNewDifferences
3838 then throw("Two attached assets expected as payment. Kindly Attach payment1 = CODE Token & payment2 = Token you want to List for Voting.")
3939 else if ((i.assetId != b))
4040 then throw("Incorrect asset attached for Voting in payment[1], please attach 2000 CODE Token only.")
41- else if ((i.amount != 10000000))
41+ else if ((i.amount != 200000000000))
4242 then throw((((("You attached only " + toString(fraction(i.amount, 1, 100000000))) + ".") + toString(fraction(i.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 2000 CODE Token."))
4343 else if ((j.assetId != u))
4444 then throw("Input String & Attached AssetID in payment2 is not matching.")
133133 let Q = L.decimals
134134 let x = "P"
135135 let C = valueOrErrorMessage(getString(this, ("Voting_Status_" + g)), ("Voting Status is Missing for " + g))
136- let R = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP)), fraction((Q + 6), 1, 2), true)
137- let S = calculateAssetId(R)
136+ let R = (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP))
137+ let S = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), R, fraction((Q + 6), 1, 2), true)
138+ let T = calculateAssetId(S)
138139 if ((O != w))
139140 then throw((("Your are not allowded to Issue LP Token. Only " + O) + " can issue the LP Token."))
140141 else if ((z != g))
141142 then throw("Pair is not available in Voting List.")
142143 else if ((C != x))
143144 then throw("LP Token must be a Whitelisted Token.")
144- else [R, StringEntry(("LP_" + g), toBase58String(S))]
145+ else [S, StringEntry(("LP_" + g), toBase58String(T)), IntegerEntry(("Total_LP_" + g), R)]
145146 }
146147
147148
154155 else throw("Whitelisted Token is required as Attached payment[1].")
155156 let z = getString(this, ("Pair_UV_" + g))
156157 let C = getStringValue(this, ("Voting_Status_" + g))
157- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
158- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
159- let V = fraction(T, U, (U + v.amount))
160- let W = (T - V)
161- let X = "F"
162- let Y = 3
163- let Z = ((W * Y) / 1000)
164- let aa = (W - Z)
165- let ab = {
158+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
159+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
160+ let W = fraction(U, V, (V + v.amount))
161+ let X = (U - W)
162+ let Y = "F"
163+ let Z = 3
164+ let aa = ((X * Z) / 1000)
165+ let ab = (X - aa)
166+ let ac = {
166167 let E = getInteger(this, ((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)))
167168 if ($isInstanceOf(E, "Int"))
168169 then {
171172 }
172173 else 0
173174 }
174- let ac = (ab + Z)
175- let ad = {
175+ let ad = (ac + aa)
176+ let ae = {
176177 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
177178 if ($isInstanceOf(E, "Int"))
178179 then {
181182 }
182183 else 0
183184 }
184- let ae = (U + v.amount)
185- let af = {
185+ let af = (V + v.amount)
186+ let ag = {
186187 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
187188 if ($isInstanceOf(E, "Int"))
188189 then {
191192 }
192193 else 0
193194 }
194- let ag = (T - W)
195- let ah = {
195+ let ah = (U - X)
196+ let ai = {
196197 let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
197198 if ($isInstanceOf(E, "Int"))
198199 then {
201202 }
202203 else 0
203204 }
204- let ai = (ah + 1)
205+ let aj = (ai + 1)
205206 if ((g == toBase58String(a)))
206207 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
207208 else if ((z != g))
208209 then throw("Pair is not available in Whitelisted Asset.")
209- else if ((C == X))
210+ else if ((C == Y))
210211 then throw((g + " is not A Whitelisted Token Yet."))
211212 else if ((v.assetId == a))
212213 then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
213214 else if ((v.assetId != fromBase58String(g)))
214215 then throw(("Incorrect asset attached, please attach or send " + g))
215- else if ((T == 0))
216+ else if ((U == 0))
216217 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
217- else if ((U == 0))
218+ else if ((V == 0))
218219 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
219- else if ((10000000 > W))
220+ else if ((10000000 > X))
220221 then throw((("Your Attached Asset Amount is very low. Attach More " + g) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
221- else if ((W > T))
222- then throw((("Pool Only has a Liquidity of " + toString((T / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
223- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ac), IntegerEntry(("Total_of_Pair_Txns_" + g), ai), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ae), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ag), ScriptTransfer(f.caller, aa, a), ScriptTransfer(d, Z, a)]
222+ else if ((X > U))
223+ then throw((("Pool Only has a Liquidity of " + toString((U / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
224+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ad), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, a), ScriptTransfer(d, aa, a)]
224225 }
225226
226227
231232 let v = if ((size(f.payments) == 1))
232233 then f.payments[0]
233234 else throw("Only USDT Token is required as an Attached payment[1].")
234- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
235- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
236- let aj = fraction(T, U, (T + v.amount))
237- let W = (U - aj)
235+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
236+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
237+ let ak = fraction(U, V, (U + v.amount))
238+ let X = (V - ak)
238239 let z = getString(this, ("Pair_UV_" + g))
239240 let C = getStringValue(this, ("Voting_Status_" + g))
240- let X = "F"
241- let Y = 3
242- let Z = ((W * Y) / 1000)
243- let aa = (W - Z)
244- let ak = {
241+ let Y = "F"
242+ let Z = 3
243+ let aa = ((X * Z) / 1000)
244+ let ab = (X - aa)
245+ let al = {
245246 let E = getInteger(this, ("Total_Swap_Fee_Collected_" + g))
246247 if ($isInstanceOf(E, "Int"))
247248 then {
250251 }
251252 else 0
252253 }
253- let al = (ak + Z)
254- let ad = {
254+ let am = (al + aa)
255+ let ae = {
255256 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
256257 if ($isInstanceOf(E, "Int"))
257258 then {
260261 }
261262 else 0
262263 }
263- let ae = (U - W)
264- let af = {
264+ let af = (V - X)
265+ let ag = {
265266 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
266267 if ($isInstanceOf(E, "Int"))
267268 then {
270271 }
271272 else 0
272273 }
273- let ag = (T + v.amount)
274- let ah = {
274+ let ah = (U + v.amount)
275+ let ai = {
275276 let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
276277 if ($isInstanceOf(E, "Int"))
277278 then {
280281 }
281282 else 0
282283 }
283- let ai = (ah + 1)
284+ let aj = (ai + 1)
284285 if ((z != g))
285286 then throw("Pair is not available in Whitelisted Asset.")
286- else if ((C == X))
287+ else if ((C == Y))
287288 then throw((g + " is not A Whitelisted Token Yet."))
288289 else if ((g == toBase58String(a)))
289290 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach USDT as an attachment Token in payment[1].")
291292 then throw("You can Attach USDT as an Attached Payment[1] to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
292293 else if ((10000000 > v.amount))
293294 then throw("Your Attached USDT Amount is very low. Attach Atleast 10 USDT to Claim the minimum Tokens.")
294- else if ((T == 0))
295+ else if ((U == 0))
295296 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
296- else if ((U == 0))
297+ else if ((V == 0))
297298 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
298- else if ((W > U))
299- then throw((("Pool Only has a Liquidity of " + toString(U)) + " Tokens. Add Liquidity into Pool."))
300- else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), al), IntegerEntry(("Total_of_Pair_Txns_" + g), ai), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ae), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ag), ScriptTransfer(f.caller, aa, fromBase58String(g)), ScriptTransfer(e, Z, fromBase58String(g))]
299+ else if ((X > V))
300+ then throw((("Pool Only has a Liquidity of " + toString(V)) + " Tokens. Add Liquidity into Pool."))
301+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), am), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, fromBase58String(g)), ScriptTransfer(e, aa, fromBase58String(g))]
301302 }
302303
303304
309310 let j = value(f.payments[1])
310311 let z = getString(this, ("Pair_UV_" + g))
311312 let C = getStringValue(this, ("Voting_Status_" + g))
312- let am = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
313- let X = "F"
314- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
315- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
316- let an = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
317- let Q = an.decimals
318- let ao = pow((T / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
319- let ap = pow((U / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
320- let aq = pow((((ao * 1000000) / ap) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
321- let ar = (6 + Q)
322- let as = (ar / 2)
323- let at = fraction(aq, i.amount, pow(10, 0, ar, 0, 0, UP))
324- let au = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, as, DOWN)
325- let av = {
313+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
314+ let Y = "F"
315+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
316+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
317+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
318+ let Q = ao.decimals
319+ let ap = pow((U / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
320+ let aq = pow((V / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
321+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
322+ let as = (6 + Q)
323+ let at = (as / 2)
324+ let au = fraction(ar, i.amount, pow(10, 0, as, 0, 0, UP))
325+ let av = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, at, DOWN)
326+ let aw = {
326327 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
327328 if ($isInstanceOf(E, "Int"))
328329 then {
331332 }
332333 else 0
333334 }
334- let aw = (av + j.amount)
335- let ax = {
335+ let ax = (aw + j.amount)
336+ let ay = {
336337 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
337338 if ($isInstanceOf(E, "Int"))
338339 then {
341342 }
342343 else 0
343344 }
344- let ay = (ax + i.amount)
345- let az = {
345+ let az = (ay + i.amount)
346+ let aA = {
346347 let E = getIntegerValue(this, ("Total_LP_" + g))
347348 if ($isInstanceOf(E, "Int"))
348349 then {
351352 }
352353 else 0
353354 }
354- let aA = (az + au)
355+ let aB = (aA + av)
355356 if ((z != g))
356357 then throw("Pair is not available in Whitelisted Asset.")
357- else if ((C == X))
358+ else if ((C == Y))
358359 then throw((g + " is not A Whitelisted Token Yet."))
359360 else if ((g == toBase58String(a)))
360361 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDT as an attachment Token in payment[2].")
370371 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDT Token.")
371372 else if ((10000000 > j.amount))
372373 then throw("please attach atleast 10 USDT in payment[2] & Equivalent worth of Token in payment[1]")
373- else if ((j.amount != at))
374- then throw(("Attached payment[2] quantity is not matching as per attached payment[1].payment[2] must be " + toString(at)))
375- else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), aw), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ay), IntegerEntry(("Total_LP_" + g), aA), Reissue(am, au, true), ScriptTransfer(f.caller, au, am)]
374+ else if ((j.amount != au))
375+ then throw(("Attached payment[2] quantity is not matching as per attached payment[1].payment[2] must be " + toString(au)))
376+ else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), IntegerEntry(("Total_LP_" + g), aB), Reissue(an, av, true), ScriptTransfer(f.caller, av, an)]
376377 }
377378
378379
385386 else throw("No payment attached, Please Attach LP Token as payment[1].")
386387 let z = getString(this, ("Pair_UV_" + g))
387388 let C = getStringValue(this, ("Voting_Status_" + g))
388- let aB = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
389- let X = "F"
390- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
391- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
392- let an = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
393- let Q = an.decimals
394- let ao = pow((T / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
395- let ap = pow((U / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
396- let aq = pow((((ao * 1000000) / ap) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
397- let ar = (6 + Q)
398- let as = (ar / 2)
399- let aC = fraction(pow(v.amount, as, 2, 0, 6, HALFUP), 1, fraction(aq, 1, pow(10, 0, 6, 0, 0, UP)))
400- let aD = pow(aC, 0, 5, 1, as, DOWN)
401- let aE = fraction(aq, aD, pow(10, 0, ar, 0, 0, UP))
402- let av = {
389+ let aC = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
390+ let Y = "F"
391+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
392+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
393+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
394+ let Q = ao.decimals
395+ let ap = pow((U / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
396+ let aq = pow((V / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
397+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
398+ let as = (6 + Q)
399+ let at = (as / 2)
400+ let aD = fraction(pow(v.amount, at, 2, 0, 6, HALFUP), 1, fraction(ar, 1, pow(10, 0, 6, 0, 0, UP)))
401+ let aE = pow(aD, 0, 5, 1, at, DOWN)
402+ let aF = fraction(ar, aE, pow(10, 0, as, 0, 0, UP))
403+ let aw = {
403404 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
404405 if ($isInstanceOf(E, "Int"))
405406 then {
408409 }
409410 else 0
410411 }
411- let aw = (av - aE)
412- let ax = {
412+ let ax = (aw - aF)
413+ let ay = {
413414 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
414415 if ($isInstanceOf(E, "Int"))
415416 then {
418419 }
419420 else 0
420421 }
421- let ay = (ax - aD)
422- let az = {
422+ let az = (ay - aE)
423+ let aA = {
423424 let E = getIntegerValue(this, ("Total_LP_" + g))
424425 if ($isInstanceOf(E, "Int"))
425426 then {
428429 }
429430 else 0
430431 }
431- let aA = (az - v.amount)
432+ let aB = (aA - v.amount)
432433 if ((z != g))
433434 then throw("Pair is not available in Whitelist.")
434- else if ((C == X))
435+ else if ((C == Y))
435436 then throw((g + " is not A Whitelist Token Yet."))
436437 else if ((fromBase58String(g) == a))
437438 then throw("Don't choose USDT AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
438- else if ((v.assetId != aB))
439+ else if ((v.assetId != aC))
439440 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
440- else [Burn(aB, v.amount), IntegerEntry(("Total_LP_" + g), aA), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), aw), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ay), ScriptTransfer(f.caller, aE, a), ScriptTransfer(f.caller, aD, fromBase58String(g))]
441+ else [Burn(aC, v.amount), IntegerEntry(("Total_LP_" + g), aB), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), ScriptTransfer(f.caller, aF, a), ScriptTransfer(f.caller, aE, fromBase58String(g))]
441442 }
442443
443444
444445
445446 @Callable(f)
446-func RemoveEntry (aF,aG,aH,aI) = [DeleteEntry(aF), DeleteEntry(aG), DeleteEntry(aH), DeleteEntry(aI)]
447+func RemoveEntry (aG,aH,aI,aJ) = [DeleteEntry(aG), DeleteEntry(aH), DeleteEntry(aI), DeleteEntry(aJ)]
447448
448449
449-@Verifier(aJ)
450-func aK () = {
451- let E = aJ
452- sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
450+@Verifier(aK)
451+func aL () = {
452+ let E = aK
453+ sigVerify(aK.bodyBytes, aK.proofs[0], aK.senderPublicKey)
453454 }
454455
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
55
66 let b = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
77
88 let c = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
99
1010 let d = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1111
1212 let e = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1313
1414 @Callable(f)
1515 func RegisterPairForVoting (g,h) = {
1616 let i = value(f.payments[0])
1717 let j = value(f.payments[1])
1818 let k = 90
1919 let l = toBase58String(f.caller.bytes)
2020 let m = !(isDefined(j.assetId))
2121 let n = 1440
2222 let o = (n * h)
2323 let p = (o - 43199)
2424 let q = ((100000 + ((11574 * p) / 10000)) * 100000000)
2525 let r = (height + o)
2626 let s = getString(this, ("Pair_UV_" + g))
2727 let t = "F"
2828 let u = fromBase58String(g)
2929 if ((43 > size(g)))
3030 then throw("Wrong AssetID is Entered for Voting. Please Enter a Valid AssetID. Probably you entered an AssetID less than 43 Chars.")
3131 else if ((29 >= h))
3232 then throw("Enter no. of days in between 30 to 90.")
3333 else if ((h > k))
3434 then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.")
3535 else if ((s == g))
3636 then throw("Pair Already Exist in Voting List.")
3737 else if ((size(f.payments) != 2))
3838 then throw("Two attached assets expected as payment. Kindly Attach payment1 = CODE Token & payment2 = Token you want to List for Voting.")
3939 else if ((i.assetId != b))
4040 then throw("Incorrect asset attached for Voting in payment[1], please attach 2000 CODE Token only.")
41- else if ((i.amount != 10000000))
41+ else if ((i.amount != 200000000000))
4242 then throw((((("You attached only " + toString(fraction(i.amount, 1, 100000000))) + ".") + toString(fraction(i.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 2000 CODE Token."))
4343 else if ((j.assetId != u))
4444 then throw("Input String & Attached AssetID in payment2 is not matching.")
4545 else if ((m == true))
4646 then throw("You Attached TN Asset ID for Voting, please attach fsTN instead of TN or Token You want to list in payment[2].")
4747 else [StringEntry(("Pair_UV_" + g), g), StringEntry(("Voting_Status_" + g), t), IntegerEntry(("Voting_SH_" + g), height), IntegerEntry(("Voting_EH_" + g), r), IntegerEntry(("Voting_Period_" + g), o), IntegerEntry(("Listing_Fee_" + g), i.amount), IntegerEntry(("Votes_Req_" + g), (q / 3)), IntegerEntry(("Votes_Rcvd_" + g), 0), ScriptTransfer(c, i.amount, b)]
4848 }
4949
5050
5151
5252 @Callable(f)
5353 func DoVoting (g) = {
5454 let v = if ((size(f.payments) == 1))
5555 then f.payments[0]
5656 else throw((toBase58String(b) + "CODE Token is required as Attached payment"))
5757 let w = toBase58String(f.caller.bytes)
5858 let x = "P"
5959 let y = getIntegerValue(this, ("Voting_EH_" + g))
6060 let z = getString(this, ("Pair_UV_" + g))
6161 let A = getIntegerValue(this, ("Votes_Req_" + g))
6262 let B = getIntegerValue(this, ("Votes_Rcvd_" + g))
6363 let C = getStringValue(this, ("Voting_Status_" + g))
6464 let D = {
6565 let E = getInteger(this, ("Votes_Rcvd_" + g))
6666 if ($isInstanceOf(E, "Int"))
6767 then {
6868 let F = E
6969 F
7070 }
7171 else 0
7272 }
7373 let G = (D + v.amount)
7474 let H = {
7575 let E = getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g))
7676 if ($isInstanceOf(E, "Int"))
7777 then {
7878 let I = E
7979 I
8080 }
8181 else 0
8282 }
8383 let J = (H + v.amount)
8484 let K = (B >= A)
8585 let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
8686 if ((z != g))
8787 then throw("Pair is not available in Voting List.")
8888 else if ((height > y))
8989 then throw((("Voting timeline for " + g) + " is expired."))
9090 else if ((v.assetId != b))
9191 then throw((("Kindly Attach Only " + toBase58String(b)) + " Token."))
9292 else if ((C == x))
9393 then throw((("Voting for " + g) + " pair is completed & it’s available in whitelist."))
9494 else if (K)
9595 then [StringEntry(("Voting_Status_" + g), x), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), 0), IntegerEntry(("Total_of_Pair_Txns_" + g), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + g), 0), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
9696 else [IntegerEntry(("Votes_Rcvd_" + g), G), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
9797 }
9898
9999
100100
101101 @Callable(f)
102102 func WithdrawVotedTokens (g) = {
103103 let v = if ((size(f.payments) == 1))
104104 then f.payments[0]
105105 else throw("0.1 TN Token is required as Attached payment.")
106106 let w = toBase58String(f.caller.bytes)
107107 let y = getIntegerValue(this, ("Voting_EH_" + g))
108108 let z = getString(this, ("Pair_UV_" + g))
109109 let M = valueOrErrorMessage(getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g)), (w + " Address never voted & exist in list."))
110110 let N = (y - height)
111111 if ((z != g))
112112 then throw("Pair is not available in Voting List.")
113113 else if ((y > height))
114114 then throw((("Voting Already Running. You can withdraw your CODE Token after " + toString(N)) + " blocks"))
115115 else if ((0 >= M))
116116 then throw("You don't have any dues of CODE balance in this Voting Pair.")
117117 else if (isDefined(v.assetId))
118118 then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
119119 else if ((v.amount != 10000000))
120120 then throw("Please attach 0.1 TN as a fee to release your token.")
121121 else [IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), 0), ScriptTransfer(f.caller, M, b)]
122122 }
123123
124124
125125
126126 @Callable(f)
127127 func IssueLPToken (g) = {
128128 let O = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
129129 let w = toBase58String(f.caller.bytes)
130130 let z = valueOrErrorMessage(getString(this, ("Pair_UV_" + g)), "Asset not Found in Whitelisted Token")
131131 let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
132132 let P = L.name
133133 let Q = L.decimals
134134 let x = "P"
135135 let C = valueOrErrorMessage(getString(this, ("Voting_Status_" + g)), ("Voting Status is Missing for " + g))
136- let R = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP)), fraction((Q + 6), 1, 2), true)
137- let S = calculateAssetId(R)
136+ let R = (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP))
137+ let S = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), R, fraction((Q + 6), 1, 2), true)
138+ let T = calculateAssetId(S)
138139 if ((O != w))
139140 then throw((("Your are not allowded to Issue LP Token. Only " + O) + " can issue the LP Token."))
140141 else if ((z != g))
141142 then throw("Pair is not available in Voting List.")
142143 else if ((C != x))
143144 then throw("LP Token must be a Whitelisted Token.")
144- else [R, StringEntry(("LP_" + g), toBase58String(S))]
145+ else [S, StringEntry(("LP_" + g), toBase58String(T)), IntegerEntry(("Total_LP_" + g), R)]
145146 }
146147
147148
148149
149150 @Callable(f)
150151 func SwapAssetToUSDTPairEntry (g) = {
151152 let w = toBase58String(f.caller.bytes)
152153 let v = if ((size(f.payments) == 1))
153154 then f.payments[0]
154155 else throw("Whitelisted Token is required as Attached payment[1].")
155156 let z = getString(this, ("Pair_UV_" + g))
156157 let C = getStringValue(this, ("Voting_Status_" + g))
157- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
158- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
159- let V = fraction(T, U, (U + v.amount))
160- let W = (T - V)
161- let X = "F"
162- let Y = 3
163- let Z = ((W * Y) / 1000)
164- let aa = (W - Z)
165- let ab = {
158+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
159+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
160+ let W = fraction(U, V, (V + v.amount))
161+ let X = (U - W)
162+ let Y = "F"
163+ let Z = 3
164+ let aa = ((X * Z) / 1000)
165+ let ab = (X - aa)
166+ let ac = {
166167 let E = getInteger(this, ((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)))
167168 if ($isInstanceOf(E, "Int"))
168169 then {
169170 let F = E
170171 F
171172 }
172173 else 0
173174 }
174- let ac = (ab + Z)
175- let ad = {
175+ let ad = (ac + aa)
176+ let ae = {
176177 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
177178 if ($isInstanceOf(E, "Int"))
178179 then {
179180 let F = E
180181 F
181182 }
182183 else 0
183184 }
184- let ae = (U + v.amount)
185- let af = {
185+ let af = (V + v.amount)
186+ let ag = {
186187 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
187188 if ($isInstanceOf(E, "Int"))
188189 then {
189190 let F = E
190191 F
191192 }
192193 else 0
193194 }
194- let ag = (T - W)
195- let ah = {
195+ let ah = (U - X)
196+ let ai = {
196197 let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
197198 if ($isInstanceOf(E, "Int"))
198199 then {
199200 let F = E
200201 F
201202 }
202203 else 0
203204 }
204- let ai = (ah + 1)
205+ let aj = (ai + 1)
205206 if ((g == toBase58String(a)))
206207 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
207208 else if ((z != g))
208209 then throw("Pair is not available in Whitelisted Asset.")
209- else if ((C == X))
210+ else if ((C == Y))
210211 then throw((g + " is not A Whitelisted Token Yet."))
211212 else if ((v.assetId == a))
212213 then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
213214 else if ((v.assetId != fromBase58String(g)))
214215 then throw(("Incorrect asset attached, please attach or send " + g))
215- else if ((T == 0))
216+ else if ((U == 0))
216217 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
217- else if ((U == 0))
218+ else if ((V == 0))
218219 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
219- else if ((10000000 > W))
220+ else if ((10000000 > X))
220221 then throw((("Your Attached Asset Amount is very low. Attach More " + g) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
221- else if ((W > T))
222- then throw((("Pool Only has a Liquidity of " + toString((T / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
223- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ac), IntegerEntry(("Total_of_Pair_Txns_" + g), ai), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ae), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ag), ScriptTransfer(f.caller, aa, a), ScriptTransfer(d, Z, a)]
222+ else if ((X > U))
223+ then throw((("Pool Only has a Liquidity of " + toString((U / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
224+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ad), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, a), ScriptTransfer(d, aa, a)]
224225 }
225226
226227
227228
228229 @Callable(f)
229230 func SwapUSDTToAssetPairEntry (g) = {
230231 let w = toBase58String(f.caller.bytes)
231232 let v = if ((size(f.payments) == 1))
232233 then f.payments[0]
233234 else throw("Only USDT Token is required as an Attached payment[1].")
234- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
235- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
236- let aj = fraction(T, U, (T + v.amount))
237- let W = (U - aj)
235+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
236+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
237+ let ak = fraction(U, V, (U + v.amount))
238+ let X = (V - ak)
238239 let z = getString(this, ("Pair_UV_" + g))
239240 let C = getStringValue(this, ("Voting_Status_" + g))
240- let X = "F"
241- let Y = 3
242- let Z = ((W * Y) / 1000)
243- let aa = (W - Z)
244- let ak = {
241+ let Y = "F"
242+ let Z = 3
243+ let aa = ((X * Z) / 1000)
244+ let ab = (X - aa)
245+ let al = {
245246 let E = getInteger(this, ("Total_Swap_Fee_Collected_" + g))
246247 if ($isInstanceOf(E, "Int"))
247248 then {
248249 let F = E
249250 F
250251 }
251252 else 0
252253 }
253- let al = (ak + Z)
254- let ad = {
254+ let am = (al + aa)
255+ let ae = {
255256 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
256257 if ($isInstanceOf(E, "Int"))
257258 then {
258259 let F = E
259260 F
260261 }
261262 else 0
262263 }
263- let ae = (U - W)
264- let af = {
264+ let af = (V - X)
265+ let ag = {
265266 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
266267 if ($isInstanceOf(E, "Int"))
267268 then {
268269 let F = E
269270 F
270271 }
271272 else 0
272273 }
273- let ag = (T + v.amount)
274- let ah = {
274+ let ah = (U + v.amount)
275+ let ai = {
275276 let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
276277 if ($isInstanceOf(E, "Int"))
277278 then {
278279 let F = E
279280 F
280281 }
281282 else 0
282283 }
283- let ai = (ah + 1)
284+ let aj = (ai + 1)
284285 if ((z != g))
285286 then throw("Pair is not available in Whitelisted Asset.")
286- else if ((C == X))
287+ else if ((C == Y))
287288 then throw((g + " is not A Whitelisted Token Yet."))
288289 else if ((g == toBase58String(a)))
289290 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach USDT as an attachment Token in payment[1].")
290291 else if ((v.assetId != a))
291292 then throw("You can Attach USDT as an Attached Payment[1] to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
292293 else if ((10000000 > v.amount))
293294 then throw("Your Attached USDT Amount is very low. Attach Atleast 10 USDT to Claim the minimum Tokens.")
294- else if ((T == 0))
295+ else if ((U == 0))
295296 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
296- else if ((U == 0))
297+ else if ((V == 0))
297298 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
298- else if ((W > U))
299- then throw((("Pool Only has a Liquidity of " + toString(U)) + " Tokens. Add Liquidity into Pool."))
300- else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), al), IntegerEntry(("Total_of_Pair_Txns_" + g), ai), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ae), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ag), ScriptTransfer(f.caller, aa, fromBase58String(g)), ScriptTransfer(e, Z, fromBase58String(g))]
299+ else if ((X > V))
300+ then throw((("Pool Only has a Liquidity of " + toString(V)) + " Tokens. Add Liquidity into Pool."))
301+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), am), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, fromBase58String(g)), ScriptTransfer(e, aa, fromBase58String(g))]
301302 }
302303
303304
304305
305306 @Callable(f)
306307 func AddLiquidity (g) = {
307308 let w = toBase58String(f.caller.bytes)
308309 let i = value(f.payments[0])
309310 let j = value(f.payments[1])
310311 let z = getString(this, ("Pair_UV_" + g))
311312 let C = getStringValue(this, ("Voting_Status_" + g))
312- let am = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
313- let X = "F"
314- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
315- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
316- let an = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
317- let Q = an.decimals
318- let ao = pow((T / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
319- let ap = pow((U / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
320- let aq = pow((((ao * 1000000) / ap) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
321- let ar = (6 + Q)
322- let as = (ar / 2)
323- let at = fraction(aq, i.amount, pow(10, 0, ar, 0, 0, UP))
324- let au = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, as, DOWN)
325- let av = {
313+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
314+ let Y = "F"
315+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
316+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
317+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
318+ let Q = ao.decimals
319+ let ap = pow((U / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
320+ let aq = pow((V / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
321+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
322+ let as = (6 + Q)
323+ let at = (as / 2)
324+ let au = fraction(ar, i.amount, pow(10, 0, as, 0, 0, UP))
325+ let av = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, at, DOWN)
326+ let aw = {
326327 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
327328 if ($isInstanceOf(E, "Int"))
328329 then {
329330 let F = E
330331 F
331332 }
332333 else 0
333334 }
334- let aw = (av + j.amount)
335- let ax = {
335+ let ax = (aw + j.amount)
336+ let ay = {
336337 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
337338 if ($isInstanceOf(E, "Int"))
338339 then {
339340 let F = E
340341 F
341342 }
342343 else 0
343344 }
344- let ay = (ax + i.amount)
345- let az = {
345+ let az = (ay + i.amount)
346+ let aA = {
346347 let E = getIntegerValue(this, ("Total_LP_" + g))
347348 if ($isInstanceOf(E, "Int"))
348349 then {
349350 let F = E
350351 F
351352 }
352353 else 0
353354 }
354- let aA = (az + au)
355+ let aB = (aA + av)
355356 if ((z != g))
356357 then throw("Pair is not available in Whitelisted Asset.")
357- else if ((C == X))
358+ else if ((C == Y))
358359 then throw((g + " is not A Whitelisted Token Yet."))
359360 else if ((g == toBase58String(a)))
360361 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDT as an attachment Token in payment[2].")
361362 else if ((size(f.payments) != 2))
362363 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of USDT Token.")
363364 else if ((i.assetId == a))
364365 then throw("You Attached USDT asset in payment[1], please attach only whitelisted Token in payment[1] along with USDT in payment[2].")
365366 else if ((i.assetId != fromBase58String(g)))
366367 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
367368 else if ((i.assetId != fromBase58String(g)))
368369 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
369370 else if ((j.assetId != a))
370371 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDT Token.")
371372 else if ((10000000 > j.amount))
372373 then throw("please attach atleast 10 USDT in payment[2] & Equivalent worth of Token in payment[1]")
373- else if ((j.amount != at))
374- then throw(("Attached payment[2] quantity is not matching as per attached payment[1].payment[2] must be " + toString(at)))
375- else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), aw), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ay), IntegerEntry(("Total_LP_" + g), aA), Reissue(am, au, true), ScriptTransfer(f.caller, au, am)]
374+ else if ((j.amount != au))
375+ then throw(("Attached payment[2] quantity is not matching as per attached payment[1].payment[2] must be " + toString(au)))
376+ else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), IntegerEntry(("Total_LP_" + g), aB), Reissue(an, av, true), ScriptTransfer(f.caller, av, an)]
376377 }
377378
378379
379380
380381 @Callable(f)
381382 func RemoveLiquidity (g) = {
382383 let w = toBase58String(f.caller.bytes)
383384 let v = if ((size(f.payments) == 1))
384385 then f.payments[0]
385386 else throw("No payment attached, Please Attach LP Token as payment[1].")
386387 let z = getString(this, ("Pair_UV_" + g))
387388 let C = getStringValue(this, ("Voting_Status_" + g))
388- let aB = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
389- let X = "F"
390- let T = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
391- let U = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
392- let an = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
393- let Q = an.decimals
394- let ao = pow((T / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
395- let ap = pow((U / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
396- let aq = pow((((ao * 1000000) / ap) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
397- let ar = (6 + Q)
398- let as = (ar / 2)
399- let aC = fraction(pow(v.amount, as, 2, 0, 6, HALFUP), 1, fraction(aq, 1, pow(10, 0, 6, 0, 0, UP)))
400- let aD = pow(aC, 0, 5, 1, as, DOWN)
401- let aE = fraction(aq, aD, pow(10, 0, ar, 0, 0, UP))
402- let av = {
389+ let aC = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
390+ let Y = "F"
391+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
392+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
393+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
394+ let Q = ao.decimals
395+ let ap = pow((U / pow(10, 6, 6, 0, 0, UP)), 0, 1, 0, 0, UP)
396+ let aq = pow((V / pow(10, Q, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
397+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
398+ let as = (6 + Q)
399+ let at = (as / 2)
400+ let aD = fraction(pow(v.amount, at, 2, 0, 6, HALFUP), 1, fraction(ar, 1, pow(10, 0, 6, 0, 0, UP)))
401+ let aE = pow(aD, 0, 5, 1, at, DOWN)
402+ let aF = fraction(ar, aE, pow(10, 0, as, 0, 0, UP))
403+ let aw = {
403404 let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
404405 if ($isInstanceOf(E, "Int"))
405406 then {
406407 let F = E
407408 F
408409 }
409410 else 0
410411 }
411- let aw = (av - aE)
412- let ax = {
412+ let ax = (aw - aF)
413+ let ay = {
413414 let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
414415 if ($isInstanceOf(E, "Int"))
415416 then {
416417 let F = E
417418 F
418419 }
419420 else 0
420421 }
421- let ay = (ax - aD)
422- let az = {
422+ let az = (ay - aE)
423+ let aA = {
423424 let E = getIntegerValue(this, ("Total_LP_" + g))
424425 if ($isInstanceOf(E, "Int"))
425426 then {
426427 let F = E
427428 F
428429 }
429430 else 0
430431 }
431- let aA = (az - v.amount)
432+ let aB = (aA - v.amount)
432433 if ((z != g))
433434 then throw("Pair is not available in Whitelist.")
434- else if ((C == X))
435+ else if ((C == Y))
435436 then throw((g + " is not A Whitelist Token Yet."))
436437 else if ((fromBase58String(g) == a))
437438 then throw("Don't choose USDT AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
438- else if ((v.assetId != aB))
439+ else if ((v.assetId != aC))
439440 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
440- else [Burn(aB, v.amount), IntegerEntry(("Total_LP_" + g), aA), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), aw), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), ay), ScriptTransfer(f.caller, aE, a), ScriptTransfer(f.caller, aD, fromBase58String(g))]
441+ else [Burn(aC, v.amount), IntegerEntry(("Total_LP_" + g), aB), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), ScriptTransfer(f.caller, aF, a), ScriptTransfer(f.caller, aE, fromBase58String(g))]
441442 }
442443
443444
444445
445446 @Callable(f)
446-func RemoveEntry (aF,aG,aH,aI) = [DeleteEntry(aF), DeleteEntry(aG), DeleteEntry(aH), DeleteEntry(aI)]
447+func RemoveEntry (aG,aH,aI,aJ) = [DeleteEntry(aG), DeleteEntry(aH), DeleteEntry(aI), DeleteEntry(aJ)]
447448
448449
449-@Verifier(aJ)
450-func aK () = {
451- let E = aJ
452- sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
450+@Verifier(aK)
451+func aL () = {
452+ let E = aK
453+ sigVerify(aK.bodyBytes, aK.proofs[0], aK.senderPublicKey)
453454 }
454455

github/deemru/w8io/873ac7e 
138.94 ms