SC Arguments: [Name:SC_ACTION Type:uint64 Value:'0' Name:SC_ID Type:hash Value:'cfbd566d3678dec6e6dfa3a919feae5306ab12af1485e8bcf9320bd5a122b1d3' Name:code Type:string Value:'Function Deposit() Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD("TOKEN"))) % 10000 != 0 THEN GOTO 100
15 IF EXISTS(ADDRESS_STRING(SIGNER())+"_SHARES") THEN GOTO 30
20 STORE(ADDRESS_STRING(SIGNER())+"_SHARES",ASSETVALUE(HEXDECODE(LOAD("TOKEN")))/10000)
21 STORE(ADDRESS_STRING(SIGNER())+"_EPOCH",(BLOCK_TIMESTAMP() - LOAD("EPOCH-INIT"))/30) //SHOULD BE 259200
25 RETURN 0
30 STORE(ADDRESS_STRING(SIGNER())+"_SHARES",LOAD(ADDRESS_STRING(SIGNER())+"_SHARES")+ASSETVALUE(LOAD("TOKEN"))/10000)
31 STORE(ADDRESS_STRING(SIGNER())+"_EPOCH",(BLOCK_TIMESTAMP() - LOAD("EPOCH-INIT"))/259200)
35 RETURN 0
100 RETURN 1
End Function
Function Withdraw(allowance Uint64, seat Uint64) Uint64
10 IF ASSETVALUE(HEXDECODE(LOAD("CEO"))) == 1 THEN GOTO 30
11 DIM EPOCH as Uint64
12 LET EPOCH = (BLOCK_TIMESTAMP()-LOAD("EPOCH-INIT"))/30 //SHOULD BE 259200
13 IF ASSETVALUE(HEXDECODE(LOAD("SEAT_"+seat))) == 1 THEN GOTO 80
14 11 IF EXISTS(ADDRESS_STRING(SIGNER())+"_SHARES") ==0 THEN GOTO 100
15 IF LOAD(ADDRESS_STRING(SIGNER())+"_EPOCH") >= EPOCH THEN GOTO 100
16 DIM SHARE as Uint64
17 LET SHARE = LOAD(ADDRESS_STRING(SIGNER())+"_SHARES")*LOAD("TREASURY")/100000
18 SEND_DERO_TO_ADDRESS(SIGNER(),SHARE)
19 STORE(ADDRESS_STRING(SIGNER())+"_EPOCH",EPOCH)
20 STORE("TREASURY",LOAD("TREASURY")-SHARE)
25 RETURN 0
30 IF allowance > LOAD("ALLOWANCE") THEN GOTO 100
40 SEND_DERO_TO_ADDRESS(SIGNER(),allowance)
50 STORE("ALLOWANCE",LOAD("ALLOWANCE") - allowance)
60 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(LOAD("CEO")))
65 STORE("TREASURY",LOAD("TREASURY")-allowance)
70 RETURN 0
80 IF LOAD("SEAT_"+seat+"_EPOCH") >= EPOCH THEN GOTO 100
81 DIM SAL as Uint64
82 LET SAL = 5*LOAD("TREASURY")/100
83 SEND_DERO_TO_ADDRESS(SIGNER(),SAL)
84 STORE("SEAT_"+seat+"_EPOCH",EPOCH)
85 STORE("TREASURY",LOAD("TREASURY")-SAL)
90 RETURN 0
100 RETURN 1
End Function
Function ListProperty(scid String, price Uint64, damage_deposit Uint64) Uint64
10 IF ASSETVALUE(HEXDECODE(scid))!=1 THEN GOTO 100
20 STORE(scid+"_owner",ADDRESS_STRING(SIGNER()))
30 IF EXISTS(scid + "_bk_last") == 0 THEN GOTO 40 ELSE GOTO 99
40 STORE(scid + "_bk_last",0)
50 STORE(scid + "_price", price)
60 STORE(scid + "_damage_deposit", damage_deposit)
99 RETURN 0
100 RETURN 1
End Function
Function RemoveProperty(scid String) Uint64
10 IF LOAD(scid+"_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 100
20 DELETE(scid+"_owner")
30 SEND_ASSET_TO_ADDRESS(SIGNER(),1,HEXDECODE(scid))
99 RETURN 0
100 RETURN 1
End Function
Function ChangePrice(property_id String, newPrice Uint64) Uint64
10 IF LOAD(property_id+"_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 40
20 STORE(property_id+"_price", newPrice)
30 RETURN 0
40 RETURN 1
End Function
Function ChangeAvailability(property_id String, calendar_url String)
10 IF LOAD(property_id+"_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 100
20 STORE(property_id + "_bk_avail", calendar_url)
99 RETURN 0
100 RETURN 1
End Function
Function ConfirmBooking(property_id String, timestamp_key Uint64) Uint64
10 IF LOAD(property_id+"_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 100
11 IF BLOCK_TIMESTAMP() > LOAD(property_id+"_request_bk_start_"+timestamp_key) THEN GOTO 100
15 DIM booking_id, count as Uint64
20 LET booking_id = LOAD(property_id + "_bk_last") + 1
24 LET count = booking_id
25 IF count == 1 THEN GOTO 30
26 LET count = count -1
27 IF LOAD(property_id + "_bk_start_"+count) > LOAD(property_id + "_request_bk_end_"+ timestamp_key) THEN GOTO 25
28 IF LOAD(property_id + "_bk_end_"+count) < LOAD(property_id + "_request_bk_start_"+ timestamp_key) THEN GOTO 25 ELSE GOTO 100
30 STORE(property_id + "_bk_last", booking_id)
31 STORE(property_id + "_booker_" + booking_id, LOAD(property_id + "_request_booker_"+ timestamp_key))
32 STORE(property_id + "_bk_start_" + booking_id, LOAD(property_id + "_request_bk_start_"+ timestamp_key))
33 STORE(property_id + "_bk_end_" + booking_id, LOAD(property_id + "_request_bk_end_"+ timestamp_key))
34 STORE(property_id + "_payment_" + booking_id, LOAD(property_id + "_request_payment_"+ timestamp_key))
35 SEND_DERO_TO_ADDRESS(SIGNER(),90*(LOAD(property_id + "_request_payment_"+ timestamp_key)-LOAD(property_id + "_damage_deposit"))/100)
40 STORE("TREASURY", LOAD("TREASURY") + 10*(LOAD(property_id + "_request_payment_"+ timestamp_key)-LOAD(property_id + "_damage_deposit"))/100)
70 DELETE(property_id + "_request_booker_"+ timestamp_key)
71 DELETE(property_id + "_request_bk_start_"+ timestamp_key)
72 DELETE(property_id + "_request_bk_end_"+ timestamp_key)
73 DELETE(property_id + "_request_payment_"+ timestamp_key)
99 RETURN 0
100 RETURN 1
End Function
Function RateExperience(property_id String, booking_id Uint64, Renter Uint64, Owner Uint64, Property Uint64, Location Uint64, Overall Uint64) Uint64
10 IF ADDRESS_STRING(SIGNER()) == LOAD(property_id+"_booker_"+booking_id) THEN GOTO 40
20 IF ADDRESS_STRING(SIGNER()) == LOAD(property_id+"_owner") THEN GOTO 90
30 RETURN 1
40 STORE(property_id+"_"+booking_id+"_rating_property",Property)
50 STORE(property_id+"_"+booking_id+"_rating_location",Location)
60 STORE(property_id+"_"+booking_id+"_rating_owner",Owner)
70 STORE(property_id+"_"+booking_id+"_rating_overall",Overall)
80 RETURN 0
90 STORE(property_id+"_"+booking_id+"_rating_renter",Renter)
100 RETURN 0
End Function
Function RequestBooking(property_id String, timestamp_key Uint64, start_timestamp Uint64, end_timestamp Uint64) Uint64
10 IF timestamp_key == 0 THEN GOTO 100
15 IF DEROVALUE() < LOAD(property_id+"_price") * (end_timestamp - start_timestamp)/86400 + LOAD(property_id+"_damage_deposit") THEN GOTO 100
20 IF ADDRESS_STRING(SIGNER()) == "" THEN GOTO 100
30 IF EXISTS(property_id + "_request_bk_start_" + timestamp_key ) != 0 THEN GOTO 100
40 STORE(property_id + "_request_booker_" + timestamp_key, ADDRESS_STRING(SIGNER()))
50 STORE(property_id + "_request_bk_start_" + timestamp_key, start_timestamp)
60 STORE(property_id + "_request_bk_end_" + timestamp_key, end_timestamp)
70 STORE(property_id + "_request_payment_"+ timestamp_key,DEROVALUE())
99 RETURN 0
100 RETURN 1
End Function
Function CancelBooking(property_id String, timestamp_key Uint64) Uint64
10 IF EXISTS(property_id + "_request_booker_" + timestamp_key) == 0 THEN GOTO 100
20 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(LOAD(property_id + "_request_booker_"+ timestamp_key)), LOAD(property_id + "_request_payment_"+ timestamp_key))
30 DELETE(property_id + "_request_booker_"+ timestamp_key)
40 DELETE(property_id + "_request_bk_start_"+ timestamp_key)
50 DELETE(property_id + "_request_bk_end_"+ timestamp_key)
60 DELETE(property_id + "_request_payment_"+ timestamp_key)
99 RETURN 0
100 RETURN 1
End Function
Function SetDamageDepositAmount(property_id String, damage_deposit Uint64) Uint64
10 IF LOAD(property_id+"_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 40
20 STORE(property_id+"_damage_deposit", damage_deposit)
30 RETURN 0
40 RETURN 1
End Function
Function ReleaseDamageDepositAmount(property_id String, booking_id Uint64, damage Uint64, damage_description String) Uint64
10 IF LOAD(property_id + "_owner") != ADDRESS_STRING(SIGNER()) THEN GOTO 1000
30 DIM renter as String
40 DIM deposit as Uint64
60 DIM release as Uint64
70 LET renter = LOAD(property_id + "_booker_" + booking_id)
80 LET deposit = LOAD(property_id + "_damage_deposit")
90 IF damage > deposit THEN GOTO 1000
110 IF (damage > 0) & (damage_description == "") THEN GOTO 1000
120 LET release = deposit - damage
130 STORE(property_id + "_" + booking_id + "_damage_amount_in_dero", damage)
140 STORE(property_id + "_" + booking_id + "_damage_description", damage_description)
150 STORE(property_id + "_" + booking_id + "_damage_renter", renter)
170 IF damage == 0 THEN GOTO 190
180 SEND_DERO_TO_ADDRESS(SIGNER(), damage)
190 IF release == 0 THEN GOTO 999
200 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(renter),release)
999 RETURN 0
1000 RETURN 1
End Function
Function Propose(hash String, k String, u Uint64, s String, t Uint64, 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)
50 IF t == 1 THEN GOTO 80
60 STORE("s", s)
70 RETURN 0
80 STORE("u",u)
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("SEAT_"+seat+"_OWNER",SIGNER())
99 RETURN 0
100 RETURN 1
End Function
Function ClaimSeat(seat Uint64) Uint64
10 IF SIGNER()!= LOAD("SEAT_"+seat+"_OWNER") 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(k String, u Uint64, s String) Uint64
20 IF k != LOAD("k") THEN GOTO 999
40 IF LOAD("APPROVE") < LOAD("QUORUM") THEN GOTO 999
50 dim t as Uint64
60 let t = LOAD("t")
110 IF t == 0 THEN GOTO 150
120 IF t == 1 THEN GOTO 170
130 IF s!=LOAD("s") THEN GOTO 999
135 STORE(k, HEX(s))
140 RETURN 0
150 IF s!=LOAD("s") THEN GOTO 999
155 STORE(k, s)
160 RETURN 0
170 IF u!=LOAD("u") THEN GOTO 999
175 STORE(k,u)
180 RETURN 0
999 RETURN 1
End Function' Name:entrypoint Type:string Value:'Update'] |