{"type": "project", "title": "Carbon DAO", "logoImg": "bafkreidxhjq7bj7aeh4dw7anq3i7fhgyita5e2kgzrrj36hzadt2wcsp6i", "website": "https://carbon-dao.com", "bannerImg": "bafybeidmitno76ts5cf2ma75kxivmbt262ox7vq5lmjajueg3frcugz6ei", "createdAt": 1673612327244, "credentials": {"twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..NSUh-z_WhY1WOEgygof-IpV52iPLdYsNErVqib0AKk9EQg6KD5xDdXbx_kilzwvUjNLSIRBxGDxj0ZnMSaZEAw", "type": "Ed25519Signature2018", "created": "2023-01-13T12:16:10.901Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2023-01-13T12:16:10.901Z", "expirationDate": "2023-04-13T12:16:10.901Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x035A1F3419DD223293e5411133d9C786f5885425", "hash": "v0.0.0:R0/TOx8wPjYYUa4q9NfAiuFat/tp3Qp0VbS32B24qyE=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#CarbonDAO"}}}, "description": "Introduction\n\n\nBorn from Carbon DAO, The Aetlas Protocol is a ReFi protocol that is designed to connect the ReFi ecosystem and unlock new inflows of green capital. We designed a liquidity and retirement mechanism that offer the best of both a liquidity pool and an NFT marketplace. This offers the ReFi ecosystem a liquid marketplace that retains the unique values offered by each individual carbon project.\n\n\nWho\u2019s this for and what are their problems?\n\n\nThere are five types of users in the Aetlas Protocol:\n\n\ud83c\udf31 Project Developers: \nA user who manages a carbon sequestration or emission reduction project issuing carbon credits on a supported on-chain carbon offset registry. Their main objective is to sell the carbon assets they created. Their considerations are a balance between time to sell and price per carbon metric tonne. With greater liquidity in a carbon market, comes a significant reduction in time to market. However, liquidity focused markets often mean the project developer sacrifices any additional value of their individual project.\n\n\n\ud83e\udd1d\ud83c\udffd Carbon Traders: \nA users that buy and sell carbon assets for profit. They often look for opportune assets to buy and supply willing buyers who don\u2019t have the time to search themselves. The problem they face with existing pools is the additional fee they incur (up to 10%) for withdrawing carbon assets from liquidity pools. This reduces the number viability arbitrage trades which creates a less efficient market and creates barriers for new inflows of green capital.\n\n\n\u2747\ufe0f Liquidity Providers: \nA user looking to capitalise on 15x expected increase in demand for carbon in the next 7 years. They are users who hold carbon assets and who provides liquidity to the ReFi ecosystem. The problem they face is that carbon is a depreciating asset. An 2005 carbon credit is worth less than an identical 2020 carbon credit.\n\n\n\ud83e\uddfa Offset Funders: \nThis is a protocol or community who funds offsetting of the carbon emissions their users generate. The barrier for funders is the technical requirements, sustainability expertise and co-ordination to design an effective on-chain carbon portfolio.\n\n\n\ud83e\uddcdOffset Curators: \nThis can be an individual user or a sustainability focused DAO. They often have the time and sustainability expertise but lack the funds to execute their vision for a greener tomorrow.\n\nAetlas Protocol solves these dilemma by separating the retirement and carbon portfolio curation process from the transaction of funds. We have designed a series of deployable autonomous liquidity pools interconnected with a carbon NFT marketplace and powered by a carbon offset funding mechanism.\n\n\n\ud83c\udf31 Project Developers will have access to instant liquidity for their carbon assets but will be able to monetise their additional value post-sale. This is achieved by a Dutch auction held by the liquidity pool for all newly deposited carbon assets.\n\n\n\ud83e\udd1d\ud83c\udffd Carbon Traders benefit from zero % fees for withdrawing carbon from liquidity pools.\n\n\n\u2747\ufe0f Liquidity Providers have minimised exposure to the depreciation of individual carbon assets with a liquidity pool acting as a carbon index that actually generates a yield from the retirement of sold assets. The healthy connection between the NFT marketplace and liquidity pools also helps prevent stagnation older assets.\n\n\n\ud83e\uddfa Offset Funders are unlocked with an incredibly simple funding mechanism. It can be deployed as simply as \u201cSend X USDC to this address + a list of wallets who will curate your portfolio\u201d or the funding process can be integrated at a transactional level within the smart contracts.\n\n\n\ud83e\uddcd Offset Curators are empowered by the funding mechanism to design and implement any variety of impact investment strategy.\n\n\n\nThe Technicals:\n\n\nFunctions - Instance of the Tokenized Vault Contract\n\n\nDeposit Function: This function allows traders to deposit TCO2e tokens into the tokenized vault contract. The function first checks that the receiver's token is held by the smart contract, and that the sender has approved the contract to transfer their tokens. It then checks that the sender's tokens meets the pre-determined selection criteria using a function called isValidTCO2e. Upon depositing a TCO2e tokens, the function then calculates, mints and transfers the appropriate amount of xCLP to the sender using a function called calculateXCLP and the mintXCLP function. xCLP represents a percentage ownership of the underlying assets held in the smart contract. If the TCO2e token does not meet the criteria, the function will reject the tokens and return it to the user.\n\n\nWithdraw Function: This function allows users to withdraw TCO2e tokens from the contract by burning a corresponding amount of xCLP in the users wallet. The function should check that the user has sufficient xCLP and that the requested token is held by the contract. If these conditions are met, the function should burn the xCLP and transfer the requested TCO2e tokens to the user.\nRetrieveTCO2e Function: This function allows a user to retrieve an array of all the TCO2e tokens held by the tokenized vault contract.\n\n\nSwap Function: This function allows a user to swap a TCO2e tokens that is not held by the tokenized vault contract but meets the tokenized vault's pre-determined selection criteria with a TCO2e tokens that is already deposited and held by the tokenized vault contract. The function takes three arguments: the address of the sender (the trader who is sending their TCO2e tokens), the ID of the sender's TCO2e tokens, and the ID of the receiver's TCO2e tokens (the TCO2e tokens already deposited in the tokenized vault contract). The function first checks that the receiver's token is held by the smart contract, and that the sender has approved the contract to transfer their tokens. It then checks that the sender's tokens meets the pre-determined selection criteria using a function called isValidTCO2e. If these checks pass, the sender's TCO2e token is transferred to the smart contract, and the receiver's token is transferred to the sender.\n\n\nisValidTCO2e Function: This function checks that a TCO2e token meets the pre-determined selection criteria for the tokenized vault. It takes a single argument: the ID of the TCO2e tokens. The function returns a boolean value indicating whether the token meets the criteria or not.\ncalculateXCLP Function: This function calculates the appropriate amount of xCLP to be minted or burnt when a TCO2e token is deposited or exchanged in the tokenized vault. It takes a two argument: the ID\u2019s of the TCO2e tokens and the quantity of each. The function returns a uint256 value representing the amount of xCLP to be minted or burnt.\n\n\nmintXCLP Function: This an internal function mints xCLP for a given wallet address. It takes two arguments: the address of the wallet and the amount of xCLP to be minted. The function updates the total supply of xCLP and the balance for the specified wallet address. The amount of xCLP minted is must be restricted to a 1:1 ratio with the deposited number of TCO2e tokens.\n\n\nFunctions - Instance of the Treasury Pool Contracts:\nFundOffsetUSDC Function: This function allows users to deposit USDC into the contract. Upon deposit, the function mints the ERC20 token OFT (Offset Funding Token) with a 1:1 ratio to USDC deposited and proportionally distributes it to a list of wallet addresses provided by the user. The USDC is then added to the contract's funds, dedicated to purchasing TCO2e tokens from any instance of the Tokenised Vault Contract.\n\n\nFundOffsetERC20 Function: This function allows users to deposit any ERC20 with a corresponding Uniswap USDC pair ****into the contract. Upon deposit, the function swaps the ERC20 token for USDC using the correct Uniswap pair. After USDC is depoisted into the function mints the ERC20 token OFT (Offset Funding Token) with a 1:1 ratio to USDC deposited and proportionally distributes it to a list of wallet addresses provided by the user. The USDC is then added to the contract's funds, dedicated to purchasing TCO2e tokens from any instance of the Tokenised Vault Contract.\nRetire Function: This function allows users who received OFT to retire specific TCO2e tokens held by any instance of the Tokenised Vault Contract. The calculateXCLP function in the relevant instances of the Tokenised Vault contract holding the specified TCO2e tokens is called to retrieve an array including each xCLP and the corresponding amount required for the transaction.The calculateUSDC function is called for the array of xCLP required returning value for the requiredUSDC. The OFT equal to requiredUSDC is transferred from the user to the Treasury Pool Contract. The swap function on the UniSwap USDC/xCLP pool contract is called to exchange the USDC for a corresponding amounts of each xCLP. The function should then call the **Withdraw** function of the relevant instances of the Tokenized Vault Contract to exchange the xCLP for a specific TCO2e token held by the contract. After the exchange is complete, the function should burn the OFT and route the TCO2e tokens through the Retirement aggregator contract.\n\n\ncalculateUSDC Function: This function calculates the appropriate amount of USDC required to swap for a list of xCLP variants.It takes a two argument: the ID\u2019s of the xCLP tokens and the quantity of each.The function calls the quoteExactOutputSingle function in the Uniswap USDC/xCLP pool returns a uint256 value representing the amount of USDC required for the swap.RetrieveTotalFunding Function: This function allows a user to retrieve a uint256 value for the total amount of USDC deposited.\n\n\nOther functions:\n\nRetrieveSourceOfFunding Function: This function allows a user to retrieve an array of all the total amount of USDC deposited by each corresponding address (AKA funder).\n\n\nRetrieveFunderContribution Function: This function allows a user to retrieve a value for the total amount of USDC deposited by a specific address (AKA funder).\n\n\nRetrieveTotalRetirement Function: This function allows a user to retrieve a uint256 value for the total amount of TCO2e tokens retired.\n\n\nRetrieveCurators Function: This function allows a user to retrieve an array of all the total amount of TCO2e tokens retired by each corresponding address (AKA curators).\n\n\nRetrieveFunderContribution Function: This function allows a user to retrieve a value for the total amount of TCO2e tokens retired by a specific address (AKA curators).\n", "logoImgData": {}, "bannerImgData": {}, "projectTwitter": "carbondao"}
Carbon DAO
Introduction


