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) |