tx · CBf5MMqUGzr2W74fyEG1D7ERGR6V8RST6qRAejNtfMCb

3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX:  -0.05000000 Waves

2019.10.29 15:42 [741448] smart account 3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX > SELF 0.00000000 Waves

{ "type": 13, "id": "CBf5MMqUGzr2W74fyEG1D7ERGR6V8RST6qRAejNtfMCb", "fee": 5000000, "feeAssetId": null, "timestamp": 1572352949755, "version": 1, "sender": "3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX", "senderPublicKey": "ACfUG5PwG2GssMuyEwVEhkYAbbbP1geSHR8XoNxLyu6V", "proofs": [ "2mRLCZjjoTZmJoAiaiQPp11V7WY4y76bXdAtnzNFpyFgxoPeg4D4dbjvrDpPbsXX2AzdoyD7GPKr9A7zekXMPN9M" ], "script": "base64:AAIDAAAAAAAAAAwIARIDCgEIEgMKAQgAAAAiAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZzRkQVI2WGJCREFTOWhyL0VqM2RKdjZGZmM0NjZ4L21PR01XVTNsckFCczNxYThCSG11Skdua2ZicEVmMnZBd1lUT1dQdnZ6Zk0xME9CYmZsb1N5cTNjOU1LdnlUZTFsdUJMR3FXNHZaVVhJeXZTZ3oxbGl5VVZlZklReTNkeUY5amJlVFpiQzBiYmNULzdPM0RFTCswMXo2QStyRENhY1NaMGxHb2xTUTZBbmhMeHpJa1ZwT1FKYnJCbUMreCtadVpQQ01Xekp5bmQ1YWVPbjdqYWovbWtSVnl4ZTZnLzBPaFd6NE5paVpYZXVNUkIrOG1LeTBmV0QvVWxJbFpXSHNBUzJabXJrWEtxakxxMC8wd3I4SUxKa3pualNxZG5JNUliamczdVFyai80QU4raTlyMjhhUTczL1prUHRZNVNidzBBT2lBQkJ1N2dIbXE5YXlWeFpRSURBUUFCAAAAAA9HQU1FU0NPVU5URVJLRVkCAAAACSRHQU1FX05VTQAAAAAEV0JFVAEAAAAgD5uLrFpvaCc5H1Jt+IyA7GJAqs11k4f4jn5gjTii4MkAAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAAAEAAAAAAlGRUVNQ0FGRUUAAAAAAAAAAAIAAAAAB1dBVkVMRVQAAAAAAAX14QAAAAAADlNUQVRFU1VCTUlUVEVEAgAAAAlTVUJNSVRURUQAAAAADVNUQVRFQUNDRVBURUQCAAAACEFDQ0VQVEVEAAAAAA1TVEFURUZJTklTSEVEAgAAAAhGSU5JU0hFRAAAAAANU1RBVEVDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAAB0NPSU5SRUQCAAAAA1JFRAAAAAAIQ09JTkJMVUUCAAAABEJMVUUAAAAAC0JFVE1JTldBVkVTCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAAAQUAAAAHV0FWRUxFVAAAAAAAAAAAAgAAAAAKQkVUTUlOV0JFVAkAAGgAAAACAAAAAAAAAABkBQAAAAdXQVZFTEVUAAAAAAxJZHhHYW1lU3RhdGUAAAAAAAAA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Z2FtZUlkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkAwMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAPsAAAAAQEAAAAEE6vZMwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAEV0JFVAcJAAACAAAAAQIAAAAxUGF5bWVudCBzaG91bGQgYmUgaW4gV2JldCBvciBXYXZlcy4gR2FtZSBhYm9ydGVkLgMFAAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAxVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMFAAAACmdhbWVJZFVzZWQJAAACAAAAAQIAAAAxUGFzc2VkIGdhbWVJZCBoYWQgYmVlbiB1c2VkIGJlZm9yZS4gR2FtZSBhYm9ydGVkLgQAAAAKbmV3R2FtZU51bQkBAAAAEEluY3JlbWVudEdhbWVOdW0AAAAABAAAAA9wbGF5ZXJBUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAdwYXlUeXBlCQEAAAALcGF5bWVudFR5cGUAAAABBQAAAAdwYXltZW50BAAAAAZ3aW5BbXQJAQAAABpWYWxpZGF0ZUJldEFuZERlZmluZVdpbkFtdAAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAGcGFDb2luBQAAAAdwYXlUeXBlBAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAOU1RBVEVTVUJNSVRURUQFAAAABnBhQ29pbgUAAAAPcGxheWVyQVB1YktleTU4BQAAAAdwYXlUeXBlCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAD0dBTUVTQ09VTlRFUktFWQUAAAAKbmV3R2FtZU51bQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAtnYW1lRGF0YVN0cgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAANuaWwAAAABaQEAAAATY2FuY2VsQ29pbkNoYWxsZW5nZQAAAAEAAAAGZ2FtZUlkBAAAAApyYXdEYXRhU3RyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAZnYW1lSWQJAAACAAAAAQUAAAAKcmF3RGF0YVN0cgAAAABtwoqp", "chainId": 84, "height": 741448, "spentComplexity": 0 } View: original | compacted Prev: E9K8M7KeZ2xZ9DLpZBrZHq5cygVAmtNXsJgVPkfNx88A Next: 7vyiQGc9nm7XvfnvdrNWi1QMZAqp3yLmbv71K4Dw4T9b Diff:
OldNewDifferences
138138
139139 func ExtractGameDataList (gameId) = {
140140 let rawDataStr = getStringValue(this, gameId)
141- throw(rawDataStr)
141+ rawDataStr
142142 }
143143
144144
185185
186186 @Callable(i)
187187 func cancelCoinChallenge (gameId) = {
188- let gameDataList = ExtractGameDataList(gameId)
189- throw("asdasd")
188+ let rawDataStr = getStringValue(this, gameId)
189+ throw(rawDataStr)
190190 }
191191
192192
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg4dAR6XbBDAS9hr/Ej3dJv6Ffc466x/mOGMWU3lrABs3qa8BHmuJGnkfbpEf2vAwYTOWPvvzfM10OBbfloSyq3c9MKvyTe1luBLGqW4vZUXIyvSgz1liyUVefIQy3dyF9jbeTZbC0bbcT/7O3DEL+01z6A+rDCacSZ0lGolSQ6AnhLxzIkVpOQJbrBmC+x+ZuZPCMWzJynd5aeOn7jaj/mkRVyxe6g/0OhWz4NiiZXeuMRB+8mKy0fWD/UlIlZWHsAS2ZmrkXKqjLq0/0wr8ILJkznjSqdnI5Ibjg3uQrj/4AN+i9r28aQ73/ZkPtY5Sbw0AOiABBu7gHmq9ayVxZQIDAQAB")
55
66 let GAMESCOUNTERKEY = "$GAME_NUM"
77
88 let WBET = base58'23vgV9p9pD83A7CFbsDEc4zjanep7UeFo4ZRS6oGorhv'
99
1010 let FEEWAVESBET = 4
1111
1212 let FEEMCAFEE = 2
1313
1414 let WAVELET = 100000000
1515
1616 let STATESUBMITTED = "SUBMITTED"
1717
1818 let STATEACCEPTED = "ACCEPTED"
1919
2020 let STATEFINISHED = "FINISHED"
2121
2222 let STATECANCELED = "CANCELED"
2323
2424 let COINRED = "RED"
2525
2626 let COINBLUE = "BLUE"
2727
2828 let BETMINWAVES = ((1 * WAVELET) / 2)
2929
3030 let BETMINWBET = (100 * WAVELET)
3131
3232 let IdxGameState = 0
3333
3434 let IdxPlayerACoin = 1
3535
3636 let IdxPlayerAPubKey58 = 2
3737
3838 let IdxPayType = 3
3939
4040 let IdxPayAmt = 4
4141
4242 let IdxWinAmt = 5
4343
4444 let IdxPlayerBCoin = 6
4545
4646 let IdxPlayerBPubKey58 = 7
4747
4848 let IdxLuckyCoin = 8
4949
5050 func IncrementGameNum () = {
5151 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5252 case num: Int =>
5353 num
5454 case _ =>
5555 0
5656 }
5757 (gameNum + 1)
5858 }
5959
6060
6161 func generateNumber (inv,max,min) = {
6262 let lastPlay = match getBinary(this, "lastPlay") {
6363 case s: ByteVector =>
6464 s
6565 case a: Unit =>
6666 base58'2ee4oFDYriWJ9EMeR'
6767 case _ =>
6868 throw()
6969 }
7070 let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
7171 (((toInt(sha256(rand)) % 1000) % ((max - min) + 1)) + 1)
7272 }
7373
7474
7575 func paymentType (payment) = if ((payment.assetId == WBET))
7676 then "WBET"
7777 else "WAVES"
7878
7979
8080 func tokenType (token) = if ((token == "WBET"))
8181 then WBET
8282 else unit
8383
8484
8585 func FormatGameDataParam (p) = {
8686 let s = size(p)
8787 if ((s == 0))
8888 then throw("Parameter size must be greater then 0")
8989 else if ((s > 99))
9090 then throw("Parameter size must be less then 100")
9191 else if ((10 > s))
9292 then (("0" + toString(s)) + p)
9393 else (toString(s) + p)
9494 }
9595
9696
9797 func FormatGameDataStr (gameState,playerACoin,playerAPubKey58,payType,payAmount,winAmt,playerBCoin,playerBPubKey58,luckyCoin) = {
9898 let fullStateStr = ((((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam(toString(payAmount))) + "_") + FormatGameDataParam(toString(winAmt)))
9999 if (if (if ((playerBCoin == ""))
100100 then true
101101 else (playerBPubKey58 == ""))
102102 then true
103103 else (luckyCoin == ""))
104104 then fullStateStr
105105 else ((((((fullStateStr + "_") + FormatGameDataParam(playerBCoin)) + "_") + FormatGameDataParam(playerBPubKey58)) + "_") + FormatGameDataParam(luckyCoin))
106106 }
107107
108108
109109 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
110110 then drop(remaining, 1)
111111 else remaining
112112
113113
114114 func ParseNextAttribute (remaining) = {
115115 let s = size(remaining)
116116 if ((s > 0))
117117 then {
118118 let nn = parseIntValue(take(remaining, 2))
119119 let v = take(drop(remaining, 2), nn)
120120 let tmpRemaining = drop(remaining, (nn + 2))
121121 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
122122 [v, remainingState]
123123 }
124124 else throw("Empty string was passed into parseNextAttribute func")
125125 }
126126
127127
128128 func ParseGameRawDataStr (rawStateStr) = {
129129 let gameState = ParseNextAttribute(rawStateStr)
130130 let paCoin = ParseNextAttribute(gameState[1])
131131 let paPubKey58 = ParseNextAttribute(paCoin[1])
132132 let payType = ParseNextAttribute(paPubKey58[1])
133133 let payAmt = ParseNextAttribute(payType[1])
134134 let winAmt = ParseNextAttribute(payAmt[1])
135135 [gameState[0], paCoin[0], paPubKey58[0], payType[0], payAmt[0], winAmt[0]]
136136 }
137137
138138
139139 func ExtractGameDataList (gameId) = {
140140 let rawDataStr = getStringValue(this, gameId)
141- throw(rawDataStr)
141+ rawDataStr
142142 }
143143
144144
145145 func ValidateBetAndDefineWinAmt (amount,playerCoin,paymentType) = if (if ((playerCoin != COINRED))
146146 then (playerCoin != COINBLUE)
147147 else false)
148148 then throw("Invalid play, change your bet to RED or BLUE coin. Game aborted.")
149149 else if (if ((paymentType == "WBET"))
150150 then (BETMINWBET > amount)
151151 else false)
152152 then throw(("The minimum bet on Wbet is " + toString((BETMINWBET / WAVELET))))
153153 else if (if ((paymentType == "WAVES"))
154154 then (BETMINWAVES > amount)
155155 else false)
156156 then throw(("The minimum bet on Waves is " + toString((BETMINWAVES / WAVELET))))
157157 else (((amount * 2) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
158158
159159
160160 @Callable(i)
161161 func playCoin (paCoin) = {
162162 let gameId = toBase58String(i.transactionId)
163163 let gameIdUsed = isDefined(getString(this, gameId))
164164 let payment = extract(i.payment)
165165 let feeAssetId = isDefined(i.feeAssetId)
166166 if (if ((payment.assetId != assetInfo(base58'WAVES')))
167167 then (payment.assetId != WBET)
168168 else false)
169169 then throw("Payment should be in Wbet or Waves. Game aborted.")
170170 else if (feeAssetId)
171171 then throw("Transaction's fee must be in Waves. Game aborted.")
172172 else if (gameIdUsed)
173173 then throw("Passed gameId had been used before. Game aborted.")
174174 else {
175175 let newGameNum = IncrementGameNum()
176176 let playerAPubKey58 = toBase58String(i.callerPublicKey)
177177 let payType = paymentType(payment)
178178 let winAmt = ValidateBetAndDefineWinAmt(payment.amount, paCoin, payType)
179179 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
180180 ScriptResult(WriteSet([DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet(nil))
181181 }
182182 }
183183
184184
185185
186186 @Callable(i)
187187 func cancelCoinChallenge (gameId) = {
188- let gameDataList = ExtractGameDataList(gameId)
189- throw("asdasd")
188+ let rawDataStr = getStringValue(this, gameId)
189+ throw(rawDataStr)
190190 }
191191
192192

github/deemru/w8io/873ac7e 
27.43 ms