-
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
FE Release 2024-06-13 #2680
FE Release 2024-06-13 #2680
Conversation
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
* feat: use per-environment global configs * fix: globalProperty -> environment * docs: environment-specific configs
* fix: allow verifier to be omitted * fix: don't add `--verify` for chains without a verifier
* Feat: bump MaxResultsPerChain to 10 * [goreleaser] * Feat: add processDB trace * [goreleaser]
* Feat: split FixedFeeMultiplier into relay and quote variants * Fix: tests * Feat: isRelay -> isQuote * Feat: default relay mult to quote mult * Fix: config tests * [goreleaser]
…martwallet (#2674) * Upgrade rainbowkit, wagmi, viem * Bump node required version * Node * Update .nvmrc * Update for bumped versions
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
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: 3
Outside diff range and nitpick comments (4)
ethergo/listener/listener_test.go (1)
43-46
: LGTM! TheNewChainListener
is correctly instantiated with a new block handler. Consider enhancing the block handler with more meaningful logging or operations than just printing the block number.README.md (3)
Line range hint
24-24
: Correct the article usage for "interchain".- is a interchain messaging protocol + is an interchain messaging protocol
Line range hint
92-92
: Correct the spelling of "Node.js".- install nodejs packages + install Node.js packages
Line range hint
101-101
: Standardize the spelling of "Node.js".- Install the Correct Version of NodeJS + Install the Correct Version of Node.js - install the correct version of NodeJS. + install the correct version of Node.js.Also applies to: 103-103
Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (10)
agents/go.mod
is excluded by!**/*.mod
agents/go.sum
is excluded by!**/*.sum
committee/go.mod
is excluded by!**/*.mod
committee/go.sum
is excluded by!**/*.sum
contrib/promexporter/go.mod
is excluded by!**/*.mod
contrib/promexporter/go.sum
is excluded by!**/*.sum
ethergo/go.mod
is excluded by!**/*.mod
ethergo/go.sum
is excluded by!**/*.sum
go.work
is excluded by!**/*.work
go.work.sum
is excluded by!**/*.sum
Files selected for processing (12)
- .codecov.yml (1 hunks)
- .github/workflows/go.yml (1 hunks)
- .github/workflows/solidity.yml (3 hunks)
- .nvmrc (1 hunks)
- README.md (3 hunks)
- ethergo/listener/listener.go (5 hunks)
- ethergo/listener/listener_test.go (2 hunks)
- ethergo/listener/options.go (1 hunks)
- ethergo/parser/rpc/rpc.go (2 hunks)
- ethergo/parser/rpc/rpc_test.go (1 hunks)
- ethergo/submitter/db/txdb/store.go (1 hunks)
- funding.json (1 hunks)
Files skipped from review due to trivial changes (4)
- .codecov.yml
- .github/workflows/solidity.yml
- .nvmrc
- funding.json
Additional context used
LanguageTool
README.md
[misspelling] ~24-~24: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...napse](https://synapseprotocol.com/) is a interchain messaging protocol & bridge ...
[style] ~24-~24: The phrase “a variety of” may be wordy. To make your writing clearer, consider replacing it. (A_VARIETY_OF)
Context: ...oss multiple chains. This repo contains a variety of tools, interfaces and services that for...
[style] ~34-~34: The phrase “a variety of” may be wordy. To make your writing clearer, consider replacing it. (A_VARIETY_OF)
Context: ...fun to work on! ## Projects There are a variety of different packages in this repo, covere...
[uncategorized] ~92-~92: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...ne the repository, open it, and install nodejs packages withyarn
: ```bash git clon...
[uncategorized] ~101-~101: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...`` ### Install the Correct Version of NodeJS Usingnvm
, install the correct versi...
[uncategorized] ~103-~103: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...gnvm
, install the correct version of NodeJS.nvm use
### Building the Typ...
[style] ~111-~111: Consider removing “of” to be more concise (ALL_OF_THE)
Context: ...lding the TypeScript packages To build all of the TypeScript packages, run:...
[uncategorized] ~132-~132: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ch strategy for development: -master
: This is the primary development branch ...
[style] ~132-~132: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...pull requests (new features, bug fixes, etc) should be opened against this branch. ...
[uncategorized] ~134-~134: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eature) for more details. -fe-release
: This branch is used for production fron...
[style] ~137-~137: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...d-update) for more details. >master
should never be behindfe-release
! The only ...
[typographical] ~149-~149: It appears that a comma is missing. (DURING_THAT_TIME_COMMA)
Context: ... 1: Implementing a New Feature In this scenario you are implementing a new feature that...
[style] ~189-~189: Consider using a different verb for a more formal wording. (FIX_RESOLVE)
Context: ...lly. If any of the checks fail, you can fix the issues in your feature branch and p...
[typographical] ~194-~194: It appears that a comma is missing. (DURING_THAT_TIME_COMMA)
Context: ...: Releasing a Front-end Update In this scenario you are releasing a front-end update us...
[uncategorized] ~242-~242: Use a comma before ‘or’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE)
Context: ..., you might want to merge the PR as soon or before it passes all checks. However, *...
[style] ~271-~271: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...the docs or both. Maybe a symlink? --> In order to minimize risks coming from extraneous d...
Markdownlint
README.md
16-16: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
22-22: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
23-23: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
100-100: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
28-28: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines
105-105: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified
Additional comments not posted (9)
ethergo/listener/options.go (2)
14-19
: LGTM! The implementation ofWithNewBlockHandler
adheres to the functional options pattern.
21-26
: LGTM! The implementation ofWithPollInterval
correctly applies the functional options pattern.ethergo/parser/rpc/rpc_test.go (1)
15-20
: LGTM! TheTestIsNullResponse
function correctly tests both null and non-null scenarios.ethergo/parser/rpc/rpc.go (2)
88-96
: LGTM! TheIsNullResponse
function correctly identifies null responses in JSON-RPC.
98-102
: LGTM! TherpcResponse
struct is well-defined for handling JSON-RPC responses.ethergo/listener/listener.go (3)
47-50
: Added new fieldspollIntervalSetting
andnewBlockHandler
tochainListener
.Ensure that these fields are properly initialized and used where necessary. The addition of these fields should be reflected in the unit tests to verify their behavior.
60-75
: RefactoredNewChainListener
to accept functional options.This change enhances the flexibility of the
chainListener
initialization. Ensure that all invocations of this function across the codebase are updated to use the new options pattern.
Line range hint
112-152
: UpdateddoPoll
method to utilizepollIntervalSetting
and handlenewBlockHandler
.This update integrates the new fields effectively. Ensure that the error handling and backoff logic are thoroughly tested, especially the new block handling logic.
ethergo/submitter/db/txdb/store.go (1)
70-70
: UpdatedMaxResultsPerChain
from 2 to 10.This change increases the maximum number of transactions returned per chain. Ensure that this change does not adversely affect performance and that it is consistent with the intended usage patterns.
.github/workflows/go.yml
Outdated
@@ -523,18 +523,18 @@ jobs: | |||
# Foundry is required for flattening | |||
- name: Install Foundry | |||
uses: foundry-rs/foundry-toolchain@v1 | |||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') || contains(matrix.package, 'sin-executor') || contains(matrix.package, 'committee') }} | |||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') |
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.
Ensure the conditional statement is syntactically correct.
The conditional statement is missing a closing parenthesis. This will cause a syntax error when the workflow runs. Here's the corrected version:
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.ackage, 'services/rfq') }}
Committable suggestion was skipped due to low confidence.
.github/workflows/go.yml
Outdated
with: | ||
version: nightly | ||
|
||
- name: Install Node Dependencies | ||
run: yarn install --immutable | ||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') || contains(matrix.package, 'sin-executor') || contains(matrix.package, 'committee') }} | ||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') |
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.
Ensure the conditional statement is syntactically correct.
Similar to the previous comment, this conditional statement is also missing a closing parenthesis. Here's the corrected version:
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }}
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') | |
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }} |
.github/workflows/go.yml
Outdated
|
||
# Generate flattened files | ||
- name: Run flattener | ||
run: npx lerna exec npm run build:go | ||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') || contains(matrix.package, 'sin-executor') || contains(matrix.package, 'committee') }} | ||
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') |
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.
Ensure the conditional statement is syntactically correct.
This is another instance where the conditional statement is missing a closing parenthesis. Here's the corrected version:
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }}
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') | |
if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }} |
* fix: add RFQ.ETH and RFQ.USDC into eligible origin sets * chore: regenerate bridge map
Deploying sanguine-fe with
|
Latest commit: |
30be8d6
|
Status: | ✅ Deploy successful! |
Preview URL: | https://ebea1627.sanguine-fe.pages.dev |
Branch Preview URL: | https://master.sanguine-fe.pages.dev |
* Feat: use gauge instead of hist for inventory balance metrics * Feat: observe latest quote age in rfq api server * Cleanup: whitespace * [goreleaser] * Cleanup: whitespace
* Feat: add MinGasBalance * Feat: add hasSufficientGas() * Feat: only call bumpTx() if we have sufficient gas * Cleanup: add comment * Feat: compare to tx.Cost() instead of configured min * Fix: remove unused code
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
Outside diff range and nitpick comments (1)
ethergo/submitter/chain_queue.go (1)
Line range hint
163-163
: Replace magic number with a named constant.The use of the magic number '2' in
wg.Add(2)
should be replaced with a named constant to improve code readability and maintainability. This makes it clear what the '2' represents and makes the code easier to understand at a glance.- wg.Add(2) + const numGoroutines = 2 + wg.Add(numGoroutines)
Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files selected for processing (1)
- ethergo/submitter/chain_queue.go (2 hunks)
Additional context used
golangci-lint
ethergo/submitter/chain_queue.go
163-163: Magic number: 2, in detected (mnd)
Additional comments not posted (1)
ethergo/submitter/chain_queue.go (1)
Line range hint
87-107
: Enhanced gas balance check before transaction bumping.The addition of a gas balance check before processing transactions is a prudent enhancement. It prevents unnecessary transaction submissions when the balance is insufficient, thus saving resources and potential transaction fees. Ensure that the
gasBalance
and transaction cost comparison logic is thoroughly tested to handle edge cases.
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
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: 1
Outside diff range and nitpick comments (1)
README.md (1)
Line range hint
24-24
: Correct language and markdown issues.- [Synapse](https://synapseprotocol.com/) is a interchain messaging protocol & bridge ... + [Synapse](https://synapseprotocol.com/) is an interchain messaging protocol & bridge ... - There are a variety of different packages in this repo, covered comprehensively ... + There are several different packages in this repo, covered comprehensively ... - To build all of the [TypeScript packages](./packages), run: + To build all the [TypeScript packages](./packages), run: - `master`: This is the primary development branch ... + `master`: This branch is the primary development branch ... - `fe-release`: This branch is used for production front-end releases ... + `fe-release`: This branch is used for production front-end releases ... - `master` should never be behind `fe-release`! The only ... + It should be noted that `master` should never be behind `fe-release`! The only ... - In this scenario you are implementing a new feature that ... + In this scenario, you are implementing a new feature that ... - In this scenario you are releasing a front-end update using ... + In this scenario, you are releasing a front-end update using ... - In order to minimize risks coming from extraneous dependencies ... + To minimize risks coming from extraneous dependencies ... - Use a comma before ‘or’ if it connects two independent clauses ... + Use a comma before ‘or’ if it connects two independent clauses ... - Consider a shorter alternative to avoid wordiness ... + Consider a shorter alternative to avoid wordiness ... - Multiple consecutive blank lines + Reduce multiple consecutive blank lines to a single blank line. - Headings should be surrounded by blank lines + Add a blank line above and below each heading. - Fenced code blocks should have a language specified + Specify the language for each fenced code block.Also applies to: 34-34, 88-88, 97-97, 99-99, 107-107, 128-128, 130-130, 133-133, 145-145, 185-185, 190-190, 238-238, 267-267, 16-16, 22-22, 23-23, 96-96, 28-28, 101-101
Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (13)
contrib/release-copier-action/go.mod
is excluded by!**/*.mod
contrib/release-copier-action/go.sum
is excluded by!**/*.sum
contrib/terraform-provider-helmproxy/go.mod
is excluded by!**/*.mod
contrib/terraform-provider-helmproxy/go.sum
is excluded by!**/*.sum
contrib/terraform-provider-iap/assets/img.png
is excluded by!**/*.png
contrib/terraform-provider-iap/go.mod
is excluded by!**/*.mod
contrib/terraform-provider-iap/go.sum
is excluded by!**/*.sum
contrib/terraform-provider-kubeproxy/go.mod
is excluded by!**/*.mod
contrib/terraform-provider-kubeproxy/go.sum
is excluded by!**/*.sum
contrib/tfcore/go.mod
is excluded by!**/*.mod
contrib/tfcore/go.sum
is excluded by!**/*.sum
go.work
is excluded by!**/*.work
go.work.sum
is excluded by!**/*.sum
Files selected for processing (8)
- .codecov.yml (2 hunks)
- .devcontainer/devcontainer.json (1 hunks)
- .github/workflows/go.yml (1 hunks)
- .github/workflows/goreleaser-actions.yml (1 hunks)
- .github/workflows/lint.yml (1 hunks)
- README.md (2 hunks)
- docs/bridge/CHANGELOG.md (1 hunks)
- docs/bridge/package.json (2 hunks)
Files skipped from review due to trivial changes (3)
- .devcontainer/devcontainer.json
- .github/workflows/goreleaser-actions.yml
- docs/bridge/package.json
Files skipped from review as they are similar to previous changes (2)
- .codecov.yml
- .github/workflows/go.yml
Additional context used
LanguageTool
docs/bridge/CHANGELOG.md
[uncategorized] ~24-~24: It appears that a hyphen is missing (if ‘auto’ is not used in the context of ‘cars’). (AUTO_HYPHEN)
Context: ...c4d0e36fd)) ### Features * docs: auto deploy vercel to prod (only vercel) ([#2627](h...README.md
[misspelling] ~24-~24: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...napse](https://synapseprotocol.com/) is a interchain messaging protocol & bridge ...
[style] ~24-~24: The phrase “a variety of” may be wordy. To make your writing clearer, consider replacing it. (A_VARIETY_OF)
Context: ...oss multiple chains. This repo contains a variety of tools, interfaces and services that for...
[style] ~34-~34: The phrase “a variety of” may be wordy. To make your writing clearer, consider replacing it. (A_VARIETY_OF)
Context: ...fun to work on! ## Projects There are a variety of different packages in this repo, covere...
[uncategorized] ~88-~88: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...ne the repository, open it, and install nodejs packages withyarn
: ```bash git clon...
[uncategorized] ~97-~97: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...`` ### Install the Correct Version of NodeJS Usingnvm
, install the correct versi...
[uncategorized] ~99-~99: The official spelling of this programming framework is “Node.js”. (NODE_JS)
Context: ...gnvm
, install the correct version of NodeJS.nvm use
### Building the Typ...
[style] ~107-~107: Consider removing “of” to be more concise (ALL_OF_THE)
Context: ...lding the TypeScript packages To build all of the TypeScript packages, run:...
[uncategorized] ~128-~128: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ch strategy for development: -master
: This is the primary development branch ...
[style] ~128-~128: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...pull requests (new features, bug fixes, etc) should be opened against this branch. ...
[uncategorized] ~130-~130: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eature) for more details. -fe-release
: This branch is used for production fron...
[style] ~133-~133: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...d-update) for more details. >master
should never be behindfe-release
! The only ...
[typographical] ~145-~145: It appears that a comma is missing. (DURING_THAT_TIME_COMMA)
Context: ... 1: Implementing a New Feature In this scenario you are implementing a new feature that...
[style] ~185-~185: Consider using a different verb for a more formal wording. (FIX_RESOLVE)
Context: ...lly. If any of the checks fail, you can fix the issues in your feature branch and p...
[typographical] ~190-~190: It appears that a comma is missing. (DURING_THAT_TIME_COMMA)
Context: ...: Releasing a Front-end Update In this scenario you are releasing a front-end update us...
[uncategorized] ~238-~238: Use a comma before ‘or’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE)
Context: ..., you might want to merge the PR as soon or before it passes all checks. However, *...
[style] ~267-~267: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...the docs or both. Maybe a symlink? --> In order to minimize risks coming from extraneous d...
Markdownlint
docs/bridge/CHANGELOG.md
17-17: Expected: h2; Actual: h3 (MD001, heading-increment)
Heading levels should only increment by one level at a time
10-10: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
11-11: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
12-12: Expected: 1; Actual: 4 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
13-13: Expected: 1; Actual: 5 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
16-16: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
21-21: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
14-14: null (MD025, single-title, single-h1)
Multiple top-level headings in the same documentREADME.md
16-16: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
22-22: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
23-23: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
96-96: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
28-28: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines
101-101: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified
Additional comments not posted (3)
docs/bridge/CHANGELOG.md (1)
6-9
: Version bump correctly documented..github/workflows/lint.yml (1)
24-24
: Change toignore_paths
correctly focuses linting efforts.README.md (1)
84-85
: Note about Terraform modules is clear and helpful.
|
||
|
||
|
||
|
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.
Correct markdown formatting issues.
-# 0.1.0 (2024-05-13)
+## 0.1.0 (2024-05-13)
Reduce multiple consecutive blank lines to a single blank line.
Also applies to: 16-16
Committable suggestion was skipped due to low confidence.
Tools
Markdownlint
10-10: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
11-11: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
12-12: Expected: 1; Actual: 4 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
13-13: Expected: 1; Actual: 5 (MD012, no-multiple-blanks)
Multiple consecutive blank lines
* fix: adjust to #2658 breaking changes * chore: remove scripts for coverage report
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
| datasource | package | from | to | | ---------- | -------------------------- | ---------------------------------- | ---------------------------------- | | go | github.com/gen2brain/beeep | v0.0.0-20220909211152-5a9ec94374f6 | v0.0.0-20240516210008-9c006672e7f4 | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
| datasource | package | from | to | | ---------- | ------------------------- | ---------------------------------- | ---------------------------------- | | go | github.com/gocarina/gocsv | v0.0.0-20231116093920-b87c2d0e983a | v0.0.0-20240520201108-78e41c74b4b1 | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
| datasource | package | from | to | | ---------- | -------------------------- | ---------------------------------- | ---------------------------------- | | go | github.com/vishalkuo/bimap | v0.0.0-20220726225509-e0b4f20de28b | v0.0.0-20230830142743-a9fb9b52066c | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…7e9 (#2671) | datasource | package | from | to | | ---------- | ------------------------------------ | ---------------------------------- | ---------------------------------- | | go | github.com/kendru/darwin/go/depgraph | v0.0.0-20221105232959-877d6a81060c | v0.0.0-20230809052043-4d1c7e9d1767 | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Trajan0x <trajan0x@users.noreply.github.com>
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: 17
Outside diff range and nitpick comments (12)
ethergo/backends/geth/logger.go (1)
Line range hint
21-34
: Incorrect log level mapping forWarnLevel
andErrorLevel
.- return gethLog.LvlDebug + return gethLog.LvlWarnFor
ErrorLevel
, it should be:- return gethLog.LvlDebug + return gethLog.LvlErrorethergo/backends/preset/presets.go (2)
12-20
: Consider using a more secure method for handling private keys, such as vaults or encrypted storage.
Line range hint
27-55
: Consider parameterizing the chain IDs and RPC URLs to enhance flexibility and configurability.ethergo/backends/geth/config.go (1)
4-7
: Ensure that security settings such as CORS for HTTP and discovery settings for P2P are well-documented to avoid potential security risks.ethergo/backends/geth/geth.go (2)
232-232
: Review the logic for settingGasLimit
to half of the genesis block's limit.The decision to set the
GasLimit
to half of the genesis block's limit inGetTxContext
might need further explanation or documentation to clarify its purpose and ensure it aligns with expected behavior.
302-302
: Consistency in handlingGasLimit
across different contexts.The method
getFaucetTxContext
also sets theGasLimit
to half of the genesis block's limit. It's important to maintain consistency in howGasLimit
is set across different contexts or document the reasons for different treatments.ethergo/backends/simulated/multibackend/simulated_gen.go (2)
Line range hint
650-672
: Ensure consistency in gas price handling.The method
callContract
handles gas prices differently based on the block number. This could lead to inconsistencies if not properly managed. Consider refactoring to unify the handling of gas prices to prevent potential bugs.
Line range hint
720-742
: Enhance error reporting inSendTransaction
.When sending a transaction fails due to an invalid nonce or other issues, the error messages could be more informative. This would help in diagnosing problems during testing.
if err != nil { + log.Error("Failed to fetch parent block", "parentHash", b.pendingBlock.ParentHash(), "error", err) return errors.New("could not fetch parent") } if err != nil { + log.Error("Invalid transaction", "error", err) return fmt.Errorf("invalid transaction: %v", err) } if tx.Nonce() != nonce { + log.Error("Nonce mismatch", "expected", nonce, "actual", tx.Nonce()) return fmt.Errorf("invalid transaction nonce: got %d, want %d", tx.Nonce(), nonce) }agents/agents/executor/executor_test.go (3)
Line range hint
1-100
: Consider adding more detailed error messages.While the error handling in
TestVerifyState
is generally good, adding more detailed error messages could help in debugging and understanding the context of the error more clearly.- e.Nil(err) + e.Require().Nil(err, "Failed to create new executor: %v", err)
Line range hint
101-200
: Simplify theTestMerkleInsert
function to improve readability.The
TestMerkleInsert
function is quite complex with multiple go routines and deferred functions. Consider breaking it down into smaller, more manageable functions to improve readability and maintainability.- go func() { + func startScribe() error { + return scribe.Start(e.GetTestContext()) + } + err := startScribe() + e.Nil(err)
Line range hint
201-300
: Enhance error handling inTestVerifyMessageMerkleProof
.The error handling in
TestVerifyMessageMerkleProof
could be more robust. Consider checking for errors immediately after operations that can fail, to ensure that any issues are caught and handled appropriately.- e.Nil(err) + e.Require().Nil(err, "Failed to store message: %v", err)agents/agents/guard/fraud_test.go (1)
605-605
: Consider using a more descriptive variable name forrecipientDestination
.The variable name
recipientDestination
could be more descriptive to indicate its purpose or role more clearly, such asrecipientAddressHash
.
Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (7)
agents/go.sum
is excluded by!**/*.sum
contrib/git-changes-action/go.sum
is excluded by!**/*.sum
contrib/promexporter/go.sum
is excluded by!**/*.sum
contrib/screener-api/go.sum
is excluded by!**/*.sum
core/go.sum
is excluded by!**/*.sum
ethergo/go.sum
is excluded by!**/*.sum
go.work.sum
is excluded by!**/*.sum
Files selected for processing (34)
- .gitignore (1 hunks)
- .golangci.yml (2 hunks)
- agents/agents/agentsintegration/agentsintegration_test.go (1 hunks)
- agents/agents/executor/executor_test.go (1 hunks)
- agents/agents/guard/fraud_test.go (1 hunks)
- agents/go.mod (13 hunks)
- agents/testutil/simulated_backends_suite.go (1 hunks)
- contrib/git-changes-action/go.mod (2 hunks)
- contrib/promexporter/go.mod (4 hunks)
- contrib/screener-api/go.mod (7 hunks)
- core/go.mod (5 hunks)
- ethergo/backends/anvil/anvil.go (2 hunks)
- ethergo/backends/base/base.go (2 hunks)
- ethergo/backends/geth/config.go (3 hunks)
- ethergo/backends/geth/geth.go (8 hunks)
- ethergo/backends/geth/geth_test.go (1 hunks)
- ethergo/backends/geth/logger.go (4 hunks)
- ethergo/backends/preset/presets.go (4 hunks)
- ethergo/backends/simulated/multibackend/chainid.go (2 hunks)
- ethergo/backends/simulated/multibackend/simulated_gen.go (14 hunks)
- ethergo/backends/simulated/multibackend/simulated_gen_test.go (30 hunks)
- ethergo/backends/simulated/simulated.go (3 hunks)
- ethergo/chain/chain_test.go (1 hunks)
- ethergo/chain/client/client_test.go (3 hunks)
- ethergo/chain/client/config.go (2 hunks)
- ethergo/chain/client/config_test.go (2 hunks)
- ethergo/chain/client/lifecycle_test.go (1 hunks)
- ethergo/chain/gas/londinium/gasprice.go (2 hunks)
- ethergo/chain/gas/londinium/gasprice_test.go (3 hunks)
- ethergo/chain/gas/london/oracle_backend.go (2 hunks)
- ethergo/go.mod (6 hunks)
- ethergo/submitter/submitter_test.go (1 hunks)
- ethergo/util/converter.go (1 hunks)
- ethergo/util/converter_test.go (1 hunks)
Files skipped from review due to trivial changes (4)
- .gitignore
- .golangci.yml
- ethergo/chain/client/config.go
- ethergo/submitter/submitter_test.go
Additional comments not posted (111)
ethergo/chain/chain_test.go (1)
17-17
: LGTM! Ensure thatpreset.GetSepolia()
is properly documented and tested since it's critical for setting up the test environment.ethergo/chain/client/config_test.go (1)
42-42
: Good addition to test the signer with the maximum block number. This ensures that the signer behaves correctly under edge conditions.ethergo/backends/geth/geth_test.go (1)
19-19
: Correctly checks the initial block height, which is essential for validating the setup of the new embedded backend.ethergo/chain/gas/london/oracle_backend.go (2)
9-9
: The addition ofgithub.com/ethereum/go-ethereum/consensus/misc/eip4844
is appropriate for the new functionality inGetReceipts
.
68-73
: The modifications inGetReceipts
to handle blob gas prices usingeip4844.CalcBlobFee
are correctly implemented and enhance the method's functionality.ethergo/chain/client/client_test.go (2)
4-6
: The addition of importsos
andtime
is appropriate for the new functionalities introduced in the test cases.
26-26
: The modifications inTestAttemptReconnect
to include a new backend setup and test the reconnection logic are correctly implemented and enhance the test's coverage.contrib/git-changes-action/go.mod (1)
14-27
: The updates to the dependencies ingo.mod
are appropriate and ensure the project uses the latest and most secure versions of the libraries.Also applies to: 33-79
ethergo/backends/simulated/multibackend/chainid.go (2)
4-5
: The addition of themath/big
import is necessary for handling big integer operations in theNewConfigWithChainID
function.
12-12
: The modifications inNewConfigWithChainID
to ensure isolated and consistent chain configurations are correctly implemented and enhance the function's robustness.ethergo/chain/gas/londinium/gasprice_test.go (2)
90-90
: Ensure proper error handling ingspec.Commit
.
76-76
: Ensure proper error handling ingspec.Commit
.ethergo/chain/gas/londinium/gasprice.go (1)
125-125
: Ensure proper error handling and synchronization in concurrent operations.Also applies to: 131-131, 154-154
Verification successful
The
getBlockPrices
function inethergo/chain/gas/londinium/gasprice.go
includes proper error handling and synchronization mechanisms. The function checks for errors when retrieving the block and handles them using a select statement to send results or handle quit signals. It also uses a select statement at the end to send the final results or handle quit signals.
- Lines 196-201: Error handling for
block == nil
.- Lines 213-219: Error handling for
types.Sender
and appending gas prices.- Lines 221-224: Synchronization using select statement for final results.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that error handling and synchronization are properly implemented in concurrent operations within `getBlockPrices`. # Test: Search for error handling and synchronization in `getBlockPrices` implementation. ast-grep --lang go --pattern $'func ($_ *Oracle) getBlockPrices($_, $_, $_, $_, $_, $_) { $$$ if $_ { $$$ } $$$ }'Length of output: 2459
ethergo/backends/simulated/simulated.go (1)
55-55
: Ensure the signer is correctly derived from the latest block.Verification successful
The usage of
types.MakeSigner
inethergo/backends/simulated/simulated.go
at line 55 is confirmed to derive the signer from the latest block's number and time. This ensures that the signer is correctly derived from the latest block.
ethergo/backends/simulated/simulated.go:55
:return types.MakeSigner(s.chainConfig, latestBlock.Number(), latestBlock.Time())
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that the signer is correctly derived from the latest block in the `Signer` method. # Test: Search for the implementation of `Signer` to ensure it uses the latest block information correctly. ast-grep --lang go --pattern $'func ($_ *Backend) Signer($_) $_ { $$$ $_ = $_.BlockByNumber($_, $_) $$$ }'Length of output: 113
Script:
#!/bin/bash # Description: Search for the implementation of the `Signer` method in the codebase. # Find the file containing the `Signer` method. rg 'func (\w+) Signer' --no-heading --line-number # Once found, display the implementation of the `Signer` method. # Assuming the method is found in `ethergo/backends/simulated/simulated.go`, extract the method implementation. rg -A 20 'func (\w+) Signer' ethergo/backends/simulated/simulated.goLength of output: 122
Script:
#!/bin/bash # Description: Search for the usage of `types.MakeSigner` in the codebase to understand its context. # Find the file containing the usage of `types.MakeSigner`. rg 'types.MakeSigner' --no-heading --line-number # Once found, display the surrounding lines to understand its context. # Assuming the usage is found in `ethergo/backends/simulated/simulated.go`, extract the surrounding lines. rg -A 20 'types.MakeSigner' ethergo/backends/simulated/simulated.goLength of output: 1795
core/go.mod (12)
16-16
: Updatedgithub.com/ethereum/go-ethereum
tov1.13.8
.Ensure this version is compatible with other dependencies and does not introduce breaking changes.
21-21
: Updatedgithub.com/gin-gonic/gin
tov1.10.0
.Verify that this version is compatible with the middleware and plugins used in the project.
22-22
: Updatedgithub.com/go-git/go-git/v5
tov5.12.0
.Check for any deprecated functions or major changes that could affect the project's Git operations.
25-25
: Updatedgithub.com/google/uuid
tov1.6.0
.Ensure that this update does not affect the generation or handling of UUIDs in the project.
35-35
: Updatedgithub.com/prometheus/client_golang
tov1.19.1
.Confirm that the metrics collected by Prometheus are still accurate and meet the project's monitoring requirements.
38-38
: Updatedgithub.com/stretchr/testify
tov1.9.0
.Check that all existing tests pass with this new version, and utilize any new features or fixes that it provides.
45-45
: Updatedgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
tov0.45.0
.Ensure that the telemetry data is still being accurately reported and that there are no disruptions in the observability features.
47-47
: Updatedgo.opentelemetry.io/otel
and related packages tov1.27.0
.Verify the integration of these updates with the existing telemetry setup and check for any required changes in the configuration.
52-52
: Updatedgo.opentelemetry.io/otel/exporters/prometheus
tov0.49.0
.Confirm compatibility with the Prometheus server version used and ensure that all metrics are being exported correctly.
53-56
: Updated variousgo.opentelemetry.io/otel
packages tov1.27.0
.Double-check the telemetry configurations and ensure that all telemetry data is consistent and accurate.
58-60
: Updatedgolang.org/x/sync
tov0.7.0
andgorm.io/gorm
tov1.25.10
.Ensure that these updates do not introduce any concurrency issues or changes in database interactions that could affect application stability.
61-61
: Updatedk8s.io/apimachinery
tov0.26.2
.Check for any changes in the Kubernetes API interactions that might affect the project's deployment or runtime behavior.
contrib/screener-api/go.mod (7)
14-14
: Updatedgithub.com/gin-gonic/gin
tov1.10.0
.Ensure compatibility with existing middleware and check for any deprecated features.
16-16
: Updatedgithub.com/gocarina/gocsv
to a new version.Verify that CSV parsing and generation are functioning correctly with the new library version.
20-20
: Updatedgithub.com/stretchr/testify
tov1.9.0
.Ensure that all unit tests are passing and consider using any new assertions or utilities provided by this version.
26-26
: Updatedgo.opentelemetry.io/otel
tov1.27.0
.Check for any required changes in telemetry configuration and ensure that telemetry data is accurate.
27-27
: Updatedgo.opentelemetry.io/otel/trace
tov1.27.0
.Confirm that trace data is being collected properly and integrates well with the overall tracing strategy.
28-28
: Updatedgolang.org/x/exp
to a new version.Test experimental features carefully to ensure they do not negatively impact the stability of the application.
30-32
: Updatedgorm.io
drivers for MySQL and SQLite.Check for any changes in database behavior, especially in terms of performance and compatibility with existing schemas.
ethergo/backends/base/base.go (2)
8-8
: Importedgithub.com/synapsecns/sanguine/core
andgithub.com/synapsecns/sanguine/ethergo/signer/wallet
.Ensure that these imports are used appropriately in the file and check for any namespace conflicts or issues.
206-210
: Added detailed error logging for transaction failures.Verify that the error messages provide enough information for debugging and do not expose sensitive information.
ethergo/backends/geth/geth.go (1)
46-46
: Ensure the default address is intentional.contrib/promexporter/go.mod (21)
23-23
: Updatedgithub.com/ethereum/go-ethereum
tov1.13.8
.Ensure compatibility with this version in your project.
24-24
: Updatedgithub.com/gin-gonic/gin
tov1.10.0
.Verify that no breaking changes affect your project's use of Gin.
30-30
: Updatedgithub.com/stretchr/testify
tov1.9.0
.This is typically a safe update, primarily affecting testing frameworks.
36-38
: Updatedgo.opentelemetry.io/otel
packages tov1.27.0
.Check for any deprecated methods or major changes in the OpenTelemetry specification that could impact your telemetry setup.
46-47
: Updatedgithub.com/ClickHouse/ch-go
tov0.61.5
andgithub.com/ClickHouse/clickhouse-go/v2
tov2.23.2
.Ensure that these updates are compatible with your current database schemas and queries.
61-61
: Updatedgithub.com/brianvoe/gofakeit/v6
tov6.27.0
.This update should be reviewed for any changes in the data generation patterns that might affect your tests or data mocks.
67-68
: Updatedgithub.com/bytedance/sonic
tov1.11.6
andgithub.com/bytedance/sonic/loader
tov0.1.1
.Confirm that the JSON processing improvements in these versions are compatible with your application's performance and functionality requirements.
73-75
: Updatedgithub.com/cloudflare/circl
tov1.3.7
,github.com/cloudflare/base64x
tov0.1.4
, andgithub.com/cloudflare/iasm
tov0.2.0
.These updates involve cryptographic functions and optimizations. Ensure they are tested thoroughly to maintain security standards.
84-85
: Updatedgithub.com/crate-crypto/go-ipa
tov0.0.0-20231025140028-3c0104f4b233
andgithub.com/crate-crypto/go-kzg-4844
tov0.7.0
.These are significant cryptographic library updates. Verify their integration and test for any potential security implications.
99-99
: Updatedgithub.com/gballet/go-verkle
tov0.1.1-0.20231031103413-a67434b50f46
.This is a specialized cryptographic library. Ensure that the update does not introduce any regressions or compatibility issues with existing cryptographic procedures.
109-109
: Updatedgithub.com/go-git/go-git/v5
tov5.12.0
.This update should be checked for any changes in Git operations that might affect your project's version control integrations.
116-116
: Updatedgithub.com/go-playground/validator/v10
tov10.20.0
.Ensure that all data validation rules are still correctly enforced after this update.
124-124
: Updatedgithub.com/google/uuid
tov1.6.0
.Typically a straightforward update, but verify that UUID generation and handling are still functioning as expected.
147-147
: Updatedgithub.com/klauspost/compress
tov1.17.8
.Check for any changes in compression algorithms that might affect data storage or transmission efficiency.
172-175
: Updated various Prometheus client libraries.These updates are crucial for monitoring and should be tested to ensure metrics are being collected and reported accurately.
184-184
: Updatedgithub.com/sergi/go-diff
tov1.3.2-0.20230802210424-5b0b94c5c0d3
.Ensure that the diff operations are still performing correctly, especially in environments where text comparisons are critical.
187-187
: Updatedgithub.com/shopspring/decimal
tov1.4.0
.Decimal handling is critical in financial applications. Test thoroughly to avoid rounding errors or precision issues.
199-199
: Updated various OpenTelemetry and related libraries.These updates are important for tracing and logging. Verify that all telemetry data is accurate and useful for debugging.
208-211
: Updated various OpenTelemetry instrumentation libraries.It's essential to ensure that these updates do not disrupt the instrumentation of your web services and that telemetry data remains reliable.
217-219
: Updated OpenTelemetry SDK and related metrics libraries tov1.27.0
.Confirm that the SDK updates integrate smoothly with your telemetry stack and that all metrics are being captured as expected.
223-229
: Updated variousgolang.org/x
libraries.These updates often include security patches and performance improvements. Ensure they are compatible with your Go environment.
ethergo/backends/anvil/anvil.go (2)
13-16
: Added imports forgithub.com/ipfs/go-log
,github.com/lmittmann/w3/w3types
, andgithub.com/ory/dockertest/v3
.Ensure these libraries are used appropriately in the file and check for any licensing issues.
290-294
: Updated theSigner
method to dynamically determine the signer based on the latest block.This change should improve the accuracy of transaction signing in dynamic network conditions. Ensure it is thoroughly tested, especially in edge cases where block information might be delayed or incorrect.
ethergo/go.mod (11)
23-23
: Updated dependencygithub.com/ethereum/go-ethereum
tov1.13.8
.Ensure compatibility with this version as it might include breaking changes or new features that affect your project.
26-26
: Updated dependencygithub.com/google/uuid
tov1.6.0
.Verify that all uses of UUIDs in the project are compatible with any new changes from this library update.
45-45
: Updated dependencygithub.com/prometheus/client_golang
tov1.19.1
.Check for any deprecated metrics collection features or changes in the Prometheus client that might affect monitoring setups.
48-48
: Updated dependencygithub.com/sirupsen/logrus
tov1.9.3
.Ensure that logging configurations and custom log hooks, if any, are still functioning as expected with this new version.
49-49
: Updated dependencygithub.com/stretchr/testify
tov1.9.0
.This is commonly used for testing; make sure that all existing tests pass with the new version without modifications.
55-58
: Updatedgo.opentelemetry.io/otel
packages tov1.27.0
.This update could impact telemetry data collection and tracing. Verify that telemetry and tracing are working as expected after this update.
61-61
: Updated dependencygolang.org/x/exp
to a specific commit.This points to a specific commit rather than a version. Ensure that this commit is stable and contains the necessary changes for your project.
62-62
: Updated dependencygolang.org/x/sync
tov0.7.0
.Check for any changes in concurrency patterns or bug fixes that might affect your project's performance or correctness.
65-65
: Updated dependencygoogle.golang.org/protobuf
tov1.34.1
.Ensure that all protobuf definitions and generated code are compatible with this new library version.
69-69
: Updated dependencygorm.io/gorm
tov1.25.10
.Review any ORM-related code to ensure that changes in GORM do not affect database interactions, especially in production environments.
71-71
: Updated dependencyk8s.io/apimachinery
tov0.26.2
.If your project interacts with Kubernetes APIs, verify that this update does not disrupt any integrations or controllers.
agents/agents/agentsintegration/agentsintegration_test.go (1)
220-220
: Added a new test scenario involvingrecipientDestination
.Ensure this new test case adequately covers the expected behavior and interactions in the system. Consider adding assertions to verify the state and outcome of the transaction.
agents/go.mod (9)
23-23
: Update togithub.com/stretchr/testify v1.9.0
is noted. Verify that all tests pass with the new version.
71-71
: Update togithub.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46
is noted. This is a significant update; ensure that Verkle tree functionalities are unaffected.
33-35
: Updates to OpenTelemetry libraries are noted. Ensure that telemetry data is being correctly reported and there are no integration issues.Verification successful
The recent updates to the OpenTelemetry libraries have been integrated into the codebase, as evidenced by the usage and configuration of these libraries in various files. The
otel.SetTracerProvider
andotel.SetMeterProvider
functions are being used to set up the tracer and meter providers, respectively.Key locations in the codebase where OpenTelemetry is configured:
core/metrics/base.go
:
otel.SetTracerProvider(tracerProvider)
otel.SetMeterProvider(b.meter)
These configurations indicate that the OpenTelemetry libraries are correctly set up to handle telemetry data.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that telemetry data is correctly reported with the updated OpenTelemetry libraries. # Test: Check for telemetry data reporting in logs. Expect: Correct data reporting. echo "Checking telemetry data in logs..." grep 'otel' /var/log/app.logLength of output: 157
Script:
#!/bin/bash # Description: Verify the integration of updated OpenTelemetry libraries by checking their usage and configuration in the codebase. # Search for the usage of OpenTelemetry libraries in the codebase echo "Searching for OpenTelemetry library usage in the codebase..." rg 'go.opentelemetry.io/otel' --context 5 # Search for the configuration of OpenTelemetry libraries in the codebase echo "Searching for OpenTelemetry library configuration in the codebase..." rg 'otel.SetTracerProvider' --context 5 rg 'otel.SetMeterProvider' --context 5Length of output: 127232
197-197
: Update togithub.com/google/uuid v1.6.0
is noted. Check for any issues in UUID generation and usage across the application.Verification successful
The update to
github.com/google/uuid v1.6.0
has been verified, and the usage of UUID generation across the application appears consistent and correct. Here are the specific locations where UUIDs are generated and used:
services/rfq/api/client/client.go
- Line 12: Import statement
- Line 98:
uuid.New().String()
services/omnirpc/proxy/forward_test.go
- Line 10: Import statement
- Line 90:
uuid.New().String()
ethergo/submitter/util_test.go
- Line 17: Import statement
- Lines 142, 162, 181:
uuid.New().String()
ethergo/submitter/submitter.go
- Line 14: Import statement
- Line 329:
uuid.New().String()
ethergo/submitter/db_test.go
- Line 9: Import statement
- Lines 77, 87, 191:
uuid.New().String()
ethergo/backends/anvil/anvil.go
- Line 24: Import statement
- Lines 86, 214:
uuid.New().String()
core/ginhelper/server_test.go
- Line 4: Import statement
- Line 53:
uuid.Parse(res)
core/ginhelper/server.go
- Line 16: Import statement
- Line 103:
uuid.New().String()
contrib/screener-api/client/client.go
- Line 16: Import statement
- Lines 36, 85:
uuid.New().String()
No issues were found with the UUID generation and usage in these files.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify UUID generation and usage with the updated library. # Test: Search for UUID usage in the codebase. Expect: Consistent and correct UUID generation. rg --type go $'github.com/google/uuid'Length of output: 560
Script:
#!/bin/bash # Description: Extract and review the relevant lines of code where `github.com/google/uuid` is used. # Extract lines where `github.com/google/uuid` is used in the identified files. files=( "services/rfq/api/client/client.go" "services/omnirpc/proxy/forward_test.go" "ethergo/submitter/util_test.go" "ethergo/submitter/submitter.go" "ethergo/submitter/db_test.go" "ethergo/backends/anvil/anvil.go" "core/ginhelper/server_test.go" "core/ginhelper/server.go" "contrib/screener-api/client/client.go" ) for file in "${files[@]}"; do echo "File: $file" rg --line-number 'uuid' "$file" echo doneLength of output: 3140
177-177
: Update togithub.com/go-git/go-git/v5 v5.12.0
is noted. Ensure that all Git-related operations within the application are functioning as expected.
41-41
: Update togorm.io/gorm v1.25.10
is noted. Ensure that database interactions are stable and performant with this new version.
184-184
: Update togithub.com/go-playground/validator/v10 v10.20.0
is noted. Ensure that all data validation across the application adheres to the new library standards.
305-306
: Updates togo.opentelemetry.io/otel/sdk
andgo.opentelemetry.io/otel/sdk/metric
to version1.27.0
are noted. Confirm that SDK metrics are being captured and reported accurately.
13-13
: Update togithub.com/ethereum/go-ethereum v1.13.8
is noted. Ensure compatibility with existing blockchain interactions.agents/testutil/simulated_backends_suite.go (1)
Line range hint
1-419
: The setup methods and configurations in the rest of the file are well-structured and follow good practices.The methods are clear and well-documented, providing a robust setup for the simulated backends. The use of
filet
for temporary directories and the detailed setup for different blockchain environments and agents are particularly noteworthy. Good job maintaining clean and testable code!Also applies to: 426-1000
ethergo/backends/simulated/multibackend/simulated_gen_test.go (30)
127-127
: Good use oft.Parallel()
to speed up the testing process by running tests concurrently.
149-149
: Usingt.Parallel()
is appropriate here to allow concurrent execution of tests.
167-167
: Correct application oft.Parallel()
for concurrent test execution.
211-211
: Proper use oft.Parallel()
to enhance test execution efficiency.
229-229
: Appropriate use oft.Parallel()
to enable parallel test execution.
251-251
: Effective use oft.Parallel()
to allow tests to run concurrently.
287-287
: Good practice usingt.Parallel()
for concurrent test execution.
341-341
: Proper use oft.Parallel()
to enhance test execution efficiency.
376-376
: Correct application oft.Parallel()
for concurrent test execution.
431-431
: Usingt.Parallel()
is appropriate here to allow concurrent execution of tests.
551-551
: Effective use oft.Parallel()
to allow tests to run concurrently.
642-642
: Good practice usingt.Parallel()
for concurrent test execution.
664-664
: Proper use oft.Parallel()
to enhance test execution efficiency.
711-711
: Correct application oft.Parallel()
for concurrent test execution.
764-764
: Usingt.Parallel()
is appropriate here to allow concurrent execution of tests.
830-830
: Effective use oft.Parallel()
to allow tests to run concurrently.
896-896
: Good practice usingt.Parallel()
for concurrent test execution.
931-931
: Proper use oft.Parallel()
to enhance test execution efficiency.
948-948
: Correct application oft.Parallel()
for concurrent test execution.
985-985
: Usingt.Parallel()
is appropriate here to allow concurrent execution of tests.
1022-1022
: Effective use oft.Parallel()
to allow tests to run concurrently.
1064-1064
: Good practice usingt.Parallel()
for concurrent test execution.
1121-1121
: Proper use oft.Parallel()
to enhance test execution efficiency.
1166-1166
: Correct application oft.Parallel()
for concurrent test execution.
1262-1262
: Usingt.Parallel()
is appropriate here to allow concurrent execution of tests.
1316-1316
: Effective use oft.Parallel()
to allow tests to run concurrently.
1390-1390
: Good practice usingt.Parallel()
for concurrent test execution.
1427-1427
: Proper use oft.Parallel()
to enhance test execution efficiency.
1469-1469
: Correct application oft.Parallel()
for concurrent test execution.
43-43
: Ensure parallel execution of tests does not lead to shared state issues.
anvilOptsOrigin.SetChainID(uint64(params.SepoliaChainConfig.ChainID.Int64())) | ||
anvilOptsOrigin.SetBlockTime(1 * time.Second) | ||
a.TestBackendOrigin = anvil.NewAnvilBackend(a.GetTestContext(), a.T(), anvilOptsOrigin) | ||
a.TestSuite.DeferAfterTest(a.TestBackendOrigin.(*anvil.Backend).TearDown) | ||
} else { | ||
a.TestBackendOrigin = preset.GetRinkeby().Geth(a.GetTestContext(), a.T()) | ||
a.TestBackendOrigin = preset.GetSepolia().Geth(a.GetTestContext(), a.T()) |
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.
Consider refactoring the repeated code for setting up Anvil backends.
The setup code for Anvil backends is repeated multiple times with slight variations. Consider creating a helper function to reduce duplication and improve maintainability. Here's a proposed refactor:
+ func (a *SimulatedBackendsTestSuite) setupAnvilBackend(chainConfig *params.ChainConfig, context context.Context, t *testing.T) backends.SimulatedTestBackend {
+ anvilOpts := anvil.NewAnvilOptionBuilder()
+ anvilOpts.SetChainID(uint64(chainConfig.ChainID.Int64()))
+ anvilOpts.SetBlockTime(1 * time.Second)
+ backend := anvil.NewAnvilBackend(context, t, anvilOpts)
+ a.TestSuite.DeferAfterTest(backend.(*anvil.Backend).TearDown)
+ return backend
+ }
- anvilOptsOrigin := anvil.NewAnvilOptionBuilder()
- anvilOptsOrigin.SetChainID(uint64(params.SepoliaChainConfig.ChainID.Int64()))
- anvilOptsOrigin.SetBlockTime(1 * time.Second)
- a.TestBackendOrigin = anvil.NewAnvilBackend(a.GetTestContext(), a.T(), anvilOptsOrigin)
- a.TestSuite.DeferAfterTest(a.TestBackendOrigin.(*anvil.Backend).TearDown)
+ a.TestBackendOrigin = a.setupAnvilBackend(params.SepoliaChainConfig, a.GetTestContext(), a.T())
This change not only reduces the lines of code but also centralizes the configuration for Anvil backends, making it easier to manage and modify in the future.
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
anvilOptsOrigin.SetChainID(uint64(params.SepoliaChainConfig.ChainID.Int64())) | |
anvilOptsOrigin.SetBlockTime(1 * time.Second) | |
a.TestBackendOrigin = anvil.NewAnvilBackend(a.GetTestContext(), a.T(), anvilOptsOrigin) | |
a.TestSuite.DeferAfterTest(a.TestBackendOrigin.(*anvil.Backend).TearDown) | |
} else { | |
a.TestBackendOrigin = preset.GetRinkeby().Geth(a.GetTestContext(), a.T()) | |
a.TestBackendOrigin = preset.GetSepolia().Geth(a.GetTestContext(), a.T()) | |
a.TestBackendOrigin = a.setupAnvilBackend(params.SepoliaChainConfig, a.GetTestContext(), a.T()) | |
} else { | |
a.TestBackendOrigin = preset.GetSepolia().Geth(a.GetTestContext(), a.T()) | |
+ func (a *SimulatedBackendsTestSuite) setupAnvilBackend(chainConfig *params.ChainConfig, context context.Context, t *testing.T) backends.SimulatedTestBackend { | |
+ anvilOpts := anvil.NewAnvilOptionBuilder() | |
+ anvilOpts.SetChainID(uint64(chainConfig.ChainID.Int64())) | |
+ anvilOpts.SetBlockTime(1 * time.Second) | |
+ backend := anvil.NewAnvilBackend(context, t, anvilOpts) | |
+ a.TestSuite.DeferAfterTest(backend.(*anvil.Backend).TearDown) | |
+ return backend | |
+ } |
callMessage := ethereum.CallMsg{ | ||
From: rawMsg.From, | ||
To: transaction.To(), | ||
Gas: transaction.Gas(), | ||
GasPrice: transaction.GasPrice(), | ||
GasFeeCap: transaction.GasTipCap(), | ||
GasTipCap: transaction.GasFeeCap(), | ||
GasFeeCap: transaction.GasFeeCap(), | ||
GasTipCap: transaction.GasTipCap(), | ||
Value: transaction.Value(), | ||
Data: transaction.Data(), | ||
}, nil | ||
} | ||
|
||
// gas price will getset to gastipcap + gas fee cap to account for legacy behavior so if | ||
// tip/fee cap are set we need to make sure we nil gas price | ||
if transaction.Type() == types.LegacyTxType { | ||
callMessage.GasTipCap = nil | ||
callMessage.GasFeeCap = nil | ||
} else { | ||
callMessage.GasPrice = nil | ||
} | ||
return &callMessage, nil |
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.
The modifications to handle EIP-1559 transaction types are correctly implemented. Ensure comprehensive unit tests cover these changes to prevent regressions.
Would you like me to help by adding unit tests for these changes?
@@ -602,7 +602,7 @@ func (g *GuardSuite) TestInvalidReceipt() { | |||
deliveryTip := big.NewInt(int64(gofakeit.Uint32())) | |||
tips := types.NewTips(summitTip, attestationTip, executorTip, deliveryTip) | |||
optimisticSeconds := uint32(1) | |||
recipientDestination := g.TestClientMetadataOnDestination.Address().Hash() | |||
recipientDestination := common.BytesToHash(g.TestClientMetadataOnDestination.Address().Bytes()) |
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.
Ensure proper error handling for blockchain interactions.
In the TestInvalidReceipt
function, there are multiple blockchain interactions (SendBaseMessage
, SubmitSnapshot
, etc.) where errors are checked but not handled properly. It's crucial to handle these errors to avoid incorrect test passes and ensure robustness.
- Nil(g.T(), err)
+ require.Nil(g.T(), err, "Error should be nil during blockchain interaction")
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
recipientDestination := common.BytesToHash(g.TestClientMetadataOnDestination.Address().Bytes()) | |
recipientDestination := common.BytesToHash(g.TestClientMetadataOnDestination.Address().Bytes()) | |
require.Nil(g.T(), err, "Error should be nil during blockchain interaction") |
Refactor repeated code into helper functions.
The TestUpdateAgentStatusOnRemote
function contains repeated logic for submitting snapshots and attestations. Consider refactoring this into helper functions to improve code readability and maintainability.
+ func submitSnapshot(ctx context.Context, snapshot types.Snapshot, signer signer.Signer) error {
+ guardSnapshotSignature, encodedSnapshot, _, err := snapshot.SignSnapshot(ctx, signer)
+ if err != nil {
+ return err
+ }
+ txContextSummit := g.TestBackendSummit.GetTxContext(ctx, g.InboxMetadataOnSummit.OwnerPtr())
+ tx, err := g.SummitDomainClient.Inbox().SubmitSnapshot(txContextSummit.TransactOpts, encodedSnapshot, guardSnapshotSignature)
+ if err != nil {
+ return err
+ }
+ g.TestBackendSummit.WaitForConfirmation(ctx, tx)
+ return nil
+ }
Committable suggestion was skipped due to low confidence.
// setup the consensus client | ||
simBeacon, err := catalyst.NewSimulatedBeacon(1, embedded.ethBackend) | ||
assert.Nil(t, err) | ||
|
||
catalyst.RegisterSimulatedBeaconAPIs(embedded.Node, simBeacon) | ||
embedded.Node.RegisterLifecycle(simBeacon) | ||
|
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.
Consider handling potential errors from NewSimulatedBeacon
and RegisterSimulatedBeaconAPIs
.
The current implementation does not handle potential errors from catalyst.NewSimulatedBeacon
and embedded.Node.RegisterLifecycle
. It's crucial to handle these to prevent runtime panics or unintended behavior.
- simBeacon, err := catalyst.NewSimulatedBeacon(1, embedded.ethBackend)
- assert.Nil(t, err)
+ simBeacon, err := catalyst.NewSimulatedBeacon(1, embedded.ethBackend)
+ if err != nil {
+ t.Fatalf("failed to create simulated beacon: %v", err)
+ }
Committable suggestion was skipped due to low confidence.
@@ -140,7 +148,7 @@ | |||
if embedded.ethBackend.IsMining() { | |||
cancelMiningCtx() | |||
} else { | |||
_ = embedded.ethBackend.APIBackend.StartMining(0) | |||
_ = embedded.ethBackend.APIBackend.StartMining() |
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.
Handle potential errors from StartMining
in the retry loop.
The retry loop for starting mining does not handle potential errors from StartMining
. This could lead to silent failures where the node believes it is mining but isn't.
- _ = embedded.ethBackend.APIBackend.StartMining()
+ if err := embedded.ethBackend.APIBackend.StartMining(); err != nil {
+ logger.Errorf("failed to start mining: %v", err)
+ return
+ }
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
_ = embedded.ethBackend.APIBackend.StartMining() | |
if err := embedded.ethBackend.APIBackend.StartMining(); err != nil { | |
logger.Errorf("failed to start mining: %v", err) | |
return | |
} |
header, err := b.headerByHash(blockHash) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
stateDB, err := b.blockchain.StateAt(header.Root) | ||
if err != nil { | ||
return nil, err | ||
} |
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.
Improve error handling by adding specific error logs.
When fetching the header by hash fails, the method returns the error directly. It would be beneficial to log this error internally for debugging purposes, especially in a simulated environment where tracing issues can be crucial.
if err != nil {
+ log.Error("Failed to fetch header by hash", "hash", blockHash, "error", err)
return nil, err
}
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
header, err := b.headerByHash(blockHash) | |
if err != nil { | |
return nil, err | |
} | |
stateDB, err := b.blockchain.StateAt(header.Root) | |
if err != nil { | |
return nil, err | |
} | |
header, err := b.headerByHash(blockHash) | |
if err != nil { | |
log.Error("Failed to fetch header by hash", "hash", blockHash, "error", err) | |
return nil, err | |
} | |
stateDB, err := b.blockchain.StateAt(header.Root) | |
if err != nil { | |
return nil, err | |
} |
return errors.New("could not adjust time on non-empty block") | ||
} | ||
// Get the last block | ||
block := b.blockchain.GetBlockByHash(b.pendingBlock.ParentHash()) | ||
if block == nil { | ||
return fmt.Errorf("could not find parent") | ||
return errors.New("could not find parent") | ||
} | ||
|
||
blocks, _ := core.GenerateChain(b.config, block, ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) { | ||
block.OffsetTime(int64(adjustment.Seconds())) | ||
}) | ||
stateDB, _ := b.blockchain.State() | ||
|
||
stateDB, err := b.blockchain.State() | ||
if err != nil { | ||
return err | ||
} |
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.
Handle errors more gracefully in AdjustTime
.
The method AdjustTime
could handle errors more gracefully by providing more context in the error messages, especially since adjusting time in a simulated environment is a critical operation for testing time-dependent contracts.
if len(b.pendingBlock.Transactions()) != 0 {
+ log.Error("Attempted to adjust time on a non-empty block")
return errors.New("could not adjust time on non-empty block")
}
if block == nil {
+ log.Error("Parent block not found", "hash", b.pendingBlock.ParentHash())
return errors.New("could not find parent")
}
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
return errors.New("could not adjust time on non-empty block") | |
} | |
// Get the last block | |
block := b.blockchain.GetBlockByHash(b.pendingBlock.ParentHash()) | |
if block == nil { | |
return fmt.Errorf("could not find parent") | |
return errors.New("could not find parent") | |
} | |
blocks, _ := core.GenerateChain(b.config, block, ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) { | |
block.OffsetTime(int64(adjustment.Seconds())) | |
}) | |
stateDB, _ := b.blockchain.State() | |
stateDB, err := b.blockchain.State() | |
if err != nil { | |
return err | |
} | |
if len(b.pendingBlock.Transactions()) != 0 { | |
log.Error("Attempted to adjust time on a non-empty block") | |
return errors.New("could not adjust time on non-empty block") | |
} | |
// Get the last block | |
block := b.blockchain.GetBlockByHash(b.pendingBlock.ParentHash()) | |
if block == nil { | |
log.Error("Parent block not found", "hash", b.pendingBlock.ParentHash()) | |
return errors.New("could not find parent") | |
} | |
blocks, _ := core.GenerateChain(b.config, block, ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) { | |
block.OffsetTime(int64(adjustment.Seconds())) | |
}) | |
stateDB, err := b.blockchain.State() | |
if err != nil { | |
return err | |
} |
|
||
ethConfig.NetworkId = config.ChainID.Uint64() | ||
ethConfig.Genesis = core.DeveloperGenesisBlock(0, 10000000, address) | ||
ethConfig.Genesis = core.DeveloperGenesisBlock(10000000, &address) | ||
ethConfig.Genesis.ExtraData = append([]byte{}, make([]byte, 32)...) // 32 bytes of vanity | ||
ethConfig.Genesis.ExtraData = append(ethConfig.Genesis.ExtraData, address.Bytes()...) // Signer address | ||
ethConfig.Genesis.ExtraData = append(ethConfig.Genesis.ExtraData, make([]byte, 65)...) // 65 bytes of signature | ||
ethConfig.Miner.Recommit = time.Second | ||
|
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.
Consider adding validation for critical configuration parameters such as ChainID
to prevent runtime errors and misconfigurations.
mockPermitter.AssertNumberOfCalls(c.T(), permitReleases.Method, evmClienType.NumMethod()-len(skipMethods)) | ||
mockPermitter.AssertNumberOfCalls(c.T(), permitAcquires.Method, evmClienType.NumMethod()-len(skipMethods)) |
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.
Tip
Codebase Verification
The review comment is correct. The evmClienType
has 0 methods, and skipMethods
has 6 elements. This will cause the assertions for permitReleases.Method
and permitAcquires.Method
to fail because the expected number of calls will be negative.
evmClienType
has 0 methods.skipMethods
has 6 elements.
Analysis chain
Verify the correct number of permit acquisitions and releases.
To verify the correct number of permit acquisitions and releases, we need to check the number of methods in evmClienType
and skipMethods
.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify that the number of permit acquisitions and releases matches the expected number based on the number of methods.
# Test: Search for the implementation of permit acquisition and release to ensure they are called the expected number of times.
ast-grep --lang go --pattern $'func ($_ *Permitter) $_($_) $_ {
$$$
}'
Length of output: 838
Script:
#!/bin/bash
# Description: Verify the number of methods in evmClienType and skipMethods.
# Find the definition of evmClienType and count its methods.
ast-grep --lang go --pattern $'type evmClienType struct {
$$$
}' | grep -oP 'func \(\w+ \*evmClienType\) \w+\(' | wc -l
# Find the definition of skipMethods and count its elements.
ast-grep --lang go --pattern $'var skipMethods = []string{
$$$
}' | grep -oP '"[^"]+"' | wc -l
Length of output: 224
Summary by CodeRabbit
Chores
.gitignore
to exclude__debug_bin
directories.v18.18.0
in.nvmrc
.go.mod
files.Documentation
README.md
for better clarity and organization.New Features
"build:slither"
indocs/bridge/package.json
.chainListener
inethergo/listener
.Bug Fixes
Refactor
c7be6f5b604519834488b3c8e96b5e9c6043cddc: docs preview link
c7be6f5b604519834488b3c8e96b5e9c6043cddc: synapse-interface preview link
3a61c464983147015accd21c900713abd49de185: docs preview link
3a61c464983147015accd21c900713abd49de185: synapse-interface preview link
a84aca6d9fcd66e6cd31ba5edb6ee0c71c68d0ec: docs preview link
a84aca6d9fcd66e6cd31ba5edb6ee0c71c68d0ec: synapse-interface preview link
cc424a2e2455bf626f3116ead0fb9d6b7dd691b4: docs preview link
cc424a2e2455bf626f3116ead0fb9d6b7dd691b4: synapse-interface preview link
1178b8c402644234f91b48f7f328f9f50cc2fb31: docs preview link
1178b8c402644234f91b48f7f328f9f50cc2fb31: synapse-interface preview link
93e3f6705dd51bdd11860955d49760867133dd9b: docs preview link
93e3f6705dd51bdd11860955d49760867133dd9b: synapse-interface preview link
541f8d556d520f8a14794b1dcfaa5a43f9ea87dc: docs preview link
541f8d556d520f8a14794b1dcfaa5a43f9ea87dc: synapse-interface preview link
e1fb762cb79bc35702893d6f2f16c5cb7135855d: docs preview link
e1fb762cb79bc35702893d6f2f16c5cb7135855d: synapse-interface preview link
77ded6bba298b465cca9c1d823590cc4b20e4248: docs preview link
77ded6bba298b465cca9c1d823590cc4b20e4248: synapse-interface preview link
cf7b0e8f7f39bfc5a4f23379ffdff27e2cd2148d: docs preview link
cf7b0e8f7f39bfc5a4f23379ffdff27e2cd2148d: synapse-interface preview link