tx · HhiuRwkypnEkcYDQNHqiLmkvYR2QFBbk3S51u7FS2p2b

3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2:  -0.01400000 Waves

2019.08.11 11:53 [626166] smart account 3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2 > SELF 0.00000000 Waves

{ "type": 13, "id": "HhiuRwkypnEkcYDQNHqiLmkvYR2QFBbk3S51u7FS2p2b", "fee": 1400000, "feeAssetId": null, "timestamp": 1565513596777, "version": 1, "sender": "3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2", "senderPublicKey": "F3vhYapU4NBzfM2X4KNkoFcxj3UbYnJjqituG6KE7ZPG", "proofs": [ "5HqNQhC8KAzj5E4nMR7wd5zYaVEd2w4bhoSQbGBVxjiLTHiubseFrg5CBxQLccTCrcuwmXZteyXusdvEi2ok4NNn" ], "script": "base64:AAIDAAAAAAAAAAAAAAAJAAAAAAdSVU5OSU5HAgAAAAdSVU5OSU5HAAAAABBDTE9TRURGT1JCRVRUSU5HAgAAABBDTE9TRURGT1JCRVRUSU5HAAAAAAZDTE9TRUQCAAAABkNMT1NFRAAAAAAJREFQUE9XTkVSAgAAACMzTjROUGl2b1RodHNrcjdKeG5OcktMN3M4QnptUkd4OXJUMgAAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAROT05FAgAAAAROT05FAQAAAAtnZXROdW1CeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAEGdldENvbnRlc3RTdGF0dXMAAAAABAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAABnN0YXR1cwAAAAMAAAABaQEAAAAQc2V0Q29udGVzdFN0YXR1cwAAAAEAAAANY29udGVzdFN0YXR1cwQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAECAAAAJ09ubHkgZEFQUCBPd25lciBjYW4gc2V0IENvbnRlc3QgU3RhdHVzLgMDAwkBAAAAAiE9AAAAAgUAAAANY29udGVzdFN0YXR1cwUAAAAHUlVOTklORwkBAAAAAiE9AAAAAgUAAAANY29udGVzdFN0YXR1cwUAAAAQQ0xPU0VERk9SQkVUVElORwcJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAABkNMT1NFRAcJAAACAAAAAQkAASwAAAACAgAAABBJbnZhbGlkIHN0YXR1czogBQAAAA1jb250ZXN0U3RhdHVzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAABnN0YXR1cwUAAAANY29udGVzdFN0YXR1cwUAAAADbmlsAAAAAWkBAAAAF3NldENvbnRlc3RDb25maWd1cmF0aW9uAAAAAgAAAA5jdXJyZW5jeVRpY2tlcgAAABJjb250ZXN0U3RhcnRIZWlnaHQEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAARY29udGVzdFByZXZOdW1iZXIJAQAAAAtnZXROdW1CeUtleQAAAAECAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgQAAAARY29udGVzdFByZXZTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0UHJldk51bWJlcgIAAAAHX3N0YXR1cwQAAAARY29udGVzdEN1cnJOdW1iZXIJAABkAAAAAgUAAAARY29udGVzdFByZXZOdW1iZXIAAAAAAAAAAAEDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAlEQVBQT1dORVIJAAACAAAAAQIAAAAmT25seSBkQVBQIE93bmVyIGNhbiBDb25maWd1cmUgQ29udGVzdC4DCQAAZwAAAAIFAAAABmhlaWdodAUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgIAAAA9U3RhcnQgSGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgQmxvY2tjaGFpbiBoZWlnaHQ6IAkAAaQAAAABBQAAAAZoZWlnaHQDCQAAAAAAAAIFAAAAEWNvbnRlc3RQcmV2U3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAABAWW91IGNhbm5vdCBjb25maWd1cmUgYSBuZXcgQ29udGVzdCB3aGlsZSBvbGQgQ29udGVzdCBzdGF0dXMgaXM6IAUAAAARY29udGVzdFByZXZTdGF0dXMDCQEAAAACIT0AAAACBQAAAA5jdXJyZW5jeVRpY2tlcgUAAAAFV0FWRVMJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIGRBUFAgZG9lcyBub3Qgc3VwcG9ydCBjdXJyZW5jeTogBQAAAA5jdXJyZW5jeVRpY2tlcgIAAAAFIHlldC4EAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAABkAAAAAgUAAAASY29udGVzdFN0YXJ0SGVpZ2h0CQAAaAAAAAIAAAAAAAAAAAcAAAAAAAAABaAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgUAAAARY29udGVzdEN1cnJOdW1iZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAJX2N1cnJlbmN5BQAAAA5jdXJyZW5jeVRpY2tlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQFAAAAEmNvbnRlc3RTdGFydEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAA1fZmluaXNoaGVpZ2h0BQAAABNjb250ZXN0RmluaXNoSGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMFAAAAB1JVTk5JTkcFAAAAA25pbAAAAAFpAQAAAANiZXQAAAABAAAADWN1cnJlbmN5VmFsdWUEAAAAA1dMVAEAAAAgEW6f0CB8Y1LxAPH3KvvTAbHmIXmreEgfCnKMZXn04TEEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIEAAAAEmNvbnRlc3RTdGFydEhlaWdodAkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAtzdGFydGhlaWdodAQAAAATY29udGVzdEZpbmlzaEhlaWdodAkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxmaW5pc2hoZWlnaHQEAAAADWNvbnRlc3RTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAGc3RhdHVzAwkAAGYAAAACBQAAAAZoZWlnaHQJAABlAAAAAgUAAAATY29udGVzdEZpbmlzaEhlaWdodAkAAGgAAAACAAAAAAAAAAACAAAAAAAAAAWgCQAAAgAAAAECAAAAJllvdSBjYW5ub3QgYmV0IGFueW1vcmUgYXQgdGhpcyBoZWlnaHQuAwkBAAAAAiE9AAAAAgUAAAANY29udGVzdFN0YXR1cwUAAAAHUlVOTklORwkAAAIAAAABAgAAACNJbnZhbGlkIHN0YXR1czogeW91IGNhbm5vdCBiZXQgbm93LgMDCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAA1dMVAYJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAB6EgCQAAAgAAAAECAAAAGllvdSBtdXN0IHBheSA1IFdMVCB0byBiZXQuCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiZXRfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAFfBQAAAAdhY2NvdW50BQAAAA1jdXJyZW5jeVZhbHVlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24JAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgYGs6TA3Q==", "chainId": 84, "height": 626166, "spentComplexity": 0 } View: original | compacted Prev: GVQTh99ZWZKqoC9d1KUQE95Aubwg82e1fULQDm2gqJL7 Next: 85NzpGQw98mdFCUj2ZMfJmGdvd6b7QAKjBzGH7cAAEeX Diff:
OldNewDifferences
6161 @Callable(i)
6262 func setContestConfiguration (currencyTicker,contestStartHeight) = {
6363 let account = toBase58String(i.caller.bytes)
64- let contestStatus = getContestStatus()
6564 let contestPrevNumber = getNumByKey("contest_currentnumber")
65+ let contestPrevStatus = getStrByKey((("contest_" + toString(contestPrevNumber)) + "_status"))
6666 let contestCurrNumber = (contestPrevNumber + 1)
6767 if ((account != DAPPOWNER))
6868 then throw("Only dAPP Owner can Configure Contest.")
6969 else if ((height >= contestStartHeight))
7070 then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
71- else if (if ((contestStatus != RUNNING))
72- then (contestStatus != NONE)
73- else false)
74- then throw(("You cannot configure Contest while status is: " + contestStatus))
71+ else if ((contestPrevStatus == RUNNING))
72+ then throw(("You cannot configure a new Contest while old Contest status is: " + contestPrevStatus))
7573 else if ((currencyTicker != WAVES))
7674 then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
7775 else {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RUNNING = "RUNNING"
55
66 let CLOSEDFORBETTING = "CLOSEDFORBETTING"
77
88 let CLOSED = "CLOSED"
99
1010 let DAPPOWNER = "3N4NPivoThtskr7JxnNrKL7s8BzmRGx9rT2"
1111
1212 let WAVES = "WAVES"
1313
1414 let NONE = "NONE"
1515
1616 func getNumByKey (key) = {
1717 let num = match getInteger(this, key) {
1818 case a: Int =>
1919 a
2020 case _ =>
2121 0
2222 }
2323 num
2424 }
2525
2626
2727 func getStrByKey (key) = {
2828 let str = match getString(this, key) {
2929 case a: String =>
3030 a
3131 case _ =>
3232 NONE
3333 }
3434 str
3535 }
3636
3737
3838 func getContestStatus () = {
3939 let contestCurrNumber = getNumByKey("contest_currentnumber")
4040 getStrByKey((("contest_" + toString(contestCurrNumber)) + "status"))
4141 }
4242
4343
4444 @Callable(i)
4545 func setContestStatus (contestStatus) = {
4646 let account = toBase58String(i.caller.bytes)
4747 let contestCurrNumber = getNumByKey("contest_currentnumber")
4848 if ((account != DAPPOWNER))
4949 then throw("Only dAPP Owner can set Contest Status.")
5050 else if (if (if ((contestStatus != RUNNING))
5151 then (contestStatus != CLOSEDFORBETTING)
5252 else false)
5353 then (contestStatus != CLOSED)
5454 else false)
5555 then throw(("Invalid status: " + contestStatus))
5656 else WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "status"), contestStatus)])
5757 }
5858
5959
6060
6161 @Callable(i)
6262 func setContestConfiguration (currencyTicker,contestStartHeight) = {
6363 let account = toBase58String(i.caller.bytes)
64- let contestStatus = getContestStatus()
6564 let contestPrevNumber = getNumByKey("contest_currentnumber")
65+ let contestPrevStatus = getStrByKey((("contest_" + toString(contestPrevNumber)) + "_status"))
6666 let contestCurrNumber = (contestPrevNumber + 1)
6767 if ((account != DAPPOWNER))
6868 then throw("Only dAPP Owner can Configure Contest.")
6969 else if ((height >= contestStartHeight))
7070 then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
71- else if (if ((contestStatus != RUNNING))
72- then (contestStatus != NONE)
73- else false)
74- then throw(("You cannot configure Contest while status is: " + contestStatus))
71+ else if ((contestPrevStatus == RUNNING))
72+ then throw(("You cannot configure a new Contest while old Contest status is: " + contestPrevStatus))
7573 else if ((currencyTicker != WAVES))
7674 then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
7775 else {
7876 let contestFinishHeight = (contestStartHeight + (7 * 1440))
7977 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)])
8078 }
8179 }
8280
8381
8482
8583 @Callable(i)
8684 func bet (currencyValue) = {
8785 let WLT = base58'2B3mWxfnhAaCpJuqbkbiD6HVCTEcgwdmzxFCjZe65NYg'
8886 let account = toBase58String(i.caller.bytes)
8987 let pmt = extract(i.payment)
9088 let contestCurrNumber = getNumByKey("contest_currentnumber")
9189 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "startheight"))
9290 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "finishheight"))
9391 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "status"))
9492 if ((height > (contestFinishHeight - (2 * 1440))))
9593 then throw("You cannot bet anymore at this height.")
9694 else if ((contestStatus != RUNNING))
9795 then throw("Invalid status: you cannot bet now.")
9896 else if (if ((pmt.assetId != WLT))
9997 then true
10098 else (pmt.amount != 500000))
10199 then throw("You must pay 5 WLT to bet.")
102100 else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + account), currencyValue)])
103101 }
104102
105103
106104 @Verifier(tx)
107105 func verify () = match tx {
108106 case _: SetScriptTransaction|DataTransaction =>
109107 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
110108 case _: InvokeScriptTransaction =>
111109 true
112110 case _ =>
113111 true
114112 }
115113

github/deemru/w8io/873ac7e 
22.19 ms