laconicd/x/onboarding/keeper/genesis.go
Isha Venikar a21e9ea387 Implement onboarding module for testnet validator enrollment (#3)
* Add proto files for onboarding module

* Add generated proto bindings

* Define onboarding object

* Define the participants state in keeper

* Update genesis file to initialize and export module state to/from genesis

* Add msg to onboard participant

* Register command to enroll participant

* Add functionality to decode ethereum address from signature

* Add comments for messages and fields

* Fix lint errors in proto files

* Add message validation and events in msg_server

* Reuse crypto utils from go-nitro

* Sign entire eth_payload object

* Use google API for rpc method

* Regenerate proto bindings

---------

Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-16 09:25:39 +05:30

44 lines
1.1 KiB
Go

package keeper
import (
"context"
"git.vdb.to/cerc-io/laconicd/x/onboarding"
)
// InitGenesis initializes the module state from a genesis state.
func (k *Keeper) InitGenesis(ctx context.Context, data *onboarding.GenesisState) error {
if err := k.Params.Set(ctx, data.Params); err != nil {
return err
}
for _, participant := range data.Participants {
if err := k.Participants.Set(ctx, participant.CosmosAddress, participant); err != nil {
return err
}
}
return nil
}
// ExportGenesis exports the module state to a genesis state.
func (k *Keeper) ExportGenesis(ctx context.Context) (*onboarding.GenesisState, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err
}
var participants []onboarding.Participant
if err := k.Participants.Walk(ctx, nil, func(cosmosAddress string, participant onboarding.Participant) (bool, error) {
participants = append(participants, participant)
return false, nil
}); err != nil {
return nil, err
}
return &onboarding.GenesisState{
Params: params,
Participants: participants,
}, nil
}