Skip to content
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

feat: change bridge hook to check signature of l2 transaction #106

Merged
merged 17 commits into from
Sep 4, 2024

Conversation

beer-1
Copy link
Contributor

@beer-1 beer-1 commented Aug 28, 2024

Description

Closes: #XXXX


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • New Features

    • Introduced a new message type for updating metadata, enhancing the system's capability to manage metadata updates.
    • Added a new event type specifically for metadata updates, improving event tracking.
  • Enhancements

    • Streamlined transaction handling by updating the Keeper struct for better transaction processing.
    • Improved error handling and success tracking for token deposits, enhancing user experience and transparency.
  • Bug Fixes

    • Resolved inconsistencies in naming conventions, improving clarity in the codebase.
  • Tests

    • Implemented unit tests for the new MsgRecordBatch message type, ensuring validation logic is thoroughly covered.

@beer-1 beer-1 self-assigned this Aug 28, 2024
@beer-1 beer-1 requested a review from a team as a code owner August 28, 2024 07:37
Copy link

coderabbitai bot commented Aug 28, 2024

Walkthrough

The changes involve updates to the Go module for the OPinit project, focusing on enhancing the functionality related to withdrawal commitments. This includes the removal of the PendingDeposits structure, modifications to existing message types, and improvements to dependency management. The updates also involve changes in the keeper structure, adjustments to message validation, and the introduction of new event types and message structures.

Changes

Files Change Summary
api/go.mod Version upgrades for several dependencies, including cosmossdk.io and grpc packages, along with the addition of new indirect dependencies.
api/opinit/opchild/v1/genesis.pulsar.go Removed PendingDeposits field and related methods from GenesisState, simplifying the structure. Introduced new fields like next_l2_sequence, next_l1_sequence, bridge_info, and denom_pairs.
api/opinit/opchild/v1/types.pulsar.go Removed PendingDeposits structure and its associated methods, streamlining the API's functionality.
api/opinit/ophost/v1/tx.pulsar.go Renamed latest_block_hash to last_block_hash in MsgFinalizeTokenWithdrawal, updating references throughout the code.
proto/opinit/opchild/v1/genesis.proto Removed pending_deposits field from GenesisState message and added new fields, renumbering existing fields accordingly.
x/opchild/keeper/keeper.go Removed bridgeHook field and added decorators and txDecoder fields to Keeper, indicating a shift towards transaction handling.
x/opchild/keeper/msg_server.go Changed MsgServer to hold a pointer to Keeper, updated NewMsgServerImpl to accept a pointer, and enhanced the logic in FinalizeTokenDeposit and InitiateTokenWithdrawal methods.
x/opchild/types/codec.go Added MsgUpdateMetadata message type to codec registration functions, expanding message handling capabilities.
x/ophost/types/event.go Introduced new constant EventTypeUpdateMetadata for event categorization related to metadata updates.
x/ophost/types/keys.go Removed Splitter variable from declarations, indicating a change in data handling.
x/ophost/types/output.go Updated GenerateWithdrawalHash function to use SHA3 hashing for sender, receiver, and denom variables, enhancing security.
x/ophost/types/tx.go Renamed parameter accAddressCodec to ac across multiple message types and updated validation logic for MsgFinalizeTokenWithdrawal.
x/ophost/types/tx_test.go Introduced unit tests for MsgRecordBatch, validating input constraints and expected behavior.

Poem

🐰 In a world where tokens hop and play,
New features bloom like flowers in May.
With commitments tracked and queries bright,
The code now dances in pure delight.
So let’s cheer for changes, both big and small,
For the rabbit's joy is felt by all! 🌼


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
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • 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.
    • @coderabbitai help me debug CodeRabbit configuration file.

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 using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration 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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

codecov bot commented Aug 28, 2024

Codecov Report

Attention: Patch coverage is 57.20721% with 95 lines in your changes missing coverage. Please review.

Project coverage is 47.89%. Comparing base (7a2cc2e) to head (944722e).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
x/ophost/types/tx.go 13.51% 32 Missing ⚠️
x/opchild/keeper/deposit.go 62.68% 18 Missing and 7 partials ⚠️
x/opchild/keeper/msg_server.go 69.38% 11 Missing and 4 partials ⚠️
x/ophost/types/output.go 0.00% 7 Missing ⚠️
x/opchild/types/genesis.go 0.00% 6 Missing ⚠️
x/ophost/keeper/msg_server.go 80.00% 2 Missing and 1 partial ⚠️
x/opchild/abci.go 0.00% 2 Missing ⚠️
x/ophost/types/codec.go 0.00% 2 Missing ⚠️
x/opchild/keeper/genesis.go 83.33% 0 Missing and 1 partial ⚠️
x/opchild/keeper/oracle.go 66.66% 0 Missing and 1 partial ⚠️
... and 1 more
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #106      +/-   ##
==========================================
+ Coverage   47.66%   47.89%   +0.22%     
==========================================
  Files          57       57              
  Lines        4204     4270      +66     
==========================================
+ Hits         2004     2045      +41     
- Misses       1782     1798      +16     
- Partials      418      427       +9     
Files with missing lines Coverage Δ
x/opchild/ante/ante.go 86.95% <100.00%> (ø)
x/opchild/ante/fee_utils.go 100.00% <100.00%> (ø)
x/opchild/client/cli/tx.go 57.43% <100.00%> (-1.89%) ⬇️
x/opchild/keeper/keeper.go 79.20% <100.00%> (-2.98%) ⬇️
x/opchild/keeper/querier.go 44.06% <100.00%> (ø)
x/opchild/types/codec.go 100.00% <100.00%> (ø)
x/ophost/client/cli/tx.go 60.48% <100.00%> (-0.24%) ⬇️
x/ophost/types/hook/bridge_hook.go 52.74% <ø> (+1.68%) ⬆️
x/opchild/keeper/genesis.go 41.05% <83.33%> (+0.48%) ⬆️
x/opchild/keeper/oracle.go 55.07% <66.66%> (+0.66%) ⬆️
... and 9 more

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

Outside diff range, codebase verification and nitpick comments (7)
x/ophost/client/cli/types.go (1)

3-5: The MsgFinalizeTokenWithdrawal struct has not been fully removed.

The struct is still present in multiple files, including generated protocol buffer files. Ensure that the protocol buffer definitions are updated and the generated code is regenerated.

  • Files with occurrences:
    • x/ophost/types/tx.go
    • x/ophost/types/tx.pb.go
    • x/ophost/types/tx.pulsar.go
    • x/ophost/types/codec.go
    • x/ophost/keeper/msg_server.go
    • x/ophost/keeper/msg_server_test.go
    • x/ophost/client/cli/tx.go

Please verify and update the relevant files to reflect the intended removal of the struct.

Analysis chain

LGTM! But verify the struct usage in the codebase.

The removal of the MsgFinalizeTokenWithdrawal struct suggests a significant change in the handling of token withdrawals. Ensure that all references to this struct have been removed or updated.

The code changes are approved.

Run the following script to verify the struct usage:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `MsgFinalizeTokenWithdrawal` struct in the codebase.

# Test: Search for the struct usage. Expect: No occurrences of the removed struct.
rg --type go 'MsgFinalizeTokenWithdrawal'

Length of output: 38385

x/opchild/keeper/commitments_test.go (1)

15-85: Consider adding comments to explain the purpose of each block of code.

The test function is well-structured and covers various scenarios for tracking withdrawal commitments. Adding comments will improve readability and maintainability.

Example:

// Set up test environment
ctx, input := createDefaultTestInput(t)

// Set bridge info with finalization period
err := input.OPChildKeeper.BridgeInfo.Set(ctx, types.BridgeInfo{
	BridgeConfig: ophosttypes.BridgeConfig{
		FinalizationPeriod: time.Second * 5,
	},
})
require.NoError(t, err)

// Set block height and time
ctx = sdk.UnwrapSDKContext(ctx).WithBlockHeight(1).WithBlockTime(now)

// Track withdrawal commitments
err = input.OPChildKeeper.TrackWithdrawalCommitments(ctx)
require.NoError(t, err)

// Set withdrawal commitments
err = input.OPChildKeeper.SetWithdrawalCommitment(ctx, 1, types.WithdrawalCommitment{
	Commitment: types.CommitWithdrawal(1, "recipient", sdk.NewInt64Coin("uinit", 100)),
	SubmitTime: now,
})
require.NoError(t, err)

// Verify withdrawal commitments
_, err = input.OPChildKeeper.GetWithdrawalCommitment(ctx, 1)
require.NoError(t, err)
x/opchild/types/commitments_test.go (5)

24-55: Consider adding comments to explain the purpose of each block of code.

The test function is well-structured and covers the verification of a commitment. Adding comments will improve readability and maintainability.

Example:

// Set up test environment
db := dbm.NewMemDB()
store := rootmulti.NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
iavlStoreKey := storetypes.NewKVStoreKey(StoreKey)

// Mount and load store
store.MountStoreWithDB(iavlStoreKey, storetypes.StoreTypeIAVL, nil)
require.NoError(t, store.LoadVersion(0))

// Create commitment
sequence := uint64(10)
commitmentKey := WithdrawalCommitmentKey(sequence)
recipient := "recipient"
amount := sdk.NewInt64Coin("uinit", 100)
commitment := CommitWithdrawal(sequence, recipient, amount)

// Set commitment in store
iavlStore := store.GetCommitStore(iavlStoreKey).(*iavl.Store)
iavlStore.Set(commitmentKey, commitment)
cid := store.Commit()

// Get proof
res, err := store.Query(&storetypes.RequestQuery{
	Path:  fmt.Sprintf("/%s/key", StoreKey),
	Data:  commitmentKey,
	Prove: true,
})
require.NoError(t, err)
require.NotNil(t, res.ProofOps)

// Verify proof
err = VerifyCommitment(cid.Hash, sequence, recipient, amount, NewProtoFromProofOps(res.ProofOps))
require.Nil(t, err)

58-66: Consider adding comments to explain the purpose of each block of code.

The test function is well-structured and covers the verification of an app hash. Adding comments will improve readability and maintainability.

Example:

// Create random block
block := makeRandBlock(t)
header := block.Header

// Create app hash proof
appHashProof := NewAppHashProof(&header)
require.NotNil(t, appHashProof)

// Verify app hash
err := VerifyAppHash(block.Hash(), header.AppHash, appHashProof)
require.NoError(t, err)

68-85: Consider adding comments to explain the purpose of each block of code.

The function is well-structured and covers the creation of a random block. Adding comments will improve readability and maintainability.

Example:

// Generate transactions
txs := []comettypes.Tx{comettypes.Tx("foo"), comettypes.Tx("bar")}

