tx · ANM5dtb6xGv6j2n8RGbD2oDR7gKZQzaanCvRvkpuMS2G

3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr:  -0.00700000 Waves

2024.05.21 08:44 [4181425] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves

{ "type": 13, "id": "ANM5dtb6xGv6j2n8RGbD2oDR7gKZQzaanCvRvkpuMS2G", "fee": 700000, "feeAssetId": null, "timestamp": 1716270294764, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "54Nviam8y2oVQm8pTjjcZmePzrdA9cRyjP8LUHHRCVuv1eT2ZPVpqvWUgLkw7JgLi1WxWe2HoCwQmnNwMpHpT79V" ], "script": "base64:BgIbCAISABIECgIBBBIAEgASABIECgIEARIDCgEEJwENdHJ5R2V0SW50ZWdlcgIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAAJkNgDAhD0AAmQ4AIDC1y8ABHd4SWQBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAAV4dG5JZAEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAB2ludm9rZXIJAQdBZGRyZXNzAQEaAVcYiRskbS/iRKWyuS7QZCNQLinfcjDaMlkADHN3b3BXQVZFU3h0bgkBB0FkZHJlc3MBARoBV6ugnY67/HaJPzVO8b2xSyoDl1hFH8eK8wALdW5sb2NrQmxvY2sJAGgCAB4AoAsACmhlaXJQdWJLZXkBIBoVri0PIi/W6HMN/BFH8ge2Duo03s/elirY3UgUGn4QAAx1bmxvY2tCbG9jazIJAGgCAFoAoAsAElB1enpsZU1hc3RlclB1YktleQEgOzVNbj+fvvhUnJZEB4BWqy/iE2BFxHvyPxdD9EIFJl0ADGtleUFjdGl2YXRlZAIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0ABNrZXlXYXZlbGV0c1JlY2VpdmVkAiB0b3RhbCBXQVZFUyByZWNlaXZlZCBpbiB3YXZlbGV0cwASa2V5V2F2ZWxldHNQYWlkT3V0AiB0b3RhbCBXQVZFUyBwYWlkIG91dCBpbiB3YXZlbGV0cwAGa2V5Uk9JAhBST0kgYmFzaXMgcG9pbnRzAA5rTGVhc2luZ0Ftb3VudAIObGVhc2luZ19hbW91bnQACmtMZWFzaW5nSWQCCmxlYXNpbmdfaWQACGtEaXNhYmxlAghkaXNhYmxlZAAMcHJvamVjdE93bmVyARoBV44d5lHKOCPOw5HDxFaL1YPTb4hW/zbdCwAPd2hpcmxwb29sUG9vbElkARoBVwlIVKiYtf/MSkbbEv1LyZMZRjdDmIfXzQAJYmJiUG9vbElkARoBV1Luk1YUTX4HjNKFD+Z+XFc3fhyf7zyCHQAOdm9sYXRpbGVQb29sSWQBGgFXhEA2wkVqc7O/ZMXSQRm+Xtgl9YL6D7miABJidXJueHRuV2hpcmxQb29sSWQBGgFXGCUUEzHiFPCLE3aJSZgT5fcL7rnq7WazAAtwb29sYm9vc3RTQwEaAVdJth4Q36ANT9jV0A+j44S32V46KbMRqawADnJld2FyZHNBZGRyZXNzCQEHQWRkcmVzcwEBGgFXL67xcGkDY58tIGVFIdRxHf4xnfL4rKNiAAl3aGlybHBvb2wBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAA93aGlybHBvb2xTdHJpbmcJANgEAQEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABXdhdmVzAQQTq9kzAQx0b2tlbnNJblBvb2wCBnBvb2xJZAhhc3NldFN0cgkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFBnBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8FCGFzc2V0U3RyAghfYmFsYW5jZQAQd2F2ZXNJbldoaXJscG9vbAkBDHRva2Vuc0luUG9vbAIFD3doaXJscG9vbFBvb2xJZAkA2AQBBQV3YXZlcwAQd2hpcmxJbldoaXJscG9vbAkBDHRva2Vuc0luUG9vbAIFD3doaXJscG9vbFBvb2xJZAUPd2hpcmxwb29sU3RyaW5nAAp3aGlybEluQkJCCQEMdG9rZW5zSW5Qb29sAgUJYmJiUG9vbElkBQ93aGlybHBvb2xTdHJpbmcAD3doaXJsSW5Wb2xhdGlsZQkBDHRva2Vuc0luUG9vbAIFDnZvbGF0aWxlUG9vbElkBQ93aGlybHBvb2xTdHJpbmcAE3doaXJsSW5CdXJueHRuV2hpcmwJAQx0b2tlbnNJblBvb2wCBRJidXJueHRuV2hpcmxQb29sSWQFD3doaXJscG9vbFN0cmluZwAKdG90YWxXaGlybAkAZAIJAGQCCQBkAgUQd2hpcmxJbldoaXJscG9vbAUKd2hpcmxJbkJCQgUPd2hpcmxJblZvbGF0aWxlBRN3aGlybEluQnVybnh0bldoaXJsAA53aGlybHBvb2xXYXZlcwkAawMFAmQ4CQBpAgkAaAIFEHdhdmVzSW5XaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQ93aGlybHBvb2xQb29sSWQJAKwCAgkArAICAgdzdGF0aWNfCQDYBAEFCXdoaXJscG9vbAIHX3dlaWdodADoBwUQd2hpcmxJbldoaXJscG9vbAAPd2hpcmxwb29sU3VwcGx5BAckbWF0Y2gwCQDsBwEFCXdoaXJscG9vbAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQBBWJvb3N0AgZwb29sSWQGYW1vdW50CQD8BwQJAQdBZGRyZXNzAQULcG9vbGJvb3N0U0MCC2FkZEJvb3N0aW5nCQDMCAIFBnBvb2xJZAkAzAgCAAcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUGYW1vdW50BQNuaWwBBnN3YXBXWAMHYXNzZXRJbghhc3NldE91dAhhbW91bnRJbgkA/AcECQEHQWRkcmVzcwEBGgFXLio1NbENt/F5PuG3RtCedFJNezHQg64GAgRzd2FwCQDMCAIAAQkAzAgCCQDYBAEFCGFzc2V0T3V0CQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsBwFpAQpwcmljZVN0YXRzAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIgV0hJUkxQT09ML1dBVkVTIG1pZCBtYXJrZXQgcHJpY2UFDndoaXJscG9vbFdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXSElSTFBPT0wgdG90YWwgc3VwcGx5CQBpAgUPd2hpcmxwb29sU3VwcGx5BQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIUdG90YWwgV0FWRVMgcmVjZWl2ZWQJAGkCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQFAmQ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCAh10b3RhbCBXQVZFUyBwYWlkIG91dCBpbiBXQVZFUwkAaQIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0BQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgUGa2V5Uk9JCQBrAwkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQAkE4JAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUTa2V5V2F2ZWxldHNSZWNlaXZlZAUDbmlsAWkBDGJvb3N0UG9vbEFQWQIGYW1vdW50EnByb2plY3RPd25lclJld2FyZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEC2Ftb3VudEJvb3N0AwkAAAIFEnByb2plY3RPd25lclJld2FyZAYJAGsDCQBoAgUGYW1vdW50BQJkOABQAGQFBmFtb3VudAQLYW1vdW50T3duZXIDCQAAAgUScHJvamVjdE93bmVyUmV3YXJkBgkAawMJAGgCBQZhbW91bnQFAmQ4ABQAZAAACgEMcmV3YXJkc1NoYXJlAQlwb29sU2hhcmUJAGsDBQthbW91bnRCb29zdAUJcG9vbFNoYXJlBQp0b3RhbFdoaXJsBAZib29zdFcJAQVib29zdAICIzNQMm15VGJkNXpwRUhjWW1OcGRXVHA1Z1hTNUI4dEwxUkNZCQEMcmV3YXJkc1NoYXJlAQUQd2hpcmxJbldoaXJscG9vbAMJAAACBQZib29zdFcFBmJvb3N0VwQIYm9vc3RCQkIJAQVib29zdAICIzNQOVZQd1ZmTmozZERldlFadDFaOTUxQTRLNTdjbVFtQ2drCQEMcmV3YXJkc1NoYXJlAQUKd2hpcmxJbkJCQgMJAAACBQhib29zdEJCQgUIYm9vc3RCQkIEDWJvb3N0Vm9sYXRpbGUJAQVib29zdAICIzNQRHpBckVCTlh1VG1jeldINThtSDVZTU5rVFZuWXROTFhLCQEMcmV3YXJkc1NoYXJlAQUPd2hpcmxJblZvbGF0aWxlAwkAAAIFDWJvb3N0Vm9sYXRpbGUFDWJvb3N0Vm9sYXRpbGUEEWJvb3N0QnVybnh0bldoaXJsCQEFYm9vc3QCAiMzUDQ4Wk42eWdoY29RYUhQdExNOVYyaEZjNWNkNEFSZDFoYwkBDHJld2FyZHNTaGFyZQEFE3doaXJsSW5CdXJueHRuV2hpcmwDCQAAAgURYm9vc3RCdXJueHRuV2hpcmwFEWJvb3N0QnVybnh0bldoaXJsBAVhZG1pbgkA/AcEBQ5yZXdhcmRzQWRkcmVzcwIMYWRtaW5SZXdhcmRzBQNuaWwFA25pbAMJAAACBQVhZG1pbgUFYWRtaW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQxwcm9qZWN0T3duZXIFC2Ftb3VudE93bmVyBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXYXZlbGV0c1BhaWRPdXQJAGQCBQthbW91bnRCb29zdAkBDXRyeUdldEludGVnZXICBQR0aGlzBRJrZXlXYXZlbGV0c1BhaWRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQIFBmtleVJPSQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2F2ZWxldHNQYWlkT3V0AJBOCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVdhdmVsZXRzUmVjZWl2ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleUFjdGl2YXRlZAUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcAAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXGIkbJG0v4kSlsrku0GQjUC4p33Iw2jJZCQACAQIJbm8gYWNjZXNzBAh3aXRoZHJhdwkA/AcECQEHQWRkcmVzcwEBGgFXdRLdk4IPW94ldhU5y0nVH1MoCcTocV4nAhV3aXRoZHJhd1Zlc3RlZEFsbFVTRE4JAMwIAgcJAMwIAgYFA25pbAUDbmlsAwkAAAIFCHdpdGhkcmF3BQh3aXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFjdGl2YXRlZAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhN5b3UgYXJlIG5vdCBhbGxvd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlBY3RpdmF0ZWQFBmhlaWdodAUDbmlsAWkBBHN3YXAAAwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkBAiE9AggFAWkGY2FsbGVyBQdpbnZva2VyBwkAAgECCW5vIGFjY2VzcwMJAAACCQCgCAEFCGtEaXNhYmxlBgUDbmlsBAZhbW91bnQDCQBmAgkA8AcCBQR0aGlzBQV4dG5JZAkAaAIA6AcFAmQ2CQBoAgDoBwUCZDYJAPAHAgUEdGhpcwUFeHRuSWQEDHN3YXBYdG5XYXZlcwMJAGYCCQDwBwIFBHRoaXMFBXh0bklkAAAJAPwHBAUMc3dvcFdBVkVTeHRuAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFeHRuSWQFBmFtb3VudAUDbmlsBQR1bml0AwkAAAIFDHN3YXBYdG5XYXZlcwUMc3dhcFh0bldhdmVzBAhhbW91bnRXWAMJAGYCCQDwBwIFBHRoaXMFBHd4SWQJAGgCAOgHBQJkNgkAaAIA6AcFAmQ4CQDwBwIFBHRoaXMFBHd4SWQEC3N3YXBXeFdhdmVzAwkAZgIJAPAHAgUEdGhpcwUEd3hJZAAACQEGc3dhcFdYAwUEd3hJZAEEE6vZMwUIYW1vdW50V1gFBHVuaXQDCQAAAgULc3dhcFd4V2F2ZXMFC3N3YXBXeFdhdmVzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMc3Rha2VVbnN0YWtlAgVzdGFrZQZhbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQECIT0CCAUBaQZjYWxsZXIFB2ludm9rZXIHCQACAQIJbm8gYWNjZXNzAwkAAAIJAKAIAQUIa0Rpc2FibGUGBQNuaWwDAwkAAAIFBXN0YWtlBgkAZwIFAmQ4CQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4BwUDbmlsBARwb29sCQEHQWRkcmVzcwEBGgFXd9FKwAAmD1BtgyWzWnaE5eM5+V4NDHFEBAlsZWFzaW5nSWQJAJwIAgUEdGhpcwUKa0xlYXNpbmdJZAQNbGVhc2luZ0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rTGVhc2luZ0Ftb3VudAAABA5uZXdMZWFzZUFtb3VudAMFBXN0YWtlCQBlAgkAZAIFDWxlYXNpbmdBbW91bnQICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAkAZQIFDWxlYXNpbmdBbW91bnQFBmFtb3VudAQIbmV3TGVhc2UJAMUIAwUEcG9vbAUObmV3TGVhc2VBbW91bnQAAQQKbmV3TGVhc2VJZAkAuQgBBQhuZXdMZWFzZQQJYmFzZUVudHJ5CQDMCAIFCG5ld0xlYXNlCQDMCAIJAQtCaW5hcnlFbnRyeQIFCmtMZWFzaW5nSWQFCm5ld0xlYXNlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtMZWFzaW5nQW1vdW50BQ5uZXdMZWFzZUFtb3VudAUDbmlsBAckbWF0Y2gwBQlsZWFzaW5nSWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDbElkBQckbWF0Y2gwCQDOCAIJAMwIAgkBC0xlYXNlQ2FuY2VsAQUDbElkBQNuaWwFCWJhc2VFbnRyeQUJYmFzZUVudHJ5AWkBB2Rpc2FibGUBB2Rpc2FibGUDAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQECIT0CCAUBaQZjYWxsZXIFB2ludm9rZXIHCQACAQIJbm8gYWNjZXNzCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrRGlzYWJsZQUHZGlzYWJsZQUDbmlsAQJ0eAEGdmVyaWZ5AAMJAMUTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkGAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrZXlBY3RpdmF0ZWQFC3VubG9ja0Jsb2NrBQZoZWlnaHQHAwkAxRMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUKaGVpclB1YktleQYDCQBmAgkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtleUFjdGl2YXRlZAUMdW5sb2NrQmxvY2syBQZoZWlnaHQHCQDFEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABRJQdXp6bGVNYXN0ZXJQdWJLZXnACpt0", "height": 4181425, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HrumWfHF4LfFNjWSjbJJwRjPhmdDU9XfvenfKxWYJrmk Next: 2uXy2hB6Q69b9o3NERHww7PyLNaRmS8duvsjMr4gUtGN Diff:
OldNewDifferences
195195 then throw("no access")
196196 else if ((getBoolean(kDisable) == true))
197197 then nil
198- else {
199- let pool = Address(base58'3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1')
200- let leasingId = getBinary(this, kLeasingId)
201- let leasingAmount = valueOrElse(getInteger(this, kLeasingAmount), 0)
202- let newLeaseAmount = if (stake)
203- then ((leasingAmount + wavesBalance(this).available) - d8)
204- else (leasingAmount - amount)
205- let newLease = Lease(pool, newLeaseAmount, 1)
206- let newLeaseId = calculateLeaseId(newLease)
207- let baseEntry = [newLease, BinaryEntry(kLeasingId, newLeaseId), IntegerEntry(kLeasingAmount, newLeaseAmount)]
208- match leasingId {
209- case lId: ByteVector =>
210- ([LeaseCancel(lId)] ++ baseEntry)
211- case _ =>
212- baseEntry
213- }
214- }
198+ else if (if ((stake == true))
199+ then (d8 >= (wavesBalance(this).available - d8))
200+ else false)
201+ then nil
202+ else {
203+ let pool = Address(base58'3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1')
204+ let leasingId = getBinary(this, kLeasingId)
205+ let leasingAmount = valueOrElse(getInteger(this, kLeasingAmount), 0)
206+ let newLeaseAmount = if (stake)
207+ then ((leasingAmount + wavesBalance(this).available) - d8)
208+ else (leasingAmount - amount)
209+ let newLease = Lease(pool, newLeaseAmount, 1)
210+ let newLeaseId = calculateLeaseId(newLease)
211+ let baseEntry = [newLease, BinaryEntry(kLeasingId, newLeaseId), IntegerEntry(kLeasingAmount, newLeaseAmount)]
212+ match leasingId {
213+ case lId: ByteVector =>
214+ ([LeaseCancel(lId)] ++ baseEntry)
215+ case _ =>
216+ baseEntry
217+ }
218+ }
215219
216220
217221
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (address,key) = match getInteger(address, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 let d6 = 1000000
1313
1414 let d8 = 100000000
1515
1616 let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
1717
1818 let xtnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1919
2020 let invoker = Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt')
2121
2222 let swopWAVESxtn = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
2323
2424 let unlockBlock = (30 * 1440)
2525
2626 let heirPubKey = base58'2kpmuzw1ZbrtgAN3BrR7vbEW1XrJoJKCstL7mf7XNf2P'
2727
2828 let unlockBlock2 = (90 * 1440)
2929
3030 let PuzzleMasterPubKey = base58'4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU'
3131
3232 let keyActivated = "Activated blockheight"
3333
3434 let keyWaveletsReceived = "total WAVES received in wavelets"
3535
3636 let keyWaveletsPaidOut = "total WAVES paid out in wavelets"
3737
3838 let keyROI = "ROI basis points"
3939
4040 let kLeasingAmount = "leasing_amount"
4141
4242 let kLeasingId = "leasing_id"
4343
4444 let kDisable = "disabled"
4545
4646 let projectOwner = base58'3PEtLVxDT8mxAh1SDAn8m7JTGNkdpkaFxBk'
4747
4848 let whirlpoolPoolId = base58'3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY'
4949
5050 let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
5151
5252 let volatilePoolId = base58'3PDzArEBNXuTmczWH58mH5YMNkTVnYtNLXK'
5353
5454 let burnxtnWhirlPoolId = base58'3P48ZN6yghcoQaHPtLM9V2hFc5cd4ARd1hc'
5555
5656 let poolboostSC = base58'3P8eeDzUnoDNbQjW617pAe76cEUDQsP1m1V'
5757
5858 let rewardsAddress = Address(base58'3P6H24XKLyRX8RKwyA5ARsChE6WhjDcVBiZ')
5959
6060 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
6161
6262 let whirlpoolString = toBase58String(base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi')
6363
6464 let waves = base58'WAVES'
6565
6666 func tokensInPool (poolId,assetStr) = tryGetInteger(Address(poolId), (("global_" + assetStr) + "_balance"))
6767
6868
6969 let wavesInWhirlpool = tokensInPool(whirlpoolPoolId, toBase58String(waves))
7070
7171 let whirlInWhirlpool = tokensInPool(whirlpoolPoolId, whirlpoolString)
7272
7373 let whirlInBBB = tokensInPool(bbbPoolId, whirlpoolString)
7474
7575 let whirlInVolatile = tokensInPool(volatilePoolId, whirlpoolString)
7676
7777 let whirlInBurnxtnWhirl = tokensInPool(burnxtnWhirlPoolId, whirlpoolString)
7878
7979 let totalWhirl = (((whirlInWhirlpool + whirlInBBB) + whirlInVolatile) + whirlInBurnxtnWhirl)
8080
8181 let whirlpoolWaves = fraction(d8, ((wavesInWhirlpool * tryGetInteger(Address(whirlpoolPoolId), (("static_" + toBase58String(whirlpool)) + "_weight"))) / 1000), whirlInWhirlpool)
8282
8383 let whirlpoolSupply = match assetInfo(whirlpool) {
8484 case asset: Asset =>
8585 asset.quantity
8686 case _ =>
8787 throw("Can't find asset")
8888 }
8989
9090 func boost (poolId,amount) = invoke(Address(poolboostSC), "addBoosting", [poolId, 7], [AttachedPayment(unit, amount)])
9191
9292
9393 func swapWX (assetIn,assetOut,amountIn) = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, toBase58String(assetOut), toString(this)], [AttachedPayment(assetIn, amountIn)])
9494
9595
9696 @Callable(i)
9797 func priceStats () = [IntegerEntry("WHIRLPOOL/WAVES mid market price", whirlpoolWaves), IntegerEntry("WHIRLPOOL total supply", (whirlpoolSupply / d8)), IntegerEntry("total WAVES received", (tryGetInteger(this, keyWaveletsReceived) / d8)), IntegerEntry("total WAVES paid out in WAVES", (tryGetInteger(this, keyWaveletsPaidOut) / d8)), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived)))]
9898
9999
100100
101101 @Callable(i)
102102 func boostPoolAPY (amount,projectOwnerReward) = if ((i.caller != this))
103103 then throw("access only by project owner")
104104 else {
105105 let amountBoost = if ((projectOwnerReward == true))
106106 then fraction((amount * d8), 80, 100)
107107 else amount
108108 let amountOwner = if ((projectOwnerReward == true))
109109 then fraction((amount * d8), 20, 100)
110110 else 0
111111 func rewardsShare (poolShare) = fraction(amountBoost, poolShare, totalWhirl)
112112
113113 let boostW = boost("3P2myTbd5zpEHcYmNpdWTp5gXS5B8tL1RCY", rewardsShare(whirlInWhirlpool))
114114 if ((boostW == boostW))
115115 then {
116116 let boostBBB = boost("3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk", rewardsShare(whirlInBBB))
117117 if ((boostBBB == boostBBB))
118118 then {
119119 let boostVolatile = boost("3PDzArEBNXuTmczWH58mH5YMNkTVnYtNLXK", rewardsShare(whirlInVolatile))
120120 if ((boostVolatile == boostVolatile))
121121 then {
122122 let boostBurnxtnWhirl = boost("3P48ZN6yghcoQaHPtLM9V2hFc5cd4ARd1hc", rewardsShare(whirlInBurnxtnWhirl))
123123 if ((boostBurnxtnWhirl == boostBurnxtnWhirl))
124124 then {
125125 let admin = invoke(rewardsAddress, "adminRewards", nil, nil)
126126 if ((admin == admin))
127127 then [ScriptTransfer(Address(projectOwner), amountOwner, unit), IntegerEntry(keyWaveletsPaidOut, (amountBoost + tryGetInteger(this, keyWaveletsPaidOut))), IntegerEntry(keyROI, fraction(tryGetInteger(this, keyWaveletsPaidOut), 10000, tryGetInteger(this, keyWaveletsReceived))), IntegerEntry(keyActivated, height)]
128128 else throw("Strict value is not equal to itself.")
129129 }
130130 else throw("Strict value is not equal to itself.")
131131 }
132132 else throw("Strict value is not equal to itself.")
133133 }
134134 else throw("Strict value is not equal to itself.")
135135 }
136136 else throw("Strict value is not equal to itself.")
137137 }
138138
139139
140140
141141 @Callable(i)
142142 func withdraw () = if ((i.caller != Address(base58'3P4AdC9J6MzTEi2LL9xgQN8EimMnbk4d6Nt')))
143143 then throw("no access")
144144 else {
145145 let withdraw = invoke(Address(base58'3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk'), "withdrawVestedAllUSDN", [false, true], nil)
146146 if ((withdraw == withdraw))
147147 then nil
148148 else throw("Strict value is not equal to itself.")
149149 }
150150
151151
152152
153153 @Callable(i)
154154 func activated () = if ((i.caller != this))
155155 then throw("you are not allowed")
156156 else [IntegerEntry(keyActivated, height)]
157157
158158
159159
160160 @Callable(i)
161161 func swap () = if (if ((i.caller != this))
162162 then (i.caller != invoker)
163163 else false)
164164 then throw("no access")
165165 else if ((getBoolean(kDisable) == true))
166166 then nil
167167 else {
168168 let amount = if ((assetBalance(this, xtnId) > (1000 * d6)))
169169 then (1000 * d6)
170170 else assetBalance(this, xtnId)
171171 let swapXtnWaves = if ((assetBalance(this, xtnId) > 0))
172172 then invoke(swopWAVESxtn, "callFunction", ["exchange", ["1"]], [AttachedPayment(xtnId, amount)])
173173 else unit
174174 if ((swapXtnWaves == swapXtnWaves))
175175 then {
176176 let amountWX = if ((assetBalance(this, wxId) > (1000 * d6)))
177177 then (1000 * d8)
178178 else assetBalance(this, wxId)
179179 let swapWxWaves = if ((assetBalance(this, wxId) > 0))
180180 then swapWX(wxId, base58'WAVES', amountWX)
181181 else unit
182182 if ((swapWxWaves == swapWxWaves))
183183 then nil
184184 else throw("Strict value is not equal to itself.")
185185 }
186186 else throw("Strict value is not equal to itself.")
187187 }
188188
189189
190190
191191 @Callable(i)
192192 func stakeUnstake (stake,amount) = if (if ((i.caller != this))
193193 then (i.caller != invoker)
194194 else false)
195195 then throw("no access")
196196 else if ((getBoolean(kDisable) == true))
197197 then nil
198- else {
199- let pool = Address(base58'3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1')
200- let leasingId = getBinary(this, kLeasingId)
201- let leasingAmount = valueOrElse(getInteger(this, kLeasingAmount), 0)
202- let newLeaseAmount = if (stake)
203- then ((leasingAmount + wavesBalance(this).available) - d8)
204- else (leasingAmount - amount)
205- let newLease = Lease(pool, newLeaseAmount, 1)
206- let newLeaseId = calculateLeaseId(newLease)
207- let baseEntry = [newLease, BinaryEntry(kLeasingId, newLeaseId), IntegerEntry(kLeasingAmount, newLeaseAmount)]
208- match leasingId {
209- case lId: ByteVector =>
210- ([LeaseCancel(lId)] ++ baseEntry)
211- case _ =>
212- baseEntry
213- }
214- }
198+ else if (if ((stake == true))
199+ then (d8 >= (wavesBalance(this).available - d8))
200+ else false)
201+ then nil
202+ else {
203+ let pool = Address(base58'3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1')
204+ let leasingId = getBinary(this, kLeasingId)
205+ let leasingAmount = valueOrElse(getInteger(this, kLeasingAmount), 0)
206+ let newLeaseAmount = if (stake)
207+ then ((leasingAmount + wavesBalance(this).available) - d8)
208+ else (leasingAmount - amount)
209+ let newLease = Lease(pool, newLeaseAmount, 1)
210+ let newLeaseId = calculateLeaseId(newLease)
211+ let baseEntry = [newLease, BinaryEntry(kLeasingId, newLeaseId), IntegerEntry(kLeasingAmount, newLeaseAmount)]
212+ match leasingId {
213+ case lId: ByteVector =>
214+ ([LeaseCancel(lId)] ++ baseEntry)
215+ case _ =>
216+ baseEntry
217+ }
218+ }
215219
216220
217221
218222 @Callable(i)
219223 func disable (disable) = if (if ((i.caller != this))
220224 then (i.caller != invoker)
221225 else false)
222226 then throw("no access")
223227 else [BooleanEntry(kDisable, disable)]
224228
225229
226230 @Verifier(tx)
227231 func verify () = if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
228232 then true
229233 else if (((getIntegerValue(this, keyActivated) + unlockBlock) > height))
230234 then false
231235 else if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], heirPubKey))
232236 then true
233237 else if (((getIntegerValue(this, keyActivated) + unlockBlock2) > height))
234238 then false
235239 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], PuzzleMasterPubKey)
236240

github/deemru/w8io/0e76f2f 
58.99 ms