Born from Carbon DAO, The Aetlas Protocol is a ReFi protocol that is designed to connect the ReFi ecosystem and unlock new inflows of green capital. We designed a liquidity and retirement mechanism that offer the best of both a liquidity pool and an NFT marketplace. This offers the ReFi ecosystem a liquid marketplace that retains the unique values offered by each individual carbon project.


Who’s this for and what are their problems?


There are five types of users in the Aetlas Protocol:

🌱 Project Developers: 
A user who manages a carbon sequestration or emission reduction project issuing carbon credits on a supported on-chain carbon offset registry. Their main objective is to sell the carbon assets they created. Their considerations are a balance between time to sell and price per carbon metric tonne. With greater liquidity in a carbon market, comes a significant reduction in time to market. However, liquidity focused markets often mean the project developer sacrifices any additional value of their individual project.


🤝🏽 Carbon Traders: 
A users that buy and sell carbon assets for profit. They often look for opportune assets to buy and supply willing buyers who don’t have the time to search themselves. The problem they face with existing pools is the additional fee they incur (up to 10%) for withdrawing carbon assets from liquidity pools. This reduces the number viability arbitrage trades which creates a less efficient market and creates barriers for new inflows of green capital.


❇️ Liquidity Providers: 
A user looking to capitalise on 15x expected increase in demand for carbon in the next 7 years. They are users who hold carbon assets and who provides liquidity to the ReFi ecosystem. The problem they face is that carbon is a depreciating asset. An 2005 carbon credit is worth less than an identical 2020 carbon credit.


