FederalExemption

Git Source

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

Events

ExemptionInitialized

event ExemptionInitialized(uint256 exemptionLimit);

ExemptionIssuance

event ExemptionIssuance(address indexed recipient, uint256 amount, uint256 monthId);

Last updated

Was this helpful?