Skip to main content

合约

Arbitrum Sepolia 合约地址

Dederi V2

合约名合约地址说明
PortfolioMarginManager0x3Ab26F78Cf6d285bFFCE2f8AF09345E2F64aD7Be组合保证金清结算层:清算标记、ADL 操作、到期结算
DualManager0x88DDEab8D8a9c93D59e097F14E31eE47E70D218b双币理财清结算层:双币理财到期结算
Vault0xE713691e48d83722d51c493B02e4784687D82de8Dederi 平台金库合约
StandardPMRFQ0xBE5bd6ECfB5B441af1824987cB737AA414eC0831组合保证金 RFQ 合约-交互入口
DualRFQ0x7956cC316133CC7bA33CCa5BA59bBfb4DE29fD4c双币理财 RFQ 合约-交互入口
StrategyQuery0xC101275Db4e7793afb257E1da1E482f5db39e5C7查询策略的接口
Oracle0xB8E6F1D893FDE4459924f3E3f54ae26aDebd1E50Dederi 预言机合约
Multicall0xcA11bde05977b3631167028862bE2a173976CA11系统批量执行 ADL 和到期结算
Future0x8b548c8f5868da732EAE86B2D05FB0Fc1d0FD9ef期货资产(assetType)
Option0xE0d174345C267Af0950b8e9CCf801A3f292F9890期权资产(assetType)
Cash0x7253E420734141D4af99826A840dB6E3aFa0dc0c现金资产(assetType)
StrategyStorage0x280272a7593bf53f2196D8cB3222871C5b84b72E策略 NFT 合约

Arbitrum 主网合约地址

合约名合约地址说明
PortfolioMarginManager0x7E2E4d07F99f6f6495B8e7f68da087bE5937Ead2组合保证金清结算层:清算标记、ADL 操作、到期结算
DualManager0x5759D9776d16d0FB32582680A589E6138642c466双币理财清结算层:双币理财到期结算
Vault0x686354b37102C1132bBd950BddB5bAF120b125cFDederi 平台金库合约
StandardPMRFQ0xFdd38e7cB35AE3A0a8f1c811742501f56f0c1Dbb组合保证金 RFQ 合约-交互入口
DualRFQ0xaF4596343351c0AdE35fFBE1295AcC541315f2e3双币理财 RFQ 合约-交互入口
StrategyQuery0x4861805D62c5A1a53E602Dd2946db03b4C9e4e46查询策略的接口
Oracle0x03Cb664C754489f83BF2f76f6D18De11F76e4DE0Dederi 预言机合约
Multicall0xcA11bde05977b3631167028862bE2a173976CA11系统批量执行 ADL 和到期结算
Future0x676EBAef19613A5F5E028B9d7c7825a771F706a1期货资产(assetType)
Option0xeCBe101e9fEAEa9bD36565A9cdf7b3e1ce9362Fd期权资产(assetType)
Cash0x8a89be4749289c815a65a4f227Ae5F859f7E3D9c现金资产(assetType)
StrategyStorage0xb9c719d8d7Bf57D44be640458B1c08d33496A947策略 NFT 合约

金库合约接口说明

deposit

向 dederi 金库充值

  • 接口

    Vault.deposit(address token, address depositer, uint256 amountWithTokenDecimals)
  • 参数

    NameTypeDescription
    tokenaddress充值的 token 合约地址
    depositeraddress接收地址
    amountWithTokenDecimalsuint256充值金额

getUserNonce

获取用户余额最新的快照 nonce。

  • 接口

    Vault.getUserNonce(address user) external view returns (uint256)
  • 参数

    NameTypeDescription
    useraddress用户地址
  • 返回值

    NameTypeDescription
    userNonceuint256快照 nonce

getUserBalance

获取用户余额。

  • 接口

    Vault.getUserBalance(address user, address token) external view returns (uint256)
  • 参数

    NameTypeDescription
    useraddress用户地址
    tokenaddresstoken 地址
  • Return Values

    NameTypeDescription
    userBalanceuint256用户余额