🧺 Offset Funders: 
This is a protocol or community who funds offsetting of the carbon emissions their users generate. The barrier for funders is the technical requirements, sustainability expertise and co-ordination to design an effective on-chain carbon portfolio.


🧍Offset Curators: 
This can be an individual user or a sustainability focused DAO. They often have the time and sustainability expertise but lack the funds to execute their vision for a greener tomorrow.

Aetlas Protocol solves these dilemma by separating the retirement and carbon portfolio curation process from the transaction of funds. We have designed a series of deployable autonomous liquidity pools interconnected with a carbon NFT marketplace and powered by a carbon offset funding mechanism.


🌱 Project Developers will have access to instant liquidity for their carbon assets but will be able to monetise their additional value post-sale. This is achieved by a Dutch auction held by the liquidity pool for all newly deposited carbon assets.


🤝🏽 Carbon Traders benefit from zero % fees for withdrawing carbon from liquidity pools.


❇️ Liquidity Providers have minimised exposure to the depreciation of individual carbon assets with a liquidity pool acting as a carbon index that actually generates a yield from the retirement of sold assets. The healthy connection between the NFT marketplace and liquidity pools also helps prevent stagnation older assets.


🧺 Offset Funders are unlocked with an incredibly simple funding mechanism. It can be deployed as simply as “Send X USDC to this address + a list of wallets who will curate your portfolio” or the funding process can be integrated at a transactional level within the smart contracts.


