Skip to content

Commit d67d719

Browse files
authored
Add support for private transaction mode (#56)
* Change private transaction type * change example
1 parent 062a96d commit d67d719

12 files changed

+115
-28
lines changed

examples/defender-test-project/serverless.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ resources:
5757
- '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2'
5858
# optional
5959
eip1559-pricing: true
60-
private-transactions: true
60+
private-transactions: 'flashbots-fast'
6161

6262
secrets:
6363
# optional - global secrets are not affected by stackName changes

src/types/docs-schemas/definitions.schema.json

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,25 +108,37 @@
108108
}
109109
]
110110
},
111+
"flashbotTransactionMode": {
112+
"title": "FlashbotTransactionMode",
113+
"type": "string",
114+
"description": "Fast mode has 2 key differences from the default Protect experience: \n1. Shared with all builders: By default, Protect transactions are only shared with the Flashbots Builder, which builds only a subset of all Ethereum blocks. In fast mode, transactions are shared with all registered builders to increase the number of blocks the user's transaction can be included in.\n2. Larger refund paid to validator: By default, only 10% of MEV-Share refunds are paid to validators. In fast mode, validators receive 50% of refunds which makes it more likely that the user’s transactions will be chosen in a given block.",
115+
"enum": ["flashbots-normal", "flashbots-fast"]
116+
},
117+
"privateTransactionMode": {
118+
"title": "PrivateTransactionMode",
119+
"oneOf": [
120+
{
121+
"$ref": "definitions.schema.json#/definitions/flashbotTransactionMode"
122+
}
123+
]
124+
},
111125
"policy": {
112126
"title": "Policy",
113127
"type": "object",
114128
"properties": {
115-
"gas-price-cap": {
116-
"type": "integer"
117-
},
118-
"whitelist-receivers": {
119-
"title": "WhitelistReceivers",
120-
"type": "array",
121-
"items": {
122-
"type": "string"
123-
}
124-
},
125-
"eip1559-pricing": {
126-
"type": "boolean"
127-
},
129+
"gas-price-cap": { "type": "integer" },
130+
"whitelist-receivers": { "title": "WhitelistReceivers", "type": "array", "items": { "type": "string" } },
131+
"eip1559-pricing": { "type": "boolean" },
128132
"private-transactions": {
129-
"type": "boolean"
133+
"oneOf": [
134+
{
135+
"description": "Backwards compatibility with the old private transaction mode",
136+
"type": "boolean"
137+
},
138+
{
139+
"$ref": "definitions.schema.json#/definitions/privateTransactionMode"
140+
}
141+
]
130142
}
131143
}
132144
},
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## 0 Type
2+
3+
`string` ([FlashbotTransactionMode](definitions-definitions-flashbottransactionmode.md))
4+
5+
## 0 Constraints
6+
7+
**enum**: the value of this property must be equal to one of the following values:
8+
9+
| Value | Explanation |
10+
| :------------------- | :---------- |
11+
| `"flashbots-normal"` | |
12+
| `"flashbots-fast"` | |
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## 0 Type
2+
3+
`boolean`
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
## private-transactions Type
22

3-
`boolean`
3+
merged type ([Details](definitions-definitions-policy-properties-private-transactions.md))
4+
5+
one (and only one) of
6+
7+
* [Untitled boolean in Definitions](definitions-definitions-policy-properties-private-transactions-oneof-0.md "check type definition")
8+
9+
* one (and only one) of
10+
11+
* [FlashbotTransactionMode](definitions-definitions-flashbottransactionmode.md "check type definition")

