Simple Facility Of Redemption Script ●

Redemption proceeds may be taxable as dividends or capital gains. Your script should calculate backup withholding (e.g., 24% in the US) unless the shareholder provides a valid W-9.

| Setting Name | Description | Default Value | | --- | --- | --- | | redemptionTime | The time in minutes required for redemption. | 30 | | maxRedemptions | The maximum number of redemptions allowed per player. | 3 | | bannedPlayers | A list of banned player identifiers. | - |

Example Configuration File (config.lua)

-- config.lua
-- Redemption time in minutes
local redemptionTime = 30
-- Maximum number of redemptions allowed per player
local maxRedemptions = 3
-- List of banned player identifiers
local bannedPlayers = 
    "player1",
    "player2",
-- Export the configuration settings
exports("redemptionTime", redemptionTime)
exports("maxRedemptions", maxRedemptions)
exports("bannedPlayers", bannedPlayers)

In the context of Web3, a "Simple Facility of Redemption Script" refers to a Smart Contract function. Simple Facility Of Redemption Script

Here is a working example of a Simple Facility Of Redemption Script for a hypothecated lending facility.

from datetime import datetime, timedelta
import math

class RedemptionFacility: def init(self, principal, annual_rate, cut_off_hour=14): self.principal = principal self.annual_rate = annual_rate self.cut_off = cut_off_hour # 2 PM GMT self.days_in_year = 365

def calculate_accrued_interest(self, days_held):
    daily_rate = self.annual_rate / self.days_in_year
    return self.principal * daily_rate * days_held
def process_request(self, request_datetime, redemption_fee_percent=0.01):
    # 1. Cut-off logic
    if request_datetime.hour >= self.cut_off:
        settlement_date = request_datetime + timedelta(days=1)
        # Assume full day accrued passes the cut-off
        days_held = 1
    else:
        settlement_date = request_datetime
        days_held = 0
# 2. Calculate interest (simplified)
    interest = self.calculate_accrued_interest(days_held)
# 3. Gross proceeds
    gross_proceeds = self.principal + interest
# 4. Fees
    fee_amount = gross_proceeds * redemption_fee_percent
    net_proceeds = gross_proceeds - fee_amount
# 5. Output
    outcome = 
        "request_time": request_datetime.isoformat(),
        "settlement_date": settlement_date.isoformat(),
        "gross_proceeds": round(gross_proceeds, 2),
        "redemption_fee": round(fee_amount, 2),
        "net_payout": round(net_proceeds, 2),
        "status": "approved"
return outcome

The script first checks if the redemption request is valid. Redemption proceeds may be taxable as dividends or

Many redemption facilities require shareholder waivers or board approval above a certain dollar threshold. The script flags redemptions exceeding the limit (e.g., $250,000) and halts for manual override.

Your script should read from a redemption_queue table and write results to a settlement_ledger.

SQL Example:

SELECT facility_id, principal, investor_email
FROM active_facilities
WHERE redemption_requested = true AND is_processed = false;

-- After script runs: UPDATE active_facilities SET redemption_value = 52100.45, status='settled' WHERE facility_id = 'FAC-101';

Before going live, stress-test your script with these scenarios: In the context of Web3, a "Simple Facility

| Test Case | Input | Expected Output | | :--- | :--- | :--- | | Standard redemption | $10k principal, 5% rate, held 30 days | Accrued $41.09 | | After cut-off time | Request 3:01 PM (cut-off 3:00 PM) | Settlement T+1 | | Early exit fee | Redeem in month 1 (2% fee) | Fee = $200 | | Zero interest | Rate = 0% | Accrued = $0 | | Decimal precision | $99.99 at 1% for 1 day | $0.0027 (round to $0.00) |