🧍 Offset Curators are empowered by the funding mechanism to design and implement any variety of impact investment strategy.



The Technicals:


Functions - Instance of the Tokenized Vault Contract


Deposit Function: This function allows traders to deposit TCO2e tokens into the tokenized vault contract. The function first checks that the receiver's token is held by the smart contract, and that the sender has approved the contract to transfer their tokens. It then checks that the sender's tokens meets the pre-determined selection criteria using a function called isValidTCO2e. Upon depositing a TCO2e tokens, the function then calculates, mints and transfers the appropriate amount of xCLP to the sender using a function called calculateXCLP and the mintXCLP function. xCLP represents a percentage ownership of the underlying assets held in the smart contract. If the TCO2e token does not meet the criteria, the function will reject the tokens and return it to the user.


Withdraw Function: This function allows users to withdraw TCO2e tokens from the contract by burning a corresponding amount of xCLP in the users wallet. The function should check that the user has sufficient xCLP and that the requested token is held by the contract. If these conditions are met, the function should burn the xCLP and transfer the requested TCO2e tokens to the user.
RetrieveTCO2e Function: This function allows a user to retrieve an array of all the TCO2e tokens held by the tokenized vault contract.


Swap Function: This function allows a user to swap a TCO2e tokens that is not held by the tokenized vault contract but meets the tokenized vault's pre-determined selection criteria with a TCO2e tokens that is already deposited and held by the tokenized vault contract. The function takes three arguments: the address of the sender (the trader who is sending their TCO2e tokens), the ID of the sender's TCO2e tokens, and the ID of the receiver's TCO2e tokens (the TCO2e tokens already deposited in the tokenized vault contract). The function first checks that the receiver's token is held by the smart contract, and that the sender has approved the contract to transfer their tokens. It then checks that the sender's tokens meets the pre-determined selection criteria using a function called isValidTCO2e. If these checks pass, the sender's TCO2e token is transferred to the smart contract, and the receiver's token is transferred to the sender.


