IVaultAssetRegistryAdmin
Interface for the IP asset registry admin functions
Functions
registerIPAndFractionalize
Admin registers the IP and fractionalizes it, only when the vault is Closed
*Aria must deploy an SPG NFT before calling this function + grant MINTER_ROLE to the AriaIPRWAVault contract on the SPG NFT contract. The registration is made through REGISTRATION_WORKFLOWS.createCollection(...)
, see https://docs.story.foundation/developers/smart-contracts-guide/register-ip-asset#scenario-%232%3A-you-want-to-create-an-spg-nft-contract-to-do-minting-for-you There are different sorts of IP on Aria:
financialized IP: partial copyright and income streams
remixable IP: programmable assets Either two SPG NFT will be created to handle these differents cases OR an SPG NFT will be created per tokenised IP*
function registerIPAndFractionalize(
address spgNftContract,
WorkflowStructs.IPMetadata memory ipMetadata,
WorkflowStructs.LicenseTermsData[] memory licenseTermsData,
address fractionalTokenTemplate,
address fractionalTokenReceiver
) external returns (uint256 tokenId, address ipId, uint256[] memory licenseTermsIds, address fractionalToken);
Parameters
spgNftContract
address
The address of the SPG NFT contract The spgNFTContract used here has to have 0 mint fee and have MINTER_ROLE granted to the AriaIPRWAVault contract
ipMetadata
WorkflowStructs.IPMetadata
The metadata of the IP
licenseTermsData
WorkflowStructs.LicenseTermsData[]
The license terms data to be attached to the IP
fractionalTokenTemplate
address
The template of the fractional token
fractionalTokenReceiver
address
The receiver of the fractional token - usually staking contract, to collect royalties and distributed to stakers.
Returns
tokenId
uint256
The token ID of the IP
ipId
address
The IP ID
licenseTermsIds
uint256[]
The license terms IDs attached to the IP
fractionalToken
address
The address of the fractional token
updateFractionalTokenTotalSupply
Admin updates the total supply of the fractional token
function updateFractionalTokenTotalSupply(uint104 newTotalSupply) external;
Parameters
newTotalSupply
uint104
The new total supply of the fractional token - capped to uint104 to avoid overflow in _fundraiseCalculateClaim(...)
. A fractional token with 18 decimals can have a max supply of ~20T (trillion).
Events
FractionalTokenTotalSupplyUpdated
Emitted when the fractional token total supply is updated
event FractionalTokenTotalSupplyUpdated(uint256 previousTotalSupply, uint256 newTotalSupply);
Parameters
previousTotalSupply
uint256
The previous total supply of the fractional token
newTotalSupply
uint256
The new total supply of the fractional token
IPRegisteredAndFractionalized
Emitted when the fractional token is minted
event IPRegisteredAndFractionalized(
address indexed ipId,
address spgNftContract,
uint256 tokenId,
uint256[] licenseTermsIds,
address indexed fractionalToken,
address indexed fractionalTokenReceiver
);
Parameters
ipId
address
The address of the newly registered IP
spgNftContract
address
The address of the SPG NFT contract that was used to register the IP
tokenId
uint256
The token id in the SPG NFT contract that was used to register the IP
licenseTermsIds
uint256[]
The license terms IDs attached to the IP
fractionalToken
address
The address of the fractional token
fractionalTokenReceiver
address
The receiver of the fractional token - usually staking contract, to collect royalties and distributed to stakers.