getVaultBalance

获取用户余额。

  • 接口

    Vault.getVaultBalance(address token)external view returns(uint256)
  • 参数

    NameTypeDescription
    tokenaddresstoken 地址
  • Return Values

    NameTypeDescription
    vaultBalanceuint256用户余额

组合保证金 RFQ 接口说明

aggregateCall

聚合调用,交互的实际接口,需要传入 oracle 喂价动作和 RFQ 动作,如[oracle action1,oracle action2,rfq action]

struct Result {
bool success;
bytes returnData;
}

struct Action {
address target; // 目标合约
bool skipRevert; // 是否跳过某次action行为的revert
bytes callData; // 调用的msg.data
}

// 批量调用合约-触发交易上链
// 调用时,必须先拼装oracle交易
function aggregateCall(Action[] calldata actions) external returns (Result[] memory result);

completeTheRFQ

点报价成交(开仓、加腿、平仓)

standardPMRFQ.completeTheRFQ(
CompleteTheRFQMakerParams calldata makerParams,
CompleteTheRFQTakerParams calldata takerParams,
uint256 traceId,
uint256 deadline,
bytes calldata signature
) external returns (uint256 takerStrategyId, uint256 makerStrategyId);


struct CompleteTheRFQMakerParams {
address taker;
address maker;
uint256 makerMergeStrategyId;
uint256 makerNewCashAmount;
uint256 timestamp;
Asset[] makerAssets;
}

struct CompleteTheRFQTakerParams {
address taker;
uint256 takerMergeStrategyId;
uint256 takerNewCashAmount;
}


struct Asset {
address assetType; // asset类型 不同的地址表示不同的衍生品,如option future的合约地址
// 资产id,总共256位
uint256 assetId;
int256 units; // 资产数量(张),正数表示long,负数表示short 18位精度
bytes32 extra; // 额外值,对于option和future表示交易价格
}

期权编码方式
// 160-32-32-32
// bit 0-31 option type 低位
// bit 32-63 expiry time
// bit 64-95 strike price
// bit 96-255 underlying address 高位

期货编码方式
// future info(underlying,expiryTime)
// bit 160-32-64
// bit 0-63 reserved bit 低位
// bit 64-95 expiry time
// bit 96-255 underlying address 高位
  • 参数
    • CompleteTheRFQParams:RFQ 点价成交参数结构体
    • traceId:请求链路 ID(uint256 的随机数且大于 0)
    • deadline:执行过期时间
    • signature:maker 的离线签名
  • 返回值
    • takerStrategyId :本次 RFQ 后 taker 的策略 ID
    • makerStrategyId:本次 RFQ 后 maker 的策略 ID

cancelQuote

StandardPMRFQ.cancelQuote(CompleteTheRFQMakerParams calldata params, bytes calldata signature)


struct CompleteTheRFQMakerParams {
address taker;
address maker;
uint256 makerMergeStrategyId;
uint256 makerNewCashAmount;
uint256 timestamp;
Asset[] makerAssets;
}
  • params:报价参数
  • signature:签名

mergeStrategy

StandardPMRFQ.mergeStrategy(StandardPMRFQDataTypes.MergeStrategyParams calldata params) external returns (uint256);

struct MergeStrategyParams {
uint256 traceId; // 合并交易的链路ID
uint256 firstStrategyId; // 合并的策略1
uint256 secondStrategyId; // 合并的策略2
uint256 cashAmount; // 合并策略新增的cash
uint256 deadline; // 合并交易的过期时间
}
  • MergeStrategyParams:合并请求参数结构体
  • 返回值:
    • 合并后的策略 ID,0 表示完全合并

splitStrategy

StandardPMRFQ.splitStrategy(SplitStrategyParams calldata params)
external
returns (uint256, uint256);

