tx · 3Q7xTkx2uGt91H7Z8Ch6NDbtsn6exCbZmSxHVWR8Dcxy

3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u:  -0.01400000 Waves

2019.10.26 21:53 [737487] smart account 3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u > SELF 0.00000000 Waves

{ "type": 13, "id": "3Q7xTkx2uGt91H7Z8Ch6NDbtsn6exCbZmSxHVWR8Dcxy", "fee": 1400000, "feeAssetId": null, "timestamp": 1572116081133, "version": 1, "sender": "3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u", "senderPublicKey": "BFgvNhTxuzThVrRXLX7LfTfCHVeCPDsF6JEpadKJPvox", "proofs": [ "rKZA5j5yRBiNTfMjqhfJfdWK2Q7cXeoG4jDADxMUmGBE7qVPqXGkh3jEuWdzD9qTaEpud1jcMuJraXKxVjpinf7" ], "script": "base64:AAIDAAAAAAAAAAwIARIDCgEIEgMKAQgAAAAkAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbU9sUkJUWUVPM0g3WTlyQm1vRlFGbjQzOTJQeDBRdzEzRHNkRWhuek1IMmNqNlk1eW1QdUNPTE1OZTVxclV6UWw4b1JMeklCekZWTVpsd1VZbDJib3NyT0l4UWJZRjdXVlFXdm9WeEVUMVlJZ0RtM056ek9MQTV1SDdDS08wc25zaG1NRkNET1pFZXc0MUdqS2gzUGd4K25iQWd1UDlaUVBmcVNhZkVtQzNDTi80eURzSnJLcmlSbmlaSm85alMvNExMc1JLd0I3SEFaSHpvRjlMTDd0U1pIM2h0YU5HdGJkVGt4WjFUelNUM01iMlZQU3pzWnZRRG9jWFVWT21KT3UwbzI5YU9ZK0drRy9HNFJDSzBGQldRSEVVdkM1MVRSRFM1azhqYWQwTzFNb2JqUWM2YjE4ZCtmdW9WRmROZlp3R0grdUZ1ZHRQRzNVSlRmMm1relpRSURBUUFCAAAAAA9HQU1FU0NPVU5URVJLRVkCAAAACSRHQU1FX05VTQAAAAAOUkVTRVJWQVRJT05LRVkCAAAAECRSRVNFUlZFRF9BTU9VTlQAAAAABFdCRVQBAAAAIA+bi6xab2gnOR9SbfiMgOxiQKrNdZOH+I5+YI04ouDJAAAAAA5XQUxMRVRXQVZFU0JFVAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVI5g9Ot7MZAQi0oorIsDrn13KqbnHOA4uAAAAAAMV0FMTEVUTUNBRkZFCQEAAAAHQWRkcmVzcwAAAAEBAAAAAAAAAAAOU1RBVEVTVUJNSVRURUQCAAAACVNVQk1JVFRFRAAAAAAMU1RBVEVXQUlUSU5HAgAAAAdXQUlUSU5HAAAAAA1TVEFURUZJTklTSEVEAgAAAAhGSU5JU0hFRAAAAAANU1RBVEVDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAAB1dBVkVMRVQAAAAAAAAAAAEAAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAAAEAAAAAAlGRUVNQ0FGRUUAAAAAAAAAAAIAAAAABkJFVE1JTgkAAGgAAAACAAAAAAAAAAAB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NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAdwYXlUeXBlCQEAAAALVHlwZVBheW1lbnQAAAABBQAAAAdwYXltZW50BAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAOU1RBVEVTVUJNSVRURUQFAAAABnBhQ29pbgUAAAAPcGxheWVyQVB1YktleTU4BQAAAAdwYXlUeXBlCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAAeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10AAAAAQUAAAAGd2luQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAACm5ld0dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALZ2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAEdGhpcwAAAAAAAAehIAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAAD2FjY2VwdENoYWxsZW5nZQAAAAEAAAAGZ2FtZUlkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkBAAAAAhwYXlUeXBlQgkBAAAAC1R5cGVQYXltZW50AAAAAQUAAAAHcGF5bWVudAQAAAAMZ2FtZURhdGFMaXN0CQEAAAATRXh0cmFjdEdhbWVEYXRhTGlzdAAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAMSWR4R2FtZVN0YXRlBAAAAAhwYXlUeXBlQQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACklkeFBheVR5cGUDCQEAAAACIT0AAAACCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4UGF5QW10AgAAAAAJAAACAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFBheUFtdAQAAAAGcGF5QW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAlJZHhQYXlBbXQDAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAA+wAAAABAQAAAAQTq9kzCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAARXQkVUBwkAAAIAAAABAgAAACZQYXltZW50IHNob3VsZCBiZSBpbiBXYXZlc2JldCBvciBXYXZlcwMFAAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAxVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMJAQAAAAIhPQAAAAIFAAAACHBheVR5cGVCBQAAAAhwYXlUeXBlQQkAAAIAAAABAgAAAFVQYXltZW50IG11c3QgYmUgbWFkZSBpbiB0aGUgc2FtZSBjdXJyZW5jeSB0b2tlbiBhcyB0aGUgYmV0LCBXQkVUL1dCRVQgb3IgV0FWRVMvV0FWRVMuAwkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABnBheUFtdAkAAAIAAAABAgAAACdQYXlvdXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgYmV0IGFtb3VudC4DCQEAAAACIT0AAAACBQAAAAlnYW1lU3RhdGUFAAAADlNUQVRFU1VCTUlUVEVECQAAAgAAAAECAAAAJEludmFsaWQgZ2FtZSBzdGF0ZSBmb3IgcGFzc2VkIGdhbWVJZAQAAAAGcGFDb2luCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAOSWR4UGxheWVyQUNvaW4EAAAACnBhUHViS2V5NTgJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAABJJZHhQbGF5ZXJBUHViS2V5NTgEAAAABndpbkFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4V2luQW10BAAAAAZwYkNvaW4JAQAAAAtTZWxlY3RDb2luQgAAAAEFAAAABnBhQ29pbgQAAAAKcGJQdWJLZXk1OAkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAJBQAAAAxTVEFURVdBSVRJTkcFAAAABnBhQ29pbgUAAAAKcGFQdWJLZXk1OAUAAAAIcGF5VHlwZUEFAAAABnBheUFtdAUAAAAGd2luQW10BQAAAAZwYkNvaW4FAAAACnBiUHViS2V5NTgCAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAAObmV3R2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAEdGhpcwAAAAAAAAehIAUAAAAEdW5pdAUAAAADbmlsAAAAAEZI6WY=", "chainId": 84, "height": 737487, "spentComplexity": 0 } View: original | compacted Prev: 6aqCbrq1wt4wvxPkyVu3EjmjuhM7St3DuZJeXk9MgrzD Next: CSmMhCBT2QSKv9kBb6gAT7evvRvN9QGSr2SkYiMDci11 Diff:
OldNewDifferences
101101
102102
103103 func FormatGameDataStr (gameState,playerACoin,playerAPubKey58,payType,payAmount,winAmt,playerBCoin,playerBPubKey58,randOrEmpty) = {
104- let fullStateStr = (((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam((toString(payAmount) + "_"))) + FormatGameDataParam(toString(winAmt)))
104+ let fullStateStr = ((((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam(toString(payAmount))) + "_") + FormatGameDataParam(toString(winAmt)))
105105 if (if (if ((playerBCoin == ""))
106106 then (playerBPubKey58 == "")
107107 else false)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmOlRBTYEO3H7Y9rBmoFQFn4392Px0Qw13DsdEhnzMH2cj6Y5ymPuCOLMNe5qrUzQl8oRLzIBzFVMZlwUYl2bosrOIxQbYF7WVQWvoVxET1YIgDm3NzzOLA5uH7CKO0snshmMFCDOZEew41GjKh3Pgx+nbAguP9ZQPfqSafEmC3CN/4yDsJrKriRniZJo9jS/4LLsRKwB7HAZHzoF9LL7tSZH3htaNGtbdTkxZ1TzST3Mb2VPSzsZvQDocXUVOmJOu0o29aOY+GkG/G4RCK0FBWQHEUvC51TRDS5k8jad0O1MobjQc6b18d+fuoVFdNfZwGH+uFudtPG3UJTf2mkzZQIDAQAB")
55
66 let GAMESCOUNTERKEY = "$GAME_NUM"
77
88 let RESERVATIONKEY = "$RESERVED_AMOUNT"
99
1010 let WBET = base58'23vgV9p9pD83A7CFbsDEc4zjanep7UeFo4ZRS6oGorhv'
1111
1212 let WALLETWAVESBET = Address(base58'3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX')
1313
1414 let WALLETMCAFFE = Address(base58'')
1515
1616 let STATESUBMITTED = "SUBMITTED"
1717
1818 let STATEWAITING = "WAITING"
1919
2020 let STATEFINISHED = "FINISHED"
2121
2222 let STATECANCELED = "CANCELED"
2323
2424 let WAVELET = 1
2525
2626 let FEEWAVESBET = 4
2727
2828 let FEEMCAFEE = 2
2929
3030 let BETMIN = (1 * WAVELET)
3131
3232 let BETMAX = ((1000 * 100) * WAVELET)
3333
3434 let IdxGameState = 0
3535
3636 let IdxPlayerACoin = 1
3737
3838 let IdxPlayerAPubKey58 = 2
3939
4040 let IdxPayType = 3
4141
4242 let IdxPayAmt = 4
4343
4444 let IdxWinAmt = 5
4545
4646 let IdxPlayerBCoin = 6
4747
4848 let IdxPlayerBPubKey58 = 7
4949
5050 let IdxRandOrEmpty = 8
5151
5252 func IncrementGameNum () = {
5353 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5454 case num: Int =>
5555 num
5656 case _ =>
5757 0
5858 }
5959 (gameNum + 1)
6060 }
6161
6262
6363 func ValidateBetAndDefineWinAmt (playerCoin,amount) = if (if ((playerCoin != "RED"))
6464 then (playerCoin != "BLUE")
6565 else false)
6666 then throw("Invalid play, change your play to RED or BLUE.")
6767 else if (if ((BETMIN > amount))
6868 then true
6969 else (amount > BETMAX))
7070 then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / 100000000))) + " maxBet=") + toString((BETMAX / 100000000))))
7171 else ((((amount * 2) / 100000) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
7272
7373
7474 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
7575 case a: Int =>
7676 a
7777 case _ =>
7878 0
7979 }
8080
8181
8282 func ValidateAndIncreaseReservedAmt (winAmt) = {
8383 let newReservedAmount = (ExtractReservedAmt() + winAmt)
8484 let balance = wavesBalance(this)
8585 if ((newReservedAmount > balance))
8686 then throw("Insufficient funds on Waves Rider account. Transaction was rejected for your safety.")
8787 else newReservedAmount
8888 }
8989
9090
9191 func FormatGameDataParam (p) = {
9292 let s = size(p)
9393 if ((s == 0))
9494 then throw("Parameter size must be greater then 0.")
9595 else if ((s > 99))
9696 then throw("Parameter size must be less then 100.")
9797 else if ((10 > s))
9898 then (("0" + toString(s)) + p)
9999 else (toString(s) + p)
100100 }
101101
102102
103103 func FormatGameDataStr (gameState,playerACoin,playerAPubKey58,payType,payAmount,winAmt,playerBCoin,playerBPubKey58,randOrEmpty) = {
104- let fullStateStr = (((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam((toString(payAmount) + "_"))) + FormatGameDataParam(toString(winAmt)))
104+ let fullStateStr = ((((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam(toString(payAmount))) + "_") + FormatGameDataParam(toString(winAmt)))
105105 if (if (if ((playerBCoin == ""))
106106 then (playerBPubKey58 == "")
107107 else false)
108108 then (randOrEmpty == "")
109109 else false)
110110 then fullStateStr
111111 else if (if (if ((playerBCoin != ""))
112112 then (playerBPubKey58 != "")
113113 else false)
114114 then (randOrEmpty == "")
115115 else false)
116116 then (((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_"))
117117 else ((((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_")) + FormatGameDataParam(randOrEmpty))
118118 }
119119
120120
121121 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
122122 then drop(remaining, 1)
123123 else remaining
124124
125125
126126 func ParseNextAttribute (remaining) = {
127127 let s = size(remaining)
128128 if ((s > 0))
129129 then {
130130 let nn = parseIntValue(take(remaining, 2))
131131 let v = take(drop(remaining, 2), nn)
132132 let tmpRemaining = drop(remaining, (nn + 2))
133133 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
134134 [v, remainingState]
135135 }
136136 else throw("Empty string was passed into parseNextAttribute func")
137137 }
138138
139139
140140 func ParseGameRawDataStr (rawStateStr) = {
141141 let gameState = ParseNextAttribute(rawStateStr)
142142 let playerAChoice = ParseNextAttribute(gameState[1])
143143 let playerAPubKey58 = ParseNextAttribute(playerAChoice[1])
144144 let playerAPayType = ParseNextAttribute(playerAPubKey58[1])
145145 let playerAPayAmt = ParseNextAttribute(playerAPayType[1])
146146 let winAmt = ParseNextAttribute(playerAPayAmt[1])
147147 [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
148148 }
149149
150150
151151 func ExtractGameDataList (gameId) = {
152152 let rawDataStr = match getString(this, gameId) {
153153 case str: String =>
154154 str
155155 case _ =>
156156 throw(("Couldn't find game by " + gameId))
157157 }
158158 ParseGameRawDataStr(rawDataStr)
159159 }
160160
161161
162162 func TypePayment (p) = if ((p.assetId == assetInfo(base58'WAVES')))
163163 then "WAVES"
164164 else "WBET"
165165
166166
167167 func SelectCoinB (coin) = if ((coin == "RED"))
168168 then "BLUE"
169169 else "RED"
170170
171171
172172 @Callable(i)
173173 func playCoin (paCoin) = {
174174 let gameId = toBase58String(i.transactionId)
175175 let payment = extract(i.payment)
176176 let feeAssetId = isDefined(i.feeAssetId)
177177 let gameIdUsed = isDefined(getString(this, gameId))
178178 let winAmt = ValidateBetAndDefineWinAmt(paCoin, payment.amount)
179179 if (if ((payment.assetId != assetInfo(base58'WAVES')))
180180 then (payment.assetId != WBET)
181181 else false)
182182 then throw("Payment should be in Wavesbet or Waves")
183183 else if (feeAssetId)
184184 then throw("Transaction's fee must be in Waves. Game aborted.")
185185 else if (gameIdUsed)
186186 then throw("Passed gameId had been used before. Game aborted.")
187187 else {
188188 let newGameNum = IncrementGameNum()
189189 let playerAPubKey58 = toBase58String(i.callerPublicKey)
190190 let payType = TypePayment(payment)
191191 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
192192 ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
193193 }
194194 }
195195
196196
197197
198198 @Callable(i)
199199 func acceptChallenge (gameId) = {
200200 let payment = extract(i.payment)
201201 let feeAssetId = isDefined(i.feeAssetId)
202202 let payTypeB = TypePayment(payment)
203203 let gameDataList = ExtractGameDataList(gameId)
204204 let gameState = gameDataList[IdxGameState]
205205 let payTypeA = gameDataList[IdxPayType]
206206 if ((gameDataList[IdxPayAmt] != ""))
207207 then throw(gameDataList[IdxPayAmt])
208208 else {
209209 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
210210 if (if ((payment.assetId != assetInfo(base58'WAVES')))
211211 then (payment.assetId != WBET)
212212 else false)
213213 then throw("Payment should be in Wavesbet or Waves")
214214 else if (feeAssetId)
215215 then throw("Transaction's fee must be in Waves. Game aborted.")
216216 else if ((payTypeB != payTypeA))
217217 then throw("Payment must be made in the same currency token as the bet, WBET/WBET or WAVES/WAVES.")
218218 else if ((payment.amount == payAmt))
219219 then throw("Payout must be equal to the bet amount.")
220220 else if ((gameState != STATESUBMITTED))
221221 then throw("Invalid game state for passed gameId")
222222 else {
223223 let paCoin = gameDataList[IdxPlayerACoin]
224224 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
225225 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
226226 let pbCoin = SelectCoinB(paCoin)
227227 let pbPubKey58 = toBase58String(i.callerPublicKey)
228228 let newGameDataStr = FormatGameDataStr(STATEWAITING, paCoin, paPubKey58, payTypeA, payAmt, winAmt, pbCoin, pbPubKey58, "")
229229 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
230230 }
231231 }
232232 }
233233
234234

github/deemru/w8io/3ef1775 
58.07 ms