合约
Arbitrum Sepolia 合约地址
Dederi V2
合约名 | 合约地址 | 说明 |
---|---|---|
PortfolioMarginManager | 0x3Ab26F78Cf6d285bFFCE2f8AF09345E2F64aD7Be | 组合保证金清结算层:清算标记、ADL 操作、到期结算 |
DualManager | 0x88DDEab8D8a9c93D59e097F14E31eE47E70D218b | 双币理财清结算层:双币理财到期结算 |
Vault | 0xE713691e48d83722d51c493B02e4784687D82de8 | Dederi 平台金库合约 |
StandardPMRFQ | 0xBE5bd6ECfB5B441af1824987cB737AA414eC0831 | 组合保证金 RFQ 合约-交互入口 |
DualRFQ | 0x7956cC316133CC7bA33CCa5BA59bBfb4DE29fD4c | 双币理财 RFQ 合约-交互入口 |
StrategyQuery | 0xC101275Db4e7793afb257E1da1E482f5db39e5C7 | 查询策略的接口 |
Oracle | 0xB8E6F1D893FDE4459924f3E3f54ae26aDebd1E50 | Dederi 预言机合约 |
Multicall | 0xcA11bde05977b3631167028862bE2a173976CA11 | 系统批量执行 ADL 和到期结算 |
Future | 0x8b548c8f5868da732EAE86B2D05FB0Fc1d0FD9ef | 期货资产(assetType) |
Option | 0xE0d174345C267Af0950b8e9CCf801A3f292F9890 | 期权资产(assetType) |
Cash | 0x7253E420734141D4af99826A840dB6E3aFa0dc0c | 现金资产(assetType) |
StrategyStorage | 0x280272a7593bf53f2196D8cB3222871C5b84b72E | 策略 NFT 合约 |
Arbitrum 主网合约地址
合约名 | 合约地址 | 说明 |
---|---|---|
PortfolioMarginManager | 0x7E2E4d07F99f6f6495B8e7f68da087bE5937Ead2 | 组合保证金清结算层:清算标记、ADL 操作、到期结算 |
DualManager | 0x5759D9776d16d0FB32582680A589E6138642c466 | 双币理财清结算层:双币理财到期结算 |
Vault | 0x686354b37102C1132bBd950BddB5bAF120b125cF | Dederi 平台金库合约 |
StandardPMRFQ | 0xFdd38e7cB35AE3A0a8f1c811742501f56f0c1Dbb | 组合保证金 RFQ 合约-交互入口 |
DualRFQ | 0xaF4596343351c0AdE35fFBE1295AcC541315f2e3 | 双币理财 RFQ 合约-交互入口 |
StrategyQuery | 0x4861805D62c5A1a53E602Dd2946db03b4C9e4e46 | 查询策略的接口 |
Oracle | 0x03Cb664C754489f83BF2f76f6D18De11F76e4DE0 | Dederi 预言机合约 |
Multicall | 0xcA11bde05977b3631167028862bE2a173976CA11 | 系统批量执行 ADL 和到期结算 |
Future | 0x676EBAef19613A5F5E028B9d7c7825a771F706a1 | 期货资产(assetType) |
Option | 0xeCBe101e9fEAEa9bD36565A9cdf7b3e1ce9362Fd | 期权资产(assetType) |
Cash | 0x8a89be4749289c815a65a4f227Ae5F859f7E3D9c | 现金资产(assetType) |
StrategyStorage | 0xb9c719d8d7Bf57D44be640458B1c08d33496A947 | 策略 NFT 合约 |
金库合约接口说明
deposit
向 dederi 金库充值
-
接口
Vault.deposit(address token, address depositer, uint256 amountWithTokenDecimals)
-
参数
Name Type Description token address 充值的 token 合约地址 depositer address 接收地址 amountWithTokenDecimals uint256 充值金额
getUserNonce
获取用户余额最新的快照 nonce。
-
接口
Vault.getUserNonce(address user) external view returns (uint256)
-
参数
Name Type Description user address 用户地址 -
返回值
Name Type Description userNonce uint256 快照 nonce
getUserBalance
获取用户余额。
-
接口
Vault.getUserBalance(address user, address token) external view returns (uint256)
-
参数
Name Type Description user address 用户地址 token address token 地址 -
Return Values
Name Type Description userBalance uint256 用户余额
getVaultBalance
获取用户余额。
-
接口
Vault.getVaultBalance(address token)external view returns(uint256)
-
参数
Name Type Description token address token 地址 -
Return Values
Name Type Description vaultBalance uint256 用户余额
组合保证金 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
}