tx · BZ8xfukTWXVGi3Ao8QAW3uu31HzYL8dokCzpJ5R6PwWp

3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2:  -0.14000000 Waves

2019.08.12 17:49 [627984] smart account 3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2 > SELF 0.00000000 Waves

{ "type": 13, "id": "BZ8xfukTWXVGi3Ao8QAW3uu31HzYL8dokCzpJ5R6PwWp", "fee": 14000000, "feeAssetId": null, "timestamp": 1565621329511, "version": 1, "sender": "3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2", "senderPublicKey": "F3vhYapU4NBzfM2X4KNkoFcxj3UbYnJjqituG6KE7ZPG", "proofs": [ "25nnACiMEBPCDHCtwzJCnopE9CuybyKb8RNPhJ82DVzaax4Rvr2jAVgKUgZ5EDWBs4oP2F5YgjvT23jh9MBdj8Vb" ], "script": "base64:AAIDAAAAAAAAAAAAAAAJAAAAAAdSVU5OSU5HAgAAAAdSVU5OSU5HAAAAAAZDTE9TRUQCAAAABkNMT1NFRAAAAAAJREFQUE9XTkVSAgAAACMzTjROUGl2b1RodHNrcjdKeG5OcktMN3M4QnptUkd4OXJUMgAAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAROT05FAgAAAAROT05FAQAAAAtnZXROdW1CeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAEGdldENvbnRlc3RTdGF0dXMAAAAABAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMBAAAAGmdldEV4dFdBVkVTVVNEQ3VycmVuY3lSYXRlAAAAAAQAAAANb3JhY2xlQWRkcmVzcwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABAgAAACMzUFBUclRvM0F6UjU2TjdBcnpiVTNCcHE5ellNZ2NmMzlNawQAAAAUV0FWRVNVU0RDdXJyZW5jeVJhdGUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAANb3JhY2xlQWRkcmVzcwIAAAALd2F2ZXNfdXNkXzIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAAUV0FWRVNVU0RDdXJyZW5jeVJhdGUAAAAEAAAAAWkBAAAAEHNldENvbnRlc3RTdGF0dXMAAAACAAAADWNvbnRlc3ROdW1iZXIAAAANY29udGVzdFN0YXR1cwQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAECAAAAJ09ubHkgZEFQUCBPd25lciBjYW4gc2V0IENvbnRlc3QgU3RhdHVzLgMDCQEAAAACIT0AAAACBQAAAA1jb250ZXN0U3RhdHVzBQAAAAdSVU5OSU5HCQEAAAACIT0AAAACBQAAAA1jb250ZXN0U3RhdHVzBQAAAAZDTE9TRUQHCQAAAgAAAAEJAAEsAAAAAgIAAAAQSW52YWxpZCBzdGF0dXM6IAUAAAANY29udGVzdFN0YXR1cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAADWNvbnRlc3ROdW1iZXICAAAAB19zdGF0dXMFAAAADWNvbnRlc3RTdGF0dXMFAAAAA25pbAAAAAFpAQAAABdzZXRDb250ZXN0Q29uZmlndXJhdGlvbgAAAAIAAAAOY3VycmVuY3lUaWNrZXIAAAASY29udGVzdFN0YXJ0SGVpZ2h0BAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEWNvbnRlc3RQcmV2TnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIEAAAAEWNvbnRlc3RQcmV2U3RhdHVzCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdFByZXZOdW1iZXICAAAAB19zdGF0dXMEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQAAZAAAAAIFAAAAEWNvbnRlc3RQcmV2TnVtYmVyAAAAAAAAAAABAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAECAAAAJk9ubHkgZEFQUCBPd25lciBjYW4gQ29uZmlndXJlIENvbnRlc3QuAwkAAGcAAAACBQAAAAZoZWlnaHQFAAAAEmNvbnRlc3RTdGFydEhlaWdodAkAAAIAAAABCQABLAAAAAICAAAAPVN0YXJ0IEhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBjdXJyZW50IEJsb2NrY2hhaW4gaGVpZ2h0OiAJAAGkAAAAAQUAAAAGaGVpZ2h0AwkAAAAAAAACBQAAABFjb250ZXN0UHJldlN0YXR1cwUAAAAHUlVOTklORwkAAAIAAAABCQABLAAAAAICAAAAQFlvdSBjYW5ub3QgY29uZmlndXJlIGEgbmV3IENvbnRlc3Qgd2hpbGUgb2xkIENvbnRlc3Qgc3RhdHVzIGlzOiAFAAAAEWNvbnRlc3RQcmV2U3RhdHVzAwkBAAAAAiE9AAAAAgUAAAAOY3VycmVuY3lUaWNrZXIFAAAABVdBVkVTCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACBkQVBQIGRvZXMgbm90IHN1cHBvcnQgY3VycmVuY3k6IAUAAAAOY3VycmVuY3lUaWNrZXICAAAABSB5ZXQuBAAAABNjb250ZXN0RmluaXNoSGVpZ2h0CQAAZAAAAAIFAAAAEmNvbnRlc3RTdGFydEhlaWdodAkAAGgAAAACAAAAAAAAAAAHAAAAAAAAAAWgCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIFAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAACV9jdXJyZW5jeQUAAAAOY3VycmVuY3lUaWNrZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAMX3N0YXJ0aGVpZ2h0BQAAABJj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", "chainId": 84, "height": 627984, "spentComplexity": 0 } View: original | compacted Prev: BVjBAoqZxMjuXj5i8AZFN1mGFUBPoqeArSYU9J4WHBxS Next: BsK4vUHjh9SPGruGjDDZPa7tazEYdNFYe4K91nwuxhiW Diff:
OldNewDifferences
3939 }
4040
4141
42-func getBet (currencyValue) = {
43- let contestCurrNumber = getNumByKey("contest_currentnumber")
44- getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
42+func getExtWAVESUSDCurrencyRate () = {
43+ let oracleAddress = extract(addressFromString("3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"))
44+ let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
45+ case a: Int =>
46+ a
47+ case _ =>
48+ 0
49+ }
50+ WAVESUSDCurrencyRate
4551 }
4652
4753
9197 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
9298 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
9399 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
94- let existingBet = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
100+ let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
95101 if ((height > (contestFinishHeight - (2 * 1440))))
96102 then throw("You cannot bet anymore at this height.")
97103 else if ((contestStatus != RUNNING))
100106 then true
101107 else (pmt.amount != 500000))
102108 then throw("You must pay 5 WLT to bet.")
103- else if (if ((existingBet != NONE))
104- then (existingBet != account)
109+ else if (if ((existingBetAccount != NONE))
110+ then (existingBetAccount != account)
105111 else false)
106- then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBet) + " Currency Value:") + currencyValue))
112+ then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBetAccount) + " Currency Value:") + currencyValue))
107113 else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), account)])
114+ }
115+
116+
117+
118+@Callable(i)
119+func closecontest (currencyRate) = {
120+ let contestCurrNumber = getNumByKey("contest_currentnumber")
121+ let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyRate)
122+ let winnerAccount = getStrByKey(key)
123+ let account = toBase58String(i.caller.bytes)
124+ if ((account != DAPPOWNER))
125+ then throw("Only dAPP Owner can Close Contest.")
126+ else WriteSet([DataEntry((("bet_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("bet_" + toString(contestCurrNumber)) + "_winner"), winnerAccount)])
108127 }
109128
110129
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 = "3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2"
99
1010 let WAVES = "WAVES"
1111
1212 let NONE = "NONE"
1313
1414 func getNumByKey (key) = {
1515 let num = match getInteger(this, key) {
1616 case a: Int =>
1717 a
1818 case _ =>
1919 0
2020 }
2121 num
2222 }
2323
2424
2525 func getStrByKey (key) = {
2626 let str = match getString(this, key) {
2727 case a: String =>
2828 a
2929 case _ =>
3030 NONE
3131 }
3232 str
3333 }
3434
3535
3636 func getContestStatus () = {
3737 let contestCurrNumber = getNumByKey("contest_currentnumber")
3838 getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
3939 }
4040
4141
42-func getBet (currencyValue) = {
43- let contestCurrNumber = getNumByKey("contest_currentnumber")
44- getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
42+func getExtWAVESUSDCurrencyRate () = {
43+ let oracleAddress = extract(addressFromString("3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"))
44+ let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
45+ case a: Int =>
46+ a
47+ case _ =>
48+ 0
49+ }
50+ WAVESUSDCurrencyRate
4551 }
4652
4753
4854 @Callable(i)
4955 func setContestStatus (contestNumber,contestStatus) = {
5056 let account = toBase58String(i.caller.bytes)
5157 if ((account != DAPPOWNER))
5258 then throw("Only dAPP Owner can set Contest Status.")
5359 else if (if ((contestStatus != RUNNING))
5460 then (contestStatus != CLOSED)
5561 else false)
5662 then throw(("Invalid status: " + contestStatus))
5763 else WriteSet([DataEntry((("contest_" + toString(contestNumber)) + "_status"), contestStatus)])
5864 }
5965
6066
6167
6268 @Callable(i)
6369 func setContestConfiguration (currencyTicker,contestStartHeight) = {
6470 let account = toBase58String(i.caller.bytes)
6571 let contestPrevNumber = getNumByKey("contest_currentnumber")
6672 let contestPrevStatus = getStrByKey((("contest_" + toString(contestPrevNumber)) + "_status"))
6773 let contestCurrNumber = (contestPrevNumber + 1)
6874 if ((account != DAPPOWNER))
6975 then throw("Only dAPP Owner can Configure Contest.")
7076 else if ((height >= contestStartHeight))
7177 then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
7278 else if ((contestPrevStatus == RUNNING))
7379 then throw(("You cannot configure a new Contest while old Contest status is: " + contestPrevStatus))
7480 else if ((currencyTicker != WAVES))
7581 then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
7682 else {
7783 let contestFinishHeight = (contestStartHeight + (7 * 1440))
7884 WriteSet([DataEntry("contest_currentnumber", contestCurrNumber), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currency"), currencyTicker), DataEntry((("contest_" + toString(contestCurrNumber)) + "_startheight"), contestStartHeight), DataEntry((("contest_" + toString(contestCurrNumber)) + "_finishheight"), contestFinishHeight), DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), RUNNING)])
7985 }
8086 }
8187
8288
8389
8490 @Callable(i)
8591 func bet (currencyValue) = {
8692 let WLT = base58'FaA6njrtReYVacBjgj36X8gGwydDYQKrthrt3hufhMZh'
8793 let account = toBase58String(i.caller.bytes)
8894 let pmt = extract(i.payment)
8995 let contestCurrNumber = getNumByKey("contest_currentnumber")
9096 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_startheight"))
9197 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
9298 let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue)
9399 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
94- let existingBet = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
100+ let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
95101 if ((height > (contestFinishHeight - (2 * 1440))))
96102 then throw("You cannot bet anymore at this height.")
97103 else if ((contestStatus != RUNNING))
98104 then throw("Invalid status: you cannot bet now.")
99105 else if (if ((pmt.assetId != WLT))
100106 then true
101107 else (pmt.amount != 500000))
102108 then throw("You must pay 5 WLT to bet.")
103- else if (if ((existingBet != NONE))
104- then (existingBet != account)
109+ else if (if ((existingBetAccount != NONE))
110+ then (existingBetAccount != account)
105111 else false)
106- then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBet) + " Currency Value:") + currencyValue))
112+ then throw(((((((("Key: " + key) + " Account:") + account) + " Existing Bet Account: ") + existingBetAccount) + " Currency Value:") + currencyValue))
107113 else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), account)])
114+ }
115+
116+
117+
118+@Callable(i)
119+func closecontest (currencyRate) = {
120+ let contestCurrNumber = getNumByKey("contest_currentnumber")
121+ let key = ((("bet_" + toString(contestCurrNumber)) + "_") + currencyRate)
122+ let winnerAccount = getStrByKey(key)
123+ let account = toBase58String(i.caller.bytes)
124+ if ((account != DAPPOWNER))
125+ then throw("Only dAPP Owner can Close Contest.")
126+ else WriteSet([DataEntry((("bet_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("bet_" + toString(contestCurrNumber)) + "_winner"), winnerAccount)])
108127 }
109128
110129
111130 @Verifier(tx)
112131 func verify () = match tx {
113132 case _: SetScriptTransaction|DataTransaction =>
114133 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
115134 case _: InvokeScriptTransaction =>
116135 true
117136 case _ =>
118137 true
119138 }
120139

github/deemru/w8io/873ac7e 
22.47 ms