tx · DpB4vLWitdWYtbPFV2q9LRCPDah6nFgMkMqSHovH7Ax2

3PDgrpS82jx5AvfgkKmRdjmJdyaz7s5m34J:  -0.01000000 Waves

2020.01.21 18:11 [1894672] smart account 3PDgrpS82jx5AvfgkKmRdjmJdyaz7s5m34J > SELF 0.00000000 Waves

{ "type": 13, "id": "DpB4vLWitdWYtbPFV2q9LRCPDah6nFgMkMqSHovH7Ax2", "fee": 1000000, "feeAssetId": null, "timestamp": 1579618280229, "version": 1, "sender": "3PDgrpS82jx5AvfgkKmRdjmJdyaz7s5m34J", "senderPublicKey": "J8PR9b4PeKyPUSDhXHwLHLEgRPhHBroDTyVT8UaEN3Yq", "proofs": [ "zo7ASPQMvMhcd1wbZT91q7JitzVpaXrbVKXXM95FxXj2Ge4ZsJxiECqsZ3egSrEKVv6hD4fUVabYo5QXYxfbK1j" ], "script": "base64:AAIDAAAAAAAAABcIARIAEgYKBAgCAgISAwoBCBIECgIICAAAADYAAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsNFl6U1F4ano4dGFoUTYyYmdjS0x4b2g5NDI0RVlEaVlkWlV6VXRRVkN6a3MAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsMm8xd2FEQ1g2N0FyQzRpVjRXV0hhNDFNSGJDS1M0bmE3S1dESm1jS05BUTMAAAAAFnJlZmVycmFsUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAABMQAAAAANcnNhUHVibGljS2V5MQkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPa2l1ei9CVjRFam94R2hUbU5DYnQyVGdrYlNQSC93NjliM0YxckttRDYxSmlQWHZ2RjhMMnBJOXhPWWNXNEZtb0VaVkhsUlF0QWxhSnlrbDMrcnNyRUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MgkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFKblh6Yk0vVjJzRFYxVUxiUFNPbEhrbGRPVFdSckhpNWZ4SWtCbXVldnJDbE1QVkg3cnFjY3dpckROY01kSWR3WEhJOUFkaGo5Rldqd0dJd2ZVL0s2TUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MwkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPUkRldnkwcjRrekxxT3lTbG9CNjNIdXYyZTR6ZUhLSGpDc3k1dnRGS21XWmJYSmE4Z1pZdDQrRWtsRklvMUs5b3F1NUJBUFZmSjNGT3pzMlUxQStnMENBd0VBQVE9PQAAAAAFZHJ1bTEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0BQAAAANuaWwAAAAABWRydW0yCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE2CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNwUAAAADbmlsAAAAAAVkcnVtMwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYFAAAAA25pbAAAAAANZ2FtZVRpbWVGcmFtZQAAAAAAAAALQAAAAAAKY29tbWlzc2lvbgAAAAAAAAehIAAAAAAIc3RhdGVBY2MCAAAACEFjY2VwdGVkAAAAAAhzdGF0ZVdpbgIAAAADV2luAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91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cnZlZEJhbGFuY2UEAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAMcG10QXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQEAAAAByRtYXRjaDAFAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAEm5ld1Jlc2VydmVkQmFsYW5jZQkAAGQAAAACBQAAABZjdXJyZW50UmVzZXJ2ZWRCYWxhbmNlCQAAaAAAAAIFAAAABnBtdEFtdAAAAAAAAAABBAMJAABnAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAAlhc3NldElkNTgFAAAAEm5ld1Jlc2VydmVkQmFsYW5jZQUAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlCQAAAgAAAAECAAAANUJldCB3YXMgcmVqZWN0ZWQuIEluc3VmZmljaWVudCBmdW5kcyBvbiBnYW1lIGFjY291bnQuAQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAIAAAAGYmV0QW10AAAAB2Fzc2V0SWQEAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHYXNzZXRJZAIAAAAJX1Jlc2VydmVkBAAAABZleHRyYWN0UmVzZXJ2ZWRCYWxhbmNlBAAAAAckbWF0Y2gwBQAAABR2YWx1ZVJlc2VydmVkQmFsYW5jZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQkAAGUAAAACBQAAABZleHRyYWN0UmVzZXJ2ZWRCYWxhbmNlCQAAaAAAAAIFAAAABmJldEFtdAAAAAAAAAABBAMJAABnAAAAAgUAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAAAAAAAAAAFAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlCQAAAgAAAAECAAAAKFJlc2VydmVkIGJhbGFuY2UgY291bGRuJ3QgYmUgbGVzcyB0aGFuIDABAAAAD2RydW1JbnRUb1N0cmluZwAAAAEAAAAHZHJ1bUludAMJAABmAAAAAgAAAAAAAAAACgUAAAAHZHJ1bUludAkAASwAAAACAgAAAAEwCQABpAAAAAEFAAAAB2RydW1JbnQJAAGkAAAAAQUAAAAHZHJ1bUludAEAAAAQZGVmaW5lTXVsdGlwbGllcgAAAAIAAAALdGhyZWVJbkFSb3cAAAAJdHdvSW5BUm93AwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADNzc3AAAAAAAAAAooAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADNjY2AAAAAAAAAAUUAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADNTU1AAAAAAAAAAHCAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADNDQ0AAAAAAAAAADIAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADMzMzAAAAAAAAAACWAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADMjIyAAAAAAAAAABuAwkAAAAAAAACBQAAAAt0aHJlZUluQVJvdwIAAAADMTExAAAAAAAAAAAyAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjc3AAAAAAAAAAEOAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjY2AAAAAAAAAACCAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjU1AAAAAAAAAAAtAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjQ0AAAAAAAAAAAeAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjMzAAAAAAAAAAAUAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjIyAAAAAAAAAAARAwkAAAAAAAACBQAAAAl0d29JbkFSb3cCAAAAAjExAAAAAAAAAAANAAAAAAAAAAAAAQAAABFhc3NldE5hbWVUb0Jhc2U1OAAAAAEAAAAJYXNzZXROYW1lAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAABVdBVkVTBQAAAAd3YXZlc0lkAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAAA0JUQwUAAAAFYnRjSWQDCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAADRVRIBQAAAAVldGhJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANMVEMFAAAABWx0Y0lkAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAABFdFU1QFAAAABndlc3RJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAANXQ1QFAAAABXdjdElkAwkAAAAAAAACBQAAAAlhc3NldE5hbWUCAAAABFVTRFQFAAAABnVzZHRJZAMJAAAAAAAAAgUAAAAJYXNzZXROYW1lAgAAAARVU0ROBQAAAAZ1c2RuSWQJAAACAAAAAQIAAAAXQXNzZXQgbmFtZSBpcyBpbmNvcnJlY3QBAAAAEWFzc2V0QmFzZTU4VG9OYW1lAAAAAQAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAHYXNzZXRJZAIAAAAFV0FWRVMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABWJ0Y0lkAgAAAANCVEMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABWV0aElkAgAAAANFVEgDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABWx0Y0lkAgAAAANMVEMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABndlc3RJZAIAAAAEV0VTVAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAFd2N0SWQCAAAAA1dDVAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAGdXNkdElkAgAAAARVU0RUAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAZ1c2RuSWQCAAAABFVTRE4JAAACAAAAAQIAAAAUQXNzZXRJZCBpcyBpbmNvcnJlY3QBAAAAD2dldFJlZmVyQWRkcmVzcwAAAAEAAAAHYWRkcmVzcwQAAAAMcmVmZXJBZGRyZXNzCQAEHQAAAAIFAAAAFnJlZmVycmFsUHJvZ3JhbUFkZHJlc3MJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAGX1JlZmVyBAAAAAckbWF0Y2gwBQAAAAxyZWZlckFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAETm9uZQEAAAAPc2V0TmV3UmVmUmV3YXJkAAAAAwAAAAxyZWZlckFkZHJlc3MAAAAGYmV0QW10AAAABndpbkFtdAMJAAAAAAAAAgUAAAAMcmVmZXJBZGRyZXNzAgAAAAROb25lAAAAAAAAAAAABAAAAA52YWx1ZVJlZlJld2FyZAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADHJlZmVyQWRkcmVzcwIAAAAKX1JlZlJld2FyZAQAAAAQY3VycmVudFJlZlJld2FyZAQAAAAHJG1hdGNoMAUAAAAOdmFsdWVSZWZSZXdhcmQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAACtDb3VsZG4ndCBmaW5kIHJlZmVyIHJld2FyZCBmb3IgdGhpcyBhZGRyZXNzBAAAAAhyZWZLb2VmZgQAAAABYQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADHJlZmVyQWRkcmVzcwIAAAARX0dhbWVzUGxheWVkQnlSZWYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAAD9Db3VsZG4ndCBmaW5kIGdhbWVzIHBsYXllZCBudW1iZXIgYnkgcmVmZXJyYWxzIGZvciB0aGlzIGFkZHJlc3MDCQAAZgAAAAIFAAAAAWEAAAAAAAAAJxAAAAAAAAAAAB4DCQAAZgAAAAIFAAAAAWEAAAAAAAAAA+gAAAAAAAAAABQDCQAAZgAAAAIFAAAAAWEAAAAAAAAAAGQAAAAAAAAAAAoAAAAAAAAAAAUEAAAACmdhbWVJbmNvbWUJAABlAAAAAgUAAAAGYmV0QW10BQAAAAZ3aW5BbXQEAAAAEXJld2FyZEZvclRoaXNHYW1lCQAAaQAAAAIJAABoAAAAAgUAAAAKZ2FtZUluY29tZQUAAAAIcmVmS29lZmYAAAAAAAAAAGQJAABkAAAAAgUAAAAQY3VycmVudFJlZlJld2FyZAUAAAARcmV3YXJkRm9yVGhpc0dhbWUBAAAAFHNldE5ld0dhbWVzUGxheWVkTnVtAAAAAQAAAAdhZGRyZXNzBAAAABN2YWx1ZUdhbWVzUGxheWVkTnVtCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAMX0dhbWVzUGxheWVkBAAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0EAAAAByRtYXRjaDAFAAAAE3ZhbHVlR2FtZXNQbGF5ZWROdW0DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAkAAGQAAAACBQAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0AAAAAAAAAAAEBAAAADmdldEN1cnJlbnREZWJ0AAAAAQAAAAlhc3NldE5hbWUEAAAAA3ZhbAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAFX0RlYnQEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIAAAAJYXNzZXROYW1lAAAAD2NhbGxlclB1YmxpY0tleQQAAAAMZGVwb3NpdE93bmVyCQAEHQAAAAIFAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAA1fRGVwb3NpdE93bmVyAwkAAAAAAAACBQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADGRlcG9zaXRPd25lcgUAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAKU9ubHkgZGVwb3NpdCBvd25lciBjYW4gd2l0aGRyYXdhbCBkZXBvc2l0AQAAAA5nZXREZXBvc2l0RGF0YQAAAAIAAAAJYXNzZXROYW1lAAAACWtleVN1ZmZpeAQAAAADa2V5CQABLAAAAAIFAAAACWFzc2V0TmFtZQUAAAAJa2V5U3VmZml4BAAAAAN2YWwJAAQaAAAAAgUAAAAWZGl2aWRlbmRQcm9ncmFtQWRkcmVzcwUAAAADa2V5BAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAACtDb3VsZG4ndCBmaW5kIGRpdmlkZW5kIHByb2dyYW0gc3RhcnQgaGVpZ2h0AAAABAAAAAFpAQAAAAdtYWtlQmV0AAAAAAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACWJldEFtb3VudAkAAGUAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAKY29tbWlzc2lvbgQAAAAHYXNzZXRJZAgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAZnYW1lSWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANcGxheWVyQWRkcmVzcwkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADHBtdEFzc2V0TmFtZQkBAAAAEWFzc2V0QmFzZTU4VG9OYW1lAAAAAQUAAAAHYXNzZXRJZAQAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlCQEAAAAXaW5jcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAADBQAAAAliZXRBbW91bnQFAAAADHBtdEFzc2V0TmFtZQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1wbXRBbXRDb3JyZWN0CQEAAAALcG10QW10Q2hlY2sAAAACBQAAAAxwbXRBc3NldE5hbWUFAAAACWJldEFtb3VudAMFAAAADXBtdEFtdENvcnJlY3QEAAAACmRhdGFTdHJpbmcJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAhzdGF0ZUFjYwIAAAABXwkABCUAAAABBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAACWJldEFtb3VudAIAAAABXwUAAAAMcG10QXNzZXROYW1lAgAAAAFfCQABpAAAAAEFAAAABmhlaWdodAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAB19HYW1lSWQFAAAACmRhdGFTdHJpbmcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAMcG10QXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQFAAAAEnNldFJlc2VydmVkQmFsYW5jZQUAAAADbmlsCQAAAgAAAAECAAAAFGFzc2V0SWQgaXMgaW5jb3JyZWN0AAAAAWkBAAAACHBsYXlHYW1lAAAABAAAAAZnYW1lSWQAAAAIcnNhU2lnbjEAAAAIcnNhU2lnbjIAAAAIcnNhU2lnbjMEAAAACGRhdGFMaXN0CQEAAAALZ2V0RGF0YUxpc3QAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAAQAAAANcGxheWVyQWRkcmVzcwkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAQQAAAAGYmV0QW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAIEAAAACWFzc2V0TmFtZQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAwQAAAAJZ2FtZVN0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAQEAAAACWFzc2V0SWQ1OAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAABJzZXRSZXNlcnZlZEJhbGFuY2UJAQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAIFAAAABmJldEFtdAUAAAAJYXNzZXROYW1lBAAAAAhkcnVtMUludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMQUAAAANcnNhUHVibGljS2V5MQQAAAAIZHJ1bTJJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjIFAAAADXJzYVB1YmxpY0tleTIEAAAACGRydW0zSW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24zBQAAAA1yc2FQdWJsaWNLZXkzBAAAAAl0d29JbkFSb3cJAAEsAAAAAgkAAZEAAAACBQAAAAVkcnVtMQUAAAAIZHJ1bTFJbnQJAAGRAAAAAgUAAAAFZHJ1bTIFAAAACGRydW0ySW50BAAAAAt0aHJlZUluQVJvdwkAASwAAAACBQAAAAl0d29JbkFSb3cJAAGRAAAAAgUAAAAFZHJ1bTMFAAAACGRydW0zSW50BAAAABVkcm9wcGVkRWxlbWVudHNTdHJpbmcJAAEsAAAAAgkAASwAAAACCQEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQUAAAAIZHJ1bTFJbnQJAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABBQAAAAhkcnVtMkludAkBAAAAD2RydW1JbnRUb1N0cmluZwAAAAEFAAAACGRydW0zSW50BAAAAAZ3aW5BbXQJAABpAAAAAgkAAGgAAAACBQAAAAZiZXRBbXQJAQAAABBkZWZpbmVNdWx0aXBsaWVyAAAAAgUAAAALdGhyZWVJbkFSb3cFAAAACXR3b0luQVJvdwAAAAAAAAAACgQAAAAMcmVmZXJBZGRyZXNzCQEAAAAPZ2V0UmVmZXJBZGRyZXNzAAAAAQUAAAANcGxheWVyQWRkcmVzcwQAAAALcmVmZXJSZXdhcmQJAQAAAA9zZXROZXdSZWZSZXdhcmQAAAADBQAAAAxyZWZlckFkZHJlc3MFAAAABmJldEFtdAUAAAAGd2luQW10AwkAAAAAAAACBQAAAAlnYW1lU3RhdGUFAAAACHN0YXRlQWNjAwkAAGYAAAACBQAAAA1nYW1lVGltZUZyYW1lCQAAZQAAAAIFAAAABmhlaWdodAUAAAAJZ2FtZVN0YXJ0AwkAAAAAAAACBQAAAAZ3aW5BbXQAAAAAAAAAAAAEAAAAEmF2YWlsYWJsZURpdmlkZW5kcwQAAAAJZGl2aWRlbmRzCQAAZAAAAAIJAQAAAA5nZXRDdXJyZW50RGVidAAAAAEFAAAACWFzc2V0TmFtZQUAAAAGYmV0QW10AwkAAGYAAAACBQAAAAlkaXZpZGVuZHMAAAAAAAAAAAAFAAAACWRpdmlkZW5kcwAAAAAAAAAAAAQAAAAEZGVidAQAAAAJZGl2aWRlbmRzCQAAZAAAAAIJAQAAAA5nZXRDdXJyZW50RGVidAAAAAEFAAAACWFzc2V0TmFtZQUAAAAGYmV0QW10AwkAAGYAAAACBQAAAAlkaXZpZGVuZHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAACWRpdmlkZW5kcwMJAAAAAAAAAgUAAAAMcmVmZXJBZGRyZXNzAgAAAAROb25lCQEAAAAMU2NyaXB0UmVzdWx0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AAACAAAAAQIAAAAXR2FtZSBzdGF0ZSBpcyBpbmNvcnJlY3QAAAABaQEAAAAPd2l0aGRyYXdEZXBvc2l0AAAAAQAAAAlhc3NldE5hbWUEAAAACWFzc2V0SWQ1OAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAAljYWxsZXJQdWIJAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIFAAAACWFzc2V0TmFtZQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RlcG9zaXRTdGFydEJsb2NrBAAAAA9kZXBvc2l0RHVyYXRpb24JAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAVX0RlcG9zaXREdXJhdGlvbkJsb2NrBAAAAA1kZXBvc2l0QW1vdW50CQEAAAAOZ2V0RGVwb3NpdERhdGEAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50AwkAAGcAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAATZGl2aWRlbmRTdGFydEhlaWdodAUAAAAPZGVwb3NpdER1cmF0aW9uCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAHV9EZXBvc2l0V2l0aGRyYXdUcmFuc2FjdGlvbklkCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAljYWxsZXJQdWIFAAAADWRlcG9zaXRBbW91bnQFAAAACWFzc2V0SWQ1OAUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABpEZXBvc2l0IHRpbWUgaXMgbm90IG92ZXIuIAkAAaQAAAABCQAAZQAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24CAAAADSBibG9ja3MgbGVmdC4AAAABaQEAAAARd2l0aGRyYXdSZWZSZXdhcmQAAAACAAAAB2FkZHJlc3MAAAAJYXNzZXROYW1lBAAAAAlhc3NldElkNTgJAQAAABFhc3NldE5hbWVUb0Jhc2U1OAAAAAEFAAAACWFzc2V0TmFtZQQAAAATcmV3YXJkQW1vdW50Q2hlY2tlZAQAAAAMcmV3YXJkQW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAMX1JlZmVyUmV3YXJkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAuQ291bGRuJ3QgZmluZCByZWZlcnJhbCByZXdhcmQgZm9yIHRoaXMgYWRkcmVzcwQAAAATcmV3YXJkQW1vdW50Q29ycmVjdAMJAAAAAAAAAgUAAAAJYXNzZXRJZDU4BQAAAAd3YXZlc0lkAwkAAGYAAAACBQAAAAxyZXdhcmRBbW91bnQAAAAAAAX14QAGBwMJAAAAAAAAAgUAAAAJYXNzZXRJZDU4BQAAAAVidGNJZAMJAABmAAAAAgUAAAAMcmV3YXJkQW1vdW50AAAAAAAF9eEABgcDCQAAAAAAAAIFAAAACWFzc2V0SWQ1OAUAAAAFZXRoSWQDCQAAZgAAAAIFAAAADHJld2FyZEFtb3VudAAAAAAABfXhAAYHAwkAAAAAAAACBQAAAAlhc3NldElkNTgFAAAABndlc3RJZAMJAABmAAAAAgUAAAAMcmV3YXJkQW1vdW50AAAAAAAF9eEABgcDCQAAAAAAAAIFAAAACWFzc2V0SWQ1OAUAAAAFd2N0SWQDCQAAZgAAAAIFAAAADHJld2FyZEFtb3VudAAAAAAABfXhAAYHAwkAAGYAAAACBQAAAAxyZXdhcmRBbW91bnQAAAAAAAX14QAGBwMFAAAAE3Jld2FyZEFtb3VudENvcnJlY3QFAAAADHJld2FyZEFtb3VudAkAAAIAAAABAgAAACRSZXdhcmQgQW1vdW50IGlzIHRvbyBsb3cgdG8gd2l0aGRyYXcJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAADF9SZWZlclJld2FyZAAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAHYWRkcmVzcwUAAAATcmV3YXJkQW1vdW50Q2hlY2tlZAUAAAAJYXNzZXRJZDU4BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADWdhbWVQdWJsaWNLZXkEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAAEc3N0eAUAAAAHJG1hdGNoMAYHByE9GvU=", "chainId": 87, "height": 1894672, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let dividendProgramAddress = addressFromPublicKey(fromBase58String("4YzSQxjz8tahQ62bgcKLxoh9424EYDiYdZUzUtQVCzks"))
5+
6+let gamePublicKey = fromBase58String("2o1waDCX67ArC4iV4WWHa41MHbCKS4na7KWDJmcKNAQ3")
7+
8+let referralProgramAddress = addressFromPublicKey(fromBase58String("1"))
9+
10+let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
11+
12+let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
13+
14+let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
15+
16+let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"]
17+
18+let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"]
19+
20+let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
21+
22+let gameTimeFrame = 2880
23+
24+let commission = 500000
25+
26+let stateAcc = "Accepted"
27+
28+let stateWin = "Win"
29+
30+let stateTimeout = "WinByTimeout"
31+
32+let stateLose = "Lose"
33+
34+let wavesId = unit
35+
36+let btcId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
37+
38+let ethId = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
39+
40+let ltcId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk'
41+
42+let westId = base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8'
43+
44+let wctId = base58'DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J'
45+
46+let usdtId = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
47+
48+let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
49+
50+let wavesMinAmt = 20000000
51+
52+let wavesMaxAmt = (wavesMinAmt * 10)
53+
54+let btcMinAmt = 2000
55+
56+let btcMaxAmt = (btcMinAmt * 10)
57+
58+let ethMinAmt = 100000
59+
60+let ethMaxAmt = (ethMinAmt * 10)
61+
62+let ltcMinAmt = 200000
63+
64+let ltcMaxAmt = (ltcMinAmt * 10)
65+
66+let wctMinAmt = 200000000
67+
68+let wctMaxAmt = (wctMinAmt * 10)
69+
70+let westMinAmt = 200000000
71+
72+let westMaxAmt = (westMinAmt * 10)
73+
74+let usdtMinAmt = 200000
75+
76+let usdtMaxAmt = (usdtMinAmt * 10)
77+
78+let usdnMinAmt = 200000
79+
80+let usdnMaxAmt = (usdnMinAmt * 10)
81+
82+func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
83+ then if (if ((betAmount >= wavesMinAmt))
84+ then (wavesMaxAmt >= betAmount)
85+ else false)
86+ then true
87+ else throw("Bet amount is not in range")
88+ else if ((pmtAssetId == "BTC"))
89+ then if (if ((betAmount >= btcMinAmt))
90+ then (btcMaxAmt >= betAmount)
91+ else false)
92+ then true
93+ else throw("Bet amount is not in range")
94+ else if ((pmtAssetId == "ETH"))
95+ then if (if ((betAmount >= ethMinAmt))
96+ then (ethMaxAmt >= betAmount)
97+ else false)
98+ then true
99+ else throw("Bet amount is not in range")
100+ else if ((pmtAssetId == "LTC"))
101+ then if (if ((betAmount >= ltcMinAmt))
102+ then (ltcMaxAmt >= betAmount)
103+ else false)
104+ then true
105+ else throw("Bet amount is not in range")
106+ else if ((pmtAssetId == "WEST"))
107+ then if (if ((betAmount >= westMinAmt))
108+ then (westMaxAmt >= betAmount)
109+ else false)
110+ then true
111+ else throw("Bet amount is not in range")
112+ else if ((pmtAssetId == "USDT"))
113+ then if (if ((betAmount >= usdtMinAmt))
114+ then (usdtMaxAmt >= betAmount)
115+ else false)
116+ then true
117+ else throw("Bet amount is not in range")
118+ else if ((pmtAssetId == "USDN"))
119+ then if (if ((betAmount >= usdnMinAmt))
120+ then (usdnMaxAmt >= betAmount)
121+ else false)
122+ then true
123+ else throw("Bet amount is not in range")
124+ else if (if ((betAmount >= wctMinAmt))
125+ then (wctMaxAmt >= betAmount)
126+ else false)
127+ then true
128+ else throw("Bet amount is not in range")
129+
130+
131+func getDataList (gameId) = {
132+ let getDataString = getString(this, (gameId + "_GameId"))
133+ let a = match getDataString {
134+ case a: String =>
135+ a
136+ case _ =>
137+ throw("GameId was not found")
138+ }
139+ split(a, "_")
140+ }
141+
142+
143+func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
144+ let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
145+ if (rsaCheck)
146+ then (toInt(sha256(rsaSign)) % 19)
147+ else throw("Rsa Signature is invalid")
148+ }
149+
150+
151+func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = {
152+ let currentReservedBalance = {
153+ let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved"))
154+ match valueReservedBalance {
155+ case a: Int =>
156+ a
157+ case _ =>
158+ 0
159+ }
160+ }
161+ let newReservedBalance = (currentReservedBalance + (pmtAmt * 260))
162+ if ((assetBalance(this, assetId58) >= newReservedBalance))
163+ then newReservedBalance
164+ else throw("Bet was rejected. Insufficient funds on game account.")
165+ }
166+
167+
168+func decreaseReservedBalance (betAmt,assetId) = {
169+ let valueReservedBalance = getInteger(this, (assetId + "_Reserved"))
170+ let extractReservedBalance = match valueReservedBalance {
171+ case a: Int =>
172+ a
173+ case _ =>
174+ 0
175+ }
176+ let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260))
177+ if ((decreaseReservedBalance >= 0))
178+ then decreaseReservedBalance
179+ else throw("Reserved balance couldn't be less than 0")
180+ }
181+
182+
183+func drumIntToString (drumInt) = if ((10 > drumInt))
184+ then ("0" + toString(drumInt))
185+ else toString(drumInt)
186+
187+
188+func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
189+ then 2600
190+ else if ((threeInARow == "666"))
191+ then 1300
192+ else if ((threeInARow == "555"))
193+ then 450
194+ else if ((threeInARow == "444"))
195+ then 200
196+ else if ((threeInARow == "333"))
197+ then 150
198+ else if ((threeInARow == "222"))
199+ then 110
200+ else if ((threeInARow == "111"))
201+ then 50
202+ else if ((twoInARow == "77"))
203+ then 270
204+ else if ((twoInARow == "66"))
205+ then 130
206+ else if ((twoInARow == "55"))
207+ then 45
208+ else if ((twoInARow == "44"))
209+ then 30
210+ else if ((twoInARow == "33"))
211+ then 20
212+ else if ((twoInARow == "22"))
213+ then 17
214+ else if ((twoInARow == "11"))
215+ then 13
216+ else 0
217+
218+
219+func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
220+ then wavesId
221+ else if ((assetName == "BTC"))
222+ then btcId
223+ else if ((assetName == "ETH"))
224+ then ethId
225+ else if ((assetName == "LTC"))
226+ then ltcId
227+ else if ((assetName == "WEST"))
228+ then westId
229+ else if ((assetName == "WCT"))
230+ then wctId
231+ else if ((assetName == "USDT"))
232+ then usdtId
233+ else if ((assetName == "USDN"))
234+ then usdnId
235+ else throw("Asset name is incorrect")
236+
237+
238+func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
239+ then "WAVES"
240+ else if ((assetId == btcId))
241+ then "BTC"
242+ else if ((assetId == ethId))
243+ then "ETH"
244+ else if ((assetId == ltcId))
245+ then "LTC"
246+ else if ((assetId == westId))
247+ then "WEST"
248+ else if ((assetId == wctId))
249+ then "WCT"
250+ else if ((assetId == usdtId))
251+ then "USDT"
252+ else if ((assetId == usdnId))
253+ then "USDN"
254+ else throw("AssetId is incorrect")
255+
256+
257+func getReferAddress (address) = {
258+ let referAddress = getString(referralProgramAddress, (address + "_Refer"))
259+ match referAddress {
260+ case a: String =>
261+ a
262+ case _ =>
263+ "None"
264+ }
265+ }
266+
267+
268+func setNewRefReward (referAddress,betAmt,winAmt) = if ((referAddress == "None"))
269+ then 0
270+ else {
271+ let valueRefReward = getInteger(this, (referAddress + "_RefReward"))
272+ let currentRefReward = match valueRefReward {
273+ case a: Int =>
274+ a
275+ case _ =>
276+ throw("Couldn't find refer reward for this address")
277+ }
278+ let refKoeff = {
279+ let a = match getInteger(this, (referAddress + "_GamesPlayedByRef")) {
280+ case a: Int =>
281+ a
282+ case _ =>
283+ throw("Couldn't find games played number by referrals for this address")
284+ }
285+ if ((a > 10000))
286+ then 30
287+ else if ((a > 1000))
288+ then 20
289+ else if ((a > 100))
290+ then 10
291+ else 5
292+ }
293+ let gameIncome = (betAmt - winAmt)
294+ let rewardForThisGame = ((gameIncome * refKoeff) / 100)
295+ (currentRefReward + rewardForThisGame)
296+ }
297+
298+
299+func setNewGamesPlayedNum (address) = {
300+ let valueGamesPlayedNum = getInteger(this, (address + "_GamesPlayed"))
301+ let currentGamesPlayedNum = match valueGamesPlayedNum {
302+ case a: Int =>
303+ a
304+ case _ =>
305+ 0
306+ }
307+ (currentGamesPlayedNum + 1)
308+ }
309+
310+
311+func getCurrentDebt (assetName) = {
312+ let val = getInteger(this, (assetName + "_Debt"))
313+ match val {
314+ case a: Int =>
315+ a
316+ case _ =>
317+ 0
318+ }
319+ }
320+
321+
322+func callerIsDepositOwner (assetName,callerPublicKey) = {
323+ let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
324+ if ((callerPublicKey == depositOwner))
325+ then callerPublicKey
326+ else throw("Only deposit owner can withdrawal deposit")
327+ }
328+
329+
330+func getDepositData (assetName,keySuffix) = {
331+ let key = (assetName + keySuffix)
332+ let val = getInteger(dividendProgramAddress, key)
333+ match val {
334+ case a: Int =>
335+ a
336+ case _ =>
337+ throw("Couldn't find dividend program start height")
338+ }
339+ }
340+
341+
342+@Callable(i)
343+func makeBet () = {
344+ let pmt = extract(i.payment)
345+ let betAmount = (pmt.amount - commission)
346+ let assetId = pmt.assetId
347+ let gameId = toBase58String(i.transactionId)
348+ let playerAddress = extract(i.caller)
349+ let pmtAssetName = assetBase58ToName(assetId)
350+ let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId)
351+ let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount)
352+ if (pmtAmtCorrect)
353+ then {
354+ let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height))
355+ WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)])
356+ }
357+ else throw("assetId is incorrect")
358+ }
359+
360+
361+
362+@Callable(i)
363+func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = {
364+ let dataList = getDataList(gameId)
365+ let gameState = dataList[0]
366+ let playerAddress = dataList[1]
367+ let betAmt = parseIntValue(dataList[2])
368+ let assetName = dataList[3]
369+ let gameStart = parseIntValue(dataList[4])
370+ let assetId58 = assetNameToBase58(assetName)
371+ let setReservedBalance = decreaseReservedBalance(betAmt, assetName)
372+ let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1)
373+ let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2)
374+ let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3)
375+ let twoInARow = (drum1[drum1Int] + drum2[drum2Int])
376+ let threeInARow = (twoInARow + drum3[drum3Int])
377+ let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
378+ let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10)
379+ let referAddress = getReferAddress(playerAddress)
380+ let referReward = setNewRefReward(referAddress, betAmt, winAmt)
381+ if ((gameState == stateAcc))
382+ then if ((gameTimeFrame > (height - gameStart)))
383+ then if ((winAmt == 0))
384+ then {
385+ let availableDividends = {
386+ let dividends = (getCurrentDebt(assetName) + betAmt)
387+ if ((dividends > 0))
388+ then dividends
389+ else 0
390+ }
391+ let debt = {
392+ let dividends = (getCurrentDebt(assetName) + betAmt)
393+ if ((dividends > 0))
394+ then 0
395+ else dividends
396+ }
397+ if ((referAddress == "None"))
398+ then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Debt"), debt), DataEntry((playerAddress + "_GamesPlayed"), setNewGamesPlayedNum(referAddress))]), TransferSet([ScriptTransfer(dividendProgramAddress, availableDividends, assetId58)]))
399+ else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Debt"), debt), DataEntry((referAddress + "_GamesPlayedByRef"), setNewGamesPlayedNum(referAddress)), DataEntry((referAddress + "_ReferReward"), referReward)]), TransferSet([ScriptTransfer(dividendProgramAddress, availableDividends, assetId58)]))
400+ }
401+ 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 + "_Debt"), (getCurrentDebt(assetName) - winAmt)), DataEntry((referAddress + "_GamesPlayedByRef"), setNewGamesPlayedNum(referAddress))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), winAmt, assetId58)]))
402+ 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 + "_Debt"), (getCurrentDebt(assetName) - (betAmt * 2))), DataEntry((referAddress + "_GamesPlayedByRef"), setNewGamesPlayedNum(referAddress))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), (betAmt * 2), assetId58)]))
403+ else throw("Game state is incorrect")
404+ }
405+
406+
407+
408+@Callable(i)
409+func withdrawDeposit (assetName) = {
410+ let assetId58 = assetNameToBase58(assetName)
411+ let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
412+ let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock")
413+ let depositDuration = getDepositData(assetName, "_DepositDurationBlock")
414+ let depositAmount = getDepositData(assetName, "_DepositAmount")
415+ if (((height - dividendStartHeight) >= depositDuration))
416+ then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)]))
417+ else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left."))
418+ }
419+
420+
421+
422+@Callable(i)
423+func withdrawRefReward (address,assetName) = {
424+ let assetId58 = assetNameToBase58(assetName)
425+ let rewardAmountChecked = {
426+ let rewardAmount = match getInteger(this, (address + "_ReferReward")) {
427+ case a: Int =>
428+ a
429+ case _ =>
430+ throw("Couldn't find referral reward for this address")
431+ }
432+ let rewardAmountCorrect = if ((assetId58 == wavesId))
433+ then if ((rewardAmount > 100000000))
434+ then true
435+ else false
436+ else if ((assetId58 == btcId))
437+ then if ((rewardAmount > 100000000))
438+ then true
439+ else false
440+ else if ((assetId58 == ethId))
441+ then if ((rewardAmount > 100000000))
442+ then true
443+ else false
444+ else if ((assetId58 == westId))
445+ then if ((rewardAmount > 100000000))
446+ then true
447+ else false
448+ else if ((assetId58 == wctId))
449+ then if ((rewardAmount > 100000000))
450+ then true
451+ else false
452+ else if ((rewardAmount > 100000000))
453+ then true
454+ else false
455+ if (rewardAmountCorrect)
456+ then rewardAmount
457+ else throw("Reward Amount is too low to withdraw")
458+ }
459+ ScriptResult(WriteSet([DataEntry((address + "_ReferReward"), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), rewardAmountChecked, assetId58)]))
460+ }
461+
462+
463+@Verifier(tx)
464+func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
465+ then match tx {
466+ case sstx: SetScriptTransaction =>
467+ true
468+ case _ =>
469+ false
470+ }
471+ else false
472+

github/deemru/w8io/3ef1775 
62.94 ms