Partner Rewards Integration

Up to 5% of ROOK Rewards can be received by Parters.

Partner rewards integration guide

Registered partners receive 5% of the filled order's reward based on the amount of arbitrage captured by a keeper. The remaining 95% goes to the user. This incentivizes partners to integrate with the HidingBook and enables them to generate rewards from the integration. Partners that do not use a partner address will continue to see 100% of rewards going to users. Partners may use a private key based Ethereum address or a smart contract as their partner address. If using a smart contract, make sure you can withdraw/transfer the ROOK tokens from the contract.

Registering a Partner Address to Claim Partner Rewards

Contact a KeeperDAO admin to register your address

Setting the pPartner Address in the Order

In order for the order to be credited to the partner, the partner address must be set in the order's salt so that our rewards server can extract it.

The salt serves two purposes:

  1. Associate a partner with the order for rewards purposes

  2. Provide uniqueness to the order

The salt in 0x can also be used for doing batch cancel operations, but we'll be using our soft cancel feature for that instead. We recommend NOT using 0x's batch cancel APIs that rely on salt for the purposes of the HidingBook.

The first 40 characters of the salt are the partner address. All remaining characters will be provide order uniqueness. For that, you have two options. You can either set it randomly or you can set it to the unix epoch time.

0x96AeA3a04627f96A038B348B4D34Ac24dF08820A0000000000000179A3280AC8

or

0x96AeA3a04627f96A038B348B4D34Ac24dF08820A0385A85D8EF39116E7D9C07D

Always sanity check your partner address is exactly the first 40 characters of the 64 character string (not including the 0x). Now that we've set the salt properly to include the partnerAddress, we must convert he salt to an uint.

0x96AeA3a04627f96A038B348B4D34Ac24dF08820A0000000000000179A3280AC8

becomes

68155487982395695614611419072989473446957465671524826034846903191777055345352

This is what gets set in the order JSON.

Order with partner address as the salt

{
"order": {
"maker": "0xca77dc47eec9e1c46c9f541ba0f222e741d6236b",
"taker": "0x0000000000000000000000000000000000000000",
"makerAmount": "25000000",
"takerAmount": "46990500000000000",
"makerToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"takerToken": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"salt": 68155487982395695614611419072989473446957465671524826034846903191777055345352,
"expiry": "1611001201",
"chainId": 1,
"txOrigin": "0xbd49a97300e10325c78d6b4ec864af31623bb5dd",
"pool": "0x0000000000000000000000000000000000000000000000000000000000000017",
"verifyingContract": "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
"signature": {
"signatureType": 3,
"v": 28,
"r": "0xc6e19b108ca4d059d2999e8011237f7a73a4b034993bc4256ab9bc8e6dddf220",
"s": "0x1f2fd0d9ccb5e022b1f51dd0ad76695ebabdcfbb276aa3b2d306dd1952ca9531"
}
},

And that's it. You simply submit orders to the HidingBook exactly as you normally would, the only difference is the salt.

Documentation on Claiming Rewards Programmatically

rewards-distribution-docs