// Generate random block ID
lastID := makeBlockIDRandom()
h := int64(3)

// Generate vote set and validators
voteSet, valSet, vals := randVoteSet(h-1, 1, cmtproto.PrecommitType, 10, 1, false)
extCommit, err := comettypes.MakeExtCommit(lastID, h-1, 1, voteSet, vals, time.Now(), false)
require.NoError(t, err)

// Generate evidence
ev, err := comettypes.NewMockDuplicateVoteEvidenceWithValidator(h, time.Now(), vals[0], "block-test-chain")
require.NoError(t, err)
evList := []comettypes.Evidence{ev}

// Create block
block := comettypes.MakeBlock(h, txs, extCommit.ToCommit(), evList)
block.ValidatorsHash = valSet.Hash()
block.AppHash = tmhash.Sum([]byte("app_hash"))

return block

87-95: Consider adding comments to explain the purpose of each block of code.

The function is well-structured and covers the generation of a random block ID. Adding comments will improve readability and maintainability.

Example:

// Generate random block and part set hashes
var (
	blockHash   = make([]byte, tmhash.Size)
	partSetHash = make([]byte, tmhash.Size)
)
rand.Read(blockHash)   //nolint: errcheck // ignore errcheck for read
rand.Read(partSetHash) //nolint: errcheck for read

// Return block ID
return comettypes.BlockID{Hash: blockHash, PartSetHeader: comettypes.PartSetHeader{Total: 123, Hash: partSetHash}}

97-114: Consider adding comments to explain the purpose of each block of code.

The function is well-structured and covers the generation of a random vote set. Adding comments will improve readability and maintainability.

Example:

// Generate validator set and private validators
valSet, privValidators := comettypes.RandValidatorSet(numValidators, votingPower)

// Create extended vote set if enabled
if extEnabled {
	if signedMsgType != cmtproto.PrecommitType {
		return nil, nil, nil
	}
	return comettypes.NewExtendedVoteSet("test_chain_id", height, round, signedMsgType, valSet), valSet, privValidators
}

// Create regular vote set
return comettypes.NewVoteSet("test_chain_id", height, round, signedMsgType, valSet), valSet, privValidators
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between a428c7d and 5dd302e.

Files ignored due to path filters (12)
  • api/go.sum is excluded by !**/*.sum
  • api/opinit/opchild/v1/query_grpc.pb.go is excluded by !**/*.pb.go
  • api/opinit/ophost/v1/tx_grpc.pb.go is excluded by !**/*.pb.go
  • go.sum is excluded by !**/*.sum
  • proto/buf.lock is excluded by !**/*.lock
  • x/opchild/types/genesis.pb.go is excluded by !**/*.pb.go
  • x/opchild/types/query.pb.go is excluded by !**/*.pb.go
  • x/opchild/types/query.pb.gw.go is excluded by !**/*.pb.gw.go
  • x/opchild/types/tx.pb.go is excluded by !**/*.pb.go
  • x/opchild/types/types.pb.go is excluded by !**/*.pb.go
  • x/ophost/types/tx.pb.go is excluded by !**/*.pb.go
  • x/ophost/types/types.pb.go is excluded by !**/*.pb.go
Files selected for processing (51)
  • api/go.mod (1 hunks)
  • api/opinit/opchild/v1/genesis.pulsar.go (21 hunks)
  • api/opinit/opchild/v1/query.pulsar.go (6 hunks)
  • api/opinit/opchild/v1/tx.pulsar.go (1 hunks)
  • api/opinit/opchild/v1/types.pulsar.go (6 hunks)
  • api/opinit/ophost/v1/types.pulsar.go (1 hunks)
  • contrib/launchtools/config.go (3 hunks)
  • go.mod (2 hunks)
  • proto/buf.gen.pulsar.yaml (1 hunks)
  • proto/buf.yaml (1 hunks)
  • proto/opinit/opchild/v1/genesis.proto (1 hunks)
  • proto/opinit/opchild/v1/query.proto (3 hunks)
  • proto/opinit/opchild/v1/tx.proto (1 hunks)
  • proto/opinit/opchild/v1/types.proto (2 hunks)
  • proto/opinit/ophost/v1/query.proto (2 hunks)
  • proto/opinit/ophost/v1/tx.proto (4 hunks)
  • proto/opinit/ophost/v1/types.proto (2 hunks)
  • specs/l2_output_oracle.md (1 hunks)
  • x/opchild/abci.go (1 hunks)
  • x/opchild/ante/ante.go (1 hunks)
  • x/opchild/ante/ante_test.go (1 hunks)
  • x/opchild/ante/common_test.go (2 hunks)
  • x/opchild/client/cli/tx.go (2 hunks)
  • x/opchild/client/cli/tx_test.go (1 hunks)
  • x/opchild/keeper/commitments.go (1 hunks)
  • x/opchild/keeper/commitments_test.go (1 hunks)
  • x/opchild/keeper/common_test.go (3 hunks)
  • x/opchild/keeper/compatibility_grpc_query.go (1 hunks)
  • x/opchild/keeper/keeper.go (6 hunks)
  • x/opchild/keeper/keeper_test.go (1 hunks)
  • x/opchild/keeper/msg_server.go (2 hunks)
  • x/opchild/keeper/msg_server_test.go (14 hunks)
  • x/opchild/keeper/querier.go (2 hunks)
  • x/opchild/keeper/querier_test.go (8 hunks)
  • x/opchild/module.go (3 hunks)
  • x/opchild/types/client.go (1 hunks)
  • x/opchild/types/commitments.go (1 hunks)
  • x/opchild/types/commitments_test.go (1 hunks)
  • x/opchild/types/encoding_helper.go (1 hunks)
  • x/opchild/types/keys.go (1 hunks)
  • x/opchild/types/proof.go (1 hunks)
  • x/ophost/client/cli/tx.go (6 hunks)
  • x/ophost/client/cli/tx_test.go (3 hunks)
  • x/ophost/client/cli/types.go (2 hunks)
  • x/ophost/keeper/msg_server.go (4 hunks)
  • x/ophost/keeper/msg_server_test.go (3 hunks)
  • x/ophost/types/error.go (1 hunks)
  • x/ophost/types/hook/bridge_hook.go (2 hunks)
  • x/ophost/types/hook/bridge_hook_test.go (2 hunks)
  • x/ophost/types/tx.go (15 hunks)
  • x/ophost/types/tx_test.go (1 hunks)
Files skipped from review due to trivial changes (5)
  • api/opinit/opchild/v1/tx.pulsar.go
  • proto/opinit/opchild/v1/tx.proto
  • proto/opinit/ophost/v1/query.proto
  • proto/opinit/ophost/v1/types.proto
  • specs/l2_output_oracle.md
Additional context used
yamllint
proto/buf.yaml

[error] 5-5: trailing spaces

(trailing-spaces)

GitHub Check: codecov/patch
x/opchild/abci.go

[warning] 19-19: x/opchild/abci.go#L19
Added line #L19 was not covered by tests


[warning] 21-24: x/opchild/abci.go#L21-L24
Added lines #L21 - L24 were not covered by tests


[warning] 30-30: x/opchild/abci.go#L30
Added line #L30 was not covered by tests

x/opchild/types/client.go

[warning] 15-24: x/opchild/types/client.go#L15-L24
Added lines #L15 - L24 were not covered by tests


[warning] 26-26: x/opchild/types/client.go#L26
Added line #L26 was not covered by tests


[warning] 29-32: x/opchild/types/client.go#L29-L32
Added lines #L29 - L32 were not covered by tests


[warning] 34-37: x/opchild/types/client.go#L34-L37
Added lines #L34 - L37 were not covered by tests


[warning] 39-42: x/opchild/types/client.go#L39-L42
Added lines #L39 - L42 were not covered by tests


[warning] 44-45: x/opchild/types/client.go#L44-L45
Added lines #L44 - L45 were not covered by tests

x/opchild/types/encoding_helper.go

[warning] 16-24: x/opchild/types/encoding_helper.go#L16-L24
Added lines #L16 - L24 were not covered by tests


[warning] 31-32: x/opchild/types/encoding_helper.go#L31-L32
Added lines #L31 - L32 were not covered by tests


[warning] 40-41: x/opchild/types/encoding_helper.go#L40-L41
Added lines #L40 - L41 were not covered by tests


[warning] 43-44: x/opchild/types/encoding_helper.go#L43-L44
Added lines #L43 - L44 were not covered by tests

x/opchild/types/commitments.go

[warning] 23-23: x/opchild/types/commitments.go#L23
Added line #L23 was not covered by tests


[warning] 52-53: x/opchild/types/commitments.go#L52-L53
Added lines #L52 - L53 were not covered by tests

x/opchild/keeper/commitments.go

[warning] 16-16: x/opchild/keeper/commitments.go#L16
Added line #L16 was not covered by tests


[warning] 18-19: x/opchild/keeper/commitments.go#L18-L19
Added lines #L18 - L19 were not covered by tests


[warning] 34-35: x/opchild/keeper/commitments.go#L34-L35
Added lines #L34 - L35 were not covered by tests


[warning] 42-43: x/opchild/keeper/commitments.go#L42-L43
Added lines #L42 - L43 were not covered by tests


[warning] 45-46: x/opchild/keeper/commitments.go#L45-L46
Added lines #L45 - L46 were not covered by tests


[warning] 59-60: x/opchild/keeper/commitments.go#L59-L60
Added lines #L59 - L60 were not covered by tests


[warning] 70-71: x/opchild/keeper/commitments.go#L70-L71
Added lines #L70 - L71 were not covered by tests


[warning] 73-74: x/opchild/keeper/commitments.go#L73-L74
Added lines #L73 - L74 were not covered by tests

x/opchild/keeper/querier.go

[warning] 113-116: x/opchild/keeper/querier.go#L113-L116
Added lines #L113 - L116 were not covered by tests


[warning] 118-123: x/opchild/keeper/querier.go#L118-L123
Added lines #L118 - L123 were not covered by tests


[warning] 125-130: x/opchild/keeper/querier.go#L125-L130
Added lines #L125 - L130 were not covered by tests


[warning] 132-141: x/opchild/keeper/querier.go#L132-L141
Added lines #L132 - L141 were not covered by tests


[warning] 143-147: x/opchild/keeper/querier.go#L143-L147
Added lines #L143 - L147 were not covered by tests

x/opchild/keeper/keeper.go

[warning] 144-145: x/opchild/keeper/keeper.go#L144-L145
Added lines #L144 - L145 were not covered by tests

x/opchild/keeper/msg_server.go

[warning] 585-586: x/opchild/keeper/msg_server.go#L585-L586
Added lines #L585 - L586 were not covered by tests

