tx · HgXmS98moHnSCTah5zGDWPhjBLCPfdsrFno9AK6oTiAD 3N778wrQUp2Fm75ZTwtZ2WM7L9R2hT1Pavb: -0.05000000 Waves 2020.04.15 19:49 [955809] smart account 3N778wrQUp2Fm75ZTwtZ2WM7L9R2hT1Pavb > SELF 0.00000000 Waves
{ "type": 13, "id": "HgXmS98moHnSCTah5zGDWPhjBLCPfdsrFno9AK6oTiAD", "fee": 5000000, "feeAssetId": null, "timestamp": 1586969421869, "version": 1, "sender": "3N778wrQUp2Fm75ZTwtZ2WM7L9R2hT1Pavb", "senderPublicKey": "GDLTHJjR9hamQRzEMe3M685bqZSbdGzjtEXWbQupogZQ", "proofs": [ "1W3CnzHPTo2LRfY2XsBimxDmCnSXaaJAkhRPSoUxTWUSSScDUzKHk2tJDAw6sWQ3SzmRKL1WxjnK6MfCStbDHPq" ], "script": "base64:AAIDAAAAAAAAABUIARIDCgEIEgUKAwgIAhIFCgMICAIAAAANAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZzRkQVI2WGJCREFTOWhyL0VqM2RKdjZGZmM0NjZ4L21PR01XVTNsckFCczNxYThCSG11Skdua2ZicEVmMnZBd1lUT1dQdnZ6Zk0xME9CYmZsb1N5cTNjOU1LdnlUZTFsdUJMR3FXNHZaVVhJeXZTZ3oxbGl5VVZlZklReTNkeUY5amJlVFpiQzBiYmNULzdPM0RFTCswMXo2QStyRENhY1NaMGxHb2xTUTZBbmhMeHpJa1ZwT1FKYnJCbUMreCtadVpQQ01Xekp5bmQ1YWVPbjdqYWovbWtSVnl4ZTZnLzBPaFd6NE5paVpYZXVNUkIrOG1LeTBmV0QvVWxJbFpXSHNBUzJabXJrWEtxakxxMC8wd3I4SUxKa3pualNxZG5JNUliamczdVFyai80QU4raTlyMjhhUTczL1prUHRZNVNidzBBT2lBQkJ1N2dIbXE5YXlWeFpRSURBUUFCAAAAAAVXQVZFUwkAA+wAAAABAQAAAAQTq9kzAAAAAARXQkVUAQAAACCGtDaoeNMOzNjwF61LLiwEHwefusq5FqlK128lrZvQdgAAAAAGUk9ZQUxTAQAAACCbNjGl6sjFQai4ApeuQqCIF0KYeYQ2YB37uvrJElJLuwAAAAAPV0FMTEVUQ09NTVVOSVRZCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFULxHweE6v1pOfqW4iK2a1H7JT13jPO2j7AAAAAA5XQUxMRVRXQVZFU0JFVAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVFwWnXwgRygbw+j0rX5sk/7+QkmLtGWh7AAAAAAMV0FMTEVUTUNBRkVFCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUXBadfCBHKBvD6PStfmyT/v5CSYu0ZaHsAAAAAAxGRUVDT01NVU5JVFkAAAAAAAAAAAEAAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAAADAAAAAAlGRUVNQ0FGRUUAAAAAAAAAAAIBAAAADUV4dHJhY3RTdHJpbmcAAAABAAAAAmlkBAAAAApyYXdEYXRhU3Ry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", "chainId": 84, "height": 955809, "spentComplexity": 0 } View: original | compacted Prev: 738Tdmgurm6whfqdVz7BoQuw5eEm7MA4K82Ln6nYLGwP Next: none Diff:
Old | New | Differences | |
---|---|---|---|
97 | 97 | } | |
98 | 98 | ||
99 | 99 | ||
100 | + | ||
101 | + | @Callable(i) | |
102 | + | func withdrawNoFee (gameId,payment,rsaSign) = { | |
103 | + | let gameDataList = split(ExtractString(gameId), "_") | |
104 | + | let gameState = gameDataList[0] | |
105 | + | let tableId = gameDataList[1] | |
106 | + | let playerPubKey58 = gameDataList[2] | |
107 | + | let assetName = gameDataList[4] | |
108 | + | let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58)) | |
109 | + | let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC) | |
110 | + | if ((gameState != "SUBMITTED")) | |
111 | + | then throw("Invalid game state for passed gameId. Game aborted.") | |
112 | + | else if (!(rsaSigValid)) | |
113 | + | then throw("Invalid RSA Verification") | |
114 | + | else { | |
115 | + | let newGameDataStr = ((((((("WON_" + tableId) + "_") + playerPubKey58) + "_") + payment) + "_") + assetName) | |
116 | + | let winAmt = parseIntValue(payment) | |
117 | + | let assetType = StringToAsset(assetName) | |
118 | + | ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetType)])) | |
119 | + | } | |
120 | + | } | |
121 | + | ||
122 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg4dAR6XbBDAS9hr/Ej3dJv6Ffc466x/mOGMWU3lrABs3qa8BHmuJGnkfbpEf2vAwYTOWPvvzfM10OBbfloSyq3c9MKvyTe1luBLGqW4vZUXIyvSgz1liyUVefIQy3dyF9jbeTZbC0bbcT/7O3DEL+01z6A+rDCacSZ0lGolSQ6AnhLxzIkVpOQJbrBmC+x+ZuZPCMWzJynd5aeOn7jaj/mkRVyxe6g/0OhWz4NiiZXeuMRB+8mKy0fWD/UlIlZWHsAS2ZmrkXKqjLq0/0wr8ILJkznjSqdnI5Ibjg3uQrj/4AN+i9r28aQ73/ZkPtY5Sbw0AOiABBu7gHmq9ayVxZQIDAQAB") | |
5 | 5 | ||
6 | 6 | let WAVES = assetInfo(base58'WAVES') | |
7 | 7 | ||
8 | 8 | let WBET = base58'A4q1mYKo11yuH9gmvDodeJoksagcyQzeFE9JtphMWddw' | |
9 | 9 | ||
10 | 10 | let ROYALS = base58'BSt87FHK4td7NvDuzKYeb2ETVersiZDr4QW6WMX1BaFU' | |
11 | 11 | ||
12 | 12 | let WALLETCOMMUNITY = Address(base58'3MtCy2PCFPyu8A9SRNL4qUo1V17SGLHftD8') | |
13 | 13 | ||
14 | 14 | let WALLETWAVESBET = Address(base58'3MxK12u62zsu9xh3hU7p5iJncCLANd3zhTZ') | |
15 | 15 | ||
16 | 16 | let WALLETMCAFEE = Address(base58'3MxK12u62zsu9xh3hU7p5iJncCLANd3zhTZ') | |
17 | 17 | ||
18 | 18 | let FEECOMMUNITY = 1 | |
19 | 19 | ||
20 | 20 | let FEEWAVESBET = 3 | |
21 | 21 | ||
22 | 22 | let FEEMCAFEE = 2 | |
23 | 23 | ||
24 | 24 | func ExtractString (id) = { | |
25 | 25 | let rawDataStr = match getString(this, id) { | |
26 | 26 | case str: String => | |
27 | 27 | str | |
28 | 28 | case _ => | |
29 | 29 | throw(("Couldn't find string by " + id)) | |
30 | 30 | } | |
31 | 31 | rawDataStr | |
32 | 32 | } | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | func AssetToString (payment) = if ((payment.assetId == WBET)) | |
36 | 36 | then "WBET" | |
37 | 37 | else if ((payment.assetId == WAVES)) | |
38 | 38 | then "WAVES" | |
39 | 39 | else if ((payment.assetId == ROYALS)) | |
40 | 40 | then "ROYALS" | |
41 | 41 | else throw("Payment should be in Wavesbet, Waves or Royals") | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func StringToAsset (assetStr) = if ((assetStr == "WBET")) | |
45 | 45 | then WBET | |
46 | 46 | else if ((assetStr == "WAVES")) | |
47 | 47 | then unit | |
48 | 48 | else if ((assetStr == "ROYALS")) | |
49 | 49 | then ROYALS | |
50 | 50 | else throw("Invalid asset") | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | @Callable(i) | |
54 | 54 | func play (tableId) = { | |
55 | 55 | let payment = extract(i.payment) | |
56 | 56 | let feeAssetId = isDefined(i.feeAssetId) | |
57 | 57 | let gameId = toBase58String(i.transactionId) | |
58 | 58 | let gameIdUsed = isDefined(getString(this, gameId)) | |
59 | 59 | if (if (if ((payment.assetId != WBET)) | |
60 | 60 | then (payment.assetId != WAVES) | |
61 | 61 | else false) | |
62 | 62 | then (payment.assetId != ROYALS) | |
63 | 63 | else false) | |
64 | 64 | then throw("Payment should be in Wavesbet, Waves or Royals") | |
65 | 65 | else if (feeAssetId) | |
66 | 66 | then throw("Transaction's fee must be in Waves. Game aborted.") | |
67 | 67 | else if (gameIdUsed) | |
68 | 68 | then throw("Passed GameId had been used before. Game aborted.") | |
69 | 69 | else { | |
70 | 70 | let playerPubKey58 = toBase58String(i.callerPublicKey) | |
71 | 71 | let gameDataStr = (((((((("SUBMITTED" + "_") + tableId) + "_") + playerPubKey58) + "_") + toString(payment.amount)) + "_") + AssetToString(payment)) | |
72 | 72 | ScriptResult(WriteSet([DataEntry(gameId, gameDataStr)]), TransferSet(nil)) | |
73 | 73 | } | |
74 | 74 | } | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | ||
78 | 78 | @Callable(i) | |
79 | 79 | func withdraw (gameId,payment,rsaSign) = { | |
80 | 80 | let gameDataList = split(ExtractString(gameId), "_") | |
81 | 81 | let gameState = gameDataList[0] | |
82 | 82 | let tableId = gameDataList[1] | |
83 | 83 | let playerPubKey58 = gameDataList[2] | |
84 | 84 | let assetName = gameDataList[4] | |
85 | 85 | let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58)) | |
86 | 86 | let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC) | |
87 | 87 | if ((gameState != "SUBMITTED")) | |
88 | 88 | then throw("Invalid game state for passed gameId. Game aborted.") | |
89 | 89 | else if (!(rsaSigValid)) | |
90 | 90 | then throw("Invalid RSA Verification") | |
91 | 91 | else { | |
92 | 92 | let newGameDataStr = ((((((("WON_" + tableId) + "_") + playerPubKey58) + "_") + payment) + "_") + assetName) | |
93 | 93 | let winAmt = parseIntValue(payment) | |
94 | 94 | let assetType = StringToAsset(assetName) | |
95 | 95 | ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(playerAddress, fraction(winAmt, 94, 100), assetType), ScriptTransfer(WALLETCOMMUNITY, fraction(winAmt, FEECOMMUNITY, 100), assetType), ScriptTransfer(WALLETWAVESBET, fraction(winAmt, FEEWAVESBET, 100), assetType), ScriptTransfer(WALLETMCAFEE, fraction(winAmt, FEEMCAFEE, 100), assetType)])) | |
96 | 96 | } | |
97 | 97 | } | |
98 | 98 | ||
99 | 99 | ||
100 | + | ||
101 | + | @Callable(i) | |
102 | + | func withdrawNoFee (gameId,payment,rsaSign) = { | |
103 | + | let gameDataList = split(ExtractString(gameId), "_") | |
104 | + | let gameState = gameDataList[0] | |
105 | + | let tableId = gameDataList[1] | |
106 | + | let playerPubKey58 = gameDataList[2] | |
107 | + | let assetName = gameDataList[4] | |
108 | + | let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58)) | |
109 | + | let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC) | |
110 | + | if ((gameState != "SUBMITTED")) | |
111 | + | then throw("Invalid game state for passed gameId. Game aborted.") | |
112 | + | else if (!(rsaSigValid)) | |
113 | + | then throw("Invalid RSA Verification") | |
114 | + | else { | |
115 | + | let newGameDataStr = ((((((("WON_" + tableId) + "_") + playerPubKey58) + "_") + payment) + "_") + assetName) | |
116 | + | let winAmt = parseIntValue(payment) | |
117 | + | let assetType = StringToAsset(assetName) | |
118 | + | ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetType)])) | |
119 | + | } | |
120 | + | } | |
121 | + | ||
122 | + |
github/deemru/w8io/169f3d6 26.00 ms ◑![]()