SC Arguments: [Name:SC_ACTION Type:uint64 Value:'0' Name:SC_ID Type:hash Value:'afde05dd953c0077a9f04dceb2c1b4c58b5153043e67ebef7cf767b63327eac8' Name:code Type:string Value:'Function own() Uint64
1 IF SIGNER() == LOAD("owner") THEN GOTO 10
2 IF LOAD("refs") < 2 THEN GOTO 9
3 DIM i as Uint64
4 LET i = 1
5 IF EXISTS("ref"+i) == 0 THEN GOTO 7
6 IF SIGNER() == LOAD("ref"+i) THEN GOTO 10
7 LET i = i+1
8 IF i <= 9 THEN GOTO 5
9 RETURN 0
10 RETURN 1
End Function
Function AddS(new String) Uint64
1 IF SIGNER() == LOAD("owner") && LOAD("refs") < 9 THEN GOTO 3
2 RETURN 1
3 DIM i as Uint64
5 LET i = i+1
6 IF i >= 10 THEN GOTO 2
7 IF EXISTS("ref"+i) THEN GOTO 5
8 STORE("refs", LOAD("refs")+1)
9 STORE("ref"+i, ADDRESS_RAW(new))
10 RETURN 0
End Function
Function RmvS(rm Uint64) Uint64
1 IF SIGNER() == LOAD("owner") THEN GOTO 3
2 RETURN 1
3 IF EXISTS("ref"+rm) == 0 THEN GOTO 6
4 STORE("refs", LOAD("refs")-1)
5 DELETE("ref"+rm)
6 RETURN 0
End Function
Function hexd(s String) String
5 RETURN HEXDECODE(LOAD(s))
End Function
Function avhex(s String) Uint64
5 RETURN ASSETVALUE(HEXDECODE(s))
End Function
Function bt() Uint64
5 RETURN BLOCK_TIMESTAMP()
End Function
Function send(n String, a String, amt Uint64) Uint64
4 IF EXISTS("tkn_"+n) THEN GOTO 6
5 RETURN SEND_DERO_TO_ADDRESS(a, amt)
6 RETURN SEND_ASSET_TO_ADDRESS(a, amt, hexd("tkn_"+n))
End Function
Function pW(n String) Uint64
1 IF EXISTS("tkn_"+n) THEN GOTO 7
6 RETURN DEROVALUE()
7 IF DEROVALUE() > 0 THEN GOTO 10
8 RETURN ASSETVALUE(hexd("tkn_"+n))
10 RETURN 12
End Function
Function Start(amt Uint64, itm Uint64, rule Uint64, dm Uint64, op Uint64, ch String, i1 String, i2 String, tkn String) Uint64
5 IF LOAD("live") != 1 THEN GOTO 20
10 IF amt%1000 == 0 THEN GOTO 30
20 RETURN 1
30 IF avhex(ch) != 1 THEN GOTO 20
40 DIM n as String
50 LET n = ITOA(LOAD("init")+1)
60 IF EXISTS("init_"+n) THEN GOTO 20
61 IF tkn == "" THEN GOTO 65
62 STORE("tkn_"+n, tkn)
65 IF pW(n) != amt THEN GOTO 20
70 IF itm == 0 THEN GOTO 140
75 IF itm == 1 THEN GOTO 110
80 IF itm != 2 THEN GOTO 20
90 IF avhex(i2) != 1 THEN GOTO 20
100 STORE("i2_a_"+n, i2)
110 IF avhex(i1) != 1 THEN GOTO 20
120 STORE("i1_a_"+n, i1)
140 STORE("stamp_"+n, bt()+120)
150 STORE("rule_"+n, rule)
155 STORE("dm_"+n, dm)
160 STORE("items_"+n, itm)
170 STORE("amt_"+n, amt)
180 STORE("init_"+n, 1)
190 STORE("init", ATOI(n))
200 STORE("own_a_"+n, SIGNER())
210 STORE("ch_a_"+n, ch)
260 STORE("op_a_"+n, op)
270 STORE("total_"+n, pW(n))
300 RETURN 0
End Function
Function Accept(n String, op Uint64, ch String, i1 String, i2 String) Uint64
10 IF EXISTS("init_"+n) == 0 THEN GOTO 40
20 IF LOAD("init_"+n) != 1 THEN GOTO 40
30 IF bt() > LOAD("stamp_"+n) THEN GOTO 50
40 RETURN 1
50 IF avhex(ch) != 1 THEN GOTO 40
60 DIM itm, odds as Uint64
70 LET itm = LOAD("items_"+n)
80 IF itm == 0 THEN GOTO 130
90 IF itm == 1 THEN GOTO 120
100 IF itm != 2 THEN GOTO 40
110 IF avhex(i2) != 1 THEN GOTO 40
120 IF avhex(i1) != 1 THEN GOTO 40
130 IF pW(n) != LOAD("amt_"+n) THEN GOTO 40
150 STORE("own_b_"+n, SIGNER())
160 STORE("ch_b_"+n, ch)
170 IF itm == 0 THEN GOTO 300
180 IF itm == 1 THEN GOTO 210
200 STORE("i2_b_"+n, i2)
210 STORE("i1_b_"+n, i1)
300 STORE("op_b_"+n, op)
330 STORE("total_"+n, LOAD("total_"+n)+pW(n))
335 STORE("init_"+n, 2)
340 STORE("v_b_"+n, 5+RANDOM(5))
345 STORE("v_a_"+n, 5+RANDOM(5))
350 IF tie(n) THEN GOTO 340
360 IF LOAD("rule_"+n) == 1 THEN GOTO 420
390 STORE("ready_"+n, bt())
400 RETURN 0
420 IF dc(n, 950) THEN GOTO 440
430 LET odds = 950
440 end(n, odds)
700 RETURN 0
End Function
Function tie(n String) Uint64
2 DIM a, b as Uint64
3 LET a = LOAD("v_a_"+n)-LOAD("op_a_"+n)
4 LET b = LOAD("v_b_"+n)-LOAD("op_b_"+n)
5 IF a == 5 && b == 5 && LOAD("op_a_"+n) != LOAD("op_b_"+n) THEN GOTO 20
6 IF a == 5 && b != 5 THEN GOTO 20
7 IF b == 5 && a != 5 THEN GOTO 20
8 IF a > 5 && (b > a || b < 5) THEN GOTO 20
9 IF b > 5 && (a > b || a < 5) THEN GOTO 20
10 STORE("init_"+n, LOAD("init_"+n)+1)
15 RETURN 1
20 RETURN 0
End Function
Function clear(n String, u Uint64) Uint64
5 DELETE("ready_"+n)
6 DELETE("total_"+n)
7 DELETE("stamp_"+n)
10 IF LOAD("rds") > LOAD("dis") THEN GOTO 30
20 RETURN 0
30 DIM i as Uint64
35 LET i = u
40 IF EXISTS("final_"+i) == 0 THEN GOTO 80
50 DELETE("final_"+i)
51 DELETE("amt_"+i)
52 DELETE("init_"+i)
53 DELETE("own_a_"+i)
54 DELETE("ch_a_"+i)
55 DELETE("i2_a_"+i)
56 DELETE("i1_a_"+i)
57 DELETE("own_b_"+i)
58 DELETE("ch_b_"+i)
59 DELETE("i2_b_"+i)
60 DELETE("i1_b_"+i)
62 DELETE("rule_"+i)
63 DELETE("dm_"+i)
65 DELETE("items_"+i)
67 DELETE("v_a_"+i)
68 DELETE("v_b_"+i)
70 DELETE("op_a_"+i)
75 DELETE("op_b_"+i)
80 LET i = i+1
90 IF i < u+(LOAD("dis")/10) THEN GOTO 40
95 RETURN 0
End Function
Function win(n String, odds Uint64) String
4 DIM a as String
5 IF odds > 475 THEN GOTO 15
7 LET a = LOAD("own_a_"+n)
8 lb("l", LOAD("own_b_"+n))
10 GOTO 30
15 LET a = LOAD("own_b_"+n)
20 lb("l", LOAD("own_a_"+n))
30 RETURN a
End Function
Function Ref(n String, odds Uint64) Uint64
5 IF odds > 950 || odds == 475 THEN GOTO 30
10 IF EXISTS("init_"+n) == 0 THEN GOTO 30
12 IF dc(n, odds) THEN GOTO 30
20 IF own() THEN GOTO 40
30 RETURN 1
40 end(n, odds)
50 RETURN 0
End Function
Function dc(n String, o Uint64) Uint64
1 DIM a, b as Uint64
2 LET a = LOAD("v_a_"+n) - LOAD("op_a_"+n)
3 LET b = LOAD("v_b_"+n) - LOAD("op_b_"+n)
4 IF o > 475 THEN GOTO 7
5 IF (a >= 5 && (b > a || b < 5)) || (a == 5 && b == 5 && LOAD("op_a_"+n) > LOAD("op_b_"+n)) THEN GOTO 9
6 RETURN 1
7 IF (b >= 5 && (a > b || a < 5)) || (a == 5 && b == 5 && LOAD("op_b_"+n) > LOAD("op_a_"+n)) THEN GOTO 9
8 RETURN 1
9 RETURN 0
End Function
Function end(n String, odds Uint64) Uint64
4 DIM adr as String
5 IF odds > 950 THEN GOTO 40
6 LET adr = win(n, odds)
7 lb("w", adr)
8 IF LOAD("dm_"+n) == 1 THEN GOTO 25
9 rAll(n)
10 pay(n, odds)
15 DELETE("tkn_"+n)
20 GOTO 50
25 dM(n, adr, LOAD("items_"+n), odds)
30 pay(n, odds)
35 GOTO 50
40 LET adr = "nil"
45 STORE("init_"+n, 0)
50 STORE("rds", LOAD("rds")+1)
55 STORE("final_"+n, HEX(adr)+"_"+HEX(TXID())+"_"+odds)
60 clear(n, LOAD("rds")-LOAD("dis"))
90 RETURN 0
End Function
Function lb(l String, adr String) Uint64
2 IF EXISTS(l+"_"+HEX(adr)) THEN GOTO 5
3 STORE(l+"_"+HEX(adr), 1)
4 RETURN 0
5 STORE(l+"_"+HEX(adr), LOAD(l+"_"+HEX(adr))+1)
9 RETURN 0
End Function
Function Refund(n String) Uint64
4 IF EXISTS("init_"+n) == 0 THEN GOTO 50
5 IF LOAD("init_"+n) != 1 THEN GOTO 15
6 IF own() THEN GOTO 8
7 IF SIGNER() != LOAD("own_a_"+n) THEN GOTO 50
8 pay(n, 0)
9 rAll(n)
10 end(n, 1000)
11 RETURN 0
15 IF LOAD("init_"+n) < 2 THEN GOTO 50
16 IF own() THEN GOTO 80
20 IF bt() < LOAD("ready_"+n)+172800 THEN GOTO 50
30 IF SIGNER() == LOAD("own_a_"+n) THEN GOTO 80
40 IF SIGNER() == LOAD("own_b_"+n) THEN GOTO 80
50 RETURN 1
80 rAll(n)
85 pay(n, 475)
90 end(n, 1100)
95 RETURN 0
End Function
Function rAs(o String, itm String) Uint64
5 RETURN SEND_ASSET_TO_ADDRESS(o, 1, itm)
End Function
Function rAll(n String) Uint64
5 DIM a, b as String
6 DIM i as Uint64
7 LET i = LOAD("items_"+n)
8 LET a = LOAD("own_a_"+n)
10 IF i == 0 THEN GOTO 50
20 IF i == 1 THEN GOTO 40
30 rAs(a, hexd("i2_a_"+n))
40 rAs(a, hexd("i1_a_"+n))
50 rAs(a, hexd("ch_a_"+n))
51 IF EXISTS("own_b_"+n) == 0 THEN GOTO 95
52 LET b = LOAD("own_b_"+n)
60 IF i == 0 THEN GOTO 90
70 IF i == 1 THEN GOTO 80
75 rAs(b, hexd("i2_b_"+n))
80 rAs(b, hexd("i1_b_"+n))
90 rAs(b, hexd("ch_b_"+n))
95 RETURN 0
End Function
Function dM(n String, adr String, itm Uint64, odds Uint64) Uint64
5 DIM re as Uint64
7 LET re = 86400+RANDOM(604800)
10 IF itm == 0 THEN GOTO 45
15 IF itm == 1 THEN GOTO 30
20 rAs(adr, hexd("i2_a_"+n))
25 rAs(adr, hexd("i2_b_"+n))
30 rAs(adr, hexd("i1_a_"+n))
35 rAs(adr, hexd("i1_b_"+n))
45 IF odds > 475 THEN GOTO 75
50 rAs(adr, hexd("ch_a_"+n))
60 STORE("ret_"+n+"_"+LOAD("ch_b_"+n), LOAD("total_"+n)*(itm+1))
65 STORE("time_"+n+"_"+LOAD("ch_b_"+n), bt()+re)
70 RETURN 0
75 rAs(adr, hexd("ch_b_"+n))
80 STORE("ret_"+n+"_"+LOAD("ch_a_"+n), LOAD("total_"+n)*(itm+1))
90 STORE("time_"+n+"_"+LOAD("ch_a_"+n), bt()+re)
95 RETURN 0
End Function
Function Revi(n String, asset String) Uint64
10 IF EXISTS("ret_"+n+"_"+asset) == 0 THEN GOTO 30
20 IF bt() < LOAD("time_"+n+"_"+asset) THEN GOTO 30
25 IF pW(n) == LOAD("ret_"+n+"_"+asset) THEN GOTO 40
26 IF disc(n, asset) THEN GOTO 40
30 RETURN 1
40 rAs(SIGNER(), HEXDECODE(asset))
50 send(n, LOAD("dev"), 70*pW(n)/100)
60 send(n, LOAD("alt"), 30*pW(n)/100)
70 DELETE("ret_"+n+"_"+asset)
80 DELETE("time_"+n+"_"+asset)
85 DELETE("tkn_"+n)
95 RETURN 0
End Function
Function disc(n String, asset String) Uint64
1 DIM p, w, t as Uint64
2 LET p = LOAD("ret_"+n+"_"+asset)
3 LET w = 604800
5 LET t = LOAD("time_"+n+"_"+asset)
6 IF bt() > t+w && pW(n) >= p-(80*p/100) THEN GOTO 20
7 IF bt() > t+(w*2) && pW(n) >= p-(60*p/100) THEN GOTO 20
8 IF bt() > t+(w*3) && pW(n) >= p-(40*p/100) THEN GOTO 20
9 IF bt() > t+(w*4) && pW(n) >= p-(20*p/100) THEN GOTO 20
10 RETURN 0
20 RETURN 1
End Function
Function pay(n String, odds Uint64) Uint64
1 DIM div, tl as Uint64
2 LET div = 950
3 LET tl = LOAD("total_"+n)
4 send(n, LOAD("dev"), 30*tl/1000)
6 send(n, LOAD("alt"), 20*tl/1000)
7 send(n, LOAD("own_a_"+n), (div-odds)*tl/1000)
8 IF EXISTS("own_b_"+n) == 0 THEN GOTO 10
9 send(n, LOAD("own_b_"+n), odds*tl/1000)
10 RETURN 0
End Function
Function UpdateCode(code String) Uint64
1 IF LOAD("owner") == SIGNER() THEN GOTO 3
2 RETURN 1
3 IF code == "" THEN GOTO 2
4 IF LOAD("init") != LOAD("rds") THEN GOTO 2
5 UPDATE_SC_CODE(code)
6 STORE("v", LOAD("v")+1)
10 RETURN 0
End Function
Function VarUpdate(live Uint64, dis Uint64, n String) Uint64
1 IF LOAD("owner") == SIGNER() THEN GOTO 3
2 RETURN 1
3 IF LOAD("init") != LOAD("rds") THEN GOTO 2
4 STORE("live", live)
5 IF n == "0" THEN GOTO 7
6 clear(n, ATOI(n))
7 IF dis > 450 || dis < 10 THEN GOTO 15
8 STORE("dis", dis)
15 RETURN 0
End Function' Name:entrypoint Type:string Value:'UpdateCode'] |