@bananapus/suckers-v6 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGE_LOG.md +66 -7
- package/package.json +1 -1
- package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSucker.json +0 -1425
- package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSuckerDeployer.json +0 -391
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_1.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_2.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_1.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_2.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum/JBSuckerRegistry.json +0 -690
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSucker.json +0 -1425
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSuckerDeployer.json +0 -391
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_1.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_2.json +0 -433
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_1.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_2.json +0 -1479
- package/deployments/nana-suckers-v5/arbitrum_sepolia/JBSuckerRegistry.json +0 -690
- package/deployments/nana-suckers-v5/base/JBBaseSucker.json +0 -1389
- package/deployments/nana-suckers-v5/base/JBBaseSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/base/JBCCIPSucker.json +0 -1483
- package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer.json +0 -436
- package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_1.json +0 -436
- package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_2.json +0 -436
- package/deployments/nana-suckers-v5/base/JBCCIPSucker_1.json +0 -1483
- package/deployments/nana-suckers-v5/base/JBCCIPSucker_2.json +0 -1483
- package/deployments/nana-suckers-v5/base/JBSuckerRegistry.json +0 -694
- package/deployments/nana-suckers-v5/base_sepolia/JBBaseSucker.json +0 -1389
- package/deployments/nana-suckers-v5/base_sepolia/JBBaseSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker.json +0 -1483
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer.json +0 -436
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_1.json +0 -436
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_2.json +0 -436
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_1.json +0 -1483
- package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_2.json +0 -1483
- package/deployments/nana-suckers-v5/base_sepolia/JBSuckerRegistry.json +0 -694
- package/deployments/nana-suckers-v5/ethereum/JBArbitrumSucker.json +0 -1429
- package/deployments/nana-suckers-v5/ethereum/JBArbitrumSuckerDeployer.json +0 -394
- package/deployments/nana-suckers-v5/ethereum/JBBaseSucker.json +0 -1389
- package/deployments/nana-suckers-v5/ethereum/JBBaseSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker.json +0 -1483
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer.json +0 -436
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_1.json +0 -436
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_2.json +0 -436
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_1.json +0 -1483
- package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_2.json +0 -1483
- package/deployments/nana-suckers-v5/ethereum/JBOptimismSucker.json +0 -1389
- package/deployments/nana-suckers-v5/ethereum/JBOptimismSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/ethereum/JBSuckerRegistry.json +0 -694
- package/deployments/nana-suckers-v5/optimism/JBCCIPSucker.json +0 -1479
- package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer.json +0 -433
- package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_1.json +0 -433
- package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_2.json +0 -433
- package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_1.json +0 -1479
- package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_2.json +0 -1479
- package/deployments/nana-suckers-v5/optimism/JBOptimismSucker.json +0 -1385
- package/deployments/nana-suckers-v5/optimism/JBOptimismSuckerDeployer.json +0 -373
- package/deployments/nana-suckers-v5/optimism/JBSuckerRegistry.json +0 -690
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker.json +0 -1483
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer.json +0 -436
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_1.json +0 -436
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_2.json +0 -436
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_1.json +0 -1483
- package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_2.json +0 -1483
- package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSucker.json +0 -1389
- package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/optimism_sepolia/JBSuckerRegistry.json +0 -694
- package/deployments/nana-suckers-v5/sepolia/JBArbitrumSucker.json +0 -1429
- package/deployments/nana-suckers-v5/sepolia/JBArbitrumSuckerDeployer.json +0 -394
- package/deployments/nana-suckers-v5/sepolia/JBBaseSucker.json +0 -1389
- package/deployments/nana-suckers-v5/sepolia/JBBaseSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker.json +0 -1483
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer.json +0 -436
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_1.json +0 -436
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_2.json +0 -436
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_1.json +0 -1483
- package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_2.json +0 -1483
- package/deployments/nana-suckers-v5/sepolia/JBOptimismSucker.json +0 -1389
- package/deployments/nana-suckers-v5/sepolia/JBOptimismSuckerDeployer.json +0 -376
- package/deployments/nana-suckers-v5/sepolia/JBSuckerRegistry.json +0 -694
package/CHANGE_LOG.md
CHANGED
|
@@ -17,6 +17,7 @@ The most pervasive breaking change in v6 is the systematic replacement of `addre
|
|
|
17
17
|
| `peer()` return type | `returns (address)` | `returns (bytes32)` |
|
|
18
18
|
| `prepare()` beneficiary param | `address beneficiary` | `bytes32 beneficiary` |
|
|
19
19
|
| `Claimed` event `beneficiary` | `address beneficiary` | `bytes32 beneficiary` |
|
|
20
|
+
| `Claimed` event `autoAddedToBalance` | `bool autoAddedToBalance` | _(removed)_ |
|
|
20
21
|
| `InsertToOutboxTree` event `beneficiary` | `address indexed beneficiary` | `bytes32 indexed beneficiary` |
|
|
21
22
|
|
|
22
23
|
All callers of `peer()` and `prepare()` must update to use `bytes32`. For EVM-to-EVM usage, addresses are left-padded to 32 bytes via `_toBytes32(address)`.
|
|
@@ -29,8 +30,10 @@ All callers of `peer()` and `prepare()` must update to use `bytes32`. For EVM-to
|
|
|
29
30
|
| `JBMessageRoot` | `token` | `address` | `bytes32` |
|
|
30
31
|
| `JBMessageRoot` | (new field) `version` | N/A | `uint8` (inserted as first field) |
|
|
31
32
|
| `JBRemoteToken` | `addr` | `address` | `bytes32` |
|
|
33
|
+
| `JBRemoteToken` | `minBridgeAmount` | `uint256` | _(removed)_ |
|
|
32
34
|
| `JBSuckersPair` | `remote` | `address` | `bytes32` |
|
|
33
35
|
| `JBTokenMapping` | `remoteToken` | `address` | `bytes32` |
|
|
36
|
+
| `JBTokenMapping` | `minBridgeAmount` | `uint256` | _(removed)_ |
|
|
34
37
|
|
|
35
38
|
These are ABI-breaking changes. All off-chain infrastructure (indexers, relayers, frontends) must update to use `bytes32` for these fields.
|
|
36
39
|
|
|
@@ -76,6 +79,48 @@ In v5, deployer errors were declared in `IJBSuckerDeployer` (the interface). In
|
|
|
76
79
|
|
|
77
80
|
Changed from `memory` to `calldata` for gas efficiency.
|
|
78
81
|
|
|
82
|
+
### 1.9 Anti-Spam Mechanism: `minBridgeAmount` Replaced by `toRemoteFee`
|
|
83
|
+
|
|
84
|
+
The v5 per-token `minBridgeAmount` anti-spam mechanism has been replaced by a global `toRemoteFee` in v6. This is a fundamental design change:
|
|
85
|
+
|
|
86
|
+
| Aspect | v5 | v6 |
|
|
87
|
+
|--------|----|----|
|
|
88
|
+
| Mechanism | Per-token minimum bridge threshold (`minBridgeAmount` in `JBRemoteToken`/`JBTokenMapping`) | Global ETH fee paid on every `toRemote()` call |
|
|
89
|
+
| Configuration | Set per-token during `mapTokens()` | Centralized in `JBSuckerRegistry`, admin-adjustable via `setToRemoteFee()` |
|
|
90
|
+
| Check | `_outboxOf[token].balance < remoteToken.minBridgeAmount` reverts with `JBSucker_QueueInsufficientSize` | `msg.value < toRemoteFee` reverts with `JBSucker_InsufficientMsgValue` |
|
|
91
|
+
| Fee destination | N/A (no fee, just a threshold) | Paid into `FEE_PROJECT_ID` via `terminal.pay()`. Caller receives fee project tokens. |
|
|
92
|
+
| Cap | None | `MAX_TO_REMOTE_FEE = 0.001 ether` |
|
|
93
|
+
|
|
94
|
+
The `JBSucker` constructor gained two new parameters: `feeProjectId` (the project that receives the fee, typically project ID 1) and `registry` (typed as `IJBSuckerRegistry`, which manages the global `toRemoteFee`). These replace the `addToBalanceMode` parameter. See section 1.10 for the `addToBalanceMode` removal.
|
|
95
|
+
|
|
96
|
+
### 1.10 `MANUAL` `AddToBalanceMode` Removed
|
|
97
|
+
|
|
98
|
+
The `MANUAL` option of `JBAddToBalanceMode` has been removed entirely. In v5, suckers could be deployed with either `MANUAL` or `ON_CLAIM` mode. In v6, balance is always added atomically during `claim()` (the `ON_CLAIM` behavior). This simplifies the sucker lifecycle.
|
|
99
|
+
|
|
100
|
+
| Removed in v6 | Description |
|
|
101
|
+
|----------------|-------------|
|
|
102
|
+
| `JBAddToBalanceMode` enum | Removed. Only had `MANUAL` and `ON_CLAIM`. |
|
|
103
|
+
| `ADD_TO_BALANCE_MODE` immutable | Removed from `JBSucker` and `IJBSucker`. |
|
|
104
|
+
| `addOutstandingAmountToBalance(address token)` | Public function removed from `IJBSucker` and `JBSucker`. Was only usable in `MANUAL` mode. |
|
|
105
|
+
| `JBSucker_ManualNotAllowed` error | Removed (was thrown when calling `addOutstandingAmountToBalance` in non-MANUAL mode). |
|
|
106
|
+
|
|
107
|
+
Note: `amountToAddToBalanceOf(address token)` is still present in v6 -- it is used internally by the always-on-claim flow.
|
|
108
|
+
|
|
109
|
+
### 1.11 JBSucker Constructor Change
|
|
110
|
+
|
|
111
|
+
| Parameter | v5 | v6 |
|
|
112
|
+
|-----------|----|----|
|
|
113
|
+
| `addToBalanceMode` | `JBAddToBalanceMode addToBalanceMode` | _(removed)_ |
|
|
114
|
+
| `feeProjectId` | _(not present)_ | `uint256 feeProjectId` |
|
|
115
|
+
| `registry` | _(not present)_ | `IJBSuckerRegistry registry` |
|
|
116
|
+
| `trusted_forwarder` naming | `address trusted_forwarder` | `address trustedForwarder` (camelCase) |
|
|
117
|
+
|
|
118
|
+
All subclass constructors (`JBOptimismSucker`, `JBArbitrumSucker`, `JBCCIPSucker`, `JBBaseSucker`, `JBCeloSucker`) are updated accordingly.
|
|
119
|
+
|
|
120
|
+
### 1.12 `initialize()` ERC2771 Fix
|
|
121
|
+
|
|
122
|
+
In v5, `JBSucker.initialize()` used `msg.sender` to set the `deployer` field. In v6, this was corrected to `_msgSender()` for ERC2771 meta-transaction compatibility. This is a behavioral fix: when called through a trusted forwarder, v5 would incorrectly record the forwarder address as the deployer instead of the actual sender.
|
|
123
|
+
|
|
79
124
|
---
|
|
80
125
|
|
|
81
126
|
## 2. New Features
|
|
@@ -100,6 +145,7 @@ Changed from `memory` to `calldata` for gas efficiency.
|
|
|
100
145
|
| `IJBSucker` | `StaleRootRejected(address indexed token, uint64 receivedNonce, uint64 currentNonce)` | Emitted when a received inbox root is rejected because its nonce is stale (not greater than the current nonce). Aids off-chain monitoring of out-of-order or duplicate message deliveries. |
|
|
101
146
|
| `IJBSuckerExtended` | `EmergencyExit(address indexed beneficiary, address indexed token, uint256 terminalTokenAmount, uint256 projectTokenCount, address caller)` | Emitted when a beneficiary exits through the emergency hatch. v5 had no event for emergency exits. |
|
|
102
147
|
| `JBCCIPSucker` | `TransportPaymentRefundFailed(address indexed recipient, uint256 amount)` | Emitted when a CCIP transport payment refund fails after a successful `ccipSend`. Replaces the v5 `JBCCIPSucker_FailedToRefundFee` revert to avoid reverting after the bridge message is committed. |
|
|
148
|
+
| `IJBSuckerRegistry` | `ToRemoteFeeChanged(uint256 oldFee, uint256 newFee, address caller)` | Emitted when the registry owner changes the global `toRemoteFee`. New in v6 (no v5 equivalent). |
|
|
103
149
|
|
|
104
150
|
### 2.4 New Errors
|
|
105
151
|
|
|
@@ -107,13 +153,16 @@ Changed from `memory` to `calldata` for gas efficiency.
|
|
|
107
153
|
|----------|-------|-------------|
|
|
108
154
|
| `JBSucker` | `JBSucker_AmountExceedsUint128(uint256 amount)` | Thrown when `terminalTokenAmount` or `projectTokenCount` exceeds `uint128` in `_insertIntoTree`. Guards against overflow for SVM/Solana compatibility. |
|
|
109
155
|
| `JBSucker` | `JBSucker_InvalidMessageVersion(uint8 received, uint8 expected)` | Thrown in `fromRemote` when the message version does not match `MESSAGE_VERSION`. Prevents processing incompatible messages. |
|
|
156
|
+
| `JBSucker` | `JBSucker_NothingToSend()` | Thrown in `toRemote()` when the outbox has zero balance and no unsent claims. Prevents unnecessary bridge calls. |
|
|
110
157
|
| `CCIPHelper` | `CCIPHelper_UnsupportedChain(uint256 chainId)` | Replaces bare `revert("Unsupported chain")` strings with a typed error. |
|
|
158
|
+
| `JBSuckerRegistry` | `JBSuckerRegistry_FeeExceedsMax(uint256 fee, uint256 max)` | Thrown when `setToRemoteFee` is called with a fee exceeding `MAX_TO_REMOTE_FEE`. |
|
|
111
159
|
|
|
112
160
|
### 2.5 New Constants
|
|
113
161
|
|
|
114
162
|
| Contract | Constant | Description |
|
|
115
163
|
|----------|----------|-------------|
|
|
116
164
|
| `JBSucker` | `uint8 public constant MESSAGE_VERSION = 1` | The message format version. Used to reject incompatible messages from remote chains. |
|
|
165
|
+
| `JBSuckerRegistry` | `uint256 public constant MAX_TO_REMOTE_FEE = 0.001 ether` | The maximum ETH fee the registry owner can set via `setToRemoteFee()`. |
|
|
117
166
|
|
|
118
167
|
### 2.6 New Internal Helpers
|
|
119
168
|
|
|
@@ -135,7 +184,7 @@ See section 2.3 above.
|
|
|
135
184
|
|
|
136
185
|
| Contract | Event | Change |
|
|
137
186
|
|----------|-------|--------|
|
|
138
|
-
| `IJBSucker` | `Claimed` | `beneficiary` field changed from `address` to `bytes32`. |
|
|
187
|
+
| `IJBSucker` | `Claimed` | `beneficiary` field changed from `address` to `bytes32`. `bool autoAddedToBalance` parameter removed (the `MANUAL` add-to-balance mode was removed in v6, so balance is always added on claim). |
|
|
139
188
|
| `IJBSucker` | `InsertToOutboxTree` | `beneficiary` indexed field changed from `address indexed` to `bytes32 indexed`. |
|
|
140
189
|
|
|
141
190
|
### 3.3 Unchanged Events
|
|
@@ -168,6 +217,8 @@ See section 2.4 above.
|
|
|
168
217
|
|----------|-------|-------|
|
|
169
218
|
| `JBArbitrumSucker` | `JBArbitrumSucker_ChainNotSupported(uint256 chainId)` | Error was declared but never used in v5. Removed. |
|
|
170
219
|
| `JBCCIPSucker` | `JBCCIPSucker_FailedToRefundFee()` | Replaced by `TransportPaymentRefundFailed` event. Refund failure no longer reverts. |
|
|
220
|
+
| `JBSucker` | `JBSucker_ManualNotAllowed(JBAddToBalanceMode mode)` | Removed along with `MANUAL` `AddToBalanceMode`. Balance is always added on claim in v6. |
|
|
221
|
+
| `JBSucker` | `JBSucker_QueueInsufficientSize(uint256 amount, uint256 minimumAmount)` | Removed. The per-token `minBridgeAmount` threshold was replaced by the global `toRemoteFee` mechanism. |
|
|
171
222
|
| `JBSuckerRegistry` | `JBSuckerRegistry_RulesetDoesNotAllowAddingSucker(uint256 projectId)` | Removed entirely (was declared but unused in v5). |
|
|
172
223
|
|
|
173
224
|
### 4.4 Moved Errors (Interface -> Contract)
|
|
@@ -194,8 +245,10 @@ See section 2.4 above.
|
|
|
194
245
|
| `JBMessageRoot` | `token` | `address` | `bytes32` | Cross-VM compatibility |
|
|
195
246
|
| `JBMessageRoot` | `version` | _(not present)_ | `uint8` | New field for message versioning (first field) |
|
|
196
247
|
| `JBRemoteToken` | `addr` | `address` | `bytes32` | Cross-VM compatibility |
|
|
248
|
+
| `JBRemoteToken` | `minBridgeAmount` | `uint256` | _(removed)_ | Anti-spam moved to global `toRemoteFee` in `JBSuckerRegistry` |
|
|
197
249
|
| `JBSuckersPair` | `remote` | `address` | `bytes32` | Cross-VM compatibility |
|
|
198
250
|
| `JBTokenMapping` | `remoteToken` | `address` | `bytes32` | Cross-VM compatibility |
|
|
251
|
+
| `JBTokenMapping` | `minBridgeAmount` | `uint256` | _(removed)_ | Anti-spam moved to global `toRemoteFee` in `JBSuckerRegistry` |
|
|
199
252
|
|
|
200
253
|
### 5.2 Unchanged Structs
|
|
201
254
|
|
|
@@ -234,6 +287,11 @@ See section 2.4 above.
|
|
|
234
287
|
| **`mapTokens` dust refund** | `mapTokens()` now refunds the remainder from integer division of `msg.value` when disabling multiple tokens, preventing dust ETH from being stuck in the contract. |
|
|
235
288
|
| **`_handleClaim` beneficiary conversion** | Converts `bytes32` beneficiary to `address` via `_toAddress()` before minting project tokens. |
|
|
236
289
|
| **`_sendRoot` message construction** | Now includes `version: MESSAGE_VERSION` in the `JBMessageRoot` struct. |
|
|
290
|
+
| **`toRemoteFee` anti-spam** | `toRemote()` now charges a global ETH fee (read from `REGISTRY.toRemoteFee()`) paid into `FEE_PROJECT_ID` via `terminal.pay()`. Replaces the v5 per-token `minBridgeAmount` threshold check. Fee payment is best-effort (try-catch): if the terminal doesn't exist or the pay call reverts, the fee is returned as transport payment. |
|
|
291
|
+
| **New immutables** | `FEE_PROJECT_ID` (`uint256`) and `REGISTRY` (`IJBSuckerRegistry`) added. `REGISTRY` is typed as `IJBSuckerRegistry` (not a raw `address`), avoiding casts at usage sites. |
|
|
292
|
+
| **`MANUAL` mode removed** | `ADD_TO_BALANCE_MODE` immutable, `addOutstandingAmountToBalance()` function, and `JBSucker_ManualNotAllowed` error all removed. Balance is always added atomically during `claim()`. |
|
|
293
|
+
| **Constructor parameter changes** | `addToBalanceMode` parameter removed. `feeProjectId` and `registry` parameters added. `trusted_forwarder` renamed to `trustedForwarder`. |
|
|
294
|
+
| **`initialize()` ERC2771 fix** | `deployer = msg.sender` changed to `deployer = _msgSender()` for correct ERC2771 meta-transaction support. |
|
|
237
295
|
| **Named arguments** | Function calls throughout use named argument syntax (`{key: value}`) for improved readability. |
|
|
238
296
|
|
|
239
297
|
### 7.2 JBOptimismSucker
|
|
@@ -272,6 +330,7 @@ See section 2.4 above.
|
|
|
272
330
|
| **Removed imports** | `IJBController`, `JBRuleset`, `JBRulesetMetadata` no longer imported. The v5 ruleset-based sucker restriction was removed. |
|
|
273
331
|
| **Removed error** | `JBSuckerRegistry_RulesetDoesNotAllowAddingSucker` removed. |
|
|
274
332
|
| **`suckerPairsOf`** | `sucker.peer()` now returns `bytes32`, directly assigned to `JBSuckersPair.remote` (which also changed to `bytes32`). |
|
|
333
|
+
| **`toRemoteFee` management** | New `toRemoteFee` storage variable (admin-adjustable ETH fee), `MAX_TO_REMOTE_FEE` constant (`0.001 ether`), `setToRemoteFee(uint256)` function (owner-only), `ToRemoteFeeChanged` event, and `JBSuckerRegistry_FeeExceedsMax` error. Defaults to `MAX_TO_REMOTE_FEE` on construction. |
|
|
275
334
|
|
|
276
335
|
### 7.6 JBSuckerDeployer
|
|
277
336
|
|
|
@@ -309,9 +368,9 @@ Throughout the codebase, function calls were updated to use named argument synta
|
|
|
309
368
|
|
|
310
369
|
| v5 | v6 | Notes |
|
|
311
370
|
|----|----|-------|
|
|
312
|
-
| `IJBSucker` | `IJBSucker` | `peer()` returns `bytes32`. `prepare()` takes `bytes32 beneficiary`. `Claimed`/`InsertToOutboxTree` events use `bytes32`. New `StaleRootRejected` event. NatSpec added. |
|
|
371
|
+
| `IJBSucker` | `IJBSucker` | `peer()` returns `bytes32`. `prepare()` takes `bytes32 beneficiary`. `Claimed`/`InsertToOutboxTree` events use `bytes32`. `Claimed` event `autoAddedToBalance` parameter removed. New `StaleRootRejected` event. New `JBSucker_NothingToSend` error. `ADD_TO_BALANCE_MODE()` and `addOutstandingAmountToBalance()` removed. NatSpec added. |
|
|
313
372
|
| `IJBSuckerExtended` | `IJBSuckerExtended` | New `EmergencyExit` event. NatSpec added. |
|
|
314
|
-
| `IJBSuckerRegistry` | `IJBSuckerRegistry` | `deploySuckersFor` configurations changed to `calldata`. NatSpec added. |
|
|
373
|
+
| `IJBSuckerRegistry` | `IJBSuckerRegistry` | `deploySuckersFor` configurations changed to `calldata`. New `toRemoteFee()`, `MAX_TO_REMOTE_FEE()`, `setToRemoteFee()`, `ToRemoteFeeChanged` event, `FeeExceedsMax` error. NatSpec added. |
|
|
315
374
|
| `IJBSuckerDeployer` | `IJBSuckerDeployer` | All errors removed from interface (moved to contract). NatSpec added. |
|
|
316
375
|
| `IJBSuckerDeployerFeeless` | (removed) | Feeless allowance sucker pattern removed. No replacement. |
|
|
317
376
|
| `IJBArbitrumSucker` | `IJBArbitrumSucker` | NatSpec added. No functional changes. |
|
|
@@ -326,13 +385,13 @@ Throughout the codebase, function calls were updated to use named argument synta
|
|
|
326
385
|
|
|
327
386
|
| v5 | v6 | Notes |
|
|
328
387
|
|----|----|-------|
|
|
329
|
-
| `JBSucker` | `JBSucker` | `address` -> `bytes32` throughout, message versioning, uint128 guard, empty outbox guard, stale root event, emergency exit event, `setDeprecation` permission change, `mapTokens` dust refund, virtual `_addToBalance`. |
|
|
388
|
+
| `JBSucker` | `JBSucker` | `address` -> `bytes32` throughout, message versioning, uint128 guard, empty outbox guard, stale root event, emergency exit event, `setDeprecation` permission change, `mapTokens` dust refund, virtual `_addToBalance`. `minBridgeAmount` replaced by `toRemoteFee`. `MANUAL` mode removed. New `FEE_PROJECT_ID` + `REGISTRY` immutables. `initialize()` uses `_msgSender()`. |
|
|
330
389
|
| `JBOptimismSucker` | `JBOptimismSucker` | `_sendRootOverAMB` made `virtual`. Bridge calls use `_toAddress()`/`_toBytes32()`. |
|
|
331
390
|
| `JBBaseSucker` | `JBBaseSucker` | Explicit imports instead of wildcard. No functional changes. |
|
|
332
391
|
| `JBArbitrumSucker` | `JBArbitrumSucker` | Bridge calls use `_toAddress()`. `_createRetryableTicket` helper extracted. Removed unused `ChainNotSupported` error. |
|
|
333
392
|
| `JBCCIPSucker` | `JBCCIPSucker` | Refund failure emits event instead of reverting. `_validateTokenMapping` enforces minGas for native tokens. Bridge calls use `_toAddress()`/`_toBytes32()`. Removed `CCIPHelper` import. |
|
|
334
393
|
| N/A | `JBCeloSucker` | New. OP Stack sucker for Celo (custom gas token). Wraps ETH to WETH for bridging, unwraps on receipt. |
|
|
335
|
-
| `JBSuckerRegistry` | `JBSuckerRegistry` | Removed ruleset check and related imports/error. License changed to MIT. |
|
|
394
|
+
| `JBSuckerRegistry` | `JBSuckerRegistry` | Removed ruleset check and related imports/error. License changed to MIT. New `toRemoteFee` management (`setToRemoteFee`, `MAX_TO_REMOTE_FEE`, `ToRemoteFeeChanged` event). |
|
|
336
395
|
| `JBSuckerDeployer` | `JBSuckerDeployer` | Errors moved from interface to contract. Constructor param naming convention updated. |
|
|
337
396
|
| `JBOptimismSuckerDeployer` | `JBOptimismSuckerDeployer` | `_layerSpecificConfigurationIsSet` uses `&&` instead of `\|\|`. Made `virtual`. |
|
|
338
397
|
| N/A | `JBCeloSuckerDeployer` | New. Extends OP deployer with wrapped native token support. |
|
|
@@ -345,9 +404,9 @@ Throughout the codebase, function calls were updated to use named argument synta
|
|
|
345
404
|
|----|----|-------|
|
|
346
405
|
| `JBLeaf` | `JBLeaf` | `beneficiary`: `address` -> `bytes32` |
|
|
347
406
|
| `JBMessageRoot` | `JBMessageRoot` | `token`: `address` -> `bytes32`. New `version` field (`uint8`). |
|
|
348
|
-
| `JBRemoteToken` | `JBRemoteToken` | `addr`: `address` -> `bytes32` |
|
|
407
|
+
| `JBRemoteToken` | `JBRemoteToken` | `addr`: `address` -> `bytes32`. `minBridgeAmount` removed. |
|
|
349
408
|
| `JBSuckersPair` | `JBSuckersPair` | `remote`: `address` -> `bytes32` |
|
|
350
|
-
| `JBTokenMapping` | `JBTokenMapping` | `remoteToken`: `address` -> `bytes32` |
|
|
409
|
+
| `JBTokenMapping` | `JBTokenMapping` | `remoteToken`: `address` -> `bytes32`. `minBridgeAmount` removed. |
|
|
351
410
|
| `JBClaim` | `JBClaim` | Unchanged (contains changed `JBLeaf`) |
|
|
352
411
|
| `JBInboxTreeRoot` | `JBInboxTreeRoot` | Identical |
|
|
353
412
|
| `JBOutboxTree` | `JBOutboxTree` | Identical |
|