Skip to main content

Retroactive Rewards

Airdrops are a powerful way for projects like Odos to reward active early participants on the platform and align incentives going forward to continue active usage of Odos.

This model's objective is to transparently distribute our airdrop to Odos' users in a way that rewards the beneficial behaviors users have expressed and minimizes the risk of gaming the system. The model leverages data from the schema provided here to calculate user scores and determine eligibility and reward amounts for the airdrop.

The main goal of using this transparent objective function is for users to feel fairly compensated for their participation and consistent usage of Odos.

As presented below, we first filter out wash traders, arbitrage traders, and Sybil addresses from all the past trades.

Wash Trading & Arbitrage Trading

The wash trading detection methodology is based on identifying patterns of trades conducted by the same user that involve exchanging similar assets within a short time frame.

To detect potential wash trades, the methodology pairs trades conducted by the same user where the output tokens of one trade match the input tokens of another trade and vice versa.

The next step involves calculating the time and volume differences between paired trades. The time difference is measured in seconds between the timestamps of two paired trades, while the volume difference is calculated as the absolute difference in trade volumes. The time difference is used because wash trades typically occur within short time intervals, while the volume difference helps identify trades where the token amounts being swapped are nearly identical.

A wash trade is identified when two trades on the same chain have a time difference below a predefined threshold of 600 seconds and a volume difference below a specified USD value of $1.

An arbitrage trade is identified when two trades on different chains meet the same time and volume criteria but occur across different blockchains.

Sybil Analysis

The goal of Sybil detection is to uncover malicious actors attempting to manipulate the reward system. A Sybil attack typically involves a single entity programmatically operating multiple wallets. By leveraging this insight and assuming that a gas fee is required to operate wallets on a blockchain, we began by linking addresses based on their first funders.

Each wallet serves as a node, while the initial funding transaction acts as an edge, forming an Asset Transfer Graph (ATG) that focuses on the wallets of interest for Sybil detection. Once the graph is established, we apply a community detection algorithm to partition the ATG into clusters of interconnected wallets. These communities can be further subdivided if necessary, and a sophisticated scoring algorithm incorporating community statistics is then used to classify whether a community exhibits Sybil-like behavior.

Overarching Function

Cut-off & Snapshot

A minimum of at least $100 traded and at least 3 unique days of trading over t is applied to filter out smaller trades. This results in 494,278 addresses being incentivized, removing Sybils and wash traders. This cut-off is applied before normalizing is done.

Eligible historical trades for the reward program are based on a snapshot taken from March 11, 2022, to August 28, 2024.

Applied Scoring Function

Based on the schema provided, we intend to reward users' past behavior on the Odos platform. We take a snapshot of the historical trades, and the overarching function for each user i is in the following form:

max Si(t)=(CSiCS_Weeklyi)(t)VOL_Scorei(t)0t(GAS_Scorei(t)+VAR_Scorei(t)+ωNFT_mintersi(t))dt\mathrm{max}\ S_i(t) = \sqrt{\left(\mathrm{CS}_i \cdot \mathrm{CS\_Weekly}_i\right)(t)} \cdot \mathrm{VOL\_Score}_i(t) \cdot \sum_{0}^{t} \left( \sqrt{\mathrm{GAS\_Score}_i(t)} + \mathrm{VAR\_Score}_i(t) + \omega \cdot \mathrm{NFT\_minters}_i(t) \right) dt

Where:

  • Si(t)S_i(t) is the score for each user i over period t.
  • ω\omega is a multiplier applied to NFT_minters and set at 0.5.
  • CSi(t)CS_i(t) and CS_Weeklyi(t)CS\_Weekly_i(t) are the daily and weekly consistency scores for user i over period t, respectively (see Consistency of Trading section below for more details).
  • Gas_Scorei(t)Gas\_Score_i(t) is the total gas consumed by user i over period t. This value is calculated in USD by aggregating gas_used×gas_price_in_wei×median_price_open_closegas\_used \times gas\_price\_in\_wei \times median\_price\_open\_close of native token on each chain user i has traded on over period t.
  • VOL_Scorei(t)=SPTi(t)3\text{VOL\_Score}_i(t) = \sqrt[3]{SPT_i(t)}, where SPTi(t)\text{SPT}_i(t) is the split of different custom types of trades conducted by trader i over period t.
VAR_Scorei(t)=(unique_tokens_tradedi(t)unique_chainsi(t))\text{VAR\_Score}_i(t) = \sqrt{(\text{unique\_tokens\_traded}_i(t) \cdot \text{unique\_chains}_i(t))}

Ready to Dive In?