mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
A July commit removed eight papers on the premise "no license — DEX/non-custodial only". That premise is wrong: Lux operates an ATS, a broker-dealer, a transfer agent and a bank, and this material is resold at lux.financial. The merge that brought main in preserved the removal because the commit stated a reason, which is how a stale reason outlives the fact it rested on. Back, at the versions main carried — main never received the removal, so its copies are the later ones: the ATS architecture, the security-token standard, smart order routing, institutional custody, MPC custody, post-quantum securities, the SSB partnership and the CoinBridge brief. 83 files. Co-authored-by: Hanzo Dev <[email protected]>
92 lines
3.2 KiB
TeX
92 lines
3.2 KiB
TeX
\section{Partition Management}
|
|
\label{sec:partitions}
|
|
|
|
\subsection{Partition Types}
|
|
|
|
The Lux standard extends ERC-1400 partitions to support complex capital structures:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{Partition types and use cases.}
|
|
\label{tab:partitions}
|
|
\begin{tabular}{lp{7.5cm}}
|
|
\toprule
|
|
\textbf{Partition} & \textbf{Use Case} \\
|
|
\midrule
|
|
\texttt{COMMON} & Common shares with standard voting and dividend rights \\
|
|
\texttt{PREFERRED\_A} & Series A preferred with liquidation preference and anti-dilution \\
|
|
\texttt{PREFERRED\_B} & Series B preferred with distinct terms \\
|
|
\texttt{LOCKUP\_6M} & Shares subject to 6-month lockup from issuance \\
|
|
\texttt{LOCKUP\_12M} & Shares subject to 12-month lockup (Rule 144) \\
|
|
\texttt{VESTING} & Shares subject to vesting schedule (employee grants) \\
|
|
\texttt{RESTRICTED} & Shares subject to regulatory hold \\
|
|
\texttt{CONVERTIBLE} & Convertible instruments (notes, SAFEs) pending conversion \\
|
|
\texttt{TREASURY} & Issuer treasury shares (not outstanding, no voting rights) \\
|
|
\texttt{ESOP} & Employee stock option pool allocation \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\subsection{Partition Operations}
|
|
|
|
\begin{lstlisting}[language=Solidity,caption={Partition management operations.}]
|
|
contract SecurityToken is ISecurityToken {
|
|
mapping(bytes32 => mapping(address => uint256)) internal partitionBalances;
|
|
mapping(bytes32 => PartitionConfig) internal partitionConfigs;
|
|
|
|
struct PartitionConfig {
|
|
bool transferable;
|
|
uint256 lockupExpiry; // 0 = no lockup
|
|
address complianceOracle; // partition-specific oracle
|
|
uint256 maxHolders; // 0 = unlimited
|
|
VestingSchedule vesting; // empty = no vesting
|
|
bool convertible;
|
|
bytes32 convertTarget; // target partition for conversion
|
|
uint256 convertRatio; // conversion ratio (basis points)
|
|
}
|
|
|
|
struct VestingSchedule {
|
|
uint256 cliffDuration;
|
|
uint256 totalDuration;
|
|
uint256 startTime;
|
|
}
|
|
|
|
function transferByPartition(
|
|
bytes32 partition, address from, address to,
|
|
uint256 value, bytes calldata data
|
|
) external override returns (bytes32) {
|
|
PartitionConfig memory config = partitionConfigs[partition];
|
|
|
|
// Lockup check
|
|
require(
|
|
config.lockupExpiry == 0 || block.timestamp >= config.lockupExpiry,
|
|
"partition locked"
|
|
);
|
|
|
|
// Vesting check
|
|
if (config.vesting.totalDuration > 0) {
|
|
uint256 vested = vestedAmount(partition, from);
|
|
require(value <= vested - partitionTransferred[partition][from],
|
|
"exceeds vested amount");
|
|
}
|
|
|
|
// Compliance check via partition-specific or global oracle
|
|
address oracle = config.complianceOracle != address(0)
|
|
? config.complianceOracle
|
|
: defaultComplianceOracle;
|
|
|
|
(bytes1 status,,) = ITransferRestriction(oracle)
|
|
.detectTransferRestriction(from, to, value);
|
|
require(status == 0x00, "transfer restricted");
|
|
|
|
// Execute transfer
|
|
partitionBalances[partition][from] -= value;
|
|
partitionBalances[partition][to] += value;
|
|
|
|
emit TransferByPartition(partition, from, to, value, data);
|
|
return partition;
|
|
}
|
|
}
|
|
\end{lstlisting}
|
|
|