DeFi API

生成领取奖励金交易的调用数据#

描述:该 API 将提供领取奖励交易的调用数据。

请求地址#

POST https://www.okx.com/api/v5/defi/transaction/bonus

请求参数#

参数名称相关描述参数类型必传数据类型
address用户钱包地址请求体String
investmentId投资品 ID请求体String
userInputList用户输入代币信息请求体Array[Struct]
>chainId区块链 ID (默认:投资品网络)请求体String
>coinAmount认购数量请求体String
>tokenAddress认购代币的智能合约地址 (默认:投资品代币地址)请求体String
expectOutputLIst用户预期收益信息请求体Array[Struct]
>chainId区块链 ID请求体String
>coinAmount认购数量请求体String
>tokenAddress认购代币的智能合约地址请求体String
extra具体含义见备注请求体String

备注:#

extra 用法 领取奖励金

  • a. key:claimIndex (Number)。 含义:需领取的 ID,这里获取。支持协议例如:Ankr、Benqi、Stader、Lido。如果返回结果字段,这个接口可以拿到用户持仓。rewardDefiTokenInfo.claimMode 值为 1,代表有二级页,则可以调用这个接口,得到奖励清单。领取某个奖励需要关注几个字段:
  • canClaimAll:能否全部领取
  • rewardTokenInfos.claimIndex:标识某个奖励的 ID
  • callDataRewardType:1:可领取奖励;2:过期奖励;3:不可领取的奖励。Call data Extra 字段传参:
  1. 如果 canClaimAll = true (目前只有 BENQI/Tranchess )
  • claimIndex 长度为 1 会领取 1 个奖励;
{"extra" : "{\"claimIndex\":[\"2\"]}" }
  • claimIndex长度大于 1 会领取所有可以领取的奖励
{"extra" : "{\"claimIndex\":[\"2\",\"3\"]}" }
  1. 如果 canClaimAll = false,不支持全部领取,claimIndex 长度只能为 1
{"extra" : "{\"claimIndex\":[\"2\"]}" }
  1. 如果 callDataRewardType = 2,且需要领取奖励 (仅 BENQI),claimOverdue = true 过期也可以领取,但是会领取另外的币;默认缺省值是 false,过期则不领取,等下个领取周期再领取指定币种奖励金。
{"extra": "{\"claimOverdue\":1,\"claimIndex\":[\"2\"]}"}
  • b. key:analysisPlatformId (Number)。 含义:领取整个平台的奖励金,这里获取。支持平台包括: Compound、Aave V2、WePiggy、Venus、Aave V3、BENQI、Radiant、Geist finance、Tender、Compound V3、SonneFinance、Clearpool。

响应参数#

参数名称相关描述数据类型
dataListCall data 数据信息Array[Struct]
>from发送地址 (用户地址)String
>to接受地址 (目标合约地址)String
>value转账金额 (原生代币数量,默认为空字符串 )String
>serializedDataCall data 数据String
>originalData原始数据 (JSON)JSON String
>callDataType操作类型 (授权、申购、赎回、领取)String
>signatureData签名 CallData 数据信息,可用于验证数据由欧易生成String

备注:#

验签方法:

  1. 使用 signatureData 签名信息计算出 r、s、v。
  2. 与 to + serializedData + originalData 拼接成的字符串计算出验签 hash。
  3. 恢复公钥验证。可由接入客户选则是否验签,如果验签成功,则说明该数据由欧易签名生成。

领取协议奖励示例#

请求示例#

shell
curl --location 'https://www.okx.com/api/v5/defi/transaction/bonus' \
--header 'OK-ACCESS-KEY: 9c****77' \
--header 'OK-ACCESS-PASSPHRASE: p****d' \
--header 'Content-Type: application/json' \
--data '{
  "address": "0x7f****da",
  "expectOutputList": [
    {
      "chainId": 1,
      "coinAmount": "1065142752604499571",
      "tokenAddress": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"
    }
  ],
  "investmentId": "10003",
  "extra": "{\"claimOverdue\":0,\"claimIndex\":[\"1286\"],\"callDataExtJson\":\"\",\"redeemCalldataExtInfo\":[],\"rewardAddress\":\"\"}"
}'

响应示例#

200
{
    "code": 0,
    "msg": "",
    "data": {
        "dataList": [
            {
                "callDataType": "CLAIM",
                "from": "0x7f****da",
                "to": "0x9e****99",
                "value": "0x0",
                "serializedData": "0x46e04a2f000000000000000000000000000000000000000000000000000000000000042a",
                "originalData": "{\"callDataType\":\"CLAIM\",\"methodDefine\":\"claimTokens(uint256)\",\"methodId\":\"0x46e04a2f\",\"methodType\":\"METHOD_ID\",\"params\":{\"params\":[\"1066\"]},\"useAdapter\":false}",
                "signatureData": "e35e234d1568e13f5b7a9bd175ae947268dc3e817973120381fc8eecda78f71633ff67564c6460e388a2ca60daab62ce68f8952387e48ce63c19cad38f332c941b"
            }
        ]
    }
}