| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "getters": "{ |
| 5 | |
| 6 | $claim_followup_reward = ($house1, $house2, $house1_num, $house2_num, $days, $address, $followup_claim_term, $matching_timeout, $fu) => { |
| 7 | require($house1, "house1 does not exist"); |
| 8 | require($house2, "house2 does not exist"); |
| 9 | require($house2_num == $house1_num + 1, "not neighbors"); |
| 10 | require($house2_num % 2 == 0, "2nd house num must be even"); |
| 11 | require($house1.owner == $address OR $house2.owner == $address, "you are not one of the owners"); |
| 12 | $elapsed_days = (timestamp - $house1.ts)/24/3600; |
| 13 | require($elapsed_days >= +$days, "too early"); |
| 14 | require($elapsed_days <= $days + $followup_claim_term, "too late"); |
| 15 | |
| 16 | if (!$fu[$days]){ |
| 17 | $fu[$days] = {first: $address, ts: timestamp}; |
| 18 | $message = "Registered your request. Your neighbor must send their request within 10 minutes, otherwise you both will have to start over."; |
| 19 | } |
| 20 | else{ |
| 21 | require(!$fu[$days].paid_ts, "this follow-up reward has already been paid"); |
| 22 | if ($fu[$days].first == $address){ |
| 23 | $fu[$days].ts = timestamp; |
| 24 | $message = "Refreshed your request. Your neighbor must send their request within 10 minutes, otherwise you both will have to start over."; |
| 25 | } |
| 26 | else{ |
| 27 | $bInTime = timestamp < $fu[$days].ts + $matching_timeout; |
| 28 | if (!$bInTime){ |
| 29 | $fu[$days].ts = timestamp; |
| 30 | $fu[$days].first = $address; |
| 31 | $message = "Unfortunately, you are too late. Your neighbor has to send their request again within 10 minutes, otherwise you both will have to start over."; |
| 32 | } |
| 33 | else{ |
| 34 | $fu[$days].paid_ts = timestamp; |
| 35 | $message = 'Paid followup rewards'; |
| 36 | $event = json_stringify({type: 'followup', house1_num: $house1_num, house2_num: $house2_num, reward: $fu.reward, city: $house1.city}); |
| 37 | $bPaid = true; |
| 38 | } |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | { |
| 43 | fu: $fu, |
| 44 | message: $message, |
| 45 | event: $event, |
| 46 | bPaid: $bPaid, |
| 47 | } |
| 48 | }; |
| 49 | |
| 50 | |
| 51 | $buy_shortcode = ($seller_house, $buyer_house, $seller_house_num, $buyer_house_num, $buyer_address, $amount, $variables) => { |
| 52 | require($seller_house, "no seller house"); |
| 53 | require($seller_house.shortcode, "seller house has no shortcode"); |
| 54 | require($seller_house.shortcode_price, "shortcode not on sale"); |
| 55 | require($seller_house.amount, "seller house cannot be mayor house"); |
| 56 | |
| 57 | require($buyer_house.owner == $buyer_address, "not your house"); |
| 58 | require(!$buyer_house.shortcode, "you already have a shortcode, release it first"); |
| 59 | require($buyer_house.amount, "buyer house cannot be mayor house"); |
| 60 | |
| 61 | require($seller_house.shortcode_price == $amount, "wrong amount"); |
| 62 | $fee = ceil($variables.shortcode_sale_fee * $seller_house.shortcode_price); |
| 63 | $net_amount = $seller_house.shortcode_price - $fee; |
| 64 | $event = json_stringify({type: 'p2p-buy-shortcode', seller_house_num: $seller_house_num, buyer_house_num: $buyer_house_num, shortcode_price: $seller_house.shortcode_price, fee: $fee, old_owner: $seller_house.owner, new_owner: $buyer_address}); |
| 65 | $buyer_house.shortcode = $seller_house.shortcode; |
| 66 | $seller_house.shortcode = ''; |
| 67 | delete($seller_house, 'shortcode_price'); |
| 68 | { |
| 69 | seller_house: $seller_house, |
| 70 | buyer_house: $buyer_house, |
| 71 | fee: $fee, |
| 72 | net_amount: $net_amount, |
| 73 | event: $event, |
| 74 | } |
| 75 | }; |
| 76 | |
| 77 | |
| 78 | |
| 79 | |
| 80 | }", |
| 81 | "messages": [ |
| 82 | { |
| 83 | "app": "state", |
| 84 | "state": "{ |
| 85 | $buy_shortcode(); |
| 86 | bounce("library only"); |
| 87 | }" |
| 88 | } |
| 89 | ] |
| 90 | } |
| 91 | ] |