Rule506bFacet
Implements 506(b) specific compliance including:
No general solicitation
Maximum 35 non-accredited investors
Whitelist requirements
Sophisticated investor requirements for non-accredited
Specialized facet for Rule 506(b) private placements
Uses ComplianceFacet and ExemptionLimitFacet for shared functionality
Functions
initializeRule506b
Initialize Rule 506(b) specific settings
function initializeRule506b(uint256 maxNonAccredited, bool requireSophistication, uint256 exemptionLimit) external;
Parameters
maxNonAccredited
uint256
Maximum number of non-accredited investors (typically 35)
requireSophistication
bool
Whether to require sophistication for non-accredited investors
exemptionLimit
uint256
12-month rolling exemption limit (0 for unlimited)
setInvestorAccreditation
Set accreditation status for an investor
function setInvestorAccreditation(address investor, bool isAccredited) external;
Parameters
investor
address
The investor address
isAccredited
bool
Whether the investor is accredited
batchSetInvestorAccreditation
Batch set accreditation status for multiple investors
function batchSetInvestorAccreditation(address[] calldata investors, bool[] calldata accreditationStatus) external;
Parameters
investors
address[]
Array of investor addresses
accreditationStatus
bool[]
Array of accreditation statuses
validateRule506bInvestment
Validate investment for Rule 506(b) compliance
function validateRule506bInvestment(address investor, uint256 amount) external view returns (bool valid);
Parameters
investor
address
The investor address
amount
uint256
The investment amount
Returns
valid
bool
Whether the investment is valid under 506(b) rules
enforceRule506bCompliance
Enforce Rule 506(b) compliance and exemption limits
function enforceRule506bCompliance(address investor, uint256 amount) external view;
Parameters
investor
address
The investor address
amount
uint256
The investment amount
isAccreditedInvestor
Check if an investor is accredited
function isAccreditedInvestor(address investor) external view returns (bool isAccredited);
Parameters
investor
address
The investor address
Returns
isAccredited
bool
Whether the investor is accredited
getNonAccreditedInvestorCount
Get the current count of non-accredited investors
function getNonAccreditedInvestorCount() external view returns (uint256 count);
Returns
count
uint256
Number of non-accredited investors
getRule506bConfig
Get Rule 506(b) specific configuration
function getRule506bConfig()
external
view
returns (uint256 maxInvestors, uint256 currentNonAccredited, bool allowsSolicitation);
Returns
maxInvestors
uint256
Maximum number of non-accredited investors allowed
currentNonAccredited
uint256
Current number of non-accredited investors
allowsSolicitation
bool
Whether general solicitation is allowed (always false for 506(b))
setNonAccreditedInvestorLimit
Set investor limit for non-accredited investors
function setNonAccreditedInvestorLimit(uint256 newLimit) external;
Parameters
newLimit
uint256
New maximum number of non-accredited investors
getAccreditedInvestors
Get all accredited investors
function getAccreditedInvestors() external view returns (address[] memory accredited);
Returns
accredited
address[]
Array of addresses that are marked as accredited
getNonAccreditedInvestors
Get all non-accredited investors
function getNonAccreditedInvestors() external view returns (address[] memory nonAccredited);
Returns
nonAccredited
address[]
Array of addresses that are marked as non-accredited
_requireEntity
Internal function to check if caller is the entity
function _requireEntity(OfferingStorage.Layout storage s) internal view;
Events
InvestorAccreditationStatusSet
event InvestorAccreditationStatusSet(address indexed investor, bool isAccredited);
Rule506bOfferingConfigured
event Rule506bOfferingConfigured(uint256 maxNonAccredited, bool requireSophistication, uint256 exemptionLimit);
NonAccreditedInvestorAdded
event NonAccreditedInvestorAdded(address indexed investor);
Last updated
Was this helpful?