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: apply cronos #208

Merged
merged 19 commits into from
Nov 6, 2024
Merged

feat: apply cronos #208

merged 19 commits into from
Nov 6, 2024

Conversation

dudong2
Copy link

@dudong2 dudong2 commented Oct 30, 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
  • added ! to the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • followed the guidelines for building modules
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • included comments for documenting Go code
  • updated the relevant documentation or specification
  • reviewed "Files changed" and left comments if necessary
  • 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 ! in the type prefix if API or client breaking change
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic
  • reviewed API design and naming
  • reviewed documentation is accurate
  • reviewed tests and test coverage
  • manually tested (if applicable)

yihuang and others added 14 commits October 30, 2024 14:09
add basic support in sdk:
- add a TxExecutor baseapp option
- add TxIndex/TxCount/MsgIndex in context

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

fix misspell

fix lint

run gci

fix lint

gci seems not compatible with gofumpt
generic interface

generic btree

generic cachekv

generic transient store

support ObjStore

changelog

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

object store key

Apply review suggestions

fix merge conflict

fix snapshot

revert dependers
* Problem: no efficient way to collect fee

Solution:
- support an idea of virtual account in bank module, where the incoming
  coins are accumulated in a per-tx object store first, then accumulate
  and credit to the real account at end blocker.

  it's nesserary to support parallel tx execution, where we try not to
  access shared states.

more efficient sum

support SendCoinsFromModuleToAccountVirtual

fix test

fix test

* fix lint

* fix test

* fix test

* fix test

* fix test

* fix test

* fix mock keeper

* try fix lint

* try fix lint

* reuse code

* try fix linter

* Update x/bank/keeper/send.go

Signed-off-by: yihuang <[email protected]>

* algin panic call

* fix error handling

* try fix lint

* nolintlint generate falst postiive

---------

Signed-off-by: yihuang <[email protected]>
* Problem: MultiStore interface is bloated

Solution:
- Split out specialied methods from it, keeping the MultiStore generic

* Update store/CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>
* Support RunAtomic API

* add unit test
Solution:
- fix the way context is updated
… of same tx (cosmos#565)

* Problem: signature verification result not cache between incarnations of
same tx

Closes: cosmos#564

Solution:
- introduce incarnation cache that's shared between incarnations of the
  same tx

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* fix nil convert

---------

Signed-off-by: yihuang <[email protected]>
* Problem: gas consumed differs after enabled cache

* fix test

* Revert "Problem: gas consumed differs after enabled cache"

This reverts commit f33944e.

* Revert "Problem: signature verification result not cache between incarnations of same tx (cosmos#565)"

This reverts commit 5a1594f.

* keep interface
* Problem: tx executor can't do dependency analysis

Solution:
- change the api to allow static analysis on tx body

* fix

* changelog

* cleanup

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>
Solution:
- add API StreamingManager to allow extending the abci listeners, mainly
  for versiondb support

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

cleanup
Copy link

@dudong2 your pull request is missing a changelog!

Comment on lines +188 to +190
for key := range okeys {
cms.MountStoreWithDB(okeys[key], storetypes.StoreTypeObject, nil)
}

Check warning

Code scanning / CodeQL

Iteration over map Warning test

Iteration over map may be a possible source of non-determinism
@@ -193,6 +195,10 @@
)
}

