High-level diagrams and descriptions of the protocol.
Every NFT that is energized with Charged Particles is given its own smart wallet.
When a person deposits assets into their NFT, they will first pick a supported Yield Source (Aave, Compound, yEarn, etc..), and then pick an Asset Type (DAI, USDT, USDC, etc) depending on what is supported by the chosen Yield Source. The person will then deposit the Asset (DAI) into the NFT through the Charged Particles interface and the contracts will send it directly to the NFT Smart Wallet. The Smart Wallet is then responsible for depositing the Asset Tokens into the Yield Source and receiving back Yield Tokens (e.g. cDAI), as well as any additional LP tokens (e.g COMP).
When withdrawing from the NFT Smart Wallet, the Yield Tokens are redeemed for the underlying Asset Tokens from the Yield Source. The Smart Wallet is responsible for handling both the Principal and Interest, as well as additional LP tokens earned.
Charged Particles has no access to the Assets, Yield or LP token rewards of a person's NFTs.
There is 1 Wallet / Basket Manager for each type of wallet / basket for the protocol (Aave, Other ERC20s, NFTs). Each Manager has many wallets / baskets that it manages.
Manager -> Wallets Relationship
The image below is how the contracts are structured in V1 of the protocol. In V2, there is one ChargedManagers contract that holds the logic for all 3 managers shown below. V1 and V2 function essentially the same in terms of how wallet managers and smart wallets work, the contract names are just slightly different.
High-level flow of how contracts interact when a user Energizes for each type of asset.
Each NFT with Charged Particles capabilities has an associated Smart Basket that can hold and serve as operator for standard ERC-721 and ERC-1155 tokens that are enabled on the Protocol. Visit a Particle's Energize page on app.charged.fi to energize your NFTs with other NFTs today! Nesting NFTs does not require whitelisting. See Whitelisting section for more detail.
Royalties on resale of Protons are set by the creator at the contract level — as such, they are honored at the contract level. For example, you could buy/sell a Proton NFT through Etherscan, and the royalties would be respected. This contrasts with many other NFT marketplaces.
At the contract level, royalties can be set up to 80% of sale price. For example, 20% to creator, 80% to current owner. The Dapp UI may not always display this entire range, however. The recipient address and the percentage for royalties can only be modified by the NFT creator if they are also the NFT owner.
Flow of royalties on-chain. This applies to Charged Particles NFTs (Protons).
In addition to royalties, Particles also accrue interest (annuities) when interest-bearing assets are Energized inside them.
At the contract level, annuities can be set to direct up to 100% of interest to a designated address. For example, 20% to charity, 80% to current owner. The Dapp UI may not always display this entire range, however. The recipient address and the percentage for annuities can only be modified by the NFT creator if they are also the NFT owner.
Two financial flows for Particles. Firstly, continuous flows of interest; secondly, royalties on sales.
Minting an NFT on Charged Particles creates a Proton NFT. All Protons are whitelisted by the Charged Particles protocol by default and have access to all of the protocol's functionality. Charged Particles functionality can also be applied to other standard ERC721 or ERC1155 NFTs, but those contracts must be whitelisted first.