tx · 75xyz6nw5pVGFUjTh4JXoRS6Vm8wNXkmncRxwUx3x6DW

3PRDdJfgUDq4fCwbNLDaGnfs5eYc6S9A1xX:  -0.00700000 Waves

2024.01.23 14:25 [4009836] smart account 3PRDdJfgUDq4fCwbNLDaGnfs5eYc6S9A1xX > SELF 0.00000000 Waves

{ "type": 13, "id": "75xyz6nw5pVGFUjTh4JXoRS6Vm8wNXkmncRxwUx3x6DW", "fee": 700000, "feeAssetId": null, "timestamp": 1706009104812, "version": 1, "sender": "3PRDdJfgUDq4fCwbNLDaGnfs5eYc6S9A1xX", "senderPublicKey": "ERHNiqFN8aMGPtaUbk2MctMJjSghqyTbsyQ5yYBBPzdk", "proofs": [ "49huBzzGDRtMhRLncHh21enNofNyy655meEtjRZFd3J6RKut9ctZH2T87LVWg3TDUdcShZe491gAybjKMrAx3rRG" ], "script": "base64:BgIVCAISBQoDCAgIEgMKAQESABIDCgEBGwAKa2V5X2FjdGl2ZQIGYWN0aXZlAA5rZXlfQV9hc3NldF9pZAIKQV9hc3NldF9pZAAOa2V5X0JfYXNzZXRfaWQCCkJfYXNzZXRfaWQAE2tleV9BX2Fzc2V0X2JhbGFuY2UCD0FfYXNzZXRfYmFsYW5jZQATa2V5X0JfYXNzZXRfYmFsYW5jZQIPQl9hc3NldF9iYWxhbmNlAAZhY3RpdmUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMFCmtleV9hY3RpdmUACkFfYXNzZXRfaWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFDmtleV9BX2Fzc2V0X2lkAApCX2Fzc2V0X2lkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQ5rZXlfQl9hc3NldF9pZAAPQV9hc3NldF9iYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRNrZXlfQV9hc3NldF9iYWxhbmNlAA9CX2Fzc2V0X2JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFE2tleV9CX2Fzc2V0X2JhbGFuY2UAA0ZFRQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgNmZWUAhOY8AA9GRUVfREVOT01JTkFUT1IAwIQ9AAlrZXlfb3duZXICBW93bmVyAAlrZXlfdG9rZW4CBXRva2VuAAVvd25lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUJa2V5X293bmVyAAV0b2tlbgkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQlrZXlfdG9rZW4ADnRva2VuX3F1YW50aXR5CAkBBXZhbHVlAQkA7AcBBQV0b2tlbghxdWFudGl0eQAJUFJFQ0lTSU9OAIDC1y8BDGNoZWNrQWRkcmVzcwEDYTU4BAFhCQERQGV4dHJOYXRpdmUoMTA2MikBBQNhNTgJAKUIAQUBYQEKY2hlY2tBc3NldAEHYXNzZXQ1OAMJAAACBQdhc3NldDU4AgVXQVZFUwIFV0FWRVMEBWFzc2V0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJANkEAQUHYXNzZXQ1OAkArAICAhZ3cm9uZyBhc3NldCBlbmNvZGluZzogBQdhc3NldDU4BARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUFYXNzZXQJAKwCAgISd3JvbmcgYXNzZXQgaW5mbzogBQdhc3NldDU4AwkAAAIFBGluZm8FBGluZm8FB2Fzc2V0NTgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BBWFzc2V0AQFhAwkAAAIFAWECBVdBVkVTBQR1bml0CQDZBAEFAWEBB2FsbG93ZWQBBmNhbGxlcgkBCGNvbnRhaW5zAgUFb3duZXIJAKUIAQUGY2FsbGVyAQptdWx0aXBsaWVyAQhkZWNpbWFscwQHJG1hdGNoMAUIZGVjaW1hbHMDCQAAAgAIBQckbWF0Y2gwAIDC1y8DCQAAAgAHBQckbWF0Y2gwAICt4gQDCQAAAgAGBQckbWF0Y2gwAMCEPQMJAAACAAUFByRtYXRjaDAAoI0GAwkAAAIABAUHJG1hdGNoMACQTgMJAAACAAMFByRtYXRjaDAA6AcDCQAAAgACBQckbWF0Y2gwAGQDCQAAAgABBQckbWF0Y2gwAAoDCQAAAgAABQckbWF0Y2gwAAEJAAIBCQCsAgICFnVuc3VwcG9ydGVkIGRlY2ltYWxzOiAJAKQDAQUIZGVjaW1hbHMBCGRlY2ltYWxzAQVhc3NldAMJAAACBQVhc3NldAIFV0FWRVMACAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBWFzc2V0Agt3cm9uZyBhc3NldAhkZWNpbWFscwEJbm9ybWFsaXplAgZhbW91bnQFYXNzZXQJAGgCBQZhbW91bnQJAQptdWx0aXBsaWVyAQkAZQIACAkBCGRlY2ltYWxzAQUFYXNzZXQBBXB1dF9BAQZhbW91bnQDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMCBnB1dGdldAcJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFVjdZQjhjYVhMZ1FQQ3VLSHRXdEZTRFRqZ3RiQXhncVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQVhc3NldAEFCkFfYXNzZXRfaWQFBmFtb3VudAUDbmlsBQNuaWwBBWdldF9BAQZhbW91bnQDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMCBnB1dGdldAcJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFVjdZQjhjYVhMZ1FQQ3VLSHRXdEZTRFRqZ3RiQXhncVoCCHdpdGhkcmF3CQDMCAIJAGQCBQZhbW91bnQA6AcFA25pbAUDbmlsBQNuaWwEA21zZwEEaW5pdAMGX293bmVyC19BX2Fzc2V0X2lkC19CX2Fzc2V0X2lkAwkBASEBCQCeCAEFBHRoaXMJAAIBAhNhbHJlYWR5IGluaXRpYWxpemVkAwkBAiE9AggFA21zZwZjYWxsZXIFBHRoaXMJAAIBAhhzZWxmIGluaXRpYWxpemF0aW9uIG9ubHkEBG5hbWUJAKwCAgkArAICAglDUE1NIExQICgJAK8CAgkA2AQBCQD3AwEJAMsBAgkAywECCQCbAwEJAKUIAQUEdGhpcwkAmwMBBQtfQV9hc3NldF9pZAkAmwMBBQtfQl9hc3NldF9pZAAGAgEpBAppc3N1ZVRva2VuCQDCCAUFBG5hbWUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhJDUE1NIExQIHRva2VuIGZvciAFC19BX2Fzc2V0X2lkAgEvBQtfQl9hc3NldF9pZAIDIEAgCQClCAEFBHRoaXMAAAAIBgQHdG9rZW5JZAkA2AQBCQC4CAEFCmlzc3VlVG9rZW4JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCmtleV9hY3RpdmUGCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmtleV9BX2Fzc2V0X2lkCQEKY2hlY2tBc3NldAEFC19BX2Fzc2V0X2lkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmtleV9CX2Fzc2V0X2lkCQEKY2hlY2tBc3NldAEFC19CX2Fzc2V0X2lkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQV9hc3NldF9iYWxhbmNlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleV9CX2Fzc2V0X2JhbGFuY2UAAAkAzAgCCQELU3RyaW5nRW50cnkCBQlrZXlfb3duZXIJAQxjaGVja0FkZHJlc3MBBQZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa2V5X3Rva2VuBQd0b2tlbklkCQDMCAIFCmlzc3VlVG9rZW4FA25pbANtc2cBFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMBD21pbl9taW50X2Ftb3VudAQGY2FsbGVyCAUDbXNnBmNhbGxlcgMJAQEhAQkBB2FsbG93ZWQBBQZjYWxsZXIJAAIBAgghYWxsb3dlZAMJAQEhAQUGYWN0aXZlCQACAQIHIWFjdGl2ZQMJAQIhPQIJAJADAQgFA21zZwhwYXltZW50cwACCQACAQIVc2l6ZSggcGF5bWVudHMgKSAhPSAyBAlBX3BheW1lbnQJAJEDAggFA21zZwhwYXltZW50cwAABAlCX3BheW1lbnQJAJEDAggFA21zZwhwYXltZW50cwABBA9BX3BheW1lbnRfYXNzZXQIBQlBX3BheW1lbnQHYXNzZXRJZAQPQl9wYXltZW50X2Fzc2V0CAUJQl9wYXltZW50B2Fzc2V0SWQDAwkBAiE9AgUPQV9wYXltZW50X2Fzc2V0CQEFYXNzZXQBBQpBX2Fzc2V0X2lkBgkBAiE9AgUPQl9wYXltZW50X2Fzc2V0CQEFYXNzZXQBBQpCX2Fzc2V0X2lkCQACAQIMd3JvbmcgYXNzZXRzBBBBX3BheW1lbnRfYW1vdW50CAUJQV9wYXltZW50BmFtb3VudAQQQl9wYXltZW50X2Ftb3VudAgFCUJfcGF5bWVudAZhbW91bnQECyR0MDQyMjQ1NzE5AwkAAAIFDnRva2VuX3F1YW50aXR5AAADAwkAAAIFEEFfcGF5bWVudF9hbW91bnQAAAYJAAACBRBCX3BheW1lbnRfYW1vdW50AAAJAAIBAg13cm9uZyBhbW91bnRzCQCXCgUFEEFfcGF5bWVudF9hbW91bnQFEEJfcGF5bWVudF9hbW91bnQJAKADAQkBCnNxcnRCaWdJbnQECQC8AgMJALYCAQkBCW5vcm1hbGl6ZQIFEEFfcGF5bWVudF9hbW91bnQFCkFfYXNzZXRfaWQJALYCAQkBCW5vcm1hbGl6ZQIFEEJfcGF5bWVudF9hbW91bnQFCkJfYXNzZXRfaWQJALYCAQABAAAAAAUERE9XTgAAAAAECEFfZ3Jvd3RoCQBrAwUQQV9wYXltZW50X2Ftb3VudAUJUFJFQ0lTSU9OBQ9BX2Fzc2V0X2JhbGFuY2UECEJfZ3Jvd3RoCQBrAwUQQl9wYXltZW50X2Ftb3VudAUJUFJFQ0lTSU9OBQ9CX2Fzc2V0X2JhbGFuY2UECyR0MDQ5NjA1NDQyAwkAZgIFCEFfZ3Jvd3RoBQhCX2dyb3d0aAkAlQoDBQhCX2dyb3d0aAkAZQIFEEFfcGF5bWVudF9hbW91bnQJAGsDBQhCX2dyb3d0aAUPQV9hc3NldF9iYWxhbmNlBQlQUkVDSVNJT04AAAkAlQoDBQhBX2dyb3d0aAAACQBlAgUQQl9wYXltZW50X2Ftb3VudAkAawMFCEFfZ3Jvd3RoBQ9CX2Fzc2V0X2JhbGFuY2UFCVBSRUNJU0lPTgQGZ3Jvd3RoCAULJHQwNDk2MDU0NDICXzEEBkFfYmFjawgFCyR0MDQ5NjA1NDQyAl8yBAZCX2JhY2sIBQskdDA0OTYwNTQ0MgJfMwkAlwoFCQBlAgkAZAIFD0FfYXNzZXRfYmFsYW5jZQUQQV9wYXltZW50X2Ftb3VudAUGQV9iYWNrCQBlAgkAZAIFD0JfYXNzZXRfYmFsYW5jZQUQQl9wYXltZW50X2Ftb3VudAUGQl9iYWNrCQBrAwUGZ3Jvd3RoBQ50b2tlbl9xdWFudGl0eQUJUFJFQ0lTSU9OBQZBX2JhY2sFBkJfYmFjawQHQV9maW5hbAgFCyR0MDQyMjQ1NzE5Al8xBAdCX2ZpbmFsCAULJHQwNDIyNDU3MTkCXzIEC21pbnRfYW1vdW50CAULJHQwNDIyNDU3MTkCXzMEBkFfYmFjawgFCyR0MDQyMjQ1NzE5Al80BAZCX2JhY2sIBQskdDA0MjI0NTcxOQJfNQMJAGYCBQ9taW5fbWludF9hbW91bnQFC21pbnRfYW1vdW50CQACAQIUc2xpcHBhZ2Ugc2NyZXdlZCB5b3UEB3N0YWtpbmcJAQVwdXRfQQEJAGUCCQDwBwIFBHRoaXMJANkEAQUKQV9hc3NldF9pZAUGQV9iYWNrAwkAAAIFB3N0YWtpbmcFB3N0YWtpbmcJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQV9hc3NldF9iYWxhbmNlBQdBX2ZpbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQl9hc3NldF9iYWxhbmNlBQdCX2ZpbmFsCQDMCAIJAQdSZWlzc3VlAwUFdG9rZW4FC21pbnRfYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFC21pbnRfYW1vdW50BQV0b2tlbgUDbmlsAwkBAiE9AgUGQV9iYWNrAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQZBX2JhY2sFD0FfcGF5bWVudF9hc3NldAUDbmlsBQNuaWwDCQECIT0CBQZCX2JhY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFBkJfYmFjawUPQl9wYXltZW50X2Fzc2V0BQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgNtc2cBCHdpdGhkcmF3AAQGY2FsbGVyCAUDbXNnBmNhbGxlcgMJAQEhAQkBB2FsbG93ZWQBBQZjYWxsZXIJAAIBAgghYWxsb3dlZAMJAQIhPQIJAJADAQgFA21zZwhwYXltZW50cwABCQACAQIVc2l6ZSggcGF5bWVudHMgKSAhPSAxBAdwYXltZW50CQCRAwIIBQNtc2cIcGF5bWVudHMAAAMJAQIhPQIIBQdwYXltZW50B2Fzc2V0SWQFBXRva2VuCQACAQINdW5rbm93biB0b2tlbgQGYW1vdW50CAUHcGF5bWVudAZhbW91bnQEDEFfYW1vdW50X291dAkAawMFD0FfYXNzZXRfYmFsYW5jZQUGYW1vdW50BQ50b2tlbl9xdWFudGl0eQQMQl9hbW91bnRfb3V0CQBrAwUPQl9hc3NldF9iYWxhbmNlBQZhbW91bnQFDnRva2VuX3F1YW50aXR5BAdzdGFraW5nCQEFZ2V0X0EBBQxBX2Ftb3VudF9vdXQDCQAAAgUHc3Rha2luZwUHc3Rha2luZwkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5X0FfYXNzZXRfYmFsYW5jZQkAZQIFD0FfYXNzZXRfYmFsYW5jZQUMQV9hbW91bnRfb3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQl9hc3NldF9iYWxhbmNlCQBlAgUPQl9hc3NldF9iYWxhbmNlBQxCX2Ftb3VudF9vdXQJAMwIAgkBBEJ1cm4CBQV0b2tlbgUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMQV9hbW91bnRfb3V0CQEFYXNzZXQBBQpBX2Fzc2V0X2lkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMQl9hbW91bnRfb3V0CQEFYXNzZXQBBQpCX2Fzc2V0X2lkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DbXNnAQhleGNoYW5nZQESbWluQW1vdW50VG9SZWNlaXZlBAZjYWxsZXIIBQNtc2cGY2FsbGVyAwkBASEBCQEHYWxsb3dlZAEFBmNhbGxlcgkAAgECCCFhbGxvd2VkAwkBASEBBQZhY3RpdmUJAAIBAgchYWN0aXZlAwkBAiE9AgkAkAMBCAUDbXNnCHBheW1lbnRzAAEJAAIBAhVzaXplKCBwYXltZW50cyApICE9IDEEB3BheW1lbnQJAJEDAggFA21zZwhwYXltZW50cwAABA5wYXltZW50X2Ftb3VudAgFB3BheW1lbnQGYW1vdW50BA1wYXltZW50X2Fzc2V0CAUHcGF5bWVudAdhc3NldElkBAJhYgMJAAACBQ1wYXltZW50X2Fzc2V0CQEFYXNzZXQBBQpBX2Fzc2V0X2lkBgMJAAACBQ1wYXltZW50X2Fzc2V0CQEFYXNzZXQBBQpCX2Fzc2V0X2lkBwkAAgECC3dyb25nIGFzc2V0BAskdDA3NzQwNzg2MQMFAmFiCQCUCgIFD0FfYXNzZXRfYmFsYW5jZQUPQl9hc3NldF9iYWxhbmNlCQCUCgIFD0JfYXNzZXRfYmFsYW5jZQUPQV9hc3NldF9iYWxhbmNlBAl0b2tlbkZyb20IBQskdDA3NzQwNzg2MQJfMQQHdG9rZW5UbwgFCyR0MDc3NDA3ODYxAl8yBBBhbW91bnRXaXRob3V0RmVlCQBrAwUHdG9rZW5UbwUOcGF5bWVudF9hbW91bnQJAGQCBQ5wYXltZW50X2Ftb3VudAUJdG9rZW5Gcm9tBA1hbW91bnRXaXRoRmVlCQBrAwUQYW1vdW50V2l0aG91dEZlZQUDRkVFBQ9GRUVfREVOT01JTkFUT1IDCQBmAgUSbWluQW1vdW50VG9SZWNlaXZlBQ1hbW91bnRXaXRoRmVlCQACAQkArAICCQCsAgIJAKwCAgIdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAKQDAQUNYW1vdW50V2l0aEZlZQIgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAKQDAQUSbWluQW1vdW50VG9SZWNlaXZlBAskdDA4MjI3ODQ1NwMFAmFiCQCVCgMJAGQCBQ9BX2Fzc2V0X2JhbGFuY2UFDnBheW1lbnRfYW1vdW50CQBlAgUPQl9hc3NldF9iYWxhbmNlBQ1hbW91bnRXaXRoRmVlBQpCX2Fzc2V0X2lkCQCVCgMJAGUCBQ9BX2Fzc2V0X2JhbGFuY2UFDWFtb3VudFdpdGhGZWUJAGQCBQ9CX2Fzc2V0X2JhbGFuY2UFDnBheW1lbnRfYW1vdW50BQpBX2Fzc2V0X2lkBAdBX2ZpbmFsCAULJHQwODIyNzg0NTcCXzEEB0JfZmluYWwIBQskdDA4MjI3ODQ1NwJfMgQLYXNzZXRfZmluYWwIBQskdDA4MjI3ODQ1NwJfMwQHc3Rha2luZwMJAAACBQthc3NldF9maW5hbAUKQV9hc3NldF9pZAkBBWdldF9BAQUNYW1vdW50V2l0aEZlZQkBBXB1dF9BAQkA8AcCBQR0aGlzCQDZBAEFCkFfYXNzZXRfaWQDCQAAAgUHc3Rha2luZwUHc3Rha2luZwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQV9hc3NldF9iYWxhbmNlBQdBX2ZpbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlfQl9hc3NldF9iYWxhbmNlBQdCX2ZpbmFsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUNYW1vdW50V2l0aEZlZQkBBWFzc2V0AQULYXNzZXRfZmluYWwFA25pbAUNYW1vdW50V2l0aEZlZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgA9C2i8", "chainId": 87, "height": 4009836, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 43hkrBJyTfZijz916dJvykXqM4MGpcBuxHtUiHn2gRrq Next: none Diff:
OldNewDifferences
9494 func normalize (amount,asset) = (amount * multiplier((8 - decimals(asset))))
9595
9696
97-func put_A (amount) = invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "stake", nil, [AttachedPayment(asset(A_asset_id), amount)])
97+func put_A (amount) = if (valueOrElse(getBoolean(this, "putget"), false))
98+ then invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "stake", nil, [AttachedPayment(asset(A_asset_id), amount)])
99+ else nil
98100
99101
100-func get_A (amount) = invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "withdraw", [(amount + 1000)], nil)
102+func get_A (amount) = if (valueOrElse(getBoolean(this, "putget"), false))
103+ then invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "withdraw", [(amount + 1000)], nil)
104+ else nil
101105
102106
103107 @Callable(msg)
135139 else {
136140 let A_payment_amount = A_payment.amount
137141 let B_payment_amount = B_payment.amount
138- let $t040705565 = if ((token_quantity == 0))
142+ let $t042245719 = if ((token_quantity == 0))
139143 then if (if ((A_payment_amount == 0))
140144 then true
141145 else (B_payment_amount == 0))
144148 else {
145149 let A_growth = fraction(A_payment_amount, PRECISION, A_asset_balance)
146150 let B_growth = fraction(B_payment_amount, PRECISION, B_asset_balance)
147- let $t048065288 = if ((A_growth > B_growth))
151+ let $t049605442 = if ((A_growth > B_growth))
148152 then $Tuple3(B_growth, (A_payment_amount - fraction(B_growth, A_asset_balance, PRECISION)), 0)
149153 else $Tuple3(A_growth, 0, (B_payment_amount - fraction(A_growth, B_asset_balance, PRECISION)))
150- let growth = $t048065288._1
151- let A_back = $t048065288._2
152- let B_back = $t048065288._3
154+ let growth = $t049605442._1
155+ let A_back = $t049605442._2
156+ let B_back = $t049605442._3
153157 $Tuple5(((A_asset_balance + A_payment_amount) - A_back), ((B_asset_balance + B_payment_amount) - B_back), fraction(growth, token_quantity, PRECISION), A_back, B_back)
154158 }
155- let A_final = $t040705565._1
156- let B_final = $t040705565._2
157- let mint_amount = $t040705565._3
158- let A_back = $t040705565._4
159- let B_back = $t040705565._5
159+ let A_final = $t042245719._1
160+ let B_final = $t042245719._2
161+ let mint_amount = $t042245719._3
162+ let A_back = $t042245719._4
163+ let B_back = $t042245719._5
160164 if ((min_mint_amount > mint_amount))
161165 then throw("slippage screwed you")
162166 else {
218222 else if ((payment_asset == asset(B_asset_id)))
219223 then false
220224 else throw("wrong asset")
221- let $t075867707 = if (ab)
225+ let $t077407861 = if (ab)
222226 then $Tuple2(A_asset_balance, B_asset_balance)
223227 else $Tuple2(B_asset_balance, A_asset_balance)
224- let tokenFrom = $t075867707._1
225- let tokenTo = $t075867707._2
228+ let tokenFrom = $t077407861._1
229+ let tokenTo = $t077407861._2
226230 let amountWithoutFee = fraction(tokenTo, payment_amount, (payment_amount + tokenFrom))
227231 let amountWithFee = fraction(amountWithoutFee, FEE, FEE_DENOMINATOR)
228232 if ((minAmountToReceive > amountWithFee))
229233 then throw(((("Calculated amount to receive " + toString(amountWithFee)) + " is less than specified minimum ") + toString(minAmountToReceive)))
230234 else {
231- let $t080738303 = if (ab)
235+ let $t082278457 = if (ab)
232236 then $Tuple3((A_asset_balance + payment_amount), (B_asset_balance - amountWithFee), B_asset_id)
233237 else $Tuple3((A_asset_balance - amountWithFee), (B_asset_balance + payment_amount), A_asset_id)
234- let A_final = $t080738303._1
235- let B_final = $t080738303._2
236- let asset_final = $t080738303._3
238+ let A_final = $t082278457._1
239+ let B_final = $t082278457._2
240+ let asset_final = $t082278457._3
237241 let staking = if ((asset_final == A_asset_id))
238242 then get_A(amountWithFee)
239243 else put_A(assetBalance(this, fromBase58String(A_asset_id)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let key_active = "active"
55
66 let key_A_asset_id = "A_asset_id"
77
88 let key_B_asset_id = "B_asset_id"
99
1010 let key_A_asset_balance = "A_asset_balance"
1111
1212 let key_B_asset_balance = "B_asset_balance"
1313
1414 let active = getBooleanValue(this, key_active)
1515
1616 let A_asset_id = getStringValue(this, key_A_asset_id)
1717
1818 let B_asset_id = getStringValue(this, key_B_asset_id)
1919
2020 let A_asset_balance = getIntegerValue(this, key_A_asset_balance)
2121
2222 let B_asset_balance = getIntegerValue(this, key_B_asset_balance)
2323
2424 let FEE = valueOrElse(getInteger(this, "fee"), 996100)
2525
2626 let FEE_DENOMINATOR = 1000000
2727
2828 let key_owner = "owner"
2929
3030 let key_token = "token"
3131
3232 let owner = getStringValue(this, key_owner)
3333
3434 let token = fromBase58String(getStringValue(this, key_token))
3535
3636 let token_quantity = value(assetInfo(token)).quantity
3737
3838 let PRECISION = 100000000
3939
4040 func checkAddress (a58) = {
4141 let a = addressFromStringValue(a58)
4242 toString(a)
4343 }
4444
4545
4646 func checkAsset (asset58) = if ((asset58 == "WAVES"))
4747 then "WAVES"
4848 else {
4949 let asset = valueOrErrorMessage(fromBase58String(asset58), ("wrong asset encoding: " + asset58))
5050 let info = valueOrErrorMessage(assetInfo(asset), ("wrong asset info: " + asset58))
5151 if ((info == info))
5252 then asset58
5353 else throw("Strict value is not equal to itself.")
5454 }
5555
5656
5757 func asset (a) = if ((a == "WAVES"))
5858 then unit
5959 else fromBase58String(a)
6060
6161
6262 func allowed (caller) = contains(owner, toString(caller))
6363
6464
6565 func multiplier (decimals) = match decimals {
6666 case _ =>
6767 if ((8 == $match0))
6868 then 100000000
6969 else if ((7 == $match0))
7070 then 10000000
7171 else if ((6 == $match0))
7272 then 1000000
7373 else if ((5 == $match0))
7474 then 100000
7575 else if ((4 == $match0))
7676 then 10000
7777 else if ((3 == $match0))
7878 then 1000
7979 else if ((2 == $match0))
8080 then 100
8181 else if ((1 == $match0))
8282 then 10
8383 else if ((0 == $match0))
8484 then 1
8585 else throw(("unsupported decimals: " + toString(decimals)))
8686 }
8787
8888
8989 func decimals (asset) = if ((asset == "WAVES"))
9090 then 8
9191 else valueOrErrorMessage(assetInfo(fromBase58String(asset)), "wrong asset").decimals
9292
9393
9494 func normalize (amount,asset) = (amount * multiplier((8 - decimals(asset))))
9595
9696
97-func put_A (amount) = invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "stake", nil, [AttachedPayment(asset(A_asset_id), amount)])
97+func put_A (amount) = if (valueOrElse(getBoolean(this, "putget"), false))
98+ then invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "stake", nil, [AttachedPayment(asset(A_asset_id), amount)])
99+ else nil
98100
99101
100-func get_A (amount) = invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "withdraw", [(amount + 1000)], nil)
102+func get_A (amount) = if (valueOrElse(getBoolean(this, "putget"), false))
103+ then invoke(addressFromStringValue("3PEV7YB8caXLgQPCuKHtWtFSDTjgtbAxgqZ"), "withdraw", [(amount + 1000)], nil)
104+ else nil
101105
102106
103107 @Callable(msg)
104108 func init (_owner,_A_asset_id,_B_asset_id) = if (!(isDataStorageUntouched(this)))
105109 then throw("already initialized")
106110 else if ((msg.caller != this))
107111 then throw("self initialization only")
108112 else {
109113 let name = (("CPMM LP (" + take(toBase58String(sha256(((toBytes(toString(this)) + toBytes(_A_asset_id)) + toBytes(_B_asset_id)))), 6)) + ")")
110114 let issueToken = Issue(name, ((((("CPMM LP token for " + _A_asset_id) + "/") + _B_asset_id) + " @ ") + toString(this)), 0, 8, true)
111115 let tokenId = toBase58String(calculateAssetId(issueToken))
112116 [BooleanEntry(key_active, true), StringEntry(key_A_asset_id, checkAsset(_A_asset_id)), StringEntry(key_B_asset_id, checkAsset(_B_asset_id)), IntegerEntry(key_A_asset_balance, 0), IntegerEntry(key_B_asset_balance, 0), StringEntry(key_owner, checkAddress(_owner)), StringEntry(key_token, tokenId), issueToken]
113117 }
114118
115119
116120
117121 @Callable(msg)
118122 func replenishWithTwoTokens (min_mint_amount) = {
119123 let caller = msg.caller
120124 if (!(allowed(caller)))
121125 then throw("!allowed")
122126 else if (!(active))
123127 then throw("!active")
124128 else if ((size(msg.payments) != 2))
125129 then throw("size( payments ) != 2")
126130 else {
127131 let A_payment = msg.payments[0]
128132 let B_payment = msg.payments[1]
129133 let A_payment_asset = A_payment.assetId
130134 let B_payment_asset = B_payment.assetId
131135 if (if ((A_payment_asset != asset(A_asset_id)))
132136 then true
133137 else (B_payment_asset != asset(B_asset_id)))
134138 then throw("wrong assets")
135139 else {
136140 let A_payment_amount = A_payment.amount
137141 let B_payment_amount = B_payment.amount
138- let $t040705565 = if ((token_quantity == 0))
142+ let $t042245719 = if ((token_quantity == 0))
139143 then if (if ((A_payment_amount == 0))
140144 then true
141145 else (B_payment_amount == 0))
142146 then throw("wrong amounts")
143147 else $Tuple5(A_payment_amount, B_payment_amount, toInt(sqrtBigInt(fraction(toBigInt(normalize(A_payment_amount, A_asset_id)), toBigInt(normalize(B_payment_amount, B_asset_id)), toBigInt(1)), 0, 0, DOWN)), 0, 0)
144148 else {
145149 let A_growth = fraction(A_payment_amount, PRECISION, A_asset_balance)
146150 let B_growth = fraction(B_payment_amount, PRECISION, B_asset_balance)
147- let $t048065288 = if ((A_growth > B_growth))
151+ let $t049605442 = if ((A_growth > B_growth))
148152 then $Tuple3(B_growth, (A_payment_amount - fraction(B_growth, A_asset_balance, PRECISION)), 0)
149153 else $Tuple3(A_growth, 0, (B_payment_amount - fraction(A_growth, B_asset_balance, PRECISION)))
150- let growth = $t048065288._1
151- let A_back = $t048065288._2
152- let B_back = $t048065288._3
154+ let growth = $t049605442._1
155+ let A_back = $t049605442._2
156+ let B_back = $t049605442._3
153157 $Tuple5(((A_asset_balance + A_payment_amount) - A_back), ((B_asset_balance + B_payment_amount) - B_back), fraction(growth, token_quantity, PRECISION), A_back, B_back)
154158 }
155- let A_final = $t040705565._1
156- let B_final = $t040705565._2
157- let mint_amount = $t040705565._3
158- let A_back = $t040705565._4
159- let B_back = $t040705565._5
159+ let A_final = $t042245719._1
160+ let B_final = $t042245719._2
161+ let mint_amount = $t042245719._3
162+ let A_back = $t042245719._4
163+ let B_back = $t042245719._5
160164 if ((min_mint_amount > mint_amount))
161165 then throw("slippage screwed you")
162166 else {
163167 let staking = put_A((assetBalance(this, fromBase58String(A_asset_id)) - A_back))
164168 if ((staking == staking))
165169 then (([IntegerEntry(key_A_asset_balance, A_final), IntegerEntry(key_B_asset_balance, B_final), Reissue(token, mint_amount, true), ScriptTransfer(caller, mint_amount, token)] ++ (if ((A_back != 0))
166170 then [ScriptTransfer(caller, A_back, A_payment_asset)]
167171 else nil)) ++ (if ((B_back != 0))
168172 then [ScriptTransfer(caller, B_back, B_payment_asset)]
169173 else nil))
170174 else throw("Strict value is not equal to itself.")
171175 }
172176 }
173177 }
174178 }
175179
176180
177181
178182 @Callable(msg)
179183 func withdraw () = {
180184 let caller = msg.caller
181185 if (!(allowed(caller)))
182186 then throw("!allowed")
183187 else if ((size(msg.payments) != 1))
184188 then throw("size( payments ) != 1")
185189 else {
186190 let payment = msg.payments[0]
187191 if ((payment.assetId != token))
188192 then throw("unknown token")
189193 else {
190194 let amount = payment.amount
191195 let A_amount_out = fraction(A_asset_balance, amount, token_quantity)
192196 let B_amount_out = fraction(B_asset_balance, amount, token_quantity)
193197 let staking = get_A(A_amount_out)
194198 if ((staking == staking))
195199 then [IntegerEntry(key_A_asset_balance, (A_asset_balance - A_amount_out)), IntegerEntry(key_B_asset_balance, (B_asset_balance - B_amount_out)), Burn(token, amount), ScriptTransfer(caller, A_amount_out, asset(A_asset_id)), ScriptTransfer(caller, B_amount_out, asset(B_asset_id))]
196200 else throw("Strict value is not equal to itself.")
197201 }
198202 }
199203 }
200204
201205
202206
203207 @Callable(msg)
204208 func exchange (minAmountToReceive) = {
205209 let caller = msg.caller
206210 if (!(allowed(caller)))
207211 then throw("!allowed")
208212 else if (!(active))
209213 then throw("!active")
210214 else if ((size(msg.payments) != 1))
211215 then throw("size( payments ) != 1")
212216 else {
213217 let payment = msg.payments[0]
214218 let payment_amount = payment.amount
215219 let payment_asset = payment.assetId
216220 let ab = if ((payment_asset == asset(A_asset_id)))
217221 then true
218222 else if ((payment_asset == asset(B_asset_id)))
219223 then false
220224 else throw("wrong asset")
221- let $t075867707 = if (ab)
225+ let $t077407861 = if (ab)
222226 then $Tuple2(A_asset_balance, B_asset_balance)
223227 else $Tuple2(B_asset_balance, A_asset_balance)
224- let tokenFrom = $t075867707._1
225- let tokenTo = $t075867707._2
228+ let tokenFrom = $t077407861._1
229+ let tokenTo = $t077407861._2
226230 let amountWithoutFee = fraction(tokenTo, payment_amount, (payment_amount + tokenFrom))
227231 let amountWithFee = fraction(amountWithoutFee, FEE, FEE_DENOMINATOR)
228232 if ((minAmountToReceive > amountWithFee))
229233 then throw(((("Calculated amount to receive " + toString(amountWithFee)) + " is less than specified minimum ") + toString(minAmountToReceive)))
230234 else {
231- let $t080738303 = if (ab)
235+ let $t082278457 = if (ab)
232236 then $Tuple3((A_asset_balance + payment_amount), (B_asset_balance - amountWithFee), B_asset_id)
233237 else $Tuple3((A_asset_balance - amountWithFee), (B_asset_balance + payment_amount), A_asset_id)
234- let A_final = $t080738303._1
235- let B_final = $t080738303._2
236- let asset_final = $t080738303._3
238+ let A_final = $t082278457._1
239+ let B_final = $t082278457._2
240+ let asset_final = $t082278457._3
237241 let staking = if ((asset_final == A_asset_id))
238242 then get_A(amountWithFee)
239243 else put_A(assetBalance(this, fromBase58String(A_asset_id)))
240244 if ((staking == staking))
241245 then $Tuple2([IntegerEntry(key_A_asset_balance, A_final), IntegerEntry(key_B_asset_balance, B_final), ScriptTransfer(caller, amountWithFee, asset(asset_final))], amountWithFee)
242246 else throw("Strict value is not equal to itself.")
243247 }
244248 }
245249 }
246250
247251

github/deemru/w8io/3ef1775 
52.49 ms