struct SplitStrategyParams {
uint256 traceId;
uint256 splitStrategyId;
uint256 originalCashToNewStrategy; // 原策略中分给新策略的现金
uint256 originalStrategyCashAmount; // 钱包到原策略的现金
uint256 newStrategyCashAmount; // 钱包到新策略的现金
uint256 deadline;
Asset[] splitAssets;
}
  • SplitStrategyParams:拆分策略的请求参数结构体
  • 返回值
    • 策略 1ID 原策略 ID
    • 策略 2ID 拆分出去的策略 ID

addCash

StandardPMRFQ.addCash(uint256 traceId, uint256 strategyId, uint256 cashAmount)
  • traceId:添加保证金交易的链路 ID
  • strategyId:添加保证金的策略 ID

reduceCash

StandardPMRFQ.reduceCash(uint256 traceId, uint256 strategyId, uint256 cashAmount)
  • traceId:减少保证金交易的链路 ID
  • strategyId:减少保证金交易的链路 ID
  • cashAmount:减少的保证金数量

transferStrategy

StrategyStorage.approve(StandardPMRFQ地址,策略ID) // 授权给RFQ 转移某个策略ID的权限
StrategyStorage.getApproved(策略ID) // 判断某个策略是否被授权,如果有,则返回被授权的地址


StandardPMRFQ.transferStrategy(uint256 strategyId, address newOwner)
  • strategyId:需要转移的策略 ID
  • newOwner:转移的目标地址

双币理财 RFQ 接口说明

aggregateCall

聚合调用,交互的实际接口,需要传入 oracle 喂价动作和 RFQ 动作,如[oracle action1,oracle action2,rfq action]

struct Result {
bool success;
bytes returnData;
}

struct Action {
address target; // 目标合约
bool skipRevert; // 是否跳过某次action行为的revert
bytes callData; // 调用的msg.data
}

// 批量调用合约-触发交易上链
// note:调用时,必须先拼装oracle交易
function aggregateCall(Action[] calldata actions) external returns (Result[] memory result);

completeTheRFQ

DualRFQ.completeTheRFQ(
CompleteTheRFQMakerParams calldata makerParams,
CompleteTheRFQTakerParams calldata takerParams,
uint256 traceId,
uint256 deadline,
bytes calldata signature
) external payable returns (uint256 takerStrategyId, uint256 makerStrategyId);

struct CompleteTheRFQMakerParams {
address taker;
address maker;
Asset makerNewCash; // 表示maker的新加保证金
uint256 timestamp; // maker报价时间
Asset makerOptionAsset; // 期权衍生品
}

struct CompleteTheRFQTakerParams {
address taker;
Asset takerNewCash; // taker 新增保证金
}
  • 参数
    • CompleteTheRFQParams:双币理财 RFQ 点价成交参数结构体
    • traceId:请求链路 ID(uint256 的随机数且大于 0)
    • deadline:执行过期时间
    • signature:maker 的离线签名
  • 返回值
    • takerStrategyId:本次 RFQ 后 taker 的策略 ID
    • makerStrategyId:本次 RFQ 后 maker 的策略 ID

cancelQuote

DualRFQ.cancelQuote(CompleteTheRFQMakerParams calldata makerParams, bytes calldata signature)
external;


struct CompleteTheRFQMakerParams {
address taker;
address maker;
Asset makerNewCash;
uint256 timestamp;
Asset makerOptionAsset;
}
  • params:报价参数
  • signature:签名

transferStrategy

StrategyStorage.approve(DualRFQ地址,策略ID) // 授权给RFQ 某个策略ID
StrategyStorage.getApproved(策略ID) // 判断某个策略是否被授权,如果有,则返回被授权的地址

DualRFQ.transferStrategy(uint256 strategyId, address newOwner)
  • strategyId:需要转移的策略 ID
  • newOwner:转移的目标地址

查询接口说明

getAllStrategyInfo

获取全策略信息

StrategyQuery.getAllStrategyInfo(uint256 page, uint256 pageSize) external view returns (StrategyInfo[] memory)
struct StrategyInfo {
Strategy strategy;
uint256 strategyId;
Asset[] availableBalance;
address owner;
}

