@bananapus/suckers-v6 1.0.1 → 1.1.0

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.
Files changed (112) hide show
  1. package/README.md +2 -1
  2. package/deployments/arbitrum/CCIPHelper.json +939 -0
  3. package/deployments/arbitrum/JBArbitrumSucker.json +2310 -0
  4. package/deployments/arbitrum/JBArbitrumSuckerDeployer.json +443 -0
  5. package/deployments/arbitrum/JBCCIPLib.json +119 -0
  6. package/deployments/arbitrum/JBCCIPSuckerDeployer__BASE.json +474 -0
  7. package/deployments/arbitrum/JBCCIPSuckerDeployer__ETH.json +474 -0
  8. package/deployments/arbitrum/JBCCIPSuckerDeployer__OP.json +474 -0
  9. package/deployments/arbitrum/JBCCIPSucker__BASE.json +2460 -0
  10. package/deployments/arbitrum/JBCCIPSucker__ETH.json +2460 -0
  11. package/deployments/arbitrum/JBCCIPSucker__OP.json +2460 -0
  12. package/deployments/arbitrum/JBSuckerLib.json +457 -0
  13. package/deployments/arbitrum/JBSuckerRegistry.json +1234 -0
  14. package/deployments/arbitrum_sepolia/CCIPHelper.json +939 -0
  15. package/deployments/arbitrum_sepolia/JBArbitrumSucker.json +2310 -0
  16. package/deployments/arbitrum_sepolia/JBArbitrumSuckerDeployer.json +443 -0
  17. package/deployments/arbitrum_sepolia/JBCCIPLib.json +119 -0
  18. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +474 -0
  19. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +474 -0
  20. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__OP_SEP.json +474 -0
  21. package/deployments/arbitrum_sepolia/JBCCIPSucker__BASE_SEP.json +2460 -0
  22. package/deployments/arbitrum_sepolia/JBCCIPSucker__ETH_SEP.json +2460 -0
  23. package/deployments/arbitrum_sepolia/JBCCIPSucker__OP_SEP.json +2460 -0
  24. package/deployments/arbitrum_sepolia/JBSuckerLib.json +457 -0
  25. package/deployments/arbitrum_sepolia/JBSuckerRegistry.json +1234 -0
  26. package/deployments/base/CCIPHelper.json +944 -0
  27. package/deployments/base/JBBaseSucker.json +2302 -0
  28. package/deployments/base/JBBaseSuckerDeployer.json +430 -0
  29. package/deployments/base/JBCCIPLib.json +124 -0
  30. package/deployments/base/JBCCIPSuckerDeployer__ARB.json +479 -0
  31. package/deployments/base/JBCCIPSuckerDeployer__ETH.json +479 -0
  32. package/deployments/base/JBCCIPSuckerDeployer__OP.json +479 -0
  33. package/deployments/base/JBCCIPSucker__ARB.json +2465 -0
  34. package/deployments/base/JBCCIPSucker__ETH.json +2465 -0
  35. package/deployments/base/JBCCIPSucker__OP.json +2465 -0
  36. package/deployments/base/JBSuckerLib.json +462 -0
  37. package/deployments/base/JBSuckerRegistry.json +1239 -0
  38. package/deployments/base_sepolia/CCIPHelper.json +944 -0
  39. package/deployments/base_sepolia/JBBaseSucker.json +2302 -0
  40. package/deployments/base_sepolia/JBBaseSuckerDeployer.json +430 -0
  41. package/deployments/base_sepolia/JBCCIPLib.json +124 -0
  42. package/deployments/base_sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +479 -0
  43. package/deployments/base_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +479 -0
  44. package/deployments/base_sepolia/JBCCIPSuckerDeployer__OP_SEP.json +479 -0
  45. package/deployments/base_sepolia/JBCCIPSucker__ARB_SEP.json +2465 -0
  46. package/deployments/base_sepolia/JBCCIPSucker__ETH_SEP.json +2465 -0
  47. package/deployments/base_sepolia/JBCCIPSucker__OP_SEP.json +2465 -0
  48. package/deployments/base_sepolia/JBSuckerLib.json +462 -0
  49. package/deployments/base_sepolia/JBSuckerRegistry.json +1239 -0
  50. package/deployments/ethereum/CCIPHelper.json +936 -0
  51. package/deployments/ethereum/JBArbitrumSucker.json +2307 -0
  52. package/deployments/ethereum/JBArbitrumSuckerDeployer.json +440 -0
  53. package/deployments/ethereum/JBBaseSucker.json +2294 -0
  54. package/deployments/ethereum/JBBaseSuckerDeployer.json +422 -0
  55. package/deployments/ethereum/JBCCIPLib.json +116 -0
  56. package/deployments/ethereum/JBCCIPSuckerDeployer__ARB.json +471 -0
  57. package/deployments/ethereum/JBCCIPSuckerDeployer__BASE.json +471 -0
  58. package/deployments/ethereum/JBCCIPSuckerDeployer__OP.json +471 -0
  59. package/deployments/ethereum/JBCCIPSucker__ARB.json +2457 -0
  60. package/deployments/ethereum/JBCCIPSucker__BASE.json +2457 -0
  61. package/deployments/ethereum/JBCCIPSucker__OP.json +2457 -0
  62. package/deployments/ethereum/JBOptimismSucker.json +2294 -0
  63. package/deployments/ethereum/JBOptimismSuckerDeployer.json +422 -0
  64. package/deployments/ethereum/JBSuckerLib.json +454 -0
  65. package/deployments/ethereum/JBSuckerRegistry.json +1231 -0
  66. package/deployments/optimism/CCIPHelper.json +944 -0
  67. package/deployments/optimism/JBCCIPLib.json +124 -0
  68. package/deployments/optimism/JBCCIPSuckerDeployer__ARB.json +479 -0
  69. package/deployments/optimism/JBCCIPSuckerDeployer__BASE.json +479 -0
  70. package/deployments/optimism/JBCCIPSuckerDeployer__ETH.json +479 -0
  71. package/deployments/optimism/JBCCIPSucker__ARB.json +2465 -0
  72. package/deployments/optimism/JBCCIPSucker__BASE.json +2465 -0
  73. package/deployments/optimism/JBCCIPSucker__ETH.json +2465 -0
  74. package/deployments/optimism/JBOptimismSucker.json +2302 -0
  75. package/deployments/optimism/JBOptimismSuckerDeployer.json +430 -0
  76. package/deployments/optimism/JBSuckerLib.json +462 -0
  77. package/deployments/optimism/JBSuckerRegistry.json +1239 -0
  78. package/deployments/optimism_sepolia/CCIPHelper.json +944 -0
  79. package/deployments/optimism_sepolia/JBCCIPLib.json +124 -0
  80. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +479 -0
  81. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +479 -0
  82. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +479 -0
  83. package/deployments/optimism_sepolia/JBCCIPSucker__ARB_SEP.json +2465 -0
  84. package/deployments/optimism_sepolia/JBCCIPSucker__BASE_SEP.json +2465 -0
  85. package/deployments/optimism_sepolia/JBCCIPSucker__ETH_SEP.json +2465 -0
  86. package/deployments/optimism_sepolia/JBOptimismSucker.json +2302 -0
  87. package/deployments/optimism_sepolia/JBOptimismSuckerDeployer.json +430 -0
  88. package/deployments/optimism_sepolia/JBSuckerLib.json +462 -0
  89. package/deployments/optimism_sepolia/JBSuckerRegistry.json +1239 -0
  90. package/deployments/sepolia/CCIPHelper.json +936 -0
  91. package/deployments/sepolia/JBArbitrumSucker.json +2307 -0
  92. package/deployments/sepolia/JBArbitrumSuckerDeployer.json +440 -0
  93. package/deployments/sepolia/JBBaseSucker.json +2294 -0
  94. package/deployments/sepolia/JBBaseSuckerDeployer.json +422 -0
  95. package/deployments/sepolia/JBCCIPLib.json +116 -0
  96. package/deployments/sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +471 -0
  97. package/deployments/sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +471 -0
  98. package/deployments/sepolia/JBCCIPSuckerDeployer__OP_SEP.json +471 -0
  99. package/deployments/sepolia/JBCCIPSucker__ARB_SEP.json +2457 -0
  100. package/deployments/sepolia/JBCCIPSucker__BASE_SEP.json +2457 -0
  101. package/deployments/sepolia/JBCCIPSucker__OP_SEP.json +2457 -0
  102. package/deployments/sepolia/JBOptimismSucker.json +2294 -0
  103. package/deployments/sepolia/JBOptimismSuckerDeployer.json +422 -0
  104. package/deployments/sepolia/JBSuckerLib.json +454 -0
  105. package/deployments/sepolia/JBSuckerRegistry.json +1231 -0
  106. package/package.json +2 -1
  107. package/references/entrypoints.md +6 -2
  108. package/references/operations.md +3 -1
  109. package/references/runtime.md +2 -2
  110. package/src/JBSucker.sol +17 -12
  111. package/src/JBSuckerRegistry.sol +316 -167
  112. package/src/interfaces/IJBSuckerRegistry.sol +70 -0
