mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Restructured from flat .tex/.pdf files into per-paper subdirectories. Added Antje Worring as co-author on all papers. Synced PDFs to pdfs/ for download site.
43 lines
1.6 KiB
TeX
43 lines
1.6 KiB
TeX
\section{Document Management}
|
|
\label{sec:documents}
|
|
|
|
Securities require extensive documentation: prospectuses, offering circulars, subscription agreements, financial statements, and regulatory filings. The Lux standard stores document references on-chain with content hashes for integrity verification:
|
|
|
|
\begin{lstlisting}[language=Solidity,caption={Document management.}]
|
|
contract SecurityToken is ISecurityToken {
|
|
struct Document {
|
|
string uri; // IPFS or HTTPS URI
|
|
bytes32 hash; // SHA-256 of document content
|
|
uint256 timestamp;
|
|
address updatedBy; // must be MPC controller
|
|
}
|
|
|
|
mapping(bytes32 => Document) internal documents;
|
|
bytes32[] internal documentNames;
|
|
|
|
function setDocument(
|
|
bytes32 name, string calldata uri, bytes32 hash
|
|
) external override onlyController {
|
|
documents[name] = Document(uri, hash, block.timestamp, msg.sender);
|
|
if (!documentExists[name]) {
|
|
documentNames.push(name);
|
|
documentExists[name] = true;
|
|
}
|
|
emit DocumentUpdated(name, uri, hash);
|
|
}
|
|
}
|
|
\end{lstlisting}
|
|
|
|
Standard document names include:
|
|
|
|
\begin{itemize}[nosep]
|
|
\item \texttt{PROSPECTUS}: The offering prospectus or offering circular.
|
|
\item \texttt{SUBSCRIPTION}: The subscription agreement template.
|
|
\item \texttt{PPM}: Private placement memorandum.
|
|
\item \texttt{FINANCIALS}: Most recent audited financial statements.
|
|
\item \texttt{LEGAL\_OPINION}: Legal opinion on token characterization.
|
|
\item \texttt{TAX\_OPINION}: Tax opinion on token treatment.
|
|
\item \texttt{TRANSFER\_RESTRICTIONS}: Summary of applicable transfer restrictions.
|
|
\end{itemize}
|
|
|