Skip to content

Commit

Permalink
Add relayer fee configuration to relayer (#571)
Browse files Browse the repository at this point in the history
  • Loading branch information
salman01zp authored Aug 9, 2023
1 parent 1b020b8 commit 6b70213
Show file tree
Hide file tree
Showing 18 changed files with 169 additions and 66 deletions.
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

0 comments on commit 6b70213

Please sign in to comment.