isValidTCO2e Function: This function checks that a TCO2e token meets the pre-determined selection criteria for the tokenized vault. It takes a single argument: the ID of the TCO2e tokens. The function returns a boolean value indicating whether the token meets the criteria or not.
calculateXCLP Function: This function calculates the appropriate amount of xCLP to be minted or burnt when a TCO2e token is deposited or exchanged in the tokenized vault. It takes a two argument: the ID’s of the TCO2e tokens and the quantity of each. The function returns a uint256 value representing the amount of xCLP to be minted or burnt.


mintXCLP Function: This an internal function mints xCLP for a given wallet address. It takes two arguments: the address of the wallet and the amount of xCLP to be minted. The function updates the total supply of xCLP and the balance for the specified wallet address. The amount of xCLP minted is must be restricted to a 1:1 ratio with the deposited number of TCO2e tokens.


Functions - Instance of the Treasury Pool Contracts:
FundOffsetUSDC Function: This function allows users to deposit USDC into the contract. Upon deposit, the function mints the ERC20 token OFT (Offset Funding Token) with a 1:1 ratio to USDC deposited and proportionally distributes it to a list of wallet addresses provided by the user. The USDC is then added to the contract's funds, dedicated to purchasing TCO2e tokens from any instance of the Tokenised Vault Contract.


FundOffsetERC20 Function: This function allows users to deposit any ERC20 with a corresponding Uniswap USDC pair ****into the contract. Upon deposit, the function swaps the ERC20 token for USDC using the correct Uniswap pair. After USDC is depoisted into the function mints the ERC20 token OFT (Offset Funding Token) with a 1:1 ratio to USDC deposited and proportionally distributes it to a list of wallet addresses provided by the user. The USDC is then added to the contract's funds, dedicated to purchasing TCO2e tokens from any instance of the Tokenised Vault Contract.
Retire Function: This function allows users who received OFT to retire specific TCO2e tokens held by any instance of the Tokenised Vault Contract. The calculateXCLP function in the relevant instances of the Tokenised Vault contract holding the specified TCO2e tokens is called to retrieve an array including each xCLP and the corresponding amount required for the transaction.The calculateUSDC function is called for the array of xCLP required returning value for the requiredUSDC. The OFT equal to requiredUSDC is transferred from the user to the Treasury Pool Contract. The swap function on the UniSwap USDC/xCLP pool contract is called to exchange the USDC for a corresponding amounts of each xCLP. The function should then call the **Withdraw** function of the relevant instances of the Tokenized Vault Contract to exchange the xCLP for a specific TCO2e token held by the contract. After the exchange is complete, the function should burn the OFT and route the TCO2e tokens through the Retirement aggregator contract.


calculateUSDC Function: This function calculates the appropriate amount of USDC required to swap for a list of xCLP variants.It takes a two argument: the ID’s of the xCLP tokens and the quantity of each.The function calls the quoteExactOutputSingle function in the Uniswap USDC/xCLP pool returns a uint256 value representing the amount of USDC required for the swap.RetrieveTotalFunding Function: This function allows a user to retrieve a uint256 value for the total amount of USDC deposited.


Other functions:

RetrieveSourceOfFunding Function: This function allows a user to retrieve an array of all the total amount of USDC deposited by each corresponding address (AKA funder).


RetrieveFunderContribution Function: This function allows a user to retrieve a value for the total amount of USDC deposited by a specific address (AKA funder).


RetrieveTotalRetirement Function: This function allows a user to retrieve a uint256 value for the total amount of TCO2e tokens retired.


RetrieveCurators Function: This function allows a user to retrieve an array of all the total amount of TCO2e tokens retired by each corresponding address (AKA curators).


RetrieveFunderContribution Function: This function allows a user to retrieve a value for the total amount of TCO2e tokens retired by a specific address (AKA curators).

Carbon DAO