tx · 6S4UpsrcBHWnVqoEDjhGrCxXFTBkgZGuz5eA7Ux69683

3MpTJ3MDAfkwKDQEtV8CJQN1qPv4S6NE7TP:  -0.01000000 Waves

2019.07.16 16:07 [588421] smart account 3MpTJ3MDAfkwKDQEtV8CJQN1qPv4S6NE7TP > SELF 0.00000000 Waves

{ "type": 13, "id": "6S4UpsrcBHWnVqoEDjhGrCxXFTBkgZGuz5eA7Ux69683", "fee": 1000000, "feeAssetId": null, "timestamp": 1563282459624, "version": 1, "sender": "3MpTJ3MDAfkwKDQEtV8CJQN1qPv4S6NE7TP", "senderPublicKey": "GUL5WrhQDsCzpQWv1EmVppYai7Sn4faWvLQ4prP3quqQ", "proofs": [ "5t3fgzAE85Rzr8SgA7VbSKhWZRZmoLnmrG598cuat7xKKncK1D8imw4Bbs54nwBA5sWjEX2KYrSMSCct3ah4UCL7" ], "script": "base64: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Y2UAAAABBQAAAAR0aGlzAQAAABJzZXRCYWxhbmNlU25hcHNob3QAAAAACQEAAAAGc2V0SW50AAAAAgUAAAAPQkFMQU5DRVNOQVBTSE9UCQEAAAASZ2V0QmFsYW5jZVNuYXBzaG90AAAAAAAAAAAJUFJJWkVQT09MAgAAAApQUklaRV9QT09MAQAAAAxnZXRQcml6ZVBvb2wAAAAACQEAAAAIZ2V0SW50T3IAAAACBQAAAAlQUklaRVBPT0wJAABpAAAAAgkAAGgAAAACCQEAAAASZ2V0QmFsYW5jZVNuYXBzaG90AAAAAAkAAGUAAAACAAAAAAAAAABkBQAAAA5saWdhQ29tbWlzc2lvbgAAAAAAAAAAZAEAAAAMc2V0UHJpemVQb29sAAAAAAkBAAAABnNldEludAAAAAIFAAAACVBSSVpFUE9PTAkBAAAADGdldFByaXplUG9vbAAAAAAAAAAABldJTk5FUgIAAAAGV0lOTkVSAQAAAAlnZXRXaW5uZXIAAAAACQEAAAAIZ2V0Qnl0ZXMAAAABBQAAAAZXSU5ORVIBAAAACXNldFdpbm5lcgAAAAEAAAAGd2lubmVyCQEAAAAIc2V0Qnl0ZXMAAAACBQAAAAZXSU5ORVIFAAAABndpbm5lcgAAAAAJVEVBTVNMRUZUAgAAAApURUFNU19MRUZUAQAAAAxnZXRUZWFtc0xlZnQAAAAACQEAAAAIZ2V0SW50T3IAAAACBQAAAAlURUFNU0xFRlQFAAAACnRvdGFsVGVhbXMBAAAADGRlY1RlYW1zTGVmdAAAAAAJAQAAAAZzZXRJbnQAAAACBQAAAAlURUFNU0xFRlQJAABlAAAAAgkBAAAADGdldFRlYW1zTGVmdAAAAAAAAAAAAAAAAAEAAAAAC1RFQU1DT1VOVEVSAgAAAAxURUFNX0NPVU5URVIBAAAADmdldFRlYW1Db3VudGVyAAAAAAkBAAAACGdldEludE9yAAAAAgUAAAALVEVBTUNPVU5URVIAAAAAAAAAAAABAAAADmluY1RlYW1Db3VudGVyAAAAAAkBAAAABnNldEludAAAAAIFAAAAC1RFQU1DT1VOVEVSCQAAZAAAAAIJAQAAAA5nZXRUZWFtQ291bnRlcgAAAAAAAAAAAAAAAAEAAAAADUJBU0VQUklaRVBPT0wCAAAAD0JBU0VfUFJJWkVfUE9PTAEAAAAQZ2V0QmFzZVByaXplUG9vbAAAAAAJAQAAAAhnZXRJbnRPcgAAAAIFAAAADUJBU0VQUklaRVBPT0wAAAAAAAAAAAABAAAAEGFkZEJhc2VQcml6ZVBvb2wAAAABAAAABXZhbHVlCQEAAAAGc2V0SW50AAAAAgUAAAANQkFTRVBSSVpFUE9PTAkAAGQAAAACCQEAAAAQZ2V0QmFzZVByaXplUG9vbAAAAAAFAAAABXZhbHVlAAAAAAZTVEFHRTEAAAAAAAAAAAEAAAAABlNUQUdFMgAAAAAAAAAAAgAAAAAHU1RBR0UzMQAAAAAAAAAAHwAAAAAHU1RBR0UzMgAAAAAAAAAAIAAAAAAHU1RBR0UzMwAAAAAAAAAAIQAAAAAGU1RBR0U0AAAAAAAAAAAEAAAAAAVTVEFHRQIAAAAFU1RBR0UBAAAABXN0YWdlAAAAAAkBAAAACGdldEludE9yAAAAAgUAAAAFU1RBR0UFAAAABlNUQUdFMQEAAAAEZ29UbwAAAAEAAAAFc3RhZ2UJAQAAAAZzZXRJbnQAAAACBQAAAAVTVEFHRQUAAAAFc3RhZ2UAAAAIAAAAAWkBAAAABnN0YWdlMgAAAAADCQEAAAACIT0AAAACCQEAAAAFc3RhZ2UAAAAABQAAAAZTVEFHRTEJAAACAAAAAQIAAAAWSW52YWxpZCBjdXJyZW50IHN0YWdlLgMJAABnAAAAAgUAAAAQZXZlbnRFbmRzQXRCbG9jawUAAAAGaGVpZ2h0CQAAAgAAAAECAAAAGkV2ZW50IGlzIG5vdCB5ZXQgZmluaXNoZWQuCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAARnb1RvAAAAAQUAAAAGU1RBR0UyCQAETAAAAAIJAQAAABJzZXRCYWxhbmNlU25hcHNob3QAAAAABQAAAANuaWwAAAABaQEAAAAHc3RhZ2UzMQAAAAEAAAAGd2lubmVyAwkBAAAAAiE9AAAAAgkBAAAABXN0YWdlAAAAAAUAAAAGU1RBR0UyCQAAAgAAAAECAAAAFkludmFsaWQgY3VycmVudCBzdGFnZS4DCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAABm9yYWNsZQkAAAIAAAABAgAAACVPbmx5IG9yYWNsZSBjb3VsZCBkZWNsYXJlIHRoZSB3aW5uZXIuAwkBAAAACWlzRGVmaW5lZAAAAAEJAQAAAAh0b09mZktleQAAAAEFAAAABndpbm5lcgkAAAIAAAABAgAAACZUZWFtIHRoYXQgaXMgb2ZmIGNhbm5vdCBiZSB0aGUgd2lubmVyLgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAEZ29UbwAAAAEFAAAAB1NUQUdFMzEJAARMAAAAAgkBAAAADHNldFByaXplUG9vbAAAAAAJAARMAAAAAgkBAAAACXNldFdpbm5lcgAAAAEFAAAABndpbm5lcgkABEwAAAACCQEAAAANc2V0U29sZEFtb3VudAAAAAEFAAAABndpbm5lcgUAAAADbmlsAAAAAWkBAAAAB3N0YWdlMzIAAAABAAAABnRlYW1JZAMDCQEAAAACIT0AAAACCQEAAAAFc3RhZ2UAAAAABQAAAAZTVEFHRTIGCQEAAAACIT0AAAACCQEAAAAFc3RhZ2UAAAAABQAAAAdTVEFHRTMyCQAAAgAAAAECAAAAFkludmFsaWQgY3VycmVudCBzdGFnZS4DCQAAZwAAAAIJAABkAAAAAgUAAAAQZXZlbnRFbmRzQXRCbG9jawUAAAAZd2lubmVyRGVjbGFyYXRpb25JbnRlcnZhbAUAAAAGaGVpZ2h0CQAAAgAAAAECAAAALk9yYWNsZSBpcyBzdGlsbCBoYXZlIHRpbWUgdG8gZGVjbGFyZSBhIHdpbm5lci4DCQEAAAABIQAAAAEJAQAAAAxpc0tleURlZmluZWQAAAABCQEAAAAOdG9CYXNlUHJpY2VLZXkAAAABBQAAAAZ0ZWFtSWQJAAACAAAAAQIAAAASVGVhbSBpcyBub3QgZm91bmQuAwkBAAAACWlzRGVmaW5lZAAAAAEJAQAAAAh0b09mZktleQAAAAEFAAAABnRlYW1JZAkAAAIAAAABAgAAADBUZWFtIHRoYXQgaXMgb2ZmIGNhbm5vdCBwYXJ0aWNpcGF0ZSBpbiByb2xsYmFjay4DCQEAAAAMaXNLZXlEZWZpbmVkAAAAAQkBAAAACXRvU29sZEtleQAAAAEFAAAABnRlYW1JZAkAAAIAAAABAgAAAB1UZWFtIHNvbGQgYW1vdW50IGFscmVhZHkgc2V0LgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAEZ29UbwAAAAEFAAAAB1NUQUdFMzIJAARMAAAAAgkBAAAADXNldFNvbGRBbW91bnQAAAABBQAAAAZ0ZWFtSWQJAARMAAAAAgkBAAAAEGFkZEJhc2VQcml6ZVBvb2wAAAABCQAAaAAAAAIJAQAAAA1nZXRTb2xkQW1vdW50AAAAAQUAAAAGdGVhbUlkCQEAAAAMZ2V0QmFzZVByaWNlAAAAAQUAAAAGdGVhbUlkCQAETAAAAAIJAQAAAA5pbmNUZWFtQ291bnRlcgAAAAAFAAAAA25pbAAAAAFpAQAAAAdzdGFnZTMzAAAAAAMJAQAAAAIhPQAAAAIJAQAAAAVzdGFnZQAAAAAFAAAAB1NUQUdFMzIJAAACAAAAAQIAAAAWSW52YWxpZCBjdXJyZW50IHN0YWdlLgMJAQAAAAIhPQAAAAIJAQAAAA5nZXRUZWFtQ291bnRlcgAAAAAJAQAAAAxnZXRUZWFtc0xlZnQAAAAACQAAAgAAAAECAAAALlRoZXJlIGFyZSBzdGlsbCB0ZWFtcyB3aXRob3V0IHNvbGQgYW1vdW50IHNldC4JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAABGdvVG8AAAABBQAAAAdTVEFHRTMzBQAAAANuaWwAAAABaQEAAAAGc3RhZ2U0AAAAAQAAAAlyZWNpcGllbnQDCQEAAAACIT0AAAACCQEAAAAFc3RhZ2UAAAAABQAAAAdTVEFHRTMxCQAAAgAAAAECAAAAFkludmFsaWQgY3VycmVudCBzdGFnZS4DCQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABBldmVudEVuZHNBdEJsb2NrBQAAABl3aW5uZXJEZWNsYXJhdGlvbkludGVydmFsBQAAAA5wYXlvdXRJbnRlcnZhbAUAAAAGaGVpZ2h0CQAAAgAAAAECAAAAG1BheW91dCBpcyBub3QgeWV0IGZpbmlzaGVkLgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAEbGlnYQkAAAIAAAABAgAAADhPbmx5IExpZ2EgY291bGQgc2V0IHRoZSBmaW5hbCBzdGFnZSBhbmQgaG9sZCBjb21taXNzaW9uLgkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAABGdvVG8AAAABBQAAAAZTVEFHRTQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAlyZWNpcGllbnQJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAHdGVhbU9mZgAAAAEAAAAGdGVhbUlkAwkBAAAAAiE9AAAAAgkBAAAABXN0YWdlAAAAAAUAAAAGU1RBR0UxCQAAAgAAAAECAAAAFkludmFsaWQgY3VycmVudCBzdGFnZS4DCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAABm9yYWNsZQkAAAIAAAABAgAAAC5Pbmx5IG9yYWNsZSBjb3VsZCBkcm9wIHRlYW1zIG91dCBvZmYgdGhlIGdhbWUuAwkBAAAAASEAAAABCQEAAAAMaXNLZXlEZWZpbmVkAAAAAQkBAAAADnRvQmFzZVByaWNlS2V5AAAAAQUAAAAGdGVhbUlkCQAAAgAAAAECAAAAElRlYW0gaXMgbm90IGZvdW5kLgMJAQAAAAxpc0tleURlZmluZWQAAAABCQEAAAAIdG9PZmZLZXkAAAABBQAAAAZ0ZWFtSWQJAAACAAAAAQIAAAATVGVhbSBpcyBhbHJlYWR5IG9mZgMJAAAAAAAAAgkBAAAADGdldFRlYW1zTGVmdAAAAAAAAAAAAAAAAAEJAAACAAAAAQIAAAAaVGhlcmUgaXMgb25seSAxIHRlYW0gbGVmdC4JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAAA29mZgAAAAEFAAAABnRlYW1JZAkABEwAAAACCQEAAAAMZGVjVGVhbXNMZWZ0AAAAAAUAAAADbmlsAAAAAWkBAAAACHJvbGxiYWNrAAAAAAMJAQAAAAIhPQAAAAIJAQAAAAVzdGFnZQAAAAAFAAAAB1NUQUdFMzMJAAACAAAAAQIAAAAWSW52YWxpZCBjdXJyZW50IHN0YWdlLgQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAZ0ZWFtSWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAADGlzS2V5RGVmaW5lZAAAAAEJAQAAAA50b0Jhc2VQcmljZUtleQAAAAEFAAAABnRlYW1JZAkAAAIAAAABAgAAABJUZWFtIGlzIG5vdCBmb3VuZC4EAAAACnNvbGRBbW91bnQJAQAAAA1nZXRTb2xkQW1vdW50AAAAAQUAAAAGdGVhbUlkBAAAAAhyb2xsYmFjawkAAGkAAAACCQAAaAAAAAIJAABoAAAAAgkBAAAAEmdldEJhbGFuY2VTbmFwc2hvdAAAAAAJAQAAABBnZXRCYXNlUHJpemVQb29sAAAAAAgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQAAaAAAAAIJAABoAAAAAgkBAAAADGdldEJhc2VQcmljZQAAAAEFAAAABnRlYW1JZAUAAAAKc29sZEFtb3VudAUAAAAKc29sZEFtb3VudAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACHJvbGxiYWNrBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAGcGF5b3V0AAAAAAMJAQAAAAIhPQAAAAIJAQAAAAVzdGFnZQAAAAAFAAAAB1NUQUdFMzEJAAACAAAAAQIAAAAWSW52YWxpZCBjdXJyZW50IHN0YWdlLgQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAACWdldFdpbm5lcgAAAAAJAAACAAAAAQIAAAA5WW91IGFyZSBhbGxvd2VkIHRvIGdldCBwYXlvdXQgZm9yIHRoZSB3aW5uZXIgdG9rZW5zIG9ubHkuBAAAAAZwYXlvdXQJAABpAAAAAgkAAGgAAAACCQEAAAAMZ2V0UHJpemVQb29sAAAAAAgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAANZ2V0U29sZEFtb3VudAAAAAEJAQAAAAlnZXRXaW5uZXIAAAAACQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGcGF5b3V0BQAAAAR1bml0BQAAAANuaWwAAAABAAAAAXgBAAAACHZlcmlmaWVyAAAAAAQAAAAHJG1hdGNoMAUAAAABeAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAAAW8FAAAAByRtYXRjaDADAwkAAAAAAAACCQEAAAAFc3RhZ2UAAAAABQAAAAZTVEFHRTEJAABnAAAAAggFAAAAAW8AAAAFcHJpY2UJAQAAAAxnZXRCYXNlUHJpY2UAAAABCQEAAAAHZXh0cmFjdAAAAAEICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHCQAB9AAAAAMIBQAAAAFvAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAABbwAAAAZwcm9vZnMAAAAAAAAAAAAFAAAABGxpZ2EHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBMZWFzZVRyYW5zYWN0aW9uBAAAAAFsBQAAAAckbWF0Y2gwAwMJAAAAAAAAAgkBAAAABXN0YWdlAAAAAAUAAAAGU1RBR0UxCQAAAAAAAAIIBQAAAAFsAAAACXJlY2lwaWVudAkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAJbGVhc2VOb2RlBwkAAGYAAAACCAUAAAABbAAAAAZhbW91bnQJAABoAAAAAgAAAAAAAAAAZAUAAAAFd2F2ZXMHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABZMZWFzZUNhbmNlbFRyYW5zYWN0aW9uBAAAAAJjbAUAAAAHJG1hdGNoMAkBAAAAAiE9AAAAAgkBAAAABXN0YWdlAAAAAAUAAAAGU1RBR0UxB8cX+RI=", "chainId": 84, "height": 588421, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let waves = 100000000
5+
6+let ligaCommission = 4
7+
8+let totalTeams = 2
9+
10+let liga = base58'6EbuPWZCjE4nMM3PJGRxYUbJpY18FtQQ1EauRAfirZ2e'
11+
12+let oracle = base58'EM1XUpKdct1eE2mgmdvr4VA4raXMKvYKumCbnArtcQ9c'
13+
14+let leaseNode = base58'EM1XUpKdct1eE2mgmdvr4VA4raXMKvYKumCbnArtcQ9c'
15+
16+let eventEndsAtBlock = 588480
17+
18+let winnerDeclarationInterval = 4680
19+
20+let payoutInterval = 4680
21+
22+func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
23+ then getIntegerValue(this, key)
24+ else default
25+
26+
27+func getInt (key) = getIntegerValue(this, key)
28+
29+
30+func setInt (key,value) = DataEntry(key, value)
31+
32+
33+func setBytes (key,value) = DataEntry(key, value)
34+
35+
36+func getBytes (key) = getBinaryValue(this, key)
37+
38+
39+func isKeyDefined (key) = if (if (if (isDefined(getBinary(this, key)))
40+ then true
41+ else isDefined(getString(this, key)))
42+ then true
43+ else isDefined(getBoolean(this, key)))
44+ then true
45+ else isDefined(getInteger(this, key))
46+
47+
48+func toSoldKey (assetId) = (toBase58String(assetId) + "_SOLD")
49+
50+
51+func getSoldAmount (assetId) = getIntOr(toSoldKey(assetId), (extract(assetInfo(assetId)).quantity - assetBalance(this, assetId)))
52+
53+
54+func setSoldAmount (assetId) = setInt(toSoldKey(assetId), getSoldAmount(assetId))
55+
56+
57+func toBasePriceKey (assetId) = (toBase58String(assetId) + "_BASE_PRICE")
58+
59+
60+func getBasePrice (teamId) = getInt(toBasePriceKey(teamId))
61+
62+
63+func toOffKey (assetId) = (toBase58String(assetId) + "_OFF")
64+
65+
66+func off (teamId) = setInt(toOffKey(teamId), 1)
67+
68+
69+func isOff (teamId) = getIntOr(toOffKey(teamId), 0)
70+
71+
72+let BALANCESNAPSHOT = "BALANCE_SNAPSHOT"
73+
74+func getBalanceSnapshot () = getIntOr(BALANCESNAPSHOT, wavesBalance(this))
75+
76+
77+func setBalanceSnapshot () = setInt(BALANCESNAPSHOT, getBalanceSnapshot())
78+
79+
80+let PRIZEPOOL = "PRIZE_POOL"
81+
82+func getPrizePool () = getIntOr(PRIZEPOOL, ((getBalanceSnapshot() * (100 - ligaCommission)) / 100))
83+
84+
85+func setPrizePool () = setInt(PRIZEPOOL, getPrizePool())
86+
87+
88+let WINNER = "WINNER"
89+
90+func getWinner () = getBytes(WINNER)
91+
92+
93+func setWinner (winner) = setBytes(WINNER, winner)
94+
95+
96+let TEAMSLEFT = "TEAMS_LEFT"
97+
98+func getTeamsLeft () = getIntOr(TEAMSLEFT, totalTeams)
99+
100+
101+func decTeamsLeft () = setInt(TEAMSLEFT, (getTeamsLeft() - 1))
102+
103+
104+let TEAMCOUNTER = "TEAM_COUNTER"
105+
106+func getTeamCounter () = getIntOr(TEAMCOUNTER, 0)
107+
108+
109+func incTeamCounter () = setInt(TEAMCOUNTER, (getTeamCounter() + 1))
110+
111+
112+let BASEPRIZEPOOL = "BASE_PRIZE_POOL"
113+
114+func getBasePrizePool () = getIntOr(BASEPRIZEPOOL, 0)
115+
116+
117+func addBasePrizePool (value) = setInt(BASEPRIZEPOOL, (getBasePrizePool() + value))
118+
119+
120+let STAGE1 = 1
121+
122+let STAGE2 = 2
123+
124+let STAGE31 = 31
125+
126+let STAGE32 = 32
127+
128+let STAGE33 = 33
129+
130+let STAGE4 = 4
131+
132+let STAGE = "STAGE"
133+
134+func stage () = getIntOr(STAGE, STAGE1)
135+
136+
137+func goTo (stage) = setInt(STAGE, stage)
138+
139+
140+@Callable(i)
141+func stage2 () = if ((stage() != STAGE1))
142+ then throw("Invalid current stage.")
143+ else if ((eventEndsAtBlock >= height))
144+ then throw("Event is not yet finished.")
145+ else WriteSet([goTo(STAGE2), setBalanceSnapshot()])
146+
147+
148+
149+@Callable(i)
150+func stage31 (winner) = if ((stage() != STAGE2))
151+ then throw("Invalid current stage.")
152+ else if ((i.callerPublicKey != oracle))
153+ then throw("Only oracle could declare the winner.")
154+ else if (isDefined(toOffKey(winner)))
155+ then throw("Team that is off cannot be the winner.")
156+ else WriteSet([goTo(STAGE31), setPrizePool(), setWinner(winner), setSoldAmount(winner)])
157+
158+
159+
160+@Callable(i)
161+func stage32 (teamId) = if (if ((stage() != STAGE2))
162+ then true
163+ else (stage() != STAGE32))
164+ then throw("Invalid current stage.")
165+ else if (((eventEndsAtBlock + winnerDeclarationInterval) >= height))
166+ then throw("Oracle is still have time to declare a winner.")
167+ else if (!(isKeyDefined(toBasePriceKey(teamId))))
168+ then throw("Team is not found.")
169+ else if (isDefined(toOffKey(teamId)))
170+ then throw("Team that is off cannot participate in rollback.")
171+ else if (isKeyDefined(toSoldKey(teamId)))
172+ then throw("Team sold amount already set.")
173+ else WriteSet([goTo(STAGE32), setSoldAmount(teamId), addBasePrizePool((getSoldAmount(teamId) * getBasePrice(teamId))), incTeamCounter()])
174+
175+
176+
177+@Callable(i)
178+func stage33 () = if ((stage() != STAGE32))
179+ then throw("Invalid current stage.")
180+ else if ((getTeamCounter() != getTeamsLeft()))
181+ then throw("There are still teams without sold amount set.")
182+ else WriteSet([goTo(STAGE33)])
183+
184+
185+
186+@Callable(i)
187+func stage4 (recipient) = if ((stage() != STAGE31))
188+ then throw("Invalid current stage.")
189+ else if ((((eventEndsAtBlock + winnerDeclarationInterval) + payoutInterval) >= height))
190+ then throw("Payout is not yet finished.")
191+ else if ((i.callerPublicKey != liga))
192+ then throw("Only Liga could set the final stage and hold commission.")
193+ else ScriptResult(WriteSet([goTo(STAGE4)]), TransferSet([ScriptTransfer(addressFromPublicKey(recipient), wavesBalance(this), unit)]))
194+
195+
196+
197+@Callable(i)
198+func teamOff (teamId) = if ((stage() != STAGE1))
199+ then throw("Invalid current stage.")
200+ else if ((i.callerPublicKey != oracle))
201+ then throw("Only oracle could drop teams out off the game.")
202+ else if (!(isKeyDefined(toBasePriceKey(teamId))))
203+ then throw("Team is not found.")
204+ else if (isKeyDefined(toOffKey(teamId)))
205+ then throw("Team is already off")
206+ else if ((getTeamsLeft() == 1))
207+ then throw("There is only 1 team left.")
208+ else WriteSet([off(teamId), decTeamsLeft()])
209+
210+
211+
212+@Callable(i)
213+func rollback () = if ((stage() != STAGE33))
214+ then throw("Invalid current stage.")
215+ else {
216+ let payment = extract(i.payment)
217+ let teamId = extract(payment.assetId)
218+ if (!(isKeyDefined(toBasePriceKey(teamId))))
219+ then throw("Team is not found.")
220+ else {
221+ let soldAmount = getSoldAmount(teamId)
222+ let rollback = (((getBalanceSnapshot() * getBasePrizePool()) * payment.amount) / ((getBasePrice(teamId) * soldAmount) * soldAmount))
223+ TransferSet([ScriptTransfer(i.caller, rollback, unit)])
224+ }
225+ }
226+
227+
228+
229+@Callable(i)
230+func payout () = if ((stage() != STAGE31))
231+ then throw("Invalid current stage.")
232+ else {
233+ let payment = extract(i.payment)
234+ if ((payment.assetId != getWinner()))
235+ then throw("You are allowed to get payout for the winner tokens only.")
236+ else {
237+ let payout = ((getPrizePool() * payment.amount) / getSoldAmount(getWinner()))
238+ TransferSet([ScriptTransfer(i.caller, payout, unit)])
239+ }
240+ }
241+
242+
243+@Verifier(x)
244+func verifier () = match x {
245+ case o: Order =>
246+ if (if ((stage() == STAGE1))
247+ then (o.price >= getBasePrice(extract(o.assetPair.amountAsset)))
248+ else false)
249+ then sigVerify(o.bodyBytes, o.proofs[0], liga)
250+ else false
251+ case l: LeaseTransaction =>
252+ if (if ((stage() == STAGE1))
253+ then (l.recipient == addressFromPublicKey(leaseNode))
254+ else false)
255+ then (l.amount > (100 * waves))
256+ else false
257+ case cl: LeaseCancelTransaction =>
258+ (stage() != STAGE1)
259+ case _ =>
260+ false
261+}
262+

github/deemru/w8io/169f3d6 
266.40 ms