tx · 8sY3nHAiG3n9kvBYn6Ka5hzvQLru2RYQQPWxNaVrJ4Z9 3N3zK9Xg7d3QD2sYmufkH8RwfqJBS6UNtv4: -0.01000000 Waves 2023.05.07 04:14 [2566757] smart account 3N3zK9Xg7d3QD2sYmufkH8RwfqJBS6UNtv4 > SELF 0.00000000 Waves
{ "type": 13, "id": "8sY3nHAiG3n9kvBYn6Ka5hzvQLru2RYQQPWxNaVrJ4Z9", "fee": 1000000, "feeAssetId": null, "timestamp": 1683422143871, "version": 2, "chainId": 84, "sender": "3N3zK9Xg7d3QD2sYmufkH8RwfqJBS6UNtv4", "senderPublicKey": "56zinHFJSYYBPx7s5gFUziCFxLNevABDB67aLXj8E3do", "proofs": [ "2X82o24rJUU9gy6RfvdRstLFPjsm3Jpr9R1nf5T4ygCw4H1jMb7WzucTZcNXk4qnnu4SYhqBSiTVdY38PPRAGyhi" ], "script": "base64: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", "height": 2566757, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 33maRg2UWLRN8Dt7NrjA8RxAt3t8Hc6HTD2fQrnVsBmR Next: 8unYZZtD8E8zmeAqdPzqXuqNAA4YqGQpyTcXqYMpSdjF Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let bigIntHashDivisorCoinFLip = pow(10, 0, | |
4 | + | let bigIntHashDivisorCoinFLip = pow(10, 0, 16, 0, 0, HALFUP) | |
5 | 5 | ||
6 | 6 | func isNegative (n) = if ((0 > n)) | |
7 | 7 | then (n * -1) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let bigIntHashDivisorCoinFLip = pow(10, 0, | |
4 | + | let bigIntHashDivisorCoinFLip = pow(10, 0, 16, 0, 0, HALFUP) | |
5 | 5 | ||
6 | 6 | func isNegative (n) = if ((0 > n)) | |
7 | 7 | then (n * -1) | |
8 | 8 | else n | |
9 | 9 | ||
10 | 10 | ||
11 | 11 | @Callable(i) | |
12 | 12 | func betCoinFlip (isHeads,ref) = if (if ((10000000 > i.payments[0].amount)) | |
13 | 13 | then (i.payments[0].amount > 1000000000) | |
14 | 14 | else false) | |
15 | 15 | then throw("Invalid Waves amount. Min value: 0.1 Waves. Max Value: 10 Waves") | |
16 | 16 | else if ((i.payments[0].assetId != unit)) | |
17 | 17 | then throw("Invalid assetId") | |
18 | 18 | else { | |
19 | 19 | let x = if (isDefined(getInteger((toBase58String(i.caller.bytes) + "_bets")))) | |
20 | 20 | then getIntegerValue((toBase58String(i.caller.bytes) + "_bets")) | |
21 | 21 | else 0 | |
22 | 22 | let ref1 = if ((ref == "")) | |
23 | 23 | then toBase58String(this.bytes) | |
24 | 24 | else ref | |
25 | 25 | let toRef = ((i.payments[0].amount * 1) / 100) | |
26 | 26 | let lastTx = if (isDefined(getString("last_tx_coinflip"))) | |
27 | 27 | then (isNegative(toInt(sha256(fromBase58String(getStringValue("last_tx_coinflip"))))) / bigIntHashDivisorCoinFLip) | |
28 | 28 | else (isNegative(toInt(sha256(sha256(i.transactionId)))) / bigIntHashDivisorCoinFLip) | |
29 | 29 | let txxz = (isNegative(toInt(sha256(i.transactionId))) / bigIntHashDivisorCoinFLip) | |
30 | 30 | let f = if ((txxz > lastTx)) | |
31 | 31 | then (txxz - lastTx) | |
32 | 32 | else (lastTx - txxz) | |
33 | 33 | let result = if (if (if (isHeads) | |
34 | 34 | then if (if (if (if ((f == 0)) | |
35 | 35 | then true | |
36 | 36 | else (f == 2)) | |
37 | 37 | then true | |
38 | 38 | else (f == 4)) | |
39 | 39 | then true | |
40 | 40 | else (f == 6)) | |
41 | 41 | then true | |
42 | 42 | else (f == 8) | |
43 | 43 | else false) | |
44 | 44 | then true | |
45 | 45 | else if (!(isHeads)) | |
46 | 46 | then if (if (if (if ((f == 1)) | |
47 | 47 | then true | |
48 | 48 | else (f == 3)) | |
49 | 49 | then true | |
50 | 50 | else (f == 5)) | |
51 | 51 | then true | |
52 | 52 | else (f == 7)) | |
53 | 53 | then true | |
54 | 54 | else (f == 9) | |
55 | 55 | else false) | |
56 | 56 | then "win" | |
57 | 57 | else "loss" | |
58 | 58 | let transfer = if ((result == "win")) | |
59 | 59 | then (i.payments[0].amount * 2) | |
60 | 60 | else 0 | |
61 | 61 | let txPay = if ((transfer == 0)) | |
62 | 62 | then ScriptTransfer(Address(this.bytes), i.payments[0].amount, unit) | |
63 | 63 | else ScriptTransfer(Address(i.caller.bytes), (i.payments[0].amount * 2), unit) | |
64 | 64 | [IntegerEntry((toBase58String(i.caller.bytes) + "_bets"), (x + 1)), BooleanEntry((((toBase58String(i.caller.bytes) + "_bet_") + toString((x + 1))) + "_value"), isHeads), StringEntry(((toBase58String(i.caller.bytes) + "_bet_") + toString((x + 1))), toBase58String(i.transactionId)), StringEntry((((toBase58String(i.caller.bytes) + "_bet_") + toString((x + 1))) + "_ref"), ref1), IntegerEntry((((toBase58String(i.caller.bytes) + "_bet_") + toString((x + 1))) + "_block"), height), StringEntry("last_tx_coinflip", toBase58String(i.transactionId)), ScriptTransfer(Address(fromBase58String(ref1)), toRef, unit), StringEntry((((toBase58String(i.caller.bytes) + "_bet_") + toString((x + 1))) + "_result"), result), txPay] | |
65 | 65 | } | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | @Verifier(tx) | |
69 | 69 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
70 | 70 |
github/deemru/w8io/169f3d6 76.88 ms ◑![]()