Rule506cFacet

Git Source

Implements 506(c) specific compliance including:

  • General solicitation allowed

  • ALL investors must be accredited

  • No limit on number of investors

  • Verification of accreditation required

Specialized facet for Rule 506(c) private placements

Uses ComplianceFacet and ExemptionLimitFacet for shared functionality

Functions

initializeRule506c

Initialize Rule 506(c) specific settings

function initializeRule506c(bool requiresVerification, uint256 exemptionLimit) external;

Parameters

Name
Type
Description

requiresVerification

bool

Whether third-party verification of accreditation is required

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

Name
Type
Description

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

Name
Type
Description

investors

address[]

Array of investor addresses

accreditationStatus

bool[]

Array of accreditation statuses

validateRule506cInvestment

Validate investment for Rule 506(c) compliance

function validateRule506cInvestment(address investor, uint256 amount) external view returns (bool valid);

Parameters

Name
Type
Description

investor

address

The investor address

amount

uint256

The investment amount

Returns

Name
Type
Description

valid

bool

Whether the investment is valid under 506(c) rules

enforceRule506cCompliance

Enforce Rule 506(c) compliance and exemption limits

function enforceRule506cCompliance(address investor, uint256 amount) external view;

Parameters

Name
Type
Description

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

Name
Type
Description

investor

address

The investor address

Returns

Name
Type
Description

isAccredited

bool

Whether the investor is accredited

getRule506cConfig

Get Rule 506(c) specific configuration

function getRule506cConfig()
    external
    view
    returns (bool allowsSolicitation, bool requiresAccreditation, bool hasInvestorLimit);

Returns

Name
Type
Description

allowsSolicitation

bool

Whether general solicitation is allowed (always true for 506(c))

requiresAccreditation

bool

Whether all investors must be accredited (always true for 506(c))

hasInvestorLimit

bool

Whether there's a limit on number of investors (always false for 506(c))

getAccreditedInvestors

Get all accredited investors

function getAccreditedInvestors() external view returns (address[] memory accredited);

Returns

Name
Type
Description

accredited

address[]

Array of addresses that are marked as accredited

getAccreditedInvestorCount

Get count of accredited investors

function getAccreditedInvestorCount() external view returns (uint256 count);

Returns

Name
Type
Description

count

uint256

Number of accredited investors

verifyAccreditationStatus

Verify accreditation status using ComplianceFacet

function verifyAccreditationStatus(address investor) external view returns (bool verified);

Parameters

Name
Type
Description

investor

address

The investor address

Returns

Name
Type
Description

verified

bool

Whether accreditation is verified via attestation

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

Rule506cOfferingConfigured

event Rule506cOfferingConfigured(bool requiresVerification, uint256 exemptionLimit);

AccreditationVerificationRequired

event AccreditationVerificationRequired(address indexed investor);

Last updated

Was this helpful?