tx · 88nnEUSjk28WEEk6QVgysnHgyWeiVXAyF7E15sGbD3CC

3N9ScgRKzPyEq8EcUniVPkC2LQ2wxYaq2qq:  -0.01000000 Waves

2019.08.08 18:34 [622169] smart account 3N9ScgRKzPyEq8EcUniVPkC2LQ2wxYaq2qq > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
109.82 ms