func (am AppModule) EndBlock(ctx context.Context) error {
return am.keeper.CreditVirtualAccounts(ctx)

Check warning

Code scanning / CodeQL

Panic in BeginBock or EndBlock consensus methods Warning

path flow from Begin/EndBlock to a panic call
path flow from Begin/EndBlock to a panic call
path flow from Begin/EndBlock to a panic call
path flow from Begin/EndBlock to a panic call
path flow from Begin/EndBlock to a panic call
@dudong2 dudong2 self-assigned this Oct 30, 2024
@dongsam dongsam deleted the branch basechain/develop-v0.50.8 November 4, 2024 02:09
@dongsam dongsam closed this Nov 4, 2024
@dongsam
Copy link
Member

dongsam commented Nov 4, 2024

@dudong2 Oops, while organizing branches, I accidentally deleted the base branch for this PR, causing it to close. I’m sorry for the trouble, I just re-push basechain/develop-v0.50.8 branch and re-opened

@dongsam dongsam reopened this Nov 4, 2024
@dudong2 dudong2 changed the base branch from basechain/develop-v0.50.8 to basechain/abci2.0/develop-v0.50.8 November 6, 2024 03:43
@dudong2 dudong2 changed the base branch from basechain/abci2.0/develop-v0.50.8 to basechain/develop-v0.50.8 November 6, 2024 03:44
@dudong2 dudong2 requested review from dongsam and cloudgray November 6, 2024 04:47
Copy link
Collaborator

@cloudgray cloudgray left a comment

Choose a reason for hiding this comment

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

LGTM

@dudong2 dudong2 merged commit 55e55e6 into basechain/develop-v0.50.8 Nov 6, 2024
38 of 43 checks passed
dudong2 added a commit that referenced this pull request Dec 17, 2024
* Problem: parallel tx execution is not supported (#205)

add basic support in sdk:
- add a TxExecutor baseapp option
- add TxIndex/TxCount/MsgIndex in context

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

fix misspell

fix lint

run gci

fix lint

gci seems not compatible with gofumpt

* Support object store (#206)

generic interface

generic btree

generic cachekv

generic transient store

support ObjStore

changelog

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

object store key

Apply review suggestions

fix merge conflict

fix snapshot

revert dependers

* prefix store support object store (#236)

* Problem: fee collection not compatible with parallel execution (#237)

* Problem: no efficient way to collect fee

Solution:
- support an idea of virtual account in bank module, where the incoming
  coins are accumulated in a per-tx object store first, then accumulate
  and credit to the real account at end blocker.

  it's nesserary to support parallel tx execution, where we try not to
  access shared states.

more efficient sum

support SendCoinsFromModuleToAccountVirtual

fix test

fix test

* fix lint

* fix test

* fix test

* fix test

* fix test

* fix test

* fix mock keeper

* try fix lint

* try fix lint

* reuse code

* try fix linter

* Update x/bank/keeper/send.go

Signed-off-by: yihuang <[email protected]>

* algin panic call

* fix error handling

* try fix lint

* nolintlint generate falst postiive

---------

Signed-off-by: yihuang <[email protected]>

* Problem: MultiStore interface is bloated (#240)

* Problem: MultiStore interface is bloated

Solution:
- Split out specialied methods from it, keeping the MultiStore generic

* Update store/CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>

* Problem: no API to use the new CoW branch store (#243)

* Support RunAtomic API

* add unit test

* Problem: block gas used not set in context (#252)

Solution:
- fix the way context is updated

* Problem: invalid tx returns negative gas wanted (#253)

Solution:
- add checks

* Problem: signature verification result not cache between incarnations of same tx (cosmos#565)

* Problem: signature verification result not cache between incarnations of
same tx

Closes: cosmos#564

Solution:
- introduce incarnation cache that's shared between incarnations of the
  same tx

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* fix nil convert

---------

Signed-off-by: yihuang <[email protected]>

* Problem: gas consumed differs after enabled cache (cosmos#570)

* Problem: gas consumed differs after enabled cache

* fix test

* Revert "Problem: gas consumed differs after enabled cache"

This reverts commit f33944e.

* Revert "Problem: signature verification result not cache between incarnations of same tx (cosmos#565)"

This reverts commit 5a1594f.

* keep interface

* Problem: tx executor can't do dependency analysis (cosmos#744)

* Problem: tx executor can't do dependency analysis

Solution:
- change the api to allow static analysis on tx body

* fix

* changelog

* cleanup

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>

* Problem: can't extend abci listeners in streaming manager (#269)

Solution:
- add API StreamingManager to allow extending the abci listeners, mainly
  for versiondb support

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

cleanup

* chore: apply custom-ed store

* feat: Append send restrictionto Delegate/Undelegate Coins (#202)

* chore: Update go.mod for custom store

* chore: fix lint

* chore: fix lint

* chore: Update go.mod for custom cosmos-sdk/store

* Revert "chore: fix lint"

This reverts commit 8e7af64.

---------

Signed-off-by: yihuang <[email protected]>
Co-authored-by: yihuang <[email protected]>
Co-authored-by: mmsqe <[email protected]>
Co-authored-by: Kyuhyeon Choi <[email protected]>
@dudong2 dudong2 mentioned this pull request Dec 17, 2024
20 tasks
dudong2 added a commit that referenced this pull request Dec 19, 2024
* feat: Append send restrictionto Delegate/Undelegate Coins (#202)

* feat: apply cronos (#208)

* Problem: parallel tx execution is not supported (#205)

add basic support in sdk:
- add a TxExecutor baseapp option
- add TxIndex/TxCount/MsgIndex in context

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

fix misspell

fix lint

run gci

fix lint

gci seems not compatible with gofumpt

* Support object store (#206)

generic interface

generic btree

generic cachekv

generic transient store

support ObjStore

changelog

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

object store key

Apply review suggestions

fix merge conflict

fix snapshot

revert dependers

* prefix store support object store (#236)

* Problem: fee collection not compatible with parallel execution (#237)

* Problem: no efficient way to collect fee

Solution:
- support an idea of virtual account in bank module, where the incoming
  coins are accumulated in a per-tx object store first, then accumulate
  and credit to the real account at end blocker.

  it's nesserary to support parallel tx execution, where we try not to
  access shared states.

more efficient sum

support SendCoinsFromModuleToAccountVirtual

fix test

fix test

* fix lint

* fix test

* fix test

* fix test

* fix test

* fix test

* fix mock keeper

* try fix lint

* try fix lint

* reuse code

* try fix linter

* Update x/bank/keeper/send.go

Signed-off-by: yihuang <[email protected]>

* algin panic call

* fix error handling

* try fix lint

* nolintlint generate falst postiive

---------

Signed-off-by: yihuang <[email protected]>

* Problem: MultiStore interface is bloated (#240)

* Problem: MultiStore interface is bloated

Solution:
- Split out specialied methods from it, keeping the MultiStore generic

* Update store/CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>

* Problem: no API to use the new CoW branch store (#243)

* Support RunAtomic API

* add unit test

* Problem: block gas used not set in context (#252)

Solution:
- fix the way context is updated

* Problem: invalid tx returns negative gas wanted (#253)

Solution:
- add checks

* Problem: signature verification result not cache between incarnations of same tx (cosmos#565)

* Problem: signature verification result not cache between incarnations of
same tx

Closes: cosmos#564

Solution:
- introduce incarnation cache that's shared between incarnations of the
  same tx

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* Update types/context.go

Signed-off-by: yihuang <[email protected]>

* fix nil convert

---------

Signed-off-by: yihuang <[email protected]>

* Problem: gas consumed differs after enabled cache (cosmos#570)

* Problem: gas consumed differs after enabled cache

* fix test

* Revert "Problem: gas consumed differs after enabled cache"

This reverts commit f33944e.

* Revert "Problem: signature verification result not cache between incarnations of same tx (cosmos#565)"

This reverts commit 5a1594f.

* keep interface

* Problem: tx executor can't do dependency analysis (cosmos#744)

* Problem: tx executor can't do dependency analysis

Solution:
- change the api to allow static analysis on tx body

* fix

* changelog

* cleanup

* Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

---------

Signed-off-by: yihuang <[email protected]>

* Problem: can't extend abci listeners in streaming manager (#269)

Solution:
- add API StreamingManager to allow extending the abci listeners, mainly
  for versiondb support

Update CHANGELOG.md

Signed-off-by: yihuang <[email protected]>

cleanup

* chore: apply custom-ed store

* feat: Append send restrictionto Delegate/Undelegate Coins (#202)

* chore: Update go.mod for custom store

* chore: fix lint

* chore: fix lint

* chore: Update go.mod for custom cosmos-sdk/store

* Revert "chore: fix lint"

This reverts commit 8e7af64.

---------

Signed-off-by: yihuang <[email protected]>
Co-authored-by: yihuang <[email protected]>
Co-authored-by: mmsqe <[email protected]>
Co-authored-by: Kyuhyeon Choi <[email protected]>

* chore: Use basechain/develop-v0.50.11-store/v1.1.1

---------

Signed-off-by: yihuang <[email protected]>
Co-authored-by: yihuang <[email protected]>
Co-authored-by: mmsqe <[email protected]>
Co-authored-by: Kyuhyeon Choi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants