How Tintero vaults are managed
Each Tintero pool is an ERC4626 vault that receives a ERC20 tokens in exchange for ERC20 shares, then it allocates these assets towards funding Loan contracts. Delegated yield managers can access the pooled assets to maximize the yield generated by the pool in case there are no active loans.
Each Tintero pool has a set of roles that restricts interactions with the protocol. These interactions are:
Any other interaction such as withdrawing assets from a vault, creating loans out of a vault (but not funding them!), scheduling collateralized payments or transferring shares remains permissionless.
These roles are managed by an Access Manager contract that is deployed for all contracts in the Tintero protocol. This contract’s admin can grant and revoke roles to any address and it’s publicly inspectable on-chain.
An accredited investor is a person or entity who agreed to the terms and conditions of the Tintero protocol and has passed the KYC/AML checks. They can deposit assets into a vault and mint shares in exchange.
The vault manager is a person or entity in charge of managing the vault’s assets for the purpose of originating loans. They inspect each request loan that goes through the vault and typically have access to the information of the underlying collateral assets and the beneficiary’s credit score.
A vault manager can:
The delegated yield manager is a specialized entity that offers capital management services to the vault’s assets. They can ask for delegation of the vault’s assets with a 12-hour delay that allows the Access Manager admin to cancel the delegation if needed.
uint64(bytes8(keccak256("PlumaaID.UPGRADER")))
)uint64(bytes8(keccak256("PlumaaID.PROVENANCE_AUTHORIZER")))
)uint64(bytes8(keccak256("PlumaaID.WITNESS_SETTER")))
)uint64(bytes8(keccak256("PlumaaID.TINTERO_MANAGER_USDC_V01")))
)uint64(bytes8(keccak256("PlumaaID.TINTERO_DELEGATE_USDC_V01")))
)uint64(bytes8(keccak256("PlumaaID.TINTERO_INVESTOR")))
)Role | Function signature | Selector | Target contract |
---|---|---|---|
UPGRADER | upgradeToAndCall(address,bytes) | 4f1ef286 | 0x0000c908D1104caD2867Ec2A8Bb178D78C9bAaaa |
WITNESS_SETTER | setWitness(address) | 0bc14f8b | 0x0000c908D1104caD2867Ec2A8Bb178D78C9bAaaa |
TINTERO_MANAGER_USDC_V01 | pushPayments(address,uint256[],(uint256,uint48,uint32,uint32,uint32,uint32)[]) | 69b24c8a | TBD |
TINTERO_MANAGER_USDC_V01 | pushTranches(address,uint96[],address[]) | 1589cd5e | TBD |
TINTERO_MANAGER_USDC_V01 | fundN(address,uint256) | ae527b8a | TBD |
TINTERO_MANAGER_USDC_V01 | repossess(address,uint256,uint256,address) | d3b500cf | TBD |
TINTERO_MANAGER_USDC_V01 | upgradeLoan(address,uint256,uint256,address) | c3aacfe3 | TBD |
TINTERO_DELEGATE_USDC_V01 | askDelegation(uint256) | 30adbaff | TBD |
TINTERO_INVESTOR | deposit(uint256,address) | 6e553f65 | TBD |
TINTERO_INVESTOR | mint(uint256,address) | 94bf804d | TBD |
Role | Address | Execution Delay |
---|---|---|
PROVENANCE_AUTHORIZER | 0xD4FAa2Bcdd1A438C9E69699166eDc92E65954ED7 | 0 |
UPGRADER | 0x00fA8957dC3D2f6081360056bf2f6d4b5f1a49aa | 259200 (3 days) |
WITNESS_SETTER | 0x00fA8957dC3D2f6081360056bf2f6d4b5f1a49aa | 0 |
TINTERO_MANAGER_USDC_V01 | TBD | 0 |
TINTERO_DELEGATE_USDC_V01 | TBD | 32200 (12 hrs) |
TINTERO_INVESTOR | TBD | 0 |