GithubHelp home page GithubHelp logo

mgild / whirlpools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from orca-so/whirlpools

0.0 0.0 0.0 7.3 MB

Open source concentrated liquidity AMM contract on Solana

Home Page: https://orca-so.github.io/whirlpools/

License: Other

Shell 0.01% JavaScript 0.06% Rust 20.36% TypeScript 79.58%

whirlpools's Introduction

Whirlpools

Whirpools is an open-source concentrated liquidity AMM contract on the Solana blockchain. This repository contains the Rust smart contract and SDKs to interact with a deployed program.

The official deployment of the whilrpool contract can be found at the whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc address on:

The contract is deployed using verifiable build, so that you can ensure that the hash of the on-chain program matches the hash of the program in this codebase.

The program has been audited several times by different security firms.

Usage

The new whirlpool SDKs are still in development and are not recommended for production use yet. Please see Legacy

This repository contains several libraries that can be used to interact with the Whirlpools contract. For most purposes you can use the full library (@orca-so/whirlpools and orca-whirlpools).

For specific use-cases you can opt for integrating with lower level packages such as:

  • @orca-so/whirlpools-client & orca-whirlpools-client - auto-generated client for the Whirlpools program that contains account, instruction and error parsing.
  • @orca-so/whirlpools-quoting & orca-whirlpools-quoting - math lib used to calculate a quote for a given trade or liquidity action.
  • @orca-so/whirlpools-composite & orca-whirlpools-composite - helper package for compositing instructions together for executing common actions.
  • @orca-so/whirlpools-utils & orca-whirlpools-utils - utility and math functions used by other packages.

Legacy

The legacy Typescript SDK (@orca-so/whirlpools-sdk) is still available for use. Documentation can be found on the Orca Developer Portal. While the new packages are still in development the legacy sdk is still the recommended way to interact with the Whirlpools program.

Local Development

This monorepo contains all the code needed to build, deploy and interact the Whirlpools contract.

Requirements

  • Anchor v0.29.0
  • Solana v1.17.22

Getting Started

These instructions are for setting up a development environment on a Mac. If you are using a different operating system, you will need to adjust the instructions accordingly.

  • Install NodeJS and gcc-12 using brew install node gcc@12.
  • Add gcc-12 headers to your cpath using export CPATH="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include".
  • Install Rust lang using curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh.
  • Install the Solana CLI using curl -sSfL https://release.solana.com/v1.17.22/install | sh.
  • Add the Solana CLI to your path using export PATH="/Users/$(whoami)/.local/share/solana/install/active_release/bin:$PATH".
  • Install Anchor version manager using cargo install --git https://github.com/coral-xyz/anchor avm --locked --force.
  • Install the latest Anchor version using avm install 0.29.0 && avm use 0.29.0.
  • Clone this repository using git clone https://github.com/orca-so/whirlpools.
  • Install the dependencies using yarn.
  • Set up a Solana wallet if you don't have one already (see below).
  • Run one of the commands below to get started such as yarn build.

Setting up a Solana wallet

  • Create a new keypair using solana-keygen new.
  • Check if you have a valid wallet address using solana address.
  • Set your local config to the Solana devnet env using solana config set --url https://api.devnet.solana.com.
  • Give yourself some devnet SOL (for transaction fees) using solana airdrop 1.
  • Check if you have a positive balance using solana balance.

Components

This repository uses NX to manage the Rust and Typescript codebases. This allows us to have a monorepo with multiple packages and share code between them. Dependencies between packages are automatically resolved by NX, so you don't have to worry about managing that yourself.

This repository is split up into sevaral parts. The following is a (non-exhaustive) list of the components and their purpose.

  • /programs/* - Rust programs that are deployed on Solana.
  • /ts-sdk/* (WIP) - Typescript SDKs for interacting with the programs.
  • /rust-sdk/* (WIP) - Rust SDKs for interacting with the programs.
  • /docs/* (WIP) - Documentation for the programs and SDKs.
  • /legacy-sdk/* - Legacy Typescript SDKs and integration tests.

Commands

All commands should be run from the root of the repository. NX will try to run a command with the same name for each individual component, skipping the component if that specific command does not exist.

Below is a (non-exhaustive) list of available commands:

  • yarn build - compile the components for deployment or serving.
  • yarn clean - clean up all local build products, useful for when builds are failing.
  • yarn test - run the tests for all components.
  • yarn format - run formatter to format code.

If you look closely, the commands just call individual commands specified in the component's package.json file. These commands should not be run by themselves as it will not resolve the right dependencies and will not execute the prerequisites. Instead you can specify which package to run with yarn build programs/whirlpool, yarn test legacy-sdk/whirlpool, etc.

If you want to stream the logs of a specific command you can add the --output-style stream flag to the command. This allows you to view the logs of the command as they are being produced which can be useful for longer running tasks like integration tests.


Support

Questions

Have problems integrating with the SDK? Pop by over to the Orca Discord #dev-questions channel and chat with one of our engineers.

Feedback

Got ideas on how to improve the system? Open up an issue on github and let's brainstorm more about it together!

whirlpools's People

Contributors

odcheung avatar yugure-orca avatar dependabot[bot] avatar wjthieme avatar terranmoccasin avatar philcchen avatar rawfalafel avatar fuzzyyeti avatar atamari-orca avatar mgild avatar everlastingsong avatar solbricklayer avatar skrrb avatar friendlyping avatar sohrab- avatar 10xsebastian avatar prasoonpratham avatar socksrust avatar rhovian avatar eltociear avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.