Monedero

Monedero

¡Bienvenido a Monedero, donde generas mientras duermes!

51
Built at Based LatAm
Monedero

Monedero

¡Bienvenido a Monedero, donde generas mientras duermes!

Why are you participating for Based LatAm?

Because we want to contribute in the solution of some of the many problems our region faces for its development. We are focused now in the absence of financial knowledge and education on risks and investments.

We are both from latin america, one from Mexico and other from Uruguay. Here in our region there is a common problem shared between all the countries: Abusive Banks, High Rates Money Transfers and Centralization on Investment Platforms.

We focused in solving this for good with a full on-chain solution which will be descrived below.

What challenges are you focusing on?

We are addressing:

  1. Ease to transfer and at the same time save on-chain just depositing the stable USDC tokens.
  2. Generating continous and easy to track yield on the visuals without doing anything, automated on-chain.
  3. Opportunity for anyone to try low risk investments in well-known blockchain projects (tokens) like $ETH or $DEGEN.

Our solution has an extremly intuitive and simple UX that follows the WYSIWYG philosophy.

How does your submission address this challenge?

First of all we have developed a 100% on-chain solution that does't need a backend or dApp to work and let anyone use it directly interacting with the SCs, this makes a clear decentralized, safe, trustless and permissionless saving protocol that generates Yield for anyone.

Then we have created a very intuitive and simple UI that makes any user feel safe an comfortable (of course improvements are needed) asking just for the most simple and easy interactions to complete any process involved in save, earn, transfer and invest, choosing USDC as the main currency (USD) in Latin America for international transfers and will to save.

All the Yield are renerated automatically when any user deposits USDC into the protocol (from ANY TOKEN), which is converted using Uniswap v3 automatically (routing to USDC) and then the Staking.sol SC stakes it in AAVE (for the PoC) and then mints the syntethic token (hidden to user) called mUSDC (Monedero USDC) which is an ERC-20 Smart Contract modified to add the native hooks for update the balance of the users everytime they do any action (transaction).

So, with a simple UI/UX hack in JavaScript we can show the user the balance they have adding the Yield that is being generated constantly, something is not minted yet in their tokens, but that will be anytime they want to do any movement, in a permissionless and trustless way, directly inside the ERC-20.

Finally, we help the users to make their first investments adding very low risk orders using the triggeredSwaps.sol smart contract, wich are targeted to very low prices on well-known projects, adding a deadline to be executed and the possibility to remove them at will. This orders can be permissionless executed when the Uniswap API on-chain matches the requested price for the pair and the user balance is enough for the need. Everything is also full on-chain.

Challenges we ran into

We had some problems to find testnet contracts for all our functionallities and pairs to test so we needed to run some test forking chains in a dev mode, this means the project is finished, tested and secure but it will not work on full capacity on testnet because is designed for mainnet. Anyway the code talks by itself of course!

Additional Features

We built a great code-base for any builder on how to make automated swaps, modify ERC-20's, create automated stakings, a simple DEX for order books on pairs and some more great features hidden (but public available) in our repo. Please take a look and enjoy it a lot!

DX (dev experience) on!

mUSDC.sol SMART CONTRACT

This is the ERC-20 contract that represents the synthetic USDC, which must have "hooks" in certain functions to ensure the correct behavior of allocation and maintenance in generation and interest (returns).

Aditional Storage to calculate the yields when making each transaction. It stores in a mapping (or array/whatever) for each address:
-newTimestamp of the last transaction
-newAPY at that moment

Hooks:
hook1
1º Checks if the address has a balance; if it doesn't, it skips the hook.
2º Verifies the balance and applies the APY from the timestamp (data recorded at the time the balance changed positively or negatively).
3º Mints the calculated yield in mUSDC.

hook2
1º Checks if one, both, or neither of the addresses have a balance; skips the hook for any address that doesn't.
2º Verifies the balance and applies the APY from the timestamp (data recorded at the time the balance changed positively or negatively) for each address.
3º Mints the calculated yield in mUSDC for each address.

Staking.sol SMART CONTRACT

This is the contract responsible for receiving deposits and making withdrawals. It communicates directly with the user, with Swaps, mUSDC.sol, and triggeredSwaps.sol.

triggeredSwaps.sol SMART CONTRACT

This is the contract responsible for receiving "investment" requests at a low price in a specific token from users of the system. These requests are executed when triggers are activated according to the following logic. All processing functions are permissionless but do not refund gas or anything.

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion