tx · HzETu3N33yyVGo3CdmwbvMHK6CGro4482xHM4ms1P381

3N26e1BbLcoF8kFqpm6Gddr7kxgoDe9REJb:  -0.02900000 Waves

2022.07.19 17:53 [2146784] smart account 3N26e1BbLcoF8kFqpm6Gddr7kxgoDe9REJb > SELF 0.00000000 Waves

{ "type": 13, "id": "HzETu3N33yyVGo3CdmwbvMHK6CGro4482xHM4ms1P381", "fee": 2900000, "feeAssetId": null, "timestamp": 1658242351941, "version": 2, "chainId": 84, "sender": "3N26e1BbLcoF8kFqpm6Gddr7kxgoDe9REJb", "senderPublicKey": "3krGBeGHSKGxasgdvrDcAML6LcR4761m3mGrStenhy5a", "proofs": [ "ap9QwF6fBdyR1Xpn9bcCW7VBdXPVqxrwNS5dpqVwjysDYD2NTeqHLtJjFgiwTgPwd1QBvBBxmFfBGTABKq4vRPn" ], "script": "base64:AAIFAAAAAAAAAEAIAhIDCgEIEgYKBAgIAQESABIDCgEIEgMKAQgSAwoBCBIFCgMBCAgSAwoBCBIHCgUBCAgICBIAEgcKBQEICAgIAAAANAAAAAATZ2FtZU1hc3RlclB1YmxpY0tleQEAAAAAAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAAQYmFzZTY0OlJTQVBVQkxJQwAAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAIAAAATR19TRVRVUEdBTUVTQ09VTlRFUgAAAAAVdXNlZEdhbWVzQ291bnRlckxhYmVsAgAAABJHX1VTRURHQU1FU0NPVU5URVIAAAAAEGRlYWxlclF1ZXVlTGFiZWwCAAAADUdfREVBTEVSUVVFVUUAAAAAD2dhbWVNYXhCZXRMYWJlbAIAAAAIR19NQVhCRVQBAAAAC2dhbWVzTWF4QmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAAA9nYW1lTWF4QmV0TGFiZWwBAAAAFGdhbWVzU2V0dXBHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABZzZXR1cEdhbWVzQ291bnRlckxhYmVsAQAAABNnYW1lc1VzZWRHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABV1c2VkR2FtZXNDb3VudGVyTGFiZWwBAAAADmdldERlYWxlclF1ZXVlAAAAAAkABB0AAAACBQAAAAR0aGlzBQAAABBkZWFsZXJRdWV1ZUxhYmVsAQAAABpnZXRHYW1lQ2FyZHNTaWduYXR1cmVMYWJlbAAAAAIAAAAKZ2FtZU51bWJlcgAAAARjYXJkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAApnYW1lTnVtYmVyAgAAAA9fQ0FSRFNJR05BVFVSRV8JAAGkAAAAAQUAAAAEY2FyZAEAAAARZ2V0R2FtZUNhcmRzTGFiZWwAAAACAAAACmdhbWVOdW1iZXIAAAAEY2FyZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAGX0NBUkRfCQABpAAAAAEFAAAABGNhcmQBAAAAFmdldEdhbWVTb3J0ZWRIYW5kTGFiZWwAAAACAAAACmdhbWVOdW1iZXIAAAADd2hvCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAAV8FAAAAA3dobwIAAAALX1NPUlRFREhBTkQBAAAAFWdldEdhbWVIYW5kU2NvcmVMYWJlbAAAAAIAAAAKZ2FtZU51bWJlcgAAAAN3aG8JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAABXwUAAAADd2hvAgAAAAZfU0NPUkUBAAAAFmdldEdhbWVBbnRlQW1vdW50TGFiZWwAAAABAAAACmdhbWVOdW1iZXIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAApnYW1lTnVtYmVyAgAAAAVfQU5URQEAAAASZ2V0R2FtZVBsYXllckxhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAHX1BMQVlFUgEAAAASZ2V0R2FtZVBheW91dExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAHX1BBWU9VVAEAAAARZ2V0R2FtZVN0YXRlTGFiZWwAAAABAAAACmdhbWVOdW1iZXIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAApnYW1lTnVtYmVyAgAAAAZfU1RBVEUBAAAAGmdldEdhbWVTaHVmZmVsT2ZmZXNldExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAHX09GRlNFVAEAAAAVZ2V0R2FtZUNhcmRzU2lnbmF0dXJlAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgUAAAAEY2FyZAEAAAAWZ2V0R2FtZVNvcnRlZEhhbmRDYXJkcwAAAAIAAAAKZ2FtZU51bWJlcgAAAAN3aG8JAAQdAAAAAgUAAAAEdGhpcwkBAAAAFmdldEdhbWVTb3J0ZWRIYW5kTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyBQAAAAN3aG8BAAAAEGdldEdhbWVIYW5kU2NvcmUAAAACAAAACmdhbWVOdW1iZXIAAAADd2hvCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lSGFuZFNjb3JlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyBQAAAAN3aG8BAAAADGdldEdhbWVDYXJkcwAAAAIAAAAKZ2FtZU51bWJlcgAAAARjYXJkCQAEHQAAAAIFAAAABHRoaXMJAQAAABFnZXRHYW1lQ2FyZHNMYWJlbAAAAAIFAAAACmdhbWVOdW1iZXIFAAAABGNhcmQBAAAADWdldEdhbWVQbGF5ZXIAAAABAAAACmdhbWVOdW1iZXIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEmdldEdhbWVQbGF5ZXJMYWJlbAAAAAEFAAAACmdhbWVOdW1iZXIBAAAADGdldEdhbWVTdGF0ZQAAAAEAAAAKZ2FtZU51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAARZ2V0R2FtZVN0YXRlTGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAABFnZXRHYW1lQW50ZUFtb3VudAAAAAEAAAAKZ2FtZU51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAAWZ2V0R2FtZUFudGVBbW91bnRMYWJlbAAAAAEFAAAACmdhbWVOdW1iZXIBAAAAFWdldEdhbWVTaHVmZmVsT2ZmZXNldAAAAAEAAAAKZ2FtZU51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAAaZ2V0R2FtZVNodWZmZWxPZmZlc2V0TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAAA1nZXRHYW1lUGF5b3V0AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABJnZXRHYW1lUGF5b3V0TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAABlnZXRQbGF5ZXJDdXJyZW50R2FtZUxhYmVsAAAAAQAAAAdhZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAACUF8FAAAAB2FkZHJlc3MCAAAADF9DVVJSRU5UR0FNRQEAAAAUZ2V0UGxheWVyQ3VycmVudEdhbWUAAAABAAAAB2FkZHJlc3MJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGWdldFBsYXllckN1cnJlbnRHYW1lTGFiZWwAAAABBQAAAAdhZGRyZXNzAQAAAAp2ZXJpZnlDYXJkAAAAAwAAAARjYXJkAAAACmdhbWVOdW1iZXIAAAAKY2FyZE51bWJlcgkACigAAAAEBQAAAAZTSEEyNTYJAAGbAAAAAQUAAAAEY2FyZAkAAlsAAAABCQABkQAAAAIJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAFWdldEdhbWVDYXJkc1NpZ25hdHVyZQAAAAIFAAAACmdhbWVOdW1iZXIFAAAACmNhcmROdW1iZXICAAAAASAAAAAAAAAAAAAFAAAACVJTQVBVQkxJQwEAAAAPY2hlY2tQZXJtaXNzaW9uAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAIhPQAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAATZ2FtZU1hc3RlclB1YmxpY0tleQEAAAASY3JlYXRlR2FtZU1ldGFkYXRhAAAAAgAAAAdhZGRyZXNzAAAABGFudGUEAAAADWdhbWVUb1Jlc2VydmUJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAE2dhbWVzVXNlZEdldENvdW50ZXIAAAAAAAAAAAAAAAABBAAAAAtkZWFsZXJRdWV1ZQkBAAAABXZhbHVlAAAAAQkBAAAADmdldERlYWxlclF1ZXVlAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVdXNlZEdhbWVzQ291bnRlckxhYmVsBQAAAA1nYW1lVG9SZXNlcnZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAZZ2V0UGxheWVyQ3VycmVudEdhbWVMYWJlbAAAAAEFAAAAB2FkZHJlc3MFAAAADWdhbWVUb1Jlc2VydmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRHYW1lU3RhdGVMYWJlbAAAAAEFAAAADWdhbWVUb1Jlc2VydmUAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRHYW1lQW50ZUFtb3VudExhYmVsAAAAAQUAAAANZ2FtZVRvUmVzZXJ2ZQUAAAAEYW50ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABBkZWFsZXJRdWV1ZUxhYmVsCQABLAAAAAIJAAEsAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAADmdldERlYWxlclF1ZXVlAAAAAAIAAAABLAkAAaQAAAABBQAAAA1nYW1lVG9SZXNlcnZlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJnZXRHYW1lUGxheWVyTGFiZWwAAAABBQAAAA1nYW1lVG9SZXNlcnZlBQAAAAdhZGRyZXNzBQAAAANuaWwBAAAADGdldEdhbWVTZXR1cAAAAAYAAAAKZ2FtZU51bWJlcgAAAApyYW5kb21pemVyAAAABmNhcmRzMAAAAAZjYXJkczEAAAAGY2FyZHMyAAAABmNhcmRzMwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAUAAAAKZ2FtZU51bWJlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEdhbWVTaHVmZmVsT2ZmZXNldExhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgUAAAAKcmFuZG9taXplcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyAAAAAAAAAAAABQAAAAZjYXJkczAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAQUAAAAGY2FyZHMxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABpnZXRHYW1lQ2FyZHNTaWduYXR1cmVM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bGF5ZXJOdW1iZXJzAAAAAAAAAAACAAAAAAAAAAAACQAAZAAAAAIJAABoAAAAAgkAAGgAAAACCQEAAAAQcGF5b3V0TXVsdGlwbGllcgAAAAEFAAAAC3BsYXllclZhbHVlBQAAAARhbnRlAAAAAAAAAAACCQAAaAAAAAIFAAAABGFudGUAAAAAAAAAAAIDAwkAAAAAAAACBQAAAAtwbGF5ZXJWYWx1ZQAAAAAAAAAAAgYJAAAAAAAAAgUAAAALcGxheWVyVmFsdWUAAAAAAAAAAAEEAAAAEnBsYXllcnNIaWdoZXN0UGFpcgkBAAAAEWhpZ2hlc3RQYWlyTnVtYmVyAAAAAQUAAAAQYWxsUGxheWVyTnVtYmVycwQAAAASZGVhbGVyc0hpZ2hlc3RQYWlyCQEAAAARaGlnaGVzdFBhaXJOdW1iZXIAAAABBQAAABBhbGxEZWFsZXJOdW1iZXJzAwkAAGYAAAACBQAAABJkZWFsZXJzSGlnaGVzdFBhaXIFAAAAEnBsYXllcnNIaWdoZXN0UGFpcgAAAAAAAAAAAAMJAABmAAAAAgUAAAAScGxheWVyc0hpZ2hlc3RQYWlyBQAAABJkZWFsZXJzSGlnaGVzdFBhaXIJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIJAQAAABBwYXlvdXRNdWx0aXBsaWVyAAAAAQUAAAALcGxheWVyVmFsdWUFAAAABGFudGUAAAAAAAAAAAIJAABoAAAAAgUAAAAEYW50ZQAAAAAAAAAAAgQAAAAVZGVhbGVyc0hpZ2hlc3ROb25QYWlyCQEAAAAXZ2V0SGlnaGVzdE5vblBhaXJOdW1iZXIAAAABBQAAABBhbGxEZWFsZXJOdW1iZXJzBAAAABZwbGF5ZXJzc0hpZ2hlc3ROb25QYWlyCQEAAAAXZ2V0SGlnaGVzdE5vblBhaXJOdW1iZXIAAAABBQAAABBhbGxQbGF5ZXJOdW1iZXJzAwkAAAAAAAACBQAAAAtwbGF5ZXJWYWx1ZQAAAAAAAAAAAgQAAAARcGxheWVyc0xvd2VzdFBhaXIJAQAAABBsb3dlc3RQYWlyTnVtYmVyAAAAAQUAAAAQYWxsUGxheWVyTnVtYmVycwQAAAARZGVhbGVyc0xvd2VzdFBhaXIJAQAAABBsb3dlc3RQYWlyTnVtYmVyAAAAAQUAAAAQYWxsRGVhbGVyTnVtYmVycwMJAABmAAAAAgUAAAARZGVhbGVyc0xvd2VzdFBhaXIFAAAAEXBsYXllcnNMb3dlc3RQYWlyAAAAAAAAAAAAAwkAAGYAAAACBQAAABFwbGF5ZXJzTG93ZXN0UGFpcgUAAAARZGVhbGVyc0xvd2VzdFBhaXIJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIJAQAAABBwYXlvdXRNdWx0aXBsaWVyAAAAAQUAAAALcGxheWVyVmFsdWUFAAAABGFudGUAAAAAAAAAAAIJAABoAAAAAgUAAAAEYW50ZQAAAAAAAAAAAgMJAABmAAAAAgUAAAAVZGVhbGVyc0hpZ2hlc3ROb25QYWlyBQAAABZwbGF5ZXJzc0hpZ2hlc3ROb25QYWlyAAAAAAAAAAAAAwkAAGYAAAACBQAAABZwbGF5ZXJzc0hpZ2hlc3ROb25QYWlyBQAAABVkZWFsZXJzSGlnaGVzdE5vblBhaXIJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIJAQAAABBwYXlvdXRNdWx0aXBsaWVyAAAAAQUAAAALcGxheWVyVmFsdWUFAAAABGFudGUAAAAAAAAAAAIJAABoAAAAAgUAAAAEYW50ZQAAAAAAAAAAAgkAAGQAAAACBQAAAARhbnRlCQAAaAAAAAIFAAAABGFudGUAAAAAAAAAAAIDCQAAZgAAAAIFAAAAFWRlYWxlcnNIaWdoZXN0Tm9uUGFpcgUAAAAWcGxheWVyc3NIaWdoZXN0Tm9uUGFpcgAAAAAAAAAAAAMJAABmAAAAAgUAAAAWcGxheWVyc3NIaWdoZXN0Tm9uUGFpcgUAAAAVZGVhbGVyc0hpZ2hlc3ROb25QYWlyCQAAZAAAAAIJAABoAAAAAgkAAGgAAAACCQEAAAAQcGF5b3V0TXVsdGlwbGllcgAAAAEFAAAAC3BsYXllclZhbHVlBQAAAARhbnRlAAAAAAAAAAACCQAAaAAAAAIFAAAABGFudGUAAAAAAAAAAAIEAAAAG2RlYWxlcnNzZWNvbmRIaWdoZXN0Tm9uUGFpcgkBAAAAHnNlY29uZEhpZ2hlc3ROb25QYWlyT2ZQYWlySGFuZAAAAAEFAAAAEGFsbERlYWxlck51bWJlcnMEAAAAG3BsYXllcnNzZWNvbmRIaWdoZXN0Tm9uUGFpcgkBAAAAHnNlY29uZEhpZ2hlc3ROb25QYWlyT2ZQYWlySGFuZAAAAAEFAAAAEGFsbFBsYXllck51bWJlcnMDCQAAZgAAAAIFAAAAG2RlYWxlcnNzZWNvbmRIaWdoZXN0Tm9uUGFpcgUAAAAbcGxheWVyc3NlY29uZEhpZ2hlc3ROb25QYWlyAAAAAAAAAAAAAwkAAGYAAAACBQAAABtwbGF5ZXJzc2Vjb25kSGlnaGVzdE5vblBhaXIFAAAAG2RlYWxlcnNzZWNvbmRIaWdoZXN0Tm9uUGFpcgkAAGQAAAACCQAAaAAAAAIJAABoAAAAAgkBAAAAEHBheW91dE11bHRpcGxpZXIAAAABBQAAAAtwbGF5ZXJWYWx1ZQUAAAAEYW50ZQAAAAAAAAAAAgkAAGgAAAACBQAAAARhbnRlAAAAAAAAAAACBAAAABpkZWFsZXJzdGhpcmRIaWdoZXN0Tm9uUGFpcgkBAAAAHXRoaXJkSGlnaGVzdE5vblBhaXJPZlBhaXJIYW5kAAAAAQUAAAAQYWxsRGVhbGVyTnVtYmVycwQAAAAacGxheWVyc3RoaXJkSGlnaGVzdE5vblBhaXIJAQAAAB10aGlyZEhpZ2hlc3ROb25QYWlyT2ZQYWlySGFuZAAAAAEFAAAAEGFsbFBsYXllck51bWJlcnMDCQAAZgAAAAIFAAAAGmRlYWxlcnN0aGlyZEhpZ2hlc3ROb25QYWlyBQAAABpwbGF5ZXJzdGhpcmRIaWdoZXN0Tm9uUGFpcgAAAAAAAAAAAAMJAABmAAAAAgUAAAAacGxheWVyc3RoaXJkSGlnaGVzdE5vblBhaXIFAAAAGmRlYWxlcnN0aGlyZEhpZ2hlc3ROb25QYWlyCQAAZAAAAAIJAABoAAAAAgkAAGgAAAACCQEAAAAQcGF5b3V0TXVsdGlwbGllcgAAAAEFAAAAC3BsYXllclZhbHVlBQAAAARhbnRlAAAAAAAAAAACCQAAaAAAAAIFAAAABGFudGUAAAAAAAAAAAIJAABkAAAAAgUAAAAEYW50ZQkAAGgAAAACBQAAAARhbnRlAAAAAAAAAAACBAAAABBoaWdoZXN0Q2FyZFRoZXJlCQEAAAARd2hvSGFzSGlnaGVzdENhcmQAAAACBQAAABBhbGxQbGF5ZXJOdW1iZXJzBQAAABBhbGxEZWFsZXJOdW1iZXJzAwkAAAAAAAACBQAAABBoaWdoZXN0Q2FyZFRoZXJlAAAAAAAAAAABCQAAZAAAAAIJAABoAAAAAgkAAGgAAAACCQEAAAAQcGF5b3V0TXVsdGlwbGllcgAAAAEFAAAAC3BsYXllclZhbHVlBQAAAARhbnRlAAAAAAAAAAACCQAAaAAAAAIFAAAABGFudGUAAAAAAAAAAAIDCQAAAAAAAAIFAAAAEGhpZ2hlc3RDYXJkVGhlcmUAAAAAAAAAAAIAAAAAAAAAAAAJAABkAAAAAgUAAAAEYW50ZQkAAGgAAAACBQAAAARhbnRlAAAAAAAAAAACAwkAAGYAAAACBQAAAAtwbGF5ZXJWYWx1ZQUAAAALZGVhbGVyVmFsdWUJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIJAQAAABBwYXlvdXRNdWx0aXBsaWVyAAAAAQUAAAALcGxheWVyVmFsdWUFAAAABGFudGUAAAAAAAAAAAIJAABoAAAAAgUAAAAEYW50ZQAAAAAAAAAAAgAAAAAAAAAAAAkAAGgAAAACBQAAAARhbnRlAAAAAAAAAAAEAAAACwAAAAFpAQAAABN0ZXN0UGFpclNpbmdsZUNhcmRzAAAAAQAAAAxvcmRlcmVkQ2FyZHMEAAAABGhhbmQJAAS1AAAAAgUAAAAMb3JkZXJlZENhcmRzAgAAAAErBAAAAAphbGxOdW1iZXJzCQAETQAAAAIJAARNAAAAAgkABE0AAAACCQAETQAAAAIJAARNAAAAAgUAAAADbmlsCQEAAAAJZ2V0TnVtYmVyAAAAAQkAAZEAAAACBQAAAARoYW5kAAAAAAAAAAAACQEAAAAJZ2V0TnVtYmVyAAAAAQkAAZEAAAACBQAAAARoYW5kAAAAAAAAAAABCQEAAAAJZ2V0TnVtYmVyAAAAAQkAAZEAAAACBQAAAARoYW5kAAAAAAAAAAACCQEAAAAJZ2V0TnVtYmVyAAAAAQkAAZEAAAACBQAAAARoYW5kAAAAAAAAAAADCQEAAAAJZ2V0TnVtYmVyAAAAAQkAAZEAAAACBQAAAARoYW5kAAAAAAAAAAAECQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABCQEAAAAXZ2V0SGlnaGVzdE5vblBhaXJOdW1iZXIAAAABBQAAAAphbGxOdW1iZXJzAgAAAAEtCQABpAAAAAEJAQAAAB5zZWNvbmRIaWdoZXN0Tm9uUGFpck9mUGFpckhhbmQAAAABBQAAAAphbGxOdW1iZXJzAgAAAAEtCQABpAAAAAEJAQAAAB10aGlyZEhpZ2hlc3ROb25QYWlyT2ZQYWlySGFuZAAAAAEFAAAACmFsbE51bWJlcnMAAAABaQEAAAAKdGVzdFBheW91dAAAAAQAAAAKcGxheWVySGFuZAAAAApkZWFsZXJIYW5kAAAABGFudGUAAAALcGxheWVyU2NvcmUJAAACAAAAAQkAAaQAAAABCQEAAAAPZ2V0UGxheWVyUGF5b3V0AAAABAUAAAAKcGxheWVySGFuZAUAAAAKZGVhbGVySGFuZAUAAAAEYW50ZQUAAAALcGxheWVyU2NvcmUAAAABaQEAAAAIaW5pdEdhbWUAAAAAAwkBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAABJpbml0R2FtZV9GT1JCQklERU4EAAAAByRtYXRjaDAJAQAAABRnYW1lc1NldHVwR2V0Q291bnRlcgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAMR0FNRVNDT1VOVEVSBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAEUlOSVRfQUxSRUFEWV9ET05FCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABZzZXR1cEdhbWVzQ291bnRlckxhYmVsAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABV1c2VkR2FtZXNDb3VudGVyTGFiZWwAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2dhbWVNYXhCZXRMYWJlbAAAAAAABfXhAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABBkZWFsZXJRdWV1ZUxhYmVsAgAAAAAFAAAAA25pbAAAAAFpAQAAAAl0ZXN0U2NvcmUAAAABAAAADG9yZGVyZWRDYXJkcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAJU2NvcmUgaXMgCQABpAAAAAEJAQAAAAhnZXRTY29yZQAAAAEJAAS1AAAAAgUAAAAMb3JkZXJlZENhcmRzAgAAAAErAgAAAAEuAAAAAWkBAAAAD3Rlc3RIaWdoZXN0UGFpcgAAAAEAAAAMb3JkZXJlZENhcmRzBAAAAARoYW5kCQAEtQAAAAIFAAAADG9yZGVyZWRDYXJkcwIAAAABKwQAAAAKYWxsTnVtYmVycwkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABE0AAAACCQAETQAAAAIFAAAAA25pbAkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAAkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAQkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAgkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAwkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAABAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAARSGlnaGVzdCBQYWlycyBpcyAJAAGkAAAAAQkBAAAAEWhpZ2hlc3RQYWlyTnVtYmVyAAAAAQUAAAAKYWxsTnVtYmVycwIAAAABLgAAAAFpAQAAAA50ZXN0TG93ZXN0UGFpcgAAAAEAAAAMb3JkZXJlZENhcmRzBAAAAARoYW5kCQAEtQAAAAIFAAAADG9yZGVyZWRDYXJkcwIAAAABKwQAAAAKYWxsTnVtYmVycwkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABE0AAAACCQAETQAAAAIFAAAAA25pbAkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAAkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAQkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAgkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAAAwkBAAAACWdldE51bWJlcgAAAAEJAAGRAAAAAgUAAAAEaGFuZAAAAAAAAAAABAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAARSGlnaGVzdCBQYWlycyBpcyAJAAGkAAAAAQkBAAAAEGxvd2VzdFBhaXJOdW1iZXIAAAABBQAAAAphbGxOdW1iZXJzAgAAAAEuAAAAAWkBAAAADXJldmVhbFJlc3VsdHMAAAADAAAAC2N1cnJlbnRHYW1lAAAABWNhcmQzAAAAEmRlYWxlck9yZGVyZWRDYXJkcwMJAQAAAA9jaGVja1Blcm1pc3Npb24AAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAATc2V0dXBHYW1lX0ZPUkJCSURFTgQAAAALZGVhbGVyUXVldWUJAQAAAAV2YWx1ZQAAAAEJAQAAAA5nZXREZWFsZXJRdWV1ZQAAAAAEAAAAEW5leHRHYW1lVG9Qcm9jZXNzCQABkQAAAAIJAAS1AAAAAgUAAAALZGVhbGVyUXVldWUCAAAAASwAAAAAAAAAAAEDCQAAAAAAAAIFAAAAEW5leHRHYW1lVG9Qcm9jZXNzCQABpAAAAAEFAAAAC2N1cnJlbnRHYW1lAwkBAAAACnZlcmlmeUNhcmQAAAADBQAAAAVjYXJkMwUAAAALY3VycmVudEdhbWUAAAAAAAAAAAMEAAAABGFudGUJAQAAAAV2YWx1ZQAAAAEJAQAAABFnZXRHYW1lQW50ZUFtb3VudAAAAAEFAAAAC2N1cnJlbnRHYW1lBAAAAAdhZGRyZXNzCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAAAV2YWx1ZQAAAAEJAQAAAA1nZXRHYW1lUGxheWVyAAAAAQUAAAALY3VycmVudEdhbWUEAAAAE3BsYXllcnNPcmRlcmVkQ2FyZHMJAQAAAAV2YWx1ZQAAAAEJAQAAABZnZXRHYW1lU29ydGVkSGFuZENhcmRzAAAAAgUAAAALY3VycmVudEdhbWUCAAAABlBMQVlFUgQAAAAGcGF5b3V0CQEAAAAPZ2V0UGxheWVyUGF5b3V0AAAABAUAAAATcGxheWVyc09yZGVyZWRDYXJkcwUAAAASZGVhbGVyT3JkZXJlZENhcmRzBQAAAARhbnRlCQEAAAAFdmFsdWUAAAABCQEAAAAQZ2V0R2FtZUhhbmRTY29yZQAAAAIFAAAAC2N1cnJlbnRHYW1lAgAAAAZQTEFZRVIJAARMAAAAAgkBAAAA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", "height": 2146784, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4pBqueShucN232SoFZSQ8JqScyN7A4C8agrSjBC9Rz1x Next: AGRoNAGMxs2CLp2tFSFfPHjYruQecqcLuFbuLS2dsiJq Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let gameMasterPublicKey = base58'5u9HcdDt4d3VhGWFY8Znwi9162MFpZJHEsmr1zZDJXhz'
4+let gameMasterPublicKey = base58''
55
6-let RSAPUBLIC = fromBase64String("base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ==")
6+let RSAPUBLIC = fromBase64String("base64:RSAPUBLIC")
77
88 let setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
99
487487 else if ((action == "raise"))
488488 then {
489489 let ante = value(getGameAnteAmount(currentGame))
490- let pay = i.payments[0].amount
490+ let pay = (i.payments[0].amount + i.fee)
491491 if (if ((size(i.payments) != 1))
492492 then true
493493 else (pay != (ante * 2)))
494- then throw((("Payment must be 2x the ante (" + toString((ante * 2))) + ")"))
494+ then throw((("Fee must be 2x the ante (" + toString((ante * 2))) + ")"))
495495 else [IntegerEntry(getGameStateLabel(currentGame), 3), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(currentGame)))]
496496 }
497497 else [IntegerEntry(getGameStateLabel(currentGame), 6)]
532532 then throw("Only one mayment allowed")
533533 else {
534534 let p = i.payments[0]
535- let ante = p.amount
535+ let ante = (p.amount + i.fee)
536536 let address = toBase58String(i.caller.bytes)
537537 if ((value(gamesUsedGetCounter()) >= value(gamesSetupGetCounter())))
538538 then throw("No available set up games to use.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let gameMasterPublicKey = base58'5u9HcdDt4d3VhGWFY8Znwi9162MFpZJHEsmr1zZDJXhz'
4+let gameMasterPublicKey = base58''
55
6-let RSAPUBLIC = fromBase64String("base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ==")
6+let RSAPUBLIC = fromBase64String("base64:RSAPUBLIC")
77
88 let setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
99
1010 let usedGamesCounterLabel = "G_USEDGAMESCOUNTER"
1111
1212 let dealerQueueLabel = "G_DEALERQUEUE"
1313
1414 let gameMaxBetLabel = "G_MAXBET"
1515
1616 func gamesMaxBet () = getInteger(this, gameMaxBetLabel)
1717
1818
1919 func gamesSetupGetCounter () = getInteger(this, setupGamesCounterLabel)
2020
2121
2222 func gamesUsedGetCounter () = getInteger(this, usedGamesCounterLabel)
2323
2424
2525 func getDealerQueue () = getString(this, dealerQueueLabel)
2626
2727
2828 func getGameCardsSignatureLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARDSIGNATURE_") + toString(card))
2929
3030
3131 func getGameCardsLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARD_") + toString(card))
3232
3333
3434 func getGameSortedHandLabel (gameNumber,who) = (((("G_" + toString(gameNumber)) + "_") + who) + "_SORTEDHAND")
3535
3636
3737 func getGameHandScoreLabel (gameNumber,who) = (((("G_" + toString(gameNumber)) + "_") + who) + "_SCORE")
3838
3939
4040 func getGameAnteAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_ANTE")
4141
4242
4343 func getGamePlayerLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_PLAYER")
4444
4545
4646 func getGamePayoutLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_PAYOUT")
4747
4848
4949 func getGameStateLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_STATE")
5050
5151
5252 func getGameShuffelOffesetLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_OFFSET")
5353
5454
5555 func getGameCardsSignature (gameNumber,card) = getString(this, getGameCardsSignatureLabel(gameNumber, card))
5656
5757
5858 func getGameSortedHandCards (gameNumber,who) = getString(this, getGameSortedHandLabel(gameNumber, who))
5959
6060
6161 func getGameHandScore (gameNumber,who) = getInteger(this, getGameHandScoreLabel(gameNumber, who))
6262
6363
6464 func getGameCards (gameNumber,card) = getString(this, getGameCardsLabel(gameNumber, card))
6565
6666
6767 func getGamePlayer (gameNumber) = getString(this, getGamePlayerLabel(gameNumber))
6868
6969
7070 func getGameState (gameNumber) = getInteger(this, getGameStateLabel(gameNumber))
7171
7272
7373 func getGameAnteAmount (gameNumber) = getInteger(this, getGameAnteAmountLabel(gameNumber))
7474
7575
7676 func getGameShuffelOffeset (gameNumber) = getInteger(this, getGameShuffelOffesetLabel(gameNumber))
7777
7878
7979 func getGamePayout (gameNumber) = getInteger(this, getGamePayoutLabel(gameNumber))
8080
8181
8282 func getPlayerCurrentGameLabel (address) = (("P_" + address) + "_CURRENTGAME")
8383
8484
8585 func getPlayerCurrentGame (address) = getInteger(this, getPlayerCurrentGameLabel(address))
8686
8787
8888 func verifyCard (card,gameNumber,cardNumber) = rsaVerify_16Kb(SHA256, toBytes(card), fromBase64String(split(value(getGameCardsSignature(gameNumber, cardNumber)), " ")[0]), RSAPUBLIC)
8989
9090
9191 func checkPermission (callerPublicKey) = (callerPublicKey != gameMasterPublicKey)
9292
9393
9494 func createGameMetadata (address,ante) = {
9595 let gameToReserve = (value(gamesUsedGetCounter()) + 1)
9696 let dealerQueue = value(getDealerQueue())
9797 [IntegerEntry(usedGamesCounterLabel, gameToReserve), IntegerEntry(getPlayerCurrentGameLabel(address), gameToReserve), IntegerEntry(getGameStateLabel(gameToReserve), 1), IntegerEntry(getGameAnteAmountLabel(gameToReserve), ante), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(gameToReserve))), StringEntry(getGamePlayerLabel(gameToReserve), address)]
9898 }
9999
100100
101101 func getGameSetup (gameNumber,randomizer,cards0,cards1,cards2,cards3) = [IntegerEntry(setupGamesCounterLabel, gameNumber), IntegerEntry(getGameStateLabel(gameNumber), 0), IntegerEntry(getGameShuffelOffesetLabel(gameNumber), randomizer), StringEntry(getGameCardsSignatureLabel(gameNumber, 0), cards0), StringEntry(getGameCardsSignatureLabel(gameNumber, 1), cards1), StringEntry(getGameCardsSignatureLabel(gameNumber, 2), cards2), StringEntry(getGameCardsSignatureLabel(gameNumber, 3), cards3)]
102102
103103
104104 func getSuit (card) = split(card, "/")[1]
105105
106106
107107 func getNumber (card) = value(parseInt(split(card, "/")[0]))
108108
109109
110110 func isFourOfAKind (hand) = if (if ((hand[0] == hand[3]))
111111 then true
112112 else (hand[1] == hand[4]))
113113 then true
114114 else false
115115
116116
117117 func isFullHouse (hand) = if (if (if ((hand[0] == hand[2]))
118118 then (hand[3] == hand[4])
119119 else false)
120120 then true
121121 else if ((hand[0] == hand[1]))
122122 then (hand[2] == hand[4])
123123 else false)
124124 then true
125125 else false
126126
127127
128128 func isFlush (hand) = {
129129 let firstSuit = hand[0]
130130 if (if (if (if ((hand[1] == firstSuit))
131131 then (hand[2] == firstSuit)
132132 else false)
133133 then (hand[3] == firstSuit)
134134 else false)
135135 then (hand[4] == firstSuit)
136136 else false)
137137 then true
138138 else false
139139 }
140140
141141
142142 func isStraight (hand) = {
143143 let largest = hand[4]
144144 if (if (if (if ((hand[3] == (largest - 1)))
145145 then (hand[2] == (largest - 2))
146146 else false)
147147 then (hand[1] == (largest - 3))
148148 else false)
149149 then (hand[0] == (largest - 4))
150150 else false)
151151 then true
152152 else false
153153 }
154154
155155
156156 func isThreeOfKind (hand) = if (if (if ((hand[0] == hand[2]))
157157 then true
158158 else (hand[1] == hand[3]))
159159 then true
160160 else (hand[2] == hand[4]))
161161 then true
162162 else false
163163
164164
165165 func isTwoPair (hand) = {
166166 let numberOfPairs = 0
167167 let matching = [(hand[0] == hand[1]), (hand[1] == hand[2]), (hand[2] == hand[3]), (hand[3] == hand[4])]
168168 if (if (if ((indexOf(matching, true) != lastIndexOf(matching, true)))
169169 then (indexOf(matching, true) != unit)
170170 else false)
171171 then (lastIndexOf(matching, true) != unit)
172172 else false)
173173 then true
174174 else false
175175 }
176176
177177
178178 func isOnePair (hand) = if (if (if (if ((hand[0] == hand[1]))
179179 then true
180180 else (hand[1] == hand[2]))
181181 then true
182182 else (hand[2] == hand[3]))
183183 then true
184184 else (hand[3] == hand[4]))
185185 then true
186186 else false
187187
188188
189189 func getScore (hand) = {
190190 let allNumbers = (((((nil :+ getNumber(hand[0])) :+ getNumber(hand[1])) :+ getNumber(hand[2])) :+ getNumber(hand[3])) :+ getNumber(hand[4]))
191191 let allSuits = (((((nil :+ getSuit(hand[0])) :+ getSuit(hand[1])) :+ getSuit(hand[2])) :+ getSuit(hand[3])) :+ getSuit(hand[4]))
192192 if (isStraight(allNumbers))
193193 then if (isFlush(allSuits))
194194 then if ((allNumbers[4] == 14))
195195 then 9
196196 else 8
197197 else 4
198198 else if (isFourOfAKind(allNumbers))
199199 then 7
200200 else if (isFullHouse(allNumbers))
201201 then 6
202202 else if (isFlush(allSuits))
203203 then 5
204204 else if (isThreeOfKind(allNumbers))
205205 then 3
206206 else if (isTwoPair(allNumbers))
207207 then 2
208208 else if (isOnePair(allNumbers))
209209 then 1
210210 else 0
211211 }
212212
213213
214214 func payoutMultiplier (playerScore) = if ((playerScore == 9))
215215 then 101
216216 else if ((playerScore == 8))
217217 then 51
218218 else if ((playerScore == 7))
219219 then 21
220220 else if ((playerScore == 6))
221221 then 8
222222 else if ((playerScore == 5))
223223 then 6
224224 else if ((playerScore == 4))
225225 then 5
226226 else if ((playerScore == 3))
227227 then 4
228228 else if ((playerScore == 2))
229229 then 3
230230 else 2
231231
232232
233233 func whoHasHighestCard (allPlayerNumbers,allDealerNumbers) = if ((allDealerNumbers[4] > allPlayerNumbers[4]))
234234 then 2
235235 else if ((allPlayerNumbers[4] > allDealerNumbers[4]))
236236 then 1
237237 else if ((allDealerNumbers[3] > allPlayerNumbers[3]))
238238 then 2
239239 else if ((allPlayerNumbers[3] > allDealerNumbers[3]))
240240 then 1
241241 else if ((allDealerNumbers[2] > allPlayerNumbers[2]))
242242 then 2
243243 else if ((allPlayerNumbers[2] > allDealerNumbers[2]))
244244 then 1
245245 else if ((allDealerNumbers[1] > allPlayerNumbers[1]))
246246 then 2
247247 else if ((allPlayerNumbers[1] > allDealerNumbers[1]))
248248 then 1
249249 else if ((allDealerNumbers[0] > allPlayerNumbers[0]))
250250 then 2
251251 else if ((allPlayerNumbers[0] > allDealerNumbers[0]))
252252 then 1
253253 else 0
254254
255255
256256 func highestPairNumber (cardNumbers) = if ((cardNumbers[4] == cardNumbers[3]))
257257 then cardNumbers[4]
258258 else if ((cardNumbers[3] == cardNumbers[2]))
259259 then cardNumbers[3]
260260 else if ((cardNumbers[2] == cardNumbers[1]))
261261 then cardNumbers[2]
262262 else if ((cardNumbers[1] == cardNumbers[0]))
263263 then cardNumbers[1]
264264 else -1
265265
266266
267267 func lowestPairNumber (cardNumbers) = if ((cardNumbers[0] == cardNumbers[1]))
268268 then cardNumbers[1]
269269 else if ((cardNumbers[1] == cardNumbers[2]))
270270 then cardNumbers[1]
271271 else if ((cardNumbers[2] == cardNumbers[3]))
272272 then cardNumbers[2]
273273 else if ((cardNumbers[3] == cardNumbers[4]))
274274 then cardNumbers[3]
275275 else -1
276276
277277
278278 func getHighestNonPairNumber (cardNumbers) = if ((cardNumbers[4] != cardNumbers[3]))
279279 then cardNumbers[4]
280280 else if ((cardNumbers[2] != cardNumbers[1]))
281281 then cardNumbers[2]
282282 else cardNumbers[0]
283283
284284
285285 func secondHighestNonPairOfPairHand (cardNumbers) = if ((cardNumbers[3] == cardNumbers[2]))
286286 then cardNumbers[1]
287287 else if ((cardNumbers[2] == cardNumbers[1]))
288288 then cardNumbers[3]
289289 else cardNumbers[2]
290290
291291
292292 func thirdHighestNonPairOfPairHand (cardNumbers) = if ((cardNumbers[0] == cardNumbers[1]))
293293 then cardNumbers[2]
294294 else cardNumbers[0]
295295
296296
297297 func getPlayerPayout (playerHand,dealerHand,ante,playerScore) = {
298298 let playerCards = split(playerHand, "+")
299299 let playerValue = playerScore
300300 let dealerCards = split(dealerHand, "+")
301301 let dealerValue = getScore(dealerCards)
302302 let allPlayerNumbers = (((((nil :+ getNumber(playerCards[0])) :+ getNumber(playerCards[1])) :+ getNumber(playerCards[2])) :+ getNumber(playerCards[3])) :+ getNumber(playerCards[4]))
303303 let allDealerNumbers = (((((nil :+ getNumber(dealerCards[0])) :+ getNumber(dealerCards[1])) :+ getNumber(dealerCards[2])) :+ getNumber(dealerCards[3])) :+ getNumber(dealerCards[4]))
304304 if (if (if ((indexOf(dealerHand, "13") != unit))
305305 then (indexOf(dealerHand, "14") != unit)
306306 else false)
307307 then true
308308 else (dealerValue >= 1))
309309 then if ((playerValue == dealerValue))
310310 then if ((playerValue == 9))
311311 then (ante + (ante * 2))
312312 else if (if ((playerValue == 8))
313313 then true
314314 else (playerValue == 4))
315315 then if ((allDealerNumbers[4] > allPlayerNumbers[4]))
316316 then 0
317317 else if ((allDealerNumbers[4] == allPlayerNumbers[4]))
318318 then (ante + (ante * 2))
319319 else (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
320320 else if ((playerValue == 7))
321321 then if ((allDealerNumbers[1] > allPlayerNumbers[1]))
322322 then 0
323323 else (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
324324 else if ((playerValue == 6))
325325 then if ((allDealerNumbers[2] > allPlayerNumbers[2]))
326326 then 0
327327 else (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
328328 else if ((playerValue == 5))
329329 then {
330330 let highestCardThere = whoHasHighestCard(allPlayerNumbers, allDealerNumbers)
331331 if ((highestCardThere == 1))
332332 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
333333 else if ((highestCardThere == 2))
334334 then 0
335335 else (ante + (ante * 2))
336336 }
337337 else if ((playerValue == 3))
338338 then if ((allDealerNumbers[2] > allPlayerNumbers[2]))
339339 then 0
340340 else (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
341341 else if (if ((playerValue == 2))
342342 then true
343343 else (playerValue == 1))
344344 then {
345345 let playersHighestPair = highestPairNumber(allPlayerNumbers)
346346 let dealersHighestPair = highestPairNumber(allDealerNumbers)
347347 if ((dealersHighestPair > playersHighestPair))
348348 then 0
349349 else if ((playersHighestPair > dealersHighestPair))
350350 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
351351 else {
352352 let dealersHighestNonPair = getHighestNonPairNumber(allDealerNumbers)
353353 let playerssHighestNonPair = getHighestNonPairNumber(allPlayerNumbers)
354354 if ((playerValue == 2))
355355 then {
356356 let playersLowestPair = lowestPairNumber(allPlayerNumbers)
357357 let dealersLowestPair = lowestPairNumber(allDealerNumbers)
358358 if ((dealersLowestPair > playersLowestPair))
359359 then 0
360360 else if ((playersLowestPair > dealersLowestPair))
361361 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
362362 else if ((dealersHighestNonPair > playerssHighestNonPair))
363363 then 0
364364 else if ((playerssHighestNonPair > dealersHighestNonPair))
365365 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
366366 else (ante + (ante * 2))
367367 }
368368 else if ((dealersHighestNonPair > playerssHighestNonPair))
369369 then 0
370370 else if ((playerssHighestNonPair > dealersHighestNonPair))
371371 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
372372 else {
373373 let dealerssecondHighestNonPair = secondHighestNonPairOfPairHand(allDealerNumbers)
374374 let playerssecondHighestNonPair = secondHighestNonPairOfPairHand(allPlayerNumbers)
375375 if ((dealerssecondHighestNonPair > playerssecondHighestNonPair))
376376 then 0
377377 else if ((playerssecondHighestNonPair > dealerssecondHighestNonPair))
378378 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
379379 else {
380380 let dealersthirdHighestNonPair = thirdHighestNonPairOfPairHand(allDealerNumbers)
381381 let playersthirdHighestNonPair = thirdHighestNonPairOfPairHand(allPlayerNumbers)
382382 if ((dealersthirdHighestNonPair > playersthirdHighestNonPair))
383383 then 0
384384 else if ((playersthirdHighestNonPair > dealersthirdHighestNonPair))
385385 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
386386 else (ante + (ante * 2))
387387 }
388388 }
389389 }
390390 }
391391 else {
392392 let highestCardThere = whoHasHighestCard(allPlayerNumbers, allDealerNumbers)
393393 if ((highestCardThere == 1))
394394 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
395395 else if ((highestCardThere == 2))
396396 then 0
397397 else (ante + (ante * 2))
398398 }
399399 else if ((playerValue > dealerValue))
400400 then (((payoutMultiplier(playerValue) * ante) * 2) + (ante * 2))
401401 else 0
402402 else (ante * 4)
403403 }
404404
405405
406406 @Callable(i)
407407 func testPairSingleCards (orderedCards) = {
408408 let hand = split(orderedCards, "+")
409409 let allNumbers = (((((nil :+ getNumber(hand[0])) :+ getNumber(hand[1])) :+ getNumber(hand[2])) :+ getNumber(hand[3])) :+ getNumber(hand[4]))
410410 throw(((((toString(getHighestNonPairNumber(allNumbers)) + "-") + toString(secondHighestNonPairOfPairHand(allNumbers))) + "-") + toString(thirdHighestNonPairOfPairHand(allNumbers))))
411411 }
412412
413413
414414
415415 @Callable(i)
416416 func testPayout (playerHand,dealerHand,ante,playerScore) = throw(toString(getPlayerPayout(playerHand, dealerHand, ante, playerScore)))
417417
418418
419419
420420 @Callable(i)
421421 func initGame () = if (checkPermission(i.callerPublicKey))
422422 then throw("initGame_FORBBIDEN")
423423 else match gamesSetupGetCounter() {
424424 case GAMESCOUNTER: Int =>
425425 throw("INIT_ALREADY_DONE")
426426 case _ =>
427427 [IntegerEntry(setupGamesCounterLabel, 0), IntegerEntry(usedGamesCounterLabel, 0), IntegerEntry(gameMaxBetLabel, 100000000), StringEntry(dealerQueueLabel, "")]
428428 }
429429
430430
431431
432432 @Callable(i)
433433 func testScore (orderedCards) = throw((("Score is " + toString(getScore(split(orderedCards, "+")))) + "."))
434434
435435
436436
437437 @Callable(i)
438438 func testHighestPair (orderedCards) = {
439439 let hand = split(orderedCards, "+")
440440 let allNumbers = (((((nil :+ getNumber(hand[0])) :+ getNumber(hand[1])) :+ getNumber(hand[2])) :+ getNumber(hand[3])) :+ getNumber(hand[4]))
441441 throw((("Highest Pairs is " + toString(highestPairNumber(allNumbers))) + "."))
442442 }
443443
444444
445445
446446 @Callable(i)
447447 func testLowestPair (orderedCards) = {
448448 let hand = split(orderedCards, "+")
449449 let allNumbers = (((((nil :+ getNumber(hand[0])) :+ getNumber(hand[1])) :+ getNumber(hand[2])) :+ getNumber(hand[3])) :+ getNumber(hand[4]))
450450 throw((("Highest Pairs is " + toString(lowestPairNumber(allNumbers))) + "."))
451451 }
452452
453453
454454
455455 @Callable(i)
456456 func revealResults (currentGame,card3,dealerOrderedCards) = if (checkPermission(i.callerPublicKey))
457457 then throw("setupGame_FORBBIDEN")
458458 else {
459459 let dealerQueue = value(getDealerQueue())
460460 let nextGameToProcess = split(dealerQueue, ",")[1]
461461 if ((nextGameToProcess == toString(currentGame)))
462462 then if (verifyCard(card3, currentGame, 3))
463463 then {
464464 let ante = value(getGameAnteAmount(currentGame))
465465 let address = value(addressFromString(value(getGamePlayer(currentGame))))
466466 let playersOrderedCards = value(getGameSortedHandCards(currentGame, "PLAYER"))
467467 let payout = getPlayerPayout(playersOrderedCards, dealerOrderedCards, ante, value(getGameHandScore(currentGame, "PLAYER")))
468468 [IntegerEntry(getGameStateLabel(currentGame), 4), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), IntegerEntry(getGamePayoutLabel(currentGame), payout), StringEntry(getGameSortedHandLabel(currentGame, "DEALER"), dealerOrderedCards), ScriptTransfer(address, payout, unit)]
469469 }
470470 else throw("One of the cards failed to be verified.")
471471 else throw(("The next game to process is " + nextGameToProcess))
472472 }
473473
474474
475475
476476 @Callable(i)
477477 func foldOrRaise (action) = {
478478 let address = toBase58String(i.caller.bytes)
479479 if (if ((action != "fold"))
480480 then (action != "raise")
481481 else false)
482482 then throw("Invalid action.")
483483 else {
484484 let currentGame = value(getPlayerCurrentGame(address))
485485 if (value((getGameState(currentGame) != 2)))
486486 then throw("Game is not in correct state.")
487487 else if ((action == "raise"))
488488 then {
489489 let ante = value(getGameAnteAmount(currentGame))
490- let pay = i.payments[0].amount
490+ let pay = (i.payments[0].amount + i.fee)
491491 if (if ((size(i.payments) != 1))
492492 then true
493493 else (pay != (ante * 2)))
494- then throw((("Payment must be 2x the ante (" + toString((ante * 2))) + ")"))
494+ then throw((("Fee must be 2x the ante (" + toString((ante * 2))) + ")"))
495495 else [IntegerEntry(getGameStateLabel(currentGame), 3), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(currentGame)))]
496496 }
497497 else [IntegerEntry(getGameStateLabel(currentGame), 6)]
498498 }
499499 }
500500
501501
502502
503503 @Callable(i)
504504 func revealCards (currentGame,card0,card1,card2,playerOrderedCards) = if (checkPermission(i.callerPublicKey))
505505 then throw("setupGame_FORBBIDEN")
506506 else {
507507 let dealerQueue = value(getDealerQueue())
508508 let nextGameToProcess = split(dealerQueue, ",")[1]
509509 if ((nextGameToProcess == toString(currentGame)))
510510 then {
511511 let allPlayersCards = (card0 + card1)
512512 let orderedCards = split(playerOrderedCards, "+")
513513 if (true)
514514 then if (if (if (if ((value(getGameState(currentGame)) == 1))
515515 then verifyCard(card0, currentGame, 0)
516516 else false)
517517 then verifyCard(card1, currentGame, 1)
518518 else false)
519519 then verifyCard(card2, currentGame, 2)
520520 else false)
521521 then [StringEntry(getGameCardsLabel(currentGame, 2), card2), IntegerEntry(value(getGameStateLabel(currentGame)), 2), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), StringEntry(getGameSortedHandLabel(currentGame, "PLAYER"), playerOrderedCards), IntegerEntry(getGameHandScoreLabel(currentGame, "PLAYER"), getScore(orderedCards))]
522522 else throw("One of the cards failed to be verified or game is not in state 1.")
523523 else throw("Ordered cards should be sorted from smallest to largest.")
524524 }
525525 else throw(("The next game to process is " + nextGameToProcess))
526526 }
527527
528528
529529
530530 @Callable(i)
531531 func startGame () = if ((size(i.payments) != 1))
532532 then throw("Only one mayment allowed")
533533 else {
534534 let p = i.payments[0]
535- let ante = p.amount
535+ let ante = (p.amount + i.fee)
536536 let address = toBase58String(i.caller.bytes)
537537 if ((value(gamesUsedGetCounter()) >= value(gamesSetupGetCounter())))
538538 then throw("No available set up games to use.")
539539 else match getPlayerCurrentGame(address) {
540540 case CURRENTGAME: Int =>
541541 if ((4 > value(getGameState(CURRENTGAME))))
542542 then throw((("Game " + toString(CURRENTGAME)) + " is still in progress."))
543543 else createGameMetadata(address, ante)
544544 case _: Unit =>
545545 createGameMetadata(address, ante)
546546 case _ =>
547547 throw("Match error")
548548 }
549549 }
550550
551551
552552
553553 @Callable(i)
554554 func setupGame (gameNumber,cards0,cards1,cards2,cards3) = if (checkPermission(i.callerPublicKey))
555555 then throw("setupGame_FORBBIDEN")
556556 else match gamesSetupGetCounter() {
557557 case SETUPGAMESCOUNTER: Int =>
558558 let randomizer = (toInt(sha256((take(lastBlock.generationSignature, 16) + take(i.transactionId, 16)))) % 2)
559559 let currentGame = (SETUPGAMESCOUNTER + 1)
560560 if ((gameNumber != currentGame))
561561 then throw("Wrong game number.")
562562 else if (((randomizer % 2) == 1))
563563 then getGameSetup(currentGame, randomizer, cards3, cards2, cards1, cards0)
564564 else getGameSetup(currentGame, randomizer, cards0, cards1, cards2, cards3)
565565 case _ =>
566566 throw("InitGame Required")
567567 }
568568
569569
570570 @Verifier(tx)
571571 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
572572

github/deemru/w8io/169f3d6 
130.53 ms