Additional comments not posted (149)
proto/buf.gen.pulsar.yaml (2)

13-13: LGTM!

The override entry for cometbft is correctly updated to specify the source path.

The code changes are approved.


21-23: LGTM!

The new plugin entry for go-cosmos-orm is correctly configured.

The code changes are approved.

proto/buf.yaml (1)

5-5: LGTM!

The new dependency for cometbft is correctly added.

The code changes are approved.

Tools
yamllint

[error] 5-5: trailing spaces

(trailing-spaces)

x/opchild/keeper/keeper_test.go (1)

12-27: LGTM!

The test function is well-structured and correctly tests the WithdrawalCommitmentKey functionality.

The code changes are approved.

x/ophost/client/cli/types.go (1)

3-5: LGTM! But verify the field usage in the codebase.

The addition of the OracleEnabled field enhances the configuration capabilities of the BridgeCliConfig struct. Ensure that the new field is used correctly in the codebase.

The code changes are approved.

Run the following script to verify the field usage:

Also applies to: 17-17

Verification successful

Field Usage Verified: OracleEnabled is correctly integrated and utilized.

The OracleEnabled field is extensively used across the codebase, including in protobuf definitions, logic, and test cases. Its integration appears correct and complete, with no issues found in its usage.

  • Files and Contexts:
    • Protobuf definitions in x/ophost/types/tx.pb.go and api/opinit/ophost/v1/types.pulsar.go
    • Logic in x/opchild/keeper/msg_server.go and x/ophost/keeper/msg_server.go
    • Test cases in x/opchild/keeper/msg_server_test.go and x/ophost/keeper/msg_server_test.go
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `OracleEnabled` field in the codebase.

# Test: Search for the field usage. Expect: Only occurrences of the new field.
rg --type go 'OracleEnabled'

Length of output: 4641

api/go.mod (10)

6-6: LGTM! But verify the dependency usage in the codebase.

The addition of the buf.build/gen/go/cometbft/cometbft/protocolbuffers/go dependency suggests new functionality or improvements in the codebase. Ensure that the new dependency is used correctly.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

Dependency Usage Verified:

The buf.build/gen/go/cometbft/cometbft/protocolbuffers/go dependency is correctly integrated and used in the following files:

  • api/opinit/ophost/v1/tx.pulsar.go
  • api/opinit/opchild/v1/query.pulsar.go

These usages involve cryptographic operations or proofs, consistent with the purpose of the dependency. No issues were found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `buf.build/gen/go/cometbft/cometbft/protocolbuffers/go` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new dependency.
rg --type go 'cometbft'

Length of output: 7321


7-7: LGTM! But verify the dependency usage in the codebase.

The update of the cosmossdk.io/api dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

Dependency Update Verified: cosmossdk.io/api

The update of the cosmossdk.io/api dependency to version v0.7.5 has been verified across the codebase. The imports from this package are consistent with the update, and no compatibility issues were found.

  • Files with imports:
    • x/opchild/autocli.go
    • x/ophost/autocli.go
    • api/opinit/ophost/v1/types.pulsar.go
    • api/opinit/ophost/v1/query.pulsar.go
    • api/opinit/ophost/v1/genesis.pulsar.go
    • api/opinit/ophost/v1/auth.pulsar.go
    • api/opinit/opchild/module/v1/module.pulsar.go
    • api/opinit/ophost/v1/tx.pulsar.go
    • api/opinit/ophost/module/v1/module.pulsar.go
    • api/opinit/opchild/v1/query.pulsar.go
    • api/opinit/opchild/v1/genesis.pulsar.go
    • api/opinit/opchild/v1/tx.pulsar.go
    • api/opinit/opchild/v1/types.pulsar.go
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `cosmossdk.io/api` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'cosmossdk.io/api'

Length of output: 1983


9-9: LGTM! But verify the dependency usage in the codebase.

The update of the github.com/cosmos/gogoproto dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:


11-11: LGTM! But verify the dependency usage in the codebase.

The update of the google.golang.org/grpc dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:


16-16: LGTM! But verify the dependency usage in the codebase.

The addition of the buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go dependency suggests new functionality or improvements in the codebase. Ensure that the new dependency is used correctly.

The code changes are approved.

Run the following script to verify the dependency usage:


20-20: LGTM! But verify the dependency usage in the codebase.

The update of the golang.org/x/sys dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

No direct usage of golang.org/x/sys found in the codebase.

The golang.org/x/sys dependency is marked as indirect and no direct imports or usages were found in the codebase. This suggests that the update to v0.22.0 is safe and does not directly impact the current code.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `golang.org/x/sys` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'x/sys'

Length of output: 20


Script:

#!/bin/bash
# Description: Check for imports of `golang.org/x/sys` in all Go files.

# Search for import statements of `golang.org/x/sys`
rg --type go 'import\s+"golang.org/x/sys' -A 5

Length of output: 48


19-19: LGTM! But verify the dependency usage in the codebase.

The update of the golang.org/x/net dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

No direct usage of golang.org/x/net found in the codebase.

The golang.org/x/net dependency is marked as indirect, and no direct usage of its packages was found in the codebase. This suggests it is used by another dependency. Ensure that any dependent packages are compatible with the updated version. If necessary, perform manual verification of the indirect dependencies.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `golang.org/x/net` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'x/net'

Length of output: 20


Script:

#!/bin/bash
# Description: Search for specific packages within `golang.org/x/net` that might be used in the codebase.

# List all packages in `golang.org/x/net` and search for their usage.
packages=("context" "http2" "idna" "ipv4" "ipv6" "proxy" "publicsuffix" "trace" "websocket")

for package in "${packages[@]}"; do
    echo "Searching for golang.org/x/net/$package usage..."
    rg --type go "golang.org/x/net/$package"
done

Length of output: 1681


12-12: LGTM! But verify the dependency usage in the codebase.

The update of the google.golang.org/protobuf dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

Dependency Update Verified: google.golang.org/protobuf

The update to google.golang.org/protobuf version v1.34.2 has been verified. The dependency is used extensively throughout the codebase, and no compatibility issues were found. The update appears to be safe and compatible with the existing code.

  • Extensive usage of google.golang.org/protobuf found in the codebase.
  • No errors or warnings related to the dependency update.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `google.golang.org/protobuf` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'protobuf'

Length of output: 113241


18-18: LGTM! But verify the dependency usage in the codebase.

The update of the golang.org/x/exp dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

No direct usage of golang.org/x/exp found in the codebase.

The golang.org/x/exp dependency is marked as indirect and is not directly used in the codebase. It is likely included as a transitive dependency by another package. No further action is needed unless issues arise from this dependency in the future.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `golang.org/x/exp` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'x/exp'

Length of output: 20


Script:

#!/bin/bash
# Description: Search for any mention of `golang.org/x/exp` in the entire codebase, including comments and documentation.

# Search in all files for any mention of `golang.org/x/exp`
rg 'golang.org/x/exp'

Length of output: 1873


21-21: LGTM! But verify the dependency usage in the codebase.

The update of the golang.org/x/text dependency suggests bug fixes, performance improvements, or new features. Ensure that the new version is compatible with the codebase.

The code changes are approved.

Run the following script to verify the dependency usage:

Verification successful

Update to golang.org/x/text is safe and indirect.

The dependency golang.org/x/text is used indirectly, and the update to version v0.16.0 is reflected correctly in go.sum. No direct usage in the codebase was found, indicating that this update should not impact the codebase directly.

  • Ensure that any dependencies relying on golang.org/x/text are compatible with the updated version.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of the `golang.org/x/text` dependency in the codebase.

# Test: Search for the dependency usage. Expect: Only occurrences of the new version.
rg --type go 'x/text'

Length of output: 21


Script:

#!/bin/bash
# Check the go.mod and go.sum files for any dependencies that might rely on `golang.org/x/text`.

# List all dependencies in go.mod that might rely on `golang.org/x/text`.
grep -A 5 'require' api/go.mod

# List all occurrences of `golang.org/x/text` in go.sum to see if it's used by other dependencies.
grep 'golang.org/x/text' api/go.sum

Length of output: 813

x/opchild/ante/ante.go (2)

10-10: LGTM!

The change to hold a reference to a MsgServer can lead to more efficient memory usage and potentially allow for nil checks or modifications to the MsgServer instance without needing to copy the entire object.

The code changes are approved.


13-13: LGTM!

The change ensures consistency

x/opchild/abci.go (4)

19-19: LGTM!

The change to use a pointer for keeper.Keeper is a good practice for performance reasons.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 19-19: x/opchild/abci.go#L19
Added line #L19 was not covered by tests


30-30: LGTM!

The change to use a pointer for keeper.Keeper is a good practice for performance reasons.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 30-30: x/opchild/abci.go#L30
Added line #L30 was not covered by tests


30-30: Verify the function usage in the codebase.

Ensure that all function calls to EndBlocker match the new signature.

Run the following script to verify the function usage:

Verification successful

Function usage verified successfully.

The EndBlocker function is called with the correct signature in the codebase.

  • x/opchild/module.go: The function call matches the new signature with ctx and am.keeper as arguments.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all function calls to `EndBlocker` match the new signature.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type go -A 5 $'EndBlocker'

Length of output: 739

Tools
GitHub Check: codecov/patch

[warning] 30-30: x/opchild/abci.go#L30
Added line #L30 was not covered by tests


21-24: Verify the function usage in the codebase.

Ensure that all function calls to BeginBlocker match the new signature.

Run the following script to verify the function usage:

Verification successful

All function calls to BeginBlocker match the new signature.

The function BeginBlocker is called in x/opchild/module.go with the correct signature, matching its definition in x/opchild/abci.go. No discrepancies were found.

  • x/opchild/module.go: Call to BeginBlocker(ctx, am.keeper)
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all function calls to `BeginBlocker` match the new signature.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type go -A 5 $'BeginBlocker'

Length of output: 1595

Tools
GitHub Check: codecov/patch

[warning] 21-24: x/opchild/abci.go#L21-L24
Added lines #L21 - L24 were not covered by tests

x/opchild/types/client.go (2)

15-24: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 15-24: x/opchild/types/client.go#L15-L24
Added lines #L15 - L24 were not covered by tests


29-45: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 29-32: x/opchild/types/client.go#L29-L32
Added lines #L29 - L32 were not covered by tests


[warning] 34-37: x/opchild/types/client.go#L34-L37
Added lines #L34 - L37 were not covered by tests


[warning] 39-42: x/opchild/types/client.go#L39-L42
Added lines #L39 - L42 were not covered by tests


[warning] 44-45: x/opchild/types/client.go#L44-L45
Added lines #L44 - L45 were not covered by tests

