Replies: 4 comments 9 replies
-
|
Thanks for kicking off this conversation Aaron. There are a bunch of very good ideas in your proposal. The first comment that comes to mind is: what is the benefit of creating a package (more comments will follow in the coming days) [1] The package |
Beta Was this translation helpful? Give feedback.
-
|
As a follow-up to our last discussion around this, I created this issue in regen-ledger for us to do a trial run of this approach: regen-network/regen-ledger#319. Will follow-up when we have any findings to report. |
Beta Was this translation helpful? Give feedback.
-
|
I think the biggest mess is with |
Beta Was this translation helpful? Give feedback.
-
|
Replaced by #10582 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Copying my notes from today's architecture call here:
Broader Framing
types/is crowded and lacks coherence, too many globals, some inefficient and/or buggy codex/authsuffers from conflation of authentication with vesting and legacy of tracking balancesx/banksuffers from legacy of balances stored inx/authand supply stored inx/supply, plus a general focus on a single denomstoreis being addressed separately, but in general suffers from performance issues related to IAVL and the non-atomicity of the multi-storesimapp, all modules use simulations,simappdepends on all modules, the whole design circularGeneral strategy
types/from the ground upx/authx/bankand design it better for multiple denomssimapp↔ simulations ↔ module dependenciesSeparate go modules
Consider splitting the SDK into multiple go modules (in this same mono-repo) for a) a more disciplined dependency graph and b) decoupled release cycles. High level modules would be:
cosmovisor(example git tag:cosmovisor/v1.0)x/*modules (example git tag:x/bank/v0.2)base/(see below): everything needed by every module developer to build modulesrosettaPros
base, thenx/auth, thenx/staking, etc.)Cons
types/Summary Audit and RecommendationsA more detailed audit will be posted later. This doesn't cover sub-packages of
types/yet liketypes/module.core/package to replacetypes/which modules can migrate to one by one, graduallycore/could become its own go modulecore/would include from the roottypes/package and what would change:MsgRequestand makeMsgRequest.GetSigners()return[]stringand deal with bech32 at the framework layer - this also opens the door for other address representations likeDIDs, etc.core/addresspackage provide these for when they are needed:ParseAddress(sdk.Context, string) (AccAddress, error)AccAddress.ToString(sdk.Context) stringCoin, convertCoinsto use a tree structure under the hood, ditto forDecCoinInt,Uint, andDec, or move to atypes/mathpackage.Decneeds to be refactored and fixedContextshould probably be converted to a pure interface with implementations elsewhere, ditto forStoreKeytypes, etc.types/package would not be includedbasewould also include some sub-packagestypes/liketypes/module(upgraded for ADR 033),codec,storeAPIs, testing infrastructure, simulations, maybebaseapp, etc.Beta Was this translation helpful? Give feedback.
All reactions