Base contract for U.S. SEC federal exemptions. Derived contracts (Reg D, Reg CF, Reg A) define specific compliance rules. This contract stores minimal common data/logic.
State Variables
exemptionLimit
uint256 public exemptionLimit;
SECONDS_PER_MONTH
uint256 public constant SECONDS_PER_MONTH = 30 days;
MONTHS_TO_TRACK
uint256 public constant MONTHS_TO_TRACK = 12;
amountIssued
mapping(address => uint256) public amountIssued;
monthlyTotals
mapping(uint256 => uint256) public monthlyTotals;
Functions
_initializeFederalExemption
function _initializeFederalExemption(uint256 _exemptionLimit) internal;
getCurrentMonthId
Returns the current month ID based on block.timestamp
function getCurrentMonthId() public view returns (uint256);
getTotalIssuedInLast12Months
Returns the total amount issued in the last 12 months
function getTotalIssuedInLast12Months() public view returns (uint256);
issueUnderExemption
Core function to handle an issuance under this exemption. Derived contracts can override to add additional checks (accreditation, etc.).
function issueUnderExemption(address recipient, uint256 amount) internal virtual;
Parameters
Name
Type
Description
recipient
address
The address of the recipient.
amount
uint256
The amount in the currency of the exemption.
getMonthlyTotal
Returns the investment total for a specific month
function getMonthlyTotal(uint256 monthId) public view returns (uint256);
getLast12MonthsTotals
Returns an array of the last 12 months' totals
function getLast12MonthsTotals() external view returns (uint256[12] memory);