x/opchild/types/keys.go (2)

22-35: LGTM!

The key prefixes have been reorganized and renumbered correctly.

The code changes are approved.


22-35: Verify the usage of the new key prefixes in the codebase.

Ensure that the new key prefixes are used consistently throughout the codebase.

Run the following script to verify the usage of the new key prefixes:

Verification successful

Key Prefixes Verified and Consistently Used

The new key prefixes are consistently used throughout the codebase, as evidenced by their presence in relevant files and contexts. No issues were found with their usage.

  • CommitmentPrefix is used in x/opchild/types/commitments.go.
  • Other prefixes like HostHeightKey, HostValidatorsPrefix, and LastValidatorPowerPrefix are used in x/opchild/keeper/keeper.go.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the new key prefixes in the codebase.

# Test: Search for the key prefixes. Expect: Only occurrences of the new key prefixes.
rg --type go -A 5 $'HistoricalInfoPrefix|CommitmentTimePrefix|CommitmentPrefix|LastValidatorPowerPrefix|ValidatorsPrefix|ValidatorsByConsAddrPrefix|DenomPairPrefix|PendingDepositsKey|HostHeightKey|HostValidatorsPrefix'

Length of output: 3978

x/ophost/types/error.go (2)

23-23: LGTM!

The error variable ErrEmptyCommitmentProof is correctly registered with a unique error code and descriptive message.

The code changes are approved.


24-24: LGTM!

The error variable ErrEmptyBatchBytes is correctly registered with a unique error code and descriptive message.

The code changes are approved.

proto/opinit/opchild/v1/genesis.proto (5)

26-28: LGTM!

The new field withdrawal_commitments is correctly defined and includes appropriate options to ensure it cannot be null and should not be omitted when serialized.

The code changes are approved.


30-30: LGTM!

The next_l2_sequence field is correctly renumbered from position 5 to position 6 to accommodate the new field withdrawal_commitments.

The code changes are approved.


31-31: LGTM!

The next_l1_sequence field is correctly renumbered from position 6 to position 7 to accommodate the new field withdrawal_commitments.

The code changes are approved.


32-32: LGTM!

The bridge_info field is correctly renumbered from position 7 to position 8 to accommodate the new field withdrawal_commitments.

The code changes are approved.


33-33: LGTM!

The exported field is correctly renumbered from position 8 to position 9 to accommodate the new field withdrawal_commitments.

The code changes are approved.

x/opchild/types/encoding_helper.go (2)

56-63: LGTM!

The function isTypedNil is correctly implemented.

The code changes are approved.


67-74: LGTM!

The function isEmpty is correctly implemented.

The code changes are approved.

x/opchild/types/commitments.go (4)

16-27: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 23-23: x/opchild/types/commitments.go#L23
Added line #L23 was not covered by tests


29-39: LGTM!

The function is correctly implemented.

The code changes are approved.


41-47: LGTM!

The function is correctly implemented.

The code changes are approved.


49-56: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 52-53: x/opchild/types/commitments.go#L52-L53
Added lines #L52 - L53 were not covered by tests

x/opchild/keeper/commitments.go (4)

13-38: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 16-16: x/opchild/keeper/commitments.go#L16
Added line #L16 was not covered by tests


[warning] 18-19: x/opchild/keeper/commitments.go#L18-L19
Added lines #L18 - L19 were not covered by tests


[warning] 34-35: x/opchild/keeper/commitments.go#L34-L35
Added lines #L34 - L35 were not covered by tests


40-49: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 42-43: x/opchild/keeper/commitments.go#L42-L43
Added lines #L42 - L43 were not covered by tests


[warning] 45-46: x/opchild/keeper/commitments.go#L45-L46
Added lines #L45 - L46 were not covered by tests


51-66: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 59-60: x/opchild/keeper/commitments.go#L59-L60
Added lines #L59 - L60 were not covered by tests


68-77: LGTM!

The function is correctly implemented.

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 70-71: x/opchild/keeper/commitments.go#L70-L71
Added lines #L70 - L71 were not covered by tests


[warning] 73-74: x/opchild/keeper/commitments.go#L73-L74
Added lines #L73 - L74 were not covered by tests

x/opchild/types/proof.go (5)

14-23: LGTM!

The function is correctly implemented.

The code changes are approved.


25-32: LGTM!

The function is correctly implemented.

The code changes are approved.


34-41: LGTM!

The function is correctly implemented.

The code changes are approved.


43-50: LGTM!

The function is correctly implemented.

The code changes are approved.


52-93: LGTM!

The function is correctly implemented.

The code changes are approved.

x/opchild/keeper/compatibility_grpc_query.go (1)

23-23: Verify the impact of changing Keeper to a pointer.

The change to use a pointer for Keeper is likely intended to improve performance or alter method calls. Ensure that this change does not introduce any unintended side effects.

Run the following script to verify the impact of the change:

x/opchild/keeper/querier_test.go (6)

27-27: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.


45-45: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.


74-74: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.


88-88: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.


100-100: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.


112-112: LGTM!

The change to pass a pointer to input.OPChildKeeper ensures that the NewQuerier function operates on the intended data structure.

The code changes are approved.

x/opchild/keeper/querier.go (2)

16-16: LGTM!

The change to hold a pointer to Keeper in the Querier struct improves memory management and access.

The code changes are approved.


22-23: LGTM!

The change to accept a pointer to Keeper and return a types.QueryServer in the NewQuerier function aligns with the updated Querier struct and ensures type safety.

The code changes are approved.

x/opchild/module.go (4)

43-43: LGTM!

The addition of the k field of type *keeper.Keeper in AppModuleBasic is appropriate and enhances the module's capabilities.

The code changes are approved.


51-52: LGTM!

The RegisterGRPCGatewayRoutes method correctly uses the new k field to set the client context through the keeper.

The code changes are approved.


101-101: LGTM!

Changing the keeper field to a pointer type *keeper.Keeper is appropriate and allows for more efficient memory usage and state modification.

The code changes are approved.


113-116: LGTM!

The NewAppModule constructor function correctly reflects the changes by accepting a pointer to the keeper and initializing both the AppModuleBasic and keeper fields.

The code changes are approved.

x/ophost/types/tx_test.go (2)

14-29: LGTM!

The TestMsgRecordBatch_Validate function is well-structured and covers essential test cases for MsgRecordBatch.

The code changes are approved.


32-136: LGTM!

The TestMsgForceTokenWithdrawal function is well-structured and covers a comprehensive set of test cases for MsgForceTokenWithdrawal.

The code changes are approved.

x/opchild/ante/ante_test.go (1)

150-150: LGTM!

Passing OPChildKeeper as a pointer to NewRedundantBridgeDecorator is appropriate and may improve memory usage or meet a requirement for pointer-based access.

The code changes are approved.

proto/opinit/opchild/v1/types.proto (2)

9-9: LGTM!

The import statement for google/protobuf/timestamp.proto is necessary for the new google.protobuf.Timestamp type used in the WithdrawalCommitment message.

The code changes are approved.


139-143: LGTM!

The WithdrawalCommitment message is well-defined and includes appropriate field annotations to ensure correct serialization and deserialization behavior.

The code changes are approved.

proto/opinit/opchild/v1/query.proto (3)

5-7: LGTM!

The import statements for cometbft/crypto/v1/proof.proto and cosmos/base/v1beta1/coin.proto are necessary for the new message types and fields used in the RPC methods.

The code changes are approved.


62-65: LGTM!

The ForceWithdrawalProofs RPC method is well-defined and enhances the querying capabilities of the service.

The code changes are approved.


141-157: LGTM!

The QueryForceWithdrawalProofsRequest and QueryForceWithdrawalProofsResponse message types are well-defined and provide the necessary fields for querying withdrawal proofs.

The code changes are approved.

x/ophost/types/hook/bridge_hook_test.go (1)

78-78: LGTM!

The change in the GetPermissionedRelayers method to return an empty slice and a nil error if no relayers are found is appropriate as it simplifies the handling of cases where no relayers are found. The removal of the collections import is also appropriate since it is no longer needed.

The code changes are approved.

x/opchild/keeper/keeper.go (4)

58-68: LGTM!

The new fields Commitments, CommitmentTimes, clientCtx, and baseAppQuerier are logical additions to the Keeper struct.

The code changes are approved.


Line range hint 79-131: LGTM!

The NewKeeper function correctly initializes the new fields Commitments and CommitmentTimes and accommodates the querier parameter.

The code changes are approved.


144-146: LGTM! But add tests.

The SetClientContext method is correctly implemented. However, it is not covered by tests.

Please add tests for this method.

Tools
GitHub Check: codecov/patch

[warning] 144-145: x/opchild/keeper/keeper.go#L144-L145
Added lines #L144 - L145 were not covered by tests


164-167: LGTM!

The StoreService method is correctly implemented.

The code changes are approved.

x/opchild/client/cli/tx.go (1)

Line range hint 302-331: LGTM!

The addition of the OracleEnabled field to the bridgeConfig enhances the functionality of the command.

The code changes are approved.

x/opchild/ante/common_test.go (1)

Line range hint 298-312: LGTM!

The changes to _createTestInput function adjust how the message server is initialized and are logical.

The code changes are approved.

x/opchild/keeper/common_test.go (3)

204-204: LGTM!

The addition of the Cdc field to the TestKeepers struct enhances its capabilities.

The code changes are approved.


320-320: LGTM!

The changes to the _createTestInput function streamline the logic and enhance the struct's capabilities.

The code changes are approved.


334-339: LGTM!

The instantiation of keepers now includes the Cdc field, ensuring it is properly initialized.

The code changes are approved.

go.mod (3)

10-10: LGTM!

The update to cosmossdk.io/core from v0.11.0 to v0.11.1 is likely to include bug fixes or minor improvements.

The code changes are approved.


16-16: LGTM!

The update to cosmossdk.io/x/tx from v0.13.3 to v0.13.4 is likely to include bug fixes or minor improvements.

The code changes are approved.


21-21: LGTM!

The update to github.com/cosmos/cosmos-sdk from v0.50.8 to v0.50.9 is likely to include bug fixes or minor improvements.

The code changes are approved.

x/ophost/types/tx.go (11)

45-46: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


112-113: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


145-146: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


181-182: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


Line range hint 232-274: LGTM!

The changes improve consistency and enhance the validation logic by ensuring the length of lastBlockHash meets the required length of 32 bytes.

The code changes are approved.


381-382: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


413-414: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


459-460: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


518-519: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


545-546: LGTM!

The parameter name change from accAddressCodec to ac simplifies the name and improves readability without altering the underlying logic.

The code changes are approved.


281-359: LGTM!

