tx · 4iY7mZU6sSjNeB9i1T7sCnCZNjbkgRaZhSDt4Xn1fTYN

3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ:  -0.01300000 Waves

2023.11.06 23:40 [3897798] smart account 3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ > SELF 0.00000000 Waves

{ "type": 13, "id": "4iY7mZU6sSjNeB9i1T7sCnCZNjbkgRaZhSDt4Xn1fTYN", "fee": 1300000, "feeAssetId": null, "timestamp": 1699303228499, "version": 2, "chainId": 87, "sender": "3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ", "senderPublicKey": "ECg19w7L36EZDu4zprurC23FPVeaKGnobnwzbZH2Dgyd", "proofs": [ "k8VcZPJrEJfFDqtDFtMzqaZZqTjDi6ujKknWYBbWaXdvrBDBVSGhXVDQw51HATDNNMheey3ypKBfMzikgciqrio" ], "script": "base64:BgIeCAISABIDCgEBEgMKAQESABIAEgMKAQgSABIDCgEBIgAEUEVURQEg4W4pTkHcHIXuYikIATFxVuov8OITyH3BrthKEwuN9tYAElBldGVTdGFraW5nQWRkcmVzcwkBB0FkZHJlc3MBARoBV2qxSTJN3QE8WlTs6Heuf4HE06AyMEj07QALU3dhcEFkZHJlc3MJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYAC1RlYW1BZGRyZXNzCQEHQWRkcmVzcwEBGgFXrGfSWrEBpqNP6e7xdRI8GkyCe3sRTGA6AAlzZXBhcmF0b3ICAV8ADFJPVU5EX0JMT0NLUwDgTgAMSkFDS1BPVF9QQVJUADwACVRFQU1fUEFSVAAeAApCRVRfQU1PVU5UAJCf2gMABFc0MjAAgKjWuQcAC3N1cHBsaWVkS2V5AgpwZXRlX3RvdGFsAApqYWNrcG90S2V5AgxwZXRlX2phY2twb3QADXBldGVJbkxvY2tLZXkCDHBldGVfaW5fbG9jawAQcGV0ZUluU3Rha2luZ0tleQIPcGV0ZV9pbl9zdGFraW5nAA5saWRlcnNUb3RhbEtleQIGbGlkZXJzAAx0b3RhbFNwaW5LZXkCCnNwaW5fdG90YWwACnRvcDNfYmxvY2sCCnRvcDNfYmxvY2sACnRvcDNfcm91bmQCCnRvcDNfcm91bmQBD2dldEN1cnJlbnRSb3VuZAAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFCnRvcDNfcm91bmQBEGdldExhc3RUb3AzQmxvY2sACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQp0b3AzX2Jsb2NrAQtnZXRDb3VudEtleQEKYWRkcmVzc1N0cgkArAICBQphZGRyZXNzU3RyAgRfY250ARBnZXRSb3VuZENvdW50S2V5AQphZGRyZXNzU3RyCQCsAgIJAKwCAgkArAICBQphZGRyZXNzU3RyAgNfcl8JAKQDAQkBD2dldEN1cnJlbnRSb3VuZAACBF9jbnQBEWdldFJvdW5kTGlkZXJzS2V5AAkArAICCQCsAgIFDmxpZGVyc1RvdGFsS2V5AgFfCQCkAwEJAQ9nZXRDdXJyZW50Um91bmQAAAVuVHhJZAAAAAduUmVzdWx0AAEAB25IZWlnaHQAAgAIbkFkZHJlc3MAAwEGcmV2ZWFsAgR0eGlkC3RhcmdldEJsb2NrAwkAZwIFBmhlaWdodAULdGFyZ2V0QmxvY2sEC3JldmVhbEJsb2NrCQEFdmFsdWUBCQDtBwEFC3RhcmdldEJsb2NrBAN2cmYJAQV2YWx1ZQEIBQtyZXZlYWxCbG9jawN2cmYEBnJldmVhbAkA9wMBCQDLAQIFA3ZyZgkAmwMBBQR0eGlkCQBqAgkAsQkBBQZyZXZlYWwACgD///////////8BARFjaGVja1dpbm5lckFtb3VudAEGcmVzdWx0AwkAAAIFBnJlc3VsdAIDNzc3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmphY2twb3RLZXkAAAMJAAACBQZyZXN1bHQCAzQyMAUEVzQyMAMJAAACBQZyZXN1bHQCAzEwMACAyrXuAQMJAAACBQZyZXN1bHQCAzExMQCAjI2eAgMJAAACBQZyZXN1bHQCAzIyMgCAzuTNAgMJAAACBQZyZXN1bHQCAzMzMwCAkLz9AgMJAAACBQZyZXN1bHQCAzQ0NACA0pOtAwMJAAACBQZyZXN1bHQCAzU1NQCAkLz9AgMJAAACBQZyZXN1bHQCAzg4OACAzuTNAgMJAAACBQZyZXN1bHQCAzk5OQCAjI2eAgMJAAACBQZyZXN1bHQCAzY2NgCAtcm9AgMJAAACBQZyZXN1bHQCAzEzNwDA2cjcAgAAAQpqc29uUmVzdWx0AQphZGRyZXNzU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQphZGRyZXNzU3RyAhR7InN0YXR1cyI6Im5vIGdhbWUifQQEZGF0YQkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUKYWRkcmVzc1N0cgkArAICAhh1bmFibGUgdG8gcmVhZCBkYXRhIGZvciAFCmFkZHJlc3NTdHIFCXNlcGFyYXRvcgQEdHhpZAkAkQMCBQRkYXRhBQVuVHhJZAQMY29tbWl0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOkHAQkA2QQBBQR0eGlkCQCsAgIFBHR4aWQCCiBub3QgZm91bmQEAnIxCQEGcmV2ZWFsAgUEdHhpZAkAZAIFDGNvbW1pdEhlaWdodAABBAJyMgkBBnJldmVhbAIFBHR4aWQJAGQCBQxjb21taXRIZWlnaHQAAgQCcjMJAQZyZXZlYWwCBQR0eGlkCQBkAgUMY29tbWl0SGVpZ2h0AAMEBnJlc3VsdAkArAICCQCsAgIJAKQDAQUCcjEJAKQDAQUCcjIJAKQDAQUCcjMEDHdpbm5lckFtb3VudAkBEWNoZWNrV2lubmVyQW1vdW50AQUGcmVzdWx0BARqc29uCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIBewITInN0YXR1cyI6ImluIGdhbWUiLAIBIgIFcHJpemUCASICAToJAKQDAQUMd2lubmVyQW1vdW50AgEsAgEiAgJyMQIBIgIBOgkApAMBBQJyMQIBLAIBIgICcjICASICAToJAKQDAQUCcjICASwCASICAnIzAgEiAgE6CQCkAwEFAnIzAgACAX0FBGpzb24BDWpzb25Ub3BHYW1lcnMABAZsaWRlcnMDCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQ5saWRlcnNUb3RhbEtleQkAvQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQ5saWRlcnNUb3RhbEtleQUJc2VwYXJhdG9yBQNuaWwKAQdmb2xkVG9wAgVhY2N1bQdhZGRyZXNzBANjbnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBC2dldENvdW50S2V5AQUHYWRkcmVzcwAACQDNCAIFBWFjY3VtCQCsAgIJAKwCAgkArAICAgEiBQdhZGRyZXNzAgIiOgkApAMBBQNjbnQEA3RvcAoAAiRsBQZsaWRlcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2ZvbGRUb3ACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAkArAICCQCsAgICAXsJALoJAgUDdG9wAgEsAgF9AQ1wcml2YXRlU3VwcGx5AQZhbW91bnQEBXRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC3N1cHBsaWVkS2V5AAAEB2phY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKamFja3BvdEtleQAABAhuZXdUb3RhbAkAZAIFBXRvdGFsCQBrAwUGYW1vdW50CQBlAgBkBQxKQUNLUE9UX1BBUlQAZAQKbmV3SmFja3BvdAkAZAIFB2phY2twb3QJAGsDBQZhbW91bnQFDEpBQ0tQT1RfUEFSVABkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtzdXBwbGllZEtleQUIbmV3VG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFCmphY2twb3RLZXkFCm5ld0phY2twb3QFA25pbAEScHJpdmF0ZUNoZWNrTGlkZXJzBAphZGRyZXNzU3RyCXNwaW5Db3VudApzTGlkZXJzS2V5CXNDb3VudEtleQQJbGlkZXJzU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCnNMaWRlcnNLZXkCAAQGbGlkZXJzAwkBAiE9AgUJbGlkZXJzU3RyAgAJAL0JAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUKc0xpZGVyc0tleQUJc2VwYXJhdG9yBQNuaWwEA2lkeAkAzwgCBQZsaWRlcnMFCmFkZHJlc3NTdHIEDmZpbHRlcmVkTGlkZXJzAwkBCWlzRGVmaW5lZAEFA2lkeAkA0QgCBQZsaWRlcnMJAQV2YWx1ZQEFA2lkeAUGbGlkZXJzBAhtaW5Db3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAJEDAgUOZmlsdGVyZWRMaWRlcnMJAGUCCQCQAwEFDmZpbHRlcmVkTGlkZXJzAAEFCXNDb3VudEtleQAABApsaWRlcnNTaXplCQCQAwEFDmZpbHRlcmVkTGlkZXJzCgEIZm9sZFNvcnQCBWFjY3VtB2FkZHJlc3MEA2NudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFB2FkZHJlc3MFCXNDb3VudEtleQAABAlhY2N1bVNpemUJAJADAQUFYWNjdW0DCQAAAgUJYWNjdW1TaXplAGQFBWFjY3VtAwkBCWlzRGVmaW5lZAEJAM8IAgUFYWNjdW0FCmFkZHJlc3NTdHIJAM0IAgUFYWNjdW0FB2FkZHJlc3MDCQBmAgUJc3BpbkNvdW50BQNjbnQDCQAAAgUJYWNjdW1TaXplAGMJAM0IAgUFYWNjdW0FCmFkZHJlc3NTdHIJAM0IAgkAzQgCBQVhY2N1bQUKYWRkcmVzc1N0cgUHYWRkcmVzcwkAzQgCBQVhY2N1bQUHYWRkcmVzcwQJbmV3TGlkZXJzAwkAAAIFCmxpZGVyc1NpemUAAAkAzAgCBQphZGRyZXNzU3RyBQNuaWwDAwkAZgIAZAUKbGlkZXJzU2l6ZQkAZwIFCG1pbkNvdW50BQlzcGluQ291bnQHCQDNCAIFDmZpbHRlcmVkTGlkZXJzBQphZGRyZXNzU3RyAwkAZwIFCG1pbkNvdW50BQlzcGluQ291bnQFDmZpbHRlcmVkTGlkZXJzBARsaXN0CgACJGwFDmZpbHRlcmVkTGlkZXJzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkU29ydAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQFBGxpc3QEDG5ld0xpZGVyc1N0cgkAuwkCBQluZXdMaWRlcnMFCXNlcGFyYXRvcgQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIFCnNMaWRlcnNLZXkFDG5ld0xpZGVyc1N0cgUDbmlsBQZyZXN1bHQBC3ByaXZhdGVTcGluAgphZGRyZXNzU3RyBHR4aWQEBmxvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1wZXRlSW5Mb2NrS2V5AAAEBXRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC3N1cHBsaWVkS2V5AAAECXRvdGFsU3BpbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQx0b3RhbFNwaW5LZXkAAAQMbmV3U3BpbkNvdW50CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELZ2V0Q291bnRLZXkBBQphZGRyZXNzU3RyAAAAAQQRbmV3U3BpblJvdW5kQ291bnQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARBnZXRSb3VuZENvdW50S2V5AQUKYWRkcmVzc1N0cgAAAAEDCQBmAgUEVzQyMAUFdG90YWwJAAIBAg1ubyBwZXRlIGluIHNjBANzdHIJALkJAgkAzAgCBQR0eGlkCQDMCAICA3h4eAkAzAgCCQCkAwEFBmhlaWdodAkAzAgCBQphZGRyZXNzU3RyBQNuaWwFCXNlcGFyYXRvcgQGbGlkZXJzCQEScHJpdmF0ZUNoZWNrTGlkZXJzBAUKYWRkcmVzc1N0cgUMbmV3U3BpbkNvdW50BQ5saWRlcnNUb3RhbEtleQkBC2dldENvdW50S2V5AQIABAtyb3VuZExpZGVycwkBEnByaXZhdGVDaGVja0xpZGVycwQFCmFkZHJlc3NTdHIFEW5ld1NwaW5Sb3VuZENvdW50CQERZ2V0Um91bmRMaWRlcnNLZXkACQEQZ2V0Um91bmRDb3VudEtleQECAAQDcmVzCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmFkZHJlc3NTdHIFA3N0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGV0ZUluTG9ja0tleQkAZAIFBmxvY2tlZAUEVzQyMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2dldENvdW50S2V5AQUKYWRkcmVzc1N0cgUMbmV3U3BpbkNvdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQZ2V0Um91bmRDb3VudEtleQEFCmFkZHJlc3NTdHIFEW5ld1NwaW5Sb3VuZENvdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQx0b3RhbFNwaW5LZXkJAGQCBQl0b3RhbFNwaW4AAQUDbmlsCQDOCAIJAM4IAgUGbGlkZXJzBQtyb3VuZExpZGVycwUDcmVzCAFpAQZzdXBwbHkAAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCXlvdSBjYW4ndAMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQRQRVRFBwQDaW52CQD8BwQFBHRoaXMCCXN0YWtlUGV0ZQkAzAgCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAQ1wcml2YXRlU3VwcGx5AQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtiYWQgcGF5bWVudAFpAQlzdGFrZVBldGUBCnBldGVBbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgl5b3UgY2FuJ3QEC3BldGVJblN0YWtlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEHBldGVJblN0YWtpbmdLZXkAAAQDaW52CQD8BwQFElBldGVTdGFraW5nQWRkcmVzcwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEUEVURQUKcGV0ZUFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBwZXRlSW5TdGFraW5nS2V5CQBkAgULcGV0ZUluU3Rha2UFCnBldGVBbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt1bnN0YWtlUGV0ZQEGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIJeW91IGNhbid0BAtwZXRlSW5TdGFrZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFEHBldGVJblN0YWtpbmdLZXkJAKwCAgUQcGV0ZUluU3Rha2luZ0tleQIKIG5vdCBmb3VuZAQDaW52CQD8BwQFElBldGVTdGFraW5nQWRkcmVzcwIHdW5zdGFrZQkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBwZXRlSW5TdGFraW5nS2V5CQBlAgULcGV0ZUluU3Rha2UFBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGNsYWltUGV0ZUZyb21TdGFraW5nAAMJAGYCCQBkAgkBEGdldExhc3RUb3AzQmxvY2sABQxST1VORF9CTE9DS1MFBmhlaWdodAkAAgECCXRvbyBlYXJseQQQcGV0ZUFtb3VudEJlZm9yZQkA8AcCBQR0aGlzBQRQRVRFAwkAAAIFEHBldGVBbW91bnRCZWZvcmUFEHBldGVBbW91bnRCZWZvcmUEA2ludgkA/AcEBRJQZXRlU3Rha2luZ0FkZHJlc3MCBWNsYWltBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQNcGV0ZUFtb3VudE5ldwkAZQIJAPAHAgUEdGhpcwUEUEVURQUQcGV0ZUFtb3VudEJlZm9yZQMJAAACBQ1wZXRlQW1vdW50TmV3BQ1wZXRlQW1vdW50TmV3AwkAZgIFDXBldGVBbW91bnROZXcAAAQGbGlkZXJzAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkBEWdldFJvdW5kTGlkZXJzS2V5AAkAvQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQERZ2V0Um91bmRMaWRlcnNLZXkABQlzZXBhcmF0b3IFA25pbAQKbGlkZXJzU2l6ZQkAkAMBBQZsaWRlcnMEAnAxAwkAZwIFCmxpZGVyc1NpemUAAQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELZ2V0Q291bnRLZXkBCQCRAwIFBmxpZGVycwAAAAAAAAQCcDIDCQBnAgUKbGlkZXJzU2l6ZQACCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtnZXRDb3VudEtleQEJAJEDAgUGbGlkZXJzAAEAAAAABAJwMwMJAGcCBQpsaWRlcnNTaXplAAMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBC2dldENvdW50S2V5AQkAkQMCBQZsaWRlcnMAAgAAAAAEA3AxdwMJAGcCBQpsaWRlcnNTaXplAAEJAJEDAgUGbGlkZXJzAAACCm5vIGFkZHJlc3MEA3AydwMJAGcCBQpsaWRlcnNTaXplAAIJAJEDAgUGbGlkZXJzAAECCm5vIGFkZHJlc3MEA3AzdwMJAGcCBQpsaWRlcnNTaXplAAMJAJEDAgUGbGlkZXJzAAICCm5vIGFkZHJlc3MECnRvdGFsQ291bnQJAGQCCQBkAgUCcDEFAnAyBQJwMwQCcjMDCQBmAgUCcDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQNwM3cJAGsDBQ1wZXRlQW1vdW50TmV3BQJwMwUKdG90YWxDb3VudAUEUEVURQUDbmlsBQNuaWwEAnIyAwkAZgIFAnAyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUDcDJ3CQBrAwUNcGV0ZUFtb3VudE5ldwUCcDIFCnRvdGFsQ291bnQFBFBFVEUFA25pbAUDbmlsBAJyMQMJAGYCBQJwMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFA3AxdwkAawMFDXBldGVBbW91bnROZXcFAnAxBQp0b3RhbENvdW50BQRQRVRFBQNuaWwFA25pbAkAzggCCQDOCAIJAM4IAgUCcjEFAnIyBQJyMwkAzAgCCQEMSW50ZWdlckVudHJ5AgUKdG9wM19ibG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQp0b3AzX3JvdW5kCQBkAgkBD2dldEN1cnJlbnRSb3VuZAAAAQUDbmlsCQACAQIRbm90aGluZyBhdmFpbGFibGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEc3BpbgADAwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQHCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCkJFVF9BTU9VTlQHBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQEdHhpZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUHYWRkcmVzcwQDaW52CQD8BwQFBHRoaXMCBnJlc3VsdAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkBC3ByaXZhdGVTcGluAgUHYWRkcmVzcwUEdHhpZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBC3ByaXZhdGVTcGluAgUHYWRkcmVzcwUEdHhpZAkAAgECC2JhZCBwYXltZW50AWkBBnJlc3VsdAEKYWRkcmVzc1N0cgQEZGF0YQkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUKYWRkcmVzc1N0cgkArAICAhh1bmFibGUgdG8gcmVhZCBkYXRhIGZvciAFCmFkZHJlc3NTdHIFCXNlcGFyYXRvcgQEdHhpZAkAkQMCBQRkYXRhBQVuVHhJZAQLc3RhcnRIZWlnaHQJAJEDAgUEZGF0YQUHbkhlaWdodAQMY29tbWl0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOkHAQkA2QQBBQR0eGlkCQCsAgIFBHR4aWQCCiBub3QgZm91bmQDCQBmAgkAZAIFDGNvbW1pdEhlaWdodAADBQZoZWlnaHQJAAIBCQCsAgIJAKwCAgIFd2FpdCAJAKQDAQkAZQIJAGQCBQxjb21taXRIZWlnaHQAAwUGaGVpZ2h0AhsgYmxvY2tzIHRvIHJldmVhbCB0aGlzIHR4aWQEAnIxCQEGcmV2ZWFsAgUEdHhpZAkAZAIFDGNvbW1pdEhlaWdodAABBAJyMgkBBnJldmVhbAIFBHR4aWQJAGQCBQxjb21taXRIZWlnaHQAAgQCcjMJAQZyZXZlYWwCBQR0eGlkCQBkAgUMY29tbWl0SGVpZ2h0AAMEBnJlc3VsdAkArAICCQCsAgIJAKQDAQUCcjEJAKQDAQUCcjIJAKQDAQUCcjMEDHdpbm5lckFtb3VudAkBEWNoZWNrV2lubmVyQW1vdW50AQUGcmVzdWx0BANzdHIJALkJAgkAzAgCBQR0eGlkCQDMCAIFBnJlc3VsdAkAzAgCBQtzdGFydEhlaWdodAkAzAgCBQphZGRyZXNzU3RyBQNuaWwFCXNlcGFyYXRvcgQGbG9ja2VkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUNcGV0ZUluTG9ja0tleQIVdW5hYmxlIHRvIHJlYWQgbG9ja2VkAwkAZgIFDHdpbm5lckFtb3VudAAABAFrCQCsAgICAnJfBQZyZXN1bHQEC3Jlc3VsdENvdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsAAAQDaW52CQD8BwQFBHRoaXMCC3Vuc3Rha2VQZXRlCQDMCAIFDHdpbm5lckFtb3VudAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYEBXRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC3N1cHBsaWVkS2V5AAAEA2tleQMJAAACBQZyZXN1bHQCAzc3NwUKamFja3BvdEtleQULc3VwcGxpZWRLZXkEA3ZhbAMJAAACBQZyZXN1bHQCAzc3NwAACQBlAgUFdG90YWwFDHdpbm5lckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGV0ZUluTG9ja0tleQkAZQIFBmxvY2tlZAUEVzQyMAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQN2YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsJAGQCBQtyZXN1bHRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIFBHR4aWQFA3N0cgkAzAgCCQELRGVsZXRlRW50cnkBBQphZGRyZXNzU3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmFkZHJlc3NTdHIFDHdpbm5lckFtb3VudAUEUEVURQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwMDCQAAAgUCcjEFAnIzBgkAAAIFAnIxBQJyMgYJAAACBQJyMgUCcjMEAWsCCHJfcmVmdW5kBAtyZXN1bHRDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBldGVJbkxvY2tLZXkJAGUCBQZsb2NrZWQFBFc0MjAJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsJAGQCBQtyZXN1bHRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIFBHR4aWQFA3N0cgkAzAgCCQELRGVsZXRlRW50cnkBBQphZGRyZXNzU3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmFkZHJlc3NTdHIFCkJFVF9BTU9VTlQFBHVuaXQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGV0ZUluTG9ja0tleQkAZQIFBmxvY2tlZAUEVzQyMAkAzAgCCQELU3RyaW5nRW50cnkCBQR0eGlkBQNzdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUKYWRkcmVzc1N0cgUDbmlsAWkBBnRvUGV0ZQAEC3dhdmVzQW1vdW50CQBlAggJAO8HAQUEdGhpcwdyZWd1bGFyAICt4gQDCQBmAgCAwtcvBQt3YXZlc0Ftb3VudAkAAgECEmJhbGFuY2UgaXMgdG9vIGxvdwQPdGVhbVdhdmVzQW1vdW50CQBrAwULd2F2ZXNBbW91bnQFCVRFQU1fUEFSVABkBA9zd2FwV2F2ZXNBbW91bnQJAGUCCQBlAgULd2F2ZXNBbW91bnQFD3RlYW1XYXZlc0Ftb3VudACA2sQJBARzd2FwCQD8BwQFC1N3YXBBZGRyZXNzAgRzd2FwCQDMCAIAAQkAzAgCCQDYBAEFBFBFVEUJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFD3N3YXBXYXZlc0Ftb3VudAUDbmlsAwkAAAIFBHN3YXAFBHN3YXAEDXBldGVBbW91bnROZXcJAPAHAgUEdGhpcwUEUEVURQMJAAACBQ1wZXRlQW1vdW50TmV3BQ1wZXRlQW1vdW50TmV3BAZzdXBwbHkJAQ1wcml2YXRlU3VwcGx5AQUNcGV0ZUFtb3VudE5ldwQDaW52CQD8BwQFBHRoaXMCCXN0YWtlUGV0ZQkAzAgCBQ1wZXRlQW1vdW50TmV3BQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC1RlYW1BZGRyZXNzBQ90ZWFtV2F2ZXNBbW91bnQFBHVuaXQFA25pbAUGc3VwcGx5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXJlYmFsYW5jZQEGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIJeW91IGNhbid0BAV0b3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtzdXBwbGllZEtleQAABAdqYWNrcG90CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmphY2twb3RLZXkAAAMJAGcCBQZhbW91bnQFBXRvdGFsCQACAQIKYmFkIGFtb3VudAQIbmV3VG90YWwJAGUCBQV0b3RhbAUGYW1vdW50BApuZXdKYWNrcG90CQBkAgUHamFja3BvdAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtzdXBwbGllZEtleQUIbmV3VG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFCmphY2twb3RLZXkFCm5ld0phY2twb3QFA25pbAD0RxKR", "height": 3897798, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5DZokhL19TyZTLczjxrG36WpCNF4HCYocjsvSFcq27HP Next: 5k2Ao6aHux2ufL5hs826Moc9KojKQiUKsb7h1DvCAMjs Diff:
OldNewDifferences
216216 else {
217217 let str = makeString([txid, "xxx", toString(height), addressStr], separator)
218218 let liders = privateCheckLiders(addressStr, newSpinCount, lidersTotalKey, getCountKey(""))
219- let roundLiders = privateCheckLiders(addressStr, newSpinCount, getRoundLidersKey(), getRoundCountKey(""))
219+ let roundLiders = privateCheckLiders(addressStr, newSpinRoundCount, getRoundLidersKey(), getRoundCountKey(""))
220220 let res = [StringEntry(addressStr, str), IntegerEntry(peteInLockKey, (locked + W420)), IntegerEntry(getCountKey(addressStr), newSpinCount), IntegerEntry(getRoundCountKey(addressStr), newSpinRoundCount), IntegerEntry(totalSpinKey, (totalSpin + 1))]
221221 ((liders ++ roundLiders) ++ res)
222222 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let PETE = base58'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq'
55
66 let PeteStakingAddress = Address(base58'3PBf2jd3ZEPX7NHQvVarscTjLQ8bk43uAfn')
77
88 let SwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
99
1010 let TeamAddress = Address(base58'3PHeVKu6hS24p2LX7AdtHnZnpyuC8Q7q2MF')
1111
1212 let separator = "_"
1313
1414 let ROUND_BLOCKS = 10080
1515
1616 let JACKPOT_PART = 60
1717
1818 let TEAM_PART = 30
1919
2020 let BET_AMOUNT = 7770000
2121
2222 let W420 = 2000000000
2323
2424 let suppliedKey = "pete_total"
2525
2626 let jackpotKey = "pete_jackpot"
2727
2828 let peteInLockKey = "pete_in_lock"
2929
3030 let peteInStakingKey = "pete_in_staking"
3131
3232 let lidersTotalKey = "liders"
3333
3434 let totalSpinKey = "spin_total"
3535
3636 let top3_block = "top3_block"
3737
3838 let top3_round = "top3_round"
3939
4040 func getCurrentRound () = getIntegerValue(this, top3_round)
4141
4242
4343 func getLastTop3Block () = getIntegerValue(this, top3_block)
4444
4545
4646 func getCountKey (addressStr) = (addressStr + "_cnt")
4747
4848
4949 func getRoundCountKey (addressStr) = (((addressStr + "_r_") + toString(getCurrentRound())) + "_cnt")
5050
5151
5252 func getRoundLidersKey () = ((lidersTotalKey + "_") + toString(getCurrentRound()))
5353
5454
5555 let nTxId = 0
5656
5757 let nResult = 1
5858
5959 let nHeight = 2
6060
6161 let nAddress = 3
6262
6363 func reveal (txid,targetBlock) = if ((height >= targetBlock))
6464 then {
6565 let revealBlock = value(blockInfoByHeight(targetBlock))
6666 let vrf = value(revealBlock.vrf)
6767 let reveal = sha256((vrf + toBytes(txid)))
6868 (toInt(reveal) % 10)
6969 }
7070 else -1
7171
7272
7373 func checkWinnerAmount (result) = if ((result == "777"))
7474 then valueOrElse(getInteger(this, jackpotKey), 0)
7575 else if ((result == "420"))
7676 then W420
7777 else if ((result == "100"))
7878 then 500000000
7979 else if ((result == "111"))
8080 then 600000000
8181 else if ((result == "222"))
8282 then 700000000
8383 else if ((result == "333"))
8484 then 800000000
8585 else if ((result == "444"))
8686 then 900000000
8787 else if ((result == "555"))
8888 then 800000000
8989 else if ((result == "888"))
9090 then 700000000
9191 else if ((result == "999"))
9292 then 600000000
9393 else if ((result == "666"))
9494 then 666000000
9595 else if ((result == "137"))
9696 then 731000000
9797 else 0
9898
9999
100100 func jsonResult (addressStr) = if (!(isDefined(getString(this, addressStr))))
101101 then "{\"status\":\"no game\"}"
102102 else {
103103 let data = split(valueOrErrorMessage(getString(this, addressStr), ("unable to read data for " + addressStr)), separator)
104104 let txid = data[nTxId]
105105 let commitHeight = valueOrErrorMessage(transactionHeightById(fromBase58String(txid)), (txid + " not found"))
106106 let r1 = reveal(txid, (commitHeight + 1))
107107 let r2 = reveal(txid, (commitHeight + 2))
108108 let r3 = reveal(txid, (commitHeight + 3))
109109 let result = ((toString(r1) + toString(r2)) + toString(r3))
110110 let winnerAmount = checkWinnerAmount(result)
111111 let json = (((((((((((((((((((((((((("{" + "\"status\":\"in game\",") + "\"") + "prize") + "\"") + ":") + toString(winnerAmount)) + ",") + "\"") + "r1") + "\"") + ":") + toString(r1)) + ",") + "\"") + "r2") + "\"") + ":") + toString(r2)) + ",") + "\"") + "r3") + "\"") + ":") + toString(r3)) + "") + "}")
112112 json
113113 }
114114
115115
116116 func jsonTopGamers () = {
117117 let liders = if (isDefined(getString(this, lidersTotalKey)))
118118 then split_51C(getStringValue(this, lidersTotalKey), separator)
119119 else nil
120120 func foldTop (accum,address) = {
121121 let cnt = valueOrElse(getInteger(this, getCountKey(address)), 0)
122122 (accum :+ ((("\"" + address) + "\":") + toString(cnt)))
123123 }
124124
125125 let top = {
126126 let $l = liders
127127 let $s = size($l)
128128 let $acc0 = nil
129129 func $f0_1 ($a,$i) = if (($i >= $s))
130130 then $a
131131 else foldTop($a, $l[$i])
132132
133133 func $f0_2 ($a,$i) = if (($i >= $s))
134134 then $a
135135 else throw("List size exceeds 20")
136136
137137 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
138138 }
139139 (("{" + makeString_2C(top, ",")) + "}")
140140 }
141141
142142
143143 func privateSupply (amount) = {
144144 let total = valueOrElse(getInteger(this, suppliedKey), 0)
145145 let jackpot = valueOrElse(getInteger(this, jackpotKey), 0)
146146 let newTotal = (total + fraction(amount, (100 - JACKPOT_PART), 100))
147147 let newJackpot = (jackpot + fraction(amount, JACKPOT_PART, 100))
148148 [IntegerEntry(suppliedKey, newTotal), IntegerEntry(jackpotKey, newJackpot)]
149149 }
150150
151151
152152 func privateCheckLiders (addressStr,spinCount,sLidersKey,sCountKey) = {
153153 let lidersStr = valueOrElse(getString(this, sLidersKey), "")
154154 let liders = if ((lidersStr != ""))
155155 then split_51C(getStringValue(this, sLidersKey), separator)
156156 else nil
157157 let idx = indexOf(liders, addressStr)
158158 let filteredLiders = if (isDefined(idx))
159159 then removeByIndex(liders, value(idx))
160160 else liders
161161 let minCount = valueOrElse(getInteger(this, (filteredLiders[(size(filteredLiders) - 1)] + sCountKey)), 0)
162162 let lidersSize = size(filteredLiders)
163163 func foldSort (accum,address) = {
164164 let cnt = valueOrElse(getInteger(this, (address + sCountKey)), 0)
165165 let accumSize = size(accum)
166166 if ((accumSize == 100))
167167 then accum
168168 else if (isDefined(indexOf(accum, addressStr)))
169169 then (accum :+ address)
170170 else if ((spinCount > cnt))
171171 then if ((accumSize == 99))
172172 then (accum :+ addressStr)
173173 else ((accum :+ addressStr) :+ address)
174174 else (accum :+ address)
175175 }
176176
177177 let newLiders = if ((lidersSize == 0))
178178 then [addressStr]
179179 else if (if ((100 > lidersSize))
180180 then (minCount >= spinCount)
181181 else false)
182182 then (filteredLiders :+ addressStr)
183183 else if ((minCount >= spinCount))
184184 then filteredLiders
185185 else {
186186 let list = {
187187 let $l = filteredLiders
188188 let $s = size($l)
189189 let $acc0 = nil
190190 func $f0_1 ($a,$i) = if (($i >= $s))
191191 then $a
192192 else foldSort($a, $l[$i])
193193
194194 func $f0_2 ($a,$i) = if (($i >= $s))
195195 then $a
196196 else throw("List size exceeds 100")
197197
198198 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
199199 }
200200 list
201201 }
202202 let newLidersStr = makeString_11C(newLiders, separator)
203203 let result = [StringEntry(sLidersKey, newLidersStr)]
204204 result
205205 }
206206
207207
208208 func privateSpin (addressStr,txid) = {
209209 let locked = valueOrElse(getInteger(this, peteInLockKey), 0)
210210 let total = valueOrElse(getInteger(this, suppliedKey), 0)
211211 let totalSpin = valueOrElse(getInteger(this, totalSpinKey), 0)
212212 let newSpinCount = (valueOrElse(getInteger(this, getCountKey(addressStr)), 0) + 1)
213213 let newSpinRoundCount = (valueOrElse(getInteger(this, getRoundCountKey(addressStr)), 0) + 1)
214214 if ((W420 > total))
215215 then throw("no pete in sc")
216216 else {
217217 let str = makeString([txid, "xxx", toString(height), addressStr], separator)
218218 let liders = privateCheckLiders(addressStr, newSpinCount, lidersTotalKey, getCountKey(""))
219- let roundLiders = privateCheckLiders(addressStr, newSpinCount, getRoundLidersKey(), getRoundCountKey(""))
219+ let roundLiders = privateCheckLiders(addressStr, newSpinRoundCount, getRoundLidersKey(), getRoundCountKey(""))
220220 let res = [StringEntry(addressStr, str), IntegerEntry(peteInLockKey, (locked + W420)), IntegerEntry(getCountKey(addressStr), newSpinCount), IntegerEntry(getRoundCountKey(addressStr), newSpinRoundCount), IntegerEntry(totalSpinKey, (totalSpin + 1))]
221221 ((liders ++ roundLiders) ++ res)
222222 }
223223 }
224224
225225
226226 @Callable(i)
227227 func supply () = if ((i.caller == this))
228228 then throw("you can't")
229229 else if (if ((size(i.payments) == 1))
230230 then (i.payments[0].assetId == PETE)
231231 else false)
232232 then {
233233 let inv = invoke(this, "stakePete", [i.payments[0].amount], nil)
234234 if ((inv == inv))
235235 then privateSupply(i.payments[0].amount)
236236 else throw("Strict value is not equal to itself.")
237237 }
238238 else throw("bad payment")
239239
240240
241241
242242 @Callable(i)
243243 func stakePete (peteAmount) = if ((i.caller != this))
244244 then throw("you can't")
245245 else {
246246 let peteInStake = valueOrElse(getInteger(this, peteInStakingKey), 0)
247247 let inv = invoke(PeteStakingAddress, "stake", nil, [AttachedPayment(PETE, peteAmount)])
248248 if ((inv == inv))
249249 then [IntegerEntry(peteInStakingKey, (peteInStake + peteAmount))]
250250 else throw("Strict value is not equal to itself.")
251251 }
252252
253253
254254
255255 @Callable(i)
256256 func unstakePete (amount) = if ((i.caller != this))
257257 then throw("you can't")
258258 else {
259259 let peteInStake = valueOrErrorMessage(getInteger(this, peteInStakingKey), (peteInStakingKey + " not found"))
260260 let inv = invoke(PeteStakingAddress, "unstake", [amount], nil)
261261 if ((inv == inv))
262262 then [IntegerEntry(peteInStakingKey, (peteInStake - amount))]
263263 else throw("Strict value is not equal to itself.")
264264 }
265265
266266
267267
268268 @Callable(i)
269269 func claimPeteFromStaking () = if (((getLastTop3Block() + ROUND_BLOCKS) > height))
270270 then throw("too early")
271271 else {
272272 let peteAmountBefore = assetBalance(this, PETE)
273273 if ((peteAmountBefore == peteAmountBefore))
274274 then {
275275 let inv = invoke(PeteStakingAddress, "claim", nil, nil)
276276 if ((inv == inv))
277277 then {
278278 let peteAmountNew = (assetBalance(this, PETE) - peteAmountBefore)
279279 if ((peteAmountNew == peteAmountNew))
280280 then if ((peteAmountNew > 0))
281281 then {
282282 let liders = if (isDefined(getString(this, getRoundLidersKey())))
283283 then split_51C(getStringValue(this, getRoundLidersKey()), separator)
284284 else nil
285285 let lidersSize = size(liders)
286286 let p1 = if ((lidersSize >= 1))
287287 then valueOrElse(getInteger(this, getCountKey(liders[0])), 0)
288288 else 0
289289 let p2 = if ((lidersSize >= 2))
290290 then valueOrElse(getInteger(this, getCountKey(liders[1])), 0)
291291 else 0
292292 let p3 = if ((lidersSize >= 3))
293293 then valueOrElse(getInteger(this, getCountKey(liders[2])), 0)
294294 else 0
295295 let p1w = if ((lidersSize >= 1))
296296 then liders[0]
297297 else "no address"
298298 let p2w = if ((lidersSize >= 2))
299299 then liders[1]
300300 else "no address"
301301 let p3w = if ((lidersSize >= 3))
302302 then liders[2]
303303 else "no address"
304304 let totalCount = ((p1 + p2) + p3)
305305 let r3 = if ((p3 > 0))
306306 then [ScriptTransfer(addressFromStringValue(p3w), fraction(peteAmountNew, p3, totalCount), PETE)]
307307 else nil
308308 let r2 = if ((p2 > 0))
309309 then [ScriptTransfer(addressFromStringValue(p2w), fraction(peteAmountNew, p2, totalCount), PETE)]
310310 else nil
311311 let r1 = if ((p1 > 0))
312312 then [ScriptTransfer(addressFromStringValue(p1w), fraction(peteAmountNew, p1, totalCount), PETE)]
313313 else nil
314314 (((r1 ++ r2) ++ r3) ++ [IntegerEntry(top3_block, height), IntegerEntry(top3_round, (getCurrentRound() + 1))])
315315 }
316316 else throw("nothing available")
317317 else throw("Strict value is not equal to itself.")
318318 }
319319 else throw("Strict value is not equal to itself.")
320320 }
321321 else throw("Strict value is not equal to itself.")
322322 }
323323
324324
325325
326326 @Callable(i)
327327 func spin () = if (if (if ((size(i.payments) == 1))
328328 then (i.payments[0].assetId == unit)
329329 else false)
330330 then (i.payments[0].amount == BET_AMOUNT)
331331 else false)
332332 then {
333333 let address = toString(i.caller)
334334 let txid = toBase58String(i.transactionId)
335335 if (isDefined(getString(this, address)))
336336 then {
337337 let inv = invoke(this, "result", [address], nil)
338338 if ((inv == inv))
339339 then privateSpin(address, txid)
340340 else throw("Strict value is not equal to itself.")
341341 }
342342 else privateSpin(address, txid)
343343 }
344344 else throw("bad payment")
345345
346346
347347
348348 @Callable(i)
349349 func result (addressStr) = {
350350 let data = split(valueOrErrorMessage(getString(this, addressStr), ("unable to read data for " + addressStr)), separator)
351351 let txid = data[nTxId]
352352 let startHeight = data[nHeight]
353353 let commitHeight = valueOrErrorMessage(transactionHeightById(fromBase58String(txid)), (txid + " not found"))
354354 if (((commitHeight + 3) > height))
355355 then throw((("wait " + toString(((commitHeight + 3) - height))) + " blocks to reveal this txid"))
356356 else {
357357 let r1 = reveal(txid, (commitHeight + 1))
358358 let r2 = reveal(txid, (commitHeight + 2))
359359 let r3 = reveal(txid, (commitHeight + 3))
360360 let result = ((toString(r1) + toString(r2)) + toString(r3))
361361 let winnerAmount = checkWinnerAmount(result)
362362 let str = makeString([txid, result, startHeight, addressStr], separator)
363363 let locked = valueOrErrorMessage(getInteger(this, peteInLockKey), "unable to read locked")
364364 if ((winnerAmount > 0))
365365 then {
366366 let k = ("r_" + result)
367367 let resultCount = valueOrElse(getInteger(this, k), 0)
368368 let inv = invoke(this, "unstakePete", [winnerAmount], nil)
369369 if ((inv == inv))
370370 then {
371371 let total = valueOrElse(getInteger(this, suppliedKey), 0)
372372 let key = if ((result == "777"))
373373 then jackpotKey
374374 else suppliedKey
375375 let val = if ((result == "777"))
376376 then 0
377377 else (total - winnerAmount)
378378 [IntegerEntry(peteInLockKey, (locked - W420)), IntegerEntry(key, val), IntegerEntry(k, (resultCount + 1)), StringEntry(txid, str), DeleteEntry(addressStr), ScriptTransfer(addressFromStringValue(addressStr), winnerAmount, PETE)]
379379 }
380380 else throw("Strict value is not equal to itself.")
381381 }
382382 else if (if (if ((r1 == r3))
383383 then true
384384 else (r1 == r2))
385385 then true
386386 else (r2 == r3))
387387 then {
388388 let k = "r_refund"
389389 let resultCount = valueOrElse(getInteger(this, k), 0)
390390 [IntegerEntry(peteInLockKey, (locked - W420)), IntegerEntry(k, (resultCount + 1)), StringEntry(txid, str), DeleteEntry(addressStr), ScriptTransfer(addressFromStringValue(addressStr), BET_AMOUNT, unit)]
391391 }
392392 else [IntegerEntry(peteInLockKey, (locked - W420)), StringEntry(txid, str), DeleteEntry(addressStr)]
393393 }
394394 }
395395
396396
397397
398398 @Callable(i)
399399 func toPete () = {
400400 let wavesAmount = (wavesBalance(this).regular - 10000000)
401401 if ((100000000 > wavesAmount))
402402 then throw("balance is too low")
403403 else {
404404 let teamWavesAmount = fraction(wavesAmount, TEAM_PART, 100)
405405 let swapWavesAmount = ((wavesAmount - teamWavesAmount) - 20000000)
406406 let swap = invoke(SwapAddress, "swap", [1, toBase58String(PETE), toString(this)], [AttachedPayment(unit, swapWavesAmount)])
407407 if ((swap == swap))
408408 then {
409409 let peteAmountNew = assetBalance(this, PETE)
410410 if ((peteAmountNew == peteAmountNew))
411411 then {
412412 let supply = privateSupply(peteAmountNew)
413413 let inv = invoke(this, "stakePete", [peteAmountNew], nil)
414414 if ((inv == inv))
415415 then ([ScriptTransfer(TeamAddress, teamWavesAmount, unit)] ++ supply)
416416 else throw("Strict value is not equal to itself.")
417417 }
418418 else throw("Strict value is not equal to itself.")
419419 }
420420 else throw("Strict value is not equal to itself.")
421421 }
422422 }
423423
424424
425425
426426 @Callable(i)
427427 func rebalance (amount) = if ((i.caller != this))
428428 then throw("you can't")
429429 else {
430430 let total = valueOrElse(getInteger(this, suppliedKey), 0)
431431 let jackpot = valueOrElse(getInteger(this, jackpotKey), 0)
432432 if ((amount >= total))
433433 then throw("bad amount")
434434 else {
435435 let newTotal = (total - amount)
436436 let newJackpot = (jackpot + amount)
437437 [IntegerEntry(suppliedKey, newTotal), IntegerEntry(jackpotKey, newJackpot)]
438438 }
439439 }
440440
441441

github/deemru/w8io/6500d08 
69.14 ms