src/types/docs/definitions-definitions-policy.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
| [gas-price-cap](#gas-price-cap) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "definitions.schema.json#/definitions/policy/properties/gas-price-cap") |
1414
| [whitelist-receivers](#whitelist-receivers) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "definitions.schema.json#/definitions/policy/properties/whitelist-receivers") |
1515
| [eip1559-pricing](#eip1559-pricing) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "definitions.schema.json#/definitions/policy/properties/eip1559-pricing") |
16-
| [private-transactions](#private-transactions) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions") |
16+
| [private-transactions](#private-transactions) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions") |
1717

1818
## gas-price-cap
1919

@@ -77,12 +77,20 @@
7777

7878
* is optional
7979

80-
* Type: `boolean`
80+
* Type: merged type ([Details](definitions-definitions-policy-properties-private-transactions.md))
8181

8282
* cannot be null
8383

8484
* defined in: [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions")
8585

8686
### private-transactions Type
8787

88-
`boolean`
88+
merged type ([Details](definitions-definitions-policy-properties-private-transactions.md))
89+
90+
one (and only one) of
91+
92+
* [Untitled boolean in Definitions](definitions-definitions-policy-properties-private-transactions-oneof-0.md "check type definition")
93+
94+
* one (and only one) of
95+
96+
* [FlashbotTransactionMode](definitions-definitions-flashbottransactionmode.md "check type definition")
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## 1 Type
2+
3+
merged type ([PrivateTransactionMode](definitions-definitions-privatetransactionmode.md))
4+
5+
one (and only one) of
6+
7+
* [FlashbotTransactionMode](definitions-definitions-flashbottransactionmode.md "check type definition")

src/types/docs/definitions.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,28 @@ Reference this group by using
9292
| Property | Type | Required | Nullable | Defined by |
9393
| :------- | :--- | :------- | :------- | :--------- |
9494

95+
## Definitions group flashbotTransactionMode
96+
97+
Reference this group by using
98+
99+
```json
100+
{"$ref":"definitions.schema.json#/definitions/flashbotTransactionMode"}
101+
```
102+
103+
| Property | Type | Required | Nullable | Defined by |
104+
| :------- | :--- | :------- | :------- | :--------- |
105+
106+
## Definitions group privateTransactionMode
107+
108+
Reference this group by using
109+
110+
```json
111+
{"$ref":"definitions.schema.json#/definitions/privateTransactionMode"}
112+
```
113+
114+
| Property | Type | Required | Nullable | Defined by |
115+
| :------- | :--- | :------- | :------- | :--------- |
116+
95117
## Definitions group policy
96118

97119
Reference this group by using
@@ -105,7 +127,7 @@ Reference this group by using
105127
| [gas-price-cap](#gas-price-cap) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "definitions.schema.json#/definitions/policy/properties/gas-price-cap") |
106128
| [whitelist-receivers](#whitelist-receivers) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "definitions.schema.json#/definitions/policy/properties/whitelist-receivers") |
107129
| [eip1559-pricing](#eip1559-pricing) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "definitions.schema.json#/definitions/policy/properties/eip1559-pricing") |
108-
| [private-transactions](#private-transactions) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions") |
130+
| [private-transactions](#private-transactions) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions") |
109131

110132
### gas-price-cap
111133

@@ -169,15 +191,23 @@ Reference this group by using
169191

170192
* is optional
171193

172-
* Type: `boolean`
194+
* Type: merged type ([Details](definitions-definitions-policy-properties-private-transactions.md))
173195

174196
* cannot be null
175197

176198
* defined in: [Definitions](definitions-definitions-policy-properties-private-transactions.md "definitions.schema.json#/definitions/policy/properties/private-transactions")
177199

178200
#### private-transactions Type
179201

180-
`boolean`
202+
merged type ([Details](definitions-definitions-policy-properties-private-transactions.md))
203+
204+
one (and only one) of
205+
206+
* [Untitled boolean in Definitions](definitions-definitions-policy-properties-private-transactions-oneof-0.md "check type definition")
207+
208+
* one (and only one) of
209+
210+
* [FlashbotTransactionMode](definitions-definitions-privatetransactionmode-oneof-flashbottransactionmode.md "check type definition")
181211

182212
## Definitions group relayer
183213

src/types/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { JsonFragment } from 'ethers';
22

33
import { Network, SupportedNetwork } from '@openzeppelin/defender-sdk-base-client';
44
import { Contract } from '@openzeppelin/defender-sdk-proposal-client/lib/models/contract';
5-
import { RelayerGetResponse, RelayerApiKey } from '@openzeppelin/defender-sdk-relay-client/lib/models';
5+
import { RelayerGetResponse, RelayerApiKey, PrivateTransactionMode } from '@openzeppelin/defender-sdk-relay-client/lib/models';
66
import { DefenderApiResponseError } from '@openzeppelin/defender-sdk-base-client/lib/api/api-error';
77

88
import {
@@ -96,7 +96,7 @@ export type YPolicy = {
9696
'gas-price-cap'?: number;
9797
'whitelist-receivers'?: string[];
9898
'eip1559-pricing'?: boolean;
99-
'private-transactions'?: boolean;
99+
'private-transactions'?: boolean | PrivateTransactionMode;
100100
};
101101

102102
export type YRelayer = {

src/types/schemas/definitions.schema.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)