Base Quickstart

Synthetix V3 consists of multiple systems, deployed via an omnibus on Base and other chains.

  • Synthetix's core system holds collateral and manages liquidity provisioning for the deployment. It issues an account NFT to liquidity providers and a stablecoin used by traders.

  • There is a spot market used to wrap USDC into synthetic USDC (for LPs) and this can be "sold" into the stablecoin. All of these exchanges happen 1:1. Additional types of collateral may be introduced in the future.

  • All of the systems integrate with the oracle manager to assess the value of collateral and derivatives.

Building Apps/Front-ends

To start a local node with running with the same configuration as the Base deployment and retrieve the addresses/ABIs:

npm i -g @usecannon/cli
cannon inspect synthetix-omnibus@andromeda --write-deployments ./deployment
cannon synthetix-omnibus@andromeda

For Python Developers

If you are interested in building bots or scripts to trade perps using the Python SDK, check out the playground or read the docs.

For JavaScript/TypeScript Developers

You can retrieve the addresses and ABIs for the Synthetix deployment on Base and call functions using viem as follows:

import { createPublicClient, http } from 'viem';
import { base } from 'viem/chains';
import { getCannonContract, traceActions } from '@usecannon/builder';

async function getCollateralConfigurations(){
    // Retrieve deployment data
    const CoreProxy = await getCannonContract({
        package: 'synthetix-omnibus@andromeda',
        chainId: base.id,
        contractName: 'CoreProxy',
    });
    
    // Create a client with the ability to decode errors from the CoreProxy
    const publicClient = createPublicClient({ 
        chain: base,
        transport: http()
      }).extend(traceActions(CoreProxy));

    // Call a smart contract function and log the result
    const result = await publicClient.readContract({
        ...CoreProxy,
        functionName: 'getCollateralConfigurations',
        args: [false],
    })
    console.log(result);
}

getCollateralConfigurations();

Last updated