tx · 2YmBFn2gjTXT9euWXu6yJCkcBdp19ei7bnux3CrWdgkD

3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo:  -0.01400000 Waves

2019.08.16 11:21 [633387] smart account 3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo > SELF 0.00000000 Waves

{ "type": 13, "id": "2YmBFn2gjTXT9euWXu6yJCkcBdp19ei7bnux3CrWdgkD", "fee": 1400000, "feeAssetId": null, "timestamp": 1565943662462, "version": 1, "sender": "3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo", "senderPublicKey": "5GQSFwNMkJFTT3FeLT3KENqoSr42yiJP3Av5qAYq1F7f", "proofs": [ "3Yoziqizo3hs2yjThUYhkh3nwTHU1ev2agw2t3FHy8jvGUPKbxjz5S6mfUg5odoDPiC6NzUso28V4xLaD6QzxgbC" ], "script": "base64:AAIDAAAAAAAAAAAAAAAMAAAAAAdSVU5OSU5HAgAAAAdSVU5OSU5HAAAAAAZDTE9TRUQCAAAABkNMT1NFRAAAAAAJREFQUE9XTkVSAgAAACMzTjdXaWlzbzd2bzY5cHFXZkx0cHpUM3Riek1VR2FocXBnbwAAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAROT05FAgAAAAROT05FAAAAAANGRUUAAAAAAAANu6AAAAAAA1dMVAEAAAAgXc1YMiAxtU0669iAvoWYChIkz8rePUfYvMDdGTUOq6oBAAAAC2dldE51bUJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAQZ2V0Q29udGVzdFN0YXR1cwAAAAAEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwEAAAANZ2V0QmV0QWNjb3VudAAAAAEAAAAFYmV0SWQEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgkAAaQAAAABBQAAAAViZXRJZAEAAAAaZ2V0RXh0V0FWRVNVU0RDdXJyZW5jeVJhdGUAAAAABAAAAA1vcmFjbGVBZGRyZXNzCQEAAAAHZXh0cmFjdAAAAAEJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNQUFRyVG8zQXpSNTZON0FyemJVM0JwcTl6WU1nY2YzOU1rBAAAABRXQVZFU1VTREN1cnJlbmN5UmF0ZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA1vcmFjbGVBZGRyZXNzAgAAAAt3YXZlc191c2RfMgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAABRXQVZFU1VTREN1cnJlbmN5UmF0ZQAAAAQAAAABaQEAAAAQc2V0Q29udGVzdFN0YXR1cwAAAAIAAAANY29udGVzdE51bWJlcgAAAA1jb250ZXN0U3RhdHVzBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAlEQVBQT1dORVIJAAACAAAAAQIAAAAnT25seSBkQVBQIE93bmVyIGNhbiBzZXQgQ29udGVzdCBTdGF0dXMuAwMJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAAB1JVTk5JTkcJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAABkNMT1NFRAcJAAACAAAAAQkAASwAAAACAgAAABBJbnZhbGlkIHN0YXR1czogBQAAAA1jb250ZXN0U3RhdHVzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAANY29udGVzdE51bWJlcgIAAAAHX3N0YXR1cwUAAAANY29udGVzdFN0YXR1cwUAAAADbmlsAAAAAWkBAAAAF3NldENvbnRlc3RDb25maWd1cmF0aW9uAAAAAgAAAA5jdXJyZW5jeVRpY2tlcgAAABJjb250ZXN0U3RhcnRIZWlnaHQEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAARY29udGVzdEN1cnJOdW1iZXIJAQAAAAtnZXROdW1CeUtleQAAAAECAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAAQY29udGVzdE5ld051bWJlcgkAAGQAAAACBQAAABFjb250ZXN0Q3Vyck51bWJlcgAAAAAAAAAAAQMJAQAAAAIhPQAAAAIFAAAAB2FjY291bnQFAAAACURBUFBPV05FUgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADdPbmx5IGRBUFAgT3duZXIgY2FuIENvbmZpZ3VyZSBDb250ZXN0LiBDYWxsZXIgYWNjb3VudDogBQAAAAdhY2NvdW50AgAAAA0gZGFwcCBvd25lcjogBQAAAAlEQVBQT1dORVIDCQAAZwAAAAIFAAAABmhlaWdodAUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgIAAAA9U3RhcnQgSGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgQmxvY2tjaGFpbiBoZWlnaHQ6IAkAAaQAAAABBQAAAAZoZWlnaHQDCQAAAAAAAAIFAAAAEWNvbnRlc3RDdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAABAWW91IGNhbm5vdCBjb25maWd1cmUgYSBuZXcgQ29udGVzdCB3aGlsZSBvbGQgQ29udGVzdCBzdGF0dXMgaXM6IAUAAAARY29udGVzdEN1cnJTdGF0dXMDCQEAAAACIT0AAAACBQAAAA5jdXJyZW5jeVRpY2tlcgUAAAAFV0FWRVMJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIGRBUFAgZG9lcyBub3Qgc3VwcG9ydCBjdXJyZW5jeTogBQAAAA5jdXJyZW5jeVRpY2tlcgIAAAAFIHlldC4EAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAABkAAAAAgUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAaAAAAAIAAAAAAAAAAAcAAAAAAAAABaAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgUAAAAQY29udGVzdE5ld051bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAACV9jdXJyZW5jeQUAAAAOY3VycmVuY3lUaWNrZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQFAAAAEmNvbnRlc3RTdGFydEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAADV9maW5pc2hoZWlnaHQFAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAdfc3RhdHVzBQAAAAdSVU5OSU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAAQY29udGVzdE5ld051bWJlcgIAAAAMX3ZvdGVjb3VudGVyAAAAAAAAAAAABQAAAANuaWwAAAABaQEAAAADYmV0AAAAAQAAAA1jdXJyZW5jeVZhbHVlBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBAAAABJjb250ZXN0U3RhcnRIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAMX3N0YXJ0aGVpZ2h0BAAAABNjb250ZXN0RmluaXNoSGVpZ2h0CQEAAAALZ2V0TnVtQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADV9maW5pc2hoZWlnaHQEAAAAEmNvbnRlc3RWb3RlQ291bnRlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfdm90ZWNvdW50ZXIEAAAAEWNvbnRlc3RDdXJyU3RhdHVzCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMEAAAACnRoaXNWb3RlSWQJAABkAAAAAgUAAAASY29udGVzdFZvdGVDb3VudGVyAAAAAAAAAAABBAAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJldF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8FAAAADWN1cnJlbmN5VmFsdWUEAAAADWNvbnRlc3RTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAARZXhpc3RpbmdCZXRWb3RlSWQJAQAAAAtnZXROdW1CeUtleQAAAAEFAAAAA2tleQQAAAASZXhpc3RpbmdCZXRBY2NvdW50CQEAAAANZ2V0QmV0QWNjb3VudAAAAAEFAAAAEWV4aXN0aW5nQmV0Vm90ZUlkAwkAAGYAAAACBQAAAAZoZWlnaHQJAABlAAAAAgUAAAATY29udGVz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", "chainId": 84, "height": 633387, "spentComplexity": 0 } View: original | compacted Prev: 2ewZ5yQVefkqezEs8GayUFsEWJXJUFTFz4wPxkEwXgjr Next: 2yqhCVPRtCFJ3erxCkvsNhQcQCnn7PdDp9G6qCZpwBij Diff:
OldNewDifferences
109109 let thisVoteId = (contestVoteCounter + 1)
110110 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
111111 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
112- let existingBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
112+ let existingBetVoteId = getNumByKey(key)
113113 let existingBetAccount = getBetAccount(existingBetVoteId)
114114 if ((height > (contestFinishHeight - (2 * 1440))))
115115 then throw("You cannot bet anymore at this height.")
124124 else if ((existingBetAccount != NONE))
125125 then (existingBetAccount != account)
126126 else false)
127- then throw(((((("Another wallet: " + existingBetAccount) + " did bet already on rate: ") + currencyValue) + " bet:") + toString(existingBetVoteId)))
127+ then throw(((((((("key: " + key) + " Another wallet: ") + existingBetAccount) + " did bet already on rate: ") + currencyValue) + " bet:") + toString(existingBetVoteId)))
128128 else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), toString(thisVoteId)), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
129129 }
130130
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RUNNING = "RUNNING"
55
66 let CLOSED = "CLOSED"
77
88 let DAPPOWNER = "3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo"
99
1010 let WAVES = "WAVES"
1111
1212 let NONE = "NONE"
1313
1414 let FEE = 900000
1515
1616 let WLT = base58'7KAXNTswj6947a6cVpGhVrh1utWpLcjwf8AFpWCtuMT7'
1717
1818 func getNumByKey (key) = {
1919 let num = match getInteger(this, key) {
2020 case a: Int =>
2121 a
2222 case _ =>
2323 0
2424 }
2525 num
2626 }
2727
2828
2929 func getStrByKey (key) = {
3030 let str = match getString(this, key) {
3131 case a: String =>
3232 a
3333 case _ =>
3434 NONE
3535 }
3636 str
3737 }
3838
3939
4040 func getContestStatus () = {
4141 let contestCurrNumber = getNumByKey("contest_currentnumber")
4242 getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
4343 }
4444
4545
4646 func getBetAccount (betId) = {
4747 let contestCurrNumber = getNumByKey("contest_currentnumber")
4848 getStrByKey((("contest_" + toString(contestCurrNumber)) + toString(betId)))
4949 }
5050
5151
5252 func getExtWAVESUSDCurrencyRate () = {
5353 let oracleAddress = extract(addressFromString("3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"))
5454 let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
5555 case a: Int =>
5656 a
5757 case _ =>
5858 0
5959 }
6060 WAVESUSDCurrencyRate
6161 }
6262
6363
6464 @Callable(i)
6565 func setContestStatus (contestNumber,contestStatus) = {
6666 let account = toBase58String(i.caller.bytes)
6767 if ((account != DAPPOWNER))
6868 then throw("Only dAPP Owner can set Contest Status.")
6969 else if (if ((contestStatus != RUNNING))
7070 then (contestStatus != CLOSED)
7171 else false)
7272 then throw(("Invalid status: " + contestStatus))
7373 else WriteSet([DataEntry((("contest_" + toString(contestNumber)) + "_status"), contestStatus)])
7474 }
7575
7676
7777
7878 @Callable(i)
7979 func setContestConfiguration (currencyTicker,contestStartHeight) = {
8080 let account = toBase58String(i.caller.bytes)
8181 let contestCurrNumber = getNumByKey("contest_currentnumber")
8282 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
8383 let contestNewNumber = (contestCurrNumber + 1)
8484 if ((account != DAPPOWNER))
8585 then throw(((("Only dAPP Owner can Configure Contest. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
8686 else if ((height >= contestStartHeight))
8787 then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
8888 else if ((contestCurrStatus == RUNNING))
8989 then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
9090 else if ((currencyTicker != WAVES))
9191 then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
9292 else {
9393 let contestFinishHeight = (contestStartHeight + (7 * 1440))
9494 WriteSet([DataEntry("contest_currentnumber", contestNewNumber), DataEntry((("contest_" + toString(contestNewNumber)) + "_currency"), currencyTicker), DataEntry((("contest_" + toString(contestNewNumber)) + "_startheight"), contestStartHeight), DataEntry((("contest_" + toString(contestNewNumber)) + "_finishheight"), contestFinishHeight), DataEntry((("contest_" + toString(contestNewNumber)) + "_status"), RUNNING), DataEntry((("contest_" + toString(contestNewNumber)) + "_votecounter"), 0)])
9595 }
9696 }
9797
9898
9999
100100 @Callable(i)
101101 func bet (currencyValue) = {
102102 let account = toBase58String(i.caller.bytes)
103103 let pmt = extract(i.payment)
104104 let contestCurrNumber = getNumByKey("contest_currentnumber")
105105 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_startheight"))
106106 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
107107 let contestVoteCounter = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_votecounter"))
108108 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
109109 let thisVoteId = (contestVoteCounter + 1)
110110 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
111111 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
112- let existingBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
112+ let existingBetVoteId = getNumByKey(key)
113113 let existingBetAccount = getBetAccount(existingBetVoteId)
114114 if ((height > (contestFinishHeight - (2 * 1440))))
115115 then throw("You cannot bet anymore at this height.")
116116 else if ((contestCurrStatus != RUNNING))
117117 then throw("Invalid status: you cannot bet now.")
118118 else if (if ((pmt.assetId != WLT))
119119 then true
120120 else (pmt.amount != 500000))
121121 then throw("You must pay 5 WLT to bet.")
122122 else if (if (true)
123123 then true
124124 else if ((existingBetAccount != NONE))
125125 then (existingBetAccount != account)
126126 else false)
127- then throw(((((("Another wallet: " + existingBetAccount) + " did bet already on rate: ") + currencyValue) + " bet:") + toString(existingBetVoteId)))
127+ then throw(((((((("key: " + key) + " Another wallet: ") + existingBetAccount) + " did bet already on rate: ") + currencyValue) + " bet:") + toString(existingBetVoteId)))
128128 else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), toString(thisVoteId)), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
129129 }
130130
131131
132132
133133 @Callable(i)
134134 func closecontest (currencyRate) = {
135135 let contestCurrNumber = getNumByKey("contest_currentnumber")
136136 let winningBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyRate))
137137 let winningBetAccount = getBetAccount(winningBetVoteId)
138138 let account = toBase58String(i.caller.bytes)
139139 let balance = wavesBalance(this)
140140 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
141141 let writeStatistics = WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winningBetAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)])
142142 if ((account != DAPPOWNER))
143143 then throw("Only dAPP Owner can Close Contest.")
144144 else if ((contestCurrStatus != RUNNING))
145145 then throw(("Cannot close a contest in status: " + contestCurrStatus))
146146 else if ((winningBetAccount != NONE))
147147 then {
148148 let winTransfer = TransferSet([ScriptTransfer(extract(addressFromString(winningBetAccount)), (wavesBalance(this) - FEE), unit)])
149149 ScriptResult(WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winningBetAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)]), winTransfer)
150150 }
151151 else WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winningBetAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)])
152152 }
153153
154154
155155 @Verifier(tx)
156156 func verify () = match tx {
157157 case _: SetScriptTransaction|DataTransaction =>
158158 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
159159 case _: InvokeScriptTransaction =>
160160 true
161161 case _ =>
162162 true
163163 }
164164

github/deemru/w8io/873ac7e 
66.45 ms