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