package/README.md CHANGED
@@ -37,7 +37,7 @@ The main idea is not "bridge the token contract." The main idea is "bridge a Jui
37
37
  | Contract | Role |
38
38
  | --- | --- |
39
39
  | `JBSucker` | Base bridge logic for prepare, relay, accounting sync, claim, token mapping, and lifecycle controls. |
40
- | `JBSuckerRegistry` | Registry for per-project sucker deployments, deployer allowlists, and shared bridge fee settings. |
40
+ | `JBSuckerRegistry` | Registry for per-project sucker deployments, deployer and owner-gated token-pair allowlists, and shared bridge fee settings. |
41
41
  | Chain-specific suckers | Transport-specific implementations for OP Stack, Arbitrum, CCIP, and related environments. |
42
42
 
43
43
  ## Mental model
@@ -66,6 +66,7 @@ That means every bridge path has two trust surfaces:
66
66
  - do not reason about suckers as if they were generic ERC-20 bridges
67
67
  - root ordering and message delivery semantics matter as much as proof format
68
68
  - token mapping is part of the economic invariant
69
+ - native/native mappings and different-address local/remote token mappings must be approved by the registry owner for the specific `(localToken, remoteChainId, remoteToken)` route before a project can choose them; non-native same-address mappings and disabled mappings do not need owner approval
69
70
  - peer contexts are merged only when they share both currency and decimals; same-currency contexts with different decimals are kept separate and valued independently at read time, never summed across precisions — and this merge applies per source chain, since each chain's record is stored and folded on its own
70
71
  - accounting propagates as a gossip bundle: a sucker sends its own chain's record plus every peer-chain record the project knows (gathered through the registry), so one sync round from a hub propagates every chain's data to every spoke without a direct sucker between each pair
71
72
  - `syncAccountingData` pays no registry `toRemoteFee`, but bridge-specific transport costs still apply and duplicate bundles can still consume bridge/indexer resources