生成领取奖励金交易的调用数据#
描述:该 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 字段传参:
- 如果 canClaimAll = true (目前只有 BENQI/Tranchess )
- claimIndex 长度为 1 会领取 1 个奖励;
{"extra" : "{\"claimIndex\":[\"2\"]}" }
- claimIndex长度大于 1 会领取所有可以领取的奖励
{"extra" : "{\"claimIndex\":[\"2\",\"3\"]}" }
- 如果 canClaimAll = false,不支持全部领取,claimIndex 长度只能为 1
{"extra" : "{\"claimIndex\":[\"2\"]}" }
- 如果 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。
响应参数#
参数名称 | 相关描述 | 数据类型 |
---|---|---|
dataList | Call data 数据信息 | Array[Struct] |
>from | 发送地址 (用户地址) | String |
>to | 接受地址 (目标合约地址) | String |
>value | 转账金额 (原生代币数量,默认为空字符串 ) | String |
>serializedData | Call data 数据 | String |
>originalData | 原始数据 (JSON) | JSON String |
>callDataType | 操作类型 (授权、申购、赎回、领取) | String |
>signatureData | 签名 CallData 数据信息,可用于验证数据由欧易生成 | String |
备注:#
验签方法:
- 使用 signatureData 签名信息计算出 r、s、v。
- 与 to + serializedData + originalData 拼接成的字符串计算出验签 hash。
- 恢复公钥验证。可由接入客户选则是否验签,如果验签成功,则说明该数据由欧易签名生成。
领取协议奖励示例#
请求示例#
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"
}
]
}
}