Tiramisu is a safe, multi-layered, decentralized all-in-one platform for savings and payments.
In May 2021, El Salvador became the first country in the world to announce the adoption of Bitcoin as legal tender. Small countries like El Salvador usually have low bank adoption rates, making communities heavily cash-based and with no access to interest earning. From this, it could also be concluded that the level of financial literacy in these communities is low. While the adoption of Bitcoin (and other crypto currencies) is definitely good news, the inherent risk of crypto operations in 2021 should render those assets unusable in real life financial activities, especially if a large portion of the population does not even have experience banking. We think there is a need for a safe, decentralized all-in-one platform that can be used by anyone regardless of their financial and technical knowledge. This is what Tiramisu aims to be: a platform that provides safe and strong financial tools, accessible by users from all levels. Proposed Solution -- Tiramisu is a platform that offers a whole ecosystem of financial services, from money management and payments to diving deep into how your money generates interests and being able to modify and improve their yield. This is implemented as a multi-layer system (presented in image 1), with each layer representing more features and higher difficulty. Following is a description of each layer and its capabilities. ### Layer 1: Money Account Tiramisu's entry point for all users is a wallet, similar to a fiat savings account, accessible through a mobile application or a website. Users can view the amount of money they have in their own local currency, or whatever currency they prefer. The UI will be extremely simple for ease of use. ### Layer 2: Payments Having a crypto wallet is not useful if there's no way of using it. Tiramisu proposes a payment flow that any merchant can adhere to, anywhere in the world, and through any medium, called TPS (for Tiramisu Payment Standard). The standard uses IPFS to confirm consensus and then settles on-chain. This model, combined with how Tiramisu works, enables users to pay for something anywhere in the world, in any currency. Tiramisu will take care of normalizing the transaction to use the right currency for processing, but will display the localized currencies for each of the parties. This can also be used for P2P payments, where any user can generate a TPS receipt and settle on-chain using the same payment flow. Finally, the Tiramisu app and website will allow users to track all their receipts in one place, enabling them to track their expenses and get in better financial shape. These receipts will be always available, thanks to IPFS. ### Layer 3: Vaults Wallets are backed in smart contracts called Vaults (aka Smart Vaults). Vaults are pools of wallets backed by a crypto-currency (ERC20 tokens). They have the following features: * Vaults have to be highly liquid and accessible (like checking accounts) * Vaults return rewards to its users in the form of the backing token, which end up in each users account * Vaults are interchangeable, users can move in and out to different vaults (this process is called Backing Switch) * Vaults are lossless: your funds will never go down. This is only valid for the backing token, and does not include cases where the value of the token against fiat or other cryptocurrencies go down. The recommended (and default) vault is the USDC vault. Users will be able to see their funds in USDC, and earn rewards in USDC. This vault is usually the one with the lowest yield, but it protects against real-world losses when the value of things is assigned in USD (or other fiat currencies). Other vault options include wBTC, wETH and any ERC20 token. Vaults are pre-built on Tiramisu, but experienced users can build their own (following an interface) and plug them to their wallets. Unless their capital levels are high, or they have extremely good yielders, these will not be as high as shared pools vaults but they would certainly be more private. #### Backing Switch When a user decides to switch vaults, this is accomplished by doing a single transaction called backing switch, described as follows: 1. User triggers a backing switch from the Tiramisu website. 2. If the chosen Yielder (more on yielders later) exists in the new vault, it will be selected. Otherwise, the funds will go into the vault's default yielder. 3. Using Uniswap or other DEX, the funds are transferred from one token to the other, and sent to the new vault, at market value. ### Layer 4: Yielders Vaults are powered by contracts called Yielders. These contracts are in charge of doing something with the money in the pool, and then harvesting the rewards. Tiramisu comes with a set of pre-built yielders, but experienced users can build their own and use them as they see fit. Yielders can also be interchanged quickly. Here are some examples of Yielders: * Compound Yielder (default for most vaults): This yielder deposits the money into the Compound protocol and earns interest from that. * AAVE Yielder: this yielder deposits the money into AAVE to earn interest. * Arbitrage Yielder: this yielder is triggered externally when arbitrage opportunities are found, and calls flash loans to earn its rewards. They could be slower (arbitrage opportunities are not very frequent) but the rewards can be higher. Pre-built yielders will not lose money, but experienced users may create custom yielders to allow riskier operations where negative earnings are an option, in exchange for a possibly higher reward.
How it's made
This project uses many different libraries 1. Compound: The base yielders included in the vaults are Compound yielders. Once a user deposits funds, the yielders automatically transform those funds into cTokens, and when the user wants to withdraw, it converts them back into the original token. 2. AAVE: Same concept as compound, tokens are transformed to aTokens and viceversa inside the yielders. 3. Circle: USDC is the main currency used by Tiramisu. It is the default wallet and provides stability for users of the first and second layers. We are also interested in adding on and off ramps, but that was out of scope for this hackathon 4. Uniswap: Uniswap is used to convert currencies, allowing vault-transfer and seamless payments between different currencies. We use the v2.0 router to enable the transfers between wallets from different vaults, or to perform a backing switch between two vaults. 5. Polygon: We intended to add Polygon because of it's speed and low costs, but since the yielders we were using weren't always available, we decided to not submit our project on Polygon. 6. Consensys: We use infura to make calls to the blockchain. 7. IPFS: IPFS is the core of our payments protocol. Orders are submitted to IPFS and transmitted via QR codes, and we use IPFS hashes to recover them later. We also pack a signature in IPFS that allows the seller to verify orders. 8. BitGo: WBTC is one of the vaults we built, mainly because BTC is going to be very important in the mass adoption of cryptocurrencies, and WBTC allows us to use that in Ethereum's favor. 9. Yearn/Akropolis: Users can use a yielder that swaps to AKRO and stakes them.Technologies used