tx · 2PiRHBTCmdHJ1e6Jqb2cY7AAoZo1TcrkLEN9G8miWtV8

3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo:  -0.01400000 Waves

2019.08.18 13:06 [636434] smart account 3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo > SELF 0.00000000 Waves

{ "type": 13, "id": "2PiRHBTCmdHJ1e6Jqb2cY7AAoZo1TcrkLEN9G8miWtV8", "fee": 1400000, "feeAssetId": null, "timestamp": 1566122772250, "version": 1, "sender": "3N7Wiiso7vo69pqWfLtpzT3tbzMUGahqpgo", "senderPublicKey": "5GQSFwNMkJFTT3FeLT3KENqoSr42yiJP3Av5qAYq1F7f", "proofs": [ "21iQqyuQh6H2ccCYsZyt9d87gtgDDMgAuNjfVWy44NN1ntpCvfRi7Taig5imvVNjnEJ2cx3nzRMK8HKToVuHGaGX" ], "script": "base64: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AAANY29udGVzdE51bWJlcgIAAAAHX3N0YXR1cwUAAAANY29udGVzdFN0YXR1cwUAAAADbmlsAAAAAWkBAAAAF3NldENvbnRlc3RDb25maWd1cmF0aW9uAAAAAAQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBAAAABFjb250ZXN0Q3VyclN0YXR1cwkBAAAAC2dldFN0ckJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfc3RhdHVzBAAAABBjb250ZXN0TmV3TnVtYmVyCQAAZAAAAAIFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAAAAAAAAAAABAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAN09ubHkgZEFQUCBPd25lciBjYW4gQ29uZmlndXJlIENvbnRlc3QuIENhbGxlciBhY2NvdW50OiAFAAAAB2FjY291bnQCAAAADSBkYXBwIG93bmVyOiAFAAAACURBUFBPV05FUgMJAAAAAAAAAgUAAAARY29udGVzdEN1cnJTdGF0dXMFAAAAB1JVTk5JTkcJAAACAAAAAQkAASwAAAACAgAAAEBZb3UgY2Fubm90IGNvbmZpZ3VyZSBhIG5ldyBDb250ZXN0IHdoaWxlIG9sZCBDb250ZXN0IHN0YXR1cyBpczogBQAAABFjb250ZXN0Q3VyclN0YXR1cwQAAAATY29udGVzdEZpbmlzaEhlaWdodAkAAGQAAAACBQAAAAZoZWlnaHQJAABoAAAAAgAAAAAAAAAABwAAAAAAAAAFoAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBQAAABBjb250ZXN0TmV3TnVtYmVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAAQY29udGVzdE5ld051bWJlcgIAAAANX2ZpbmlzaGhlaWdodAUAAAATY29udGVzdEZpbmlzaEhlaWdodAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAAB19zdGF0dXMFAAAAB1JVTk5JTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAxfdm90ZWNvdW50ZXIAAAAAAAAAAAAFAAAAA25pbAAAAAFpAQAAAANiZXQAAAABAAAADWN1cnJlbmN5VmFsdWUEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIEAAAAEmNvbnRlc3RTdGFydEhlaWdodAkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQEAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAANX2ZpbmlzaGhlaWdodAQAAAASY29udGVzdFZvdGVDb3VudGVyCQEAAAALZ2V0TnVtQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADF92b3RlY291bnRlcgQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAAKdGhpc1ZvdGVJZAkAAGQAAAACBQAAABJjb250ZXN0Vm90ZUNvdW50ZXIAAAAAAAAAAAEEAAAADWNvbnRlc3RTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAARZXhpc3RpbmdCZXRWb3RlSWQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJldF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8FAAAADWN1cnJlbmN5VmFsdWUEAAAAEmV4aXN0aW5nQmV0QWNjb3VudAkBAAAADWdldEJldEFjY291bnQAAAABBQAAABFleGlzdGluZ0JldFZvdGVJZAMJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZQAAAAIFAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAABoAAAAAgAAAAAAAAAAAgAAAAAAAAAFoAkAAAIAAAABAgAAACZZb3UgY2Fubm90IGJldCBhbnltb3JlIGF0IHRoaXMgaGVpZ2h0LgMJAQAAAAIhPQAAAAIFAAAAEWNvbnRlc3RDdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAECAAAAI0ludmFsaWQgc3RhdHVzOiB5b3UgY2Fubm90IGJldCBub3cuAwMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAADV0xUBgkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAAAHoSAJAAACAAAAAQIAAAAaWW91IG11c3QgcGF5IDUgV0xUIHRvIGJldC4DAwkBAAAAAiE9AAAAAgUAAAASZXhpc3RpbmdCZXRBY2NvdW50BQAAAAROT05FCQEAAAACIT0AAAACBQAAABJleGlzdGluZ0JldEFjY291bnQFAAAAB2FjY291bnQHCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA5Bbm90aGVyIHVzZXI6IAUAAAASZXhpc3RpbmdCZXRBY2NvdW50AgAAABogZGlkIGJldCBhbHJlYWR5IG9uIHJhdGU6IAUAAAANY3VycmVuY3lWYWx1ZQIAAAAHIGJldElEOgkAAaQAAAABBQAAABFleGlzdGluZ0JldFZvdGVJZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiZXRfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAFfCQABpAAAAAEFAAAACnRoaXNWb3RlSWQCAAAABl9vd25lcgUAAAAHYWNjb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEYmV0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAABXwUAAAANY3VycmVuY3lWYWx1ZQUAAAAKdGhpc1ZvdGVJZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfdm90ZWNvdW50ZXIFAAAACnRoaXNWb3RlSWQFAAAAA25pbAAAAAFpAQAAAAxjbG9zZWNvbnRlc3QAAAAABAAAAAxjdXJyZW5jeVJhdGUJAQAAABpnZXRFeHRXQVZFU1VTREN1cnJlbmN5UmF0ZQAAAAAEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIEAAAAEHdpbm5pbmdCZXRWb3RlSWQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJldF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8JAAGkAAAAAQUAAAAMY3VycmVuY3lSYXRlBAAAABF3aW5uaW5nQmV0QWNjb3VudAkBAAAADWdldEJldEFjY291bnQAAAABBQAAABB3aW5uaW5nQmV0Vm90ZUlkBAAAAAxmaW5pc2hIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAANX2ZpbmlzaGhlaWdodAQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdiYWxhbmNlCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAAPd3JpdGVTdGF0aXN0aWNzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMFAAAABkNMT1NFRAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfd2lubmVyBQAAABF3aW5uaW5nQmV0QWNjb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAA1fY3VycmVuY3lyYXRlBQAAAAxjdXJyZW5jeVJhdGUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX2hlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwDCQAAZgAAAAIFAAAADGZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgIAAAAnQ2Fubm90IGNsb3NlIHRoZSBjb250ZXN0IGJlZm9yZSBoZWlnaHQ6CQABpAAAAAEFAAAADGZpbmlzaEhlaWdodAMJAQAAAAIhPQAAAAIFAAAAEWNvbnRlc3RDdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAAAiQ2Fubm90IGNsb3NlIGEgY29udGVzdCBpbiBzdGF0dXM6IAUAAAARY29udGVzdEN1cnJTdGF0dXMDCQEAAAACIT0AAAACBQAAABF3aW5uaW5nQmV0QWNjb3VudAUAAAAETk9ORQQAAAAPV0xUU2hhcmVSZXZlbnVlCQAAaQAAAAIJAABoAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAANXTFQAAAAAAAAAAAUAAAAAAAAAAGQEAAAADFdMVFNoYXJlQnVybgkAAGkAAAACCQAAaAAAAAIJAAPrAAAAAgUAAAAEdGhpcwUAAAADV0xUAAAAAAAAAABaAAAAAAAAAABkBAAAAAt3aW5UcmFuc2ZlcgkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHZXh0cmFjdAAAAAEJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAEFAAAAEXdpbm5pbmdCZXRBY2NvdW50CQAAZQAAAAIJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzBQAAAANGRUUFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAAAxPUkFDTEVXQUxMRVQFAAAAD1dMVFNoYXJlUmV2ZW51ZQUAAAADV0xUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdleHRyYWN0AAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQUAAAAOV0FWRVNLSVRXQUxMRVQFAAAAD1dMVFNoYXJlUmV2ZW51ZQUAAAADV0xUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdleHRyYWN0AAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQUAAAANV0xUQlVSTldBTExFVAUAAAAMV0xUU2hhcmVCdXJuBQAAAANXTFQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwUAAAAGQ0xPU0VECQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB193aW5uZXIFAAAAEXdpbm5pbmdCZXRBY2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADV9jdXJyZW5jeXJhdGUFAAAADGN1cnJlbmN5UmF0ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfaGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAUAAAALd2luVHJhbnNmZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwUAAAAGQ0xPU0VECQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB193aW5uZXIFAAAAEXdpbm5pbmdCZXRBY2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADV9jdXJyZW5jeXJhdGUFAAAADGN1cnJlbmN5UmF0ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfaGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBgYR6WI/", "chainId": 84, "height": 636434, "spentComplexity": 0 } View: original | compacted Prev: 3dmBW2d2WEy4Tz7oDLuBjg9eSkSGTL27U5xa29pZL65w Next: HRNsgHZU8NC3zVxG6riA8KcdVKuKAf9WpbpN649kizQb Diff:
OldNewDifferences
8282
8383
8484 @Callable(i)
85-func setContestConfiguration (currencyTicker,contestStartHeight) = {
85+func setContestConfiguration () = {
8686 let account = toBase58String(i.caller.bytes)
8787 let contestCurrNumber = getNumByKey("contest_currentnumber")
8888 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
8989 let contestNewNumber = (contestCurrNumber + 1)
9090 if ((account != DAPPOWNER))
9191 then throw(((("Only dAPP Owner can Configure Contest. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
92- else if ((height >= contestStartHeight))
93- then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
94- else if ((contestCurrStatus == RUNNING))
95- then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
96- else if ((currencyTicker != WAVES))
97- then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
98- else {
99- let contestFinishHeight = (contestStartHeight + (7 * 1440))
100- 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)])
101- }
92+ else if ((contestCurrStatus == RUNNING))
93+ then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
94+ else {
95+ let contestFinishHeight = (height + (7 * 1440))
96+ WriteSet([DataEntry("contest_currentnumber", contestNewNumber), DataEntry((("contest_" + toString(contestNewNumber)) + "_finishheight"), contestFinishHeight), DataEntry((("contest_" + toString(contestNewNumber)) + "_status"), RUNNING), DataEntry((("contest_" + toString(contestNewNumber)) + "_votecounter"), 0)])
97+ }
10298 }
10399
104100
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 ORACLEWALLET = "3NAcoeWdUTWn8csXJPG47v1Fjtjcfqxb5tu"
1111
1212 let WLTBURNWALLET = "3MpCbDDjkSrfS1XkPpm71iZj5DQ1RpBRRht"
1313
1414 let WAVESKITWALLET = "3MqPpbWPRsZFoT9X74qWocU4BpypGEPhiCn"
1515
1616 let WAVES = "WAVES"
1717
1818 let NONE = "NONE"
1919
2020 let FEE = 900000
2121
2222 let WLT = base58'7KAXNTswj6947a6cVpGhVrh1utWpLcjwf8AFpWCtuMT7'
2323
2424 func getNumByKey (key) = {
2525 let num = match getInteger(this, key) {
2626 case a: Int =>
2727 a
2828 case _ =>
2929 0
3030 }
3131 num
3232 }
3333
3434
3535 func getStrByKey (key) = {
3636 let str = match getString(this, key) {
3737 case a: String =>
3838 a
3939 case _ =>
4040 NONE
4141 }
4242 str
4343 }
4444
4545
4646 func getContestStatus () = {
4747 let contestCurrNumber = getNumByKey("contest_currentnumber")
4848 getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
4949 }
5050
5151
5252 func getBetAccount (betId) = {
5353 let contestCurrNumber = getNumByKey("contest_currentnumber")
5454 getStrByKey((((("bet_" + toString(contestCurrNumber)) + "_") + toString(betId)) + "_owner"))
5555 }
5656
5757
5858 func getExtWAVESUSDCurrencyRate () = {
5959 let oracleAddress = extract(addressFromString(ORACLEWALLET))
6060 let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
6161 case a: Int =>
6262 a
6363 case _ =>
6464 0
6565 }
6666 WAVESUSDCurrencyRate
6767 }
6868
6969
7070 @Callable(i)
7171 func setContestStatus (contestNumber,contestStatus) = {
7272 let account = toBase58String(i.caller.bytes)
7373 if ((account != DAPPOWNER))
7474 then throw("Only dAPP Owner can set Contest Status.")
7575 else if (if ((contestStatus != RUNNING))
7676 then (contestStatus != CLOSED)
7777 else false)
7878 then throw(("Invalid status: " + contestStatus))
7979 else WriteSet([DataEntry((("contest_" + toString(contestNumber)) + "_status"), contestStatus)])
8080 }
8181
8282
8383
8484 @Callable(i)
85-func setContestConfiguration (currencyTicker,contestStartHeight) = {
85+func setContestConfiguration () = {
8686 let account = toBase58String(i.caller.bytes)
8787 let contestCurrNumber = getNumByKey("contest_currentnumber")
8888 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
8989 let contestNewNumber = (contestCurrNumber + 1)
9090 if ((account != DAPPOWNER))
9191 then throw(((("Only dAPP Owner can Configure Contest. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
92- else if ((height >= contestStartHeight))
93- then throw(("Start Height must be greater than current Blockchain height: " + toString(height)))
94- else if ((contestCurrStatus == RUNNING))
95- then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
96- else if ((currencyTicker != WAVES))
97- then throw((("dAPP does not support currency: " + currencyTicker) + " yet."))
98- else {
99- let contestFinishHeight = (contestStartHeight + (7 * 1440))
100- 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)])
101- }
92+ else if ((contestCurrStatus == RUNNING))
93+ then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
94+ else {
95+ let contestFinishHeight = (height + (7 * 1440))
96+ WriteSet([DataEntry("contest_currentnumber", contestNewNumber), DataEntry((("contest_" + toString(contestNewNumber)) + "_finishheight"), contestFinishHeight), DataEntry((("contest_" + toString(contestNewNumber)) + "_status"), RUNNING), DataEntry((("contest_" + toString(contestNewNumber)) + "_votecounter"), 0)])
97+ }
10298 }
10399
104100
105101
106102 @Callable(i)
107103 func bet (currencyValue) = {
108104 let account = toBase58String(i.caller.bytes)
109105 let pmt = extract(i.payment)
110106 let contestCurrNumber = getNumByKey("contest_currentnumber")
111107 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_startheight"))
112108 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
113109 let contestVoteCounter = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_votecounter"))
114110 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
115111 let thisVoteId = (contestVoteCounter + 1)
116112 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
117113 let existingBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue))
118114 let existingBetAccount = getBetAccount(existingBetVoteId)
119115 if ((height > (contestFinishHeight - (2 * 1440))))
120116 then throw("You cannot bet anymore at this height.")
121117 else if ((contestCurrStatus != RUNNING))
122118 then throw("Invalid status: you cannot bet now.")
123119 else if (if ((pmt.assetId != WLT))
124120 then true
125121 else (pmt.amount != 500000))
126122 then throw("You must pay 5 WLT to bet.")
127123 else if (if ((existingBetAccount != NONE))
128124 then (existingBetAccount != account)
129125 else false)
130126 then throw(((((("Another user: " + existingBetAccount) + " did bet already on rate: ") + currencyValue) + " betID:") + toString(existingBetVoteId)))
131127 else WriteSet([DataEntry((((("bet_" + toString(contestCurrNumber)) + "_") + toString(thisVoteId)) + "_owner"), account), DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + currencyValue), thisVoteId), DataEntry((("contest_" + toString(contestCurrNumber)) + "_votecounter"), thisVoteId)])
132128 }
133129
134130
135131
136132 @Callable(i)
137133 func closecontest () = {
138134 let currencyRate = getExtWAVESUSDCurrencyRate()
139135 let contestCurrNumber = getNumByKey("contest_currentnumber")
140136 let winningBetVoteId = getNumByKey(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyRate)))
141137 let winningBetAccount = getBetAccount(winningBetVoteId)
142138 let finishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
143139 let account = toBase58String(i.caller.bytes)
144140 let balance = wavesBalance(this)
145141 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
146142 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)])
147143 if ((finishHeight > height))
148144 then throw(("Cannot close the contest before height:" + toString(finishHeight)))
149145 else if ((contestCurrStatus != RUNNING))
150146 then throw(("Cannot close a contest in status: " + contestCurrStatus))
151147 else if ((winningBetAccount != NONE))
152148 then {
153149 let WLTShareRevenue = ((assetBalance(this, WLT) * 5) / 100)
154150 let WLTShareBurn = ((assetBalance(this, WLT) * 90) / 100)
155151 let winTransfer = TransferSet([ScriptTransfer(extract(addressFromString(winningBetAccount)), (wavesBalance(this) - FEE), unit), ScriptTransfer(extract(addressFromString(ORACLEWALLET)), WLTShareRevenue, WLT), ScriptTransfer(extract(addressFromString(WAVESKITWALLET)), WLTShareRevenue, WLT), ScriptTransfer(extract(addressFromString(WLTBURNWALLET)), WLTShareBurn, WLT)])
156152 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)
157153 }
158154 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)])
159155 }
160156
161157
162158 @Verifier(tx)
163159 func verify () = match tx {
164160 case _: SetScriptTransaction|DataTransaction =>
165161 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
166162 case _: InvokeScriptTransaction =>
167163 true
168164 case _ =>
169165 true
170166 }
171167

github/deemru/w8io/3ef1775 
57.91 ms