mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-04-04 15:55:23 +00:00 
			
		
		
		
	address some TODOs
This commit is contained in:
		
							parent
							
								
									5911e648b7
								
							
						
					
					
						commit
						029842168a
					
				| @ -19,12 +19,10 @@ type Keeper struct { | ||||
| } | ||||
| 
 | ||||
| func NewKeeper(cdc *codec.Codec, storeKey sdk.StoreKey, router govtypes.Router) Keeper { | ||||
| 	// It is vital to seal the governance proposal router here as to not allow
 | ||||
| 	// further handlers to be registered after the keeper is created since this
 | ||||
| 	// could create invalid or non-deterministic behavior.
 | ||||
| 	// TODO why?
 | ||||
| 	// Not sealing the router because for some reason the function panics if it has already been sealed and there is no way to tell if has already been called.
 | ||||
| 	// router.Seal()
 | ||||
| 	// Logic in the keeper methods assume the set of gov handlers is fixed.
 | ||||
| 	// So the gov router must be sealed so no handlers can be added or removed after the keeper is created.
 | ||||
| 	// Note: for some reason the gov router panics if it has already been sealed, so a helper func is used to make sealing idempotent.
 | ||||
| 	sealGovRouterIdempotently(router) | ||||
| 
 | ||||
| 	return Keeper{ | ||||
| 		cdc:      cdc, | ||||
| @ -33,6 +31,13 @@ func NewKeeper(cdc *codec.Codec, storeKey sdk.StoreKey, router govtypes.Router) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func sealGovRouterIdempotently(router govtypes.Router) { | ||||
| 	defer func() { | ||||
| 		recover() | ||||
| 	}() | ||||
| 	router.Seal() | ||||
| } | ||||
| 
 | ||||
| // ---------- Committees ----------
 | ||||
| 
 | ||||
| // GetCommittee gets a committee from the store.
 | ||||
|  | ||||
| @ -22,8 +22,6 @@ func (k Keeper) SubmitProposal(ctx sdk.Context, proposer sdk.AccAddress, committ | ||||
| 	} | ||||
| 
 | ||||
| 	// Check proposal is valid
 | ||||
| 	// TODO what if it's not valid now but will be in the future?
 | ||||
| 	// TODO does this need to be before permission check?
 | ||||
| 	if err := k.ValidatePubProposal(ctx, pubProposal); err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| @ -92,7 +90,6 @@ func (k Keeper) CloseOutProposal(ctx sdk.Context, proposalID uint64) sdk.Error { | ||||
| } | ||||
| 
 | ||||
| func (k Keeper) ValidatePubProposal(ctx sdk.Context, pubProposal types.PubProposal) sdk.Error { | ||||
| 	// TODO not sure if the basic validation is required - should be run in msg.ValidateBasic
 | ||||
| 	if pubProposal == nil { | ||||
| 		return sdk.ErrInternal("proposal is empty") | ||||
| 	} | ||||
|  | ||||
| @ -1,7 +1,5 @@ | ||||
| package types | ||||
| 
 | ||||
| // These msg types should be basically the same as for gov, but without deposits.
 | ||||
| 
 | ||||
| // MsgSubmitProposal is used by committee members to create a new proposal that they can vote on.
 | ||||
| type MsgSubmitProposal struct { | ||||
| 	// TODO
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 rhuairahrighairigh
						rhuairahrighairigh