Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add relayer fee configuration to relayer #571

Merged
merged 8 commits into from
Aug 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 34 additions & 34 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace.package]
version = "0.5.9-dev"
version = "0.5.10-dev"
authors = ["Webb Developers <drew@webb.tools>"]
license = "Apache-2.0"
documentation = "https://docs.rs/webb-relayer"
Expand Down
26 changes: 26 additions & 0 deletions config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ following section we will describe the different configuration entries and how t
- [beneficiary](#beneficiary)
- [tx-queue](#tx-queue)
- [max-sleep-interval](#max-sleep-interval)
- [relayer-fee-config](#relayer-fee-config)
- [relayer-profit-percent](#relayer-profit-percent)
- [max-refund-amount](#max-refund-amount)
- [contracts](#contracts)
- [contract](#contract)
- [address](#address)
Expand Down Expand Up @@ -469,6 +472,29 @@ Example:
tx-queue = { max-sleep-interval = 5000, polling-interval = 12000 }
```

#### Relayer fee Config
This configuration is used to configure profit percentage margin for relayer and set maximum amount relayer can refund to user while withdrawing.

##### relayer-profit-percent
The percentage of profit relayer will get from the transaction fee.

- Type: `number`
- Required: `false`
- Default: `5`

##### max-refund-amount
The maximum amount of native token that relayer will refund to the user in USD.

- Type: `number`
- Required: `false`
- Default: `5`

Example:

```toml
relayer-fee-config = { relayer-profit-percent= 5, max-refund-amount = 5 }
```

#### Contracts

The contracts section is used to configure the contracts that the relayer will use to interact with
Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-blanknet/athena.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ chain-id = 5002
private-key = "$ATHENA_PRIVATE_KEY"

tx-queue = { max-sleep-interval = 1500, polling-interval = 12000 }
# The relayer fee configuration for this chain.
# relayer-profit-percentis percentage of profit relayer will get from the transaction fee.
# max-refund-amount is the maximum amount of native token that relayer will refund to the user( in usd)
relayer-fee-config = { relayer-profit-percent= 5, max-refund-amount = 5 }
# Value to indicate that the relayer should enable services for this chain
enabled = true

Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-blanknet/demeter.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ chain-id = 5003
# then we should process it as a mnemonic string: 'word two three four ...'
private-key = "$DEMETER_PRIVATE_KEY"
tx-queue = { max-sleep-interval = 1500, polling-interval = 12000 }
# The relayer fee configuration for this chain.
# relayer-profit-percentis percentage of profit relayer will get from the transaction fee.
# max-refund-amount is the maximum amount of native token that relayer will refund to the user( in usd)
relayer-fee-config = { relayer-profit-percent = 5, max-refund-amount = 5 }
# Value to indicate that the relayer should enable services for this chain
enabled = true

Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-blanknet/hermes.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ chain-id = 5001
# then we should process it as a mnemonic string: 'word two three four ...'
private-key = "$HERMES_PRIVATE_KEY"
tx-queue = { max-sleep-interval = 1500, polling-interval = 12000 }
# The relayer fee configuration for this chain.
# relayer-profit-percentis percentage of profit relayer will get from the transaction fee.
# max-refund-amount is the maximum amount of native token that relayer will refund to the user( in usd)
relayer-fee-config = { relayer-profit-percent= 5, max-refund-amount = 5 }
# Value to indicate that the relayer should enable services for this chain
enabled = true

Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-local-tangle/athena.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
"max-sleep-interval": 1500,
"polling-interval": 12000
},
"relayer-fee-config" : {
"relayer-profit-percent": 5,
"max-refund-amount": 5
},
"enabled": true,
"contracts": [
{
Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-local-tangle/demeter.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
"max-sleep-interval": 1500,
"polling-interval": 12000
},
"relayer-fee-config" : {
"relayer-profit-percent": 5,
"max-refund-amount": 5
},
"enabled": true,
"contracts": [
{
Expand Down
4 changes: 4 additions & 0 deletions config/development/evm-local-tangle/hermes.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
"max-sleep-interval": 1500,
"polling-interval": 12000
},
"relayer-fee-config" : {
"relayer-profit-percent": 5,
"max-refund-amount": 5
},
"enabled": true,
"contracts": [
{
Expand Down
22 changes: 22 additions & 0 deletions crates/relayer-config/src/evm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,33 @@ pub struct EvmChainConfig {
/// TxQueue configuration
#[serde(skip_serializing, default)]
pub tx_queue: TxQueueConfig,
/// Relayer fee configuration
#[serde(default)]
pub relayer_fee_config: RelayerFeeConfig,
/// Block poller/listening configuration
#[serde(skip_serializing, default)]
pub block_poller: Option<BlockPollerConfig>,
}

/// Transaction withdraw fee configuration.
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all(serialize = "camelCase", deserialize = "kebab-case"))]
pub struct RelayerFeeConfig {
/// Relayer profit percent per transaction fee for relaying
pub relayer_profit_percent: f64,
/// Maximum refund amount per transaction relaying
pub max_refund_amount: f64,
}

impl Default for RelayerFeeConfig {
fn default() -> Self {
Self {
relayer_profit_percent: 5.,
max_refund_amount: 5.,
}
}
}

/// configuration for adding http endpoints.
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(untagged)]
Expand Down
Loading
Loading