MAODistribution#
The contract is responsible for creating and managing DAOs and Rankify distributions.
Notice
This contract implements the IDistribution and CodeIndexer interfaces. It uses the Clones library for address cloning.
UserRankifySettings#
struct UserRankifySettings {
uint256 principalCost;
uint96 principalTimeConstant;
string metadata;
string rankTokenURI;
string rankTokenContractURI;
}
TokenArguments#
struct TokenArguments {
string tokenName;
string tokenSymbol;
}
DistributorArguments#
struct DistributorArguments {
struct MAODistribution.TokenArguments tokenSettings;
struct MAODistribution.UserRankifySettings rankifySettings;
}
constructor#
Initializes the contract with the provided parameters and performs necessary checks.
constructor(address trustedForwarder, address paymentToken, address beneficiary, bytes32 rankTokenCodeId, bytes32 RankifyDIistributionId, bytes32 accessManagerId, bytes32 governanceERC20BaseId, bytes32 distributionName, struct LibSemver.Version distributionVersion) public
Input | Type | Description |
---|---|---|
trustedForwarder |
address |
Address of the trusted forwarder for meta-transactions (WARNING: Not yet reviewed) |
paymentToken |
address |
Address of the token used for payments in the system |
beneficiary |
address |
Address that receives payments and fees |
rankTokenCodeId |
bytes32 |
Identifier for the rank token implementation in CodeIndex |
RankifyDIistributionId |
bytes32 |
Identifier for the Rankify distribution implementation |
accessManagerId |
bytes32 |
Identifier for the access manager implementation |
governanceERC20BaseId |
bytes32 |
Identifier for the governance token implementation |
distributionName |
bytes32 |
Name identifier for this distribution |
distributionVersion |
struct LibSemver.Version |
Semantic version information as LibSemver.Version struct |
Notice
Retrieves contract addresses from a contract index using the provided identifiers and initializes the distribution system.
instantiate#
Instantiates a new instance with the provided data.
function instantiate(bytes data) public returns (address[] instances, bytes32 distributionName, uint256 distributionVersion)
Input | Type | Description |
---|---|---|
data |
bytes |
The initialization data for the new instance, typeof DistributorArguments. |
Output | ||
instances |
address[] |
An array of addresses representing the new instances. |
distributionName |
bytes32 |
A bytes32 value representing the name of the distribution. |
distributionVersion |
uint256 |
A uint256 value representing the version of the distribution. |
Notice
instances
array contents: DAO, GovernanceToken, Gov Token AccessManager, Rankify Diamond, 8x Rankify Diamond facets, RankTokenAccessManager, RankToken
contractURI#
function contractURI() public pure virtual returns (string)
get#
Retrieves the current distribution sources.
function get() external view returns (address[] sources, bytes32, uint256)
Output | Type | Description |
---|---|---|
sources |
address[] |
An array of addresses that are used for instantiation. |
1 |
bytes32 |
|
2 |
uint256 |
distributionSchema#
Returns the schema of the distribution.
function distributionSchema(struct MAODistribution.DistributorArguments args) external pure returns (struct MAODistribution.DistributorArguments)
Output | Type | Description |
---|---|---|
0 |
struct MAODistribution.DistributorArguments |
DistributorArguments The schema of the distribution. |
Notice
This is only needed to ensure DistributorArguments
are provided in ABI, as it would be internal otherwise.