# go-defi
**Repository Path**: AlbertChan2020/go-defi
## Basic Information
- **Project Name**: go-defi
- **Description**: About
a Golang sdk for working with DeFi protocols, and ethereum compatible blockchains.
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2021-04-28
- **Last Updated**: 2023-07-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
A golang sdk for working with DeFi protocols and general utilities for working with ethereum-compatible blockchains.
# packages
* bclient
* bindings
* cli
* config
* database
* sushiswap
* uniswap
* testenv
* utils
## bclient
Provides a wrapper around the `ethclient` package
## bindings
Provides code generated by abigen for working with smart contracts:
* `bindings/erc20` provides generated code for working with ERC20 contracts
* `bindings/oneinch/v2` provides generated code for working with OneInch V2 router contracts
* `bindings/oneinch/v3` provides generated code for working with OneInch V3 router contracts
* `unicrypt/presalefactory` provides generated code for working with UniCrypt presale factories
* `uniswap/*` provides generated code for working with Uniswap V2 contracts (note these can also be used for working with the corresponding sushiswap contracts)
## cli
cli package
## config
configuration management package
## database
database management packlage
## sushiswap
Wrapper around go-ethereum's `ethclient` package for using sushiswap v2.
## uniswap
Wrapper around go-ethereum's `ethclient` package for using uniswap v2.
## testenv
Provides a wrapper around the SimulatedBackend allowing for an in-memory blockchain. It is particularly useful for local smart contract development, or developing backend dApps.
## utils
Provides utility functions including all [goethereum book utils](https://goethereumbook.org/en/util-go/), a helper to make `bind.TransactOpts` safe for concurrent use, as well as a general `Blockchain` interface that satisfies all functions provided by simulated backend, as well as `ethclient` which is useful for drop-in replacement of actual RPC clients, and test environments.
# examples
## transaction matching
```shell
$> /go-defi txm --methods transfer --methods transferFrom --methods buy --contract.address 0x5ade7aE8660293F2ebfcEfaba91d141d72d221e8
```