Skip to main content
Attribution links your deposit and withdrawal volume to your integration — enabling fee sharing and volume reporting. If you cannot install the Gauntlet SDK, or have an existing integration that you do not want to migrate, you can add attribution manually using the ERC-8021 standard. You must request a builder code from Gauntlet — using an unregistered string appends bytes to calldata but volume will not be counted. Request your builder code during partnership onboarding.

Encode the Attribution Suffix

Attribution is an ERC-8021 calldata suffix: the marker 0x8021 followed by your builder code encoded as UTF-8 hex. Construct it once and reuse it across all transactions.
Once the builder code is encoded, it’s ready to be included in the transaction payload. Depending on the tools used for signing, the process is different. The options are Wagmi (most common) and embedded wallets (ex. privy).

With wagmi

wagmi’s writeContract accepts a dataSuffix parameter that it appends to the ABI-encoded calldata before submitting to the wallet. Pass the attribution string there — the suffix is preserved even when the underlying EIP-1193 provider re-encodes the transaction.

Check and request token approval

Wait for the approval to confirm before submitting the deposit — the deposit reverts if the allowance hasn’t landed yet.

Request a deposit

Deposits are queued and settled by the Gauntlet solver (~2 hours). Check the user’s pendingDeposit balance using the API to confirm the request landed.

Request a withdrawal

For withdrawals, the spender is the provisioner and the token being approved is the vault share token (VAULT_ADDRESS), not the asset or numeraire token.

With a Privy Wallet (Embedded)

Embedded wallets expose a sendTransaction function that accepts raw transaction parameters including a data field. Encode the full calldata manually and append the attribution suffix before sending — attribution is baked into the bytes and cannot be stripped by the provider.

Check and request token approval

Wait for the approval to confirm before submitting the deposit — the deposit reverts if the allowance hasn’t landed yet. sendTransaction here refers to Privy’s transaction function — either useSendTransaction from @privy-io/react-auth or the equivalent method on the embedded wallet object.

Request a deposit

Deposits are queued and settled by the Gauntlet solver (~2 hours). Check the user’s pendingDeposit balance using the API to confirm the request landed.

Request a withdrawal

For withdrawals, the spender is the provisioner and the token being approved is the vault share token (VAULT_ADDRESS), not the asset or numeraire token. Read the user’s share balance from the vault.

What’s Next

Attribution with SDK

How the SDK handles attribution automatically and how to monitor attributed volume.

Deposit Your First Dollar

SDK-based deposit and withdrawal flow using the Gauntlet SDK.