tx · 92ZvaNfqKk6jm1wn8KqRxUre58aNt4y2EBUNQ9PWArpA 3MwgDbpnUQcr7MiFVQ1NcNgTBvkRytdGd2R: -0.01400000 Waves 2025.01.15 15:17 [3460210] smart account 3MwgDbpnUQcr7MiFVQ1NcNgTBvkRytdGd2R > SELF 0.00000000 Waves
{ "type": 13, "id": "92ZvaNfqKk6jm1wn8KqRxUre58aNt4y2EBUNQ9PWArpA", "fee": 1400000, "feeAssetId": null, "timestamp": 1736943454216, "version": 2, "chainId": 84, "sender": "3MwgDbpnUQcr7MiFVQ1NcNgTBvkRytdGd2R", "senderPublicKey": "6kGDUcAPHWXGnMU89GNpRLQT8qawCijYhNB4zF8EV6kK", "proofs": [ "4faxQpdn43zGguZ8Dz1pjB3osAJtnWjswFtwppfJkj5h2SepJtf8yaGfB7YSt8b4e5uKcx9yb6NQkUxVkeCVZAVJ" ], "script": "base64:BgI0CAISAwoBCBIDCgEIEgMKAQgSAwoBARIAEgASAwoBCBIDCgEIEgMKAQgSBAoCCAESAwoBCB0ACVNFUEFSQVRPUgICX18ACEtFWV9JTklUAgRJTklUAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMAC0tFWV9DTEFJTUVSAgdDTEFJTUVSABBLRVlfTEFTVF9TV0FQX0FUAgxMQVNUX1NXQVBfQVQAFktFWV9XQVZFU19EQU9fQ09OVFJBQ1QCEldBVkVTX0RBT19DT05UUkFDVAARS0VZX1NXQVBfQ09OVFJBQ1QCDVNXQVBfQ09OVFJBQ1QADktFWV9TV0FQX0xJTUlUAgpTV0FQX0xJTUlUABhLRVlfVU5JVFNfQ0hBSU5fQ09OVFJBQ1QCFFVOSVRTX0NIQUlOX0NPTlRSQUNUAA1GVU5DX0NMQUlNX0xQAgdjbGFpbUxQAAlGVU5DX1NXQVACBHN3YXAAEk9ORV9IT1VSX0lOX0JMT0NLUwA8AAxDT01QRU5TQVRJT04AoMIeARBfdmFsaWRhdGVBZGRyZXNzAQhhZGRyZXNzXwQHJG1hdGNoMAkApggBBQhhZGRyZXNzXwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcBDl92YWxpZGF0ZUFzc2V0Aghhc3NldElkXwRlcnJfBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQGAwkAAQIFByRtYXRjaDACBFVuaXQJAAIBBQRlcnJfCQACAQILTWF0Y2ggZXJyb3IBDF92YWxpZGF0ZUludAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfAwMJAGYCBQ5sb3dlckJvdW5kYXJ5XwUEdmFsXwYJAGYCBQR2YWxfBQ51cHBlckJvdW5kYXJ5XwkAAgEFBGVycl8GARVfbG9hZFdhdmVzREFPQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFFktFWV9XQVZFU19EQU9fQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAEVX3NhdmVXYXZlc0RBT0NvbnRyYWN0AQR2YWxfCQDMCAIJAQtTdHJpbmdFbnRyeQIFFktFWV9XQVZFU19EQU9fQ09OVFJBQ1QJAKUIAQUEdmFsXwUDbmlsARFfbG9hZFN3YXBDb250cmFjdAAEByRtYXRjaDAJAKIIAQURS0VZX1NXQVBfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAERX3NhdmVTd2FwQ29udHJhY3QBBHZhbF8JAMwIAgkBC1N0cmluZ0VudHJ5AgURS0VZX1NXQVBfQ09OVFJBQ1QJAKUIAQUEdmFsXwUDbmlsAQ9fbG9hZExhc3RTd2FwQXQBBmFzc2V0XwQHJG1hdGNoMAkAnwgBCQC5CQIJAMwIAgUQS0VZX0xBU1RfU1dBUF9BVAkAzAgCBQZhc3NldF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQ9fc2F2ZUxhc3RTd2FwQXQCBmFzc2V0XwR2YWxfCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQC5CQIJAMwIAgUQS0VZX0xBU1RfU1dBUF9BVAkAzAgCBQZhc3NldF8FA25pbAUJU0VQQVJBVE9SBQR2YWxfBQNuaWwBDl9sb2FkU3dhcExpbWl0AQZhc3NldF8EByRtYXRjaDAJAJ8IAQkAuQkCCQDMCAIFDktFWV9TV0FQX0xJTUlUCQDMCAIFBmFzc2V0XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABDl9zYXZlU3dhcExpbWl0AgZhc3NldF8EdmFsXwkAzAgCCQEMSW50ZWdlckVudHJ5AgkAuQkCCQDMCAIFDktFWV9TV0FQX0xJTUlUCQDMCAIFBmFzc2V0XwUDbmlsBQlTRVBBUkFUT1IFBHZhbF8FA25pbAEXX2xvYWRVbml0c0NoYWluQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFGEtFWV9VTklUU19DSEFJTl9DT05UUkFDVAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAARdfc2F2ZVVuaXRzQ2hhaW5Db250cmFjdAEEdmFsXwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfVU5JVFNfQ0hBSU5fQ09OVFJBQ1QJAKUIAQUEdmFsXwUDbmlsARFfZ2V0V0FWRVNETFBBc3NldAAEByRtYXRjaDAJAJ0IAgkBFV9sb2FkV2F2ZXNEQU9Db250cmFjdAACDSVzX19scEFzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQDZBAEFAWEJAAIBAhlfZ2V0V0FWRVNETFBBc3NldDogcmV2ZXJ0ARVfZ2V0QXZhaWxhYmxlV0FWRVNETFAABAckbWF0Y2gwCQCaCAIJARVfbG9hZFdhdmVzREFPQ29udHJhY3QACQCsAgICESVzJXNfX2F2YWlsYWJsZV9fCQClCAEFBHRoaXMDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAALAWkBBGluaXQBCGNsYWltZXJfBAhtdWx0aXNpZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFDEtFWV9NVUxUSVNJRwIVaW5pdDogbm8gbXVsdGlzaWcgc2V0AwkAAAIFCG11bHRpc2lnBQhtdWx0aXNpZwQEaW5pdAkBC3ZhbHVlT3JFbHNlAgkAoAgBBQhLRVlfSU5JVAcEA2VycgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECF2luaXQ6IHBlcm1pc3Npb24gZGVuaWVkAwUEaW5pdAkAAgECGWluaXQ6IGFscmVhZHkgaW5pdGlhbGl6ZWQDCQEBIQEJARBfdmFsaWRhdGVBZGRyZXNzAQUIY2xhaW1lcl8JAAIBAh1pbml0OiBpbnZhbGlkIGNsYWltZXIgYWRkcmVzcwUEdW5pdAMJAAACBQNlcnIFA2VycgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCBQhLRVlfSU5JVAYJAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX0NMQUlNRVIFCGNsYWltZXJfBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIec2V0TXVsdGlzaWc6IHBlcm1pc3Npb24gZGVuaWVkAwkBASEBCQEQX3ZhbGlkYXRlQWRkcmVzcwEFCW11bHRpc2lnXwkAAgECJXNldE11bHRpc2lnOiBpbnZhbGlkIG11bHRpc2lnIGFkZHJlc3MFBHVuaXQDCQAAAgUDZXJyBQNlcnIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfTVVMVElTSUcFCW11bHRpc2lnXwUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldENsYWltZXIBCGNsYWltZXJfBANlcnIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAh1zZXRDbGFpbWVyOiBwZXJtaXNzaW9uIGRlbmllZAMJAQEhAQkBEF92YWxpZGF0ZUFkZHJlc3MBBQhjbGFpbWVyXwkAAgECI3NldENsYWltZXI6IGludmFsaWQgY2xhaW1lciBhZGRyZXNzBQR1bml0AwkAAAIFA2VycgUDZXJyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX0NMQUlNRVIFCGNsYWltZXJfBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0BB2Ftb3VudF8DCQECIT0CCAUBaQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFC0tFWV9DTEFJTUVSCQACAQIYY2xhaW06IHBlcm1pc3Npb24gZGVuaWVkAwMJAGcCAAAFB2Ftb3VudF8GCQBmAgUHYW1vdW50XwgJAO8HAQUEdGhpcwdyZWd1bGFyCQACAQIVY2xhaW06IGludmFsaWQgYW1vdW50CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQR1bml0BQNuaWwFBHVuaXQBaQEUZ2V0QXZhaWxhYmxlV0FWRVNETFAACQCUCgIFA25pbAkBFV9nZXRBdmFpbGFibGVXQVZFU0RMUAABaQEUY2xhaW1BbmRTd2FwV0FWRVNETFAABAVhc3NldAkBEV9nZXRXQVZFU0RMUEFzc2V0AAQIYXNzZXRTdHIJANgEAQUFYXNzZXQECmludm9jYXRpb24JAPwHBAkBFV9sb2FkV2F2ZXNEQU9Db250cmFjdAAFDUZVTkNfQ0xBSU1fTFAFA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24EC3RvdGFsQW1vdW50CQDwBwIFBHRoaXMFBWFzc2V0AwkAAAIFC3RvdGFsQW1vdW50BQt0b3RhbEFtb3VudAQJc3dhcExpbWl0CQEOX2xvYWRTd2FwTGltaXQBBQhhc3NldFN0cgQMYW1vdW50VG9Td2FwAwkAZgIFC3RvdGFsQW1vdW50BQlzd2FwTGltaXQFCXN3YXBMaW1pdAULdG90YWxBbW91bnQEBnJlc3VsdAMJAGYCBQZoZWlnaHQJAGQCCQEPX2xvYWRMYXN0U3dhcEF0AQUIYXNzZXRTdHIFEk9ORV9IT1VSX0lOX0JMT0NLUwkA/AcECQERX2xvYWRTd2FwQ29udHJhY3QABQlGVU5DX1NXQVAJAMwIAgABCQDMCAICAAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFYXNzZXQFDGFtb3VudFRvU3dhcAUDbmlsCQACAQIfY2xhaW1BbmRTd2FwV0FWRVNETFA6IHRvbyBvZnRlbgMJAAACBQZyZXN1bHQFBnJlc3VsdAQHJG1hdGNoMAUGcmVzdWx0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAMJAGYCBQFhBQxDT01QRU5TQVRJT04JAJQKAgkAzggCCQEPX3NhdmVMYXN0U3dhcEF0AgUIYXNzZXRTdHIFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDENPTVBFTlNBVElPTgUEdW5pdAUDbmlsBQR1bml0CQACAQIrY2xhaW1BbmRTd2FwV0FWRVNETFA6IHRvbyBsaXR0bGUgYW1vdW50IGdvdAkAAgECIWNsYWltQW5kU3dhcFdBVkVTRExQOiBzd2FwIHJldmVydAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlzd2FwQXNzZXQBCGFzc2V0SWRfBANlcnIJAQ5fdmFsaWRhdGVBc3NldAIFCGFzc2V0SWRfAhhzd2FwQXNzZXQ6IGludmFsaWQgYXNzZXQDCQAAAgUDZXJyBQNlcnIEBWFzc2V0CQDZBAEFCGFzc2V0SWRfBAt0b3RhbEFtb3VudAkA8AcCBQR0aGlzBQVhc3NldAMJAAACBQt0b3RhbEFtb3VudAULdG90YWxBbW91bnQECXN3YXBMaW1pdAkBDl9sb2FkU3dhcExpbWl0AQUIYXNzZXRJZF8EDGFtb3VudFRvU3dhcAMJAGYCBQt0b3RhbEFtb3VudAUJc3dhcExpbWl0BQlzd2FwTGltaXQFC3RvdGFsQW1vdW50BAZyZXN1bHQDCQBmAgUGaGVpZ2h0CQBkAgkBD19sb2FkTGFzdFN3YXBBdAEFCGFzc2V0SWRfBRJPTkVfSE9VUl9JTl9CTE9DS1MJAPwHBAkBEV9sb2FkU3dhcENvbnRyYWN0AAUJRlVOQ19TV0FQCQDMCAIAAQkAzAgCAgAJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBWFzc2V0BQxhbW91bnRUb1N3YXAFA25pbAkAAgECFHN3YXBBc3NldDogdG9vIG9mdGVuAwkAAAIFBnJlc3VsdAUGcmVzdWx0BAckbWF0Y2gwBQZyZXN1bHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwkAZgIFAWEFDENPTVBFTlNBVElPTgkAlAoCCQDOCAIJAQ9fc2F2ZUxhc3RTd2FwQXQCBQhhc3NldElkXwUGaGVpZ2h0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMQ09NUEVOU0FUSU9OBQR1bml0BQNuaWwFBHVuaXQJAAIBAiBzd2FwQXNzZXQ6IHRvbyBsaXR0bGUgYW1vdW50IGdvdAkAAgECFnN3YXBBc3NldDogc3dhcCByZXZlcnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETc2V0V2F2ZXNEQU9Db250cmFjdAEIYWRkcmVzc18EA2VycgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECJnNldFdhdmVzREFPQ29udHJhY3Q6IHBlcm1pc3Npb24gZGVuaWVkAwkBASEBCQEQX3ZhbGlkYXRlQWRkcmVzcwEFCGFkZHJlc3NfCQACAQIkc2V0V2F2ZXNEQU9Db250cmFjdDogaW52YWxpZCBhZGRyZXNzBQR1bml0AwkAAAIFA2VycgUDZXJyCQCUCgIJARVfc2F2ZVdhdmVzREFPQ29udHJhY3QBCQERQGV4dHJOYXRpdmUoMTA2MikBBQhhZGRyZXNzXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zZXRTd2FwQ29udHJhY3QBCGFkZHJlc3NfBANlcnIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiJzZXRTd2FwQ29udHJhY3Q6IHBlcm1pc3Npb24gZGVuaWVkAwkBASEBCQEQX3ZhbGlkYXRlQWRkcmVzcwEFCGFkZHJlc3NfCQACAQIgc2V0U3dhcENvbnRyYWN0OiBpbnZhbGlkIGFkZHJlc3MFBHVuaXQDCQAAAgUDZXJyBQNlcnIJAJQKAgkBEV9zYXZlU3dhcENvbnRyYWN0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUIYWRkcmVzc18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMc2V0U3dhcExpbWl0Aghhc3NldElkXwZsaW1pdF8EA2VycgMJAQ5fdmFsaWRhdGVBc3NldAIFCGFzc2V0SWRfAhtzZXRTd2FwTGltaXQ6IGludmFsaWQgYXNzZXQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAh9zZXRTd2FwTGltaXQ6IHBlcm1pc3Npb24gZGVuaWVkAwkAZwIAAAUGbGltaXRfCQACAQIbc2V0U3dhcExpbWl0OiBpbnZhbGlkIGxpbWl0BQR1bml0BwMJAAACBQNlcnIFA2VycgkAlAoCCQEOX3NhdmVTd2FwTGltaXQCBQhhc3NldElkXwUGbGltaXRfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXNldFVuaXRzQ2hhaW5Db250cmFjdAEIYWRkcmVzc18EA2VycgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECKHNldFVuaXRzQ2hhaW5Db250cmFjdDogcGVybWlzc2lvbiBkZW5pZWQDCQEBIQEJARBfdmFsaWRhdGVBZGRyZXNzAQUIYWRkcmVzc18JAAIBAiZzZXRVbml0c0NoYWluQ29udHJhY3Q6IGludmFsaWQgYWRkcmVzcwUEdW5pdAMJAAACBQNlcnIFA2VycgkAlAoCCQEXX3NhdmVVbml0c0NoYWluQ29udHJhY3QBCQERQGV4dHJOYXRpdmUoMTA2MikBBQhhZGRyZXNzXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAJAKIIAQUMS0VZX01VTFRJU0lHAwkAAQIFByRtYXRjaDACBlN0cmluZwQIbXVsdGlzaWcFByRtYXRjaDAEByRtYXRjaDEFAnR4AwkAAQIFByRtYXRjaDECF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAJ0eAUHJG1hdGNoMQMJAAACCAUCdHgEZEFwcAkBF19sb2FkVW5pdHNDaGFpbkNvbnRyYWN0AAkAyBMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAQt2YWx1ZU9yRWxzZQIJAJsIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUIbXVsdGlzaWcJALkJAgkAzAgCBQpLRVlfU1RBVFVTCQDMCAIJAKUIAQUEdGhpcwkAzAgCCQDYBAEIBQJ0eAJpZAUDbmlsBQlTRVBBUkFUT1IHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5nPeY9Q==", "height": 3460210, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F7xwzz2MDq1ZmHRnQcSVhfm56NA9znQiaXMSGJzCPPXx Next: none Diff:
Old | New | Differences | |
---|---|---|---|
11 | 11 | ||
12 | 12 | let e = "CLAIMER" | |
13 | 13 | ||
14 | - | func f (g) = { | |
15 | - | let h = addressFromString(g) | |
16 | - | if ($isInstanceOf(h, "Address")) | |
14 | + | let f = "LAST_SWAP_AT" | |
15 | + | ||
16 | + | let g = "WAVES_DAO_CONTRACT" | |
17 | + | ||
18 | + | let h = "SWAP_CONTRACT" | |
19 | + | ||
20 | + | let i = "SWAP_LIMIT" | |
21 | + | ||
22 | + | let j = "UNITS_CHAIN_CONTRACT" | |
23 | + | ||
24 | + | let k = "claimLP" | |
25 | + | ||
26 | + | let l = "swap" | |
27 | + | ||
28 | + | let m = 60 | |
29 | + | ||
30 | + | let n = 500000 | |
31 | + | ||
32 | + | func o (p) = { | |
33 | + | let q = addressFromString(p) | |
34 | + | if ($isInstanceOf(q, "Address")) | |
17 | 35 | then { | |
18 | - | let | |
36 | + | let r = q | |
19 | 37 | true | |
20 | 38 | } | |
21 | 39 | else false | |
22 | 40 | } | |
23 | 41 | ||
24 | 42 | ||
25 | - | @Callable(j) | |
26 | - | func init (k) = { | |
27 | - | let l = valueOrErrorMessage(getString(c), "init: no multisig set") | |
28 | - | let m = valueOrElse(getBoolean(b), false) | |
29 | - | let n = if ((j.caller != this)) | |
30 | - | then throw("init: permission denied") | |
31 | - | else if (m) | |
32 | - | then throw("init: already initialized") | |
33 | - | else if (!(f(k))) | |
34 | - | then throw("init: invalid claimer address") | |
35 | - | else unit | |
36 | - | if ((n == n)) | |
37 | - | then $Tuple2([BooleanEntry(b, true), StringEntry(e, k)], unit) | |
43 | + | func s (t,u) = { | |
44 | + | let q = assetInfo(fromBase58String(t)) | |
45 | + | if ($isInstanceOf(q, "Asset")) | |
46 | + | then true | |
47 | + | else if ($isInstanceOf(q, "Unit")) | |
48 | + | then throw(u) | |
49 | + | else throw("Match error") | |
50 | + | } | |
51 | + | ||
52 | + | ||
53 | + | func v (w,x,y,u) = if (if ((x > w)) | |
54 | + | then true | |
55 | + | else (w > y)) | |
56 | + | then throw(u) | |
57 | + | else true | |
58 | + | ||
59 | + | ||
60 | + | func z () = { | |
61 | + | let q = getString(g) | |
62 | + | if ($isInstanceOf(q, "String")) | |
63 | + | then { | |
64 | + | let r = q | |
65 | + | addressFromStringValue(r) | |
66 | + | } | |
67 | + | else Address(base58'') | |
68 | + | } | |
69 | + | ||
70 | + | ||
71 | + | func A (w) = [StringEntry(g, toString(w))] | |
72 | + | ||
73 | + | ||
74 | + | func B () = { | |
75 | + | let q = getString(h) | |
76 | + | if ($isInstanceOf(q, "String")) | |
77 | + | then { | |
78 | + | let r = q | |
79 | + | addressFromStringValue(r) | |
80 | + | } | |
81 | + | else Address(base58'') | |
82 | + | } | |
83 | + | ||
84 | + | ||
85 | + | func C (w) = [StringEntry(h, toString(w))] | |
86 | + | ||
87 | + | ||
88 | + | func D (E) = { | |
89 | + | let q = getInteger(makeString([f, E], a)) | |
90 | + | if ($isInstanceOf(q, "Int")) | |
91 | + | then { | |
92 | + | let r = q | |
93 | + | r | |
94 | + | } | |
95 | + | else 0 | |
96 | + | } | |
97 | + | ||
98 | + | ||
99 | + | func F (E,w) = [IntegerEntry(makeString([f, E], a), w)] | |
100 | + | ||
101 | + | ||
102 | + | func G (E) = { | |
103 | + | let q = getInteger(makeString([i, E], a)) | |
104 | + | if ($isInstanceOf(q, "Int")) | |
105 | + | then { | |
106 | + | let r = q | |
107 | + | r | |
108 | + | } | |
109 | + | else 0 | |
110 | + | } | |
111 | + | ||
112 | + | ||
113 | + | func H (E,w) = [IntegerEntry(makeString([i, E], a), w)] | |
114 | + | ||
115 | + | ||
116 | + | func I () = { | |
117 | + | let q = getString(j) | |
118 | + | if ($isInstanceOf(q, "String")) | |
119 | + | then { | |
120 | + | let r = q | |
121 | + | addressFromStringValue(r) | |
122 | + | } | |
123 | + | else Address(base58'') | |
124 | + | } | |
125 | + | ||
126 | + | ||
127 | + | func J (w) = [StringEntry(j, toString(w))] | |
128 | + | ||
129 | + | ||
130 | + | func K () = { | |
131 | + | let q = getString(z(), "%s__lpAssetId") | |
132 | + | if ($isInstanceOf(q, "String")) | |
133 | + | then { | |
134 | + | let r = q | |
135 | + | fromBase58String(r) | |
136 | + | } | |
137 | + | else throw("_getWAVESDLPAsset: revert") | |
138 | + | } | |
139 | + | ||
140 | + | ||
141 | + | func L () = { | |
142 | + | let q = getInteger(z(), ("%s%s__available__" + toString(this))) | |
143 | + | if ($isInstanceOf(q, "Int")) | |
144 | + | then { | |
145 | + | let r = q | |
146 | + | r | |
147 | + | } | |
148 | + | else 0 | |
149 | + | } | |
150 | + | ||
151 | + | ||
152 | + | @Callable(M) | |
153 | + | func init (N) = { | |
154 | + | let O = valueOrErrorMessage(getString(c), "init: no multisig set") | |
155 | + | if ((O == O)) | |
156 | + | then { | |
157 | + | let P = valueOrElse(getBoolean(b), false) | |
158 | + | let Q = if ((M.caller != this)) | |
159 | + | then throw("init: permission denied") | |
160 | + | else if (P) | |
161 | + | then throw("init: already initialized") | |
162 | + | else if (!(o(N))) | |
163 | + | then throw("init: invalid claimer address") | |
164 | + | else unit | |
165 | + | if ((Q == Q)) | |
166 | + | then $Tuple2([BooleanEntry(b, true), StringEntry(e, N)], unit) | |
167 | + | else throw("Strict value is not equal to itself.") | |
168 | + | } | |
38 | 169 | else throw("Strict value is not equal to itself.") | |
39 | 170 | } | |
40 | 171 | ||
41 | 172 | ||
42 | 173 | ||
43 | - | @Callable( | |
44 | - | func setMultisig ( | |
45 | - | let | |
174 | + | @Callable(M) | |
175 | + | func setMultisig (R) = { | |
176 | + | let Q = if ((M.caller != this)) | |
46 | 177 | then throw("setMultisig: permission denied") | |
47 | - | else if (!( | |
178 | + | else if (!(o(R))) | |
48 | 179 | then throw("setMultisig: invalid multisig address") | |
49 | 180 | else unit | |
50 | - | if (( | |
51 | - | then $Tuple2([StringEntry(c, | |
181 | + | if ((Q == Q)) | |
182 | + | then $Tuple2([StringEntry(c, R)], unit) | |
52 | 183 | else throw("Strict value is not equal to itself.") | |
53 | 184 | } | |
54 | 185 | ||
55 | 186 | ||
56 | 187 | ||
57 | - | @Callable( | |
58 | - | func setClaimer ( | |
59 | - | let | |
188 | + | @Callable(M) | |
189 | + | func setClaimer (N) = { | |
190 | + | let Q = if ((M.caller != this)) | |
60 | 191 | then throw("setClaimer: permission denied") | |
61 | - | else if (!( | |
192 | + | else if (!(o(N))) | |
62 | 193 | then throw("setClaimer: invalid claimer address") | |
63 | 194 | else unit | |
64 | - | if (( | |
65 | - | then $Tuple2([StringEntry(e, | |
195 | + | if ((Q == Q)) | |
196 | + | then $Tuple2([StringEntry(e, N)], unit) | |
66 | 197 | else throw("Strict value is not equal to itself.") | |
67 | 198 | } | |
68 | 199 | ||
69 | 200 | ||
70 | 201 | ||
71 | - | @Callable( | |
72 | - | func claim ( | |
202 | + | @Callable(M) | |
203 | + | func claim (S) = if ((M.caller != addressFromStringValue(getStringValue(e)))) | |
73 | 204 | then throw("claim: permission denied") | |
74 | - | else if (if ((0 >= | |
205 | + | else if (if ((0 >= S)) | |
75 | 206 | then true | |
76 | - | else ( | |
207 | + | else (S > wavesBalance(this).regular)) | |
77 | 208 | then throw("claim: invalid amount") | |
78 | - | else $Tuple2([ScriptTransfer( | |
209 | + | else $Tuple2([ScriptTransfer(M.caller, S, unit)], unit) | |
79 | 210 | ||
80 | 211 | ||
81 | - | @Verifier(q) | |
82 | - | func r () = { | |
83 | - | let h = getString(c) | |
84 | - | if ($isInstanceOf(h, "String")) | |
212 | + | ||
213 | + | @Callable(M) | |
214 | + | func getAvailableWAVESDLP () = $Tuple2(nil, L()) | |
215 | + | ||
216 | + | ||
217 | + | ||
218 | + | @Callable(M) | |
219 | + | func claimAndSwapWAVESDLP () = { | |
220 | + | let T = K() | |
221 | + | let U = toBase58String(T) | |
222 | + | let V = invoke(z(), k, nil, nil) | |
223 | + | if ((V == V)) | |
85 | 224 | then { | |
86 | - | let l = h | |
87 | - | valueOrElse(getBoolean(addressFromStringValue(l), makeString([d, toString(this), toBase58String(q.id)], a)), false) | |
225 | + | let W = assetBalance(this, T) | |
226 | + | if ((W == W)) | |
227 | + | then { | |
228 | + | let X = G(U) | |
229 | + | let Y = if ((W > X)) | |
230 | + | then X | |
231 | + | else W | |
232 | + | let Z = if ((height > (D(U) + m))) | |
233 | + | then invoke(B(), l, [1, "", toString(this)], [AttachedPayment(T, Y)]) | |
234 | + | else throw("claimAndSwapWAVESDLP: too often") | |
235 | + | if ((Z == Z)) | |
236 | + | then { | |
237 | + | let q = Z | |
238 | + | if ($isInstanceOf(q, "Int")) | |
239 | + | then { | |
240 | + | let r = q | |
241 | + | if ((r > n)) | |
242 | + | then $Tuple2((F(U, height) ++ [ScriptTransfer(M.caller, n, unit)]), unit) | |
243 | + | else throw("claimAndSwapWAVESDLP: too little amount got") | |
244 | + | } | |
245 | + | else throw("claimAndSwapWAVESDLP: swap revert") | |
246 | + | } | |
247 | + | else throw("Strict value is not equal to itself.") | |
248 | + | } | |
249 | + | else throw("Strict value is not equal to itself.") | |
88 | 250 | } | |
89 | - | else sigVerify(q.bodyBytes, q.proofs[0], q.senderPublicKey) | |
251 | + | else throw("Strict value is not equal to itself.") | |
252 | + | } | |
253 | + | ||
254 | + | ||
255 | + | ||
256 | + | @Callable(M) | |
257 | + | func swapAsset (t) = { | |
258 | + | let Q = s(t, "swapAsset: invalid asset") | |
259 | + | if ((Q == Q)) | |
260 | + | then { | |
261 | + | let T = fromBase58String(t) | |
262 | + | let W = assetBalance(this, T) | |
263 | + | if ((W == W)) | |
264 | + | then { | |
265 | + | let X = G(t) | |
266 | + | let Y = if ((W > X)) | |
267 | + | then X | |
268 | + | else W | |
269 | + | let Z = if ((height > (D(t) + m))) | |
270 | + | then invoke(B(), l, [1, "", toString(this)], [AttachedPayment(T, Y)]) | |
271 | + | else throw("swapAsset: too often") | |
272 | + | if ((Z == Z)) | |
273 | + | then { | |
274 | + | let q = Z | |
275 | + | if ($isInstanceOf(q, "Int")) | |
276 | + | then { | |
277 | + | let r = q | |
278 | + | if ((r > n)) | |
279 | + | then $Tuple2((F(t, height) ++ [ScriptTransfer(M.caller, n, unit)]), unit) | |
280 | + | else throw("swapAsset: too little amount got") | |
281 | + | } | |
282 | + | else throw("swapAsset: swap revert") | |
283 | + | } | |
284 | + | else throw("Strict value is not equal to itself.") | |
285 | + | } | |
286 | + | else throw("Strict value is not equal to itself.") | |
287 | + | } | |
288 | + | else throw("Strict value is not equal to itself.") | |
289 | + | } | |
290 | + | ||
291 | + | ||
292 | + | ||
293 | + | @Callable(M) | |
294 | + | func setWavesDAOContract (p) = { | |
295 | + | let Q = if ((M.caller != this)) | |
296 | + | then throw("setWavesDAOContract: permission denied") | |
297 | + | else if (!(o(p))) | |
298 | + | then throw("setWavesDAOContract: invalid address") | |
299 | + | else unit | |
300 | + | if ((Q == Q)) | |
301 | + | then $Tuple2(A(addressFromStringValue(p)), unit) | |
302 | + | else throw("Strict value is not equal to itself.") | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(M) | |
308 | + | func setSwapContract (p) = { | |
309 | + | let Q = if ((M.caller != this)) | |
310 | + | then throw("setSwapContract: permission denied") | |
311 | + | else if (!(o(p))) | |
312 | + | then throw("setSwapContract: invalid address") | |
313 | + | else unit | |
314 | + | if ((Q == Q)) | |
315 | + | then $Tuple2(C(addressFromStringValue(p)), unit) | |
316 | + | else throw("Strict value is not equal to itself.") | |
317 | + | } | |
318 | + | ||
319 | + | ||
320 | + | ||
321 | + | @Callable(M) | |
322 | + | func setSwapLimit (t,aa) = { | |
323 | + | let Q = if (s(t, "setSwapLimit: invalid asset")) | |
324 | + | then if ((M.caller != this)) | |
325 | + | then throw("setSwapLimit: permission denied") | |
326 | + | else if ((0 >= aa)) | |
327 | + | then throw("setSwapLimit: invalid limit") | |
328 | + | else unit | |
329 | + | else false | |
330 | + | if ((Q == Q)) | |
331 | + | then $Tuple2(H(t, aa), unit) | |
332 | + | else throw("Strict value is not equal to itself.") | |
333 | + | } | |
334 | + | ||
335 | + | ||
336 | + | ||
337 | + | @Callable(M) | |
338 | + | func setUnitsChainContract (p) = { | |
339 | + | let Q = if ((M.caller != this)) | |
340 | + | then throw("setUnitsChainContract: permission denied") | |
341 | + | else if (!(o(p))) | |
342 | + | then throw("setUnitsChainContract: invalid address") | |
343 | + | else unit | |
344 | + | if ((Q == Q)) | |
345 | + | then $Tuple2(J(addressFromStringValue(p)), unit) | |
346 | + | else throw("Strict value is not equal to itself.") | |
347 | + | } | |
348 | + | ||
349 | + | ||
350 | + | @Verifier(ab) | |
351 | + | func ac () = { | |
352 | + | let q = getString(c) | |
353 | + | if ($isInstanceOf(q, "String")) | |
354 | + | then { | |
355 | + | let O = q | |
356 | + | let ad = ab | |
357 | + | if ($isInstanceOf(ad, "InvokeScriptTransaction")) | |
358 | + | then { | |
359 | + | let ab = ad | |
360 | + | if ((ab.dApp == I())) | |
361 | + | then sigVerify_128Kb(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey) | |
362 | + | else valueOrElse(getBoolean(addressFromStringValue(O), makeString([d, toString(this), toBase58String(ab.id)], a)), false) | |
363 | + | } | |
364 | + | else valueOrElse(getBoolean(addressFromStringValue(O), makeString([d, toString(this), toBase58String(ab.id)], a)), false) | |
365 | + | } | |
366 | + | else sigVerify(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey) | |
90 | 367 | } | |
91 | 368 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = "INIT" | |
7 | 7 | ||
8 | 8 | let c = "MULTISIG" | |
9 | 9 | ||
10 | 10 | let d = "STATUS" | |
11 | 11 | ||
12 | 12 | let e = "CLAIMER" | |
13 | 13 | ||
14 | - | func f (g) = { | |
15 | - | let h = addressFromString(g) | |
16 | - | if ($isInstanceOf(h, "Address")) | |
14 | + | let f = "LAST_SWAP_AT" | |
15 | + | ||
16 | + | let g = "WAVES_DAO_CONTRACT" | |
17 | + | ||
18 | + | let h = "SWAP_CONTRACT" | |
19 | + | ||
20 | + | let i = "SWAP_LIMIT" | |
21 | + | ||
22 | + | let j = "UNITS_CHAIN_CONTRACT" | |
23 | + | ||
24 | + | let k = "claimLP" | |
25 | + | ||
26 | + | let l = "swap" | |
27 | + | ||
28 | + | let m = 60 | |
29 | + | ||
30 | + | let n = 500000 | |
31 | + | ||
32 | + | func o (p) = { | |
33 | + | let q = addressFromString(p) | |
34 | + | if ($isInstanceOf(q, "Address")) | |
17 | 35 | then { | |
18 | - | let | |
36 | + | let r = q | |
19 | 37 | true | |
20 | 38 | } | |
21 | 39 | else false | |
22 | 40 | } | |
23 | 41 | ||
24 | 42 | ||
25 | - | @Callable(j) | |
26 | - | func init (k) = { | |
27 | - | let l = valueOrErrorMessage(getString(c), "init: no multisig set") | |
28 | - | let m = valueOrElse(getBoolean(b), false) | |
29 | - | let n = if ((j.caller != this)) | |
30 | - | then throw("init: permission denied") | |
31 | - | else if (m) | |
32 | - | then throw("init: already initialized") | |
33 | - | else if (!(f(k))) | |
34 | - | then throw("init: invalid claimer address") | |
35 | - | else unit | |
36 | - | if ((n == n)) | |
37 | - | then $Tuple2([BooleanEntry(b, true), StringEntry(e, k)], unit) | |
43 | + | func s (t,u) = { | |
44 | + | let q = assetInfo(fromBase58String(t)) | |
45 | + | if ($isInstanceOf(q, "Asset")) | |
46 | + | then true | |
47 | + | else if ($isInstanceOf(q, "Unit")) | |
48 | + | then throw(u) | |
49 | + | else throw("Match error") | |
50 | + | } | |
51 | + | ||
52 | + | ||
53 | + | func v (w,x,y,u) = if (if ((x > w)) | |
54 | + | then true | |
55 | + | else (w > y)) | |
56 | + | then throw(u) | |
57 | + | else true | |
58 | + | ||
59 | + | ||
60 | + | func z () = { | |
61 | + | let q = getString(g) | |
62 | + | if ($isInstanceOf(q, "String")) | |
63 | + | then { | |
64 | + | let r = q | |
65 | + | addressFromStringValue(r) | |
66 | + | } | |
67 | + | else Address(base58'') | |
68 | + | } | |
69 | + | ||
70 | + | ||
71 | + | func A (w) = [StringEntry(g, toString(w))] | |
72 | + | ||
73 | + | ||
74 | + | func B () = { | |
75 | + | let q = getString(h) | |
76 | + | if ($isInstanceOf(q, "String")) | |
77 | + | then { | |
78 | + | let r = q | |
79 | + | addressFromStringValue(r) | |
80 | + | } | |
81 | + | else Address(base58'') | |
82 | + | } | |
83 | + | ||
84 | + | ||
85 | + | func C (w) = [StringEntry(h, toString(w))] | |
86 | + | ||
87 | + | ||
88 | + | func D (E) = { | |
89 | + | let q = getInteger(makeString([f, E], a)) | |
90 | + | if ($isInstanceOf(q, "Int")) | |
91 | + | then { | |
92 | + | let r = q | |
93 | + | r | |
94 | + | } | |
95 | + | else 0 | |
96 | + | } | |
97 | + | ||
98 | + | ||
99 | + | func F (E,w) = [IntegerEntry(makeString([f, E], a), w)] | |
100 | + | ||
101 | + | ||
102 | + | func G (E) = { | |
103 | + | let q = getInteger(makeString([i, E], a)) | |
104 | + | if ($isInstanceOf(q, "Int")) | |
105 | + | then { | |
106 | + | let r = q | |
107 | + | r | |
108 | + | } | |
109 | + | else 0 | |
110 | + | } | |
111 | + | ||
112 | + | ||
113 | + | func H (E,w) = [IntegerEntry(makeString([i, E], a), w)] | |
114 | + | ||
115 | + | ||
116 | + | func I () = { | |
117 | + | let q = getString(j) | |
118 | + | if ($isInstanceOf(q, "String")) | |
119 | + | then { | |
120 | + | let r = q | |
121 | + | addressFromStringValue(r) | |
122 | + | } | |
123 | + | else Address(base58'') | |
124 | + | } | |
125 | + | ||
126 | + | ||
127 | + | func J (w) = [StringEntry(j, toString(w))] | |
128 | + | ||
129 | + | ||
130 | + | func K () = { | |
131 | + | let q = getString(z(), "%s__lpAssetId") | |
132 | + | if ($isInstanceOf(q, "String")) | |
133 | + | then { | |
134 | + | let r = q | |
135 | + | fromBase58String(r) | |
136 | + | } | |
137 | + | else throw("_getWAVESDLPAsset: revert") | |
138 | + | } | |
139 | + | ||
140 | + | ||
141 | + | func L () = { | |
142 | + | let q = getInteger(z(), ("%s%s__available__" + toString(this))) | |
143 | + | if ($isInstanceOf(q, "Int")) | |
144 | + | then { | |
145 | + | let r = q | |
146 | + | r | |
147 | + | } | |
148 | + | else 0 | |
149 | + | } | |
150 | + | ||
151 | + | ||
152 | + | @Callable(M) | |
153 | + | func init (N) = { | |
154 | + | let O = valueOrErrorMessage(getString(c), "init: no multisig set") | |
155 | + | if ((O == O)) | |
156 | + | then { | |
157 | + | let P = valueOrElse(getBoolean(b), false) | |
158 | + | let Q = if ((M.caller != this)) | |
159 | + | then throw("init: permission denied") | |
160 | + | else if (P) | |
161 | + | then throw("init: already initialized") | |
162 | + | else if (!(o(N))) | |
163 | + | then throw("init: invalid claimer address") | |
164 | + | else unit | |
165 | + | if ((Q == Q)) | |
166 | + | then $Tuple2([BooleanEntry(b, true), StringEntry(e, N)], unit) | |
167 | + | else throw("Strict value is not equal to itself.") | |
168 | + | } | |
38 | 169 | else throw("Strict value is not equal to itself.") | |
39 | 170 | } | |
40 | 171 | ||
41 | 172 | ||
42 | 173 | ||
43 | - | @Callable( | |
44 | - | func setMultisig ( | |
45 | - | let | |
174 | + | @Callable(M) | |
175 | + | func setMultisig (R) = { | |
176 | + | let Q = if ((M.caller != this)) | |
46 | 177 | then throw("setMultisig: permission denied") | |
47 | - | else if (!( | |
178 | + | else if (!(o(R))) | |
48 | 179 | then throw("setMultisig: invalid multisig address") | |
49 | 180 | else unit | |
50 | - | if (( | |
51 | - | then $Tuple2([StringEntry(c, | |
181 | + | if ((Q == Q)) | |
182 | + | then $Tuple2([StringEntry(c, R)], unit) | |
52 | 183 | else throw("Strict value is not equal to itself.") | |
53 | 184 | } | |
54 | 185 | ||
55 | 186 | ||
56 | 187 | ||
57 | - | @Callable( | |
58 | - | func setClaimer ( | |
59 | - | let | |
188 | + | @Callable(M) | |
189 | + | func setClaimer (N) = { | |
190 | + | let Q = if ((M.caller != this)) | |
60 | 191 | then throw("setClaimer: permission denied") | |
61 | - | else if (!( | |
192 | + | else if (!(o(N))) | |
62 | 193 | then throw("setClaimer: invalid claimer address") | |
63 | 194 | else unit | |
64 | - | if (( | |
65 | - | then $Tuple2([StringEntry(e, | |
195 | + | if ((Q == Q)) | |
196 | + | then $Tuple2([StringEntry(e, N)], unit) | |
66 | 197 | else throw("Strict value is not equal to itself.") | |
67 | 198 | } | |
68 | 199 | ||
69 | 200 | ||
70 | 201 | ||
71 | - | @Callable( | |
72 | - | func claim ( | |
202 | + | @Callable(M) | |
203 | + | func claim (S) = if ((M.caller != addressFromStringValue(getStringValue(e)))) | |
73 | 204 | then throw("claim: permission denied") | |
74 | - | else if (if ((0 >= | |
205 | + | else if (if ((0 >= S)) | |
75 | 206 | then true | |
76 | - | else ( | |
207 | + | else (S > wavesBalance(this).regular)) | |
77 | 208 | then throw("claim: invalid amount") | |
78 | - | else $Tuple2([ScriptTransfer( | |
209 | + | else $Tuple2([ScriptTransfer(M.caller, S, unit)], unit) | |
79 | 210 | ||
80 | 211 | ||
81 | - | @Verifier(q) | |
82 | - | func r () = { | |
83 | - | let h = getString(c) | |
84 | - | if ($isInstanceOf(h, "String")) | |
212 | + | ||
213 | + | @Callable(M) | |
214 | + | func getAvailableWAVESDLP () = $Tuple2(nil, L()) | |
215 | + | ||
216 | + | ||
217 | + | ||
218 | + | @Callable(M) | |
219 | + | func claimAndSwapWAVESDLP () = { | |
220 | + | let T = K() | |
221 | + | let U = toBase58String(T) | |
222 | + | let V = invoke(z(), k, nil, nil) | |
223 | + | if ((V == V)) | |
85 | 224 | then { | |
86 | - | let l = h | |
87 | - | valueOrElse(getBoolean(addressFromStringValue(l), makeString([d, toString(this), toBase58String(q.id)], a)), false) | |
225 | + | let W = assetBalance(this, T) | |
226 | + | if ((W == W)) | |
227 | + | then { | |
228 | + | let X = G(U) | |
229 | + | let Y = if ((W > X)) | |
230 | + | then X | |
231 | + | else W | |
232 | + | let Z = if ((height > (D(U) + m))) | |
233 | + | then invoke(B(), l, [1, "", toString(this)], [AttachedPayment(T, Y)]) | |
234 | + | else throw("claimAndSwapWAVESDLP: too often") | |
235 | + | if ((Z == Z)) | |
236 | + | then { | |
237 | + | let q = Z | |
238 | + | if ($isInstanceOf(q, "Int")) | |
239 | + | then { | |
240 | + | let r = q | |
241 | + | if ((r > n)) | |
242 | + | then $Tuple2((F(U, height) ++ [ScriptTransfer(M.caller, n, unit)]), unit) | |
243 | + | else throw("claimAndSwapWAVESDLP: too little amount got") | |
244 | + | } | |
245 | + | else throw("claimAndSwapWAVESDLP: swap revert") | |
246 | + | } | |
247 | + | else throw("Strict value is not equal to itself.") | |
248 | + | } | |
249 | + | else throw("Strict value is not equal to itself.") | |
88 | 250 | } | |
89 | - | else sigVerify(q.bodyBytes, q.proofs[0], q.senderPublicKey) | |
251 | + | else throw("Strict value is not equal to itself.") | |
252 | + | } | |
253 | + | ||
254 | + | ||
255 | + | ||
256 | + | @Callable(M) | |
257 | + | func swapAsset (t) = { | |
258 | + | let Q = s(t, "swapAsset: invalid asset") | |
259 | + | if ((Q == Q)) | |
260 | + | then { | |
261 | + | let T = fromBase58String(t) | |
262 | + | let W = assetBalance(this, T) | |
263 | + | if ((W == W)) | |
264 | + | then { | |
265 | + | let X = G(t) | |
266 | + | let Y = if ((W > X)) | |
267 | + | then X | |
268 | + | else W | |
269 | + | let Z = if ((height > (D(t) + m))) | |
270 | + | then invoke(B(), l, [1, "", toString(this)], [AttachedPayment(T, Y)]) | |
271 | + | else throw("swapAsset: too often") | |
272 | + | if ((Z == Z)) | |
273 | + | then { | |
274 | + | let q = Z | |
275 | + | if ($isInstanceOf(q, "Int")) | |
276 | + | then { | |
277 | + | let r = q | |
278 | + | if ((r > n)) | |
279 | + | then $Tuple2((F(t, height) ++ [ScriptTransfer(M.caller, n, unit)]), unit) | |
280 | + | else throw("swapAsset: too little amount got") | |
281 | + | } | |
282 | + | else throw("swapAsset: swap revert") | |
283 | + | } | |
284 | + | else throw("Strict value is not equal to itself.") | |
285 | + | } | |
286 | + | else throw("Strict value is not equal to itself.") | |
287 | + | } | |
288 | + | else throw("Strict value is not equal to itself.") | |
289 | + | } | |
290 | + | ||
291 | + | ||
292 | + | ||
293 | + | @Callable(M) | |
294 | + | func setWavesDAOContract (p) = { | |
295 | + | let Q = if ((M.caller != this)) | |
296 | + | then throw("setWavesDAOContract: permission denied") | |
297 | + | else if (!(o(p))) | |
298 | + | then throw("setWavesDAOContract: invalid address") | |
299 | + | else unit | |
300 | + | if ((Q == Q)) | |
301 | + | then $Tuple2(A(addressFromStringValue(p)), unit) | |
302 | + | else throw("Strict value is not equal to itself.") | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(M) | |
308 | + | func setSwapContract (p) = { | |
309 | + | let Q = if ((M.caller != this)) | |
310 | + | then throw("setSwapContract: permission denied") | |
311 | + | else if (!(o(p))) | |
312 | + | then throw("setSwapContract: invalid address") | |
313 | + | else unit | |
314 | + | if ((Q == Q)) | |
315 | + | then $Tuple2(C(addressFromStringValue(p)), unit) | |
316 | + | else throw("Strict value is not equal to itself.") | |
317 | + | } | |
318 | + | ||
319 | + | ||
320 | + | ||
321 | + | @Callable(M) | |
322 | + | func setSwapLimit (t,aa) = { | |
323 | + | let Q = if (s(t, "setSwapLimit: invalid asset")) | |
324 | + | then if ((M.caller != this)) | |
325 | + | then throw("setSwapLimit: permission denied") | |
326 | + | else if ((0 >= aa)) | |
327 | + | then throw("setSwapLimit: invalid limit") | |
328 | + | else unit | |
329 | + | else false | |
330 | + | if ((Q == Q)) | |
331 | + | then $Tuple2(H(t, aa), unit) | |
332 | + | else throw("Strict value is not equal to itself.") | |
333 | + | } | |
334 | + | ||
335 | + | ||
336 | + | ||
337 | + | @Callable(M) | |
338 | + | func setUnitsChainContract (p) = { | |
339 | + | let Q = if ((M.caller != this)) | |
340 | + | then throw("setUnitsChainContract: permission denied") | |
341 | + | else if (!(o(p))) | |
342 | + | then throw("setUnitsChainContract: invalid address") | |
343 | + | else unit | |
344 | + | if ((Q == Q)) | |
345 | + | then $Tuple2(J(addressFromStringValue(p)), unit) | |
346 | + | else throw("Strict value is not equal to itself.") | |
347 | + | } | |
348 | + | ||
349 | + | ||
350 | + | @Verifier(ab) | |
351 | + | func ac () = { | |
352 | + | let q = getString(c) | |
353 | + | if ($isInstanceOf(q, "String")) | |
354 | + | then { | |
355 | + | let O = q | |
356 | + | let ad = ab | |
357 | + | if ($isInstanceOf(ad, "InvokeScriptTransaction")) | |
358 | + | then { | |
359 | + | let ab = ad | |
360 | + | if ((ab.dApp == I())) | |
361 | + | then sigVerify_128Kb(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey) | |
362 | + | else valueOrElse(getBoolean(addressFromStringValue(O), makeString([d, toString(this), toBase58String(ab.id)], a)), false) | |
363 | + | } | |
364 | + | else valueOrElse(getBoolean(addressFromStringValue(O), makeString([d, toString(this), toBase58String(ab.id)], a)), false) | |
365 | + | } | |
366 | + | else sigVerify(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey) | |
90 | 367 | } | |
91 | 368 |
github/deemru/w8io/169f3d6 57.57 ms ◑