tx · 3nbDoQet1dyK3yZkip8c1UbB6DdDiBjTbz66nwyHkhc8 3MsC1Cit1aGB6qPW1hvkyGP2Gx79K1mtUAk: -0.01500000 Waves 2023.01.11 13:38 [2400176] smart account 3MsC1Cit1aGB6qPW1hvkyGP2Gx79K1mtUAk > SELF 0.00000000 Waves
{ "type": 13, "id": "3nbDoQet1dyK3yZkip8c1UbB6DdDiBjTbz66nwyHkhc8", "fee": 1500000, "feeAssetId": null, "timestamp": 1673433550541, "version": 1, "sender": "3MsC1Cit1aGB6qPW1hvkyGP2Gx79K1mtUAk", "senderPublicKey": "2rdeGwVMkuRfRdUgrYaekNmjnegHokhyDx1z6TJq525F", "proofs": [ "3S6BSRiXQSd7cizKK9ev2iqXKyK8u3KaggY8tyLQ9X3TDvatyffEUjhZTPaRwUZf5nqsE7QonPjJJc1sJdz3uzrE" ], "script": "base64:BgLaEggCEgcKBQgICAEIEgMKAQESABIAEgUKAwgICBIDCgEIEgQKAgIBEgMKAQgSAwoBCBIAIgNTRVAiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiD2dldFN0cmluZ09yRmFpbCIDa2V5IhBnZXRCb29sZWFuT3JGYWlsIg5mYWlsRXhlY3V0ZUdldCIMYmFzZUFzc2V0U3RyIg51c2VyQWRkcmVzc1N0ciIKZ2V0VHhJZFN0ciILa2V5QXNzZXRDZmciFmtleU5leHRJbnRlcm5hbEFzc2V0SWQiDGtleVByaWNlTGFzdCIVaW50ZXJuYWxCYXNldEFzc2V0U3RyIhJrZXlUb3BVcExhc3RIZWlnaHQiBnNlbmRlciIPa2V5UHJpY2VIaXN0b3J5IgFoIgl0aW1lc3RhbXAiDmtleVRvdGFsTG9ja2VkIhRrZXlUb3RhbExvY2tlZEJ5VXNlciIUaW50ZXJuYWxCYXNlQXNzZXRTdHIiH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQiEWludGVybmFsQmFzZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIhxrZXlNYXBwaW5nc1NoYXJlMmJhc2VBc3NldElkIg1zaGFyZUFzc2V0U3RyIhxrZXlNYXBwaW5nc0Jhc2VBc3NldDJzaGFyZUlkIhdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbiILa2V5U2h1dGRvd24iEmtleVNodXRkb3duTWFuYWdlciISSWR4Q2ZnU2hhcmVBc3NldElkIhdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldCIcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cyIXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UiFElkeENmZ0dldERlbGF5QmxvY2tzIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIHJG1hdGNoMCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIMZGF0YUFzc2V0Q2ZnIhZkZWNpbWFsc011bHRCb3RoQXNzZXRzIhFkZWNpbWFsc011bHRQcmljZSIQZ2V0RGVsYXlJbkJsb2NrcyITSWR4VG90YWxMb2NrZWRTaGFyZSISSWR4VG90YWxMb2NrZWRCYXNlIg9kYXRhVG90YWxMb2NrZWQiEHNoYXJlQXNzZXRBbW91bnQiD2Jhc2VBc3NldEFtb3VudCIPcmVhZFRvdGFsTG9ja2VkIhB0b3RhbExvY2tlZEFycmF5IgxrZXlPcGVyYXRpb24iDW9wZXJhdGlvblR5cGUiC3VzZXJBZGRyZXNzIgR0eElkIg1JZHhPcGVyU3RhdHVzIg9JZHhPcGVySW5BbW91bnQiDElkeE9wZXJQcmljZSIQSWR4T3Blck91dEFtb3VudCISSWR4T3BlclN0YXJ0SGVpZ2h0IhVJZHhPcGVyU3RhcnRUaW1lc3RhbXAiEElkeE9wZXJFbmRIZWlnaHQiE0lkeE9wZXJFbmRUaW1lc3RhbXAiHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncyIGc3RhdHVzIg1pbkFzc2V0QW1vdW50IgVwcmljZSIOb3V0QXNzZXRBbW91bnQiC3N0YXJ0SGVpZ2h0Ig5zdGFydFRpbWVzdGFtcCIJZW5kSGVpZ2h0IgxlbmRUaW1lc3RhbXAiDWRhdGFPcGVyYXRpb24iHGRhdGFPcGVyYXRpb25FeGVjdXRpb25VcGRhdGUiDWN1cnJPcGVyQXJyYXkiCW5ld1N0YXR1cyIPbmV3RW5kVGltZXN0YW1wIhJyZWFkQXNzZXRDZmdPckZhaWwiFGluY3JlbWVudFRvdGFsTG9ja2VkIglkYXRhQXJyYXkiFGRlY3JlbWVudFRvdGFsTG9ja2VkIhBnZW5lcmljQ2FsY1ByaWNlIgtiYXNlQXNzZXRJZCIPdG9wVXBCYXNlQW1vdW50IgxzaGFyZUFzc2V0SWQiFXRvdGFsTG9ja2VkQmFzZUFtb3VudCIQYmFzZUFzc2V0QmFsYW5jZSIfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jayINc2hhcmVFbWlzc2lvbiIJY2FsY1ByaWNlIhtwcml2YXRlQ3VycmVudFN5c1BhcmFtc1JFU1QiCGNmZ0FycmF5IghzeXNTdGF0ZSIOc2hhcmVBc3NldE5hbWUiD3NoYXJlQXNzZXREZXNjciIQZ2V0RGVsYXlpbkJsb2NrcyIWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcyIIZGVjaW1hbHMiFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbiIKc3RhcnRQcmljZSIUaW50ZXJuYWxCYXNlQXNzZXR0SWQiE2ludGVybmFsQmFzZUFzc2V0SWQiFmludGVybmFsQmFzZUFzc2V0SWRTdHIiDmJhc2VBc3NldElkU3RyIgNwbXQiDGlzUHV0QmxvY2tlZCIIc2h1dGRvd24iDGNhbGxlclB1YlN0ciIOZ2V0RGVsYXlCbG9ja3MiDG9wZXJhdGlvbktleSINb3BlcmF0aW9uRGF0YSINYXNzZXRDZmdBcnJheSIOb3BlcmF0aW9uQXJyYXkiDWluU2hhcmVBbW91bnQiDW91dEJhc2VBbW91bnQiCnBtdEFzc2V0SWQiC3BtdEFzc2V0U3RyIhJ0b3BVcExhc3RIZWlnaHRLRVkiD3RvcFVwTGFzdEhlaWdodCIHYXNzZXRJZCIGYW1vdW50IhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IgZjaGVja3MiDGlzUmVpc3N1YWJsZSINc3lzU3RhdGVUdXBsZSIIcmVzdERhdGEiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleTcAAWECAl9fAQFiAQFjCQACAQkAuQkCCQDMCAICEGxwX3N0YWtpbmcucmlkZToJAMwIAgUBYwUDbmlsAgEgAQFkAQFjCQACAQkBAWIBBQFjAQFlAQFmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUBZgkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FAWYBAWcBAWYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQR0aGlzBQFmCQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUBZgEBaAQBYwFpAWoBawkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAWMCDzogYmFzZUFzc2V0U3RyPQUBaQIQIHVzZXJBZGRyZXNzU3RyPQUBagIMIGdldFR4SWRTdHI9BQFrAQFsAQFpCQCsAgICFyVzJXMlc19fY29uZmlnX19hc3NldF9fBQFpAQFtAAIXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBAW4BAW8JAKwCAgIVJXMlcyVkX19wcmljZV9fbGFzdF9fBQFvAQFwAgFvAXEJALkJAgkAzAgCAh8lcyVzJXMlZCVzX190b3B1cF9fbGFzdF9faGVpZ2h0CQDMCAIFAW8JAMwIAgUBcQUDbmlsBQFhAQFyAwFvAXMBdAkAuQkCCQDMCAICGiVzJXMlZCVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIFAW8JAMwIAgkApAMBBQFzCQDMCAIJAKQDAQUBdAUDbmlsBQFhAQF1AQFvCQCsAgICFyVzJXMlZF9fdG90YWxfX2xvY2tlZF9fBQFvAQF2AgF3AWoJALkJAgkAzAgCAhclcyVzJWQlc19fdG90YWxfX2xvY2tlZAkAzAgCBQF3CQDMCAIFAWoFA25pbAUBYQEBeAEBeQkArAICAiglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQCkAwEFAXkBAXoBAWkJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUBaQEBQQEBQgkArAICAiUlcyVzJXNfX21hcHBpbmdzX19zaGFyZTJiYXNlQXNzZXRJZF9fBQFCAQFDAQFpCQCsAgICJSVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJzaGFyZUlkX18FAWkBAUQBAXcJAKwCAgIXJXMlcyVkX19zaHV0ZG93bl9fcHV0X18FAXcBAUUBAXcJAKwCAgIQJXMlZF9fc2h1dGRvd25fXwUBdwEBRgEBdwkArAICAhslcyVzJWRfX3NodXRkb3duX19tYW5hZ2VyX18FAXcAAUcAAQABSAACAAFJAAMAAUoABAABSwAFAQFMAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAU0AAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAU4ABAFPCQCiCAEJAQFMAAMJAAECBQFPAgZTdHJpbmcEAVAFAU8JANkEAQUBUAMJAAECBQFPAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAVEABAFPCQCiCAEJAQFNAAMJAAECBQFPAgZTdHJpbmcEAVAFAU8JANkEAQUBUAMJAAECBQFPAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAVIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEBUwEBVAMJAAACCAUBVAZjYWxsZXIFBHRoaXMGBQFSAQFVAQFUBAFPCQEBTgADCQABAgUBTwIKQnl0ZVZlY3RvcgQBVgUBTwMJAAACCAUBVA9jYWxsZXJQdWJsaWNLZXkFAVYGBQFSAwkAAQIFAU8CBFVuaXQJAQFTAQUBVAkAAgECC01hdGNoIGVycm9yAQFXBQFCAXcBWAFZAVoJALkJAgkAzAgCAgolcyVkJWQlZCVkCQDMCAIFAUIJAMwIAgUBdwkAzAgCCQCkAwEFAVgJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFhAAJhYQABAAJhYgACAQJhYwICYWQCYWUJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQUCYWQJAMwIAgkApAMBBQJhZQUDbmlsBQFhAQJhZgEBZgQCYWcJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFmCQECYWMCAAAAAAUBYQkAzAgCAP///////////wEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFnBQJhYQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYWcFAmFiBQNuaWwBAmFoBAJhaQF3AmFqAmFrCQC5CQIJAMwIAgIIJXMlZCVzJXMJAMwIAgUCYWkJAMwIAgUBdwkAzAgCBQJhagkAzAgCBQJhawUDbmlsBQFhAAJhbAABAAJhbQACAAJhbgADAAJhbwAEAAJhcAAFAAJhcQAGAAJhcgAHAAJhcwAIAQJhdAgCYXUCYXYCYXcCYXgCYXkCYXoCYUECYUIJALkJAgkAzAgCAhAlcyVkJWQlZCVkJWQlZCVkCQDMCAIFAmF1CQDMCAIFAmF2CQDMCAIFAmF3CQDMCAIFAmF4CQDMCAIFAmF5CQDMCAIFAmF6CQDMCAIFAmFBCQDMCAIFAmFCBQNuaWwFAWEBAmFDCAJhdQJhdgJhdwJheAJheQJhegJhQQJhQgkBAmF0CAUCYXUJAKQDAQUCYXYJAKQDAQUCYXcJAKQDAQUCYXgJAKQDAQUCYXkJAKQDAQUCYXoJAKQDAQUCYUEJAKQDAQUCYUIBAmFEAwJhRQJhRgJhRwkBAmF0CAUCYUYJAJEDAgUCYUUFAmFtCQCRAwIFAmFFBQJhbgkAkQMCBQJhRQUCYW8JAJEDAgUCYUUFAmFwCQCRAwIFAmFFBQJhcQkAkQMCBQJhRQUCYXIJAKQDAQUCYUcBAmFIAQFpBAFmCQEBbAEFAWkJALUJAgkBAWUBBQFmBQFhAQJhSQMBZgJhZAJhZQQCYUoJAQJhZgEFAWYJAQtTdHJpbmdFbnRyeQIFAWYJAQJhYwIJAGQCCQCRAwIFAmFKBQJhYQUCYWQJAGQCCQCRAwIFAmFKBQJhYgUCYWUBAmFLAwFmAmFkAmFlBAJhSgkBAmFmAQUBZgkBC1N0cmluZ0VudHJ5AgUBZgkBAmFjAgkAZQIJAJEDAgUCYUoFAmFhBQJhZAkAZQIJAJEDAgUCYUoFAmFiBQJhZQECYUwGAXcCYU0CYU4CYU8BWAFZBAJhZwkBAmFmAQkBAXUBBQF3BAJhUAkAkQMCBQJhZwUCYWIEAmFRCQDwBwIFBHRoaXMFAmFNBAJhUgkAZAIJAGUCBQJhUQUCYVAFAmFOAwkAZgIAAAUCYVIJAAIBCQCsAgIJAKwCAgkArAICAjZiYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrIDwgMDogYmFzZUFzc2V0QmFsYW5jZT0JAKQDAQUCYVECISBiYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrPQkApAMBBQJhUgQCYVMICQEFdmFsdWUBCQDsBwEFAmFPCHF1YW50aXR5BAJhdwMJAAACBQJhUwAACQBoAgABBQFZCQBrAwUCYVIFAVkFAmFTCQCXCgUFAmF3BQJhUQUCYVAFAmFSBQJhUwECYVQFAXcCYU0CYU8BWAFZCQECYUwGBQF3BQJhTQAABQJhTwUBWAUBWQECYVUBAWkEAmFNCQDZBAEFAWkEAmFWCQECYUgBBQFpBAFCCQCRAwIFAmFWBQFHBAJhTwkA2QQBBQFCBAFYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAUkEAVkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBSgQBdwkAkQMCBQJhVgUBSAQCYVcJAQJhVAUFAXcFAmFNBQJhTwUBWAUBWQkAmAoGCQEMSW50ZWdlckVudHJ5AgIFcHJpY2UIBQJhVwJfMQkBDEludGVnZXJFbnRyeQICEWRlY2ltYWxzTXVsdFByaWNlBQFZCQEMSW50ZWdlckVudHJ5AgIQYmFzZUFzc2V0QmFsYW5jZQgFAmFXAl8yCQEMSW50ZWdlckVudHJ5AgIVdG90YWxMb2NrZWRCYXNlQW1vdW50CAUCYVcCXzMJAQxJbnRlZ2VyRW50cnkCAh9iYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrCAUCYVcCXzQJAQxJbnRlZ2VyRW50cnkCAg1zaGFyZUVtaXNzaW9uCAUCYVcCXzUKAVQBEmFkbWluUmVnaXN0ZXJBc3NldAUBaQJhWAJhWQJhWgJiYQQCYU0JANkEAQUBaQQCYmIICQEFdmFsdWUBCQDsBwEFAmFNCGRlY2ltYWxzAwkBAiE9AggFAVQGY2FsbGVyBQR0aGlzCQACAQIScGVybWlzc2lvbnMgZGVuaWVkAwkBAiE9AgkApQgBCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiYQUCYmEJAAIBAh5pbnZhbGlkIHNodXRkb3duTWFuYWdlckFkZHJlc3MDCQBmAgAABQJhWgkAAgEJAKwCAgIZaW52YWxpZCBnZXREZWxheWluQmxvY2tzPQkApAMBBQJhWgQCYmMJAMIIBQUCYVgFAmFZAAEFAmJiBgQCYU8JALgIAQUCYmMEAUIJANgEAQUCYU8EAVkJAGgCCQBoAgBkAOgHAOgHBAFYCQBsBgAKAAAFAmJiAAAAAAUERE9XTgQCYmQJAGgCAAEFAVkEAmJlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFtAAAABAF3CQCkAwEFAmJlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFsAQUBaQkBAVcFBQFCBQF3BQFYBQFZBQJhWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBeAEFAmJlBQFpCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQF6AQUBaQUBdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBQQEFAUIFAWkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUMBBQFpBQFCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBRAEFAXcHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFGAQUBdwUCYmEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFtAAkAZAIFAmJlAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFuAQUBdwUCYmQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFyAwUBdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCYmQJAMwIAgUCYmMJAMwIAgkBBEJ1cm4CBQJhTwABBQNuaWwBVAELc2h1dGRvd25QdXQBAmJmBAJiZwkApAMBBQJiZgQCYmgJAQFlAQkBAXgBBQJiZgQCYmEJAQFlAQkBAUYBBQJiZwMJAGYCAAEJALECAQUCYmgJAAIBAhtpbnZhbGlkIGludGVybmFsQmFzZUFzc2V0SWQDCQECIT0CCQClCAEIBQFUBmNhbGxlcgUCYmEJAAIBAg1hY2Nlc3MgZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBRAEJAKQDAQUCYmYGBQNuaWwBVAEDcHV0AAQCYmkJAQV2YWx1ZQEJAJEDAggFAVQIcGF5bWVudHMAAAQCYU0JAQV2YWx1ZQEIBQJiaQdhc3NldElkBAFpCQDYBAEFAmFNBAFqCQClCAEIBQFUBmNhbGxlcgQCYVYJAQJhSAEFAWkEAUIJAJEDAgUCYVYFAUcEAmFPCQDZBAEFAUIEAVgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBSQQBWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFWBQFKBAF3CQCRAwIFAmFWBQFIBAJiagkBAWcBCQEBRAEFAXcEAmJrCQELdmFsdWVPckVsc2UCCQCgCAEJAQFFAQUBdwcDAwUCYmoGBQJiawkAAgECGHB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZAQCYXcICQECYVQFBQF3BQJhTQUCYU8FAVgFAVkCXzEEAmFkCQBrAwgFAmJpBmFtb3VudAUBWQUCYXcJAMwIAgkBB1JlaXNzdWUDBQJhTwUCYWQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFUBmNhbGxlcgUCYWQFAmFPCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaAQCAVAFAXcFAWoJANgEAQgFAVQNdHJhbnNhY3Rpb25JZAkBAmFDCAIIRklOSVNIRUQIBQJiaQZhbW91bnQFAmF3BQJhZAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsAVQBEHN1Ym1pdEdldFJlcXVlc3QABAJiaQkBBXZhbHVlAQkAkQMCCAUBVAhwYXltZW50cwAABAJhTwkBBXZhbHVlAQgFAmJpB2Fzc2V0SWQEAUIJANgEAQUCYU8EAmJsCQDYBAEIBQFUD2NhbGxlclB1YmxpY0tleQQCYWoIBQFUBmNhbGxlcgQBagkApQgBBQJhagQCYWQIBQJiaQZhbW91bnQEAWkJAQFlAQkBAUEBBQFCBAJhTQkA2QQBBQFpBAJhVgkBAmFIAQUBaQQBWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFWBQFJBAFZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAUoEAmJtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAUsEAXcJAJEDAgUCYVYFAUgEAmJrCQELdmFsdWVPckVsc2UCCQCgCAEJAQFFAQUBdwcDBQJiawkAAgECFG9wZXJhdGlvbiBpcyBibG9ja2VkBAJhdwgJAQJhVAUFAXcFAmFNBQJhTwUBWAUBWQJfMQQCYWUJAGsDBQJhZAUCYXcFAVkEAmJuCQECYWgEAgFHBQF3BQFqCQDYBAEIBQFUDXRyYW5zYWN0aW9uSWQEAmJvCQECYUMIAgdQRU5ESU5HBQJhZAUCYXcFAmFlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUGaGVpZ2h0BQJibQAACQDMCAIJAQRCdXJuAgUCYU8FAmFkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJuBQJibwkAzAgCCQECYUkDCQEBdQEFAXcFAmFkBQJhZQkAzAgCCQECYUkDCQEBdgIFAXcFAWoFAmFkBQJhZQUDbmlsAVQBEWV4ZWN1dGVHZXRSZXF1ZXN0AwFpAWoBawQCYWoJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWoEAmJwCQECYUgBBQFpBAJhTwkA2QQBCQCRAwIFAmJwBQFHBAJhTQkA2QQBBQFpBAF3CQCRAwIFAmJwBQFIBAJiawkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEBRQEFAXcHAwUCYmsJAAIBAhRvcGVyYXRpb24gaXMgYmxvY2tlZAQCYm4JAQJhaAQCAUcFAXcFAWoFAWsEAmJxCQC1CQIJAQFlAQUCYm4FAWEEAmF1CQCRAwIFAmJxBQJhbAQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicQUCYXIEAmJyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnEFAmFtBAJicwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJxBQJhbwMJAQIhPQIFAmF1AgdQRU5ESU5HCQEBaAQCFVN0YXR1cyBpcyBub3QgUEVORElORwUBaQUBagUBawMJAGYCBQJhQQUGaGVpZ2h0CQEBaAQJAKwCAgkArAICCQCsAgICCkVuZEhlaWdodFsJAKQDAQUCYUECBF0gPiAJAKQDAQUGaGVpZ2h0BQFpBQFqBQFrCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFqBQJicwUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgUCYm4JAQJhRAMFAmJxAghGSU5JU0hFRAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBAmFLAwkBAXUBBQF3BQJicgUCYnMJAMwIAgkBAmFLAwkBAXYCBQF3BQFqBQJicgUCYnMFA25pbAFUAQx0b3BVcEJhbGFuY2UBAWkEAmJwCQECYUgBBQFpBAJiaQkBBXZhbHVlAQkAkQMCCAUBVAhwYXltZW50cwAABAJidAkBBXZhbHVlAQgFAmJpB2Fzc2V0SWQEAmJ1CQDYBAEFAmJ0BAJhTwkA2QQBCQCRAwIFAmJwBQFHBAFYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnAFAUkEAVkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicAUBSgQBdwkAkQMCBQJicAUBSAQCYnYJAQFwAgUBdwkApQgBCAUBVAZjYWxsZXIEAmJ3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmJ2AAAEAmJrCQELdmFsdWVPckVsc2UCCQCgCAEJAQFFAQUBdwcDBQJiawkAAgECFG9wZXJhdGlvbiBpcyBibG9ja2VkAwkBAiE9AgUBaQUCYnUJAAIBAj5hdHRhY2hlZCBwYXltZW50J3MgYXNzZXQgaWQgaXMgTk9UIG1hdGNoZWQgcGFzc2VkIGJhc2VBc3NldFN0cgMJAGYCCQCQAwEIBQFUCHBheW1lbnRzAAEJAAIBAiBvbmx5IG9uZSBwYXltZW50IGNhbiBiZSBhdHRhY2hlZAMJAGYCAGQJAGUCBQZoZWlnaHQFAmJ3CQACAQI3MSB0b3BVcCBwZXIgMTAwIGJsb2NrcyBmcm9tIHRoZSBzYW1lIGFkZHJlc3MgaXMgYWxsb3dlZAQCYXcICQECYUwGBQF3BQJidAgFAmJpBmFtb3VudAUCYU8FAVgFAVkCXzEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFuAQUBdwUCYXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFyAwUBdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCYXcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJ2BQZoZWlnaHQFA25pbAFUAQRlbWl0AgJieAJieQQCYnoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWIBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBYgECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzBAJiQQkAzAgCAwkAAAIIBQFUBmNhbGxlcgUCYnoGCQEBZAECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIDCQBmAgUCYnkAAAYJAQFkAQIWaW52YWxpZCBhbW91bnQgdG8gZW1pdAkAzAgCAwkBAiE9AgkAoggBCQEBQQEJANgEAQUCYngFBHVuaXQGCQEBZAECD2ludmFsaWQgYXNzZXRJZAUDbmlsAwkAAAIFAmJBBQJiQQQCYkIGCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQJieAUCYnkFAmJCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJ6BQJieQUCYngFA25pbAUCYnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BVAEUY3VycmVudFN5c1BhcmFtc1JFU1QBAWkEAmJDCQECYVUBBQFpBAJhdwgIBQJiQwJfMQV2YWx1ZQQBWQgIBQJiQwJfMgV2YWx1ZQQCYVEICAUCYkMCXzMFdmFsdWUEAmFQCAgFAmJDAl80BXZhbHVlBAJhUggIBQJiQwJfNQV2YWx1ZQQCYVMICAUCYkMCXzYFdmFsdWUEAmJECQC5CQIJAMwIAgIZc3RhcnRDdXJyZW50U3lzUGFyYW1zUkVTVAkAzAgCCQCkAwEFAmF3CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVAJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAICF2VuZEN1cnJlbnRTeXNQYXJhbXNSRVNUBQNuaWwFAWEJAAIBBQJiRAFUAQpzZXRNYW5hZ2VyAQJiRQQCYkYJAQFVAQUBVAMJAAACBQJiRgUCYkYEAmJHCQDZBAEFAmJFAwkAAAIFAmJHBQJiRwkAzAgCCQELU3RyaW5nRW50cnkCCQEBTQAFAmJFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BVAEOY29uZmlybU1hbmFnZXIABAJiSAkBAVEABAJiSQMJAQlpc0RlZmluZWQBBQJiSAYJAQFkAQISbm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmJJBQJiSQQCYkoDCQAAAggFAVQPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiSAYJAQFkAQIbeW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmJKBQJiSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBTAAJANgEAQkBBXZhbHVlAQUCYkgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU0ABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJLAQJiTAAEAmJNBAFPCQEBTgADCQABAgUBTwIKQnl0ZVZlY3RvcgQBVgUBTwUBVgMJAAECBQFPAgRVbml0CAUCYksPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmJLCWJvZHlCeXRlcwkAkQMCCAUCYksGcHJvb2ZzAAAFAmJNhoYWfQ==", "chainId": 84, "height": 2400176, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: A6eWjiiWhq69KmqRSS3e1gcHu7Wr7sy33st6iEyA4rXZ Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "__" | |
5 | + | ||
6 | + | func b (c) = throw(makeString(["lp_staking.ride:", c], " ")) | |
7 | + | ||
8 | + | ||
9 | + | func d (c) = throw(b(c)) | |
10 | + | ||
11 | + | ||
12 | + | func e (f) = valueOrErrorMessage(getString(this, f), ("No data for this.key=" + f)) | |
13 | + | ||
14 | + | ||
15 | + | func g (f) = valueOrErrorMessage(getBoolean(this, f), ("No data for this.key=" + f)) | |
16 | + | ||
17 | + | ||
18 | + | func h (c,i,j,k) = throw(((((((c + ": baseAssetStr=") + i) + " userAddressStr=") + j) + " getTxIdStr=") + k)) | |
19 | + | ||
20 | + | ||
21 | + | func l (i) = ("%s%s%s__config__asset__" + i) | |
22 | + | ||
23 | + | ||
24 | + | func m () = "%s__nextInternalAssetId" | |
25 | + | ||
26 | + | ||
27 | + | func n (o) = ("%s%s%d__price__last__" + o) | |
28 | + | ||
29 | + | ||
30 | + | func p (o,q) = makeString(["%s%s%s%d%s__topup__last__height", o, q], a) | |
31 | + | ||
32 | + | ||
33 | + | func r (o,s,t) = makeString(["%s%s%d%d%d__price__history", o, toString(s), toString(t)], a) | |
34 | + | ||
35 | + | ||
36 | + | func u (o) = ("%s%s%d__total__locked__" + o) | |
37 | + | ||
38 | + | ||
39 | + | func v (w,j) = makeString(["%s%s%d%s__total__locked", w, j], a) | |
40 | + | ||
41 | + | ||
42 | + | func x (y) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(y)) | |
43 | + | ||
44 | + | ||
45 | + | func z (i) = ("%s%s%s__mappings__baseAsset2internalId__" + i) | |
46 | + | ||
47 | + | ||
48 | + | func A (B) = ("%s%s%s__mappings__share2baseAssetId__" + B) | |
49 | + | ||
50 | + | ||
51 | + | func C (i) = ("%s%s%s__mappings__baseAsset2shareId__" + i) | |
52 | + | ||
53 | + | ||
54 | + | func D (w) = ("%s%s%d__shutdown__put__" + w) | |
55 | + | ||
56 | + | ||
57 | + | func E (w) = ("%s%d__shutdown__" + w) | |
58 | + | ||
59 | + | ||
60 | + | func F (w) = ("%s%s%d__shutdown__manager__" + w) | |
61 | + | ||
62 | + | ||
63 | + | let G = 1 | |
64 | + | ||
65 | + | let H = 2 | |
66 | + | ||
67 | + | let I = 3 | |
68 | + | ||
69 | + | let J = 4 | |
70 | + | ||
71 | + | let K = 5 | |
72 | + | ||
73 | + | func L () = "%s__managerPublicKey" | |
74 | + | ||
75 | + | ||
76 | + | func M () = "%s__pendingManagerPublicKey" | |
77 | + | ||
78 | + | ||
79 | + | func N () = { | |
80 | + | let O = getString(L()) | |
81 | + | if ($isInstanceOf(O, "String")) | |
82 | + | then { | |
83 | + | let P = O | |
84 | + | fromBase58String(P) | |
85 | + | } | |
86 | + | else if ($isInstanceOf(O, "Unit")) | |
87 | + | then unit | |
88 | + | else throw("Match error") | |
89 | + | } | |
90 | + | ||
91 | + | ||
92 | + | func Q () = { | |
93 | + | let O = getString(M()) | |
94 | + | if ($isInstanceOf(O, "String")) | |
95 | + | then { | |
96 | + | let P = O | |
97 | + | fromBase58String(P) | |
98 | + | } | |
99 | + | else if ($isInstanceOf(O, "Unit")) | |
100 | + | then unit | |
101 | + | else throw("Match error") | |
102 | + | } | |
103 | + | ||
104 | + | ||
105 | + | let R = throw("Permission denied") | |
106 | + | ||
107 | + | func S (T) = if ((T.caller == this)) | |
108 | + | then true | |
109 | + | else R | |
110 | + | ||
111 | + | ||
112 | + | func U (T) = { | |
113 | + | let O = N() | |
114 | + | if ($isInstanceOf(O, "ByteVector")) | |
115 | + | then { | |
116 | + | let V = O | |
117 | + | if ((T.callerPublicKey == V)) | |
118 | + | then true | |
119 | + | else R | |
120 | + | } | |
121 | + | else if ($isInstanceOf(O, "Unit")) | |
122 | + | then S(T) | |
123 | + | else throw("Match error") | |
124 | + | } | |
125 | + | ||
126 | + | ||
127 | + | func W (B,w,X,Y,Z) = makeString(["%s%d%d%d%d", B, w, toString(X), toString(Y), toString(Z)], a) | |
128 | + | ||
129 | + | ||
130 | + | let aa = 1 | |
131 | + | ||
132 | + | let ab = 2 | |
133 | + | ||
134 | + | func ac (ad,ae) = makeString(["%d%d", toString(ad), toString(ae)], a) | |
135 | + | ||
136 | + | ||
137 | + | func af (f) = { | |
138 | + | let ag = split(valueOrElse(getString(this, f), ac(0, 0)), a) | |
139 | + | [-1, parseIntValue(ag[aa]), parseIntValue(ag[ab])] | |
140 | + | } | |
141 | + | ||
142 | + | ||
143 | + | func ah (ai,w,aj,ak) = makeString(["%s%d%s%s", ai, w, aj, ak], a) | |
144 | + | ||
145 | + | ||
146 | + | let al = 1 | |
147 | + | ||
148 | + | let am = 2 | |
149 | + | ||
150 | + | let an = 3 | |
151 | + | ||
152 | + | let ao = 4 | |
153 | + | ||
154 | + | let ap = 5 | |
155 | + | ||
156 | + | let aq = 6 | |
157 | + | ||
158 | + | let ar = 7 | |
159 | + | ||
160 | + | let as = 8 | |
161 | + | ||
162 | + | func at (au,av,aw,ax,ay,az,aA,aB) = makeString(["%s%d%d%d%d%d%d%d", au, av, aw, ax, ay, az, aA, aB], a) | |
163 | + | ||
164 | + | ||
165 | + | func aC (au,av,aw,ax,ay,az,aA,aB) = at(au, toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB)) | |
166 | + | ||
167 | + | ||
168 | + | func aD (aE,aF,aG) = at(aF, aE[am], aE[an], aE[ao], aE[ap], aE[aq], aE[ar], toString(aG)) | |
169 | + | ||
170 | + | ||
171 | + | func aH (i) = { | |
172 | + | let f = l(i) | |
173 | + | split(e(f), a) | |
174 | + | } | |
175 | + | ||
176 | + | ||
177 | + | func aI (f,ad,ae) = { | |
178 | + | let aJ = af(f) | |
179 | + | StringEntry(f, ac((aJ[aa] + ad), (aJ[ab] + ae))) | |
180 | + | } | |
181 | + | ||
182 | + | ||
183 | + | func aK (f,ad,ae) = { | |
184 | + | let aJ = af(f) | |
185 | + | StringEntry(f, ac((aJ[aa] - ad), (aJ[ab] - ae))) | |
186 | + | } | |
187 | + | ||
188 | + | ||
189 | + | func aL (w,aM,aN,aO,X,Y) = { | |
190 | + | let ag = af(u(w)) | |
191 | + | let aP = ag[ab] | |
192 | + | let aQ = assetBalance(this, aM) | |
193 | + | let aR = ((aQ - aP) + aN) | |
194 | + | if ((0 > aR)) | |
195 | + | then throw(((("baseAssetBalanceConsideringLock < 0: baseAssetBalance=" + toString(aQ)) + " baseAssetBalanceConsideringLock=") + toString(aR))) | |
196 | + | else { | |
197 | + | let aS = value(assetInfo(aO)).quantity | |
198 | + | let aw = if ((aS == 0)) | |
199 | + | then (1 * Y) | |
200 | + | else fraction(aR, Y, aS) | |
201 | + | $Tuple5(aw, aQ, aP, aR, aS) | |
202 | + | } | |
203 | + | } | |
204 | + | ||
205 | + | ||
206 | + | func aT (w,aM,aO,X,Y) = aL(w, aM, 0, aO, X, Y) | |
207 | + | ||
208 | + | ||
209 | + | func aU (i) = { | |
210 | + | let aM = fromBase58String(i) | |
211 | + | let aV = aH(i) | |
212 | + | let B = aV[G] | |
213 | + | let aO = fromBase58String(B) | |
214 | + | let X = parseIntValue(aV[I]) | |
215 | + | let Y = parseIntValue(aV[J]) | |
216 | + | let w = aV[H] | |
217 | + | let aW = aT(w, aM, aO, X, Y) | |
218 | + | $Tuple6(IntegerEntry("price", aW._1), IntegerEntry("decimalsMultPrice", Y), IntegerEntry("baseAssetBalance", aW._2), IntegerEntry("totalLockedBaseAmount", aW._3), IntegerEntry("baseAssetBalanceConsideringLock", aW._4), IntegerEntry("shareEmission", aW._5)) | |
219 | + | } | |
220 | + | ||
221 | + | ||
222 | + | @Callable(T) | |
223 | + | func adminRegisterAsset (i,aX,aY,aZ,ba) = { | |
224 | + | let aM = fromBase58String(i) | |
225 | + | let bb = value(assetInfo(aM)).decimals | |
226 | + | if ((T.caller != this)) | |
227 | + | then throw("permissions denied") | |
228 | + | else if ((toString(addressFromStringValue(ba)) != ba)) | |
229 | + | then throw("invalid shutdownManagerAddress") | |
230 | + | else if ((0 > aZ)) | |
231 | + | then throw(("invalid getDelayinBlocks=" + toString(aZ))) | |
232 | + | else { | |
233 | + | let bc = Issue(aX, aY, 1, bb, true) | |
234 | + | let aO = calculateAssetId(bc) | |
235 | + | let B = toBase58String(aO) | |
236 | + | let Y = ((100 * 1000) * 1000) | |
237 | + | let X = pow(10, 0, bb, 0, 0, DOWN) | |
238 | + | let bd = (1 * Y) | |
239 | + | let be = valueOrElse(getInteger(this, m()), 0) | |
240 | + | let w = toString(be) | |
241 | + | [StringEntry(l(i), W(B, w, X, Y, aZ)), StringEntry(x(be), i), StringEntry(z(i), w), StringEntry(A(B), i), StringEntry(C(i), B), BooleanEntry(D(w), false), StringEntry(F(w), ba), IntegerEntry(m(), (be + 1)), IntegerEntry(n(w), bd), IntegerEntry(r(w, height, lastBlock.timestamp), bd), bc, Burn(aO, 1)] | |
242 | + | } | |
243 | + | } | |
244 | + | ||
245 | + | ||
246 | + | ||
247 | + | @Callable(T) | |
248 | + | func shutdownPut (bf) = { | |
249 | + | let bg = toString(bf) | |
250 | + | let bh = e(x(bf)) | |
251 | + | let ba = e(F(bg)) | |
252 | + | if ((1 > size(bh))) | |
253 | + | then throw("invalid internalBaseAssetId") | |
254 | + | else if ((toString(T.caller) != ba)) | |
255 | + | then throw("access denied") | |
256 | + | else [BooleanEntry(D(toString(bf)), true)] | |
257 | + | } | |
258 | + | ||
259 | + | ||
260 | + | ||
261 | + | @Callable(T) | |
262 | + | func put () = { | |
263 | + | let bi = value(T.payments[0]) | |
264 | + | let aM = value(bi.assetId) | |
265 | + | let i = toBase58String(aM) | |
266 | + | let j = toString(T.caller) | |
267 | + | let aV = aH(i) | |
268 | + | let B = aV[G] | |
269 | + | let aO = fromBase58String(B) | |
270 | + | let X = parseIntValue(aV[I]) | |
271 | + | let Y = parseIntValue(aV[J]) | |
272 | + | let w = aV[H] | |
273 | + | let bj = g(D(w)) | |
274 | + | let bk = valueOrElse(getBoolean(E(w)), false) | |
275 | + | if (if (bj) | |
276 | + | then true | |
277 | + | else bk) | |
278 | + | then throw("put operation is blocked") | |
279 | + | else { | |
280 | + | let aw = aT(w, aM, aO, X, Y)._1 | |
281 | + | let ad = fraction(bi.amount, Y, aw) | |
282 | + | [Reissue(aO, ad, true), ScriptTransfer(T.caller, ad, aO), StringEntry(ah("P", w, j, toBase58String(T.transactionId)), aC("FINISHED", bi.amount, aw, ad, height, lastBlock.timestamp, height, lastBlock.timestamp))] | |
283 | + | } | |
284 | + | } | |
285 | + | ||
286 | + | ||
287 | + | ||
288 | + | @Callable(T) | |
289 | + | func submitGetRequest () = { | |
290 | + | let bi = value(T.payments[0]) | |
291 | + | let aO = value(bi.assetId) | |
292 | + | let B = toBase58String(aO) | |
293 | + | let bl = toBase58String(T.callerPublicKey) | |
294 | + | let aj = T.caller | |
295 | + | let j = toString(aj) | |
296 | + | let ad = bi.amount | |
297 | + | let i = e(A(B)) | |
298 | + | let aM = fromBase58String(i) | |
299 | + | let aV = aH(i) | |
300 | + | let X = parseIntValue(aV[I]) | |
301 | + | let Y = parseIntValue(aV[J]) | |
302 | + | let bm = parseIntValue(aV[K]) | |
303 | + | let w = aV[H] | |
304 | + | let bk = valueOrElse(getBoolean(E(w)), false) | |
305 | + | if (bk) | |
306 | + | then throw("operation is blocked") | |
307 | + | else { | |
308 | + | let aw = aT(w, aM, aO, X, Y)._1 | |
309 | + | let ae = fraction(ad, aw, Y) | |
310 | + | let bn = ah("G", w, j, toBase58String(T.transactionId)) | |
311 | + | let bo = aC("PENDING", ad, aw, ae, height, lastBlock.timestamp, (height + bm), 0) | |
312 | + | [Burn(aO, ad), StringEntry(bn, bo), aI(u(w), ad, ae), aI(v(w, j), ad, ae)] | |
313 | + | } | |
314 | + | } | |
315 | + | ||
316 | + | ||
317 | + | ||
318 | + | @Callable(T) | |
319 | + | func executeGetRequest (i,j,k) = { | |
320 | + | let aj = addressFromStringValue(j) | |
321 | + | let bp = aH(i) | |
322 | + | let aO = fromBase58String(bp[G]) | |
323 | + | let aM = fromBase58String(i) | |
324 | + | let w = bp[H] | |
325 | + | let bk = valueOrElse(getBoolean(E(w)), false) | |
326 | + | if (bk) | |
327 | + | then throw("operation is blocked") | |
328 | + | else { | |
329 | + | let bn = ah("G", w, j, k) | |
330 | + | let bq = split(e(bn), a) | |
331 | + | let au = bq[al] | |
332 | + | let aA = parseIntValue(bq[ar]) | |
333 | + | let br = parseIntValue(bq[am]) | |
334 | + | let bs = parseIntValue(bq[ao]) | |
335 | + | if ((au != "PENDING")) | |
336 | + | then h("Status is not PENDING", i, j, k) | |
337 | + | else if ((aA > height)) | |
338 | + | then h(((("EndHeight[" + toString(aA)) + "] > ") + toString(height)), i, j, k) | |
339 | + | else [ScriptTransfer(aj, bs, aM), StringEntry(bn, aD(bq, "FINISHED", lastBlock.timestamp)), aK(u(w), br, bs), aK(v(w, j), br, bs)] | |
340 | + | } | |
341 | + | } | |
342 | + | ||
343 | + | ||
344 | + | ||
345 | + | @Callable(T) | |
346 | + | func topUpBalance (i) = { | |
347 | + | let bp = aH(i) | |
348 | + | let bi = value(T.payments[0]) | |
349 | + | let bt = value(bi.assetId) | |
350 | + | let bu = toBase58String(bt) | |
351 | + | let aO = fromBase58String(bp[G]) | |
352 | + | let X = parseIntValue(bp[I]) | |
353 | + | let Y = parseIntValue(bp[J]) | |
354 | + | let w = bp[H] | |
355 | + | let bv = p(w, toString(T.caller)) | |
356 | + | let bw = valueOrElse(getInteger(this, bv), 0) | |
357 | + | let bk = valueOrElse(getBoolean(E(w)), false) | |
358 | + | if (bk) | |
359 | + | then throw("operation is blocked") | |
360 | + | else if ((i != bu)) | |
361 | + | then throw("attached payment's asset id is NOT matched passed baseAssetStr") | |
362 | + | else if ((size(T.payments) > 1)) | |
363 | + | then throw("only one payment can be attached") | |
364 | + | else if ((100 > (height - bw))) | |
365 | + | then throw("1 topUp per 100 blocks from the same address is allowed") | |
366 | + | else { | |
367 | + | let aw = aL(w, bt, bi.amount, aO, X, Y)._1 | |
368 | + | [IntegerEntry(n(w), aw), IntegerEntry(r(w, height, lastBlock.timestamp), aw), IntegerEntry(bv, height)] | |
369 | + | } | |
370 | + | } | |
371 | + | ||
372 | + | ||
373 | + | ||
374 | + | @Callable(T) | |
375 | + | func emit (bx,by) = { | |
376 | + | let bz = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), b("lp_staking_pools contract address is undefined"))), b("invalid lp_staking_pools contract address")) | |
377 | + | let bA = [if ((T.caller == bz)) | |
378 | + | then true | |
379 | + | else d("permission denied"), if ((by > 0)) | |
380 | + | then true | |
381 | + | else d("invalid amount to emit"), if ((getString(A(toBase58String(bx))) != unit)) | |
382 | + | then true | |
383 | + | else d("invalid assetId")] | |
384 | + | if ((bA == bA)) | |
385 | + | then { | |
386 | + | let bB = true | |
387 | + | $Tuple2([Reissue(bx, by, bB), ScriptTransfer(bz, by, bx)], by) | |
388 | + | } | |
389 | + | else throw("Strict value is not equal to itself.") | |
390 | + | } | |
391 | + | ||
392 | + | ||
393 | + | ||
394 | + | @Callable(T) | |
395 | + | func currentSysParamsREST (i) = { | |
396 | + | let bC = aU(i) | |
397 | + | let aw = bC._1.value | |
398 | + | let Y = bC._2.value | |
399 | + | let aQ = bC._3.value | |
400 | + | let aP = bC._4.value | |
401 | + | let aR = bC._5.value | |
402 | + | let aS = bC._6.value | |
403 | + | let bD = makeString(["startCurrentSysParamsREST", toString(aw), toString(Y), toString(aQ), toString(aP), toString(aR), toString(aS), "endCurrentSysParamsREST"], a) | |
404 | + | throw(bD) | |
405 | + | } | |
406 | + | ||
407 | + | ||
408 | + | ||
409 | + | @Callable(T) | |
410 | + | func setManager (bE) = { | |
411 | + | let bF = U(T) | |
412 | + | if ((bF == bF)) | |
413 | + | then { | |
414 | + | let bG = fromBase58String(bE) | |
415 | + | if ((bG == bG)) | |
416 | + | then [StringEntry(M(), bE)] | |
417 | + | else throw("Strict value is not equal to itself.") | |
418 | + | } | |
419 | + | else throw("Strict value is not equal to itself.") | |
420 | + | } | |
421 | + | ||
422 | + | ||
423 | + | ||
424 | + | @Callable(T) | |
425 | + | func confirmManager () = { | |
426 | + | let bH = Q() | |
427 | + | let bI = if (isDefined(bH)) | |
428 | + | then true | |
429 | + | else d("no pending manager") | |
430 | + | if ((bI == bI)) | |
431 | + | then { | |
432 | + | let bJ = if ((T.callerPublicKey == value(bH))) | |
433 | + | then true | |
434 | + | else d("you are not pending manager") | |
435 | + | if ((bJ == bJ)) | |
436 | + | then [StringEntry(L(), toBase58String(value(bH))), DeleteEntry(M())] | |
437 | + | else throw("Strict value is not equal to itself.") | |
438 | + | } | |
439 | + | else throw("Strict value is not equal to itself.") | |
440 | + | } | |
441 | + | ||
442 | + | ||
443 | + | @Verifier(bK) | |
444 | + | func bL () = { | |
445 | + | let bM = { | |
446 | + | let O = N() | |
447 | + | if ($isInstanceOf(O, "ByteVector")) | |
448 | + | then { | |
449 | + | let V = O | |
450 | + | V | |
451 | + | } | |
452 | + | else if ($isInstanceOf(O, "Unit")) | |
453 | + | then bK.senderPublicKey | |
454 | + | else throw("Match error") | |
455 | + | } | |
456 | + | sigVerify(bK.bodyBytes, bK.proofs[0], bM) | |
457 | + | } | |
458 | + |
github/deemru/w8io/026f985 40.77 ms ◑