Deploying HIP-3 assets
The API for deploying and operating builder-deployed perpetual dexs involves the following L1 action:
type PerpDeployAction =
| {
type: "perpDeploy";
registerAsset: RegisterAsset;
}
| {
type: "perpDeploy";
setOracle: SetOracle;
};
/**
* RegisterAsset can be called to initialize a new dex and register an asset at the same time.
* If schema is not provided, then RegisterAsset can be called multiple times to register additional assets
* for the provided dex.
* @param maxGas - Max gas in native token wei. If not provided, then uses current deploy auction price.
* @param assetRequest - Contains new asset listing parameters. See RegisterAssetRequest below for details.
* @param dex - Name of the perp dex (<= 6 characters)
* @param schema - Contains new perp dex parameters. See PerpDexSchemaInput below for details.
*/
type RegisterAsset = {
maxGas?: number;
assetRequest: RegisterAssetRequest;
dex: string;
schema?: PerpDexSchemaInput;
}
/**
* SetOracle can be called multiple times
* @param dex - Name of the perp dex (<= 6 characters)
* @param oraclePxs - A list (sorted by key) of asset and oracle prices.
* @param markPxs - A list (sorted by key) of asset and mark prices.
*/
type SetOracle {
dex: string;
oraclePxs: Array<[string, string]>;
markPxs: Array<[string, string]>;
}
type RegisterAssetReqeust {
coin: string;
szDecimals: number;
oraclePx: string;
marginTableId: number;
onlyIsolated: boolean;
}
/**
* @param fullName - Full name of the perp dex
* @param collateralToken - Collateral token index
* @param oracleUpdater - User to update oracles. If not provided, then deployer is assumed to be oracle updater.
*/
type PerpDexSchemaInput {
fullName: string;
collateralToken: int;
oracleUpdater?: string;
}
Last updated