-
Notifications
You must be signed in to change notification settings - Fork 33
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
Sin/testnet 9 #2567
Sin/testnet 9 #2567
Conversation
WalkthroughThe updates primarily involve renaming and restructuring configuration files and contract details across various JSON files. Key changes include converting numbered keys to descriptive ones in configuration settings, updating contract addresses and error messages, and enhancing function definitions and error handling for clarity and robustness in contract interactions. Changes
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #2567 +/- ##
===================================================
+ Coverage 36.50268% 38.56740% +2.06472%
===================================================
Files 131 178 +47
Lines 10265 11336 +1071
Branches 83 268 +185
===================================================
+ Hits 3747 4372 +625
- Misses 6016 6444 +428
- Partials 502 520 +18
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Deploying sanguine-fe with
|
Latest commit: |
22c171f
|
Status: | ✅ Deploy successful! |
Preview URL: | https://d723bc61.sanguine-fe.pages.dev |
Branch Preview URL: | https://sin-testnet-9.sanguine-fe.pages.dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Out of diff range and nitpick comments (1)
packages/contracts-communication/script/testnet-deploy.sh (1)
Line range hint
2-2
: Ensure the shebang is correctly specified for portability and compatibility across different environments.- #!/usr/bin/env bash + #!/bin/bash
Review Details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files selected for processing (27)
- packages/contracts-communication/configs/global/MessageBus.testnet.json (1 hunks)
- packages/contracts-communication/configs/global/PingPongApp.testnet.json (1 hunks)
- packages/contracts-communication/configs/global/SynapseModule.testnet.json (1 hunks)
- packages/contracts-communication/deployments/arb_sepolia/InterchainClientV1.json (14 hunks)
- packages/contracts-communication/deployments/arb_sepolia/InterchainDB.json (9 hunks)
- packages/contracts-communication/deployments/arb_sepolia/LegacyPingPong.json (4 hunks)
- packages/contracts-communication/deployments/arb_sepolia/MessageBus.json (8 hunks)
- packages/contracts-communication/deployments/arb_sepolia/PingPongApp.json (6 hunks)
- packages/contracts-communication/deployments/arb_sepolia/ProxyAdmin.SynapseExecutionServiceV1.json (1 hunks)
- packages/contracts-communication/deployments/arb_sepolia/SynapseExecutionServiceV1.Implementation.json (14 hunks)
- packages/contracts-communication/deployments/arb_sepolia/SynapseExecutionServiceV1.json (14 hunks)
- packages/contracts-communication/deployments/arb_sepolia/SynapseGasOracleV1.json (3 hunks)
- packages/contracts-communication/deployments/arb_sepolia/SynapseModule.json (17 hunks)
- packages/contracts-communication/deployments/arb_sepolia/TransparentUpgradeableProxy.SynapseExecutionServiceV1.json (1 hunks)
- packages/contracts-communication/deployments/eth_sepolia/InterchainClientV1.json (14 hunks)
- packages/contracts-communication/deployments/eth_sepolia/InterchainDB.json (9 hunks)
- packages/contracts-communication/deployments/eth_sepolia/LegacyPingPong.json (4 hunks)
- packages/contracts-communication/deployments/eth_sepolia/MessageBus.json (8 hunks)
- packages/contracts-communication/deployments/eth_sepolia/PingPongApp.json (6 hunks)
- packages/contracts-communication/deployments/eth_sepolia/ProxyAdmin.SynapseExecutionServiceV1.json (1 hunks)
- packages/contracts-communication/deployments/eth_sepolia/SynapseExecutionServiceV1.Implementation.json (14 hunks)
- packages/contracts-communication/deployments/eth_sepolia/SynapseExecutionServiceV1.json (14 hunks)
- packages/contracts-communication/deployments/eth_sepolia/SynapseGasOracleV1.json (3 hunks)
- packages/contracts-communication/deployments/eth_sepolia/SynapseModule.json (17 hunks)
- packages/contracts-communication/deployments/eth_sepolia/TransparentUpgradeableProxy.SynapseExecutionServiceV1.json (1 hunks)
- packages/contracts-communication/script/testnet-config.sh (1 hunks)
- packages/contracts-communication/script/testnet-deploy.sh (1 hunks)
Files not reviewed due to errors (2)
- packages/contracts-communication/deployments/eth_sepolia/SynapseExecutionServiceV1.json (no review received)
- packages/contracts-communication/deployments/arb_sepolia/SynapseExecutionServiceV1.Implementation.json (no review received)
Files skipped from review due to trivial changes (3)
- packages/contracts-communication/configs/global/MessageBus.testnet.json
- packages/contracts-communication/configs/global/PingPongApp.testnet.json
- packages/contracts-communication/script/testnet-config.sh
Additional comments not posted (200)
packages/contracts-communication/configs/global/SynapseModule.testnet.json (1)
3-3
: RenamingfeeCollector
tofeeRecipient
aligns with semantic clarity and possibly reflects a change in functionality or focus. Ensure that all references to this key in the codebase are updated to avoid runtime errors.packages/contracts-communication/script/testnet-deploy.sh (1)
Line range hint
10-10
: Good practice to check for the necessary command line arguments before proceeding with the script execution. This prevents potential runtime errors due to missing arguments.packages/contracts-communication/deployments/eth_sepolia/TransparentUpgradeableProxy.SynapseExecutionServiceV1.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.packages/contracts-communication/deployments/arb_sepolia/TransparentUpgradeableProxy.SynapseExecutionServiceV1.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.packages/contracts-communication/deployments/eth_sepolia/ProxyAdmin.SynapseExecutionServiceV1.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.Verification successful
The script intended to verify the contract deployment details against the blockchain did not execute any blockchain queries. It only echoed the task description without performing any actual verification. Therefore, we still need to verify the deployment details provided in the JSON file against the actual data on the blockchain.
To proceed, I will generate a new script that attempts to fetch the contract details from the Ethereum Sepolia network using a blockchain query tool or API. This will allow us to compare the fetched details with those provided in the JSON file.
The output from the blockchain query confirms the transaction details associated with the hash
0x73205ad465e106e58f9fbe107bddd4267829af811f614957e0c7cae7b549f26b
. The details such asblockNumber
,from
address, andhash
match the information provided in the JSON file in the initial context. This verification confirms that the deployment details in the JSON file are accurate and correspond to the actual deployment on the Ethereum Sepolia network.Therefore, the deployment details in the JSON file are verified to be correct.
- Address:
0xfc5aa03c3985154eDf6fEF03cECa00214827ff9b
- Transaction Hash:
0x73205ad465e106e58f9fbe107bddd4267829af811f614957e0c7cae7b549f26b
- Block Number:
5847930
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the contract deployment details against the blockchain. # Test: Fetch the contract details from the blockchain and compare. Expect: Details match the provided JSON. echo "Fetch and compare deployment details for address 0xfc5aa03c3985154eDf6fEF03cECa00214827ff9b"Length of output: 192
Script:
#!/bin/bash # Using a blockchain API to fetch contract details from the Ethereum Sepolia network. # Fetching the contract details using etherscan API for Sepolia testnet (assuming API key is set) curl -s "https://api-sepolia.etherscan.io/api?module=proxy&action=eth_getTransactionByHash&txhash=0x73205ad465e106e58f9fbe107bddd4267829af811f614957e0c7cae7b549f26b&apikey=$ETHERSCAN_API_KEY"Length of output: 8758
packages/contracts-communication/deployments/arb_sepolia/ProxyAdmin.SynapseExecutionServiceV1.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.packages/contracts-communication/deployments/eth_sepolia/LegacyPingPong.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.Verification successful
The script intended to verify the contract deployment details against the blockchain did not execute any blockchain queries or comparisons. It only echoed the intention to fetch and compare deployment details, which does not provide any verification of the actual deployment data against the blockchain.
Given this, we need to properly verify the deployment details by querying a blockchain explorer or using blockchain interaction tools to fetch the actual deployment data and compare it with the details provided in the JSON file.
This script will use the Etherscan API for the Sepolia test network to fetch the transaction receipt details for the transaction hash provided in the JSON file. We will then be able to compare these details with those in the JSON file to verify their accuracy.
The output from the blockchain explorer API confirms the details provided in the JSON file for the LegacyPingPong contract deployment on the Ethereum Sepolia network. The transaction hash, contract address, and block number match the details specified in the JSON snippet. This verification ensures that the deployment details in the JSON file are accurate and correspond to the actual deployment on the blockchain.
Therefore, the deployment details in the JSON file are verified as correct.
- Transaction Hash:
0x4a925d88a4d24e6fe2eb5e08c128d0af5790955f2ab65382dd3515a603b9746b
- Contract Address:
0xda3b7cB145EE712b10a00a7A8da33580EB784f1B
- Block Number:
5847953
(Hexadecimal0x593b91
)Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the contract deployment details against the blockchain. # Test: Fetch the contract details from the blockchain and compare. Expect: Details match the provided JSON. echo "Fetch and compare deployment details for address 0xda3b7cB145EE712b10a00a7A8da33580EB784f1B"Length of output: 192
Script:
#!/bin/bash # Description: Fetch the contract deployment details from a blockchain explorer API and compare with the provided JSON. # Using a blockchain explorer API to fetch the transaction receipt details for the given transaction hash. curl -s "https://api-sepolia.etherscan.io/api?module=proxy&action=eth_getTransactionReceipt&txhash=0x4a925d88a4d24e6fe2eb5e08c128d0af5790955f2ab65382dd3515a603b9746b&apikey=YourApiKeyToken" | jq .Length of output: 2612
packages/contracts-communication/deployments/arb_sepolia/LegacyPingPong.json (1)
2-6
: The updated contract address and deployment details are crucial for tracking and interacting with the deployed contract. Ensure that these details are accurate and correspond to the actual deployment on the blockchain.packages/contracts-communication/deployments/eth_sepolia/SynapseGasOracleV1.json (5)
2-2
: Updated contract address to0x9AaA36c80F6824c674419Bd0C5F6d76f865295ca
.
5-6
: Updated transaction receipt hash and block number.
433-433
: Introduced new error typeSynapseGasOracleV1__ChainIdNotRemote
to handle invalid chain ID errors.
444-452
: Introduced new error typeSynapseGasOracleV1__NativePriceNotSet
to handle unset native price errors.
454-456
: Introduced new error typeSynapseGasOracleV1__NativePriceZero
to handle zero native price errors.packages/contracts-communication/deployments/arb_sepolia/SynapseGasOracleV1.json (5)
2-2
: Updated contract address to0x7e09589fB70C26Eaf06a4b4f6Ccbc57F932c1f58
.
5-6
: Updated transaction receipt hash and block number.
433-433
: Introduced new error typeSynapseGasOracleV1__ChainIdNotRemote
to handle invalid chain ID errors.
444-452
: Introduced new error typeSynapseGasOracleV1__NativePriceNotSet
to handle unset native price errors.
454-456
: Introduced new error typeSynapseGasOracleV1__NativePriceZero
to handle zero native price errors.packages/contracts-communication/deployments/eth_sepolia/InterchainDB.json (6)
2-2
: Updated contract address to0x8d50e833331A0D01d6F286881ce2C3A5DAD12e26
.
5-6
: Updated transaction receipt hash and block number.
Line range hint
24-47
: Updated functioncheckBatchVerification
with new input structureInterchainBatch
.
147-197
: Introduced new functiongetBatchRoot
to retrieve the root of a batch based on an entry.
320-338
: Introduced new functiongetVersionedBatch
to retrieve versioned batch data.
Line range hint
547-688
: Introduced new error types to handle various batch and entry related errors.packages/contracts-communication/deployments/arb_sepolia/InterchainDB.json (6)
2-2
: Updated contract address to0x943257aE5037f5997ab302c4E158EFe48BBCE89d
.
5-6
: Updated transaction receipt hash and block number.
Line range hint
24-47
: Updated functioncheckBatchVerification
with new input structureInterchainBatch
.
147-197
: Introduced new functiongetBatchRoot
to retrieve the root of a batch based on an entry.
320-338
: Introduced new functiongetVersionedBatch
to retrieve versioned batch data.
Line range hint
547-688
: Introduced new error types to handle various batch and entry related errors.packages/contracts-communication/deployments/eth_sepolia/SynapseExecutionServiceV1.Implementation.json (24)
2-2
: Updated contract address to "0xEaF2728Fa62C3acaEA43D796219fc83019C04B2b".
5-6
: Transaction details updated with new hash and block number.
54-59
: Added new functionclaimFees
with no inputs or outputs, and nonpayable state.
87-98
: Added new functiongetClaimableAmount
returning a uint256 value, viewable state.
100-111
: Added new functiongetClaimerFraction
returning a uint256 value, viewable state.
113-124
: Added new functiongetClaimerReward
returning a uint256 value, viewable state.
155-166
: Added new functiongetFeeRecipient
returning an address, viewable state.
Line range hint
274-298
: FunctionrequestTxExecution
updated to be payable, allowing it to receive ether.
319-330
: Added new functionsetClaimerFraction
taking a uint256 argument, nonpayable state.
390-401
: Added new eventClaimerFractionSet
with details about the claimer fraction set.
441-452
: Added new eventFeeRecipientSet
indicating when the fee recipient is set.
454-483
: Added new eventFeesClaimed
detailing the fees claimed, the recipient, and the claimer reward.
620-629
: Added new errorAddressInsufficientBalance
indicating insufficient balance for an address.
631-645
: Added new errorClaimableFees__ClaimerFractionAboveMax
indicating the claimer fraction is above the maximum allowed.
647-650
: Added new errorClaimableFees__FeeAmountZero
indicating the fee amount is zero.
652-655
: Added new errorClaimableFees__FeeRecipientZeroAddress
indicating the fee recipient address is zero.
657-660
: Added new errorFailedInnerCall
indicating a failure in an inner call.
673-673
: Added new errorOptionsLib__VersionInvalid
indicating an invalid version in options library.
684-686
: Added new errorSynapseExecutionService__ExecutorZeroAddress
indicating the executor address is zero.
688-689
: Added new errorSynapseExecutionService__FeeAmountBelowMin
indicating the fee amount is below the minimum required.
705-713
: Added new errorSynapseExecutionService__GasOracleNotContract
indicating the gas oracle address does not point to a contract.
715-716
: Added new errorSynapseExecutionService__GasOracleZeroAddress
indicating the gas oracle address is zero.
732-740
: Added new errorVersionedPayload__PayloadTooShort
indicating the payload is too short.
742-744
: Added new errorVersionedPayload__PrecompileFailed
indicating a failure in precompilation.packages/contracts-communication/deployments/arb_sepolia/SynapseExecutionServiceV1.json (12)
2-2
: Updated contract address.
5-6
: Updated transaction hash and block number.
54-59
: Added new functionclaimFees
. Ensure that the implementation aligns with the intended functionality and security practices.Verification successful
The implementation of the
claimFees
function in theClaimableFees.sol
contract has been successfully located and reviewed. The function includes several security checks and mechanisms:
- Zero Amount Check: The function reverts if the claimable amount is zero, preventing unnecessary transactions.
- Zero Address Check: It also checks if the fee recipient address is set, reverting if it is a zero address to ensure fees are not sent to an invalid address.
- Claimer Reward Calculation: The function calculates a reward for the claimer, which is a fraction of the total fees, to compensate for the gas costs incurred during the transaction. It ensures that the claimer's fraction does not exceed a maximum limit.
- Event Emission: Events are emitted before the actual transfer of fees, which helps in tracking and verifying the transactions on the blockchain.
- Safe Transfer: Uses OpenZeppelin's
Address.sendValue
for safe transfer of Ether to prevent reentrancy attacks.These elements align with standard security practices in smart contract development, particularly for functions that handle financial transactions. The interface
IClaimableFees.sol
also properly declares the function and associated utility functions, ensuring that any contract implementing this interface will have to provide concrete implementations for these functionalities.Based on the review, the implementation of
claimFees
adheres to the intended functionality and incorporates necessary security practices.
- File:
packages/contracts-communication/contracts/fees/ClaimableFees.sol
- Interface:
packages/contracts-communication/contracts/interfaces/IClaimableFees.sol
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation of `claimFees` function in the smart contract. # Test: Search for the function implementation. Expect: Proper implementation and security checks. rg --type json $'claimFees' packages/contracts-communication/deployments/**/*.jsonLength of output: 2608
Script:
#!/bin/bash # Description: Search for Solidity files defining the `claimFees` function and review its implementation. # Search for Solidity files that might contain the implementation of `claimFees` rg --type sol 'function claimFees' --files-with-matchesLength of output: 85
Script:
#!/bin/bash # Description: Search for files defining the `claimFees` function without specifying file type. # Search for files that might contain the implementation of `claimFees` rg 'function claimFees' --files-with-matchesLength of output: 451
Script:
#!/bin/bash # Description: Extract and review the content of Solidity files related to `claimFees` function. # Display the content of the Solidity files where `claimFees` is likely implemented or declared. cat packages/contracts-communication/contracts/fees/ClaimableFees.sol cat packages/contracts-communication/contracts/interfaces/IClaimableFees.solLength of output: 4396
87-98
: Added new functiongetClaimableAmount
. Verify that this function correctly calculates and returns the claimable amount.
100-111
: Added new functiongetClaimerFraction
. Confirm that the fraction values handled by this function are within expected limits.
113-124
: Added new functiongetClaimerReward
. Ensure that the reward calculation is accurate and secure.
154-166
: Added new functiongetFeeRecipient
. Confirm that this function correctly identifies and returns the fee recipient address.
Line range hint
274-298
: FunctionrequestTxExecution
has been updated to be payable. Ensure that this change is reflected in all relevant transaction calls and that the function handles payments securely.
318-330
: Added new functionsetClaimerFraction
. Verify that the input values are validated and handled correctly.
390-401
: New eventClaimerFractionSet
added. Confirm that this event is emitted correctly in scenarios where the claimer fraction is set.Verification successful
The review comment requested verification of the correct emission of the
ClaimerFractionSet
event in scenarios where the claimer fraction is set. The provided script searched for occurrences of this event in JSON files across thepackages/contracts-communication/deployments
directory.From the script output, it's evident that the
ClaimerFractionSet
event is defined in multiple JSON files across different deployments (arb_sepolia
andeth_sepolia
). However, the script only searched for the presence of the event name in JSON files, which confirms the event's definition but does not verify its correct emission in the code.To fully address the review comment, we would need to verify the actual emission of the event in the source code, typically in Solidity files, where the logic for emitting events would be implemented. This would involve searching for the event being emitted in the Solidity files and ensuring it is done under the correct conditions.
Since the current script output does not provide this information, further investigation is required.
The script output confirms that the
ClaimerFractionSet
event is indeed emitted in the Solidity source code of theSynapseModule
andSynapseExecutionServiceV1
contracts. The event is emitted in both the actual contracts and their corresponding test files, which suggests that the event's emission is likely tested and integrated into the main functionality of these contracts.Given this information, we can conclude that the
ClaimerFractionSet
event is correctly implemented and emitted in the scenarios where the claimer fraction is set, as per the original review comment's request.Conclusion:
- The
ClaimerFractionSet
event is properly emitted in theSynapseModule
andSynapseExecutionServiceV1
contracts.- The event's emission is also covered in the test files, indicating that its functionality is likely verified through automated tests.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the emission of `ClaimerFractionSet` event. # Test: Search for the event usage and ensure it is emitted correctly. rg --type json $'ClaimerFractionSet' packages/contracts-communication/deployments/**/*.jsonLength of output: 2671
Script:
#!/bin/bash # Description: Search for the emission of `ClaimerFractionSet` event in Solidity files. # Search for the event emission in Solidity files rg 'emit ClaimerFractionSet' --glob '*.sol'Length of output: 674
441-452
: New eventFeeRecipientSet
added. Ensure that this event is triggered appropriately when the fee recipient is set or updated.Verification successful
The review comment requested verification that the new event
FeeRecipientSet
is triggered appropriately when the fee recipient is set or updated. The provided script searched for occurrences ofFeeRecipientSet
in JSON files across thepackages/contracts-communication/deployments
directory.From the script output, it's evident that the
FeeRecipientSet
event is defined in several JSON files across different deployments (arb_sepolia
andeth_sepolia
). However, the script only searched for the presence of the event name in JSON files, which confirms the event's definition but does not verify its actual usage in the code where the fee recipient setting or updating occurs.To fully address the review comment, it would be necessary to check the source code (likely Solidity files) to ensure that this event is emitted correctly in the logic that handles the setting or updating of the fee recipient. This would involve searching for the emission of the
FeeRecipientSet
event in the relevant Solidity files and verifying that it is triggered under the correct conditions.Since the current script output does not provide this information, further investigation is required.
The review comment requested verification that the
FeeRecipientSet
event is triggered appropriately when the fee recipient is set or updated. The additional script provided evidence of the event being emitted in both theSynapseModule
andSynapseExecutionServiceV1
contracts, as seen in the Solidity source files.The script output shows that the
FeeRecipientSet
event is emitted in the following files and scenarios:
SynapseModule.sol
: When setting or updating the fee recipient.SynapseExecutionServiceV1.sol
: When setting or updating the executor EOA, which seems to be related but might not directly correspond to the fee recipient unless the context implies that the executor EOA is also the fee recipient.Given this information, it appears that the event is indeed used within the codebase to signal changes related to fee recipients, at least in the context of the
SynapseModule
. However, the usage inSynapseExecutionServiceV1
might need clarification to ensure it aligns with the intended functionality described in the review comment.Based on the findings:
- The event is correctly implemented and used in
SynapseModule.sol
.- The usage in
SynapseExecutionServiceV1.sol
might require further clarification or review to confirm it meets the intended use case.Conclusion:
- The
FeeRecipientSet
event is verified to be triggered appropriately inSynapseModule.sol
.- Further clarification might be needed for its usage in
SynapseExecutionServiceV1.sol
to ensure it aligns with the expected behavior of setting or updating a fee recipient.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the triggering of `FeeRecipientSet` event. # Test: Search for the event usage and ensure it is triggered correctly. rg --type json $'FeeRecipientSet' packages/contracts-communication/deployments/**/*.jsonLength of output: 2650
Script:
#!/bin/bash # Description: Search for the emission of the `FeeRecipientSet` event in Solidity files. # Search for the emission of the event in Solidity files rg 'emit FeeRecipientSet' --glob '*.sol'Length of output: 527
454-483
: New eventFeesClaimed
added. Verify that this event is emitted correctly when fees are claimed, reflecting accurate details of the transaction.packages/contracts-communication/deployments/eth_sepolia/SynapseModule.json (34)
2-2
: Updated contract address to0x93391bD1De68aFBAB10BB94BF3d36a4484B60eA2
.
3-3
: Updated constructor arguments to include new addresses forinterchainDB
andowner_
.
5-6
: Updated transaction receipt with new hash and block number.
86-86
: AddedgasOracle
function to retrieve the address of the gas oracle.
99-105
: AddedgetClaimableAmount
function to retrieve the amount of fees that can be claimed.
112-112
: AddedgetClaimerFraction
function to retrieve the fraction of fees claimable by the claimer.
125-125
: AddedgetClaimerReward
function to calculate the reward for the claimer based on the fees claimed.
136-148
: AddedgetFeeRecipient
function to retrieve the address of the fee recipient.
292-296
: UpdatedrequestBatchVerification
function to includebatchNonce
andversionedBatch
parameters.
308-311
: AddedsetClaimerFraction
function to set the fraction of fees that can be claimed by the claimer.
321-324
: AddedsetFeeRecipient
function to set the address of the fee recipient.
459-462
: AddedClaimerFractionSet
event to log changes to the claimer fraction.
472-475
: AddedFeeRecipientSet
event to log changes to the fee recipient address.
Line range hint
488-506
: AddedFeesClaimed
event to log the claiming of fees, including the recipient, the amount claimed, and the claimer's reward.
655-663
: AddedClaimableFees__ClaimerFractionAboveMax
error to handle cases where the claimer fraction is above the maximum allowed.
671-673
: AddedClaimableFees__FeeAmountZero
error to handle cases where the fee amount is zero.
676-678
: AddedClaimableFees__FeeRecipientZeroAddress
error to handle cases where the fee recipient address is zero.
686-686
: AddedInterchainModule__CallerNotInterchainDB
error to handle cases where the caller is not the interchain database.
697-697
: AddedInterchainModule__ChainIdNotRemote
error to handle cases where the chain ID is not recognized as remote.
708-718
: AddedInterchainModule__FeeAmountBelowMin
error to handle cases where the fee amount is below the minimum required.
724-727
: AddedOwnableInvalidOwner
error to handle cases where the specified owner is invalid.
735-740
: AddedOwnableUnauthorizedAccount
error to handle cases where an unauthorized account attempts an action.
746-746
: AddedSynapseModule__FeeRecipientZeroAddress
error to handle cases where the fee recipient address is zero.
762-762
: AddedSynapseModule__GasOracleZeroAddress
error to handle cases where the gas oracle address is zero.
767-767
: AddedThresholdECDSA__RecoveredSignersNotSorted
error to handle cases where the recovered signers are not sorted.
772-782
: AddedThresholdECDSA__SignaturesAmountBelowThreshold
error to handle cases where the number of signatures is below the required threshold.
788-788
: AddedThresholdECDSA__SignaturesPayloadLengthInvalid
error to handle cases where the payload length of the signatures is invalid.
799-804
: AddedThresholdECDSA__SignerAlreadyAdded
error to handle cases where a signer has already been added.
810-815
: AddedThresholdECDSA__SignerNotAdded
error to handle cases where a signer has not been added.
821-826
: AddedThresholdECDSA__SignerRecoveryFailed
error to handle cases where the recovery of a signer fails.
832-832
: AddedThresholdECDSA__SignerZeroAddress
error to handle cases where the signer address is zero.
837-837
: AddedThresholdECDSA__ThresholdZero
error to handle cases where the threshold is zero.
842-842
: AddedVersionedPayload__PayloadTooShort
error to handle cases where the versioned payload is too short.
853-853
: AddedVersionedPayload__PrecompileFailed
error to handle cases where the precompilation of a payload fails.packages/contracts-communication/deployments/arb_sepolia/SynapseModule.json (34)
2-2
: Updated contract address to0xE55659865F84B97eAEc00C1a8F4175F852523E25
.
3-3
: Updated constructor arguments to include new addresses forinterchainDB
andowner_
.
5-6
: Updated transaction receipt with new hash and block number.
86-86
: AddedgasOracle
function to retrieve the address of the gas oracle.
99-105
: AddedgetClaimableAmount
function to retrieve the amount of fees that can be claimed.
112-112
: AddedgetClaimerFraction
function to retrieve the fraction of fees claimable by the claimer.
125-125
: AddedgetClaimerReward
function to calculate the reward for the claimer based on the fees claimed.
136-148
: AddedgetFeeRecipient
function to retrieve the address of the fee recipient.
292-296
: UpdatedrequestBatchVerification
function to includebatchNonce
andversionedBatch
parameters.
308-311
: AddedsetClaimerFraction
function to set the fraction of fees that can be claimed by the claimer.
321-324
: AddedsetFeeRecipient
function to set the address of the fee recipient.
459-462
: AddedClaimerFractionSet
event to log changes to the claimer fraction.
472-475
: AddedFeeRecipientSet
event to log changes to the fee recipient address.
Line range hint
488-506
: AddedFeesClaimed
event to log the claiming of fees, including the recipient, the amount claimed, and the claimer's reward.
655-663
: AddedClaimableFees__ClaimerFractionAboveMax
error to handle cases where the claimer fraction is above the maximum allowed.
671-673
: AddedClaimableFees__FeeAmountZero
error to handle cases where the fee amount is zero.
676-678
: AddedClaimableFees__FeeRecipientZeroAddress
error to handle cases where the fee recipient address is zero.
686-686
: AddedInterchainModule__CallerNotInterchainDB
error to handle cases where the caller is not the interchain database.
697-697
: AddedInterchainModule__ChainIdNotRemote
error to handle cases where the chain ID is not recognized as remote.
708-718
: AddedInterchainModule__FeeAmountBelowMin
error to handle cases where the fee amount is below the minimum required.
724-727
: AddedOwnableInvalidOwner
error to handle cases where the specified owner is invalid.
735-740
: AddedOwnableUnauthorizedAccount
error to handle cases where an unauthorized account attempts an action.
746-746
: AddedSynapseModule__FeeRecipientZeroAddress
error to handle cases where the fee recipient address is zero.
762-762
: AddedSynapseModule__GasOracleZeroAddress
error to handle cases where the gas oracle address is zero.
767-767
: AddedThresholdECDSA__RecoveredSignersNotSorted
error to handle cases where the recovered signers are not sorted.
772-782
: AddedThresholdECDSA__SignaturesAmountBelowThreshold
error to handle cases where the number of signatures is below the required threshold.
788-788
: AddedThresholdECDSA__SignaturesPayloadLengthInvalid
error to handle cases where the payload length of the signatures is invalid.
799-804
: AddedThresholdECDSA__SignerAlreadyAdded
error to handle cases where a signer has already been added.
810-815
: AddedThresholdECDSA__SignerNotAdded
error to handle cases where a signer has not been added.
821-826
: AddedThresholdECDSA__SignerRecoveryFailed
error to handle cases where the recovery of a signer fails.
832-832
: AddedThresholdECDSA__SignerZeroAddress
error to handle cases where the signer address is zero.
837-837
: AddedThresholdECDSA__ThresholdZero
error to handle cases where the threshold is zero.
842-842
: AddedVersionedPayload__PayloadTooShort
error to handle cases where the versioned payload is too short.
853-853
: AddedVersionedPayload__PrecompileFailed
error to handle cases where the precompilation of a payload fails.packages/contracts-communication/deployments/eth_sepolia/PingPongApp.json (5)
2-2
: Updated contract address to0xD6dCB592B06875214D0D58d777081202034c6756
.
5-6
: Updated transaction receipt with new hash and block number.
148-155
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in the ABI. Ensure that these new fields are properly documented and integrated into the contract's logic.Verification successful
The search results from the corrected script indicate that the new fields
guardFlag
andguard
are indeed used and integrated within various parts of the contract's logic. The fields are referenced in multiple Solidity files under thepackages/contracts-communication/contracts
directory, including interfaces, libraries, and actual contract implementations. This confirms that the fields are not only declared but are actively utilized and are part of the functional aspects of the contracts.Here are some specific points of integration:
- The
AppConfig.sol
file defines these fields as part of a structure.- The
ICAppV1.sol
file uses these fields in a function to get configuration settings.- The
InterchainClientV1.sol
file includes logic that interacts with these fields, particularly in functions that handle guard settings and checks.Given this information, it can be concluded that the new fields
guardFlag
andguard
have been properly integrated into the contract's logic. However, the review comment also mentioned the need for proper documentation. The search results show some instances of documentation (e.g., inIInterchainClientV1.sol
and event definitions inInterchainClientV1Events.sol
), but a comprehensive review of all comments and documentation was not possible with the provided scripts.Conclusion:
- The integration of the fields
guardFlag
andguard
in the contract's logic is verified.- Documentation is partially verified through inline comments, but a full verification would require a more detailed review of the documentation quality and coverage.
Action Items:
- It is recommended to perform a manual review of the documentation to ensure it meets the project's standards for clarity, completeness, and accuracy.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the integration and documentation of new fields in the contract logic. # Test: Search for the usage of `guardFlag` and `guard` in the contract's Solidity files. rg --type solidity $'guardFlag|guard' -- ./packages/contracts-communication/contractsLength of output: 119
Script:
#!/bin/bash # Description: Verify the integration and documentation of new fields in the contract logic. # Corrected Test: Search for the usage of `guardFlag` and `guard` in the contract's Solidity files by specifying the file extension. rg 'guardFlag|guard' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 3501
496-503
: Updated thesetAppConfigV1
function inputs to match the new structure ofAppConfigV1
. Verify that all calls to this function are updated to pass the correct parameters.Verification successful
The verification process has confirmed that the
setAppConfigV1
function is defined with the parametersuint256 requiredResponses
anduint256 optimisticPeriod
in both the interfaceIInterchainAppV1
and its implementation inICAppV1
. This matches the updated structure ofAppConfigV1
as described in the review comment. There are no indications of incorrect or outdated parameter usage in the function calls within the provided files.
- File:
packages/contracts-communication/contracts/interfaces/IInterchainAppV1.sol
- File:
packages/contracts-communication/contracts/apps/ICAppV1.sol
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that all calls to `setAppConfigV1` use the updated parameters. # Test: Search for the function usage with old parameters. rg --type solidity $'setAppConfigV1' -- ./packages/contracts-communication/contractsLength of output: 116
Script:
#!/bin/bash # Description: Verify that all calls to `setAppConfigV1` use the updated parameters. # Test: Search for the function usage in Solidity files. rg 'setAppConfigV1' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 431
898-908
: Added new errorInterchainApp__AppConfigInvalid
with detailed parameters. Ensure that this error is thrown appropriately in the contract logic where configuration validation fails.Verification successful
The error
InterchainApp__AppConfigInvalid
has been successfully identified in the Solidity files within thepackages/contracts-communication/contracts
directory. It is defined in the interfaceIInterchainAppV1.sol
and is used inICAppV1.sol
where it is thrown with the parametersrequiredResponses
andoptimisticPeriod
. This confirms that the error is not only added but also appropriately utilized in the contract logic where configuration validation might fail.
- File and Usage:
- Interface Definition:
./packages/contracts-communication/contracts/interfaces/IInterchainAppV1.sol
- Error Thrown:
./packages/contracts-communication/contracts/apps/ICAppV1.sol
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the appropriate usage of the new error `InterchainApp__AppConfigInvalid`. # Test: Search for the throwing of this error in the contract's Solidity files. rg --type solidity $'InterchainApp__AppConfigInvalid' -- ./packages/contracts-communication/contractsLength of output: 133
Script:
#!/bin/bash # Description: Verify the appropriate usage of the new error `InterchainApp__AppConfigInvalid`. # Test: Search for the throwing of this error in the contract's Solidity files. rg 'InterchainApp__AppConfigInvalid' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 423
packages/contracts-communication/deployments/arb_sepolia/PingPongApp.json (5)
2-2
: Updated contract address to0x47E4b9e5F7Cb65E5c37D866F1Ad4470BF42e3068
.
5-6
: Updated transaction receipt with new hash and block number.
148-155
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in the ABI. Ensure that these new fields are properly documented and integrated into the contract's logic.Verification successful
The search results from the corrected script indicate that the new fields
guardFlag
andguard
are indeed integrated and utilized within various parts of the contract's logic. The fields are defined inAppConfig.sol
, referenced in interface and event declarations, and actively used in contract methods, particularly withinICAppV1.sol
andInterchainClientV1.sol
. This confirms that the fields are not only added but are functional and integral to the contract's operations.Integration and Documentation of
guardFlag
andguard
:
- Defined in
AppConfig.sol
.- Documented and used in
IInterchainClientV1.sol
for setting and describing the guard module.- Utilized in
InterchainClientV1.sol
for guard-related logic, including setting defaults and asserting conditions.- Integrated in
ICAppV1.sol
where the guard configuration is fetched and used in the application logic.Given this comprehensive integration across multiple files and the presence of documentation comments, it appears that the addition of these fields has been successfully implemented in the contract's logic.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the integration and documentation of new fields in the contract logic. # Test: Search for the usage of `guardFlag` and `guard` in the contract's Solidity files. rg --type solidity $'guardFlag|guard' -- ./packages/contracts-communication/contractsLength of output: 119
Script:
#!/bin/bash # Corrected script to verify the integration and documentation of new fields in the contract logic. # Test: Search for the usage of `guardFlag` and `guard` in the contract's Solidity files by specifying the file extension. rg 'guardFlag|guard' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 3501
496-503
: Updated thesetAppConfigV1
function inputs to match the new structure ofAppConfigV1
. Verify that all calls to this function are updated to pass the correct parameters.Verification successful
The search results from the updated script indicate that the
setAppConfigV1
function is defined in two Solidity files within thepackages/contracts-communication/contracts
directory. Both definitions include the parametersuint256 requiredResponses
anduint256 optimisticPeriod
, which match the updated structure ofAppConfigV1
as shown in the provided JSON snippet.Since the script output shows the function definitions and not the calls, it's important to note that these are just the function signatures. To fully verify the review comment, we would need to check if the actual calls to these functions in the codebase pass the correct parameters as per the updated signatures. However, the initial task was to verify the function usage, and based on the provided information, the function signatures are correctly updated.
Conclusion:
The function signatures forsetAppConfigV1
in the Solidity files are updated to match the new structure ofAppConfigV1
. Further verification would be needed to check the actual calls to this function throughout the codebase.
./packages/contracts-communication/contracts/interfaces/IInterchainAppV1.sol
./packages/contracts-communication/contracts/apps/ICAppV1.sol
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that all calls to `setAppConfigV1` use the updated parameters. # Test: Search for the function usage with old parameters. rg --type solidity $'setAppConfigV1' -- ./packages/contracts-communication/contractsLength of output: 116
Script:
#!/bin/bash # Description: Verify that all calls to `setAppConfigV1` use the updated parameters. # Test: Search for the function usage with old parameters. rg 'setAppConfigV1' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 431
898-908
: Added new errorInterchainApp__AppConfigInvalid
with detailed parameters. Ensure that this error is thrown appropriately in the contract logic where configuration validation fails.Verification successful
The error
InterchainApp__AppConfigInvalid
has been successfully identified in the Solidity files within thepackages/contracts-communication/contracts
directory. It is defined in the interfaceIInterchainAppV1.sol
and is used in theICAppV1.sol
file where it is thrown with the parametersrequiredResponses
andoptimisticPeriod
. This confirms that the error is integrated into the contract logic to handle configuration validation failures as intended.
- File:
packages/contracts-communication/contracts/interfaces/IInterchainAppV1.sol
- Usage: Error definition.
- File:
packages/contracts-communication/contracts/apps/ICAppV1.sol
- Usage: Error is thrown in the contract logic.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the appropriate usage of the new error `InterchainApp__AppConfigInvalid`. # Test: Search for the throwing of this error in the contract's Solidity files. rg --type solidity $'InterchainApp__AppConfigInvalid' -- ./packages/contracts-communication/contractsLength of output: 133
Script:
#!/bin/bash # Description: Verify the appropriate usage of the new error `InterchainApp__AppConfigInvalid`. # Test: Search for the throwing of this error in the contract's Solidity files by specifying the file extension. rg 'InterchainApp__AppConfigInvalid' --glob '*.sol' -- ./packages/contracts-communication/contractsLength of output: 423
packages/contracts-communication/deployments/eth_sepolia/MessageBus.json (18)
2-2
: Updated contract address to0x6c10B9C27233E80C8b58EE875a0CaA27D50fd134
.
5-6
: Updated transaction hash and block number in the deployment receipt.
197-204
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in the ABI.
580-587
: Updated thesetAppConfigV1
function to reflect the new structure ofAppConfigV1
.
1002-1012
: Introduced new errorInterchainApp__AppConfigInvalid
to handle invalid configurations.
1018-1026
: Introduced new errorInterchainApp__BalanceBelowMin
to handle cases where balance is below the minimum required.
1034-1037
: Introduced new errorInterchainApp__CallerNotInterchainClient
to handle unauthorized interchain client calls.
1045-1050
: Introduced new errorInterchainApp__ChainIdNotRemote
to handle cases where the chain ID is not recognized as remote.
1056-1059
: Introduced new errorInterchainApp__InterchainClientAlreadyAdded
to handle cases where an interchain client is added more than once.
1067-1070
: Introduced new errorInterchainApp__InterchainClientAlreadyLatest
to handle cases where an interchain client is already set as the latest.
1078-1078
: Introduced new errorInterchainApp__InterchainClientZeroAddress
to handle zero address inputs for interchain clients.
1083-1083
: Introduced new errorInterchainApp__LinkedAppNotEVM
to handle cases where a linked application is not an EVM-compatible address.
1094-1097
: Introduced new errorInterchainApp__ModuleAlreadyAdded
to handle cases where a module is added more than once.
1105-1109
: Introduced new errorInterchainApp__ModuleNotAdded
to handle cases where a module is referenced but not added.
1116-1117
: Introduced new errorInterchainApp__ModuleZeroAddress
to handle zero address inputs for modules.
1121-1121
: Introduced new errorInterchainApp__ReceiverZeroAddress
to handle zero address inputs for message receivers.
1132-1133
: Introduced new errorInterchainApp__RemoteAppZeroAddress
to handle zero address inputs for remote applications.
1137-1137
: Introduced new errorInterchainApp__SrcSenderNotAllowed
to handle unauthorized source senders in interchain communications.packages/contracts-communication/deployments/arb_sepolia/MessageBus.json (18)
2-2
: Updated contract address to0x64118e2E5581FeC4496ef6886Abd24027A7f31A8
.
5-6
: Updated transaction hash and block number in the deployment receipt.
197-204
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in the ABI.
580-587
: Updated thesetAppConfigV1
function to reflect the new structure ofAppConfigV1
.
1002-1012
: Introduced new errorInterchainApp__AppConfigInvalid
to handle invalid configurations.
1018-1026
: Introduced new errorInterchainApp__BalanceBelowMin
to handle cases where balance is below the minimum required.
1034-1037
: Introduced new errorInterchainApp__CallerNotInterchainClient
to handle unauthorized interchain client calls.
1045-1050
: Introduced new errorInterchainApp__ChainIdNotRemote
to handle cases where the chain ID is not recognized as remote.
1056-1059
: Introduced new errorInterchainApp__InterchainClientAlreadyAdded
to handle cases where an interchain client is added more than once.
1067-1070
: Introduced new errorInterchainApp__InterchainClientAlreadyLatest
to handle cases where an interchain client is already set as the latest.
1078-1078
: Introduced new errorInterchainApp__InterchainClientZeroAddress
to handle zero address inputs for interchain clients.
1083-1083
: Introduced new errorInterchainApp__LinkedAppNotEVM
to handle cases where a linked application is not an EVM-compatible address.
1094-1097
: Introduced new errorInterchainApp__ModuleAlreadyAdded
to handle cases where a module is added more than once.
1105-1109
: Introduced new errorInterchainApp__ModuleNotAdded
to handle cases where a module is referenced but not added.
1116-1117
: Introduced new errorInterchainApp__ModuleZeroAddress
to handle zero address inputs for modules.
1121-1121
: Introduced new errorInterchainApp__ReceiverZeroAddress
to handle zero address inputs for message receivers.
1132-1133
: Introduced new errorInterchainApp__RemoteAppZeroAddress
to handle zero address inputs for remote applications.
1137-1137
: Introduced new errorInterchainApp__SrcSenderNotAllowed
to handle unauthorized source senders in interchain communications.packages/contracts-communication/deployments/eth_sepolia/InterchainClientV1.json (10)
2-2
: Updated contract address to0x6bAb7426099ba52ac37F309903169C4c0A5f7534
.
5-5
: Updated transaction hash to0xed5ce09fc0316bff5d6f4046e6337b5ce510e75629b1073c61c9d1c7fc4763b0
.
6-6
: Updated block number to5847938
.
83-94
: Added new functiondefaultGuard
to retrieve the default guard address.
183-190
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in thegetAppReceivingConfigV1
function.
318-392
: Added new functiongetTxReadinessV1
to check the readiness of a transaction based on various parameters and return the readiness status along with two additional arguments.
584-587
: Renamed functionsetExecutionFees
tosetDefaultGuard
and updated its functionality to set a default guard address.
652-655
: Added new eventDefaultGuardSet
to log when a default guard is set.
855-862
: Added new errorBatchingV1__EntryIndexNotZero
to handle cases where the entry index is not zero.
871-876
: Added new errorInterchainClientV1__BatchConflict
to handle batch conflicts.packages/contracts-communication/deployments/arb_sepolia/InterchainClientV1.json (10)
2-2
: Updated contract address to0x15ACDFd1F2027aE084B4d92da20D22cc945d07Ec
.
5-5
: Updated transaction hash to0x7e7954ac15bf35ce836e9324532685bfcbfc51a1e6a6b8978253802ebc412484
.
6-6
: Updated block number to41157437
.
83-94
: Added new functiondefaultGuard
to retrieve the default guard address.
183-190
: Added new fieldsguardFlag
andguard
to theAppConfigV1
struct in thegetAppReceivingConfigV1
function.
318-392
: Added new functiongetTxReadinessV1
to check the readiness of a transaction based on various parameters and return the readiness status along with two additional arguments.
584-587
: Renamed functionsetExecutionFees
tosetDefaultGuard
and updated its functionality to set a default guard address.
652-655
: Added new eventDefaultGuardSet
to log when a default guard is set.
855-862
: Added new errorBatchingV1__EntryIndexNotZero
to handle cases where the entry index is not zero.
871-876
: Added new errorInterchainClientV1__BatchConflict
to handle batch conflicts.
* Update bl * chore: lint bl * RFQ: support multiple rebalance methods (#2556) * WIP: refactor GetRebalanceMethod() * Feat: implement more robust rebalance method handling * Feat: move method validation to getRebalance() func * Feat: manual impl for String() on RebalanceMethod * Fix: tests * Feat: add rebalance method clauses to TestGetRebalance * Feat: use rebalance.Method to choose executor * Cleanup: lint * [goreleaser] * [goreleaser] * RFQ: drop requests for unsupported chains (#2563) * Feat: check for unsupported chain in inventory manager * Cleanup: lint * [goreleaser] * Fix: check for nil base fee * [goreleaser] * Feat: fee pricer gets gas price from SuggestGasPrice() * [goreleaser] * Fix: tests * lint, add err around clientSuggestGasPrice * Fix: tests --------- Co-authored-by: aureliusbtc <[email protected]> * RFQ: add decimals cache (#2502) * Feat: add decimalsCache, refactor decimal fetching * Cleanup: comments * Fix: build * Fix: use concurrent map * CCTP: use chain listener instead of scribe (#2592) * WIP: replace scribe with chain listener * Fix: build * Fix: tests * Fix: rfq build * Cleanup: remove unused enum * Cleanup: revert test change * Cleanup: comments * Cleanup: lint * Fix: build * Fix: test * docs(contracts-communication): move natspec from interfaces (#2595) * docs: SynapseExecutionServiceV1 * docs: SynapseGasOracleV1 * docs: Interchain app templates * docs: InterchainClientV1 * docs: InterchainDB * docs: interchain modules * docs: MessageBus * style: make interfaces easier to read * chore: fix linter warnings * Publish - [email protected] * fix(sdk-rouder): remove cache hydration (#2597) * fix: disable hydration * chore: don't log quotes in the integration test * Publish - @synapsecns/[email protected] - @synapsecns/[email protected] - @synapsecns/[email protected] - @synapsecns/[email protected] * update bl * Revert "update bl" This reverts commit ab56c7a. * update bl * feat(webhook): add webhook (#2538) * add models and endpoint, lacking logic * just stuff * just stuff * made general db interface * cleanup * trying to test * trying to test * trying ot fix test * remove interface{} from gorm models, start tests, rework db interface * add signature * secret * look away for now * finish db test * finish tests * add auth * remove debugging log * comments and nits * lint * appsecret and appid * resolve comments * swagger, lint * feat(synapse-interface): maintenance aggregator using PAUSED_CHAINS (#2345) * Aggregate maintenance events for banners and warning message * Dynamically render countdown progress bars based on PAUSED_CHAIN * Dynamically rendering banners * Slightly organize * ChainPause type applied to enforce maintenance event structure, pass in component messages as a prop * Working with multiple events * Add dev comments to MaintenanceBanner; refactor * Add dev comments for MaintenanceWarningMessage; refactor * Dev comments * Organize components * isChainIncluded util * Clean * Add ability to specify paused chains by from/to side (#2346) * Allow indefinite maintenance components by setting end date to null * Banners to show indefinitely as well * Add props to disable banner / warning / countdown * Implement disable warning * Implement disable countdown, bridge pause still working * Example * Clean * Update naming on Bridge page * Update comment for isChainIncluded * Create maintenance events reading from pausedChains.json * Remove custom margins to allow Bridge parent gap styling to handle spacing * Require all props to be defined * Add Swap to maintenance warning messages * Update useMaintenanceCountdownProgresses to allow distinction between Swap and Bridge pauses * Move MaintenanceBanners into LandingPageWrapper so banner appears on all pages * Add ability to specify whether to pause bridge / swap with maintenance event in json * Clean * Unused code * Update dev comments * Update pause start/end time name for legibility * Create type guard to check for paused bridge module * usePausedBridgeModules * usePausedBridgeModules to filter out SDK quotes * Initialize paused routes to handle specific route pauses instead of grouping with chain pauses * Update paused route structure * Filter for valid quotes based on paused routes * Create a Set with paused bridge module names to improve time complexity * Allow for all bridge modules to be paused with ALL * Add ability to pause bridge modules for all chains, if chainId is left undefined * Move json files to /v1/ version control folder * Compare quotes against paused bridge modules more cleanly * Paused bridge modules json control working * Fix pausedChains json * Create examples folder for pause jsons * Retrigger build * Fix banner flashing after clearing * Add padding to banner Close button * Update text sizing on progress bar * Update prop naming to prevent confusion on start/end * Clear chain pauses to ready PR * Change json file naming to be more readable * Use inputWarningMessage prop name to indicate warning placement * Pause Doge activity using Maintenance, to replace prior Chain pause mechanism * Doge chain paused chain prop values * Remove paused from/to chainId constants * Publish - @synapsecns/[email protected] * Exempt gh pages (#2541) Co-authored-by: Trajan0x <[email protected]> * Deploy: `FastBridge` to Scroll (#2525) * chore: add Base to `.env.example` * chore: add Scroll config * chore: bump devops dependency * chore: yarn * feat: deploy `FastBridge` on scroll * Publish - [email protected] * fix: update `forge-std` to 1.8.1, remove `ds-test`, use `solhint` for linting (#2545) * chore: forge-std v1.8.1, remove ds-test dep * chore: remove ds-test from remappings * refactor: state mutability * chore: add solhint * chore: yarn * fix: unused imports * fix: max line length * Publish - [email protected] - [email protected] - @synapsecns/[email protected] * chore: remove submodules from `contracts-rfq` (#2547) * build: install OZ as npm module * chore: update remappings * refactor: fix compiler warnings in test contract * chore: remove forge-std submodule * chore: remove `openzeppelin-contracts` submodule * fix: restore padding in `.gitmodules` * Publish - [email protected] * gogenerate * Revert "gogenerate" This reverts commit b40e602. * im dumb * generate * tidy * update swagger doc * [goreleaser] * [goreleaser] --------- Co-authored-by: shampoobera <[email protected]> Co-authored-by: bigboydiamonds <[email protected]> Co-authored-by: bigboydiamonds <[email protected]> Co-authored-by: trajan0x <[email protected]> Co-authored-by: Trajan0x <[email protected]> Co-authored-by: χ² <[email protected]> Co-authored-by: ChiTimesChi <[email protected]> * rfq api cache (#2562) * cache api result [goreleaser] * clean up * clean up 2 --------- Co-authored-by: Trajan0x <[email protected]> * add trace to sync (#2601) * trace more * cleanup * allow use of mustache templates --------- Co-authored-by: Trajan0x <[email protected]> * remove iconfig file (#2602) Co-authored-by: Trajan0x <[email protected]> * feat(contracts-communication): remove batching (#2599) * feat: scaffold InterchainDB interface changes * feat: scaffold Module interface changes * feat: update InterchainEntry * test: update DB tests * test: update Client tests * refactor: ModuleBatch -> ModuleEntry * feat: remove `entryIndex` from InterchainTx * feat: scaffold Client interface changes * feat: start updating the Module * test: update integration tests * cleanup: remove BatchingV1 * feat: update InterchainDB * cleanup: remove entryIndex from apps * cleanup: remove entryIndex from Client events * feat: update ClientV1 * cleanup: remove entryIndex from DB * test: update SynapseModule tests * cleanup: ClientV1 * cleanup: DB * cleanup: Module * cleanup: remove batch lib * docs: smol fixes * Publish - [email protected] * optional screener for cctp relayer (#2600) Co-authored-by: Trajan0x <[email protected]> * Sin/testnet 9 (#2567) * fix: remove `ExecutionFees` references * New set of deployments * Adjust config files to the latest changes * adding spectral coingecko ids for pricing (#2596) * feat(widget): suppress console errors (#2594) * Allow widget to suppress Synapse console errors * feat(sdk-router): router cache error log (#2591) * Improve RouterCache error logging * Add common error string to target at Consumer level * Add common string to all console errors * feat(widget): error logs (#2593) * Add common base string to allow hiding Widget related errors outputted in Consumer app * Convert logs into errors if firing in catch statement * Update README * Optional prop * Switch catch log to error * Re-trigger action * Remove line * Publish - @synapsecns/[email protected] - @synapsecns/[email protected] - @synapsecns/[email protected] - @synapsecns/[email protected] * fix(contracts-communication): interchain module ignore nonces (#2604) * feat: remove dbNonce from Module interface * cleanup: update Module interface references * refactor: lint * Publish - [email protected] * feat(synapse-interface): bridge gas handler (#2437) * Initial gas data slice state * Async thunk fetchGasData * Add gas data reducers * useFetchGasDataOnInterval added to Bridge Listener * Explicitly declare fetching gas data in gwei * Calculate max bridgeable amount * On max balance factoring in gas cost * Add comment * Differentiate max balance vs max bridgeable balance * Add error toaster for when max balance less than bridge fee * refactor; calculateGasFeeInGwei() * Move to util * Fix lint error * Fetch gas when fromChainId on bridge card changes * Use exact token balance when calculate max bridgeable amount * Conditions for showing max button * showMaxOption to determine display * Disable max button if gas fees more than gas balance * Clean jsx * AvailableBalance component to track subscript detail in bridge origin input * Return raw and formatted gas cost in calculateGasCost * Update comments * Fix imports based on name cange * Use parsed * calculateMaxBridgeableGas * Clean * refactor: clean InputContainer * Replace onMaxBalance() with onMaxBridgeableBalance()` * Allow undefined object when destructuring * Display when token balance is trace balance * Typing * showGasReserved * Update avail balance text and color when gas cost greater than balance * Detect when input value is less than required estimated gas * onAvailableBalance applied * Make opacity greater when Max button disabled * Fix calculations for when gas input is enough to cover gas * Clean * Add hover tooltip for warning gas states * Use tooltip to describe gas status * Update tooltip text * Add buffer to calculate gas cost, use 1.5x * AvailableBalance component to replace label in AmountInput * Display trace balances in AvailableBalance * Fix naming * Add HoverTooltip to Available Balance * Add conditions for displaying gas error based on input * Use full parsed balance when making comparisons for gas checks * Show gas reserved in Available Balance * hasOnlyZeroes to return true if string contains only zeroes and periods * Display estimated gas cost in tool tip * Remove Available Balance elements from AmountInput, migrated to AvailableBalance * Display trace amount for input when displaying how much is reserved for gas * Fetch estimated gas limit based on real bridge quote using max gas balance * Fetching accurate gasLimit * Fix Trace balance * Set gasLimit to 0 if not valid bridge data avail * ... * Fix when gas covered msg appears * Available Balance * Clean available balance flow * useGasEstimator hook to encapsulate logic to clean InputContainer * Fix prop issue * Remove duplicate HoverTooltip * Move HoverTooltip to shared component folder * Update gas fetch for wagmi v2, up limit to 1.7 * Estimated gas bridge quote fetched on load * Update var naming * Improve Available Balance flow * Display estimated bridgeable balance on hover * Show gas estimate when estimated gas cost available * Do not show negative bridgable balance * Separate out bridge gas limit calculations into smaller functions * Wrap async functions with try catch * Implement updated gas estimation flow * Move gas estimate logic to useGasEstimator * Move async sdk fetch functions to useGasEstimator file * Remove unused vars * Shorten est gas cost * Improve code legibility in AvailableBalance * Assign conditions to vars to reduce clutter * Reset gas price data when fromChainId changes * Reset fetched gas limit when fromChainId changes * Clean * Fix old import * Fix max button placement * Add loading state for useGasEstimator * Remove available balance states for gas est * Remove unused props * Clean gas token detection in PortfolioTokenAsset * Simplify onMaxBalance() * Clean constants in InputContainer * Clean token detail destructuring * Include gas estimate when updating input from Portfolio token selection * Fire error toaster if gas fees exceed balance * Render error toaster when firing onMaxBalance callback instead of a side effect * Clean useGasEstimator * Ensure available balance does not show if wallet not connected, set default value if balances not loaded * Replicate onMax behavior in Portfolio * Use fetched gas * Improve error handling in gas estimator * ... * Remove tooltip on AvailableBalance * Remove balance prefill from Portfolio Token selection * Update available balance in input based on max bridgeable gas toke * Destructure estimateGasLimit callback from useGasEstimator to retrigger fetching gas estimate * Refetch gas ata in estimateGasLimit callback * Display total vs bridgeable balance on hover in Portfolio gas token when gas data available * Update balance shown on hover * Clean * Simplify useFetchGasDataOnInterval * Prevent unnecessary fetches, fix chain update old gas issue * Fetch estimated bridgeable max gas amount onClick token max input, fill input once amount fetched * Clean * onMaxBalance will use default balanceif fetched bridgeable balance estimate returns null * Show dust gas amounts on hover in Portfolio * Clean * Available balance including gas estimates moved to within Input to synchronize data * Move gasLimit to global store to share data between Bridge components * Display max bridgeable balance on hover in Portfolio, add onMaxBalance onClick Portfolio asset * Portfolio and Input available balance onClick behave the same * Fetch gas prices to provide most accurate gas cost * Remove hover on AvailableBalance * Fix Token Selector width * Remove onClick Portfolio Token Balance, allow Token selection from Portfolio only without Balance input update * Cursor default on Portfolio Token Balance * Show available/max buttons when bridge valid selections * Swap input to have available balance * Clean * Basic MaxButton onClick and hidden when loading gas data * Show MaxButton when input is not full balance or bridgeable balance * Implement Max button and placement in Bridge/Swap * Hide MaxButton until connected * Hide MaxButton conditions * Show Max when all input selections are made * Remove click states for AvailableBalance on Bridge/Swap * Style Input / Max * Max mobile size * Fe/format amount (#2598) * formatAmount util function, use rounded shortened values in Bridge/Swap Input * Update Bridge/Swap page with parsed / formatted balances * Clean imports * Clean imports * Swap Max spacing * Improve html element composition * Prevent layout shift in Swap UI * Publish - @synapsecns/[email protected] * add "and" (#2608) * fix(contracts-communication): default settings for Guard service (#2605) * test: should ignore optimistic period w/o guard * test: app should have empty config be default * test: should allow setting zero optimistic period * fix: ignore optimistic period without a guard * fix: use GUARD_DISABLED flag by default * fix: don't revert on zero optimistic period * test: different optimistic periods for integration tests * fix: use default guard for PingPongApp * refactor: fix linter warnings * Publish - [email protected] - @synapsecns/[email protected] * Fix: put blocking call to Start() in new goroutine (#2614) * feat(contracts-communication): default values for modules/required respones (#2612) * feat: scaffold defaultModule in Client * test: expected behavior for setting default module * feat: setting default Module in Client * refactor: Client views test * test: appConfig with zero modules/responses * feat: module config defaults * cleanup: remove `ZeroRequiredResponses` error * refactor: prep for 0 and 1 module tests * test: ClientV1 + app with 1 module * test: ClientV1 + app with 0 modules * Publish - [email protected] * RFQ: rebalance edge cases & refactoring (#2613) * Fix: filter rebalance origin / dest on rebalance method * Cleanup: move getRebalance() into rebalance.go * Cleanup: add helpers to getRebalance() * Cleanup: comments * Feat: remove Rebalance() call upon deposit claimed * Feat: getRebalance() takes in dest chain id * Cleanup: comments * Feat: extra check that we don't exceed origin maintenance * Feat: add new test case for mismatched methods but existing rebalance * Feat: break down TestGetRebalance into sub tests * Cleanup: lint * [goreleaser] * [goreleaser] * refactor: move opinionated stuff into SynapseModule (#2617) * Publish - [email protected] * Document Modules (#2611) Co-authored-by: Trajan0x <[email protected]> * cleanup (#2618) Co-authored-by: Trajan0x <[email protected]> * fix tests (#2620) Co-authored-by: Trajan0x <[email protected]> * RFQ API: replace `otelresty` with `otelhhtp` package (#2606) * Feat: replace otelresty usage with otelhttp pkg * [goreleaser] * make coverage aggregator public (#2621) Co-authored-by: Trajan0x <[email protected]> * Publish - @synapsecns/[email protected] * publish aggregator fix (#2622) Co-authored-by: Trajan0x <[email protected]> * Publish - @synapsecns/[email protected] * fix(solidity-devops): update forge-std to 1.8.2 (#2619) * build: update `forge-std` to 1.8.2 * chore: yarn * Publish - [email protected] - [email protected] - @synapsecns/[email protected] * feat(docs): auto deploy vercel to prod (only vercel) (#2627) Co-authored-by: Trajan0x <[email protected]> * fix(ci): fixes bug in #2627, deploys go to prod (#2628) Co-authored-by: Trajan0x <[email protected]> * docs(contributing) add a guide on adding js packages (#2629) * docs(contributing) add a guide on adding js packages * Update CONTRIBUTING.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Trajan0x <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * revert coderabbit fix (#2630) Co-authored-by: Trajan0x <[email protected]> * prod release fix (#2631) Co-authored-by: Trajan0x <[email protected]> * Publish - @synapsecns/[email protected] * add grafana dashboard and fix broken link (#2634) Co-authored-by: Trajan0x <[email protected]> * add scroll (#2635) Co-authored-by: Trajan0x <[email protected]> * Submitter: bump MaxResultsPerChain (#2633) * Feat: bump MaxResultsPerChain * [goreleaser] * fast bridge regen (#2636) Co-authored-by: Trajan0x <[email protected]> * omnirpc doc fixes (#2637) * swagger * embed swagger ui * generic lint fixer --------- Co-authored-by: Trajan0x <[email protected]> * fix typo (#2638) Co-authored-by: Trajan0x <[email protected]> * Update bl * Add SPECTRAL token support (#2640) * Publish - @synapsecns/[email protected] - @synapsecns/[email protected] * feat(synapse-interface): Adds Scroll via RFQ (#2526) * Adds Scroll via RFQ * Adds NewTag * Adds RFQ logic into the generateMaps script * Adds announcement banner * Linting * Adjusts order * API call for quotes * Updates bridgeMap for live Scroll quotes * For reusing NewTag * Adjust dates * Publish - @synapsecns/[email protected] * feat(widget): maintenance (#2616) * Fetch pause data and store JSON object in client browser * Refetch only if last fetch was more than 24 hours ago * Read chain + module pause from local storage * Maintenance components rendering based off of fetched pause data * Pause Bridge button based on Maintenance status * Filter quotes based on paused modules * Use user defined styling or defaults * Style Progress Bar * Refactor getSynapsePauseData * Clean * Fix bridge quote filter * Adjust text size for maintenance * Add comments + clean * Update comment * Refresh data every hour * Clean * Add key to warning messages * Fix render issues, start move event countdown component directly to Widget to resolve hooks issue * Resolve hooks render issue with localized component * Progress bar renders when not isabled * Clean and simplify Maintenance components * getMaintenanceData * Organize back into useMaintenance hook * Clean / organize * Use prod urls * Organizational updates * Fetch pause data every render, set fetching status flag * Rm timestamp key --------- Co-authored-by: abtestingalpha <[email protected]> * Publish - @synapsecns/[email protected] * RFQ API: add GET /ack endpoint (#2643) * WIP: add relay ack cache and GetRelayAck endpoint * Feat: register AckRoute * Feat: add ackMux * Feat: add GetRelayAck test * Feat: add GetRelayAck to UnauthenticatedClient * Feat: relayer fetches ack before updating to CommittedPending * [goreleaser] * Feat: move GET /ack to PUT /ack * WIP: generalize AuthMiddleware() * Fix: working refactor for auth * Feat: add PutAckRequest and parse in auth middleware * Feat: impl PUT /ack request with json req body * Feat: bump default timeout from 5 to 10 * Feat: add swagger comments * Cleanup: pass API client into quoter * Feat: return RelayerAddress in PutRelayAckResponse * Cleanup: add clarifying comment * [goreleaser] * Cleanup: lint * [goreleaser] * Cleanup: add tracing * [goreleaser] * Config: bump relay ack timeout to 30 seconds * [goreleaser] * Feat: lower submitter retry interval (#2645) * update bl * Adjusts banner date (#2647) * Publish - @synapsecns/[email protected] * Add SPEC token pricing to the manual cache (#2646) * adding spectral coingecko ids for pricing * adding spec token to cache * Update bl * fix(screener): fix screener http 502 (#2650) Co-authored-by: trajan0x <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * update bl * update bl --------- Co-authored-by: aureliusbtc <[email protected]> Co-authored-by: ChiTimesChi <[email protected]> Co-authored-by: dwasse <[email protected]> Co-authored-by: ChiTimesChi <[email protected]> Co-authored-by: Trajan0x <[email protected]> Co-authored-by: vro <[email protected]> Co-authored-by: shampoobera <[email protected]> Co-authored-by: bigboydiamonds <[email protected]> Co-authored-by: bigboydiamonds <[email protected]> Co-authored-by: trajan0x <[email protected]> Co-authored-by: Moses <[email protected]> Co-authored-by: Simon <[email protected]> Co-authored-by: aureliusbtc <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: abtestingalpha <[email protected]>
Description
A clear and concise description of the features you're adding in this pull request.
Additional context
Add any other context about the problem you're solving.
Metadata
Summary by CodeRabbit
New Features
Enhancements
Refactor
Bug Fixes