tx · AfQe14CD7XK5V1xZLN56pvrThwnoAxdXoDV9ykVhhWxF

3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw:  -0.00900000 Waves

2024.02.12 19:49 [4039088] smart account 3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw > SELF 0.00000000 Waves

{ "type": 13, "id": "AfQe14CD7XK5V1xZLN56pvrThwnoAxdXoDV9ykVhhWxF", "fee": 900000, "feeAssetId": null, "timestamp": 1707756546022, "version": 2, "chainId": 87, "sender": "3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw", "senderPublicKey": "FBgMeRe67JJ64mvtmPU7XWTUsKCrapoe2XSfJwcMqKTx", "proofs": [ "uAx5hbLN2iL4j8HHyqES6GjhmgQDRb2d497iTxyWjNgAahN4ca6TeUGR22feyNdUJyL2SkJQxQjQJkf9qmBvZAR" ], "script": "base64:BgIgCAISBAoCCAESBQoDCAEIEgQKAggIEgQKAggIEgMKAQQQAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgALdHNuQ29udHJhY3QCIzNQS3o1am5KTG9oRjJHalNoUTdiRzVINEJlYmRvQTk4eloyABFsZW5kUHJveHlDb250cmFjdAIjM1BHeE1adE1uTlQ5cEpDdlh4WFY0THpLcVhzanZROVhwZlIAEHB6UG9vbHNMMldyYXBwZXICIzNQUW9CZlVLSGtKQWVHV2hvb0xQN1dTOG92YjU0YXY5SnAyAQx0cnlHZXRTdHJpbmcBA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABEXRyeUdldFN0cmluZ090aGVyAgNrZXkHYWRkcmVzcwQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQZzd2FwV1gDBmFzc2V0MAZhc3NldDEHYW1vdW50MAQTYXNzZXQxQmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQMJAAACBRNhc3NldDFCYWxhbmNlQmVmb3JlBRNhc3NldDFCYWxhbmNlQmVmb3JlBARpbnYxCQD8BwQJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYCBHN3YXAJAMwIAgABCQDMCAIFBmFzc2V0MQkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDAFB2Ftb3VudDAFA25pbAMJAAACBQRpbnYxBQRpbnYxBAdhbW91bnQxCQBlAgkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQUTYXNzZXQxQmFsYW5jZUJlZm9yZQMJAAACBQdhbW91bnQxBQdhbW91bnQxBQdhbW91bnQxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlzd2FwTGltaXQDBnBhcmFtcwV0MFN0cgV0MVN0cgoBB2RvTGltaXQCBWFzc2V0C29yZGVyUGFyYW1zBANvcmQJALUJAgULb3JkZXJQYXJhbXMCAT4ECyR0MDE3NjIxODA3CQCUCgIJAJEDAgUDb3JkAAAJAJEDAgUDb3JkAAEEB29yZGVySWQIBQskdDAxNzYyMTgwNwJfMQQLb3JkZXJBbW91bnQIBQskdDAxNzYyMTgwNwJfMgQDaW52CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ1saW1pdENvbnRyYWN0AgxmdWxmaWxsT3JkZXIJAMwIAgUHb3JkZXJJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQVhc3NldAkBDXBhcnNlSW50VmFsdWUBBQtvcmRlckFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52BQVhc3NldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQIb3JkZXJzTGkJALUJAgUGcGFyYW1zAgE6BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQGcmVzdWx0CgACJGwFCG9yZGVyc0xpCgACJHMJAJADAQUCJGwKAAUkYWNjMAUCdDAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvTGltaXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUGcmVzdWx0BQZyZXN1bHQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEIc3dhcExlbmQEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDIyMzYyMjkzCQCVCgMJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEJAJEDAgUDYXJyAAIEDHBvb2xfYWRkcmVzcwgFCyR0MDIyMzYyMjkzAl8xBAVhc3NldAgFCyR0MDIyMzYyMjkzAl8yBANkaXIIBQskdDAyMjM2MjI5MwJfMwQIcHJveHlBZHIJAQdBZGRyZXNzAQkA2QQBBRFsZW5kUHJveHlDb250cmFjdAQMZnVuY3Rpb25OYW1lAwkAAAIFA2RpcgIBMAIGbWludFBMAghyZWRlZW1QTAkA/AcEBQhwcm94eUFkcgUMZnVuY3Rpb25OYW1lCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAEIc3dhcFBlcGUEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDI2NzMyNzIzCQCUCgIJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEEDHBvb2xfYWRkcmVzcwgFCyR0MDI2NzMyNzIzAl8xBAtmdW5jdGlvblRhZwgFCyR0MDI2NzMyNzIzAl8yBAtzd2FwQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDHBvb2xfYWRkcmVzcwMJAAACBQtmdW5jdGlvblRhZwIBZAkA/AcEBQtzd2FwQWRkcmVzcwIHZGVwb3NpdAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwDCQAAAgULZnVuY3Rpb25UYWcCAXcJAPwHBAULc3dhcEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAMJAAACBQtmdW5jdGlvblRhZwIBcwkA/AcEBQtzd2FwQWRkcmVzcwIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwJAAIBAiJVbmtub3duIGZ1bmN0aW9uIHRhZyBmb3IgcGVwZSBzd2FwAQxzd2FwSW50ZXJuYWwEAWkJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQZyZWZLZXkECHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCgCAECCHNodXRkb3duBwMFCHNodXRkb3duCQACAQIIc2h1dGRvd24KAQZkb1N3YXACBmFtb3VudARzd2FwBAZzd2FwTGkJALUJAgUEc3dhcAIBLAQLJHQwMzU0ODM2MjkJAJYKBAkAkQMCBQZzd2FwTGkAAAkAkQMCBQZzd2FwTGkAAQkAkQMCBQZzd2FwTGkAAgkAkQMCBQZzd2FwTGkAAwQEZEFwcAgFCyR0MDM1NDgzNjI5Al8xBAhkQXBwVHlwZQgFCyR0MDM1NDgzNjI5Al8yBAV0MFN0cggFCyR0MDM1NDgzNjI5Al8zBAV0MVN0cggFCyR0MDM1NDgzNjI5Al80BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQHYW1vdW50MAMJAQIhPQIFBmFtb3VudAAABQZhbW91bnQJAQpnZXRCYWxhbmNlAQUCdDAEAmkxAwkAAAIFCGRBcHBUeXBlAgZzd29wZmkJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBGRBcHACCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgZwdXp6bGUEBHBvb2wJAQdBZGRyZXNzAQkA2QQBBQRkQXBwBBFwb29sVG9rZW5JZEJpbmFyeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFBHBvb2wCE2dsb2JhbF9wb29sVG9rZW5faWQJAKwCAgIWTm8gcG9vbFRva2VuIGVudHJ5IGluIAUEZEFwcAQOcG9vbFRva2VuSWRTdHIJAQ5nZXRBc3NldFN0cmluZwEFEXBvb2xUb2tlbklkQmluYXJ5AwkAAAIFBXQwU3RyBQ5wb29sVG9rZW5JZFN0cgkA/AcECQEHQWRkcmVzcwEJANkEAQUQcHpQb29sc0wyV3JhcHBlcgIScmVkZWVtV2l0aE9uZVRva2VuCQDMCAIFBGRBcHAJAMwIAgUFdDFTdHIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQV0MVN0cgUOcG9vbFRva2VuSWRTdHIJAPwHBAkBB0FkZHJlc3MBCQDZBAEFEHB6UG9vbHNMMldyYXBwZXICFGdlbmVyYXRlV2l0aE9uZVRva2VuCQDMCAIFBGRBcHAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAkA/AcEBQRwb29sAgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgJ3eAkBBnN3YXBXWAMFBXQwU3RyBQV0MVN0cgUHYW1vdW50MAMJAAACBQhkQXBwVHlwZQIFbGltaXQJAQlzd2FwTGltaXQDBQRkQXBwBQV0MFN0cgUFdDFTdHIDCQAAAgUIZEFwcFR5cGUCB3RzdW5hbWkJAPwHBAkBB0FkZHJlc3MBCQDZBAEFC3RzbkNvbnRyYWN0AgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgRsZW5kCQEIc3dhcExlbmQEBQRkQXBwBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDADCQAAAgUIZEFwcFR5cGUCBHBlcGUJAQhzd2FwUGVwZQQFBGRBcHAFBXQwU3RyBQV0MVN0cgUHYW1vdW50MAkAAgECK2ludGVybmFsIGFnZ3JlZ2F0b3IgaXNzdWU6IHVua25vdyBwb29sIHR5cGUDCQAAAgUCaTEFAmkxAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAQdkb1JvdXRlAgVhY2N1bQVyb3V0ZQQIYW1vdW50SW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBXJvdXRlAgEvAAAEBXN3YXBzCQC1CQIJAJEDAgkAtQkCBQVyb3V0ZQIBLwABAgE7BAtzd2Fwc1Jlc3VsdAoAAiRsBQVzd2FwcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFCGFtb3VudEluCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZkb1N3YXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMDCQAAAgULc3dhcHNSZXN1bHQFC3N3YXBzUmVzdWx0CQBkAgUFYWNjdW0FC3N3YXBzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA1zcGxpdHRlZFJvdXRlCQC1CQIJALICAgUJcm91dGVzU3RyADICASwECWFzc2V0MVN0cgkAkQMCBQ1zcGxpdHRlZFJvdXRlCQBlAgkAkAMBBQ1zcGxpdHRlZFJvdXRlAAEEBmFzc2V0MQkBDWdldEFzc2V0Qnl0ZXMBBQlhc3NldDFTdHIEBnJvdXRlcwkAvAkCBQlyb3V0ZXNTdHICAXwEBXN3YXBzCgACJGwFBnJvdXRlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHZG9Sb3V0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAwkAAAIFBXN3YXBzBQVzd2FwcwQIdG90YWxPdXQJAQpnZXRCYWxhbmNlAQUGYXNzZXQxBAlmZWVBbW91bnQJAGsDBQh0b3RhbE91dAAdAJBOBBBjbGVhblRvdGFsQW1vdW50CQBlAgUIdG90YWxPdXQFCWZlZUFtb3VudAMJAGYCBQxtaW5Ub1JlY2VpdmUFEGNsZWFuVG90YWxBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAl9hbW91bnQgdG8gcmVjZWl2ZSBpcyB0b28gbG93LiBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBhbW91bnQgb3Igd2FpdCAxIG1pbnV0ZS4gZXhwZWN0ZWQ6IAkApAMBBQxtaW5Ub1JlY2VpdmUCBywgcmVhbCAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAQLJHQwNjE1MDY2ODUDCQAAAgUGYXNzZXQxBQZ1c2RuSWQJAJQKAgUJZmVlQW1vdW50BwQOcG9vbEFkZHJlc3NTdHIJAQx0cnlHZXRTdHJpbmcBCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUJYXNzZXQxU3RyAgtfcHV6emxlUG9vbAMJAAACBQ5wb29sQWRkcmVzc1N0cgIACQCUCgIAAAcEEXVzZG5CYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEFBnVzZG5JZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEDGNvbnZlcnRlZEZlZQkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQ5wb29sQWRkcmVzc1N0cgIEc3dhcAkAzAgCBQl1c2RuSWRTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBmFzc2V0MQUJZmVlQW1vdW50BQNuaWwDCQAAAgUMY29udmVydGVkRmVlBQxjb252ZXJ0ZWRGZWUEEHVzZG5CYWxhbmNlQWZ0ZXIJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIJAJQKAgkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQskdDA2MTUwNjY4NQULJHQwNjE1MDY2ODUECmZlZVN3YXBwZWQIBQskdDA2MTUwNjY4NQJfMgQHdXNkbkZlZQgFCyR0MDYxNTA2Njg1Al8xBA9yZWZlcnJhbEFkZHJlc3MDCQAAAgUGcmVmS2V5AgRtdW5hCQEHQWRkcmVzcwEBGgFXnQyqxhNRqW7LgPdjfcFkeOLvck2oDLrTAwkAAAIFBnJlZktleQIGa2VlcGVyCQEHQWRkcmVzcwEBGgFX47bKEjTub0Zv8MqogOOLr3FN8V6ZrDv2AwkAAAIFBnJlZktleQIDdGNpCQEHQWRkcmVzcwEBGgFXTgSp9XKM3uf50lJK3bhrU0WMeqeaOH2cAwkBAiE9AgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgICBHJlZl8FBnJlZktleQIAAgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgIEcmVmXwUGcmVmS2V5CQEHQWRkcmVzcwEBGgFX/JoHcOFv3tGUISFteraNWNJCWHssByYSBAxyZWZVc2RuU2hhcmUDCQAAAgUGcmVmS2V5AgVub3JlZgAACQBrAwUHdXNkbkZlZQACAAoEBXRvcFVwAwkBAiE9AgUHdXNkbkZlZQAACQD8BwQJAQdBZGRyZXNzAQEaAVfAiq1zlCEzvbAYVg8otbk+QXfOv2/y/tcCC3RvcFVwUmV3YXJkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnVzZG5JZAkAZQIFB3VzZG5GZWUFDHJlZlVzZG5TaGFyZQUDbmlsBQR1bml0AwkAAAIFBXRvcFVwBQV0b3BVcAQGYXNzZXQwCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEB2Ftb3VudDAJAGUCCQEKZ2V0QmFsYW5jZQEFBmFzc2V0MAMJAAACBQZhc3NldDAFBnVzZG5JZAUMcmVmVXNkblNoYXJlAAAEB2Ftb3VudDEJAGUCBRBjbGVhblRvdGFsQW1vdW50AwkAAAIFBmFzc2V0MQUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2Ftb3VudDEFBmFzc2V0MQUDbmlsAwkBAiE9AgUMcmVmVXNkblNoYXJlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPcmVmZXJyYWxBZGRyZXNzBQxyZWZVc2RuU2hhcmUFBnVzZG5JZAUDbmlsBQNuaWwDCQECIT0CBQdhbW91bnQwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQwBQZhc3NldDAFA25pbAUDbmlsAwMJAAACBQd1c2RuRmVlAAAJAQEhAQUKZmVlU3dhcHBlZAcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBARoBVx7h+0Axa4Hm7EtWGwUsUaGTbt8JsTzSwQUJZmVlQW1vdW50BQZhc3NldDEFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQFpAQRzd2FwAglyb3V0ZXNTdHIMbWluVG9SZWNlaXZlCQEMc3dhcEludGVybmFsBAUBaQUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUCBW5vcmVmAWkBEHN3YXBXaXRoUmVmZXJyYWwDCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUGcmVmS2V5CQEMc3dhcEludGVybmFsBAUBaQUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUFBnJlZktleQFpARJhZGRUb2tlblB1enpsZVBvb2wCCmFzc2V0SWRTdHIOcG9vbEFkZHJlc3NTdHIDCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVfX4SNRjnyriFrV1yiXddiIddOPriMFpuEJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQphc3NldElkU3RyAgtfcHV6emxlUG9vbAUOcG9vbEFkZHJlc3NTdHIFA25pbAFpAQ5hZGRSZWZlcnJhbEtleQIGcmVmS2V5CmFkZHJlc3NTdHIDCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVfX4SNRjnyriFrV1yiXddiIddOPriMFpuEJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEcmVmXwUGcmVmS2V5BQphZGRyZXNzU3RyBQNuaWwBaQEIc2h1dGRvd24BA3ZhbAMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV9fhI1GOfKuIWtXXKJd12Ih104+uIwWm4QkAAgECB3dsIG9ubHkJAMwIAgkBDEJvb2xlYW5FbnRyeQICCHNodXRkb3duBQN2YWwFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXm3ZHSN", "height": 4039088, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C998FASUAq4JC4TsmDzFVvfJbvjny6UMipEvwSysYdfd Next: none Diff:
OldNewDifferences
1111
1212 let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
1313
14-let pzPoolsL2Wrapper = "3PFtWqmN8kUiYaAataR1mMXKNEGohWkKBcB"
14+let pzPoolsL2Wrapper = "3PQoBfUKHkJAeGWhooLP7WS8ovb54av9Jp2"
1515
1616 func tryGetString (key) = match getString(this, key) {
1717 case b: String =>
7171 func swapLimit (params,t0Str,t1Str) = {
7272 func doLimit (asset,orderParams) = {
7373 let ord = split(orderParams, ">")
74- let $t017641809 = $Tuple2(ord[0], ord[1])
75- let orderId = $t017641809._1
76- let orderAmount = $t017641809._2
74+ let $t017621807 = $Tuple2(ord[0], ord[1])
75+ let orderId = $t017621807._1
76+ let orderAmount = $t017621807._2
7777 let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
7878 if ((inv == inv))
7979 then asset
104104
105105 func swapLend (params,t0Str,t1Str,amount) = {
106106 let arr = split(params, "-")
107- let $t022382295 = $Tuple3(arr[0], arr[1], arr[2])
108- let pool_address = $t022382295._1
109- let asset = $t022382295._2
110- let dir = $t022382295._3
107+ let $t022362293 = $Tuple3(arr[0], arr[1], arr[2])
108+ let pool_address = $t022362293._1
109+ let asset = $t022362293._2
110+ let dir = $t022362293._3
111111 let proxyAdr = Address(fromBase58String(lendProxyContract))
112112 let functionName = if ((dir == "0"))
113113 then "mintPL"
118118
119119 func swapPepe (params,t0Str,t1Str,amount) = {
120120 let arr = split(params, "-")
121- let $t026752725 = $Tuple2(arr[0], arr[1])
122- let pool_address = $t026752725._1
123- let functionTag = $t026752725._2
121+ let $t026732723 = $Tuple2(arr[0], arr[1])
122+ let pool_address = $t026732723._1
123+ let functionTag = $t026732723._2
124124 let swapAddress = Address(fromBase58String(pool_address))
125125 if ((functionTag == "d"))
126126 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
139139 else {
140140 func doSwap (amount,swap) = {
141141 let swapLi = split(swap, ",")
142- let $t035503631 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143- let dApp = $t035503631._1
144- let dAppType = $t035503631._2
145- let t0Str = $t035503631._3
146- let t1Str = $t035503631._4
142+ let $t035483629 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143+ let dApp = $t035483629._1
144+ let dAppType = $t035483629._2
145+ let t0Str = $t035483629._3
146+ let t1Str = $t035483629._4
147147 let t0 = getAssetBytes(t0Str)
148148 let amount0 = if ((amount != 0))
149149 then amount
225225 if ((minToReceive > cleanTotalAmount))
226226 then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
227227 else {
228- let usdnFee = if ((asset1 == usdnId))
229- then feeAmount
228+ let $t061506685 = if ((asset1 == usdnId))
229+ then $Tuple2(feeAmount, false)
230230 else {
231231 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
232232 if ((poolAddressStr == ""))
233- then 0
233+ then $Tuple2(0, false)
234234 else {
235235 let usdnBalanceBefore = getBalance(usdnId)
236236 if ((usdnBalanceBefore == usdnBalanceBefore))
240240 then {
241241 let usdnBalanceAfter = getBalance(usdnId)
242242 if ((usdnBalanceAfter == usdnBalanceAfter))
243- then (usdnBalanceAfter - usdnBalanceBefore)
243+ then $Tuple2((usdnBalanceAfter - usdnBalanceBefore), true)
244244 else throw("Strict value is not equal to itself.")
245245 }
246246 else throw("Strict value is not equal to itself.")
248248 else throw("Strict value is not equal to itself.")
249249 }
250250 }
251- if ((usdnFee == usdnFee))
251+ if (($t061506685 == $t061506685))
252252 then {
253+ let feeSwapped = $t061506685._2
254+ let usdnFee = $t061506685._1
253255 let referralAddress = if ((refKey == "muna"))
254256 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
255257 else if ((refKey == "keeper"))
278280 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
279281 else nil)) ++ (if ((amount0 != 0))
280282 then [ScriptTransfer(i.caller, amount0, asset0)]
281- else nil)) ++ (if ((usdnFee == 0))
283+ else nil)) ++ (if (if ((usdnFee == 0))
284+ then !(feeSwapped)
285+ else false)
282286 then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
283287 else nil))
284288 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
99
1010 let tsnContract = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2"
1111
1212 let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
1313
14-let pzPoolsL2Wrapper = "3PFtWqmN8kUiYaAataR1mMXKNEGohWkKBcB"
14+let pzPoolsL2Wrapper = "3PQoBfUKHkJAeGWhooLP7WS8ovb54av9Jp2"
1515
1616 func tryGetString (key) = match getString(this, key) {
1717 case b: String =>
1818 b
1919 case _ =>
2020 ""
2121 }
2222
2323
2424 func tryGetStringOther (key,address) = match getString(address, key) {
2525 case b: String =>
2626 b
2727 case _ =>
2828 ""
2929 }
3030
3131
3232 func getAssetString (assetId) = match assetId {
3333 case b: ByteVector =>
3434 toBase58String(b)
3535 case _ =>
3636 "WAVES"
3737 }
3838
3939
4040 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
4141 then unit
4242 else fromBase58String(assetIdStr)
4343
4444
4545 func getBalance (assetId) = match assetId {
4646 case x: Unit =>
4747 wavesBalance(this).available
4848 case _ =>
4949 assetBalance(this, value(assetId))
5050 }
5151
5252
5353 func swapWX (asset0,asset1,amount0) = {
5454 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
5555 if ((asset1BalanceBefore == asset1BalanceBefore))
5656 then {
5757 let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
5858 if ((inv1 == inv1))
5959 then {
6060 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
6161 if ((amount1 == amount1))
6262 then amount1
6363 else throw("Strict value is not equal to itself.")
6464 }
6565 else throw("Strict value is not equal to itself.")
6666 }
6767 else throw("Strict value is not equal to itself.")
6868 }
6969
7070
7171 func swapLimit (params,t0Str,t1Str) = {
7272 func doLimit (asset,orderParams) = {
7373 let ord = split(orderParams, ">")
74- let $t017641809 = $Tuple2(ord[0], ord[1])
75- let orderId = $t017641809._1
76- let orderAmount = $t017641809._2
74+ let $t017621807 = $Tuple2(ord[0], ord[1])
75+ let orderId = $t017621807._1
76+ let orderAmount = $t017621807._2
7777 let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
7878 if ((inv == inv))
7979 then asset
8080 else throw("Strict value is not equal to itself.")
8181 }
8282
8383 let ordersLi = split(params, ":")
8484 let t0 = getAssetBytes(t0Str)
8585 let result = {
8686 let $l = ordersLi
8787 let $s = size($l)
8888 let $acc0 = t0
8989 func $f0_1 ($a,$i) = if (($i >= $s))
9090 then $a
9191 else doLimit($a, $l[$i])
9292
9393 func $f0_2 ($a,$i) = if (($i >= $s))
9494 then $a
9595 else throw("List size exceeds 10")
9696
9797 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9898 }
9999 if ((result == result))
100100 then 0
101101 else throw("Strict value is not equal to itself.")
102102 }
103103
104104
105105 func swapLend (params,t0Str,t1Str,amount) = {
106106 let arr = split(params, "-")
107- let $t022382295 = $Tuple3(arr[0], arr[1], arr[2])
108- let pool_address = $t022382295._1
109- let asset = $t022382295._2
110- let dir = $t022382295._3
107+ let $t022362293 = $Tuple3(arr[0], arr[1], arr[2])
108+ let pool_address = $t022362293._1
109+ let asset = $t022362293._2
110+ let dir = $t022362293._3
111111 let proxyAdr = Address(fromBase58String(lendProxyContract))
112112 let functionName = if ((dir == "0"))
113113 then "mintPL"
114114 else "redeemPL"
115115 invoke(proxyAdr, functionName, [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
116116 }
117117
118118
119119 func swapPepe (params,t0Str,t1Str,amount) = {
120120 let arr = split(params, "-")
121- let $t026752725 = $Tuple2(arr[0], arr[1])
122- let pool_address = $t026752725._1
123- let functionTag = $t026752725._2
121+ let $t026732723 = $Tuple2(arr[0], arr[1])
122+ let pool_address = $t026732723._1
123+ let functionTag = $t026732723._2
124124 let swapAddress = Address(fromBase58String(pool_address))
125125 if ((functionTag == "d"))
126126 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
127127 else if ((functionTag == "w"))
128128 then invoke(swapAddress, "withdraw", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
129129 else if ((functionTag == "s"))
130130 then invoke(swapAddress, "swap", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
131131 else throw("Unknown function tag for pepe swap")
132132 }
133133
134134
135135 func swapInternal (i,routesStr,minToReceive,refKey) = {
136136 let shutdown = valueOrElse(getBoolean("shutdown"), false)
137137 if (shutdown)
138138 then throw("shutdown")
139139 else {
140140 func doSwap (amount,swap) = {
141141 let swapLi = split(swap, ",")
142- let $t035503631 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143- let dApp = $t035503631._1
144- let dAppType = $t035503631._2
145- let t0Str = $t035503631._3
146- let t1Str = $t035503631._4
142+ let $t035483629 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143+ let dApp = $t035483629._1
144+ let dAppType = $t035483629._2
145+ let t0Str = $t035483629._3
146+ let t1Str = $t035483629._4
147147 let t0 = getAssetBytes(t0Str)
148148 let amount0 = if ((amount != 0))
149149 then amount
150150 else getBalance(t0)
151151 let i1 = if ((dAppType == "swopfi"))
152152 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
153153 else if ((dAppType == "puzzle"))
154154 then {
155155 let pool = Address(fromBase58String(dApp))
156156 let poolTokenIdBinary = valueOrErrorMessage(getBinary(pool, "global_poolToken_id"), ("No poolToken entry in " + dApp))
157157 let poolTokenIdStr = getAssetString(poolTokenIdBinary)
158158 if ((t0Str == poolTokenIdStr))
159159 then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "redeemWithOneToken", [dApp, t1Str], [AttachedPayment(t0, amount0)])
160160 else if ((t1Str == poolTokenIdStr))
161161 then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "generateWithOneToken", [dApp], [AttachedPayment(t0, amount0)])
162162 else invoke(pool, "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
163163 }
164164 else if ((dAppType == "wx"))
165165 then swapWX(t0Str, t1Str, amount0)
166166 else if ((dAppType == "limit"))
167167 then swapLimit(dApp, t0Str, t1Str)
168168 else if ((dAppType == "tsunami"))
169169 then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
170170 else if ((dAppType == "lend"))
171171 then swapLend(dApp, t0Str, t1Str, amount0)
172172 else if ((dAppType == "pepe"))
173173 then swapPepe(dApp, t0Str, t1Str, amount0)
174174 else throw("internal aggregator issue: unknow pool type")
175175 if ((i1 == i1))
176176 then 0
177177 else throw("Strict value is not equal to itself.")
178178 }
179179
180180 func doRoute (accum,route) = {
181181 let amountIn = parseIntValue(split(route, "/")[0])
182182 let swaps = split(split(route, "/")[1], ";")
183183 let swapsResult = {
184184 let $l = swaps
185185 let $s = size($l)
186186 let $acc0 = amountIn
187187 func $f0_1 ($a,$i) = if (($i >= $s))
188188 then $a
189189 else doSwap($a, $l[$i])
190190
191191 func $f0_2 ($a,$i) = if (($i >= $s))
192192 then $a
193193 else throw("List size exceeds 3")
194194
195195 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
196196 }
197197 if ((swapsResult == swapsResult))
198198 then (accum + swapsResult)
199199 else throw("Strict value is not equal to itself.")
200200 }
201201
202202 let splittedRoute = split(takeRight(routesStr, 50), ",")
203203 let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
204204 let asset1 = getAssetBytes(asset1Str)
205205 let routes = split_4C(routesStr, "|")
206206 let swaps = {
207207 let $l = routes
208208 let $s = size($l)
209209 let $acc0 = 0
210210 func $f0_1 ($a,$i) = if (($i >= $s))
211211 then $a
212212 else doRoute($a, $l[$i])
213213
214214 func $f0_2 ($a,$i) = if (($i >= $s))
215215 then $a
216216 else throw("List size exceeds 4")
217217
218218 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
219219 }
220220 if ((swaps == swaps))
221221 then {
222222 let totalOut = getBalance(asset1)
223223 let feeAmount = fraction(totalOut, 29, 10000)
224224 let cleanTotalAmount = (totalOut - feeAmount)
225225 if ((minToReceive > cleanTotalAmount))
226226 then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
227227 else {
228- let usdnFee = if ((asset1 == usdnId))
229- then feeAmount
228+ let $t061506685 = if ((asset1 == usdnId))
229+ then $Tuple2(feeAmount, false)
230230 else {
231231 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
232232 if ((poolAddressStr == ""))
233- then 0
233+ then $Tuple2(0, false)
234234 else {
235235 let usdnBalanceBefore = getBalance(usdnId)
236236 if ((usdnBalanceBefore == usdnBalanceBefore))
237237 then {
238238 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
239239 if ((convertedFee == convertedFee))
240240 then {
241241 let usdnBalanceAfter = getBalance(usdnId)
242242 if ((usdnBalanceAfter == usdnBalanceAfter))
243- then (usdnBalanceAfter - usdnBalanceBefore)
243+ then $Tuple2((usdnBalanceAfter - usdnBalanceBefore), true)
244244 else throw("Strict value is not equal to itself.")
245245 }
246246 else throw("Strict value is not equal to itself.")
247247 }
248248 else throw("Strict value is not equal to itself.")
249249 }
250250 }
251- if ((usdnFee == usdnFee))
251+ if (($t061506685 == $t061506685))
252252 then {
253+ let feeSwapped = $t061506685._2
254+ let usdnFee = $t061506685._1
253255 let referralAddress = if ((refKey == "muna"))
254256 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
255257 else if ((refKey == "keeper"))
256258 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
257259 else if ((refKey == "tci"))
258260 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
259261 else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
260262 then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
261263 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
262264 let refUsdnShare = if ((refKey == "noref"))
263265 then 0
264266 else fraction(usdnFee, 2, 10)
265267 let topUp = if ((usdnFee != 0))
266268 then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
267269 else unit
268270 if ((topUp == topUp))
269271 then {
270272 let asset0 = i.payments[0].assetId
271273 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
272274 then refUsdnShare
273275 else 0))
274276 let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
275277 then refUsdnShare
276278 else 0))
277279 ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
278280 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
279281 else nil)) ++ (if ((amount0 != 0))
280282 then [ScriptTransfer(i.caller, amount0, asset0)]
281- else nil)) ++ (if ((usdnFee == 0))
283+ else nil)) ++ (if (if ((usdnFee == 0))
284+ then !(feeSwapped)
285+ else false)
282286 then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
283287 else nil))
284288 }
285289 else throw("Strict value is not equal to itself.")
286290 }
287291 else throw("Strict value is not equal to itself.")
288292 }
289293 }
290294 else throw("Strict value is not equal to itself.")
291295 }
292296 }
293297
294298
295299 @Callable(i)
296300 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
297301
298302
299303
300304 @Callable(i)
301305 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
302306
303307
304308
305309 @Callable(i)
306310 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
307311 then throw("admin only")
308312 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
309313
310314
311315
312316 @Callable(i)
313317 func addReferralKey (refKey,addressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
314318 then throw("admin only")
315319 else [StringEntry(("ref_" + refKey), addressStr)]
316320
317321
318322
319323 @Callable(i)
320324 func shutdown (val) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
321325 then throw("wl only")
322326 else [BooleanEntry("shutdown", val)]
323327
324328
325329 @Verifier(tx)
326330 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
327331

github/deemru/w8io/6500d08 
58.25 ms