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.

How access is managed

Each Tintero pool has a set of roles that restricts interactions with the protocol. These interactions are:

  • Deposit to a vault: Only accredited investors can deposit assets into a vault (or mint shares).
  • Split payments into tranches: Only the vault manager can split payments into tranches.
  • Fund a loan: Only the vault manager can fund a loan.
  • Repossess a loan: Only the vault manager can repossess a loan after it has defaulted.
  • Upgrade a loan: Only the vault manager can upgrade a loan to a new version after terms have been renegotiated.
  • Ask for delegation: Only the delegated yield manager can ask for delegation of the vault’s assets.

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.

Roles

Accredited Investor

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.

Vault Manager

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:

  • Split payments into tranches
  • Fund a loan
  • Repossess a loan
  • Upgrade a loan

Delegated Yield Manager

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.

Role References

  • UPGRADER: 4853719658622747636 (uint64(bytes8(keccak256("PlumaaID.UPGRADER"))))
  • PROVENANCE_AUTHORIZER: 12236269664351332516 (uint64(bytes8(keccak256("PlumaaID.PROVENANCE_AUTHORIZER"))))
  • WITNESS_SETTER: 5639234726794575539 (uint64(bytes8(keccak256("PlumaaID.WITNESS_SETTER"))))
  • TINTERO_MANAGER_USDC_V01: 4691003184040892619 (uint64(bytes8(keccak256("PlumaaID.TINTERO_MANAGER_USDC_V01"))))
  • TINTERO_DELEGATE_USDC_V01: 13580011560138984285 (uint64(bytes8(keccak256("PlumaaID.TINTERO_DELEGATE_USDC_V01"))))
  • TINTERO_INVESTOR: 5986081590623214882 (uint64(bytes8(keccak256("PlumaaID.TINTERO_INVESTOR"))))

Role mapping

RoleFunction signatureSelectorTarget contract
UPGRADERupgradeToAndCall(address,bytes)4f1ef2860x0000c908D1104caD2867Ec2A8Bb178D78C9bAaaa
WITNESS_SETTERsetWitness(address)0bc14f8b0x0000c908D1104caD2867Ec2A8Bb178D78C9bAaaa
TINTERO_MANAGER_USDC_V01pushPayments(address,uint256[],(uint256,uint48,uint32,uint32,uint32,uint32)[])69b24c8aTBD
TINTERO_MANAGER_USDC_V01pushTranches(address,uint96[],address[])1589cd5eTBD
TINTERO_MANAGER_USDC_V01fundN(address,uint256)ae527b8aTBD
TINTERO_MANAGER_USDC_V01repossess(address,uint256,uint256,address)d3b500cfTBD
TINTERO_MANAGER_USDC_V01upgradeLoan(address,uint256,uint256,address)c3aacfe3TBD
TINTERO_DELEGATE_USDC_V01askDelegation(uint256)30adbaffTBD
TINTERO_INVESTORdeposit(uint256,address)6e553f65TBD
TINTERO_INVESTORmint(uint256,address)94bf804dTBD

Role members

RoleAddressExecution Delay
PROVENANCE_AUTHORIZER0xD4FAa2Bcdd1A438C9E69699166eDc92E65954ED70
UPGRADER0x00fA8957dC3D2f6081360056bf2f6d4b5f1a49aa259200 (3 days)
WITNESS_SETTER0x00fA8957dC3D2f6081360056bf2f6d4b5f1a49aa0
TINTERO_MANAGER_USDC_V01TBD0
TINTERO_DELEGATE_USDC_V01TBD32200 (12 hrs)
TINTERO_INVESTORTBD0