| SC Arguments: [Name:SC_ACTION Type:uint64 Value:'0' Name:SC_ID Type:hash Value:'fc2a6923124a07f33c859f201a57159663f087e2f4b163eaa55b0f09bf6de89f' Name:code Type:string Value:'Function BT(H String, i Uint64, J String, X String, E Uint64, name String, image String, tagline String, desc String) Uint64
10 STORE("treasuryDERO",LOAD("treasuryDERO")+DEROVALUE()*5/100)
15 IF EXISTS(H + i + "_T") THEN GOTO 40
16 IF DEROVALUE() < 100000 THEN GOTO 100
17 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
21 STORE(H+i+"_X0",X)
22 STORE(H+i+"_XN",0)
23 STORE(H+i+"_XT",1)
24 STORE(H+i+"_XE",BLOCK_TIMESTAMP()+1209600)
25 STORE(H+i+"_T",DEROVALUE()*95/100)
26 STORE(H+i+"_J0",J)
27 STORE(H+i+"_E",E)
29 STORE(ADDRESS_STRING(SIGNER())+"_"+H+i+"_S",DEROVALUE()*95/100)
30 STORE(H+i+"_JN",0)
31 STORE(H+i+"_JE",BLOCK_TIMESTAMP()+1209600)
32 STORE(H+i+"_JT",1)
33 SetMetadata(H, i, name, image, tagline, desc)
34 RETURN 0
40 STORE(H+i+"_T",(DEROVALUE()*95/100)+LOAD(H+i+"_T"))
42 IF EXISTS(ADDRESS_STRING(SIGNER())+"_"+H+i+"_S") THEN GOTO 45
43 STORE(ADDRESS_STRING(SIGNER())+"_"+H+i+"_S",DEROVALUE()*95/100)
44 RETURN 0
45 STORE(ADDRESS_STRING(SIGNER())+"_"+H+i+"_S",(DEROVALUE()*95/100)+LOAD(ADDRESS_STRING(SIGNER())+"_"+H+i+"_S"))
99 RETURN 0
100 RETURN 1
End Function
Function SetName(H String,i Uint64, Name String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
40 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
50 STORE(H+i+"Name",Name)
99 RETURN 0
100 RETURN 1
End Function
Function SetImage(H String,i Uint64, Image String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
40 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
50 STORE(H+i+"Image",Image)
99 RETURN 0
100 RETURN 1
End Function
Function SetTagline(H String, i Uint64, Tagline String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
40 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
50 STORE(H+i+"Tagline",Tagline)
99 RETURN 0
100 RETURN 1
End Function
Function SetDescription(H String, i Uint64, Description String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
40 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
50 STORE(H+i+"Desc",Description)
99 RETURN 0
100 RETURN 1
End Function
Function SetMetadata(H String, i Uint64, Name String, Image String, Tagline String, Description String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
40 STORE(H+i+"Image",Image)
50 STORE(H+i+"Tagline",Tagline)
60 STORE(H+i+"Desc",Description)
70 STORE(H+i+"Name",Name)
80 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
99 RETURN 0
100 RETURN 1
End Function
Function AN(H String, JX String, l String) Uint64
10 IF ASSETVALUE(HEXDECODE(JX)) != 1 THEN GOTO 100
15 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(JX))
20 IF BLOCK_TIMESTAMP() > LOAD(H+"_"+l+"E") THEN GOTO 70
30 IF LOAD(H+"_"+l+LOAD(H+"_"+l+"N")) != JX THEN GOTO 100
40 STORE(H+"_"+l,JX)
50 STORE(H+"_"+l+"E",BLOCK_TIMESTAMP()+1209600)
55 STORE(H+"_"+l+"_address",ADDRESS_STRING(SIGNER()))
60 RETURN 0
70 dim k as Uint64
71 LET k = 1+(BLOCK_TIMESTAMP() - LOAD(H+"_"+l+"E"))/1209600
75 IF LOAD(H+"_"+l+((LOAD(H+"_"+l+"N")+k)%LOAD(H+"_"+l+"T"))) != JX THEN GOTO 100
80 STORE(H+"_"+l,JX)
85 STORE(H+"_"+l+"_address",ADDRESS_STRING(SIGNER()))
90 STORE(H+"_"+l+"E",BLOCK_TIMESTAMP()+1209600)
95 STORE(H+"_"+l+"N",(LOAD(H+"_"+l+"N")+k)%LOAD(H+"_"+l+"T"))
99 RETURN 0
100 RETURN 1
End Function
Function N(H String, i Uint64, JX String, l String) Uint64
10 IF ASSETVALUE(HEXDECODE(H)) != 1 THEN GOTO 100
15 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(H))
20 STORE(H+i+"_"+l+LOAD(H+i+"_"+l+"T"),JX)
30 STORE(H+i+"_"+l+"T",LOAD(H+i+"_"+l+"T")+1)
40 IF LOAD(H+i+"_"+l+"T") != 2 THEN GOTO 99
50 IF BLOCK_TIMESTAMP()<LOAD(H+i+"_"+l+"E") THEN GOTO 99
60 STORE(H+i+"_"+l+"E",BLOCK_TIMESTAMP()+604800)
99 RETURN 0
100 RETURN 1
End Function
Function ATR(H String, R String, I Uint64, W Uint64, F Uint64) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD(H+"_J"))) != 1 THEN GOTO 100
12 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD(H+"_J")))
15 IF EXISTS(H+"_JF") THEN GOTO 100
20 IF EXISTS(H+"_RN") THEN GOTO 30
25 STORE(H+"_RN",0)
30 IF EXISTS(H+"_R"+I) THEN GOTO 40
35 STORE(H+"_RN",LOAD(H+"_RN")+1)
40 STORE(H+"_R"+I,R)
50 STORE(H+"_W"+I,W)
60 IF F == 0 THEN GOTO 99
70 STORE(H+"_JF",1)
99 RETURN 0
100 RETURN 1
End Function
Function V(H String) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD(H+"_X"))) != 1 THEN GOTO 100
15 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD(H+"_X")))
20 DELETE(H+"_JF")
99 RETURN 0
100 RETURN 1
End Function
Function RT(H String) Uint64
10 IF LOAD(H+"_E") <BLOCK_TIMESTAMP() THEN GOTO 95
15 IF EXISTS(H+"_JF")==0 THEN GOTO 100
16 IF ASSETVALUE(HEXDECODE(LOAD(H+"_X"))) != 1 THEN GOTO 100
17 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD(H+"_X")))
21 IF LOAD(H+"_JF") == 2 THEN GOTO 100
22 STORE(H+"_JF",2)
30 dim i,rn,total as Uint64
35 LET total = 0
40 LET i = LOAD(H+"_RN")
45 LET rn = LOAD(H+"_RN")
50 LET i = i-1
60 LET total = total + LOAD(H+"_W"+i)
65 IF i == 0 THEN GOTO 70 ELSE GOTO 50
70 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(LOAD(H+"_R"+i)),LOAD(H+"_T")*LOAD(H+"_W"+i)/total)
80 LET i = i+1
90 IF i == rn THEN GOTO 99 ELSE GOTO 70
95 IF EXISTS(H+"_JF") THEN GOTO 100
96 IF EXISTS(ADDRESS_STRING(SIGNER())+"_"+H+"_S")==0 THEN GOTO 100
97 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD(ADDRESS_STRING(SIGNER())+"_"+H+"_S"))
98 DELETE(ADDRESS_STRING(SIGNER())+"_"+H+"_S")
99 RETURN 0
100 RETURN 1
End Function
Function Deposit(token String) Uint64
1 STORE("treasury"+token,LOAD("treasury"+token)+ASSETVALUE(HEXDECODE(LOAD(token))))
2 RETURN 0
End Function
Function Withdraw(amount Uint64, token String, special Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("CEO"))) != 1 THEN GOTO 99
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
3 IF special ==1 THEN GOTO 20
4 IF amount > LOAD("treasury"+token) THEN GOTO 99
5 IF BLOCK_TIMESTAMP() < LOAD("allowanceRefresh"+token) THEN GOTO 8
6 STORE("allowanceRefresh"+token,BLOCK_TIMESTAMP()+LOAD("allowanceInterval"+token))
7 STORE("allowanceUsed"+token,0)
8 IF amount + LOAD("allowanceUsed"+token) > LOAD("allowance"+token) THEN GOTO 99
9 SEND_ASSET_TO_ADDRESS(SIGNER(),amount,HEXDECODE(LOAD(token)))
10 STORE("allowanceUsed"+token,LOAD("allowanceUsed"+token)+amount)
11 STORE("treasury"+token,LOAD("treasury"+token)-amount)
19 RETURN 0
20 IF LOAD("allowanceSpecial"+token) > LOAD("treasury"+token) THEN GOTO 99
21 SEND_ASSET_TO_ADDRESS(SIGNER(),LOAD("allowanceSpecial"+token),HEXDECODE(LOAD(token)))
22 STORE("treasury"+token,LOAD("treasury"+token)-LOAD("allowanceSpecial"+token))
23 DELETE("allowanceSpecial"+token)
98 RETURN 0
99 RETURN 1
End Function
Function SS(shares Uint64) Uint64
10 IF EXISTS(ADDRESS_STRING(SIGNER())+"_SHARES") == 0 THEN GOTO 100
20 IF LOAD(ADDRESS_STRING(SIGNER())+"_SHARES") < shares THEN GOTO 100
30 STORE(ADDRESS_STRING(SIGNER())+"_SHARES",LOAD(ADDRESS_STRING(SIGNER())+"_SHARES")-shares)
40 SEND_ASSET_TO_ADDRESS(SIGNER(),shares*10000,HEXDECODE(LOAD("COCO")))
50 STORE("T_COCO",LOAD("T_COCO")-shares*10000)
99 RETURN 0
100 RETURN 1
End Function
Function Propose(hash String, k String, v String, t String, seat Uint64) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD("CEO"))) != 1 THEN GOTO 13
11 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
12 GOTO 15
13 IF ASSETVALUE(HEXDECODE(LOAD("seat"+seat))) !=1 THEN GOTO 100
14 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("seat"+seat)))
15 STORE("APPROVE", 0)
20 IF hash =="" THEN GOTO 40
25 STORE("HASH",hash)
30 STORE("k","")
35 RETURN 0
40 STORE("k",k)
45 STORE("HASH","")
49 STORE("t",t)
80 STORE("v",v)
90 RETURN 0
100 RETURN 1
End Function
Function Approve(seat Uint64) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD("seat"+seat)))!=1 THEN GOTO 100
20 STORE("APPROVE",LOAD("APPROVE")+1)
30 STORE("trustee"+seat,SIGNER())
99 RETURN 0
100 RETURN 1
End Function
Function ClaimSeat(seat Uint64) Uint64
10 IF SIGNER()!= LOAD("trustee"+seat) THEN GOTO 100
20 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("seat"+seat)))
30 IF LOAD("APPROVE") == 0 THEN GOTO 99
40 STORE("APPROVE",LOAD("APPROVE")-1)
99 RETURN 0
100 RETURN 1
End Function
Function Update(code String) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD("CEO")))!=1 THEN GOTO 100
15 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
20 IF SHA256(code) != HEXDECODE(LOAD("HASH")) THEN GOTO 100
30 IF LOAD("APPROVE") < LOAD("QUORUM") THEN GOTO 100
40 UPDATE_SC_CODE(code)
99 RETURN 0
100 RETURN 1
End Function
Function Store() Uint64
10 IF LOAD("APPROVE") < LOAD("QUORUM") THEN GOTO 100
20 STORE("APPROVE",0)
30 IF LOAD("t") == "U" THEN GOTO 60
40 STORE(LOAD("k"), LOAD("v"))
45 STORE("k","")
50 RETURN 0
60 STORE(LOAD("k"),ATOI(LOAD("v")))
65 STORE("k","")
99 RETURN 0
100 RETURN 1
End Function' Name:entrypoint Type:string Value:'Update'] |