tx · 56smDaFiP2ABtobgZiYiF3esvnAKwFVZ5PCKPMQCLwuU

3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT:  -0.01400000 Waves

2019.06.27 17:35 [560660] smart account 3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT > SELF 0.00000000 Waves

{ "type": 13, "id": "56smDaFiP2ABtobgZiYiF3esvnAKwFVZ5PCKPMQCLwuU", "fee": 1400000, "feeAssetId": null, "timestamp": 1561646118180, "version": 1, "sender": "3N8M61KCm8G72mK8PjacFbnnxdbFsyqQDeT", "senderPublicKey": "Bhyvkx4xdbEi4KPJNZSzx9gZgzgyLEsavuj2kYSt7SST", "proofs": [ "BVBKUPFg9EetGqgtLbP9JJGDTUjtZ914juvjhNkUPnYfwdQsUw3W5g6EFHRki2j9e2oRXxcAeJBY2sacdjTYT3t" ], "script": "base64:AAIDAAAAAAAAAAAAAAAXAAAAAA9TZXJ2ZXJQdWJsaWNLZXkBAAAAIAQ1/gW4L6VUuKyMox3deX07Tu0dL8x1obg+vYqfUuwTAAAAABBSb3VsZXR0ZVNlY3Rpb25zAAAAAAAAAAAVAAAAABFEYXRhR2FtZU51bWJlcktleQIAAAALQVBQX0dBTUVfSUQAAAAADURhdGFBbW91bnRLZXkCAAAABkFNT1VOVAAAAAAORGF0YVNlY3Rpb25LZXkCAAAAB1NFQ1RJT04AAAAADURhdGFTdGF0dXNLZXkCAAAABlNUQVRVUwAAAAANRGF0YVN0YXR1c05ldwIAAAADTkVXAAAAAA1EYXRhU3RhdHVzV2luAgAAAANXSU4AAAAAD0RhdGFTdGF0dXNMb29zZQIAAAAFTE9PU0UAAAAAFkVycm9yT25seVdhdmVzQWNjZXB0ZWQCAAAAE09ubHkgd2F2ZXMgYWNjZXB0ZWQAAAAAFUVycm9yTXVzdEdyZWF0ZXJUaGFuMAIAAAAlUGFyYW1ldGVyIHNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAAAAAAURXJyb3JNdXN0TGVzc1RoYW4xMDACAAAAJFBhcmFtZXRlciBzaXplIG11c3QgYmUgbGVzcyB0aGFuIDEwMAAAAAAVRXJyb3JCZXRNdXN0QmVJbldhdmVzAgAAABtCZXQgYW1vdW50IG11c3QgYmUgaW4gV2F2ZXMAAAAAHUVycm9yVHJhbnNhY3Rpb25NdXN0QmVJbldhdmVzAgAAACJUcmFuc2FjdGlvbidzIGZlZSBtdXN0IGJlIGluIFdhdmVzAAAAABRFcnJvclRyYW5zYWN0aW9uVXNlZAIAAAAvUGFzc2VkIHR4SWQgaGFkIGJlZW4gdXNlZCBiZWZvcmUuIEdhbWUgYWJvcnRlZC4AAAAAEEVycm9yS2V5Tm90Rm91bmQCAAAAD0tleSBub3QgZm91bmQ6IAAAAAANRXJyb3JHYW1lT3ZlcgIAAAAUR2FtZSBhbHJlYWR5IGlzIG92ZXIBAAAACVN0b3JlRGF0YQAAAAMAAAANdHJhbnNhY3Rpb25JZAAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAANdHJhbnNhY3Rpb25JZAIAAAABXwUA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dHJ5AAAAAgUAAAARRGF0YUdhbWVOdW1iZXJLZXkFAAAACmdhbWVOdW1iZXIJAARMAAAAAgkBAAAADFN0b3JlRGF0YUludAAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhQW1vdW50S2V5BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADFN0b3JlRGF0YUludAAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA5EYXRhU2VjdGlvbktleQUAAAAOZXhwZWN0ZWRSZXN1bHQJAARMAAAAAgkBAAAACVN0b3JlRGF0YQAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhU3RhdHVzS2V5BQAAAA1EYXRhU3RhdHVzTmV3BQAAAANuaWwAAAABaQEAAAAGcmVzdWx0AAAAAgAAABFnYW1lVHJhbnNhY3Rpb25JZAAAAANyc2EEAAAABHJhbmQJAQAAAA9HZW5lcmF0ZVJhbmRJbnQAAAACBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAADcnNhBAAAAA9zZWxlY3RlZFNlY3Rpb24JAQAAAApHZXREYXRhSW50AAAAAgUAAAARZ2FtZVRyYW5zYWN0aW9uSWQFAAAADkRhdGFTZWN0aW9uS2V5BAAAAAZzdGF0dXMJAQAAAA1HZXREYXRhU3RyaW5nAAAAAgUAAAARZ2FtZVRyYW5zYWN0aW9uSWQFAAAADURhdGFTdGF0dXNLZXkDCQEAAAACIT0AAAACBQAAAAZzdGF0dXMFAAAADURhdGFTdGF0dXNOZXcEAAAABWlzV2luCQAAAAAAAAIFAAAABHJhbmQFAAAAD3NlbGVjdGVkU2VjdGlvbgMFAAAABWlzV2luCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlTdG9yZURhdGEAAAADBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAANRGF0YVN0YXR1c0tleQUAAAANRGF0YVN0YXR1c1dpbgUAAAADbmlsCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlTdG9yZURhdGEAAAADBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAANRGF0YVN0YXR1c0tleQUAAAAPRGF0YVN0YXR1c0xvb3NlBQAAAANuaWwJAAACAAAAAQUAAAANRXJyb3JHYW1lT3ZlcgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAANzdHgFAAAAByRtYXRjaDAGBweNtrWi", "chainId": 84, "height": 560660, "spentComplexity": 0 } View: original | compacted Prev: GZdtS2Lx7B8ZKHimU6Joos35qyhTsShn2W5RE6Vk1NSU Next: Aivg1Wp6LLHpwm2JKBzb7JCjFCT2czkqnQ2b8bvTQXyt Diff:
OldNewDifferences
1515
1616 let DataStatusNew = "NEW"
1717
18-let ErrorOnlyWavesAccepted = "error_only_waves_accepted"
18+let DataStatusWin = "WIN"
19+
20+let DataStatusLoose = "LOOSE"
21+
22+let ErrorOnlyWavesAccepted = "Only waves accepted"
1923
2024 let ErrorMustGreaterThan0 = "Parameter size must be greater than 0"
2125
2731
2832 let ErrorTransactionUsed = "Passed txId had been used before. Game aborted."
2933
34+let ErrorKeyNotFound = "Key not found: "
35+
36+let ErrorGameOver = "Game already is over"
37+
3038 func StoreData (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
39+
40+
41+func StoreDataInt (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
42+
43+
44+func GetDataString (transactionId,key) = match getString(this, ((transactionId + "_") + key)) {
45+ case str: String =>
46+ str
47+ case _ =>
48+ throw((ErrorKeyNotFound + transactionId))
49+}
50+
51+
52+func GetDataInt (transactionId,key) = match getInteger(this, ((transactionId + "_") + key)) {
53+ case str: Int =>
54+ str
55+ case _ =>
56+ throw((ErrorKeyNotFound + transactionId))
57+}
3158
3259
3360 func NewGameId () = {
4168 }
4269
4370
44-@Callable(i)
4571 func GenerateRandInt (gameId,rsaSign) = {
4672 let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), ServerPublicKey)
4773 if (rsaSigValid)
4874 then {
4975 let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
50- WriteSet([DataEntry("orig", toInt(sha256(toBytes(rsaSign)))), DataEntry("rand", rand)])
76+ if ((0 > rand))
77+ then (-1 * rand)
78+ else rand
5179 }
5280 else throw("Invalid RSA signature")
5381 }
54-
5582
5683
5784 @Callable(i)
7097 then throw(ErrorTransactionMustBeInWaves)
7198 else if (txIdUsed)
7299 then throw(ErrorTransactionUsed)
73- else WriteSet([DataEntry(gameTransactionId, address), DataEntry(DataGameNumberKey, gameNumber), StoreData(gameTransactionId, DataAmountKey, toString(amount)), StoreData(gameTransactionId, DataSectionKey, toString(expectedResult)), StoreData(gameTransactionId, DataStatusKey, DataStatusNew)])
100+ else WriteSet([DataEntry(gameTransactionId, address), DataEntry(DataGameNumberKey, gameNumber), StoreDataInt(gameTransactionId, DataAmountKey, amount), StoreDataInt(gameTransactionId, DataSectionKey, expectedResult), StoreData(gameTransactionId, DataStatusKey, DataStatusNew)])
74101 }
75102
76103
77104
78105 @Callable(i)
79-func bet111 (expectedResult) = {
80- let lastAuctionIdKey = "last_auction_id"
81- let lastAuctionId = match getInteger(this, lastAuctionIdKey) {
82- case a: Int =>
83- a
84- case _ =>
85- 0
86- }
87- let id = (lastAuctionId + 1)
88- let newAuctionId = toString(id)
89- let ownerWallet = toBase58String(i.caller.bytes)
90- let pmt = value(i.payment)
91- if (isDefined(pmt.assetId))
92- then throw(ErrorOnlyWavesAccepted)
93- else {
94- let assetId = toBase58String(value(pmt.assetId))
95- let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
96- let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
97- let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
98- let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
99- let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
100- let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
101- let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
102- let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
103- let userBalanceKey = ((("balance_" + ownerWallet) + "_") + assetId)
104- let currentAmount = match getInteger(this, userBalanceKey) {
105- case a: Int =>
106- a
107- case _ =>
108- 0
106+func result (gameTransactionId,rsa) = {
107+ let rand = GenerateRandInt(gameTransactionId, rsa)
108+ let selectedSection = GetDataInt(gameTransactionId, DataSectionKey)
109+ let status = GetDataString(gameTransactionId, DataStatusKey)
110+ if ((status != DataStatusNew))
111+ then {
112+ let isWin = (rand == selectedSection)
113+ if (isWin)
114+ then WriteSet([StoreData(gameTransactionId, DataStatusKey, DataStatusWin)])
115+ else WriteSet([StoreData(gameTransactionId, DataStatusKey, DataStatusLoose)])
109116 }
110- let newAmount = (currentAmount + pmt.amount)
111- WriteSet([DataEntry(auctionLastBidKey, 0), DataEntry(auctionOwnerKey, ownerWallet), DataEntry(auctionAmountKey, pmt.amount), DataEntry(auctionAssetIdKey, assetId), DataEntry(userBalanceKey, newAmount), DataEntry(auctionIsActiveKey, true), DataEntry(auctionLastBidOwnerKey, ""), DataEntry(lastAuctionIdKey, id)])
112- }
117+ else throw(ErrorGameOver)
113118 }
114119
115120
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ServerPublicKey = base58'HSP9V7edVKjfLJUfRkEF6vfV9Tyz4Us4yqH9rkwqnHY'
55
66 let RouletteSections = 21
77
88 let DataGameNumberKey = "APP_GAME_ID"
99
1010 let DataAmountKey = "AMOUNT"
1111
1212 let DataSectionKey = "SECTION"
1313
1414 let DataStatusKey = "STATUS"
1515
1616 let DataStatusNew = "NEW"
1717
18-let ErrorOnlyWavesAccepted = "error_only_waves_accepted"
18+let DataStatusWin = "WIN"
19+
20+let DataStatusLoose = "LOOSE"
21+
22+let ErrorOnlyWavesAccepted = "Only waves accepted"
1923
2024 let ErrorMustGreaterThan0 = "Parameter size must be greater than 0"
2125
2226 let ErrorMustLessThan100 = "Parameter size must be less than 100"
2327
2428 let ErrorBetMustBeInWaves = "Bet amount must be in Waves"
2529
2630 let ErrorTransactionMustBeInWaves = "Transaction's fee must be in Waves"
2731
2832 let ErrorTransactionUsed = "Passed txId had been used before. Game aborted."
2933
34+let ErrorKeyNotFound = "Key not found: "
35+
36+let ErrorGameOver = "Game already is over"
37+
3038 func StoreData (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
39+
40+
41+func StoreDataInt (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
42+
43+
44+func GetDataString (transactionId,key) = match getString(this, ((transactionId + "_") + key)) {
45+ case str: String =>
46+ str
47+ case _ =>
48+ throw((ErrorKeyNotFound + transactionId))
49+}
50+
51+
52+func GetDataInt (transactionId,key) = match getInteger(this, ((transactionId + "_") + key)) {
53+ case str: Int =>
54+ str
55+ case _ =>
56+ throw((ErrorKeyNotFound + transactionId))
57+}
3158
3259
3360 func NewGameId () = {
3461 let gameNum = match getInteger(this, DataGameNumberKey) {
3562 case num: Int =>
3663 num
3764 case _ =>
3865 0
3966 }
4067 (gameNum + 1)
4168 }
4269
4370
44-@Callable(i)
4571 func GenerateRandInt (gameId,rsaSign) = {
4672 let rsaSigValid = sigVerify(fromBase58String(gameId), fromBase58String(rsaSign), ServerPublicKey)
4773 if (rsaSigValid)
4874 then {
4975 let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
50- WriteSet([DataEntry("orig", toInt(sha256(toBytes(rsaSign)))), DataEntry("rand", rand)])
76+ if ((0 > rand))
77+ then (-1 * rand)
78+ else rand
5179 }
5280 else throw("Invalid RSA signature")
5381 }
54-
5582
5683
5784 @Callable(i)
5885 func bet (expectedResult) = {
5986 let gameNumber = NewGameId()
6087 let gameTransactionId = toBase58String(i.transactionId)
6188 let address = toBase58String(i.caller.bytes)
6289 let pmt = extract(i.payment)
6390 let txIdUsed = isDefined(getString(this, gameTransactionId))
6491 let betNotInWaves = isDefined(pmt.assetId)
6592 let feeNotInWaves = isDefined(pmt.assetId)
6693 let amount = pmt.amount
6794 if (betNotInWaves)
6895 then throw(ErrorBetMustBeInWaves)
6996 else if (feeNotInWaves)
7097 then throw(ErrorTransactionMustBeInWaves)
7198 else if (txIdUsed)
7299 then throw(ErrorTransactionUsed)
73- else WriteSet([DataEntry(gameTransactionId, address), DataEntry(DataGameNumberKey, gameNumber), StoreData(gameTransactionId, DataAmountKey, toString(amount)), StoreData(gameTransactionId, DataSectionKey, toString(expectedResult)), StoreData(gameTransactionId, DataStatusKey, DataStatusNew)])
100+ else WriteSet([DataEntry(gameTransactionId, address), DataEntry(DataGameNumberKey, gameNumber), StoreDataInt(gameTransactionId, DataAmountKey, amount), StoreDataInt(gameTransactionId, DataSectionKey, expectedResult), StoreData(gameTransactionId, DataStatusKey, DataStatusNew)])
74101 }
75102
76103
77104
78105 @Callable(i)
79-func bet111 (expectedResult) = {
80- let lastAuctionIdKey = "last_auction_id"
81- let lastAuctionId = match getInteger(this, lastAuctionIdKey) {
82- case a: Int =>
83- a
84- case _ =>
85- 0
86- }
87- let id = (lastAuctionId + 1)
88- let newAuctionId = toString(id)
89- let ownerWallet = toBase58String(i.caller.bytes)
90- let pmt = value(i.payment)
91- if (isDefined(pmt.assetId))
92- then throw(ErrorOnlyWavesAccepted)
93- else {
94- let assetId = toBase58String(value(pmt.assetId))
95- let auctionDurationKey = (("auction_" + newAuctionId) + "_duration")
96- let auctionMinBidKey = (("auction_" + newAuctionId) + "_min_bid")
97- let auctionLastBidKey = (("auction_" + newAuctionId) + "_last_bid")
98- let auctionLastBidOwnerKey = (("auction_" + newAuctionId) + "_last_bid_owner")
99- let auctionOwnerKey = (("auction_" + newAuctionId) + "_owner")
100- let auctionAmountKey = (("auction_" + newAuctionId) + "_amount")
101- let auctionAssetIdKey = (("auction_" + newAuctionId) + "_asset_id")
102- let auctionIsActiveKey = (("auction_" + newAuctionId) + "_is_active")
103- let userBalanceKey = ((("balance_" + ownerWallet) + "_") + assetId)
104- let currentAmount = match getInteger(this, userBalanceKey) {
105- case a: Int =>
106- a
107- case _ =>
108- 0
106+func result (gameTransactionId,rsa) = {
107+ let rand = GenerateRandInt(gameTransactionId, rsa)
108+ let selectedSection = GetDataInt(gameTransactionId, DataSectionKey)
109+ let status = GetDataString(gameTransactionId, DataStatusKey)
110+ if ((status != DataStatusNew))
111+ then {
112+ let isWin = (rand == selectedSection)
113+ if (isWin)
114+ then WriteSet([StoreData(gameTransactionId, DataStatusKey, DataStatusWin)])
115+ else WriteSet([StoreData(gameTransactionId, DataStatusKey, DataStatusLoose)])
109116 }
110- let newAmount = (currentAmount + pmt.amount)
111- WriteSet([DataEntry(auctionLastBidKey, 0), DataEntry(auctionOwnerKey, ownerWallet), DataEntry(auctionAmountKey, pmt.amount), DataEntry(auctionAssetIdKey, assetId), DataEntry(userBalanceKey, newAmount), DataEntry(auctionIsActiveKey, true), DataEntry(auctionLastBidOwnerKey, ""), DataEntry(lastAuctionIdKey, id)])
112- }
117+ else throw(ErrorGameOver)
113118 }
114119
115120
116121 @Verifier(tx)
117122 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
118123 then match tx {
119124 case stx: SetScriptTransaction =>
120125 true
121126 case _ =>
122127 false
123128 }
124129 else false
125130

github/deemru/w8io/3ef1775 
55.73 ms