solana-program-library/token-lending
dependabot[bot] f0405323a2
build(deps): bump bignumber.js from 9.0.2 to 9.1.1 in /token-lending/js (#4167)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-05 11:02:03 +00:00
..
cli chore: update maintainer references (#4008) 2023-01-31 08:06:36 -05:00
flash_loan_receiver ci: Update repo to Solana 1.14.12 (#3989) 2023-01-19 21:47:03 +01:00
js build(deps): bump bignumber.js from 9.0.2 to 9.1.1 in /token-lending/js (#4167) 2023-05-05 11:02:03 +00:00
program docs: Clarify audit status of all programs, no S word (#4046) 2023-02-13 22:05:49 +00:00
Anchor.toml Rewrite spl-token-js in TypeScript (#2539) 2021-12-14 16:47:57 -06:00
README.md docs: Clarify audit status of all programs, no S word (#4046) 2023-02-13 22:05:49 +00:00
devnet.json Rewrite spl-token-js in TypeScript (#2539) 2021-12-14 16:47:57 -06:00
flash_loan_design.md Flashloan for token lending (#1444) 2021-05-06 23:27:41 -05:00

README.md

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.