https://github.com/kybernetwork/uniswapv3-sdk
🛠A Go SDK for building applications on top of Uniswap V3
https://github.com/kybernetwork/uniswapv3-sdk
Last synced: 5 months ago
JSON representation
🛠A Go SDK for building applications on top of Uniswap V3
- Host: GitHub
- URL: https://github.com/kybernetwork/uniswapv3-sdk
- Owner: KyberNetwork
- License: mit
- Fork: true (daoleno/uniswapv3-sdk)
- Created: 2022-03-21T09:16:16.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-06-03T05:18:15.000Z (about 1 year ago)
- Last Synced: 2025-06-03T16:24:09.188Z (about 1 year ago)
- Language: Go
- Homepage:
- Size: 319 KB
- Stars: 8
- Watchers: 1
- Forks: 68
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Uniswap V3 SDK
[](https://pkg.go.dev/github.com/daoleno/uniswapv3-sdk)
[](https://github.com/daoleno/uniswapv3-sdk/actions/workflows/test.yml)
[](https://goreportcard.com/report/github.com/daoleno/uniswapv3-sdk)
🛠A Go SDK for building applications on top of Uniswap V3
## Installation
```sh
go get github.com/daoleno/uniswapv3-sdk
```
## Usage
The following example shows how to create a pool, and get the inputAmount
```go
package main
import (
"fmt"
"math/big"
core "github.com/daoleno/uniswap-sdk-core/entities"
"github.com/daoleno/uniswapv3-sdk/constants"
"github.com/daoleno/uniswapv3-sdk/entities"
"github.com/daoleno/uniswapv3-sdk/utils"
"github.com/ethereum/go-ethereum/common"
)
var (
USDC = core.NewToken(1, common.HexToAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"), 6, "USDC", "USD Coin")
DAI = core.NewToken(1, common.HexToAddress("0x6B175474E89094C44Da98b954EedeAC495271d0F"), 18, "DAI", "Dai Stablecoin")
OneEther = big.NewInt(1e18)
)
func main() {
// create demo ticks
ticks := []entities.Tick{
{
Index: entities.NearestUsableTick(utils.MinTick, constants.TickSpacings[constants.FeeLow]),
LiquidityNet: OneEther,
LiquidityGross: OneEther,
},
{
Index: entities.NearestUsableTick(utils.MaxTick, constants.TickSpacings[constants.FeeLow]),
LiquidityNet: new(big.Int).Mul(OneEther, constants.NegativeOne),
LiquidityGross: OneEther,
},
}
// create tick data provider
p, err := entities.NewTickListDataProvider(ticks, constants.TickSpacings[constants.FeeLow])
if err != nil {
panic(err)
}
// new pool
pool, err := entities.NewPool(USDC, DAI, constants.FeeLow, utils.EncodeSqrtRatioX96(constants.One, constants.One), OneEther, 0, p)
if err != nil {
panic(err)
}
// USDC -> DAI
outputAmount := core.FromRawAmount(DAI, big.NewInt(98))
inputAmount, _, err := pool.GetInputAmount(outputAmount, nil)
if err != nil {
panic(err)
}
fmt.Println(inputAmount.ToSignificant(4))
}
```
[More Examples](./examples/README.md)