tx · 3mG3VAiCy8G4PSDEeY9BENCMwDs4an2cMfP1QdA59f5R 3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh: -0.01000000 Waves 2021.02.14 20:51 [1398148] smart account 3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh > SELF 0.00000000 Waves
{ "type": 13, "id": "3mG3VAiCy8G4PSDEeY9BENCMwDs4an2cMfP1QdA59f5R", "fee": 1000000, "feeAssetId": null, "timestamp": 1613325101806, "version": 2, "chainId": 84, "sender": "3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh", "senderPublicKey": "BjjwtwUgZ4s8p9HJuFwyRMR3egd3zMAHGDV2HoZ1J7ho", "proofs": [ "kpUuzU7UL4NpJv3B354zPJG67PnMXdpG22fShwMoiFi3H97gQRqRvaczRtp1VmuDpp92nv2oBh8Y6AXQR5542Ry" ], "script": "base64:AAIDAAAAAAAAABEIARIAEgYKBAgCAgISAwoBCAAAAB4AAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsQmpqd3R3VWdaNHM4cDlISnVGd3lSTVIzZWdkM3pNQUhHRFYySG9aMUo3aG8AAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsODVXUnluRjRjd0h1cm1KaFlTNGJhV3VTQ3UxRDJNc3Y4aTM3ZzhzOERQRk4AAAAADXJzYVB1YmxpY0tleTEJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT2tpdXovQlY0RWpveEdoVG1OQ2J0MlRna2JTUEgvdzY5YjNGMXJLbUQ2MUppUFh2dkY4TDJwSTl4T1ljVzRGbW9FWlZIbFJRdEFsYUp5a2wzK3JzckVDQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTIJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBSm5YemJNL1Yyc0RWMVVMYlBTT2xIa2xkT1RXUnJIaTVmeElrQm11ZXZyQ2xNUFZIN3JxY2N3aXJETmNNZElkd1hISTlBZGhqOUZXandHSXdmVS9LNk1DQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTMJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT1JEZXZ5MHI0a3pMcU95U2xvQjYzSHV2MmU0emVIS0hqQ3N5NXZ0RkttV1piWEphOGdaWXQ0K0VrbEZJbzFLOW9xdTVCQVBWZkozRk96czJVMUErZzBDQXdFQUFRPT0AAAAABWRydW0xCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAUAAAADbmlsAAAAAAVkcnVtMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcFAAAAA25pbAAAAAAFZHJ1bTMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE2BQAAAANuaWwAAAAACHN0YXRlQWNjAgAAAAhBY2NlcHRlZAAAAAAIc3RhdGVXaW4CAAAAA1dpbgAAAAAJc3RhdGVMb3NlAgAAAARMb3NlAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91dAAAAAAHd2F2ZXNJZAUAAAAEdW5pdAAAAAALd2F2ZXNNaW5BbXQAAAAAAAX14QAAAAAAC3dhdmVzTWF4QW10CQAAaAAAAAIFAAAAC3dhdmVzTWluQW10AAAAAAAAAAAKAAAAAApjb21taXNzaW9uAAAAAAAAB6EgAAAAAA1nYW1lVGltZUZyYW1lAAAAAAAAAAtAAQAAAAtwbXRBbXRDaGVjawAAAAIAAAAKcG10QXNzZXRJZAAAAAliZXRBbW91bnQDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQCAAAABVdBVkVTAwMJAABnAAAAAgUAAAAJYmV0QW1vdW50BQAAAAt3YXZlc01pbkFtdAkAAGcAAAACBQAAAAt3YXZlc01heEFtdAUAAAAJYmV0QW1vdW50BwYJAAACAAAAAQIAAAAaQmV0IGFtb3VudCBpcyBub3QgaW4gcmFuZ2UJAAACAAAAAQIAAAAdUGF5bWVudCBBc3NldCBJRCBpcyBub3QgdmFsaWQBAAAAC2dldERhdGFMaXN0AAAAAQAAAAZnYW1lSWQEAAAADWdldERhdGFTdHJpbmcJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAZnYW1lSWQCAAAAB19HYW1lSWQEAAAAAWEEAAAAByRtYXRjaDAFAAAADWdldERhdGFTdHJpbmcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAABRHYW1lSWQgd2FzIG5vdCBmb3VuZAkABLUAAAACBQAAAAFhAgAAAAFfAQAAAAhyc2FUb0ludAAAAAMAAAAGZ2FtZUlkAAAAB3JzYVNpZ24AAAAMcnNhUHVibGljS2V5BAAAAAhyc2FDaGVjawkAAfgAAAAEBQAAAAZTSEEyNTYJAAGbAAAAAQUAAAAGZ2FtZUlkBQAAAAdyc2FTaWduBQAAAAxyc2FQdWJsaWNLZXkDBQAAAAhyc2FDaGVjawkAAGoAAAACCQAEsQAAAAEJAAH3AAAAAQUAAAAHcnNhU2lnbgAAAAAAAAAAEwkAAAIAAAABAgAAABVJbnZhbGlkIFJTQSBTaWduYXR1cmUBAAAAF2luY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAwAAAAZwbXRBbXQAAAAMcG10QXNzZXROYW1lAAAACWFzc2V0SWQ1OAQAAAAWY3VycmVudFJlc2VydmVkQmFsYW5jZQQAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAxwbXRBc3NldE5hbWUCAAAACV9SZXNlcnZlZAQAAAAHJG1hdGNoMAUAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlCQAAZAAAAAIFAAAAFmN1cnJlbnRSZXNlcnZlZEJhbGFuY2UJAABoAAAAAgUAAAAGcG10QW10AAAAAAAAAAEEAwkAAGcAAAACCQAD6wAAAAIFAAAABHRoaXMFAAAACWFzc2V0SWQ1OAUAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlBQAAABJuZXdSZXNlcnZlZEJhbGFuY2UJAAACAAAAAQIAAAA1QmV0IHdhcyByZWplY3RlZC4gSW5zdWZmaWNpZW50IGZ1bmRzIG9uIGdhbWUgYWNjb3VudC4BAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAgAAAAZiZXRBbXQAAAAHYXNzZXRJZAQAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAdhc3NldElkAgAAAAlfUmVzZXJ2ZWQEAAAAFmV4dHJhY3RSZXNlcnZlZEJhbGFuY2UEAAAAByRtYXRjaDAFAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlCQAAZQAAAAIFAAAAFmV4dHJhY3RSZXNlcnZlZEJhbGFuY2UJAABoAAAAAgUAAAAGYmV0QW10AAAAAAAAAAEEAwkAAGcAAAACBQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAAAAAAAAAUAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UJAAACAAAAAQIAAAAoUmVzZXJ2ZWQgYmFsYW5jZSBjb3VsZG4ndCBiZSBsZXNzIHRoYW4gMAEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQAAAAdkcnVtSW50AwkAAGYAAAACAAAAAAAAAAAKBQAAAAdkcnVtSW50CQABLAAAAAICAAAAATAJAAGkAAAAAQUAAAAHZHJ1bUludAkAAaQAAAABBQAAAAdkcnVtSW50AQAAABBkZWZpbmVNdWx0aXBsaWVyAAAAAgAAAAt0aHJlZUluQVJvdwAAAAl0d29JbkFSb3cDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM3NzcAAAAAAAAACigDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM2NjYAAAAAAAAABRQDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM1NTUAAAAAAAAAAcIDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM0NDQAAAAAAAAAAMgDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMzMzMAAAAAAAAAAJYDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMyMjIAAAAAAAAAAG4DCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMxMTEAAAAAAAAAADIDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNzcAAAAAAAAAAQ4DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNjYAAAAAAAAAAIIDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNTUAAAAAAAAAAC0DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNDQAAAAAAAAAAB4DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMzMAAAAAAAAAABQDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMjIAAAAAAAAAABEDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMTEAAAAAAAAAAA0AAAAAAAAAAAABAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQAAAAlhc3NldE5hbWUDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAAFV0FWRVMFAAAAB3dhdmVzSWQJAAACAAAAAQIAAAAXQXNzZXQgbmFtZSBpcyBpbmNvcnJlY3QBAAAAEWFzc2V0QmFzZTU4VG9OYW1lAAAAAQAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAACAAAAAQIAAAAUQXNzZXRJZCBpcyBpbmNvcnJlY3QBAAAAFHNldE5ld0dhbWVzUGxheWVkTnVtAAAAAQAAAAdhZGRyZXNzBAAAABN2YWx1ZUdhbWVzUGxheWVkTnVtCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAMX0dhbWVzUGxheWVkBAAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0EAAAAByRtYXRjaDAFAAAAE3ZhbHVlR2FtZXNQbGF5ZWROdW0DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAkAAGQAAAACBQAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0AAAAAAAAAAAEBAAAAEGdldEN1cnJlbnRJbmNvbWUAAAABAAAACWFzc2V0TmFtZQQAAAADdmFsCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAAdfSW5jb21lBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAUY2FsbGVySXNEZXBvc2l0T3duZXIAAAACAAAACWFzc2V0TmFtZQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADGRlcG9zaXRPd25lcgkABB0AAAACBQAAABZkaXZpZGVuZFByb2dyYW1BZGRyZXNzCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRPd25lcgMJAAAAAAAAAgUAAAAPY2FsbGVyUHVibGljS2V5BQAAAAxkZXBvc2l0T3duZXIFAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAAClPbmx5IGRlcG9zaXQgb3duZXIgY2FuIHdpdGhkcmF3YWwgZGVwb3NpdAEAAAAOZ2V0RGVwb3NpdERhdGEAAAACAAAACWFzc2V0TmFtZQAAAAlrZXlTdWZmaXgEAAAAA2tleQkAASwAAAACBQAAAAlhc3NldE5hbWUFAAAACWtleVN1ZmZpeAQAAAADdmFsCQAEGgAAAAIFAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MFAAAAA2tleQQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAArQ291bGRuJ3QgZmluZCBkaXZpZGVuZCBwcm9ncmFtIHN0YXJ0IGhlaWdodAAAAAMAAAABaQEAAAAHbWFrZUJldAAAAAAEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAliZXRBbW91bnQJAABlAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAACmNvbW1pc3Npb24EAAAAB2Fzc2V0SWQIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGZ2FtZUlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAADXBsYXllckFkZHJlc3MJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAxwbXRBc3NldE5hbWUJAQAAABFhc3NldEJhc2U1OFRvTmFtZQAAAAEFAAAAB2Fzc2V0SWQEAAAAEnNldFJlc2VydmVkQmFsYW5jZQkBAAAAF2luY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAwUAAAAJYmV0QW1vdW50BQAAAAxwbXRBc3NldE5hbWUIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAANcG10QW10Q29ycmVjdAkBAAAAC3BtdEFtdENoZWNrAAAAAgUAAAAMcG10QXNzZXROYW1lBQAAAAliZXRBbW91bnQDBQAAAA1wbXRBbXRDb3JyZWN0BAAAAApkYXRhU3RyaW5nCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAIc3RhdGVBY2MCAAAAAV8JAAQlAAAAAQUAAAANcGxheWVyQWRkcmVzcwIAAAABXwkAAaQAAAABBQAAAAliZXRBbW91bnQCAAAAAV8FAAAADHBtdEFzc2V0TmFtZQIAAAABXwkAAaQAAAABBQAAAAZoZWlnaHQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAdfR2FtZUlkBQAAAApkYXRhU3RyaW5nCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAADHBtdEFzc2V0TmFtZQIAAAAJX1Jlc2VydmVkBQAAABJzZXRSZXNlcnZlZEJhbGFuY2UFAAAAA25pbAkAAAIAAAABAgAAABRBc3NldElkIGlzIGluY29ycmVjdAAAAAFpAQAAAAhwbGF5R2FtZQAAAAQAAAAGZ2FtZUlkAAAACHJzYVNpZ24xAAAACHJzYVNpZ24yAAAACHJzYVNpZ24zBAAAAAhkYXRhTGlzdAkBAAAAC2dldERhdGFMaXN0AAAAAQUAAAAGZ2FtZUlkBAAAAAlnYW1lU3RhdGUJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAAEAAAADXBsYXllckFkZHJlc3MJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAEEAAAABmJldEFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAACBAAAAAlhc3NldE5hbWUJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAMEAAAACWdhbWVTdGFydAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAAEBAAAAAlhc3NldElkNTgJAQAAABFhc3NldE5hbWVUb0Jhc2U1OAAAAAEFAAAACWFzc2V0TmFtZQQAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlCQEAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAACBQAAAAZiZXRBbXQFAAAACWFzc2V0TmFtZQQAAAAIZHJ1bTFJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjEFAAAADXJzYVB1YmxpY0tleTEEAAAACGRydW0ySW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24yBQAAAA1yc2FQdWJsaWNLZXkyBAAAAAhkcnVtM0ludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMwUAAAANcnNhUHVibGljS2V5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aGVpZ2h0AgAAAAFfCQABpAAAAAEJAABoAAAAAgUAAAAGYmV0QW10AAAAAAAAAAACAgAAAAFfAgAAAAMwMDACAAAAAV8CAAAABjAwMDAwMAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAACV9SZXNlcnZlZAUAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAHX0luY29tZQkAAGUAAAACCQEAAAAQZ2V0Q3VycmVudEluY29tZQAAAAEFAAAACWFzc2V0TmFtZQkAAGgAAAACBQAAAAZiZXRBbXQAAAAAAAAAAAIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAADXBsYXllckFkZHJlc3MJAABoAAAAAgUAAAAGYmV0QW10AAAAAAAAAAACBQAAAAlhc3NldElkNTgFAAAAA25pbAkAAAIAAAABAgAAABdHYW1lIHN0YXRlIGlzIGluY29ycmVjdAAAAAFpAQAAAA93aXRoZHJhd0RlcG9zaXQAAAABAAAACWFzc2V0TmFtZQQAAAAJYXNzZXRJZDU4CQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAACWNhbGxlclB1YgkBAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgUAAAAJYXNzZXROYW1lCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAATZGl2aWRlbmRTdGFydEhlaWdodAkBAAAADmdldERlcG9zaXREYXRhAAAAAgUAAAAJYXNzZXROYW1lAgAAABJfRGVwb3NpdFN0YXJ0QmxvY2sEAAAAD2RlcG9zaXREdXJhdGlvbgkBAAAADmdldERlcG9zaXREYXRhAAAAAgUAAAAJYXNzZXROYW1lAgAAABVfRGVwb3NpdER1cmF0aW9uQmxvY2sEAAAADWRlcG9zaXRBbW91bnQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAOX0RlcG9zaXRBbW91bnQDCQAAZwAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24JAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAdX0RlcG9zaXRXaXRoZHJhd1RyYW5zYWN0aW9uSWQIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAACWNhbGxlclB1YgUAAAANZGVwb3NpdEFtb3VudAUAAAAJYXNzZXRJZDU4BQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAGkRlcG9zaXQgdGltZSBpcyBub3Qgb3Zlci4gCQABpAAAAAEJAABlAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQFAAAAD2RlcG9zaXREdXJhdGlvbgIAAAANIGJsb2NrcyBsZWZ0LgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAANZ2FtZVB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAJ0eAUAAAAHJG1hdGNoMAYHB2N0MeE=", "height": 1398148, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: GpQJHPfxJeAn48zLv3UXjZYKrRWXaJn6rJ2jj3EJKKEw Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let gamePublicKey = fromBase58String("BjjwtwUgZ4s8p9HJuFwyRMR3egd3zMAHGDV2HoZ1J7ho") | |
5 | + | ||
6 | + | let dividendProgramAddress = addressFromPublicKey(fromBase58String("85WRynF4cwHurmJhYS4baWuSCu1D2Msv8i37g8s8DPFN")) | |
7 | + | ||
8 | + | let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==") | |
9 | + | ||
10 | + | let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==") | |
11 | + | ||
12 | + | let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==") | |
13 | + | ||
14 | + | let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"] | |
15 | + | ||
16 | + | let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"] | |
17 | + | ||
18 | + | let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"] | |
19 | + | ||
20 | + | let stateAcc = "Accepted" | |
21 | + | ||
22 | + | let stateWin = "Win" | |
23 | + | ||
24 | + | let stateLose = "Lose" | |
25 | + | ||
26 | + | let stateTimeout = "WinByTimeout" | |
27 | + | ||
28 | + | let wavesId = unit | |
29 | + | ||
30 | + | let wavesMinAmt = 100000000 | |
31 | + | ||
32 | + | let wavesMaxAmt = (wavesMinAmt * 10) | |
33 | + | ||
34 | + | let commission = 500000 | |
35 | + | ||
36 | + | let gameTimeFrame = 2880 | |
37 | + | ||
38 | + | func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES")) | |
39 | + | then if (if ((betAmount >= wavesMinAmt)) | |
40 | + | then (wavesMaxAmt >= betAmount) | |
41 | + | else false) | |
42 | + | then true | |
43 | + | else throw("Bet amount is not in range") | |
44 | + | else throw("Payment Asset ID is not valid") | |
45 | + | ||
46 | + | ||
47 | + | func getDataList (gameId) = { | |
48 | + | let getDataString = getString(this, (gameId + "_GameId")) | |
49 | + | let a = match getDataString { | |
50 | + | case a: String => | |
51 | + | a | |
52 | + | case _ => | |
53 | + | throw("GameId was not found") | |
54 | + | } | |
55 | + | split(a, "_") | |
56 | + | } | |
57 | + | ||
58 | + | ||
59 | + | func rsaToInt (gameId,rsaSign,rsaPublicKey) = { | |
60 | + | let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey) | |
61 | + | if (rsaCheck) | |
62 | + | then (toInt(sha256(rsaSign)) % 19) | |
63 | + | else throw("Invalid RSA Signature") | |
64 | + | } | |
65 | + | ||
66 | + | ||
67 | + | func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = { | |
68 | + | let currentReservedBalance = { | |
69 | + | let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved")) | |
70 | + | match valueReservedBalance { | |
71 | + | case a: Int => | |
72 | + | a | |
73 | + | case _ => | |
74 | + | 0 | |
75 | + | } | |
76 | + | } | |
77 | + | let newReservedBalance = (currentReservedBalance + (pmtAmt * 260)) | |
78 | + | if ((assetBalance(this, assetId58) >= newReservedBalance)) | |
79 | + | then newReservedBalance | |
80 | + | else throw("Bet was rejected. Insufficient funds on game account.") | |
81 | + | } | |
82 | + | ||
83 | + | ||
84 | + | func decreaseReservedBalance (betAmt,assetId) = { | |
85 | + | let valueReservedBalance = getInteger(this, (assetId + "_Reserved")) | |
86 | + | let extractReservedBalance = match valueReservedBalance { | |
87 | + | case a: Int => | |
88 | + | a | |
89 | + | case _ => | |
90 | + | 0 | |
91 | + | } | |
92 | + | let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260)) | |
93 | + | if ((decreaseReservedBalance >= 0)) | |
94 | + | then decreaseReservedBalance | |
95 | + | else throw("Reserved balance couldn't be less than 0") | |
96 | + | } | |
97 | + | ||
98 | + | ||
99 | + | func drumIntToString (drumInt) = if ((10 > drumInt)) | |
100 | + | then ("0" + toString(drumInt)) | |
101 | + | else toString(drumInt) | |
102 | + | ||
103 | + | ||
104 | + | func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777")) | |
105 | + | then 2600 | |
106 | + | else if ((threeInARow == "666")) | |
107 | + | then 1300 | |
108 | + | else if ((threeInARow == "555")) | |
109 | + | then 450 | |
110 | + | else if ((threeInARow == "444")) | |
111 | + | then 200 | |
112 | + | else if ((threeInARow == "333")) | |
113 | + | then 150 | |
114 | + | else if ((threeInARow == "222")) | |
115 | + | then 110 | |
116 | + | else if ((threeInARow == "111")) | |
117 | + | then 50 | |
118 | + | else if ((twoInARow == "77")) | |
119 | + | then 270 | |
120 | + | else if ((twoInARow == "66")) | |
121 | + | then 130 | |
122 | + | else if ((twoInARow == "55")) | |
123 | + | then 45 | |
124 | + | else if ((twoInARow == "44")) | |
125 | + | then 30 | |
126 | + | else if ((twoInARow == "33")) | |
127 | + | then 20 | |
128 | + | else if ((twoInARow == "22")) | |
129 | + | then 17 | |
130 | + | else if ((twoInARow == "11")) | |
131 | + | then 13 | |
132 | + | else 0 | |
133 | + | ||
134 | + | ||
135 | + | func assetNameToBase58 (assetName) = if ((assetName == "WAVES")) | |
136 | + | then wavesId | |
137 | + | else throw("Asset name is incorrect") | |
138 | + | ||
139 | + | ||
140 | + | func assetBase58ToName (assetId) = if (!(isDefined(assetId))) | |
141 | + | then "WAVES" | |
142 | + | else throw("AssetId is incorrect") | |
143 | + | ||
144 | + | ||
145 | + | func setNewGamesPlayedNum (address) = { | |
146 | + | let valueGamesPlayedNum = getInteger(this, (address + "_GamesPlayed")) | |
147 | + | let currentGamesPlayedNum = match valueGamesPlayedNum { | |
148 | + | case a: Int => | |
149 | + | a | |
150 | + | case _ => | |
151 | + | 0 | |
152 | + | } | |
153 | + | (currentGamesPlayedNum + 1) | |
154 | + | } | |
155 | + | ||
156 | + | ||
157 | + | func getCurrentIncome (assetName) = { | |
158 | + | let val = getInteger(this, (assetName + "_Income")) | |
159 | + | match val { | |
160 | + | case a: Int => | |
161 | + | a | |
162 | + | case _ => | |
163 | + | 0 | |
164 | + | } | |
165 | + | } | |
166 | + | ||
167 | + | ||
168 | + | func callerIsDepositOwner (assetName,callerPublicKey) = { | |
169 | + | let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner")) | |
170 | + | if ((callerPublicKey == depositOwner)) | |
171 | + | then callerPublicKey | |
172 | + | else throw("Only deposit owner can withdrawal deposit") | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | func getDepositData (assetName,keySuffix) = { | |
177 | + | let key = (assetName + keySuffix) | |
178 | + | let val = getInteger(dividendProgramAddress, key) | |
179 | + | match val { | |
180 | + | case a: Int => | |
181 | + | a | |
182 | + | case _ => | |
183 | + | throw("Couldn't find dividend program start height") | |
184 | + | } | |
185 | + | } | |
186 | + | ||
187 | + | ||
188 | + | @Callable(i) | |
189 | + | func makeBet () = { | |
190 | + | let pmt = extract(i.payment) | |
191 | + | let betAmount = (pmt.amount - commission) | |
192 | + | let assetId = pmt.assetId | |
193 | + | let gameId = toBase58String(i.transactionId) | |
194 | + | let playerAddress = extract(i.caller) | |
195 | + | let pmtAssetName = assetBase58ToName(assetId) | |
196 | + | let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId) | |
197 | + | let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount) | |
198 | + | if (pmtAmtCorrect) | |
199 | + | then { | |
200 | + | let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height)) | |
201 | + | WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)]) | |
202 | + | } | |
203 | + | else throw("AssetId is incorrect") | |
204 | + | } | |
205 | + | ||
206 | + | ||
207 | + | ||
208 | + | @Callable(i) | |
209 | + | func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = { | |
210 | + | let dataList = getDataList(gameId) | |
211 | + | let gameState = dataList[0] | |
212 | + | let playerAddress = dataList[1] | |
213 | + | let betAmt = parseIntValue(dataList[2]) | |
214 | + | let assetName = dataList[3] | |
215 | + | let gameStart = parseIntValue(dataList[4]) | |
216 | + | let assetId58 = assetNameToBase58(assetName) | |
217 | + | let setReservedBalance = decreaseReservedBalance(betAmt, assetName) | |
218 | + | let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1) | |
219 | + | let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2) | |
220 | + | let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3) | |
221 | + | let twoInARow = (drum1[drum1Int] + drum2[drum2Int]) | |
222 | + | let threeInARow = (twoInARow + drum3[drum3Int]) | |
223 | + | let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int)) | |
224 | + | let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10) | |
225 | + | if ((gameState == stateAcc)) | |
226 | + | then if ((gameTimeFrame > (height - gameStart))) | |
227 | + | then if ((winAmt == 0)) | |
228 | + | then { | |
229 | + | let availableDividends = { | |
230 | + | let dividends = (getCurrentIncome(assetName) + betAmt) | |
231 | + | if ((dividends > 0)) | |
232 | + | then dividends | |
233 | + | else 0 | |
234 | + | } | |
235 | + | let income = { | |
236 | + | let dividends = (getCurrentIncome(assetName) + betAmt) | |
237 | + | if ((dividends > 0)) | |
238 | + | then 0 | |
239 | + | else dividends | |
240 | + | } | |
241 | + | ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), income)]), TransferSet([ScriptTransfer(dividendProgramAddress, availableDividends, assetId58)])) | |
242 | + | } | |
243 | + | else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateWin + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (getCurrentIncome(assetName) - winAmt))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), winAmt, assetId58)])) | |
244 | + | else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateTimeout + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString((betAmt * 2))) + "_") + "000") + "_") + "000000")), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (getCurrentIncome(assetName) - (betAmt * 2)))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), (betAmt * 2), assetId58)])) | |
245 | + | else throw("Game state is incorrect") | |
246 | + | } | |
247 | + | ||
248 | + | ||
249 | + | ||
250 | + | @Callable(i) | |
251 | + | func withdrawDeposit (assetName) = { | |
252 | + | let assetId58 = assetNameToBase58(assetName) | |
253 | + | let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey)) | |
254 | + | let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock") | |
255 | + | let depositDuration = getDepositData(assetName, "_DepositDurationBlock") | |
256 | + | let depositAmount = getDepositData(assetName, "_DepositAmount") | |
257 | + | if (((height - dividendStartHeight) >= depositDuration)) | |
258 | + | then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)])) | |
259 | + | else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left.")) | |
260 | + | } | |
261 | + | ||
262 | + | ||
263 | + | @Verifier(tx) | |
264 | + | func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey)) | |
265 | + | then match tx { | |
266 | + | case tx: SetScriptTransaction => | |
267 | + | true | |
268 | + | case _ => | |
269 | + | false | |
270 | + | } | |
271 | + | else false | |
272 | + |
github/deemru/w8io/169f3d6 28.08 ms ◑![]()