struct Strategy {
uint256 status; //策略状态,如0-未激活 1-激活 2-清算 3-ADL
address strategyManager;
Asset[] assets; //所拥有的资产信息(衍生品等)
}
  • page:查询的页数
  • pageSize:每页的大小

getAllStrategyInfoByUser

获取用户拥有的策略信息

StrategyQuery.getAllStrategyInfoByUser(address user, uint256 page, uint256 pageSize)
external
view
returns (StrategyInfo[] memory)


struct StrategyInfo {
Strategy strategy;
uint256 strategyId;
Asset[] availableBalance;
address owner;
}
  • user 用户地址
  • page:查询页数
  • pageSize:每页数量

getStrategyBalance

获取总策略数量

StrategyQuery.getStrategyBalance() external view returns (uint256);
  • 返回值
    • 策略总量

getStrategyBalanceByUser

获取用户策略数量

StrategyQuery.getStrategyBalanceByUser(address user) external view returns (uint256)
  • 返回值
    • 用户策略数量

getStrategyInfo

获取策略详情

StrategyQuery.getStrategyInfo(uint256 strategyId) external view returns (StrategyInfo memory)

struct StrategyInfo {
Strategy strategy;
uint256 strategyId;
Asset[] availableBalance;
address owner;
}

getOwnerOfStrategy

获取策略的 owner 地址

StrategyQuery.getOwnerOfStrategy(uint256 strategyId) external view returns (address)
  • strategyId:策略 ID

  • 返回值

    • 策略 owner

预言机接口说明

updateIndexPrices

上传 index price

Oracle.updateIndexPrices(PriceParam[] calldata _params)external;

struct PriceParam {
address token; // 标的物合约地址(如WBTC、WETH)
uint256 price; // 价格
uint256 timestamp; // 链下观测的时间
bytes[] signatures; // 签名
}

updateIndexTWAPs

上传 index twap price(30 分钟)

Oracle.updateIndexTWAPs(PriceParam[] memory _params)external;

struct PriceParam {
address token; // 标的物合约地址(如WBTC、WETH)
uint256 price; // 价格
uint256 timestamp; // 链下观测的时间
bytes[] signatures; // 签名
}

updateSettleTWAPs

上传结算 twap 价格

Oracle.updateSettleTWAPs(SettleTWAPParam[] memory _params);

struct SettleTWAPParam {
address token; // 代币地址
uint256 settletime; // 结算时间
uint256 price; // 价格
uint256 timestamp; // 观察价格的时间
bytes[] signatures; // 签名
}

updateABR

上传 ABR 数据

Oracle.updateABR(AbrParam calldata _param) external;


struct AbrParam {
address token; // 代币地址
AbrPriceParam[] prices; // abr价格
uint256 timestamp; // 观察价格的时间
bytes[] signatures; // 签名
}

struct AbrPriceParam {
uint256 index_price; // 资产index price
uint256 mark_price; // 资产mark price
uint256 expiration; // 到期时间
}

updateSVI

上传 SVI 数据

Oracle.updateSVI(SVIParam calldata _param) external;

struct SVIParam {
address token; // 代币地址
SVIItem[] items; // svi数据
uint256 timestamp; // 观察价格的时间
bytes[] signatures; // 签名
}

struct SVIItem {
uint256 expiration;
int256 SVI_a; // 精度18
uint256 SVI_b; // 精度18
int256 SVI_rho; // 精度18
int256 SVI_m; // 精度18
uint256 SVI_sigma; // 精度18
uint256 SVI_maturity; // 精度18
}
产品

Dederi RFQ

结构化产品

专业用户

市场数据

服务

文档

隐私政策

服务条款

支持
@Dederi_official

产品

Dederi RFQ

结构化产品

专业用户

市场数据

服务

文档

隐私政策

服务条款

Copyright © 2024 Dederi