tx · 4nMw3HvfnHmWZmQcKHZetZNdkQYHhWAZHytdCmYexemd 3MzqDsrJ19a1wqwLNC9WZhHixkTczC1HLFb: -0.09000000 Waves 2019.08.13 17:29 [629422] smart account 3MzqDsrJ19a1wqwLNC9WZhHixkTczC1HLFb > SELF 0.00000000 Waves
{ "type": 13, "id": "4nMw3HvfnHmWZmQcKHZetZNdkQYHhWAZHytdCmYexemd", "fee": 9000000, "feeAssetId": null, "timestamp": 1565706515351, "version": 1, "sender": "3MzqDsrJ19a1wqwLNC9WZhHixkTczC1HLFb", "senderPublicKey": "CB6swHXQ614ikcpiGn6fBKJyMgXNMNj4ghov1JM9BJmm", "proofs": [ "56S6qmFDzbT5VukwqQvhH3tg26s2MrNwXTs1frB959PKPpWY3Ao7CZBYoaZkChaFAyu97HbBAHEniGr1fGxhGLgG" ], "script": "base64:AAIDAAAAAAAAAAAAAAAFAAAAAA1nYW1pbmdBc3NldElkCQACWQAAAAECAAAALERuMTZoQ1FUdUpzZmVDY3dTNm9uVXpMVE5SemJMVWI3ekVHSHBSS0tQSjVvAQAAABZnZXRTZW5kZXJGcm9tUGF5bWVudFR4AAAAAQAAAAx0cmFuc2ZlclR4SWQEAAAAEHRyYW5zZmVyVHhTZW5kZXIEAAAAByRtYXRjaDAJAAPuAAAAAQkAAlkAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADHRyYW5zZmVyVHhJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAIBQAAAAJ0eAAAAAZzZW5kZXIJAAACAAAAAQIAAAAeVHJhbnNhY3Rpb24gaXMgbm8gdHJhbnNmZXIgdHghBQAAABB0cmFuc2ZlclR4U2VuZGVyAQAAABZnZXRBbW91bnRGcm9tUGF5bWVudFR4AAAAAQAAAAx0cmFuc2ZlclR4SWQEAAAABmFtb3VudAQAAAAHJG1hdGNoMAkAA+4AAAABCQACWQAAAAEJAQAAAAdleHRyYWN0AAAAAQUAAAAMdHJhbnNmZXJUeElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAJ0eAUAAAAHJG1hdGNoMAgFAAAAAnR4AAAABmFtb3VudAkAAAIAAAABAgAAAB5UcmFuc2FjdGlvbiBpcyBubyB0cmFuc2ZlciB0eCEFAAAABmFtb3VudAEAAAAVZ2V0QXNzZXRGcm9tUGF5bWVudFR4AAAAAQAAAAx0cmFuc2ZlclR4SWQEAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAJAAPuAAAAAQkAAlkAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADHRyYW5zZmVyVHhJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAIBQAAAAJ0eAAAAAdhc3NldElkCQAAAgAAAAECAAAAHlRyYW5zYWN0aW9uIGlzIG5vIHRyYW5zZmVyIHR4IQUAAAAHYXNzZXRJZAEAAAAOY2hlY2tQYXltZW50VHgAAAACAAAAC3BheW1lbnRUeElkAAAACnRoaXNTZW5kZXIEAAAABmFtb3VudAkBAAAAFmdldEFtb3VudEZyb21QYXltZW50VHgAAAABBQAAAAtwYXltZW50VHhJZAQAAAAGc2VuZGVyCQEAAAAWZ2V0U2VuZGVyRnJvbVBheW1lbnRUeAAAAAEFAAAAC3BheW1lbnRUeElkBAAAAAdhc3NldElkCQEAAAAVZ2V0QXNzZXRGcm9tUGF5bWVudFR4AAAAAQUAAAALcGF5bWVudFR4SWQDAwkAAAAAAAACBQAAAAZzZW5kZXIFAAAACnRoaXNTZW5kZXIJAAAAAAAAAgUAAAAGYW1vdW50AAAAAAAF9eEABwkAAAAAAAACBQAAAAdhc3NldElkBQAAAA1nYW1pbmdBc3NldElkBwAAAAEAAAABaQEAAAAMcmVnaXN0ZXJHYW1lAAAAAQAAAAR0eElkBAAAAARvcGVuBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMCAAAACG9wZW5HYW1lAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAACG9wZW5UeElkBQAAAAckbWF0Y2gwBQAAAAhvcGVuVHhJZAkAAAIAAAABAgAAABZJbml0aWF0aW5nIGltcG9zc2libGUhBAAAAAp0aGlzU2VuZGVyCQEAAAAWZ2V0U2VuZGVyRnJvbVBheW1lbnRUeAAAAAEFAAAABHR4SWQEAAAAB3R4VmFsaWQJAQAAAA5jaGVja1BheW1lbnRUeAAAAAIFAAAABHR4SWQFAAAACnRoaXNTZW5kZXIDBQAAAAd0eFZhbGlkAwkAAAAAAAACBQAAAARvcGVuAgAAAARub25lCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAhvcGVuR2FtZQUAAAAEdHhJZAUAAAADbmlsBAAAAA5tYXRjaGluZ1NlbmRlcgkBAAAAFmdldFNlbmRlckZyb21QYXltZW50VHgAAAABBQAAAARvcGVuBAAAAA1tYXRjaGluZ1Njb3JlCQAEGgAAAAIFAAAADm1hdGNoaW5nU2VuZGVyCQABLAAAAAIFAAAABG9wZW4CAAAABl9zY29yZQQAAAAJdGhpc1Njb3JlCQAEGgAAAAIFAAAACnRoaXNTZW5kZXIJAAEsAAAAAgUAAAAEdHhJZAIAAAAGX3Njb3JlBAAAAAckbWF0Y2gwBQAAAA1tYXRjaGluZ1Njb3JlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEm1hdGNoaW5nU2NvcmVWYWx1ZQUAAAAHJG1hdGNoMAQAAAAHJG1hdGNoMQUAAAAJdGhpc1Njb3JlAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAAANJbnQEAAAADnRoaXNTY29yZVZhbHVlBQAAAAckbWF0Y2gxBAAAAAZ3aW5uZXIDCQAAZgAAAAIFAAAADnRoaXNTY29yZVZhbHVlBQAAABJtYXRjaGluZ1Njb3JlVmFsdWUFAAAACnRoaXNTZW5kZXIFAAAADm1hdGNoaW5nU2VuZGVyBAAAAARkcmF3CQAAAAAAAAIFAAAAEm1hdGNoaW5nU2NvcmVWYWx1ZQUAAAAOdGhpc1Njb3JlVmFsdWUDBQAAAARkcmF3CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAIb3BlbkdhbWUCAAAABG5vbmUFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5tYXRjaGluZ1NlbmRlcgAAAAAABfXhAAUAAAANZ2FtaW5nQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAp0aGlzU2VuZGVyAAAAAAAF9eEABQAAAA1nYW1pbmdBc3NldElkBQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAhvcGVuR2FtZQIAAAAEbm9uZQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABndpbm5lcgAAAAAAC+vCAAUAAAANZ2FtaW5nQXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAGlRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjIhCQAAAgAAAAECAAAAGlRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjMhCQAAAgAAAAECAAAAE0ludmFsaWQgcGF5bWVudCB0eCEAAAAAqzXZwA==", "chainId": 84, "height": 629422, "spentComplexity": 0 } View: original | compacted Prev: 5yrMjUbU83CqUQrokoBcsFahUkVZzZkSmonHFKxKfNsa Next: none Diff:
Old | New | Differences | |
---|---|---|---|
77 | 77 | then ScriptResult(WriteSet([DataEntry("openGame", "none")]), TransferSet([ScriptTransfer(matchingSender, 100000000, gamingAssetId), ScriptTransfer(thisSender, 100000000, gamingAssetId)])) | |
78 | 78 | else ScriptResult(WriteSet([DataEntry("openGame", "none")]), TransferSet([ScriptTransfer(winner, 200000000, gamingAssetId)])) | |
79 | 79 | case _ => | |
80 | - | throw("This should never | |
80 | + | throw("This should never happen2!") | |
81 | 81 | } | |
82 | 82 | case _ => | |
83 | - | throw("This should never | |
83 | + | throw("This should never happen3!") | |
84 | 84 | } | |
85 | 85 | } | |
86 | 86 | else throw("Invalid payment tx!") |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let gamingAssetId = fromBase58String("Dn16hCQTuJsfeCcwS6onUzLTNRzbLUb7zEGHpRKKPJ5o") | |
5 | 5 | ||
6 | 6 | func getSenderFromPaymentTx (transferTxId) = { | |
7 | 7 | let transferTxSender = match transferTransactionById(fromBase58String(extract(transferTxId))) { | |
8 | 8 | case tx: TransferTransaction => | |
9 | 9 | tx.sender | |
10 | 10 | case _ => | |
11 | 11 | throw("Transaction is no transfer tx!") | |
12 | 12 | } | |
13 | 13 | transferTxSender | |
14 | 14 | } | |
15 | 15 | ||
16 | 16 | ||
17 | 17 | func getAmountFromPaymentTx (transferTxId) = { | |
18 | 18 | let amount = match transferTransactionById(fromBase58String(extract(transferTxId))) { | |
19 | 19 | case tx: TransferTransaction => | |
20 | 20 | tx.amount | |
21 | 21 | case _ => | |
22 | 22 | throw("Transaction is no transfer tx!") | |
23 | 23 | } | |
24 | 24 | amount | |
25 | 25 | } | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func getAssetFromPaymentTx (transferTxId) = { | |
29 | 29 | let assetId = match transferTransactionById(fromBase58String(extract(transferTxId))) { | |
30 | 30 | case tx: TransferTransaction => | |
31 | 31 | tx.assetId | |
32 | 32 | case _ => | |
33 | 33 | throw("Transaction is no transfer tx!") | |
34 | 34 | } | |
35 | 35 | assetId | |
36 | 36 | } | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func checkPaymentTx (paymentTxId,thisSender) = { | |
40 | 40 | let amount = getAmountFromPaymentTx(paymentTxId) | |
41 | 41 | let sender = getSenderFromPaymentTx(paymentTxId) | |
42 | 42 | let assetId = getAssetFromPaymentTx(paymentTxId) | |
43 | 43 | if (if ((sender == thisSender)) | |
44 | 44 | then (amount == 100000000) | |
45 | 45 | else false) | |
46 | 46 | then (assetId == gamingAssetId) | |
47 | 47 | else false | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | @Callable(i) | |
52 | 52 | func registerGame (txId) = { | |
53 | 53 | let open = match getString(this, "openGame") { | |
54 | 54 | case openTxId: String => | |
55 | 55 | openTxId | |
56 | 56 | case _ => | |
57 | 57 | throw("Initiating impossible!") | |
58 | 58 | } | |
59 | 59 | let thisSender = getSenderFromPaymentTx(txId) | |
60 | 60 | let txValid = checkPaymentTx(txId, thisSender) | |
61 | 61 | if (txValid) | |
62 | 62 | then if ((open == "none")) | |
63 | 63 | then WriteSet([DataEntry("openGame", txId)]) | |
64 | 64 | else { | |
65 | 65 | let matchingSender = getSenderFromPaymentTx(open) | |
66 | 66 | let matchingScore = getInteger(matchingSender, (open + "_score")) | |
67 | 67 | let thisScore = getInteger(thisSender, (txId + "_score")) | |
68 | 68 | match matchingScore { | |
69 | 69 | case matchingScoreValue: Int => | |
70 | 70 | match thisScore { | |
71 | 71 | case thisScoreValue: Int => | |
72 | 72 | let winner = if ((thisScoreValue > matchingScoreValue)) | |
73 | 73 | then thisSender | |
74 | 74 | else matchingSender | |
75 | 75 | let draw = (matchingScoreValue == thisScoreValue) | |
76 | 76 | if (draw) | |
77 | 77 | then ScriptResult(WriteSet([DataEntry("openGame", "none")]), TransferSet([ScriptTransfer(matchingSender, 100000000, gamingAssetId), ScriptTransfer(thisSender, 100000000, gamingAssetId)])) | |
78 | 78 | else ScriptResult(WriteSet([DataEntry("openGame", "none")]), TransferSet([ScriptTransfer(winner, 200000000, gamingAssetId)])) | |
79 | 79 | case _ => | |
80 | - | throw("This should never | |
80 | + | throw("This should never happen2!") | |
81 | 81 | } | |
82 | 82 | case _ => | |
83 | - | throw("This should never | |
83 | + | throw("This should never happen3!") | |
84 | 84 | } | |
85 | 85 | } | |
86 | 86 | else throw("Invalid payment tx!") | |
87 | 87 | } | |
88 | 88 | ||
89 | 89 |
github/deemru/w8io/169f3d6 51.86 ms ◑