Charged Particles Contract
Charged Particles Contract. The primary contract for interfacing with the Charged Particles protocol.
Get Contract Info
Get Info about the Contract, its Settings, and its State.
getStateAddress
Gets the address of the Charged-State contract, which can be used for setting and retrieving additional information about a Particle (NFT) contract. E.g. time locks on particle mass (principal) or charge (interest).
Parameter/Return Value | Description |
settingsAddress | address of Charged State contract |
getSettingsAddress
Gets the address of the ChargedSettings contract, which can be used for setting and retrieving the settings of the ChargedParticles contract. E.g. Creator annuity.
When Custom Contracts are registered, only the "owner" or operator of the Contract is allowed to register them and define custom rules for how their tokens are "Charged". Otherwise, any token can be "Charged" according to the default rules of Charged Particles.
Parameter/Return Value | Description |
settingsAddress | address of Charged Settings contract |
onERC721Received
Part of the ERC721 standard. Required for any contract that receives ERC-721 tokens. See Open Zeppelin for more detail.
Get Particle balances
Get Particle Mass (principal) and Charge (interest) balances.
baseParticleMass
Gets the amount of Mass (principal) for a Particle for a single asset token. E.g. Returns the amount of USDC deposited into a Particle less earned interest.
Parameter/Return Value | Description |
contractAddress | Charged Particles contract address |
tokenId | id of Particle |
walletManagerId | id of Wallet Manager for yield source |
assetToken | address of token to get mass of e.g. DAI |
return | Amount of underlying Assets held within the Token |
currentParticleCharge
Gets the amount of Interest that the Particle has generated representing the Charge (interest) of the Particle.
Parameter/Return Value | Description |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | id of Wallet Manager for yield source (e.g. Aave) |
assetToken | address of asset token to check (e.g. DAI) |
return | The amount of interest the Token has generated (in asset token) |
currentParticleKinetics
Gets the amount of LP Tokens that the Particle has generated representing the Kinetics of the Particle.
Kinetics represent additional tokens that a lending protocol provides users in addition to the interest-bearing asset. For example, when a user deposits into Compound, they receive a cToken representing their interest-bearing position, as well as COMP tokens. COMP tokens are the Kinetics in this example.
Parameter/Return Value | Description |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | id of BasketManager to check the token balance of |
return | total amount of LP tokens that have been generated |
currentParticleCovalentBonds
Gets the total amount of ERC721 Tokens that the Particle holds.
Parameter/Return Value | Description |
contractAddress | contract address for Particle |
tokenId | id of Particle |
basektManagerId | id of BasketManager to check the token balance of |
return | total amount of ERC721 tokens held within particle |
Charge & Discharge Particles
Deposit Principal and Withdraw Interest from Particles.
energizeParticle
Fund Particle with Asset Token. Must be called by the account providing the Asset. Account must Approve Charged Particles contract as Operator of Asset.
Parameter/Return Value | Description |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | id of Wallet Manager for token |
assetToken | address of asset-token being used (e.g. DAI) |
referrer | referrer *used for an internal feature that has yet to be implemented -- ignore |
assetAmount | amount of asset token to energize token with |
yieldTokensAmount | amount of yield-bearing tokens added to escrow for the token |
dischargeParticle
Allows the owner or operator of the Particle to collect or transfer the Charge (interest) generated from the token without removing the Mass (principal) of the underlying asset held within the token.
Parameter/Return Value | Description |
receiver | address to receive discharged asset |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | wallet manager of assets to discharge from token (e.g. Aave) |
assetToken | address of asset-token being discharged (e.g. DAI) |
creatorAmount | amount of asset token to discharge for creator |
receiverAmount | amount of asset token to discharge for receiver |
dischargeParticleAmount
Allows the owner or operator of the Particle to collect or transfer a specific amount of the interest generated from the token without removing the Mass (principal) of the underlying asset held within the token.
Parameter/Return Value | Description |
receiver | address to receive discharged asset |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | wallet manager of assets to discharge from token (e.g. Aave) |
assetToken | address of asset-token being discharged (e.g. DAI) |
assetAmount | specific amount of asset token to discharge |
creatorAmount | amount of asset token to discharge for creator |
receiverAmount | amount of asset token to discharge for receiver |
dischargeParticleForCreator
Allows the Creator of the Particle to collect or transfer a their portion of the Charge (interest) generated from the token without removing the underlying Mass (principal) held within the token.
Parameter/Return Value | Description |
receiver | address to receive discharged asset |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | wallet manager of assets to discharge from token (e.g. Aave) |
assetToken | address of asset-token being discharged (e.g. DAI) |
assetAmount | specific amount of asset token to discharge |
receiverAmount | amount of asset token to discharge for receiver |
Release Particles
Withdraw principal from particles.
releaseParticle
Releases the Full amount of Mass + Charge (principal + interest) held within the Particle by LP of the Assets.
Parameter/Return Value | Description |
receiver | address to receive released asset tokens |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | wallet manager of assets to discharge from token (e.g. Aave) |
assetToken | address of asset-token being released (e.g. DAI) |
creatorAmount | amount of asset token released to creator |
receiverAmount | amount of asset token to released to receiver (includes principalAmount) |
releaseParticleAmount
Releases a partial amount of Mass + Charge (principal + interest) held within the Particle by LP of the Assets.
Parameter/Return Value | Description |
receiver | address to receive released asset tokens |
contractAddress | contract address for Particle |
tokenId | id of Particle |
walletManagerId | wallet manager of assets to discharge from token (e.g. Aave) |
assetToken | address of asset-token being released (e.g. DAI) |
assetAmount | the specific amount of asset token to release from the Particle |
creatorAmount | amount of asset token released to creator |
receiverAmount | amount of asset token to released to receiver (includes principalAmount) |
Covalent Bonding
Deposit & Withdraw ERC721s from a Particle.
covalentBond
Deposit other NFT Assets into a Particle. Must be called by the account providing the Asset. Account must Approve THIS contract as Operator of Asset.
Parameter/Return Value | Description |
contractAddress | contract address for Particle |
tokenId | id of Particle |
basketManagerId | the basket to deposit the NFT into |
nftTokenAddress | the address of the NFT token being deposited |
nftTokenId | the id of the NFT token being deposited |
return | true or false depending on success of transaction |
breakCovalentBond
Release NFT Assets from the Particle.
Parameter/Return Value | Description |
receiver | the address to receive the released NFTs |
contractAddress | contract address for Particle |
tokenId | id of Particle |
basketManagerId | the basket to deposit the NFT into |
nftTokenAddress | the address of the NFT token being released |
nftTokenId | the id of the NFT token being released |
return | true or false depending on success of transaction |
Other
Events
UniverseSet
ChargedStateSet
ChargedSettingsSet
LeptonTokenSet
Wallet / Basket Manager IDs:
Manager | Manager ID |
Generic ERC20s (non-interest-earning) | 'generic' |
ERC721s & ERC1155s | 'generic' |
Aave ERC20s (interest-earning) | 'aave' |
Last updated