tx · 2rSeQNDLW3gxzmezBKto11hVyPWMomd2kt6ZNWtvLyLp

3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo:  -0.01400000 Waves

2019.08.15 11:54 [631951] smart account 3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo > SELF 0.00000000 Waves

{ "type": 13, "id": "2rSeQNDLW3gxzmezBKto11hVyPWMomd2kt6ZNWtvLyLp", "fee": 1400000, "feeAssetId": null, "timestamp": 1565859073641, "version": 1, "sender": "3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo", "senderPublicKey": "5GQSFwNMkJFTT3FeLT3KENqoSr42yiJP3Av5qAYq1F7f", "proofs": [ "2WHpS2v83mSnZdWreX4aricRoMXwxy7qoihKeWDaoVRiThLdELT5NrxvNTmket5KQsSXUTgffvsJV4dFPYrEAf1Y" ], "script": "base64:AAIDAAAAAAAAAAAAAAAMAAAAAAdSVU5OSU5HAgAAAAdSVU5OSU5HAAAAAAZDTE9TRUQCAAAABkNMT1NFRAAAAAAJREFQUE9XTkVSAgAAACMzTjdXaWlzbzd2bzY5cHFXZkx0cHpUM3Riek1VR2FocXBnbwAAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAROT05FAgAAAAROT05FAAAAAANGRUUAAAAAAAANu6AAAAAAA1dMVAEAAAAgXc1YMiAxtU0669iAvoWYChIkz8rePUfYvMDdGTUOq6oBAAAAC2dldE51bUJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAQZ2V0Q29udGVzdFN0YXR1cwAAAAAEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwEAAAANZ2V0QmV0QWNjb3VudAAAAAEAAAAFYmV0SWQEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgkAAaQAAAABBQAAAAViZXRJZAEAAAAaZ2V0RXh0V0FWRVNVU0RDdXJyZW5jeVJhdGUAAAAABAAAAA1vcmFjbGVBZGRyZXNzCQEAAAAHZXh0cmFjdAAAAAEJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNQUFRyVG8zQXpSNTZON0FyemJVM0JwcTl6WU1nY2YzOU1rBAAAABRXQVZFU1VTREN1cnJlbmN5UmF0ZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA1vcmFjbGVBZGRyZXNzAgAAAAt3YXZlc191c2RfMgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAABRXQVZFU1VTREN1cnJlbmN5UmF0ZQAAAAQAAAABaQEAAAAQc2V0Q29udGVzdFN0YXR1cwAAAAIAAAANY29udGVzdE51bWJlcgAAAA1jb250ZXN0U3RhdHVzBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAlEQVBQT1dORVIJAAACAAAAAQIAAAAnT25seSBkQVBQIE93bmVyIGNhbiBzZXQgQ29udGVzdCBTdGF0dXMuAwMJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAAB1JVTk5JTkcJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAABkNMT1NFRAcJAAACAAAAAQkAASwAAAACAgAAABBJbnZhbGlkIHN0YXR1czogBQAAAA1jb250ZXN0U3RhdHVzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAANY29udGVzdE51bWJlcgIAAAAHX3N0YXR1cwUAAAANY29udGVzdFN0YXR1cwUAAAADbmlsAAAAAWkBAAAAF3NldENvbnRlc3RDb25maWd1cmF0aW9uAAAAAgAAAA5jdXJyZW5jeVRpY2tlcgAAABJjb250ZXN0U3RhcnRIZWlnaHQEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAARY29udGVzdEN1cnJOdW1iZXIJAQAAAAtnZXROdW1CeUtleQAAAAECAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAAQY29udGVzdE5ld051bWJlcgkAAGQAAAACBQAAABFjb250ZXN0Q3Vyck51bWJlcgAAAAAAAAAAAQMJAQAAAAIhPQAAAAIFAAAAB2FjY291bnQFAAAACURBUFBPV05FUgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADdPbmx5IGRBUFAgT3duZXIgY2FuIENvbmZpZ3VyZSBDb250ZXN0LiBDYWxsZXIgYWNjb3VudDogBQAAAAdhY2NvdW50AgAAAA0gZGFwcCBvd25lcjogBQAAAAlEQVBQT1dORVIDCQAAZwAAAAIFAAAABmhlaWdodAUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgIAAAA9U3RhcnQgSGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgQmxvY2tjaGFpbiBoZWlnaHQ6IAkAAaQAAAABBQAAAAZoZWlnaHQDCQAAAAAAAAIFAAAAEWNvbnRlc3RDdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAABAWW91IGNhbm5vdCBjb25maWd1cmUgYSBuZXcgQ29udGVzdCB3aGlsZSBvbGQgQ29udGVzdCBzdGF0dXMgaXM6IAUAAAARY29udGVzdEN1cnJTdGF0dXMDCQEAAAACIT0AAAACBQAAAA5jdXJyZW5jeVRpY2tlcgUAAAAFV0FWRVMJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIGRBUFAgZG9lcyBub3Qgc3VwcG9ydCBjdXJyZW5jeTogBQAAAA5jdXJyZW5jeVRpY2tlcgIAAAAFIHlldC4EAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAABkAAAAAgUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAaAAAAAIAAAAAAAAAAAcAAAAAAAAABaAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgUAAAAQY29udGVzdE5ld051bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAACV9jdXJyZW5jeQUAAAAOY3VycmVuY3lUaWNrZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQFAAAAEmNvbnRlc3RTdGFydEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAADV9maW5pc2hoZWlnaHQFAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAdfc3RhdHVzBQAAAAdSVU5OSU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAAQY29udGVzdE5ld051bWJlcgIAAAAMX3ZvdGVjb3VudGVyAAAAAAAAAAAABQAAAANuaWwAAAABaQEAAAADYmV0AAAAAQAAAA1jdXJyZW5jeVZhbHVlBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBAAAABJjb250ZXN0U3RhcnRIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAMX3N0YXJ0aGVpZ2h0BAAAABNjb250ZXN0RmluaXNoSGVpZ2h0CQEAAAALZ2V0TnVtQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADV9maW5pc2hoZWlnaHQEAAAAEmNvbnRlc3RWb3RlQ291bnRlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfdm90ZWNvdW50ZXIEAAAAEWNvbnRlc3RDdXJyU3RhdHVzCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMEAAAACnRoaXNWb3RlSWQJAABkAAAAAgUAAAASY29udGVzdFZvdGVDb3VudGVyAAAAAAAAAAABBAAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJldF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8FAAAADWN1cnJlbmN5VmFsdWUEAAAADWNvbnRlc3RTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAARZXhpc3RpbmdCZXRWb3RlSWQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJldF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8FAAAADWN1cnJlbmN5VmFsdWUEAAAAEmV4aXN0aW5nQmV0QWNjb3VudAkBAAAA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", "chainId": 84, "height": 631951, "spentComplexity": 0 } View: original | compacted Prev: 8bFKGdbo4ek6GazxUAZscWFL2tC3KduVERVj5ZnDD6BL Next: 39Sc6mMPjtSkoWJBA9aUqNoyCwuchgxkD4N1kTkTtj7P Diff:
OldNewDifferences
4040 func getContestStatus () = {
4141 let contestCurrNumber = getNumByKey("contest_currentnumber")
4242 getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
43+ }
44+
45+
46+func getBetAccount (betId) = {
47+ let contestCurrNumber = getNumByKey("contest_currentnumber")
48+ getStrByKey((("contest_" + toString(contestCurrNumber)) + toString(betId)))
4349 }
4450
4551
103109 let thisVoteId = (contestVoteCounter + 1)
104110 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
105111 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
106- let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
112+ let existingBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
113+ let existingBetAccount = getBetAccount(existingBetVoteId)
107114 if ((height > (contestFinishHeight - (2 * 1440))))
108115 then throw("You cannot bet anymore at this height.")
109116 else if ((contestCurrStatus != RUNNING))
115122 else if (if ((existingBetAccount != NONE))
116123 then (existingBetAccount != account)
117124 else false)
118- then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBetAccount) + " Currency Value:") + currencyValue))
119- else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)), currencyValue), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
125+ then throw(((("Another wallet: " + existingBetAccount) + " did bet already on rate: ") + currencyValue))
126+ else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), toString(thisVoteId)), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
120127 }
121128
122129
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"))
43+ }
44+
45+
46+func getBetAccount (betId) = {
47+ let contestCurrNumber = getNumByKey("contest_currentnumber")
48+ getStrByKey((("contest_" + toString(contestCurrNumber)) + toString(betId)))
4349 }
4450
4551
4652 func getExtWAVESUSDCurrencyRate () = {
4753 let oracleAddress = extract(addressFromString("3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"))
4854 let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
4955 case a: Int =>
5056 a
5157 case _ =>
5258 0
5359 }
5460 WAVESUSDCurrencyRate
5561 }
5662
5763
5864 @Callable(i)
5965 func setContestStatus (contestNumber,contestStatus) = {
6066 let account = toBase58String(i.caller.bytes)
6167 if ((account != DAPPOWNER))
6268 then throw("Only dAPP Owner can set Contest Status.")
6369 else if (if ((contestStatus != RUNNING))
6470 then (contestStatus != CLOSED)
6571 else false)
6672 then throw(("Invalid status: " + contestStatus))
6773 else WriteSet([DataEntry((("contest_" + toString(contestNumber)) + "_status"), contestStatus)])
6874 }
6975
7076
7177
7278 @Callable(i)
7379 func setContestConfiguration (currencyTicker,contestStartHeight) = {
7480 let account = toBase58String(i.caller.bytes)
7581 let contestCurrNumber = getNumByKey("contest_currentnumber")
7682 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
7783 let contestNewNumber = (contestCurrNumber + 1)
7884 if ((account != DAPPOWNER))
7985 then throw(((("Only dAPP Owner can Configure Contest. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
8086 else if ((height >= contestStartHeight))
8187 then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
8288 else if ((contestCurrStatus == RUNNING))
8389 then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
8490 else if ((currencyTicker != WAVES))
8591 then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
8692 else {
8793 let contestFinishHeight = (contestStartHeight + (7 * 1440))
8894 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)])
8995 }
9096 }
9197
9298
9399
94100 @Callable(i)
95101 func bet (currencyValue) = {
96102 let account = toBase58String(i.caller.bytes)
97103 let pmt = extract(i.payment)
98104 let contestCurrNumber = getNumByKey("contest_currentnumber")
99105 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_startheight"))
100106 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
101107 let contestVoteCounter = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_votecounter"))
102108 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
103109 let thisVoteId = (contestVoteCounter + 1)
104110 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
105111 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
106- let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
112+ let existingBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
113+ let existingBetAccount = getBetAccount(existingBetVoteId)
107114 if ((height > (contestFinishHeight - (2 * 1440))))
108115 then throw("You cannot bet anymore at this height.")
109116 else if ((contestCurrStatus != RUNNING))
110117 then throw("Invalid status: you cannot bet now.")
111118 else if (if ((pmt.assetId != WLT))
112119 then true
113120 else (pmt.amount != 500000))
114121 then throw("You must pay 5 WLT to bet.")
115122 else if (if ((existingBetAccount != NONE))
116123 then (existingBetAccount != account)
117124 else false)
118- then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBetAccount) + " Currency Value:") + currencyValue))
119- else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)), currencyValue), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
125+ then throw(((("Another wallet: " + existingBetAccount) + " did bet already on rate: ") + currencyValue))
126+ else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), toString(thisVoteId)), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
120127 }
121128
122129
123130
124131 @Callable(i)
125132 func closecontest (currencyRate) = {
126133 let contestCurrNumber = getNumByKey("contest_currentnumber")
127134 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyRate)
128135 let winnerAccount = getStrByKey(key)
129136 let account = toBase58String(i.caller.bytes)
130137 let balance = wavesBalance(this)
131138 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
132139 let writeStatistics = WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winnerAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)])
133140 if ((account != DAPPOWNER))
134141 then throw("Only dAPP Owner can Close Contest.")
135142 else if ((contestCurrStatus != RUNNING))
136143 then throw(("Cannot close a contest in status: " + contestCurrStatus))
137144 else if ((winnerAccount != NONE))
138145 then {
139146 let winTransfer = TransferSet([ScriptTransfer(extract(addressFromString(winnerAccount)), (wavesBalance(this) - FEE), unit)])
140147 ScriptResult(WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winnerAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)]), winTransfer)
141148 }
142149 else WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winnerAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_height"), height)])
143150 }
144151
145152
146153 @Verifier(tx)
147154 func verify () = match tx {
148155 case _: SetScriptTransaction|DataTransaction =>
149156 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
150157 case _: InvokeScriptTransaction =>
151158 true
152159 case _ =>
153160 true
154161 }
155162

github/deemru/w8io/026f985 
38.34 ms