The addition of the new message type MsgForceTokenWithdrawal enhances the system's capability to handle forced token withdrawals, ensuring data integrity and adherence to expected formats and constraints.

The code changes are approved.

contrib/launchtools/config.go (3)

171-171: LGTM!

The UnmarshalJSON method correctly handles the new EnableOracle field.

The code changes are approved.

Also applies to: 198-198


209-209: LGTM!

The MarshalJSON method correctly handles the new EnableOracle field.

The code changes are approved.

Also applies to: 213-213


Line range hint 149-149: LGTM!

The Finalize method correctly handles the new EnableOracle field.

The code changes are approved.

x/ophost/client/cli/tx.go (2)

339-340: LGTM!

The NewFinalizeTokenWithdrawal function correctly handles the new JSON structure for withdrawal information.

The code changes are approved.

Also applies to: 343-344, 347-347, 362-363, 374-377, 379-390, 391-392, 395-396


404-427: LGTM!

The NewForceTokenWithdrawal function is correctly implemented, ensuring all necessary fields are validated and correctly processed.

The code changes are approved.

Also applies to: 431-434, 437-442, 447-451, 452-452, 458-470

proto/opinit/ophost/v1/tx.proto (3)

52-54: LGTM!

The ForceTokenWithdrwal RPC method is correctly defined, ensuring the necessary request and response message types are included.

The code changes are approved.


200-227: LGTM!

The MsgForceTokenWithdrawal message type is correctly defined, ensuring all necessary fields are included.

The code changes are approved.


229-231: LGTM!

The MsgForceTokenWithdrawalResponse message type is correctly defined, ensuring the necessary fields are included.

The code changes are approved.

x/opchild/client/cli/tx_test.go (1)

442-443: LGTM!

The addition of the "oracle_enabled": true key-value pair enhances the data structure by including an additional property that likely indicates whether the oracle feature is enabled.

The code changes are approved.

x/opchild/keeper/msg_server.go (3)

22-22: LGTM!

The MsgServer struct now holds a pointer to the Keeper type instead of a value, enhancing memory efficiency by avoiding unnecessary copying of the Keeper instance.

The code changes are approved.


28-29: LGTM!

The NewMsgServerImpl function now accepts a pointer to Keeper and returns a pointer to MsgServer, aligning with the updated MsgServer struct.

The code changes are approved.


579-590: LGTM! But add test coverage for the new lines.

The additional logic for recording a withdrawal commitment enhances the functionality of the InitiateTokenWithdrawal method. However, the added lines are not covered by tests.

Apply this diff to add test coverage for the new lines:

+func Test_MsgServer_InitiateTokenWithdrawal(t *testing.T) {
+	ctx, input := createDefaultTestInput(t)
+	ms := keeper.NewMsgServerImpl(&input.OPChildKeeper)
+
+	// Add test cases to cover the new lines
+}
Tools
GitHub Check: codecov/patch

[warning] 585-586: x/opchild/keeper/msg_server.go#L585-L586
Added lines #L585 - L586 were not covered by tests

x/opchild/keeper/msg_server_test.go (7)

42-42: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.


118-118: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.


176-176: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.


223-223: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.


257-257: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.


Line range hint 282-309: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior. The change in the string format to "test/token" likely aligns it with expected formats elsewhere in the codebase.

The code changes are approved.


340-340: LGTM!

The NewMsgServerImpl function is correctly invoked with a pointer to input.OPChildKeeper, maintaining the expected behavior.

The code changes are approved.

x/ophost/client/cli/tx_test.go (1)

584-634: LGTM!

The function is correctly implemented and covers both valid and invalid scenarios for force withdrawal.

The code changes are approved.

x/ophost/keeper/msg_server.go (3)

271-273: LGTM!

The addition of the Sequence field in the response enhances the response structure, providing more context about the deposit operation.

The code changes are approved.


304-304: LGTM!

The renaming of the parameter req.LatestBlockHash to req.LastBlockHash improves clarity.

The code changes are approved.


350-416: LGTM!

The function is correctly implemented and covers all necessary validations and operations for forced token withdrawals.

The code changes are approved.

x/ophost/keeper/msg_server_test.go (4)

581-679: Comprehensive test for force withdrawal functionality.

The test function covers various scenarios and ensures the robustness of the force withdrawal functionality.

The code changes are approved.


687-723: Well-implemented helper function for creating application hashes and commitment proofs.

The function enhances the test's ability to simulate realistic scenarios.

The code changes are approved.


725-742: Well-implemented helper function for creating random blocks.

The function enhances the test's ability to simulate realistic scenarios.

The code changes are approved.


681-685: Simple and correctly implemented type.

The type is used effectively in the helper function.

The code changes are approved.

api/opinit/opchild/v1/genesis.pulsar.go (14)

171-220: LGTM!

The new type _GenesisState_5_list and its methods are correctly implemented.

The code changes are approved.


Line range hint 223-242: LGTM!

The new field descriptor fd_GenesisState_withdrawal_commitments is correctly added to the initialization function.

The code changes are approved.


338-343: LGTM!

The Range method is correctly updated to handle the new WithdrawalCommitments field.

The code changes are approved.


391-392: LGTM!

The Has method is correctly updated to check for the new WithdrawalCommitments field.

The code changes are approved.


425-426: LGTM!

The Clear method is correctly updated to clear the new WithdrawalCommitments field.

The code changes are approved.


472-477: LGTM!

The Get method is correctly updated to retrieve the new WithdrawalCommitments field.

The code changes are approved.


524-527: LGTM!

The Set method is correctly updated to set the new WithdrawalCommitments field.

The code changes are approved.


579-584: LGTM!

The Mutable method is correctly updated to handle the new WithdrawalCommitments field.

The code changes are approved.


621-623: LGTM!

The NewField method is correctly updated to handle the new WithdrawalCommitments field.

The code changes are approved.


724-729: LGTM!

The ProtoMethods method is correctly updated to handle the new WithdrawalCommitments field during the size calculation.

The code changes are approved.


806-820: LGTM!

The ProtoMethods method is correctly updated to handle the new WithdrawalCommitments field during the marshaling process.

The code changes are approved.


1072-1104: LGTM!

The ProtoMethods method is correctly updated to handle the new WithdrawalCommitments field during the unmarshaling process.

The code changes are approved.


1730-1735: LGTM!

The new field WithdrawalCommitments is correctly added to the GenesisState structure.

The code changes are approved.


1786-1791: LGTM!

The new method GetWithdrawalCommitments is correctly added to the GenesisState structure.

The code changes are approved.

api/opinit/ophost/v1/types.pulsar.go (2)

3941-3942: LGTM!

The addition of the new dependency path (google/protobuf/duration.proto) is appropriate to accommodate new features or data types related to durations.

The code changes are approved.


3942-3942: LGTM!

The removal of the previous occurrence of the same dependency (google/protobuf/duration.proto) is appropriate to avoid redundancy.

The code changes are approved.

api/opinit/opchild/v1/types.pulsar.go (8)

3757-3768: LGTM!

The initialization of the WithdrawalCommitment message descriptor and field descriptors is correctly implemented.

The code changes are approved.


3774-3776: LGTM!

The ProtoReflect method correctly returns the fast reflection interface for WithdrawalCommitment.

The code changes are approved.


3778-3788: LGTM!

The slowProtoReflect method correctly returns the slow reflection interface for WithdrawalCommitment.

The code changes are approved.


3790-3803: LGTM!

The fastReflection_WithdrawalCommitment_messageType struct and its methods correctly provide the message type information for WithdrawalCommitment.

The code changes are approved.


3834-3847: LGTM!

The Range method correctly iterates over the populated fields of WithdrawalCommitment.

The code changes are approved.


3860-3872: LGTM!

The Has method correctly checks if specific fields of WithdrawalCommitment are populated.

The code changes are approved.


3880-3892: LGTM!

The Clear method correctly resets specific fields of WithdrawalCommitment to their default state.

The code changes are approved.


3900-3914: LGTM!

The Get method correctly retrieves the value for a specific field of WithdrawalCommitment.

The code changes are approved.

api/opinit/opchild/v1/query.pulsar.go (6)

5-8: LGTM!

The new imports are necessary for the added functionality.

The code changes are approved.


Line range hint 5828-7872: LGTM!

The initialization logic for the new message types is correctly implemented.

The code changes are approved.


7310-7401: LGTM!

The new message types are well-defined and include necessary fields for handling withdrawal proofs.

The code changes are approved.


7486-7601: LGTM!

The raw descriptor data for the new message types is correctly included.

The code changes are approved.


7616-7671: LGTM!

The updates to the message types and dependencies are correctly implemented.

The code changes are approved.


7849-7880: LGTM!

The exporter functions for the new message types are correctly implemented.

The code changes are approved.

proto/buf.yaml Outdated Show resolved Hide resolved
x/opchild/abci.go Outdated Show resolved Hide resolved
x/opchild/types/client.go Outdated Show resolved Hide resolved
x/opchild/types/client.go Outdated Show resolved Hide resolved
x/opchild/types/encoding_helper.go Outdated Show resolved Hide resolved
x/opchild/keeper/commitments.go Outdated Show resolved Hide resolved
x/opchild/keeper/commitments.go Outdated Show resolved Hide resolved
x/opchild/keeper/commitments.go Outdated Show resolved Hide resolved
x/opchild/types/proof.go Outdated Show resolved Hide resolved
x/opchild/keeper/querier.go Outdated Show resolved Hide resolved
@beer-1 beer-1 changed the title feat: force withdrawal feat: change bridge hook to check signature of l2 transaction Sep 3, 2024
x/ophost/types/output.go Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

Outside diff range, codebase verification and nitpick comments (3)
x/opchild/keeper/keeper.go (2)

68-79: Acknowledge changes to the NewKeeper constructor function.

The NewKeeper constructor function has been updated to include two new parameters: decorators of type sdk.AnteHandler and txDecoder of type sdk.TxDecoder. This change aligns with the modifications made to the Keeper struct.

Add a TODO comment to track the implementation of the recommended decorators.

The comment block provides useful information on the recommended decorators to be used. Consider adding a TODO comment to track the implementation of these decorators.

Apply this diff to add a TODO comment:

+// TODO: Implement the recommended decorators
 /*
  Should provide the following decorators
  sdk.ChainAnteDecorators(
   authante.NewSetPubKeyDecorator(accountKeeper),
   authante.NewValidateSigCountDecorator(accountKeeper),
   authante.NewSigGasConsumeDecorator(accountKeeper, authante.DefaultSigVerificationGasConsumer),
   authante.NewSigVerificationDecorator(accountKeeper, signModeHandler),
   authante.NewIncrementSequenceDecorator(accountKeeper),
  ),
 */

