Skip to content

Latest commit

 

History

History
 
 

token-lending

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Token Lending program

A lending protocol for the Token program on the Solana blockchain inspired by Aave and Compound.

Full documentation is available at https://spl.solana.com/token-lending

Web3 bindings are available in the ./js directory.

Audit

The repository README contains information about program audits.

On-chain programs

Cluster Program Address
Devnet 6TvznH3B2e3p2mbhufNBpgSrLx6UkgvxtVQvopEZ2kuH

Documentation

Deploy a lending program (optional)

This is optional! You can skip these steps and use the Token Lending CLI with one of the on-chain programs listed above to create a lending market and add reserves to it.

  1. Install the Solana CLI

  2. Install the Token and Token Lending CLIs:

    cargo install spl-token-cli
    cargo install spl-token-lending-cli
  3. Clone the SPL repo:

    git clone https://github.com/solana-labs/solana-program-library.git
  4. Go to the new directory:

    cd solana-program-library
  5. Generate a keypair for yourself:

    solana-keygen new -o owner.json
    
    # Wrote new keypair to owner.json
    # ================================================================================
    # pubkey: JAgN4SZLNeCo9KTnr8EWt4FzEV1UDgHkcZwkVtWtfp6P
    # ================================================================================
    # Save this seed phrase and your BIP39 passphrase to recover your new keypair:
    # your seed words here never share them not even with your mom
    # ================================================================================

    This pubkey will be the owner of the lending market that can add reserves to it.

  6. Generate a keypair for the program:

    solana-keygen new -o lending.json
    
    # Wrote new keypair to lending.json
    # ============================================================================
    # pubkey: 6TvznH3B2e3p2mbhufNBpgSrLx6UkgvxtVQvopEZ2kuH
    # ============================================================================
    # Save this seed phrase and your BIP39 passphrase to recover your new keypair:
    # your seed words here never share them not even with your mom
    # ============================================================================

    This pubkey will be your Program ID.

  7. Open ./token-lending/program/src/lib.rs in your editor. In the line

    solana_program::declare_id!("6TvznH3B2e3p2mbhufNBpgSrLx6UkgvxtVQvopEZ2kuH");

    replace the Program ID with yours.

  8. Build the program binaries:

    cargo build
    cargo build-sbf
  9. Prepare to deploy to devnet:

    solana config set --url https://api.devnet.solana.com
  10. Score yourself some sweet SOL:

    solana airdrop -k owner.json 2
    solana airdrop -k owner.json 2
    solana airdrop -k owner.json 2

    You'll use this for transaction fees, rent for your program accounts, and initial reserve liquidity. If you run into issues with the airdrop command, see the docs for more info.

  11. Deploy the program:

    solana program deploy \
      -k owner.json \
      --program-id lending.json \
      target/deploy/spl_token_lending.so
    
    # Program Id: 6TvznH3B2e3p2mbhufNBpgSrLx6UkgvxtVQvopEZ2kuH

    If the deployment doesn't succeed, follow this guide to resume it.

  12. Wrap some of your SOL as an SPL Token:

    spl-token wrap \
       --fee-payer owner.json \
       2.0 \
       -- owner.json
    
    # Wrapping 2 SOL into AJ2sgpgj6ZeQazPPiDyTYqN9vbj58QMaZQykB9Sr6XY

    You'll use this for initial reserve liquidity. Note the SPL Token account pubkey (e.g. AJ2sgpgj6ZeQazPPiDyTYqN9vbj58QMaZQykB9Sr6XY).

  13. Use the Token Lending CLI to create a lending market and add reserves to it.