SC Arguments: [Name:SC_ACTION Type:uint64 Value:'0' Name:SC_ID Type:hash Value:'cfbd566d3678dec6e6dfa3a919feae5306ab12af1485e8bcf9320bd5a122b1d3' Name:code Type:string Value:'Function Deposit(token String) Uint64
1 STORE("treasuryDERO",LOAD("treasuryDERO")+DEROVALUE())
2 IF token != "" THEN GOTO 4
3 RETURN 0
4 STORE("treasury"+token,LOAD("treasury"+token)+ASSETVALUE(HEXDECODE(LOAD(token))))
5 RETURN 0
End Function
Function Withdraw(amount Uint64, token String) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("CEO"))) != 1 THEN GOTO 20
2 IF token != "" THEN GOTO 9
3 IF amount > LOAD("allowanceDERO") THEN GOTO 20
4 SEND_DERO_TO_ADDRESS(SIGNER(),amount)
5 STORE("allowanceDERO",LOAD("allowanceDERO")-amount)
6 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
7 STORE("treasuryDERO",LOAD("treasuryDERO")-amount)
8 RETURN 0
9 IF amount > LOAD("allowance"+token) THEN GOTO 20
10 SEND_ASSET_TO_ADDRESS(SIGNER(),amount,HEXDECODE(LOAD(token)))
11 STORE("allowance"+token,LOAD("allowance"+token)-amount)
12 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
13 STORE("treasury"+token,LOAD("treasury"+token)-amount)
19 RETURN 0
20 RETURN 1
End Function
Function FX(curr String,rate Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("fxBot")))!= 1 THEN GOTO 9
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("fxBot")))
3 STORE("fx"+curr,rate)
8 RETURN 0
9 RETURN 1
End Function
Function Lst(scid String,price Uint64,dmg Uint64,clean Uint64,wDis Uint64,mDis Uint64,curr String,wknd Uint64,inst Uint64,sameDay Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(scid))==1 THEN GOTO 3
2 IF LOAD(scid+"Owner")==ADDRESS_STRING(SIGNER()) THEN GOTO 6 ELSE GOTO 99
3 STORE(scid+"Owner",ADDRESS_STRING(SIGNER()))
4 IF EXISTS(scid+"Count") THEN GOTO 6
5 STORE(scid+"Count",0)
6 STORE(scid+"Price",price)
7 STORE(scid+"Dmg",dmg)
8 STORE(scid+"Clean",clean)
9 STORE(scid+"WDiscount",wDis)
10 STORE(scid+"MDiscount",mDis)
11 STORE(scid+"Currency",curr)
12 STORE(scid+"WkndPrice",wknd)
13 STORE(scid+"Instant",inst)
14 STORE(scid+"SameDay",sameDay)
98 RETURN 0
99 RETURN 1
End Function
Function Rmv(scid String, del Uint64) Uint64
1 IF LOAD(scid+"Owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 9
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(scid))
3 IF del == 0 THEN GOTO 8
4 DELETE(scid+"Owner")
8 RETURN 0
9 RETURN 1
End Function
Function Req(scid String,start Uint64,end Uint64,pets Uint64,guests Uint64) Uint64
1 DIM price, discount, stamp as Uint64
2 LET price=price(start,end,LOAD(scid+"Price"),LOAD(scid+"WkndPrice"))
3 IF (end-start)/86400>28&&EXISTS(scid+"MDiscount") THEN GOTO 5
4 IF (end-start)/86400>7&&EXISTS(scid+"WDiscount") THEN GOTO 7 ELSE GOTO 8
5 LET discount=LOAD(scid+"MDiscount")
6 GOTO 8
7 LET discount=LOAD(scid+"WDiscount")
8 LET stamp=BLOCK_TIMESTAMP()
9 LET price=price*(100-discount)/100+LOAD(scid+"Dmg")+LOAD(scid+"Clean")
10 LET price=price*LOAD("fx"+LOAD(scid+"Currency"))/100000
11 IF DEROVALUE()<price THEN GOTO 99
12 IF LOAD(scid+"Instant")==1 THEN GOTO 40
13 IF EXISTS(scid+"Start"+stamp)!=0 THEN GOTO 99
14 STORE(scid+"Booker"+stamp, ADDRESS_STRING(SIGNER()))
15 STORE(scid+"Start"+stamp,start)
16 STORE(scid+"End"+stamp,end)
17 STORE(scid+"Pmt"+stamp,price)
18 STORE(scid+"Dmg"+stamp,LOAD(scid+"Dmg"))
19 STORE(scid+"Pets"+stamp,pets)
20 STORE(scid+"Guests"+stamp,guests)
21 RETURN 0
40 DIM id, count as Uint64
41 LET id=chk(scid,start,end,LOAD(scid+"SameDay"))
42 IF id == 0 THEN GOTO 99
43 book(scid,start,end,id,price,LOAD(scid+"Dmg"),ADDRESS_STRING(SIGNER()))
98 RETURN 0
99 RETURN 1
End Function
Function Cnfrm(scid String,stamp String) Uint64
1 IF LOAD(scid+"Owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 9
2 DIM id as Uint64
3 LET id = chk(scid,LOAD(scid+"Start"+stamp),LOAD(scid+"End"+stamp),LOAD(scid+"SameDay"))
4 IF id == 0 THEN GOTO 9
5 book(scid,LOAD(scid+"Start"+stamp),LOAD(scid+"End"+stamp),id,LOAD(scid+"Pmt"+stamp),LOAD(scid+"Dmg"+stamp),LOAD(scid+"Booker"+stamp))
6 del(scid,stamp)
8 RETURN 0
9 RETURN 1
End Function
Function Cncl(scid String,key String) Uint64
1 IF EXISTS(scid+"Booker"+key) == 0 || STRLEN(key)!=10 || (SIGNER()!=ADDRESS_RAW(LOAD(scid+"Owner")) && SIGNER()!=ADDRESS_RAW(LOAD(scid+"Booker"+key))) THEN GOTO 10
3 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(LOAD(scid+"Booker"+key)),LOAD(scid+"Pmt"+key))
4 del(scid,key)
9 RETURN 0
10 RETURN 1
End Function
Function del(scid String,key String) Uint64
4 DELETE(scid+"Booker"+key)
5 DELETE(scid+"Start"+key)
6 DELETE(scid+"End"+key)
7 DELETE(scid+"Pmt"+key)
8 DELETE(scid+"Dmg"+key)
End Function
Function book(scid String, start Uint64, end Uint64, id Uint64, pmt Uint64, dmg Uint64, booker String) Uint64
1 STORE(scid+"Start"+id,start)
2 STORE(scid+"End"+id,end)
3 STORE(scid+"Pmt"+id,pmt)
4 STORE(scid+"Dmg"+id,dmg)
5 STORE(scid+"Compl"+id,0)
6 STORE(scid+"Booker"+id,booker)
7 STORE("treasuryDERO",LOAD("treasuryDERO") + 10*(pmt-dmg)/100)
8 STORE(scid+"Count",id)
9 RETURN 0
End Function
Function chk(scid String,start Uint64,end Uint64,sameDay Uint64) Uint64
1 IF BLOCK_TIMESTAMP()>(86400*sameDay+start) THEN GOTO 10
2 DIM id, count as Uint64
3 LET id = LOAD(scid + "Count") + 1
4 LET count = id
5 IF count == 1 THEN GOTO 9
6 LET count = count -1
7 IF LOAD(scid + "Start"+count) > end THEN GOTO 5
8 IF LOAD(scid + "End"+count) < start THEN GOTO 5 ELSE GOTO 10
9 RETURN id
10 RETURN 0
End Function
Function Cmpln(scid String,id Uint64,money Uint64,exp String) Uint64
1 IF LOAD(scid+"Booker"+id) != ADDRESS_STRING(SIGNER()) THEN GOTO 9
2 STORE(scid+"Compl"+id,money)
3 STORE(scid+"ComplExp"+id,exp)
9 RETURN 0
End Function
Function Rslv(scid String,id Uint64,renter Uint64, owner Uint64, fee Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("ESCROW"))) != 1 THEN GOTO 99
2 IF LOAD(scid+"Compl"+id) != 1 THEN GOTO 99
3 IF renter + owner + fee> LOAD(scid+"Pmt"+id) THEN GOTO 99
4 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("ESCROW")))
5 STORE(scid+"Compl"+id,2)
6 STORE(scid+"ResO"+id,owner)
7 STORE(scid+"ResR"+id,renter)
8 STORE(scid+"ResF"+id,fee)
9 SEND_DERO_TO_ADDRESS(SIGNER(),fee)
10 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(LOAD(scid+"Booker"+id)) ,renter)
11 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(LOAD(scid+"Owner")) ,owner)
98 RETURN 0
99 RETURN 1
End Function
Function Rate(scid String, id Uint64, renter String, exp String) Uint64
1 IF ADDRESS_STRING(SIGNER()) == LOAD(scid+"Booker"+id) THEN GOTO 4
2 IF ADDRESS_STRING(SIGNER()) == LOAD(scid+"Owner") THEN GOTO 7
3 RETURN 1
4 IF EXISTS(scid+id+"RtnExp") THEN GOTO 10
5 STORE(scid+id+"RtnExp",exp)
6 RETURN 0
7 IF EXISTS(scid+id+"RtnRenter") THEN GOTO 10
8 STORE(scid+id+"RtnRenter",renter)
9 RETURN 0
10 RETURN 1
End Function
Function Rls(scid String,id Uint64,dmg Uint64,desc String) Uint64
1 IF LOAD(scid+"Owner") != ADDRESS_STRING(SIGNER()) || BLOCK_TIMESTAMP() < LOAD(scid+"End"+id) || LOAD(scid+"Compl"+id) != 0 || EXISTS(scid+id+"DmgDone") THEN GOTO 99
4 DIM renter as String
5 DIM deposit,release as Uint64
6 LET renter=LOAD(scid+"Booker"+id)
7 LET deposit=LOAD(scid+"Dmg"+id)
8 IF dmg>deposit || dmg>0&&desc==""THEN GOTO 99
10 LET release=deposit-dmg
11 STORE(scid+id+"DmgDone",dmg)
12 STORE(scid+id+"DmgDesc",desc)
13 STORE(scid+id+"DmgRenter",renter)
14 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD(scid+"Pmt"+id)-release)
15 IF release==0 THEN GOTO 98
16 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(renter),release)
98 RETURN 0
99 RETURN 1
End Function
Function date(d Uint64) Uint64
1 dim day as Uint64
2 LET day=d-LOAD("firstFriday")
3 LET day=day/86400
4 LET day=day%7
5 RETURN day
End Function
Function price(start Uint64, end Uint64, price Uint64, wknd Uint64) Uint64
1 dim startDay,endDay,duration,MOD,extra,total as Uint64
2 LET endDay=date(end)
3 LET duration=(end-start)/86400
4 LET MOD=duration%7
5 LET extra=MAX(MAX(MOD/5,MIN(MIN(3,endDay),3+MOD - endDay)),MOD/3)
6 LET total=extra+(duration/7)*3
7 RETURN total*wknd+(duration-total)*price
End Function
Function Propose(hash String, k String, u Uint64, s String, t Uint64, seat Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("CEO"))) != 1 THEN GOTO 4
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
3 GOTO 6
4 IF ASSETVALUE(HEXDECODE(LOAD("SEAT_"+seat))) !=1 THEN GOTO 99
5 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("SEAT_"+seat)))
6 STORE("APPROVE", 0)
7 IF hash =="" THEN GOTO 11
8 STORE("HASH",hash)
9 STORE("k","")
10 RETURN 0
11 STORE("k",k)
12 STORE("HASH","")
13 STORE("t",t)
14 IF t == 1 THEN GOTO 21
15 STORE("s", s)
20 RETURN 0
21 STORE("u",u)
98 RETURN 0
99 RETURN 1
End Function
Function Approve(seat Uint64) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("SEAT_"+seat)))!=1 THEN GOTO 9
2 STORE("APPROVE",LOAD("APPROVE")+1)
3 STORE("SEAT_"+seat+"_OWNER",SIGNER())
8 RETURN 0
9 RETURN 1
End Function
Function ClaimSeat(seat Uint64) Uint64
1 IF SIGNER()!=LOAD("SEAT_"+seat+"_OWNER") THEN GOTO 9
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("SEAT_"+seat)))
3 IF LOAD("APPROVE")==0 THEN GOTO 8
4 STORE("APPROVE",LOAD("APPROVE")-1)
8 RETURN 0
9 RETURN 1
End Function
Function Update(code String) Uint64
1 IF ASSETVALUE(HEXDECODE(LOAD("CEO")))!=1 THEN GOTO 9
2 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
3 IF SHA256(code)!=HEXDECODE(LOAD("HASH")) THEN GOTO 9
4 IF LOAD("APPROVE")<LOAD("QUORUM") THEN GOTO 9
5 UPDATE_SC_CODE(code)
8 RETURN 0
9 RETURN 1
End Function
Function Store() Uint64
1 IF LOAD("APPROVE")<LOAD("QUORUM") THEN GOTO 9
2 STORE("APPROVE",0)
3 IF LOAD("t")== 1 THEN GOTO 6
4 STORE(LOAD("k"), LOAD("s"))
5 RETURN 0
6 STORE(LOAD("k"),LOAD("u"))
8 RETURN 0
9 RETURN 1
End Function' Name:entrypoint Type:string Value:'Update'] |