32-35: Potential issues due to the removal of the bridgeHook field

The bridgeHook field is actively used in the x/ophost/keeper/msg_server.go file and is part of the testing setup in x/ophost/keeper/common_test.go. Its removal from the Keeper struct in x/opchild/keeper/keeper.go could break existing functionality and lead to test failures. Please review the usage of bridgeHook in these files and ensure that any necessary adjustments are made to maintain functionality.

  • File: x/ophost/keeper/msg_server.go
  • File: x/ophost/keeper/common_test.go
Analysis chain

Acknowledge changes to the Keeper struct.

The Keeper struct has been modified to include two new fields: decorators of type sdk.AnteHandler and txDecoder of type sdk.TxDecoder. This change suggests that the Keeper is now responsible for handling transaction decorators and decoding.

Additionally, the bridgeHook field has been removed from the Keeper struct, indicating a change in the Keeper's functionality related to the bridge hook.

Verify the impact of removing the bridgeHook field.

Please ensure that the removal of the bridgeHook field does not break any existing functionality or introduce any unintended consequences.

Run the following script to verify the usage of the bridgeHook field:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the `bridgeHook` field in the codebase.

# Test: Search for the usage of the `bridgeHook` field. Expect: No occurrences.
rg --type go -A 5 $'bridgeHook'

Length of output: 8325

x/ophost/types/tx.go (1)

Line range hint 233-278: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the underlying logic. The additional validation check for lastBlockHash length enhances the robustness of the validation logic.

The static analysis tool reports that the added line is not covered by tests. Do you want me to generate a unit test for MsgFinalizeTokenWithdrawal.Validate that covers the lastBlockHash length check?

Tools
GitHub Check: codecov/patch

[warning] 218-218: x/ophost/types/tx.go#L218
Added line #L218 was not covered by tests

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 5dd302e and 944722e.

Files ignored due to path filters (6)
  • api/go.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • x/opchild/types/genesis.pb.go is excluded by !**/*.pb.go
  • x/opchild/types/tx.pb.go is excluded by !**/*.pb.go
  • x/opchild/types/types.pb.go is excluded by !**/*.pb.go
  • x/ophost/types/tx.pb.go is excluded by !**/*.pb.go
Files selected for processing (41)
  • api/go.mod (1 hunks)
  • api/opinit/opchild/v1/genesis.pulsar.go (21 hunks)
  • api/opinit/opchild/v1/tx.pulsar.go (2 hunks)
  • api/opinit/opchild/v1/types.pulsar.go (10 hunks)
  • api/opinit/ophost/v1/tx.pulsar.go (18 hunks)
  • go.mod (1 hunks)
  • proto/opinit/opchild/v1/genesis.proto (1 hunks)
  • proto/opinit/opchild/v1/tx.proto (3 hunks)
  • proto/opinit/opchild/v1/types.proto (3 hunks)
  • proto/opinit/ophost/v1/tx.proto (3 hunks)
  • x/opchild/abci.go (1 hunks)
  • x/opchild/ante/ante_test.go (3 hunks)
  • x/opchild/ante/common_test.go (4 hunks)
  • x/opchild/ante/fee_utils.go (2 hunks)
  • x/opchild/client/cli/tx_test.go (3 hunks)
  • x/opchild/keeper/common_test.go (9 hunks)
  • x/opchild/keeper/deposit.go (1 hunks)
  • x/opchild/keeper/genesis.go (3 hunks)
  • x/opchild/keeper/genesis_test.go (3 hunks)
  • x/opchild/keeper/keeper.go (5 hunks)
  • x/opchild/keeper/msg_server.go (8 hunks)
  • x/opchild/keeper/msg_server_test.go (14 hunks)
  • x/opchild/keeper/oracle.go (2 hunks)
  • x/opchild/keeper/querier.go (1 hunks)
  • x/opchild/module.go (2 hunks)
  • x/opchild/types/codec.go (2 hunks)
  • x/opchild/types/events.go (1 hunks)
  • x/opchild/types/genesis.go (4 hunks)
  • x/opchild/types/keys.go (1 hunks)
  • x/opchild/types/tx.go (1 hunks)
  • x/ophost/client/cli/tx.go (4 hunks)
  • x/ophost/client/cli/tx_test.go (2 hunks)
  • x/ophost/keeper/msg_server.go (5 hunks)
  • x/ophost/keeper/msg_server_test.go (4 hunks)
  • x/ophost/types/codec.go (2 hunks)
  • x/ophost/types/error.go (1 hunks)
  • x/ophost/types/event.go (1 hunks)
  • x/ophost/types/keys.go (1 hunks)
  • x/ophost/types/output.go (1 hunks)
  • x/ophost/types/tx.go (13 hunks)
  • x/ophost/types/tx_test.go (1 hunks)
Files skipped from review due to trivial changes (3)
  • go.mod
  • x/opchild/keeper/oracle.go
  • x/ophost/types/keys.go
Files skipped from review as they are similar to previous changes (12)
  • api/opinit/opchild/v1/tx.pulsar.go
  • proto/opinit/opchild/v1/tx.proto
  • proto/opinit/ophost/v1/tx.proto
  • x/opchild/ante/ante_test.go
  • x/opchild/client/cli/tx_test.go
  • x/opchild/keeper/msg_server_test.go
  • x/opchild/keeper/querier.go
  • x/opchild/module.go
  • x/ophost/client/cli/tx_test.go
  • x/ophost/keeper/msg_server_test.go
  • x/ophost/types/error.go
  • x/ophost/types/tx_test.go
Additional context used
GitHub Check: codecov/patch
x/opchild/abci.go

[warning] 19-19: x/opchild/abci.go#L19
Added line #L19 was not covered by tests


[warning] 25-25: x/opchild/abci.go#L25
Added line #L25 was not covered by tests

x/ophost/types/output.go

[warning] 35-35: x/ophost/types/output.go#L35
Added line #L35 was not covered by tests


[warning] 37-38: x/ophost/types/output.go#L37-L38
Added lines #L37 - L38 were not covered by tests


[warning] 40-41: x/ophost/types/output.go#L40-L41
Added lines #L40 - L41 were not covered by tests


[warning] 43-44: x/ophost/types/output.go#L43-L44
Added lines #L43 - L44 were not covered by tests

x/ophost/types/codec.go

[warning] 24-24: x/ophost/types/codec.go#L24
Added line #L24 was not covered by tests


[warning] 43-43: x/ophost/types/codec.go#L43
Added line #L43 was not covered by tests

x/opchild/keeper/deposit.go

[warning] 14-15: x/opchild/keeper/deposit.go#L14-L15
Added lines #L14 - L15 were not covered by tests


[warning] 25-27: x/opchild/keeper/deposit.go#L25-L27
Added lines #L25 - L27 were not covered by tests


[warning] 31-33: x/opchild/keeper/deposit.go#L31-L33
Added lines #L31 - L33 were not covered by tests


[warning] 40-42: x/opchild/keeper/deposit.go#L40-L42
Added lines #L40 - L42 were not covered by tests


[warning] 70-71: x/opchild/keeper/deposit.go#L70-L71
Added lines #L70 - L71 were not covered by tests


[warning] 75-76: x/opchild/keeper/deposit.go#L75-L76
Added lines #L75 - L76 were not covered by tests


[warning] 85-87: x/opchild/keeper/deposit.go#L85-L87
Added lines #L85 - L87 were not covered by tests

x/opchild/types/genesis.go

[warning] 26-26: x/opchild/types/genesis.go#L26
Added line #L26 was not covered by tests


[warning] 40-40: x/opchild/types/genesis.go#L40
Added line #L40 was not covered by tests


[warning] 61-64: x/opchild/types/genesis.go#L61-L64
Added lines #L61 - L64 were not covered by tests

x/ophost/types/tx.go

[warning] 110-111: x/ophost/types/tx.go#L110-L111
Added lines #L110 - L111 were not covered by tests


[warning] 143-144: x/ophost/types/tx.go#L143-L144
Added lines #L143 - L144 were not covered by tests


[warning] 179-180: x/ophost/types/tx.go#L179-L180
Added lines #L179 - L180 were not covered by tests


[warning] 190-190: x/ophost/types/tx.go#L190
Added line #L190 was not covered by tests


[warning] 218-218: x/ophost/types/tx.go#L218
Added line #L218 was not covered by tests

x/opchild/keeper/msg_server.go

[warning] 112-115: x/opchild/keeper/msg_server.go#L112-L115
Added lines #L112 - L115 were not covered by tests


[warning] 117-117: x/opchild/keeper/msg_server.go#L117
Added line #L117 was not covered by tests


[warning] 402-403: x/opchild/keeper/msg_server.go#L402-L403
Added lines #L402 - L403 were not covered by tests


[warning] 455-455: x/opchild/keeper/msg_server.go#L455
Added line #L455 was not covered by tests


[warning] 460-460: x/opchild/keeper/msg_server.go#L460
Added line #L460 was not covered by tests


[warning] 499-500: x/opchild/keeper/msg_server.go#L499-L500
Added lines #L499 - L500 were not covered by tests

x/ophost/keeper/msg_server.go

[warning] 246-247: x/ophost/keeper/msg_server.go#L246-L247
Added lines #L246 - L247 were not covered by tests

Additional comments not posted (98)
api/go.mod (9)

6-6: LGTM!

The minor version bump to cosmossdk.io/api is approved.


8-8: LGTM!

The minor version bump to github.com/cosmos/gogoproto is approved.


10-10: LGTM!

The minor version bump to google.golang.org/grpc is approved.


11-11: LGTM!

The patch version bump to google.golang.org/protobuf is approved.


16-16: LGTM!

The update to a specific commit hash for golang.org/x/exp is approved.


17-17: LGTM!

The minor version bump to golang.org/x/net is approved.


18-18: LGTM!

The minor version bump to golang.org/x/sys is approved.


19-19: LGTM!

The minor version bump to golang.org/x/text is approved.


20-20: LGTM!

The update to a specific commit hash for google.golang.org/genproto/googleapis/rpc is approved.

x/opchild/abci.go (2)

Line range hint 25-40: LGTM! The function signature change is approved.

The function signature change enhances efficiency by allowing direct manipulation of the Keeper instance without copying the entire structure. The function's logic remains largely unchanged and the changes are minimal.

Tools
GitHub Check: codecov/patch

[warning] 19-19: x/opchild/abci.go#L19
Added line #L19 was not covered by tests


[warning] 25-25: x/opchild/abci.go#L25
Added line #L25 was not covered by tests


19-22: LGTM! The function signature change and the new call to k.TrackHistoricalInfo(ctx) are approved.

