tx · 5rJ7e5w6sFX95rRP1XXpRpNTqnaSpcQCMa6pii3WAjL 3N4Vi5ZgvLRTYSyLG2mr1c5xV7jkfNmsCBx: -0.01500000 Waves 2019.07.17 17:16 [589951] smart account 3N4Vi5ZgvLRTYSyLG2mr1c5xV7jkfNmsCBx > SELF 0.00000000 Waves
{ "type": 13, "id": "5rJ7e5w6sFX95rRP1XXpRpNTqnaSpcQCMa6pii3WAjL", "fee": 1500000, "feeAssetId": null, "timestamp": 1563372959205, "version": 1, "sender": "3N4Vi5ZgvLRTYSyLG2mr1c5xV7jkfNmsCBx", "senderPublicKey": "HrsooezxnsncDtB5CTSTjpxR9B8BHP4uMsxdgaW2xL1S", "proofs": [ "354CCfFvJYj7gGBmkL45v4uUEVQgiRsrsdus7NGPYPJG4Vs1WJ1bYj9Cy58gks8ioB9FHxsVBNRcpUKLGJ1paG3R" ], "script": "base64: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", "chainId": 84, "height": 589951, "spentComplexity": 0 } View: original | compacted Prev: 6XkAgrdssSmwZ5w4txVhoTRTgbyAZ1LxAd6mbnNy7MN8 Next: ATH2Sc3Cgf61oVfZ876Q3HYnGvrjRk4W1DokESjgnxmp Diff:
Old | New | Differences | |
---|---|---|---|
45 | 45 | then true | |
46 | 46 | else (bet == bet100)) | |
47 | 47 | then (bet * 2) | |
48 | - | else throw(("Payment amount is incorrect. Now: " + toString(pmtAmount))) | |
48 | + | else throw(((("Payment amount is incorrect. Now: " + toString(pmtAmount)) + " Must be") + toString(bet1))) | |
49 | 49 | } | |
50 | 50 | ||
51 | 51 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let dividerForTest = 1000 | |
5 | 5 | ||
6 | 6 | let comissionDecreaseForTest = 500000 | |
7 | 7 | ||
8 | 8 | let WavesMult = (100000000 / dividerForTest) | |
9 | 9 | ||
10 | 10 | let bet1 = (1 * WavesMult) | |
11 | 11 | ||
12 | 12 | let bet5 = (5 * WavesMult) | |
13 | 13 | ||
14 | 14 | let bet15 = (15 * WavesMult) | |
15 | 15 | ||
16 | 16 | let bet40 = (40 * WavesMult) | |
17 | 17 | ||
18 | 18 | let bet100 = (100 * WavesMult) | |
19 | 19 | ||
20 | 20 | let comission = (500000 - comissionDecreaseForTest) | |
21 | 21 | ||
22 | 22 | let oraclePublicKey = fromBase64String("base64:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMZuLoLHV5fcuqP/KjHoQ6VsZSkSWF2AwRALrLgTUfXYsdJw1zv0t9v7IHR63g7YroCvUFSXm1RmOhS1Xjr5yIECAwEAAQ==") | |
23 | 23 | ||
24 | 24 | let dappPublicKey = base58'HrsooezxnsncDtB5CTSTjpxR9B8BHP4uMsxdgaW2xL1S' | |
25 | 25 | ||
26 | 26 | let gameTimeFrame = 1440 | |
27 | 27 | ||
28 | 28 | let stateAcc = "Accepted" | |
29 | 29 | ||
30 | 30 | let stateWin = "Win" | |
31 | 31 | ||
32 | 32 | let stateTimeout = "WinByTimeout" | |
33 | 33 | ||
34 | 34 | let stateLose = "Lose" | |
35 | 35 | ||
36 | 36 | func setPrizeAmount (pmtAmount) = { | |
37 | 37 | let bet = (pmtAmount - comission) | |
38 | 38 | if (if (if (if (if ((bet == bet1)) | |
39 | 39 | then true | |
40 | 40 | else (bet == bet5)) | |
41 | 41 | then true | |
42 | 42 | else (bet == bet15)) | |
43 | 43 | then true | |
44 | 44 | else (bet == bet40)) | |
45 | 45 | then true | |
46 | 46 | else (bet == bet100)) | |
47 | 47 | then (bet * 2) | |
48 | - | else throw(("Payment amount is incorrect. Now: " + toString(pmtAmount))) | |
48 | + | else throw(((("Payment amount is incorrect. Now: " + toString(pmtAmount)) + " Must be") + toString(bet1))) | |
49 | 49 | } | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func increaseReservedBalance (playerPrize) = { | |
53 | 53 | let currentReservedBalance = { | |
54 | 54 | let valueReservedBalance = getInteger(this, "Reserved") | |
55 | 55 | match valueReservedBalance { | |
56 | 56 | case a: Int => | |
57 | 57 | a | |
58 | 58 | case _ => | |
59 | 59 | 0 | |
60 | 60 | } | |
61 | 61 | } | |
62 | 62 | let newReservedBalance = (currentReservedBalance + playerPrize) | |
63 | 63 | if ((wavesBalance(this) >= newReservedBalance)) | |
64 | 64 | then { | |
65 | 65 | let increaseReservedBalance = newReservedBalance | |
66 | 66 | increaseReservedBalance | |
67 | 67 | } | |
68 | 68 | else throw("Bet was rejected. Insufficient funds on game account.") | |
69 | 69 | } | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func getDataList (gameId) = { | |
73 | 73 | let getDataString = getString(this, gameId) | |
74 | 74 | let a = match getDataString { | |
75 | 75 | case a: String => | |
76 | 76 | a | |
77 | 77 | case _ => | |
78 | 78 | throw("GameId was not found") | |
79 | 79 | } | |
80 | 80 | split(a, "_") | |
81 | 81 | } | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func rsaToInt (gameId,rsaSign) = { | |
85 | 85 | let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, oraclePublicKey) | |
86 | 86 | if (rsaCheck) | |
87 | 87 | then { | |
88 | 88 | let rsaInt = ((toInt(sha256(rsaSign)) % 99) + 1) | |
89 | 89 | if (if ((rsaInt > 0)) | |
90 | 90 | then (100 >= rsaInt) | |
91 | 91 | else false) | |
92 | 92 | then rsaInt | |
93 | 93 | else throw("Rsa integer is not in range") | |
94 | 94 | } | |
95 | 95 | else throw("Rsa Signature is invalid") | |
96 | 96 | } | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func decreaseReservedBalance (playerPrize) = { | |
100 | 100 | let valueReservedBalance = getInteger(this, "Reserved") | |
101 | 101 | let extractReservedBalance = match valueReservedBalance { | |
102 | 102 | case a: Int => | |
103 | 103 | a | |
104 | 104 | case _ => | |
105 | 105 | 0 | |
106 | 106 | } | |
107 | 107 | let decreaseReservedBalance = (extractReservedBalance - playerPrize) | |
108 | 108 | if ((decreaseReservedBalance > 0)) | |
109 | 109 | then decreaseReservedBalance | |
110 | 110 | else throw("Reserved balance couldn't be less than 0") | |
111 | 111 | } | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func defineWinner (randomNumber,playerChoice) = { | |
115 | 115 | let rsaToState = if ((48 > randomNumber)) | |
116 | 116 | then "1" | |
117 | 117 | else if ((randomNumber > 52)) | |
118 | 118 | then "2" | |
119 | 119 | else "3" | |
120 | 120 | (rsaToState == playerChoice) | |
121 | 121 | } | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | @Callable(i) | |
125 | 125 | func bet (choice) = { | |
126 | 126 | let pmt = extract(i.payment) | |
127 | 127 | let pmtAmount = pmt.amount | |
128 | 128 | let gameId = toBase58String(i.transactionId) | |
129 | 129 | let gameStart = height | |
130 | 130 | let betAssetIdCheck = isDefined(pmt.assetId) | |
131 | 131 | let playerPublicKey = toBase58String(i.callerPublicKey) | |
132 | 132 | let playerChoice = if (if ((choice == "1")) | |
133 | 133 | then true | |
134 | 134 | else (choice == "2")) | |
135 | 135 | then choice | |
136 | 136 | else throw("Player's choice is incorrect") | |
137 | 137 | let playerPrize = setPrizeAmount(pmtAmount) | |
138 | 138 | let setReservedBalance = increaseReservedBalance(playerPrize) | |
139 | 139 | if (betAssetIdCheck) | |
140 | 140 | then throw("You can make bet in Waves only") | |
141 | 141 | else { | |
142 | 142 | let dataString = ((((((((stateAcc + "_") + playerPublicKey) + "_") + playerChoice) + "_") + toString(playerPrize)) + "_") + toString(gameStart)) | |
143 | 143 | WriteSet([DataEntry("Reserved", setReservedBalance), DataEntry(gameId, dataString)]) | |
144 | 144 | } | |
145 | 145 | } | |
146 | 146 | ||
147 | 147 | ||
148 | 148 | ||
149 | 149 | @Callable(i) | |
150 | 150 | func withdraw (gameId,rsaSign) = { | |
151 | 151 | let dataList = getDataList(gameId) | |
152 | 152 | let gameState = dataList[0] | |
153 | 153 | let playerAddress = addressFromPublicKey(fromBase58String(dataList[1])) | |
154 | 154 | let playerChoice = dataList[2] | |
155 | 155 | let playerPrize = parseIntValue(dataList[3]) | |
156 | 156 | let gameStart = parseIntValue(dataList[4]) | |
157 | 157 | let randomNumber = rsaToInt(gameId, rsaSign) | |
158 | 158 | let setReservedBalance = decreaseReservedBalance(playerPrize) | |
159 | 159 | let stringForNewData = ((((((dataList[1] + "_") + dataList[2]) + "_") + dataList[3]) + "_") + dataList[4]) | |
160 | 160 | let gameTime = (gameTimeFrame > (height - gameStart)) | |
161 | 161 | let stateCheck = (gameState == stateAcc) | |
162 | 162 | if (stateCheck) | |
163 | 163 | then if (gameTime) | |
164 | 164 | then { | |
165 | 165 | let playerWin = defineWinner(randomNumber, playerChoice) | |
166 | 166 | if (playerWin) | |
167 | 167 | then ScriptResult(WriteSet([DataEntry(gameId, ((((stateWin + "_") + stringForNewData) + "_") + toString(randomNumber))), DataEntry("Reserved", setReservedBalance)]), TransferSet([ScriptTransfer(playerAddress, playerPrize, unit)])) | |
168 | 168 | else WriteSet([DataEntry(gameId, ((((stateLose + "_") + stringForNewData) + "_") + toString(randomNumber))), DataEntry("Reserved", setReservedBalance)]) | |
169 | 169 | } | |
170 | 170 | else ScriptResult(WriteSet([DataEntry(gameId, ((((stateTimeout + "_") + stringForNewData) + "_") + "00")), DataEntry("Reserved", setReservedBalance)]), TransferSet([ScriptTransfer(playerAddress, playerPrize, unit)])) | |
171 | 171 | else throw("Game state is invalid") | |
172 | 172 | } | |
173 | 173 | ||
174 | 174 | ||
175 | 175 | @Verifier(tx) | |
176 | 176 | func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
177 | 177 | then match tx { | |
178 | 178 | case ttx: TransferTransaction => | |
179 | 179 | let valueReservedBalance = getInteger(this, "Reserved") | |
180 | 180 | let reservedBalance = match valueReservedBalance { | |
181 | 181 | case a: Int => | |
182 | 182 | a | |
183 | 183 | case _ => | |
184 | 184 | 0 | |
185 | 185 | } | |
186 | 186 | let availableBalance = (wavesBalance(this) - reservedBalance) | |
187 | 187 | let availibleAmount = (availableBalance >= ttx.amount) | |
188 | 188 | availibleAmount | |
189 | 189 | case stx: SetScriptTransaction => | |
190 | 190 | true | |
191 | 191 | case istx: InvokeScriptTransaction => | |
192 | 192 | true | |
193 | 193 | case _ => | |
194 | 194 | false | |
195 | 195 | } | |
196 | 196 | else false | |
197 | 197 |
github/deemru/w8io/169f3d6 44.21 ms ◑![]()