tx · 3uYSQLVqNwvwHaziJFAB58qArU9KNvNG1DYHwyYkSWUX

3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc:  -0.01500000 Waves

2019.12.28 16:22 [828964] smart account 3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc > SELF 0.00000000 Waves

{ "type": 13, "id": "3uYSQLVqNwvwHaziJFAB58qArU9KNvNG1DYHwyYkSWUX", "fee": 1500000, "feeAssetId": null, "timestamp": 1577539400075, "version": 1, "sender": "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc", "senderPublicKey": "6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5", "proofs": [ "Gbho9HEA9WtNtzXcUmMVobno7DghMQuneSoUXrCV8nrhKSfFRRHsnmiPxzdqXrceK52f49rHiGMtdV6cztt6iKY" ], "script": "base64:AAIDAAAAAAAAABEIARIAEgYKBAgCAgISAwoBCAAAADAAAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsNVNZUnJXQWtrSGlpeURTelRWYlRha3Z4M2pzdno3M1ljNXNMY0RnZEs4c2cAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsNk1UU2ZERWJmWjlWcjdoeE4yUGtKVDZ0UXZDUFoxak43SzlMOGdDaVpuRjUAAAAADXJzYVB1YmxpY0tleTEJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT2tpdXovQlY0RWpveEdoVG1OQ2J0MlRna2JTUEgvdzY5YjNGMXJLbUQ2MUppUFh2dkY4TDJwSTl4T1ljVzRGbW9FWlZIbFJRdEFsYUp5a2wzK3JzckVDQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTIJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBSm5YemJNL1Yyc0RWMVVMYlBTT2xIa2xkT1RXUnJIaTVmeElrQm11ZXZyQ2xNUFZIN3JxY2N3aXJETmNNZElkd1hISTlBZGhqOUZXandHSXdmVS9LNk1DQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTMJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT1JEZXZ5MHI0a3pMcU95U2xvQjYzSHV2MmU0emVIS0hqQ3N5NXZ0RkttV1piWEphOGdaWXQ0K0VrbEZJbzFLOW9xdTVCQVBWZkozRk96czJVMUErZzBDQXdFQUFRPT0AAAAABWRydW0xCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAUAAAADbmlsAAAAAAVkcnVtMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcFAAAAA25pbAAAAAAFZHJ1bTMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE2BQAAAANuaWwAAAAADWdhbWVUaW1lRnJhbWUJAABoAAAAAgAAAAAAAAAFoAAAAAAAAAAAAgAAAAAKY29tbWlzc2lvbgAAAAAAAAehIAAAAAAIc3RhdGVBY2MCAAAACEFjY2VwdGVkAAAAAAhzdGF0ZVdpbgIAAAADV2luAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91dAAAAAAJc3RhdGVMb3NlAgAAAARMb3NlAAAAAAd3YXZlc0lkBQAAAAR1bml0AAAAAAVidGNJZAEAAAAg6/OixWGiJsywkWGdcbK+NwiGA+82Hgd/8NN1rVDJQkYAAAAABWV0aElkAQAAACBMn5tx+blzluxE7sAoq4GDEEijzo9C9Bh7dSP/ufsmegAAAAAFbHRjSWQBAAAAIGUKxbSV9c1RbV1yEe8IJEq6hIZr0r6MSGLuEiGHPJq2AAAAAAV2c3RJZAEAAAAgQpj/P9lmSBrns/IU1LEYqhpYoyF/9EGM8h2PwJdP6pAAAAAABXdjdElkAQAAACCPOMNcycr0edjTs6w0Z+w1tJYegVWlOipNr9UGRwFGDQAAAAAHZGl2aWRlcgAAAAAAAAAD6AAAAAALV2F2ZXNNaW5BbXQJAABpAAAAAgAAAAAABfXhAAUAAAAHZGl2aWRlcgAAAAALV2F2ZXNNYXhBbXQJAABoAAAAAgUAAAALV2F2ZXNNaW5BbXQAAAAAAAAAAAoAAAAACUJ0Y01pbkFtdAkAAGkAAAACAAAAAAAAACcQBQAAAAdkaXZpZGVyAAAAAAlCdGNNYXhBbXQJAABoAAAAAgUAAAAJQnRjTWluQW10AAAAAAAAAAAKAAAAAAlFdGhNaW5BbXQJAABpAAAAAgAAAAAAAA9CQAUAAAAHZGl2aWRlcgAAAAAJRXRoTWF4QW10CQAAaAAAAAIFAAAACUV0aE1pbkFtdAAAAAAAAAAACgAAAAAJTHRjTWluQW10CQAAaQAAAAIAAAAAAAAehIAFAAAAB2RpdmlkZXIAAAAACUx0Y01heEFtdAkAAGgAAAACBQAAAAlMdGNNaW5BbXQAAAAAAAAAAAoAAAAACVdjdE1pbkFtdAkAAGkAAAACAAAAAAAdzWUABQAAAAdkaXZpZGVyAAAAAAlXY3RNYXhBbXQJAABoAAAAAgUAAAAJV2N0TWluQW10AAAAAAAAAAAKAAAAAAlWc3RNaW5BbXQJAABpAAAAAgAAAAAAHc1lAAUAAAAHZGl2aWRlcgAAAAAJVnN0TWF4QW10CQAAaAAAAAIFAAAACVZzdE1pbkFtdAAAAAAAAAAACgAAAAAKVXNkbk1pbkFtdAkAAGkAAAACAAAAAAAF9eEABQAAAAdkaXZpZGVyAAAAAApVc2RuTWF4QW10CQAAaAAAAAIFAAAAClVzZG5NaW5BbXQAAAAAAAAAAAoBAAAAC3BtdEFtdENoZWNrAAAAAgAAAApwbXRBc3NldElkAAAACWJldEFtb3VudAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAIAAAAFV0FWRVMDAwkAAGcAAAACBQAAAAliZXRBbW91bnQFAAAAC1dhdmVzTWluQW10CQAAZwAAAAIFAAAAC1dhdmVzTWF4QW10BQAAAAliZXRBbW91bnQHBgkAAAIAAAABAgAAABpCZXQgYW1vdW50IGlzIG5vdCBpbiByYW5nZQMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAIAAAADQlRDAwMJAABnAAAAAgUAAAAJYmV0QW1vdW50BQAAAAlCdGNNaW5BbXQJAABnAAAAAgUAAAAJQnRjTWF4QW10BQAAAAliZXRBbW91bnQHBgkAAAIAAAABAgAAABpCZXQgYW1vdW50IGlzIG5vdCBpbiByYW5nZQMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAIAAAADRVRIAwMJAABnAAAAAgUAAAAJYmV0QW1vdW50BQAAAAlFdGhNaW5BbXQJAABnAAAAAgUAAAAJRXRoTWF4QW10BQAAAAliZXRBbW91bnQHBgkAAAIAAAABAgAAABpCZXQgYW1vdW50IGlzIG5vdCBpbiByYW5nZQMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAIAAAADTFRDAwMJAABnAAAAAgUAAAAJYmV0QW1vdW50BQAAAAlMdGNNaW5BbXQJAABnAAAAAgUAAAAJTHRjTWF4QW10BQAAAAliZXRBbW91bnQHBgkAAAIAAAABAgAAABpCZXQgYW1vdW50IGlzIG5vdCBpbiByYW5nZQMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAIAAAADV0NUAwMJAABnAAAAAgUAAAAJYmV0QW1vdW50BQAAAAlXY3RNaW5BbXQJAABnAAAAAgUAAAAJV2N0TWF4QW10BQAAAAliZXRBbW91bnQHBgkAAAIAAAABAgAAABpCZXQgYW1vdW50IGlzIG5vdCBpbiByYW5nZQMDCQAAZwAAAAIFAAAACWJldEFtb3VudAUAAAAJVnN0TWluQW10CQAAZwAAAAIFAAAACVZzdE1heEFtdAUAAAAJYmV0QW1vdW50BwYJAAACAAAAAQIAAAAaQmV0IGFtb3VudCBpcyBub3QgaW4gcmFuZ2UBAAAAC2dldERhdGFMaXN0AAAAAQAAAAZnYW1lSWQEAAAADWdldERhdGFTdHJpbmcJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAZnYW1lSWQCAAAAB19HYW1lSWQEAAAAAWEEAAAAByRtYXRjaDAFAAAADWdldERhdGFTdHJpbmcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAABRHYW1lSWQgd2FzIG5vdCBmb3VuZAkABLUAAAACBQAAAAFhAgAAAAFfAQAAAAhyc2FUb0ludAAAAAMAAAAGZ2FtZUlkAAAAB3JzYVNpZ24AAAAMcnNhUHVibGljS2V5BAAAAAhyc2FDaGVjawkAAfgAAAAEBQAAAAZTSEEyNTYJAAGbAAAAAQUAAAAGZ2FtZUlkBQAAAAdyc2FTaWduBQAAAAxyc2FQdWJsaWNLZXkDBQAAAAhyc2FDaGVjawkAAGoAAAACCQAEsQAAAAEJAAH3AAAAAQUAAAAHcnNhU2lnbgAAAAAAAAAAEwkAAAIAAAABAgAAABhSc2EgU2lnbmF0dXJlIGlzIGludmFsaWQBAAAAF2luY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAwAAAAZwbXRBbXQAAAAMcG10QXNzZXROYW1lAAAACWFzc2V0SWQ1OAQAAAAWY3VycmVudFJlc2VydmVkQmFsYW5jZQQAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAxwbXRBc3NldE5hbWUCAAAACV9SZXNlcnZlZAQAAAAHJG1hdGNoMAUAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlCQAAZAAAAAIFAAAAFmN1cnJlbnRSZXNlcnZlZEJhbGFuY2UJAABoAAAAAgUAAAAGcG10QW10AAAAAAAAAAEEAwkAAGcAAAACCQAD6wAAAAIFAAAABHRoaXMFAAAACWFzc2V0SWQ1OAUAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlBQAAABJuZXdSZXNlcnZlZEJhbGFuY2UJAAACAAAAAQIAAAA1QmV0IHdhcyByZWplY3RlZC4gSW5zdWZmaWNpZW50IGZ1bmRzIG9uIGdhbWUgYWNjb3VudC4BAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAgAAAAZiZXRBbXQAAAAHYXNzZXRJZAQAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAdhc3NldElkAgAAAAlfUmVzZXJ2ZWQEAAAAFmV4dHJhY3RSZXNlcnZlZEJhbGFuY2UEAAAAByRtYXRjaDAFAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlCQAAZQAAAAIFAAAAFmV4dHJhY3RSZXNlcnZlZEJhbGFuY2UJAABoAAAAAgUAAAAGYmV0QW10AAAAAAAAAAEEAwkAAGcAAAACBQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAAAAAAAAAUAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UJAAACAAAAAQIAAAAoUmVzZXJ2ZWQgYmFsYW5jZSBjb3VsZG4ndCBiZSBsZXNzIHRoYW4gMAEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQAAAAdkcnVtSW50AwkAAGYAAAACAAAAAAAAAAAKBQAAAAdkcnVtSW50CQABLAAAAAICAAAAATAJAAGkAAAAAQUAAAAHZHJ1bUludAkAAaQAAAABBQAAAAdkcnVtSW50AQAAABBkZWZpbmVNdWx0aXBsaWVyAAAAAgAAAAt0aHJlZUluQVJvdwAAAAl0d29JbkFSb3cDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM3NzcAAAAAAAAACigDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM2NjYAAAAAAAAABRQDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM1NTUAAAAAAAAAAcIDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAM0NDQAAAAAAAAAAMgDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMzMzMAAAAAAAAAAJYDCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMyMjIAAAAAAAAAAG4DCQAAAAAAAAIFAAAAC3RocmVlSW5BUm93AgAAAAMxMTEAAAAAAAAAADIDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNzcAAAAAAAAAAQ4DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNjYAAAAAAAAAAIIDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNTUAAAAAAAAAAC0DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACNDQAAAAAAAAAAB4DCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMzMAAAAAAAAAABQDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMjIAAAAAAAAAABEDCQAAAAAAAAIFAAAACXR3b0luQVJvdwIAAAACMTEAAAAAAAAAAA0AAAAAAAAAAAABAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQAAAAlhc3NldE5hbWUDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAAFV0FWRVMFAAAAB3dhdmVzSWQDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAADQlRDBQAAAAVidGNJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANFVEgFAAAABWV0aElkAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAAA0xUQwUAAAAFbHRjSWQDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAADVlNUBQAAAAV2c3RJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANXQ1QFAAAABXdjdElkCQAAAgAAAAECAAAAF0Fzc2V0IG5hbWUgaXMgaW5jb3JyZWN0AQAAABFhc3NldEJhc2U1OFRvTmFtZQAAAAEAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAAB2Fzc2V0SWQCAAAABVdBVkVTAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAVidGNJZAIAAAADQlRDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAVldGhJZAIAAAADRVRIAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAVsdGNJZAIAAAADTFRDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAV3Y3RJZAIAAAADV0NUAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAV2c3RJZAIAAAADVlNUCQAAAgAAAAECAAAAFEFzc2V0SWQgaXMgaW5jb3JyZWN0AQAAABBnZXRDdXJyZW50SW5jb21lAAAAAQAAAAlhc3NldE5hbWUEAAAAA3ZhbAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAHX0luY29tZQQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgAAAAlhc3NldE5hbWUAAAAPY2FsbGVyUHVibGljS2V5BAAAAAxkZXBvc2l0T3duZXIJAAQdAAAAAgUAAAAWZGl2aWRlbmRQcm9ncmFtQWRkcmVzcwkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADV9EZXBvc2l0T3duZXIDCQAAAAAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAAMZGVwb3NpdE93bmVyBQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAApT25seSBkZXBvc2l0IG93bmVyIGNhbiB3aXRoZHJhd2FsIGRlcG9zaXQBAAAADmFzc2V0TmFtZUNoZWNrAAAAAQAAAAVhc3NldAMDAwMDAwkAAAAAAAACBQAAAAVhc3NldAIAAAAFV0FWRVMGCQAAAAAAAAIFAAAABWFzc2V0AgAAAAVXQVZFUwYJAAAAAAAAAgUAAAAFYXNzZXQCAAAABVdBVkVTBgkAAAAAAAACBQAAAAVhc3NldAIAAAAFV0FWRVMGCQAAAAAAAAIFAAAABWFzc2V0AgAAAAVXQVZFUwYJAAAAAAAAAgUAAAAFYXNzZXQCAAAABVdBVkVTBQAAAAVhc3NldAkAAAIAAAABAgAAAB1JbmNvcnJlY3QgYXNzZXQgbmFtZSBwcm92aWRlZAEAAAAOZ2V0RGVwb3NpdERhdGEAAAACAAAACWFzc2V0TmFtZQAAAAlrZXlTdWZmaXgEAAAAA2tleQkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50BAAAAAN2YWwJAAQaAAAAAgUAAAAWZGl2aWRlbmRQcm9ncmFtQWRkcmVzcwUAAAADa2V5BAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAACtDb3VsZG4ndCBmaW5kIGRpdmlkZW5kIHByb2dyYW0gc3RhcnQgaGVpZ2h0AAAAAwAAAAFpAQAAAAdtYWtlQmV0AAAAAAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACWJldEFtb3VudAkAAGUAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAKY29tbWlzc2lvbgQAAAAHYXNzZXRJZAgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAZnYW1lSWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANcGxheWVyQWRkcmVzcwkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADHBtdEFzc2V0TmFtZQkBAAAAEWFzc2V0QmFzZTU4VG9OYW1lAAAAAQUAAAAHYXNzZXRJZAQAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlCQEAAAAXaW5jcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAADBQAAAAliZXRBbW91bnQFAAAADHBtdEFzc2V0TmFtZQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1wbXRBbXRDb3JyZWN0CQEAAAALcG10QW10Q2hlY2sAAAACBQAAAAxwbXRBc3NldE5hbWUFAAAACWJldEFtb3VudAMFAAAADXBtdEFtdENvcnJlY3QEAAAACmRhdGFTdHJpbmcJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAhzdGF0ZUFjYwIAAAABXwkABCUAAAABBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAACWJldEFtb3VudAIAAAABXwUAAAAMcG10QXNzZXROYW1lAgAAAAFfCQABpAAAAAEFAAAABmhlaWdodAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAB19HYW1lSWQFAAAACmRhdGFTdHJpbmcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAMcG10QXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQFAAAAEnNldFJlc2VydmVkQmFsYW5jZQUAAAADbmlsCQAAAgAAAAECAAAAFGFzc2V0SWQgaXMgaW5jb3JyZWN0AAAAAWkBAAAACHBsYXlHYW1lAAAABAAAAAZnYW1lSWQAAAAIcnNhU2lnbjEAAAAIcnNhU2lnbjIAAAAIcnNhU2lnbjMEAAAACGRhdGFMaXN0CQEAAAALZ2V0RGF0YUxpc3QAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAAQAAAANcGxheWVyQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAABBAAAAAZiZXRBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAgQAAAAJYXNzZXROYW1lCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAADBAAAAAlnYW1lU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAABAQAAAAJYXNzZXRJZDU4CQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAAEnNldFJlc2VydmVkQmFsYW5jZQkBAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAgUAAAAGYmV0QW10BQAAAAlhc3NldE5hbWUEAAAADWN1cnJlbnRJbmNvbWUJAQAAABBnZXRDdXJyZW50SW5jb21lAAAAAQUAAAAJYXNzZXROYW1lBAAAAAhkcnVtMUludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMQUAAAANcnNhUHVibGljS2V5MQQAAAAIZHJ1bTJJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjIFAAAADXJzYVB1YmxpY0tleTIEAAAACGRydW0zSW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24zBQAAAA1yc2FQdWJsaWNLZXkzBAAAAAl0d29JbkFSb3cJAAEsAAAAAgkAAZEAAAACBQAAAAVkcnVtMQUAAAAIZHJ1bTFJbnQJAAGRAAAAAgUAAAAFZHJ1bTIFAAAACGRydW0ySW50BAAAAAt0aHJlZUluQVJvdwkAASwAAAACBQAAAAl0d29JbkFSb3cJAAGRAAAAAgUAAAAFZHJ1bTMFAAAACGRydW0zSW50BAAAABVkcm9wcGVkRWxlbWVudHNTdHJpbmcJAAEsAAAAAgkAASwAAAACCQEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQUAAAAIZHJ1bTFJbnQJAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABBQAAAAhkcnVtMkludAkBAAAAD2RydW1JbnRUb1N0cmluZwAAAAEFAAAACGRydW0zSW50BAAAAAZ3aW5BbXQJAABpAAAAAgkAAGgAAAACBQAAAAZiZXRBbXQJAQAAABBkZWZpbmVNdWx0aXBsaWVyAAAAAgUAAAALdGhyZWVJbkFSb3cFAAAACXR3b0luQVJvdwAAAAAAAAAACgQAAAANZ2FtZVRpbWVDaGVjawkAAGYAAAACBQAAAA1nYW1lVGltZUZyYW1lCQAAZQAAAAIFAAAABmhlaWdodAUAAAAJZ2FtZVN0YXJ0BAAAAAxzdGF0ZUNvcnJlY3QJAAAAAAAAAgUAAAAJZ2FtZVN0YXRlBQAAAAhzdGF0ZUFjYwMFAAAADHN0YXRlQ29ycmVjdAMFAAAADWdhbWVUaW1lQ2hlY2sDCQAAAAAAAAIFAAAABndpbkFtdAAAAAAAAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAdfR2FtZUlkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAB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AAACBQAAAAlhc3NldE5hbWUCAAAAB19JbmNvbWUJAABlAAAAAgUAAAANY3VycmVudEluY29tZQkAAGgAAAACBQAAAAZiZXRBbXQAAAAAAAAAAAIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1wbGF5ZXJBZGRyZXNzCQAAaAAAAAIFAAAABmJldEFtdAAAAAAAAAAAAgUAAAAJYXNzZXRJZDU4BQAAAANuaWwJAAACAAAAAQIAAAAXR2FtZSBzdGF0ZSBpcyBpbmNvcnJlY3QAAAABaQEAAAAPd2l0aGRyYXdEZXBvc2l0AAAAAQAAAAlhc3NldE5hbWUEAAAACWFzc2V0SWQ1OAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAAljYWxsZXJQdWIJAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIFAAAACWFzc2V0TmFtZQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RlcG9zaXRTdGFydEJsb2NrBAAAAA9kZXBvc2l0RHVyYXRpb24JAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAVX0RlcG9zaXREdXJhdGlvbkJsb2NrBAAAAA1kZXBvc2l0QW1vdW50CQEAAAAOZ2V0RGVwb3NpdERhdGEAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50BAAAABlkaXZpZGVuZFByb2dyYW1UaW1lSXNPdmVyCQAAZwAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24DBQAAABlkaXZpZGVuZFByb2dyYW1UaW1lSXNPdmVyCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAHV9EZXBvc2l0V2l0aGRyYXdUcmFuc2FjdGlvbklkCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAljYWxsZXJQdWIFAAAADWRlcG9zaXRBbW91bnQFAAAACWFzc2V0SWQ1OAUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABpEZXBvc2l0IHRpbWUgaXMgbm90IG92ZXIuIAkAAaQAAAABCQAAZQAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24CAAAADSBibG9ja3MgbGVmdC4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADWdhbWVQdWJsaWNLZXkEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAN0dHgFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAAEc3N0eAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAARpc3R4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAANkdHgFAAAAByRtYXRjaDAGBwc1jbdN", "chainId": 84, "height": 828964, "spentComplexity": 0 } View: original | compacted Prev: 76RPxGUEJSZ9Kdu5SZDkW5jwcu4pStv49dZdP8hrco7G Next: Bq3PvqSWykQZEnoLeAbYq95Q5E9hQiA76ogyhkMxbatZ Diff:
OldNewDifferences
6767
6868 let VstMaxAmt = (VstMinAmt * 10)
6969
70-func getInvestorPub (assetName) = {
71- let val = getBinary(this, (assetName + "_DepositInvestor"))
72- match val {
73- case a: ByteVector =>
74- a
75- case _ =>
76- throw("Error")
77- }
78- }
70+let UsdnMinAmt = (100000000 / divider)
7971
80-
81-func getDepositAmount (assetName) = {
82- let val = getBinary(this, (assetName + "_DepositAmount"))
83- match val {
84- case a: ByteVector =>
85- a
86- case _ =>
87- throw("Error")
88- }
89- }
90-
72+let UsdnMaxAmt = (UsdnMinAmt * 10)
9173
9274 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
9375 then if (if ((betAmount >= WavesMinAmt))
139121
140122
141123 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
142- let rsaCheck = rsaVerify(SHA256, toBytes(gameId), fromBase64String(rsaSign), rsaPublicKey)
124+ let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
143125 if (rsaCheck)
144- then (toInt(sha256(fromBase64String(rsaSign))) % 19)
126+ then (toInt(sha256(rsaSign)) % 19)
145127 else throw("Rsa Signature is invalid")
146128 }
147129
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dividendProgramAddress = addressFromPublicKey(fromBase58String("5SYRrWAkkHiiyDSzTVbTakvx3jsvz73Yc5sLcDgdK8sg"))
55
66 let gamePublicKey = fromBase58String("6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5")
77
88 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
99
1010 let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
1111
1212 let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
1313
1414 let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"]
1515
1616 let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"]
1717
1818 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
1919
2020 let gameTimeFrame = (1440 * 2)
2121
2222 let commission = 500000
2323
2424 let stateAcc = "Accepted"
2525
2626 let stateWin = "Win"
2727
2828 let stateTimeout = "WinByTimeout"
2929
3030 let stateLose = "Lose"
3131
3232 let wavesId = unit
3333
3434 let btcId = base58'Gt4HLkHunts7bWbtYP5UCsAPW7TUA4gmQEnjgjbZ2NqB'
3535
3636 let ethId = base58'6A79GDQj8bdHqUaoJQ3qE1TCPnBc3wFirNCSsAY5RKry'
3737
3838 let ltcId = base58'7oRhs4zoufHM4KiBDuJwRXUWb9JQaFt98N8ubpmytMmw'
3939
4040 let vstId = base58'5UyDjBMx1Q8UWhJj1r7JuA6h4aCkKrHE1J19HvMXRpRd'
4141
4242 let wctId = base58'Ae5W927iuKSLLT6Sdt3bqWze6ZUbYHDWzPY6dLKQusZv'
4343
4444 let divider = 1000
4545
4646 let WavesMinAmt = (100000000 / divider)
4747
4848 let WavesMaxAmt = (WavesMinAmt * 10)
4949
5050 let BtcMinAmt = (10000 / divider)
5151
5252 let BtcMaxAmt = (BtcMinAmt * 10)
5353
5454 let EthMinAmt = (1000000 / divider)
5555
5656 let EthMaxAmt = (EthMinAmt * 10)
5757
5858 let LtcMinAmt = (2000000 / divider)
5959
6060 let LtcMaxAmt = (LtcMinAmt * 10)
6161
6262 let WctMinAmt = (500000000 / divider)
6363
6464 let WctMaxAmt = (WctMinAmt * 10)
6565
6666 let VstMinAmt = (500000000 / divider)
6767
6868 let VstMaxAmt = (VstMinAmt * 10)
6969
70-func getInvestorPub (assetName) = {
71- let val = getBinary(this, (assetName + "_DepositInvestor"))
72- match val {
73- case a: ByteVector =>
74- a
75- case _ =>
76- throw("Error")
77- }
78- }
70+let UsdnMinAmt = (100000000 / divider)
7971
80-
81-func getDepositAmount (assetName) = {
82- let val = getBinary(this, (assetName + "_DepositAmount"))
83- match val {
84- case a: ByteVector =>
85- a
86- case _ =>
87- throw("Error")
88- }
89- }
90-
72+let UsdnMaxAmt = (UsdnMinAmt * 10)
9173
9274 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
9375 then if (if ((betAmount >= WavesMinAmt))
9476 then (WavesMaxAmt >= betAmount)
9577 else false)
9678 then true
9779 else throw("Bet amount is not in range")
9880 else if ((pmtAssetId == "BTC"))
9981 then if (if ((betAmount >= BtcMinAmt))
10082 then (BtcMaxAmt >= betAmount)
10183 else false)
10284 then true
10385 else throw("Bet amount is not in range")
10486 else if ((pmtAssetId == "ETH"))
10587 then if (if ((betAmount >= EthMinAmt))
10688 then (EthMaxAmt >= betAmount)
10789 else false)
10890 then true
10991 else throw("Bet amount is not in range")
11092 else if ((pmtAssetId == "LTC"))
11193 then if (if ((betAmount >= LtcMinAmt))
11294 then (LtcMaxAmt >= betAmount)
11395 else false)
11496 then true
11597 else throw("Bet amount is not in range")
11698 else if ((pmtAssetId == "WCT"))
11799 then if (if ((betAmount >= WctMinAmt))
118100 then (WctMaxAmt >= betAmount)
119101 else false)
120102 then true
121103 else throw("Bet amount is not in range")
122104 else if (if ((betAmount >= VstMinAmt))
123105 then (VstMaxAmt >= betAmount)
124106 else false)
125107 then true
126108 else throw("Bet amount is not in range")
127109
128110
129111 func getDataList (gameId) = {
130112 let getDataString = getString(this, (gameId + "_GameId"))
131113 let a = match getDataString {
132114 case a: String =>
133115 a
134116 case _ =>
135117 throw("GameId was not found")
136118 }
137119 split(a, "_")
138120 }
139121
140122
141123 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
142- let rsaCheck = rsaVerify(SHA256, toBytes(gameId), fromBase64String(rsaSign), rsaPublicKey)
124+ let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
143125 if (rsaCheck)
144- then (toInt(sha256(fromBase64String(rsaSign))) % 19)
126+ then (toInt(sha256(rsaSign)) % 19)
145127 else throw("Rsa Signature is invalid")
146128 }
147129
148130
149131 func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = {
150132 let currentReservedBalance = {
151133 let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved"))
152134 match valueReservedBalance {
153135 case a: Int =>
154136 a
155137 case _ =>
156138 0
157139 }
158140 }
159141 let newReservedBalance = (currentReservedBalance + (pmtAmt * 260))
160142 if ((assetBalance(this, assetId58) >= newReservedBalance))
161143 then newReservedBalance
162144 else throw("Bet was rejected. Insufficient funds on game account.")
163145 }
164146
165147
166148 func decreaseReservedBalance (betAmt,assetId) = {
167149 let valueReservedBalance = getInteger(this, (assetId + "_Reserved"))
168150 let extractReservedBalance = match valueReservedBalance {
169151 case a: Int =>
170152 a
171153 case _ =>
172154 0
173155 }
174156 let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260))
175157 if ((decreaseReservedBalance >= 0))
176158 then decreaseReservedBalance
177159 else throw("Reserved balance couldn't be less than 0")
178160 }
179161
180162
181163 func drumIntToString (drumInt) = if ((10 > drumInt))
182164 then ("0" + toString(drumInt))
183165 else toString(drumInt)
184166
185167
186168 func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
187169 then 2600
188170 else if ((threeInARow == "666"))
189171 then 1300
190172 else if ((threeInARow == "555"))
191173 then 450
192174 else if ((threeInARow == "444"))
193175 then 200
194176 else if ((threeInARow == "333"))
195177 then 150
196178 else if ((threeInARow == "222"))
197179 then 110
198180 else if ((threeInARow == "111"))
199181 then 50
200182 else if ((twoInARow == "77"))
201183 then 270
202184 else if ((twoInARow == "66"))
203185 then 130
204186 else if ((twoInARow == "55"))
205187 then 45
206188 else if ((twoInARow == "44"))
207189 then 30
208190 else if ((twoInARow == "33"))
209191 then 20
210192 else if ((twoInARow == "22"))
211193 then 17
212194 else if ((twoInARow == "11"))
213195 then 13
214196 else 0
215197
216198
217199 func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
218200 then wavesId
219201 else if ((assetName == "BTC"))
220202 then btcId
221203 else if ((assetName == "ETH"))
222204 then ethId
223205 else if ((assetName == "LTC"))
224206 then ltcId
225207 else if ((assetName == "VST"))
226208 then vstId
227209 else if ((assetName == "WCT"))
228210 then wctId
229211 else throw("Asset name is incorrect")
230212
231213
232214 func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
233215 then "WAVES"
234216 else if ((assetId == btcId))
235217 then "BTC"
236218 else if ((assetId == ethId))
237219 then "ETH"
238220 else if ((assetId == ltcId))
239221 then "LTC"
240222 else if ((assetId == wctId))
241223 then "WCT"
242224 else if ((assetId == vstId))
243225 then "VST"
244226 else throw("AssetId is incorrect")
245227
246228
247229 func getCurrentIncome (assetName) = {
248230 let val = getInteger(this, (assetName + "_Income"))
249231 match val {
250232 case a: Int =>
251233 a
252234 case _ =>
253235 0
254236 }
255237 }
256238
257239
258240 func callerIsDepositOwner (assetName,callerPublicKey) = {
259241 let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
260242 if ((callerPublicKey == depositOwner))
261243 then callerPublicKey
262244 else throw("Only deposit owner can withdrawal deposit")
263245 }
264246
265247
266248 func assetNameCheck (asset) = if (if (if (if (if (if ((asset == "WAVES"))
267249 then true
268250 else (asset == "WAVES"))
269251 then true
270252 else (asset == "WAVES"))
271253 then true
272254 else (asset == "WAVES"))
273255 then true
274256 else (asset == "WAVES"))
275257 then true
276258 else (asset == "WAVES"))
277259 then asset
278260 else throw("Incorrect asset name provided")
279261
280262
281263 func getDepositData (assetName,keySuffix) = {
282264 let key = (assetName + "_DepositAmount")
283265 let val = getInteger(dividendProgramAddress, key)
284266 match val {
285267 case a: Int =>
286268 a
287269 case _ =>
288270 throw("Couldn't find dividend program start height")
289271 }
290272 }
291273
292274
293275 @Callable(i)
294276 func makeBet () = {
295277 let pmt = extract(i.payment)
296278 let betAmount = (pmt.amount - commission)
297279 let assetId = pmt.assetId
298280 let gameId = toBase58String(i.transactionId)
299281 let playerAddress = extract(i.caller)
300282 let pmtAssetName = assetBase58ToName(assetId)
301283 let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId)
302284 let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount)
303285 if (pmtAmtCorrect)
304286 then {
305287 let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height))
306288 WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)])
307289 }
308290 else throw("assetId is incorrect")
309291 }
310292
311293
312294
313295 @Callable(i)
314296 func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = {
315297 let dataList = getDataList(gameId)
316298 let gameState = dataList[0]
317299 let playerAddress = addressFromStringValue(dataList[1])
318300 let betAmt = parseIntValue(dataList[2])
319301 let assetName = dataList[3]
320302 let gameStart = parseIntValue(dataList[4])
321303 let assetId58 = assetNameToBase58(assetName)
322304 let setReservedBalance = decreaseReservedBalance(betAmt, assetName)
323305 let currentIncome = getCurrentIncome(assetName)
324306 let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1)
325307 let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2)
326308 let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3)
327309 let twoInARow = (drum1[drum1Int] + drum2[drum2Int])
328310 let threeInARow = (twoInARow + drum3[drum3Int])
329311 let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
330312 let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10)
331313 let gameTimeCheck = (gameTimeFrame > (height - gameStart))
332314 let stateCorrect = (gameState == stateAcc)
333315 if (stateCorrect)
334316 then if (gameTimeCheck)
335317 then if ((winAmt == 0))
336318 then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([ScriptTransfer(dividendProgramAddress, betAmt, assetId58)]))
337319 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"), (currentIncome - winAmt))]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetId58)]))
338320 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"), (currentIncome - (betAmt * 2)))]), TransferSet([ScriptTransfer(playerAddress, (betAmt * 2), assetId58)]))
339321 else throw("Game state is incorrect")
340322 }
341323
342324
343325
344326 @Callable(i)
345327 func withdrawDeposit (assetName) = {
346328 let assetId58 = assetNameToBase58(assetName)
347329 let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
348330 let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock")
349331 let depositDuration = getDepositData(assetName, "_DepositDurationBlock")
350332 let depositAmount = getDepositData(assetName, "_DepositAmount")
351333 let dividendProgramTimeIsOver = ((height - dividendStartHeight) >= depositDuration)
352334 if (dividendProgramTimeIsOver)
353335 then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)]))
354336 else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left."))
355337 }
356338
357339
358340 @Verifier(tx)
359341 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
360342 then match tx {
361343 case ttx: TransferTransaction =>
362344 false
363345 case sstx: SetScriptTransaction =>
364346 true
365347 case istx: InvokeScriptTransaction =>
366348 true
367349 case dtx: DataTransaction =>
368350 true
369351 case _ =>
370352 false
371353 }
372354 else false
373355

github/deemru/w8io/169f3d6 
55.80 ms