NibiruChain / nibiru

Nibiru Chain: The breakthrough smart contract platform ushering in the next era of money. Nibiru powers an ecosystem of dApps including perps, RWAs, and more.
https://nibiru.fi
Apache License 2.0
183 stars 201 forks source link

feat(evm): app config and json-rpc #1871

Closed onikonychev closed 4 months ago

coderabbitai[bot] commented 4 months ago

Walkthrough

The recent changes to the codebase primarily focus on enabling JSON-RPC by default, refining Ethereum-related functionalities, and enhancing various configurations and error handling mechanisms. This includes updates to flag definitions, server configurations, EVM state management, and query validation processes. Additionally, several functions and constants have been renamed for clarity and accuracy, and test cases have been refactored for better organization and coverage.

Changes

Files Change Summary
app/server/config/server_config.go Enabled JSON-RPC by default by changing Enable field from false to true.
app/server/flags.go Introduced constants and functions for various flag definitions related to Tendermint, GRPC, Cosmos API, JSON-RPC, EVM, and TLS. Added AddTxFlags function.
app/server/json_rpc.go Added functionality to start a JSON-RPC server for Ethereum-related requests.
app/server/start.go Introduced functionality for running a full node application with various configurations.
app/server/util.go Added functions for adding server commands, connecting to Tendermint WebSocket, and starting a net.Listener with connection limits.
app/appconst/appconst.go Renamed Version() function to RuntimeVersion().
eth/chain_id.go Removed import for cosmossdk.io/errors, adjusted comments, and modified error handling to use ErrInvalidChainID directly.
eth/chain_id_test.go Refactored TestParseChainID into TestParseChainID_Happy and TestParseChainID_Sad for better test organization.
eth/rpc/rpcapi/web3_api.go Modified ClientVersion function to return appconst.RuntimeVersion().
x/common/error.go Renamed ErrNilMsg() to ErrNilGrpcMsg().
x/evm/const.go Updated comments and naming conventions for storage key prefixes in the EVM module.
x/evm/evmmodule/genesis.go Added arguments and statements to InitGenesis function for initializing EVM state.
x/evm/keeper/evm_state.go Defined EvmState struct and added methods for managing EVM state.
x/evm/keeper/grpc_query.go Modified Balance function to validate requests and retrieve balance using GetEvmGasBalance.
x/evm/keeper/keeper.go Added fields and methods to Keeper struct for EVM state management and parameter retrieval.
x/evm/query.go Introduced functions for unpacking interfaces and validating EVM-related query requests.
x/evm/query_test.go Added test suite TestSuite with TestNilQueries function to check various sad paths for nil messages.
x/tokenfactory/keeper/msg_server.go Renamed errNilMsg to use common.ErrNilGrpcMsg().
contrib/scripts/localnet.sh Updated CHAIN_ID variable and initialization command for nibid.
CHANGELOG.md Updated to include recent changes related to EVM app configuration, JSON-RPC, Ethereum types, Go-ethereum integration, encoding, event handling, and keeper tests.

A rabbit hops through fields of code, Enabling JSON-RPC mode. With flags and constants, structure grows, Ethereum's light now brightly glows. Queries validated, states refined, In every change, progress defined. The codebase hums, a well-tuned song, A rabbit's joy, where it belongs. πŸ‡βœ¨


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?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` 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) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
codecov[bot] commented 4 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 67.12%. Comparing base (fac6492) to head (1fe82fe).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #1871 +/- ## ========================================== - Coverage 67.13% 67.12% -0.01% ========================================== Files 212 212 Lines 13467 13463 -4 ========================================== - Hits 9041 9037 -4 Misses 3780 3780 Partials 646 646 ``` | [Files](https://app.codecov.io/gh/NibiruChain/nibiru/pull/1871?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NibiruChain) | Coverage Ξ” | | |---|---|---| | [cmd/nibid/cmd/root.go](https://app.codecov.io/gh/NibiruChain/nibiru/pull/1871?src=pr&el=tree&filepath=cmd%2Fnibid%2Fcmd%2Froot.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NibiruChain#diff-Y21kL25pYmlkL2NtZC9yb290Lmdv) | `77.30% <100.00%> (-0.63%)` | :arrow_down: | | [x/evm/keeper/keeper.go](https://app.codecov.io/gh/NibiruChain/nibiru/pull/1871?src=pr&el=tree&filepath=x%2Fevm%2Fkeeper%2Fkeeper.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NibiruChain#diff-eC9ldm0va2VlcGVyL2tlZXBlci5nbw==) | `78.94% <100.00%> (ΓΈ)` | |