The function signature change enhances efficiency by allowing direct manipulation of the Keeper instance without copying the entire structure. The new call to k.TrackHistoricalInfo(ctx) is crucial for tracking historical data at the start of each block and improves the function's logic and state management.

Reminder: Add tests for the new functionality.

The new call to k.TrackHistoricalInfo(ctx) should be covered by tests to ensure its correctness.

Do you want me to generate the unit testing code or open a GitHub issue to track this task?

Tools
GitHub Check: codecov/patch

[warning] 19-19: x/opchild/abci.go#L19
Added line #L19 was not covered by tests

x/opchild/types/keys.go (7)

22-22: LGTM!

The code change is approved.


24-24: LGTM!

The code change is approved.


25-25: LGTM!

The code change is approved.


26-26: LGTM!

The code change is approved.


28-28: LGTM!

The code change is approved.


31-31: LGTM!

The code change is approved.


32-32: LGTM!

The code change is approved.

x/opchild/ante/fee_utils.go (2)

4-4: LGTM!

The code changes are approved.


30-30: LGTM!

The code changes are approved. The new implementation enhances type safety and potentially improves precision in calculations by using a more robust mathematical representation for handling the gas limit.

x/opchild/types/events.go (3)

23-23: LGTM!

The code changes are approved.


24-24: LGTM!

The code changes are approved.


32-32: LGTM!

The code changes are approved.

proto/opinit/opchild/v1/genesis.proto (5)

23-23: LGTM!

The code changes are approved.


24-24: LGTM!

The code changes are approved.


25-25: LGTM!

The code changes are approved.


26-26: LGTM!

The code changes are approved.


28-28: LGTM!

The code changes are approved.

x/opchild/keeper/genesis_test.go (1)

29-30: LGTM!

The code changes are approved. The code segment is correctly setting a denomination pair in the OPChildKeeper and handling errors appropriately.

x/ophost/types/event.go (1)

13-13: LGTM!

The addition of the EventTypeUpdateMetadata constant is a valid enhancement to the event processing capabilities, as it allows for more granular event tracking and handling related to metadata updates. The constant is correctly defined and follows the naming convention of other event type constants.

x/opchild/types/codec.go (4)

21-21: LGTM!

The code change is approved.


22-22: LGTM!

The code change is approved.


37-37: LGTM!

The code change is approved.


38-38: LGTM!

The code change is approved.

x/ophost/types/output.go (2)

40-41: Similar to the previous comment, add tests.

Hashing the receiver address using SHA3-256 before appending it to the seed enhances the security of the hash generation process by ensuring that the address is not stored in plain text.

However, the static analysis tool has flagged these lines as not being covered by tests.

Tools
GitHub Check: codecov/patch

[warning] 40-41: x/ophost/types/output.go#L40-L41
Added lines #L40 - L41 were not covered by tests


43-44: Similar to the previous comments, add tests.

Hashing the denom string using SHA3-256 before appending it to the seed enhances the security of the hash generation process by ensuring that the string is not stored in plain text.

However, the static analysis tool has flagged these lines as not being covered by tests.

Tools
GitHub Check: codecov/patch

[warning] 43-44: x/ophost/types/output.go#L43-L44
Added lines #L43 - L44 were not covered by tests

x/opchild/keeper/deposit.go (2)

11-55: LGTM!

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 14-15: x/opchild/keeper/deposit.go#L14-L15
Added lines #L14 - L15 were not covered by tests


[warning] 25-27: x/opchild/keeper/deposit.go#L25-L27
Added lines #L25 - L27 were not covered by tests


[warning] 31-33: x/opchild/keeper/deposit.go#L31-L33
Added lines #L31 - L33 were not covered by tests


[warning] 40-42: x/opchild/keeper/deposit.go#L40-L42
Added lines #L40 - L42 were not covered by tests


57-100: LGTM!

The code changes are approved.

Tools
GitHub Check: codecov/patch

[warning] 70-71: x/opchild/keeper/deposit.go#L70-L71
Added lines #L70 - L71 were not covered by tests


[warning] 75-76: x/opchild/keeper/deposit.go#L75-L76
Added lines #L75 - L76 were not covered by tests


[warning] 85-87: x/opchild/keeper/deposit.go#L85-L87
Added lines #L85 - L87 were not covered by tests

x/opchild/keeper/genesis.go (2)

92-93: LGTM!

The code changes are approved. The new logic correctly sets the denomination pairs in the state, aligning with the shift in functionality to prioritize denomination management.


146-148: LGTM!

The code changes are approved. The new logic correctly retrieves the denomination pairs and appends them to the exported genesis state, aligning with the shift in functionality to prioritize denomination management.

proto/opinit/opchild/v1/types.proto (3)

10-10: LGTM!

The code changes are approved.


123-124: LGTM!

The code changes are approved.


125-128: LGTM!

The code changes are approved.

x/opchild/keeper/keeper.go (2)

109-110: LGTM!

The changes to the Keeper struct initialization in the NewKeeper function align with the modifications made to the Keeper struct and the NewKeeper constructor function.


124-124: Acknowledge the removal of the PendingDeposits field.

The PendingDeposits field has been removed from the Keeper struct initialization in the NewKeeper function. This change aligns with the modifications made to the Keeper struct.

Verify the impact of removing the PendingDeposits field.

The AI-generated summary suggests that the removal of the PendingDeposits field may imply a refactoring of how deposits are managed within the module. Please ensure that this change does not break any existing functionality or introduce any unintended consequences.

Run the following script to verify the usage of the PendingDeposits field:

Verification successful

Verification successful: No issues found with the removal of PendingDeposits.

The PendingDeposits field has been completely removed from the codebase, as confirmed by the absence of any references. This suggests that its removal is part of a broader refactoring effort and does not impact existing functionality.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the `PendingDeposits` field in the codebase.

# Test: Search for the usage of the `PendingDeposits` field. Expect: No occurrences.
rg --type go -A 5 $'PendingDeposits'

Length of output: 35


Script:

#!/bin/bash
# Description: Search for any references to `PendingDeposits` in the codebase, including comments and documentation.

# Test: Search for any occurrences of `PendingDeposits` in the codebase.
rg 'PendingDeposits'

Length of output: 20

x/opchild/types/tx.go (1)

261-262: Verify the impact and correctness of allowing zero amounts for token deposits.

The validation logic for MsgFinalizeTokenDeposit has been modified to allow zero amounts. Previously, the validation would return an error if the amount was either invalid or zero. With this change, a zero amount is now considered valid as long as the amount itself is valid.

Please ensure that allowing zero amounts aligns with the intended behavior and does not introduce any vulnerabilities or unexpected consequences. Consider the following:

  • Is it safe and correct to allow zero amounts for token deposits?
  • Are there any potential security risks or edge cases that need to be handled?
  • Does this change affect the overall functionality and integrity of the token deposit process?

To verify the correctness and impact of this change, please review the relevant specifications, design documents, and test cases. Ensure that the modified behavior is thoroughly tested and validated.

If you have any concerns or need further clarification, please let me know.

x/ophost/client/cli/tx.go (5)

Line range hint 122-127: LGTM!

The code changes are approved.


152-152: LGTM!

The code changes are approved.


338-347: LGTM!

The code changes are approved.


363-365: LGTM!

The code changes are approved.


369-371: LGTM!

The code changes are approved.

Also applies to: 374-376, 379-379

x/ophost/types/tx.go (7)

43-55: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.


205-228: LGTM!

The parameter name change from accAddressCodec to ac and the variable name change from latestBlockHash to lastBlockHash improve readability and consistency without altering the underlying logic.

Tools
GitHub Check: codecov/patch

[warning] 218-218: x/ophost/types/tx.go#L218
Added line #L218 was not covered by tests


300-301: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.


Line range hint 332-343: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.


378-379: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.


437-438: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.


464-465: LGTM!

The parameter name change from accAddressCodec to ac improves readability without altering the validation logic.

x/opchild/ante/common_test.go (4)

34-34: LGTM!

The code changes are approved.


245-246: LGTM!

The code changes are approved.


299-306: LGTM!

The code changes are approved.


321-321: LGTM!

The code changes are approved.

x/opchild/keeper/common_test.go (5)

20-20: Also applies to: 24-24, 28-28, 33-33, 35-35, 38-39


Line range hint 62-67: LGTM!

The change from ed25519 to secp256k1 for generating the public keys is approved as it aligns with the best practices for the Cosmos SDK.


127-131: Also applies to: 134-135


207-207: LGTM!

The following changes are approved:

  • The addition of the Cdc field to the TestKeepers struct enhances its functionality by allowing it to hold a codec instance for serialization and deserialization tasks.
  • The change in the keyPubAddr function to use secp256k1 instead of ed25519 aligns with the best practices for the Cosmos SDK.

Also applies to: 230-238


268-269: LGTM!

The following changes are approved:

  • The introduction of the generateTestTx function enhances the overall structure and modularity of the code by encapsulating the logic for creating test transactions.
  • The changes in the _createTestInput function, such as the modifications to message routing, ante handlers, and keeper initialization, are correct and align with the best practices for the Cosmos SDK.

Also applies to: 290-290, 309-311, 325-332, 347-347, 352-359, 363-415

x/opchild/keeper/msg_server.go (4)

20-20: LGTM!

The changes to the MsgServer struct are approved. Holding a pointer to the Keeper type is a good practice for memory efficiency.


26-27: LGTM!

The changes to the NewMsgServerImpl function are approved. The function signature aligns with the updated MsgServer struct and the pointer-based approach for memory efficiency.


Line range hint 512-530: LGTM!

The addition of the emitWithdrawEvents function is approved. Encapsulating the logic for emitting withdrawal events and including the base denom in the event attributes improves code organization and provides more context to the withdrawal process.

Tools
GitHub Check: codecov/patch

[warning] 499-500: x/opchild/keeper/msg_server.go#L499-L500
Added lines #L499 - L500 were not covered by tests


Line range hint 533-564: LGTM!

The changes to the UpdateOracle function are approved. The addition of permission and config checks improves security, and the emission of an event with relevant attributes enhances the transparency of the oracle update process.

x/ophost/keeper/msg_server.go (3)

273-275: LGTM!

The code changes are approved.


Line range hint 283-306: LGTM!

The code changes are approved.


Line range hint 313-567: LGTM!

The code changes are approved.

api/opinit/opchild/v1/genesis.pulsar.go (4)

1451-1455: LGTM!

The code changes are approved.


Line range hint 604-618: LGTM!

The code changes are approved.


623-628: LGTM!

The code changes are approved.


Line range hint 848-867: LGTM!

The code changes are approved.

api/opinit/opchild/v1/types.pulsar.go (4)

Line range hint 2775-3541: LGTM!

The code segment for the Params message type looks good. No issues found.


