Our blockchain implementation features a dual-purpose SHELTR Utility Token (Shelter Ledger for public accountability + SmartFund™ investment vehicle) with dual-rail payment infrastructure (Adyen for traditional donations + x402 for micropayments) and zero participant cryptocurrency exposure.
This document provides comprehensive technical analysis of SHELTR’s single-token stable fund blockchain implementation, smart contract architecture, and enterprise security protocols. Designed for developers, blockchain engineers, and enterprise partners.
SHELTR implements a revolutionary single-token stable fund ecosystem powered by the Shelter Ledger- our blockchain-based public accountability system that tracks and traces every donation and every payout. The SHELTR Utility Token serves a dual purpose: Track & Trace all transactions for complete transparency, and manage the SmartFund™ investment vehicle with guaranteed 4-6% APY growth through Coinbase institutional staking.
Our architecture ensures zero participant risk through virtual debit cards for 80% allocation, while the 15% housing fund grows through institutional staking - all recorded on the immutable Shelter Ledger. Built on Base network for ultra-low fees (~$0.01) and enterprise-grade security, our smart contracts implement OpenZeppelin standards with multi-signature governance and emergency pause capabilities.
Every participant receives an automatic blockchain wallet upon registration, enabling real-time monitoring of their housing fund balance, transaction history, and 4-6% APY growth - all without cryptocurrency complexity.
The Shelter Ledger is SHELTR's blockchain-powered public accountability system. Unlike traditional charities that provide annual reports, the Shelter Ledger offers real-time, immutable verification of all financial flows.
The SHELTR token serves two critical functions: tracking every dollar for public accountability, and managing the housing fund investment with guaranteed institutional returns.
contract SHELTRPaymentDistributor is AccessControl, ReentrancyGuard, Pausable {
bytes32 public constant PROCESSOR_ROLE = keccak256("PROCESSOR_ROLE");
// Integration contracts
ISHELTRStablecoin public immutable sheltrToken;
IAdyenPayout public immutable adyenPayout;
IERC20 public immutable USDT;
// Distribution constants
uint256 public constant PARTICIPANT_PERCENTAGE = 8000; // 80%
uint256 public constant HOUSING_FUND_PERCENTAGE = 1500; // 15%
uint256 public constant SHELTER_OPS_PERCENTAGE = 500; // 5%
function processDonation(
address participant,
address shelter,
uint256 totalAmount,
bytes32 adyenTransactionId
) external onlyRole(PROCESSOR_ROLE) nonReentrant whenNotPaused {
DonationSplit memory split = _calculateSplit(totalAmount);
// 1. Load 80% to participant's virtual card
adyenPayout.loadParticipantCard(participant, split.participantAmount, adyenTransactionId);
// 2. Deposit 15% to housing fund and mint SHELTR tokens
sheltrToken.depositHousingFund(participant, split.housingFundAmount);
// 3. Handle 5% shelter operations or redirect to housing fund
if (shelter != participant) {
USDT.transfer(shelter, split.shelterOpsAmount);
} else {
sheltrToken.depositHousingFund(participant, split.shelterOpsAmount);
}
}
}contract SHELTRStablecoin is ERC20, AccessControl, ReentrancyGuard {
IERC20 public immutable USDT;
ICoinbaseStaking public immutable coinbaseStaking;
// Housing fund participant tracking
mapping(address => uint256) public participantHousingFunds;
uint256 public totalHousingFund;
uint256 public currentAPY = 500; // 5.00% in basis points
event HousingFundDeposit(address indexed participant, uint256 amount, uint256 timestamp);
function depositHousingFund(address participant, uint256 amount)
external onlyRole(MINTER_ROLE) nonReentrant {
// Transfer USDT from payment processor
USDT.transferFrom(msg.sender, address(this), amount);
// Mint SHELTR tokens 1:1 with USDT
_mint(address(this), amount);
// Track participant allocation
participantHousingFunds[participant] += amount;
totalHousingFund += amount;
// Stake in Coinbase for guaranteed yield
USDT.approve(address(coinbaseStaking), amount);
coinbaseStaking.stake(amount);
emit HousingFundDeposit(participant, amount, block.timestamp);
}
function getParticipantHousingBalance(address participant)
external view returns (uint256) {
// Calculate proportional share including Coinbase staking rewards
uint256 totalStaked = coinbaseStaking.getTotalStaked();
if (totalStaked == 0) return participantHousingFunds[participant];
uint256 totalValue = totalStaked + coinbaseStaking.getAccruedRewards();
return (participantHousingFunds[participant] * totalValue) / totalHousingFund;
}
}