tx · 8um1kaQxHSi7JQKysUUV1sXXN9J9weYWsQUiVCawNfk2

3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H:  -0.00700000 Waves

2022.08.22 12:38 [2195497] smart account 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H > SELF 0.00000000 Waves

{ "type": 13, "id": "8um1kaQxHSi7JQKysUUV1sXXN9J9weYWsQUiVCawNfk2", "fee": 700000, "feeAssetId": null, "timestamp": 1661161153438, "version": 2, "chainId": 84, "sender": "3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H", "senderPublicKey": "BDeCphaaC4MZvfmbJqQZ78EvuEBZTJ1VEW7fbxue8BUu", "proofs": [ "3X1diXiskx1YVizvPn5kBZnidvfPiKV6PsAifQwCQbg2tnoBX7bxQ9ZMZ3ZQzjuVwxqTsqihUF44YUqfzh2UuM2M" ], "script": "base64:BgIJCAISBQoDCAgBRAAJc2VwYXJhdG9yAgFfAAVrR2FtZQIEZ2FtZQAGa1JvdW5kAgVyb3VuZAAHa1BsYXllcgIGcGxheWVyAAZrVG90YWwCBXRvdGFsAAZrQ291bnQCBWNvdW50AARrUG90AgNwb3QABmtBc3NldAIFYXNzZXQABGtCZXQCA2JldAAEa01pbgIDbWluAARrTWF4AgNtYXgABWtOZXh0AgRuZXh0AAVrTGFzdAIEbGFzdAAJa0Jhbmtyb2xsAghiYW5rcm9sbAAFa0JhbmsCBGJhbmsACGtEZWZhdWx0AgdkZWZhdWx0AAdrU3RhdHVzAgZzdGF0dXMACGtCYWxhbmNlAgdiYWxhbmNlAQpnZXRHYW1lS2V5AQZnYW1lSWQJALkJAgkAzAgCBQVrR2FtZQkAzAgCBQZnYW1lSWQFA25pbAUJc2VwYXJhdG9yARBnZXRHYW1lUGxheWVyS2V5AgZnYW1lSWQNcGxheWVyQWRkcmVzcwkAuQkCCQDMCAIJAQpnZXRHYW1lS2V5AQUGZ2FtZUlkCQDMCAIFB2tQbGF5ZXIJAMwIAgUNcGxheWVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBF2dldEdhbWVQbGF5ZXJDb3VudGVyS2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQdrUGxheWVyCQDMCAIFBmtDb3VudAUDbmlsBQlzZXBhcmF0b3IBFWdldEdhbWVQbGF5ZXJUb3RhbEtleQEGZ2FtZUlkCQC5CQIJAMwIAgkBCmdldEdhbWVLZXkBBQZnYW1lSWQJAMwIAgUHa1BsYXllcgkAzAgCBQZrVG90YWwFA25pbAUJc2VwYXJhdG9yARNnZXROZXh0QmV0UGxheWVyS2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQVrTmV4dAkAzAgCBQRrQmV0CQDMCAIFB2tQbGF5ZXIFA25pbAUJc2VwYXJhdG9yARZnZXRHYW1lUGxheWVyU3RhdHVzS2V5AgZnYW1lSWQNcGxheWVyQWRkcmVzcwkAuQkCCQDMCAIJAQpnZXRHYW1lS2V5AQUGZ2FtZUlkCQDMCAIFB2tTdGF0dXMJAMwIAgUHa1BsYXllcgkAzAgCBQ1wbGF5ZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEPZ2V0R2FtZVJvdW5kS2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQZrUm91bmQFA25pbAUJc2VwYXJhdG9yAQ1nZXRHYW1lUG90S2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQRrUG90BQNuaWwFCXNlcGFyYXRvcgEPZ2V0R2FtZUFzc2V0S2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQZrQXNzZXQFA25pbAUJc2VwYXJhdG9yARBnZXRHYW1lTWluQmV0S2V5AQZnYW1lSWQJALkJAgkAzAgCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAkAzAgCBQRrTWluCQDMCAIFBGtCZXQFA25pbAUJc2VwYXJhdG9yARFnZXRHYW1lTGFzdEJldEtleQEGZ2FtZUlkCQC5CQIJAMwIAgkBCmdldEdhbWVLZXkBBQZnYW1lSWQJAMwIAgUFa0xhc3QJAMwIAgUEa0JldAUDbmlsBQlzZXBhcmF0b3IBEmdldEdhbWVCYW5rcm9sbEtleQEGZ2FtZUlkCQC5CQIJAMwIAgkBCmdldEdhbWVLZXkBBQZnYW1lSWQJAMwIAgUJa0Jhbmtyb2xsBQNuaWwFCXNlcGFyYXRvcgEOZ2V0R2FtZUJhbmtLZXkBBmdhbWVJZAkAuQkCCQDMCAIJAQpnZXRHYW1lS2V5AQUGZ2FtZUlkCQDMCAIFBWtCYW5rBQNuaWwFCXNlcGFyYXRvcgEXZ2V0R2FtZVBsYXllckJhbGFuY2VLZXkCBmdhbWVJZA1wbGF5ZXJBZGRyZXNzCQC5CQIJAMwIAgkBCmdldEdhbWVLZXkBBQZnYW1lSWQJAMwIAgUHa1BsYXllcgkAzAgCBQ1wbGF5ZXJBZGRyZXNzCQDMCAIFCGtCYWxhbmNlBQNuaWwFCXNlcGFyYXRvcgEHc2V0R2FtZQIGZ2FtZUlkBGZsYWcJAQxCb29sZWFuRW50cnkCCQEKZ2V0R2FtZUtleQEFBmdhbWVJZAUEZmxhZwENc2V0R2FtZVBsYXllcgMGZ2FtZUlkDXBsYXllckFkZHJlc3MIcGxheWVySWQJAQxJbnRlZ2VyRW50cnkCCQEQZ2V0R2FtZVBsYXllcktleQIFBmdhbWVJZAUNcGxheWVyQWRkcmVzcwUIcGxheWVySWQBFHNldEdhbWVQbGF5ZXJDb3VudGVyAgZnYW1lSWQHY291bnRlcgkBDEludGVnZXJFbnRyeQIJARdnZXRHYW1lUGxheWVyQ291bnRlcktleQEFBmdhbWVJZAUHY291bnRlcgESc2V0R2FtZVBsYXllclRvdGFsAgZnYW1lSWQMdG90YWxQbGF5ZXJzCQEMSW50ZWdlckVudHJ5AgkBFWdldEdhbWVQbGF5ZXJUb3RhbEtleQEFBmdhbWVJZAUMdG90YWxQbGF5ZXJzARBzZXROZXh0QmV0UGxheWVyAgZnYW1lSWQIcGxheWVySWQJAQxJbnRlZ2VyRW50cnkCCQETZ2V0TmV4dEJldFBsYXllcktleQEFBmdhbWVJZAUIcGxheWVySWQBE3NldEdhbWVQbGF5ZXJTdGF0dXMDBmdhbWVJZA1wbGF5ZXJBZGRyZXNzBGZsYWcJAQxCb29sZWFuRW50cnkCCQEWZ2V0R2FtZVBsYXllclN0YXR1c0tleQIFBmdhbWVJZAUNcGxheWVyQWRkcmVzcwUEZmxhZwEMc2V0R2FtZVJvdW5kAgZnYW1lSWQFcm91bmQJAQxJbnRlZ2VyRW50cnkCCQEPZ2V0R2FtZVJvdW5kS2V5AQUGZ2FtZUlkBQVyb3VuZAEKc2V0R2FtZVBvdAIGZ2FtZUlkA3BvdAkBDEludGVnZXJFbnRyeQIJAQ1nZXRHYW1lUG90S2V5AQUGZ2FtZUlkBQNwb3QBDnNldEdhbWVMYXN0QmV0AgZnYW1lSWQHbGFzdEJldAkBDEludGVnZXJFbnRyeQIJARFnZXRHYW1lTGFzdEJldEtleQEFBmdhbWVJZAUHbGFzdEJldAEMc2V0R2FtZUFzc2V0AgZnYW1lSWQJZ2FtZUFzc2V0BAckbWF0Y2gwBQlnYW1lQXNzZXQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQFdG9rZW4FByRtYXRjaDAJAQtTdHJpbmdFbnRyeQIJAQ9nZXRHYW1lQXNzZXRLZXkBBQZnYW1lSWQJANgEAQUFdG9rZW4JAQtTdHJpbmdFbnRyeQIJAQ9nZXRHYW1lQXNzZXRLZXkBBQZnYW1lSWQCBVdBVkVTAQ1zZXRHYW1lTWluQmV0AgZnYW1lSWQGbWluQmV0CQEMSW50ZWdlckVudHJ5AgkBEGdldEdhbWVNaW5CZXRLZXkBBQZnYW1lSWQFBm1pbkJldAEPc2V0R2FtZUJhbmtyb2xsAgZnYW1lSWQIYmFua3JvbGwJAQxJbnRlZ2VyRW50cnkCCQESZ2V0R2FtZUJhbmtyb2xsS2V5AQUGZ2FtZUlkBQhiYW5rcm9sbAELc2V0R2FtZUJhbmsCBmdhbWVJZARiYW5rCQEMSW50ZWdlckVudHJ5AgkBEmdldEdhbWVCYW5rcm9sbEtleQEFBmdhbWVJZAUEYmFuawEUc2V0R2FtZVBsYXllckJhbGFuY2UDBmdhbWVJZA1wbGF5ZXJBZGRyZXNzDmN1cnJlbnRCYWxhbmNlCQEMSW50ZWdlckVudHJ5AgkBF2dldEdhbWVQbGF5ZXJCYWxhbmNlS2V5AgUGZ2FtZUlkBQ1wbGF5ZXJBZGRyZXNzBQ5jdXJyZW50QmFsYW5jZQEHZ2V0R2FtZQEGZ2FtZUlkCQCbCAIFBHRoaXMJAQpnZXRHYW1lS2V5AQUGZ2FtZUlkAQ1nZXRHYW1lUGxheWVyAgZnYW1lSWQNcGxheWVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkBEGdldEdhbWVQbGF5ZXJLZXkCBQZnYW1lSWQFDXBsYXllckFkZHJlc3MBFGdldEdhbWVQbGF5ZXJDb3VudGVyAQZnYW1lSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2dldEdhbWVQbGF5ZXJDb3VudGVyS2V5AQUGZ2FtZUlkAAABEmdldEdhbWVQbGF5ZXJUb3RhbAEGZ2FtZUlkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEVZ2V0R2FtZVBsYXllclRvdGFsS2V5AQUGZ2FtZUlkARBnZXROZXh0QmV0UGxheWVyAQZnYW1lSWQJAJoIAgUEdGhpcwkBE2dldE5leHRCZXRQbGF5ZXJLZXkBBQZnYW1lSWQBE2dldEdhbWVQbGF5ZXJTdGF0dXMCBmdhbWVJZA1wbGF5ZXJBZGRyZXNzCQCbCAIFBHRoaXMJARZnZXRHYW1lUGxheWVyU3RhdHVzS2V5AgUGZ2FtZUlkBQ1wbGF5ZXJBZGRyZXNzAQxnZXRHYW1lUm91bmQBBmdhbWVJZAkAmggCBQR0aGlzCQEPZ2V0R2FtZVJvdW5kS2V5AQUGZ2FtZUlkAQpnZXRHYW1lUG90AQZnYW1lSWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ1nZXRHYW1lUG90S2V5AQUGZ2FtZUlkAQ5nZXRHYW1lTGFzdEJldAEGZ2FtZUlkCQCaCAIFBHRoaXMJARFnZXRHYW1lTGFzdEJldEtleQEFBmdhbWVJZAEMZ2V0R2FtZUFzc2V0AQZnYW1lSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQ9nZXRHYW1lQXNzZXRLZXkBBQZnYW1lSWQBDWdldEdhbWVNaW5CZXQBBmdhbWVJZAkAmggCBQR0aGlzCQEQZ2V0R2FtZU1pbkJldEtleQEFBmdhbWVJZAEPZ2V0R2FtZUJhbmtyb2xsAQZnYW1lSWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJARJnZXRHYW1lQmFua3JvbGxLZXkBBQZnYW1lSWQBC2dldEdhbWVCYW5rAQZnYW1lSWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ5nZXRHYW1lQmFua0tleQEFBmdhbWVJZAEUZ2V0R2FtZVBsYXllckJhbGFuY2UCBmdhbWVJZA1wbGF5ZXJBZGRyZXNzCQCaCAIFBHRoaXMJARdnZXRHYW1lUGxheWVyQmFsYW5jZUtleQIFBmdhbWVJZAUNcGxheWVyQWRkcmVzcwELaXNHYW1lRXhpc3QBBmdhbWVJZAkBCWlzRGVmaW5lZAEJAQdnZXRHYW1lAQUGZ2FtZUlkAQ1pc0dhbWVTdGFydGVkAQZnYW1lSWQJAQt2YWx1ZU9yRWxzZQIJAQdnZXRHYW1lAQUGZ2FtZUlkBwEQaXNSZXF1aXJlZFBsYXllcgEGZ2FtZUlkCQBmAgkBEmdldEdhbWVQbGF5ZXJUb3RhbAEFBmdhbWVJZAkBFGdldEdhbWVQbGF5ZXJDb3VudGVyAQUGZ2FtZUlkAQ5pc0NvcnJlY3RBc3NldAIGZ2FtZUlkBWFzc2V0BAlnYW1lQXNzZXQJAQxnZXRHYW1lQXNzZXQBBQZnYW1lSWQDCQAAAgUJZ2FtZUFzc2V0AgVXQVZFUwkAAAIFBWFzc2V0BQR1bml0CQAAAgUFYXNzZXQJANkEAQUJZ2FtZUFzc2V0ARBpc0Vub3VndGhEZXBvc2l0AgZnYW1lSWQGYW1vdW50CQBnAgUGYW1vdW50CQEPZ2V0R2FtZUJhbmtyb2xsAQUGZ2FtZUlkAQRmb2xkAwZnYW1lSWQLcGxheWVyVG90YWwGY2FsbGVyBBJzdHJ1Y3RQbGF5ZXJTdGF0dXMJARNzZXRHYW1lUGxheWVyU3RhdHVzAwUGZ2FtZUlkCQClCAEFBmNhbGxlcgcEEXBsYXllclRvdGFsU3RydWN0CQESc2V0R2FtZVBsYXllclRvdGFsAgUGZ2FtZUlkCQBlAgULcGxheWVyVG90YWwAAQkAlAoCBRJzdHJ1Y3RQbGF5ZXJTdGF0dXMFEXBsYXllclRvdGFsU3RydWN0AQVyYWlzZQUGYW1vdW50DXBsYXllckJhbGFuY2UHbGFzdEJldAZnYW1lSWQGY2FsbGVyAwMJAGYCBQZhbW91bnQFDXBsYXllckJhbGFuY2UGCQBmAgUHbGFzdEJldAUGYW1vdW50CQACAQISaW5zdWZmaWNpZW50IGZ1bmRzBA1sYXN0QmV0U3RydWN0CQEOc2V0R2FtZUxhc3RCZXQCBQZnYW1lSWQFBmFtb3VudAQKYmFua1N0cnVjdAkBC3NldEdhbWVCYW5rAgUGZ2FtZUlkCQBkAgkBC2dldEdhbWVCYW5rAQUGZ2FtZUlkBQZhbW91bnQEE3BsYXllckJhbGFuY2VTdHJ1Y3QJARRzZXRHYW1lUGxheWVyQmFsYW5jZQMFBmdhbWVJZAkApQgBBQZjYWxsZXIJAGUCBQ1wbGF5ZXJCYWxhbmNlBQZhbW91bnQJAJUKAwUNbGFzdEJldFN0cnVjdAUKYmFua1N0cnVjdAUTcGxheWVyQmFsYW5jZVN0cnVjdAELY2hlY2tPckNhbGwEDXBsYXllckJhbGFuY2UHbGFzdEJldAZnYW1lSWQGY2FsbGVyAwkAZgIFB2xhc3RCZXQFDXBsYXllckJhbGFuY2UJAAIBAhJpbnN1ZmZpY2llbnQgZnVuZHMECmJhbmtTdHJ1Y3QJAQtzZXRHYW1lQmFuawIFBmdhbWVJZAkAZAIJAQtnZXRHYW1lQmFuawEFBmdhbWVJZAUHbGFzdEJldAQTcGxheWVyQmFsYW5jZVN0cnVjdAkBFHNldEdhbWVQbGF5ZXJCYWxhbmNlAwUGZ2FtZUlkCQClCAEFBmNhbGxlcgkAZQIFDXBsYXllckJhbGFuY2UFB2xhc3RCZXQJAJQKAgUKYmFua1N0cnVjdAUTcGxheWVyQmFsYW5jZVN0cnVjdAEBaQEEbW92ZQMGYWN0aW9uBmdhbWVJZAZhbW91bnQECmdhbWVQbGF5ZXIJAQ1nZXRHYW1lUGxheWVyAgUGZ2FtZUlkCQClCAEIBQFpBmNhbGxlcgQHbGFzdEJldAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEOZ2V0R2FtZUxhc3RCZXQBBQZnYW1lSWQCAAQNcGxheWVyQmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEUZ2V0R2FtZVBsYXllckJhbGFuY2UCBQZnYW1lSWQJAKUIAQgFAWkGY2FsbGVyAgAEDHBsYXllclN0YXR1cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0R2FtZVBsYXllclN0YXR1cwIFBmdhbWVJZAkApQgBCAUBaQZjYWxsZXICAAQLcGxheWVyVG90YWwJARJnZXRHYW1lUGxheWVyVG90YWwBBQZnYW1lSWQDCQAAAgUGYWN0aW9uAgRmb2xkBAskdDA3MzQ3NzQyOAkBBGZvbGQDBQZnYW1lSWQFC3BsYXllclRvdGFsCAUBaQZjYWxsZXIEEnN0cnVjdFBsYXllclN0YXR1cwgFCyR0MDczNDc3NDI4Al8xBBFwbGF5ZXJUb3RhbFN0cnVjdAgFCyR0MDczNDc3NDI4Al8yCQDMCAIFEnN0cnVjdFBsYXllclN0YXR1cwkAzAgCBRFwbGF5ZXJUb3RhbFN0cnVjdAUDbmlsAwkAAAIFBmFjdGlvbgIFcmFpc2UECyR0MDc1NDI3NjUyCQEFcmFpc2UFBQZhbW91bnQFDXBsYXllckJhbGFuY2UFB2xhc3RCZXQFBmdhbWVJZAgFAWkGY2FsbGVyBA1sYXN0QmV0U3RydWN0CAULJHQwNzU0Mjc2NTICXzEECmJhbmtTdHJ1Y3QIBQskdDA3NTQyNzY1MgJfMgQTcGxheWVyQmFsYW5jZVN0cnVjdAgFCyR0MDc1NDI3NjUyAl8zCQDMCAIFDWxhc3RCZXRTdHJ1Y3QJAMwIAgUKYmFua1N0cnVjdAkAzAgCBRNwbGF5ZXJCYWxhbmNlU3RydWN0BQNuaWwDCQAAAgUGYWN0aW9uAgtjaGVja09yQ2FsbAQLJHQwNzc4OTc4OTcJAQtjaGVja09yQ2FsbAQFDXBsYXllckJhbGFuY2UFB2xhc3RCZXQFBmdhbWVJZAgFAWkGY2FsbGVyBBViYW5rU3RydWN0Q2hlY2tPckNhbGwIBQskdDA3Nzg5Nzg5NwJfMQQYcGxheWVyQmFsYW5jZUNoZWNrT3JDYWxsCAULJHQwNzc4OTc4OTcCXzIJAMwIAgUVYmFua1N0cnVjdENoZWNrT3JDYWxsCQDMCAIFGHBsYXllckJhbGFuY2VDaGVja09yQ2FsbAUDbmlsBQNuaWwA/B2Rwg==", "height": 2195497, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2CFHkSbk3xy6gFKy2tRSrJ8fRjzzmG8cHYfu6VCBvkDU Next: 4ok5mZo25s1fKumHAB6qVcwf1yRWYHAWxyUw3jStafmC Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let kUserPayment = "Payment"
4+let separator = "_"
55
6-let kWon = "Won"
6+let kGame = "game"
77
8-func randomize (bytes,range) = {
9- let hash = sha256(bytes)
10- let index = toInt(hash)
11- (index % range)
8+let kRound = "round"
9+
10+let kPlayer = "player"
11+
12+let kTotal = "total"
13+
14+let kCount = "count"
15+
16+let kPot = "pot"
17+
18+let kAsset = "asset"
19+
20+let kBet = "bet"
21+
22+let kMin = "min"
23+
24+let kMax = "max"
25+
26+let kNext = "next"
27+
28+let kLast = "last"
29+
30+let kBankroll = "bankroll"
31+
32+let kBank = "bank"
33+
34+let kDefault = "default"
35+
36+let kStatus = "status"
37+
38+let kBalance = "balance"
39+
40+func getGameKey (gameId) = makeString([kGame, gameId], separator)
41+
42+
43+func getGamePlayerKey (gameId,playerAddress) = makeString([getGameKey(gameId), kPlayer, playerAddress], separator)
44+
45+
46+func getGamePlayerCounterKey (gameId) = makeString([getGameKey(gameId), kPlayer, kCount], separator)
47+
48+
49+func getGamePlayerTotalKey (gameId) = makeString([getGameKey(gameId), kPlayer, kTotal], separator)
50+
51+
52+func getNextBetPlayerKey (gameId) = makeString([getGameKey(gameId), kNext, kBet, kPlayer], separator)
53+
54+
55+func getGamePlayerStatusKey (gameId,playerAddress) = makeString([getGameKey(gameId), kStatus, kPlayer, playerAddress], separator)
56+
57+
58+func getGameRoundKey (gameId) = makeString([getGameKey(gameId), kRound], separator)
59+
60+
61+func getGamePotKey (gameId) = makeString([getGameKey(gameId), kPot], separator)
62+
63+
64+func getGameAssetKey (gameId) = makeString([getGameKey(gameId), kAsset], separator)
65+
66+
67+func getGameMinBetKey (gameId) = makeString([getGameKey(gameId), kMin, kBet], separator)
68+
69+
70+func getGameLastBetKey (gameId) = makeString([getGameKey(gameId), kLast, kBet], separator)
71+
72+
73+func getGameBankrollKey (gameId) = makeString([getGameKey(gameId), kBankroll], separator)
74+
75+
76+func getGameBankKey (gameId) = makeString([getGameKey(gameId), kBank], separator)
77+
78+
79+func getGamePlayerBalanceKey (gameId,playerAddress) = makeString([getGameKey(gameId), kPlayer, playerAddress, kBalance], separator)
80+
81+
82+func setGame (gameId,flag) = BooleanEntry(getGameKey(gameId), flag)
83+
84+
85+func setGamePlayer (gameId,playerAddress,playerId) = IntegerEntry(getGamePlayerKey(gameId, playerAddress), playerId)
86+
87+
88+func setGamePlayerCounter (gameId,counter) = IntegerEntry(getGamePlayerCounterKey(gameId), counter)
89+
90+
91+func setGamePlayerTotal (gameId,totalPlayers) = IntegerEntry(getGamePlayerTotalKey(gameId), totalPlayers)
92+
93+
94+func setNextBetPlayer (gameId,playerId) = IntegerEntry(getNextBetPlayerKey(gameId), playerId)
95+
96+
97+func setGamePlayerStatus (gameId,playerAddress,flag) = BooleanEntry(getGamePlayerStatusKey(gameId, playerAddress), flag)
98+
99+
100+func setGameRound (gameId,round) = IntegerEntry(getGameRoundKey(gameId), round)
101+
102+
103+func setGamePot (gameId,pot) = IntegerEntry(getGamePotKey(gameId), pot)
104+
105+
106+func setGameLastBet (gameId,lastBet) = IntegerEntry(getGameLastBetKey(gameId), lastBet)
107+
108+
109+func setGameAsset (gameId,gameAsset) = match gameAsset {
110+ case token: ByteVector =>
111+ StringEntry(getGameAssetKey(gameId), toBase58String(token))
112+ case _ =>
113+ StringEntry(getGameAssetKey(gameId), "WAVES")
114+}
115+
116+
117+func setGameMinBet (gameId,minBet) = IntegerEntry(getGameMinBetKey(gameId), minBet)
118+
119+
120+func setGameBankroll (gameId,bankroll) = IntegerEntry(getGameBankrollKey(gameId), bankroll)
121+
122+
123+func setGameBank (gameId,bank) = IntegerEntry(getGameBankrollKey(gameId), bank)
124+
125+
126+func setGamePlayerBalance (gameId,playerAddress,currentBalance) = IntegerEntry(getGamePlayerBalanceKey(gameId, playerAddress), currentBalance)
127+
128+
129+func getGame (gameId) = getBoolean(this, getGameKey(gameId))
130+
131+
132+func getGamePlayer (gameId,playerAddress) = getStringValue(this, getGamePlayerKey(gameId, playerAddress))
133+
134+
135+func getGamePlayerCounter (gameId) = valueOrElse(getInteger(this, getGamePlayerCounterKey(gameId)), 0)
136+
137+
138+func getGamePlayerTotal (gameId) = getIntegerValue(this, getGamePlayerTotalKey(gameId))
139+
140+
141+func getNextBetPlayer (gameId) = getInteger(this, getNextBetPlayerKey(gameId))
142+
143+
144+func getGamePlayerStatus (gameId,playerAddress) = getBoolean(this, getGamePlayerStatusKey(gameId, playerAddress))
145+
146+
147+func getGameRound (gameId) = getInteger(this, getGameRoundKey(gameId))
148+
149+
150+func getGamePot (gameId) = getIntegerValue(this, getGamePotKey(gameId))
151+
152+
153+func getGameLastBet (gameId) = getInteger(this, getGameLastBetKey(gameId))
154+
155+
156+func getGameAsset (gameId) = getStringValue(this, getGameAssetKey(gameId))
157+
158+
159+func getGameMinBet (gameId) = getInteger(this, getGameMinBetKey(gameId))
160+
161+
162+func getGameBankroll (gameId) = getIntegerValue(this, getGameBankrollKey(gameId))
163+
164+
165+func getGameBank (gameId) = getIntegerValue(this, getGameBankKey(gameId))
166+
167+
168+func getGamePlayerBalance (gameId,playerAddress) = getInteger(this, getGamePlayerBalanceKey(gameId, playerAddress))
169+
170+
171+func isGameExist (gameId) = isDefined(getGame(gameId))
172+
173+
174+func isGameStarted (gameId) = valueOrElse(getGame(gameId), false)
175+
176+
177+func isRequiredPlayer (gameId) = (getGamePlayerTotal(gameId) > getGamePlayerCounter(gameId))
178+
179+
180+func isCorrectAsset (gameId,asset) = {
181+ let gameAsset = getGameAsset(gameId)
182+ if ((gameAsset == "WAVES"))
183+ then (asset == unit)
184+ else (asset == fromBase58String(gameAsset))
12185 }
13186
14187
15-func counting (bytes) = {
16- let count = randomize(bytes, 10)
17- if ((count >= 4))
18- then BooleanEntry(kWon, false)
19- else BooleanEntry(kWon, true)
188+func isEnougthDeposit (gameId,amount) = (amount >= getGameBankroll(gameId))
189+
190+
191+func fold (gameId,playerTotal,caller) = {
192+ let structPlayerStatus = setGamePlayerStatus(gameId, toString(caller), false)
193+ let playerTotalStruct = setGamePlayerTotal(gameId, (playerTotal - 1))
194+ $Tuple2(structPlayerStatus, playerTotalStruct)
20195 }
21196
22197
23-@Callable(i)
24-func parseStruct () = if ((i.caller != this))
25- then throw("Only owner")
198+func raise (amount,playerBalance,lastBet,gameId,caller) = if (if ((amount > playerBalance))
199+ then true
200+ else (lastBet > amount))
201+ then throw("insufficient funds")
26202 else {
27- let winnerStruct = counting(i.transactionId)
28-[winnerStruct]
203+ let lastBetStruct = setGameLastBet(gameId, amount)
204+ let bankStruct = setGameBank(gameId, (getGameBank(gameId) + amount))
205+ let playerBalanceStruct = setGamePlayerBalance(gameId, toString(caller), (playerBalance - amount))
206+ $Tuple3(lastBetStruct, bankStruct, playerBalanceStruct)
29207 }
30208
31209
210+func checkOrCall (playerBalance,lastBet,gameId,caller) = if ((lastBet > playerBalance))
211+ then throw("insufficient funds")
212+ else {
213+ let bankStruct = setGameBank(gameId, (getGameBank(gameId) + lastBet))
214+ let playerBalanceStruct = setGamePlayerBalance(gameId, toString(caller), (playerBalance - lastBet))
215+ $Tuple2(bankStruct, playerBalanceStruct)
216+ }
217+
32218
33219 @Callable(i)
34-func startGame () = {
35- let amount = value(i.payments[0].amount)
36- if ((amount > 20))
37- then throw("You cannot bet more than 20!")
38- else if ((i.payments[0].assetId != unit))
39- then throw("Pay in waves")
40- else {
41- let nullInitStore = invoke(this, "parseStruct", nil, nil)
42- if ((nullInitStore == nullInitStore))
43- then {
44- let won = valueOrErrorMessage(getBoolean(this, kWon), "Storage read error")
45- if (won)
46- then [ScriptTransfer(i.caller, (amount * 2), unit)]
47- else nil
48- }
49- else throw("Strict value is not equal to itself.")
220+func move (action,gameId,amount) = {
221+ let gamePlayer = getGamePlayer(gameId, toString(i.caller))
222+ let lastBet = valueOrErrorMessage(getGameLastBet(gameId), "")
223+ let playerBalance = valueOrErrorMessage(getGamePlayerBalance(gameId, toString(i.caller)), "")
224+ let playerStatus = valueOrErrorMessage(getGamePlayerStatus(gameId, toString(i.caller)), "")
225+ let playerTotal = getGamePlayerTotal(gameId)
226+ if ((action == "fold"))
227+ then {
228+ let $t073477428 = fold(gameId, playerTotal, i.caller)
229+ let structPlayerStatus = $t073477428._1
230+ let playerTotalStruct = $t073477428._2
231+[structPlayerStatus, playerTotalStruct]
232+ }
233+ else if ((action == "raise"))
234+ then {
235+ let $t075427652 = raise(amount, playerBalance, lastBet, gameId, i.caller)
236+ let lastBetStruct = $t075427652._1
237+ let bankStruct = $t075427652._2
238+ let playerBalanceStruct = $t075427652._3
239+[lastBetStruct, bankStruct, playerBalanceStruct]
50240 }
241+ else if ((action == "checkOrCall"))
242+ then {
243+ let $t077897897 = checkOrCall(playerBalance, lastBet, gameId, i.caller)
244+ let bankStructCheckOrCall = $t077897897._1
245+ let playerBalanceCheckOrCall = $t077897897._2
246+[bankStructCheckOrCall, playerBalanceCheckOrCall]
247+ }
248+ else nil
51249 }
52250
53251

github/deemru/w8io/169f3d6 
56.57 ms