Geb
The main package used to interact with the GEB system. Includes helper functions for safe management and the contract interface object to directly call smart contracts.
Constructors
+ new Geb(network: GebDeployment, provider: GebProviderInterface | Provider): Geb
Defined in packages/geb/src/geb.ts:89
Constructor of the main Geb.js object.
Parameters:
| Name | Type | Description |
|---|---|---|
network | GebDeployment | Either 'arbitrum', 'arbitrum-sepolia' or an actual list of contract addresses. |
provider | GebProviderInterface | Provider | Either a Ethers.js provider or a Geb provider (Soon support for Web3 will be added) |
Returns: Geb
Properties
contracts
• contracts: ContractApis
Defined in packages/geb/src/geb.ts:87
Object containing all GEB core smart-contracts instances for direct level interactions. All of the following contracts object are one-to-one typed API to the underlying smart-contract. Read-only functions that do not change the blockchain state return a promise of the return data. State modifying function will return synchronously a pre-filled transaction request object:
{
to: "0x123abc.."
data: "0xabab234ab..."
}
This object follow the TransactionRequest model of ethers.js (Also similar to the model used by web.js). The object can be completed with properties such as from, gasPrice, gas (gas limit, web3.js ony) or gasLimit (gas limit, ethers.js only). The object can then be passed to the sendTransaction of ethers.js or web3.js
Example:
// Setup geb.js an ethers
const provider = new ethers.providers.JsonRpcProvider('http://arbitrum.infura.io/<API KEY>')
const wallet = new ethers.Wallet('<Private key>', provider)
const geb = new Geb('kovan', provider)
// Contract read function: Fetch the debt ceiling
const debtCeiling = await geb.contracts.safeEngine.globalDebtCeiling()
// State changing function: manualy liquidate a SAFE
const tx = geb.contracts.liquidationEngine.liquidateSAFE(ETH_A, '0x1234abc...')
await wallet.sendTransaction(tx) // Send the Ethereum transaction
Currently the following contracts are available:
- SAFEEngine
- AccountingEngine
- TaxCollector
- LiquidationEngine
- OracleRelayer
- GlobalSettlement
- DebtAuctionHouse
- PreSettlementSurplusAuctionHouse
- PostSettlementSurplusAuctionHouse
- SettlementSurplusAuctioneer
- GebSafeManager
- GetSafes
- BasicCollateralJoin
- CoinJoin
- Coin (System coin ERC20 contract)
- GebProxyRegistry
- FixedDiscountCollateralAuctionHouse
- Weth (ERC20)
For detailed information about the functions of each contract we recommend referring directly to the smart contract code and documentation.
Methods
deployProxy
▸ deployProxy(): TransactionRequest
Defined in packages/geb/src/geb.ts:133
Deploy a new proxy owned by the sender.
Returns: TransactionRequest
getErc20Contract
▸ getErc20Contract(tokenAddress: string): Erc20
Defined in packages/geb/src/geb.ts:261
Returns an object that can be used to interact with a ERC20 token. Example:
const USDCAddress = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
const USDC = geb.getErc20Contract(USDCAddress)
// Get 0xdefiisawesome's balance
const balance = USDC.balanceOf("0xdefiisawesome..")
// Send 1 USDC to 0xdefiisawesome (USDC has 6 decimals)
const tx = USDC.transfer("0xdefiisawesome..", "1000000")
await wallet.sendTransaction(tx)
Parameters:
| Name | Type | Description |
|---|---|---|
tokenAddress | string | Token contract address |
Returns: Erc20
getProxyAction
▸ getProxyAction(ownerAddress: string): Promise‹GebProxyActions‹››
Defined in packages/geb/src/geb.ts:121
Given an address returns a GebProxyActions object to execute bundled operations. Important: This requires the address to have deployed a GEB proxy through the proxy registry contract. It will throw a DOES_NOT_OWN_HAVE_PROXY error if the address specified does not have a proxy. Use the deployProxy function to get a new proxy.
Parameters:
| Name | Type | Description |
|---|---|---|
ownerAddress | string | Externally owned user account, Ethereum address that owns a GEB proxy. |
Returns: Promise‹GebProxyActions‹››