Line range hint 3555-3579: LGTM!

The code segment for the Validator message type looks good. No issues found.


3661-3662: LGTM!

The code segment for the CoinsWrapper message type looks good. No issues found.


Line range hint 3709-3821: LGTM!

The code segment for registering the protobuf message types and enums looks good. The removal of the PendingDeposits message type from the registration is consistent with the other changes.

api/opinit/ophost/v1/tx.pulsar.go (16)

4809-4809: LGTM!

The field descriptor renaming is consistent with the overall field renaming.


4824-4824: LGTM!

The field descriptor initialization is updated to use the new field name.


4946-4948: LGTM!

The conditional check is updated to use the new field name.


4985-4986: LGTM!

The case statement is updated to use the new field name.


5021-5022: LGTM!

The case statement is updated to use the new field name.


5069-5070: LGTM!

The case statement is updated to use the new field name.


5112-5113: LGTM!

The case statement is updated to use the new field name.


5159-5160: LGTM!

The error message is updated to use the new field name.


5194-5194: LGTM!

The case statement is updated to use the new field name.


5300-5300: LGTM!

The length check is updated to use the new field name.


5333-5336: LGTM!

The encoding logic is updated to use the new field name.


5714-5714: LGTM!

The error message in the decoding logic is updated to use the new field name.


5741-5743: LGTM!

The decoding logic is updated to use the new field name.


12350-12352: LGTM!

The MsgFinalizeTokenWithdrawal struct definition is updated to use the new field name.


12438-12440: LGTM!

The getter method for the LastBlockHash field is updated.


13184-13188: LGTM!

The YAML annotation for the last_block_hash field is updated.

Comment on lines +37 to +38
senderDigest := sha3.Sum256([]byte(sender))
seed = append(seed, senderDigest[:]...) // put utf8 encoded address
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good security enhancement, but add tests.

Hashing the sender address using SHA3-256 before appending it to the seed enhances the security of the hash generation process by ensuring that the address is not stored in plain text. 👍

However, the static analysis tool has flagged these lines as not being covered by tests.

Do you want me to generate the unit testing code or open a GitHub issue to track this task?

Tools
GitHub Check: codecov/patch

[warning] 37-38: x/ophost/types/output.go#L37-L38
Added lines #L37 - L38 were not covered by tests

@@ -21,6 +21,7 @@
legacy.RegisterAminoMsg(cdc, &MsgUpdateChallengers{}, "ophost/MsgUpdateChallengers")
legacy.RegisterAminoMsg(cdc, &MsgUpdateBatchInfo{}, "ophost/MsgUpdateBatchInfo")
legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "ophost/MsgUpdateParams")
legacy.RegisterAminoMsg(cdc, &MsgUpdateMetadata{}, "ophost/MsgUpdateMetadata")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! But please add tests.

The addition of the new message type MsgUpdateMetadata is consistent with the existing code pattern.

However, the added line is not covered by tests.

Please add tests to cover the new message type. Let me know if you need any assistance with writing the tests.

Tools
GitHub Check: codecov/patch

[warning] 24-24: x/ophost/types/codec.go#L24
Added line #L24 was not covered by tests

@@ -39,6 +40,7 @@
&MsgUpdateChallengers{},
&MsgUpdateBatchInfo{},
&MsgUpdateParams{},
&MsgUpdateMetadata{},
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! But please add tests.

The addition of the new message type MsgUpdateMetadata is consistent with the existing code pattern.

However, the added line is not covered by tests.

Please add tests to cover the new message type. Let me know if you need any assistance with writing the tests.

Tools
GitHub Check: codecov/patch

[warning] 43-43: x/ophost/types/codec.go#L43
Added line #L43 was not covered by tests

Comment on lines +11 to +55
func (k Keeper) handleBridgeHook(ctx sdk.Context, data []byte) (success bool, reason string) {
defer func() {
if r := recover(); r != nil {
reason = fmt.Sprintf("panic: %v", r)
}

const maxReasonLength = 128
if len(reason) > maxReasonLength {
reason = reason[:maxReasonLength] + "..."
}
}()

tx, err := k.txDecoder(data)
if err != nil {
reason = fmt.Sprintf("Failed to decode tx: %s", err)
return
}

ctx, err = k.decorators(ctx, tx, false)
if err != nil {
reason = fmt.Sprintf("Failed to run AnteHandler: %s", err)
return
}

// use cache context from here to avoid resetting sequencer number on failure
cacheCtx, commit := ctx.CacheContext()
for _, msg := range tx.GetMsgs() {
handler := k.router.Handler(msg)
if handler == nil {
reason = fmt.Sprintf("Unrecognized Msg type: %s", sdk.MsgTypeURL(msg))
return
}

_, err = handler(cacheCtx, msg)
if err != nil {
reason = fmt.Sprintf("Failed to execute Msg: %s", err)
return
}
}

commit()
success = true

return
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add test coverage for error handling paths.

The static analysis tool has flagged the following lines as not being covered by tests:

  • Lines 14-15: Handling a panic in the deferred function.
  • Lines 25-27: Handling an error when decoding the transaction.
  • Lines 31-33: Handling an error when running the AnteHandler.
  • Lines 40-42: Handling an unrecognized message type.

Please add test cases to cover these error handling paths. Let me know if you need any assistance with writing the tests.

Tools
GitHub Check: codecov/patch

[warning] 14-15: x/opchild/keeper/deposit.go#L14-L15
Added lines #L14 - L15 were not covered by tests


[warning] 25-27: x/opchild/keeper/deposit.go#L25-L27
Added lines #L25 - L27 were not covered by tests


[warning] 31-33: x/opchild/keeper/deposit.go#L31-L33
Added lines #L31 - L33 were not covered by tests


[warning] 40-42: x/opchild/keeper/deposit.go#L40-L42
Added lines #L40 - L42 were not covered by tests

Comment on lines +57 to +100
// safeDepositToken mint and send coins to the recipient. Rollback all state changes
// if the deposit is failed.
func (ms MsgServer) safeDepositToken(ctx context.Context, toAddr sdk.AccAddress, coins sdk.Coins) (success bool, reason string) {
// if coin is zero, just create an account
if coins.IsZero() {
newAcc := ms.authKeeper.NewAccountWithAddress(ctx, toAddr)
ms.authKeeper.SetAccount(ctx, newAcc)
return true, ""
}

var err error
defer func() {
if r := recover(); r != nil {
reason = fmt.Sprintf("panic: %v", r)
}

const maxReasonLength = 128
if len(reason) > maxReasonLength {
reason = reason[:maxReasonLength] + "..."
}
}()

// use cache context to avoid relaying failure
sdkCtx := sdk.UnwrapSDKContext(ctx)
cacheCtx, commit := sdkCtx.CacheContext()

// mint coins to the module account
if err = ms.bankKeeper.MintCoins(cacheCtx, types.ModuleName, coins); err != nil {
reason = fmt.Sprintf("failed to mint coins: %s", err)
return
}

// transfer can be failed due to contract logics
if err = ms.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, toAddr, coins); err != nil {
reason = fmt.Sprintf("failed to send coins: %s", err)
return
}

// write the changes only if the transfer is successful
commit()
success = true

return
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add test coverage for error handling paths.

The static analysis tool has flagged the following lines as not being covered by tests:

  • Lines 70-71: Handling a panic in the deferred function.
  • Lines 75-76: Truncating the reason string if it's too long.
  • Lines 85-87: Handling an error when minting coins.

Please add test cases to cover these error handling paths. Let me know if you need any assistance with writing the tests.

Tools
GitHub Check: codecov/patch

[warning] 70-71: x/opchild/keeper/deposit.go#L70-L71
Added lines #L70 - L71 were not covered by tests


[warning] 75-76: x/opchild/keeper/deposit.go#L75-L76
Added lines #L75 - L76 were not covered by tests


[warning] 85-87: x/opchild/keeper/deposit.go#L85-L87
Added lines #L85 - L87 were not covered by tests

Comment on lines +189 to +190
// allow zero amount for creating account
if !msg.Amount.IsValid() {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Allowing zero amounts for MsgInitiateTokenDeposit broadens the functionality by enabling account creation without an initial deposit.

The static analysis tool reports that the added line is not covered by tests. Do you want me to generate a unit test for MsgInitiateTokenDeposit.Validate that covers the zero amount case?

Tools
GitHub Check: codecov/patch

[warning] 190-190: x/ophost/types/tx.go#L190
Added line #L190 was not covered by tests

Comment on lines +112 to +117
signer, err := ms.addressCodec.BytesToString(signers[0])
if err != nil {
return nil, err
}

return nil, errorsmod.Wrap(types.ErrInvalidSigner, signer)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Improve test coverage for the added lines.

The changes to the ExecuteMessages function improve error handling and logging by providing more context in the error messages.

However, the added lines (112-115, 117) are not covered by tests according to the static analysis hints.

Do you want me to generate test cases to cover these lines or open a GitHub issue to track this task?

Tools
GitHub Check: codecov/patch

[warning] 112-115: x/opchild/keeper/msg_server.go#L112-L115
Added lines #L112 - L115 were not covered by tests


[warning] 117-117: x/opchild/keeper/msg_server.go#L117
Added line #L117 was not covered by tests

Comment on lines +397 to +406
// deposit token
var success bool
var reason string
toAddr, err := ms.authKeeper.AddressCodec().StringToBytes(req.To)
if err != nil {
return nil, err
success = false
reason = fmt.Sprintf("failed to convert recipient address: %s", err)
} else {
// rollback if the deposit is failed
success, reason = ms.safeDepositToken(ctx, toAddr, sdk.NewCoins(coin))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Improve test coverage for the added lines.

The changes to the FinalizeTokenDeposit function significantly improve the robustness and transparency of the token deposit process:

  • The new mechanism for handling failed deposits by initiating a withdrawal is a good addition.
  • The emission of additional event attributes enhances the transparency of the operation.

However, some added lines (402-403, 455, 460) are not covered by tests according to the static analysis hints.

Do you want me to generate test cases to cover these lines or open a GitHub issue to track this task?

Also applies to: 437-445, 451-460

Tools
GitHub Check: codecov/patch

[warning] 402-403: x/opchild/keeper/msg_server.go#L402-L403
Added lines #L402 - L403 were not covered by tests

x/opchild/keeper/msg_server.go Show resolved Hide resolved
x/ophost/keeper/msg_server.go Show resolved Hide resolved
Copy link
Contributor

@sh-cha sh-cha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@beer-1 beer-1 merged commit f952aa4 into main Sep 4, 2024
7 checks passed
@beer-1 beer-1 deleted the feat/force-withdrawal branch September 4, 2024 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants