refactor app & modules

- makefile clean up

- replace cosmos-sdk

- upgrade cosmos-sdk to v1.0.0

- replace cometbft

refactor cli + app init

- rm crisis module

- use custom address codec

- app setup, depinject fixes

- improve errors
This commit is contained in:
Roy Crihfield 2024-10-03 15:22:47 +08:00
parent 52e8d322fa
commit e5a085642c
46 changed files with 958 additions and 1322 deletions

View File

@ -12,7 +12,7 @@ ifeq (,$(VERSION))
VERSION := $(shell git describe --exact-match 2>/dev/null)
# if VERSION is empty, then populate it with branch's name and raw commit hash
ifeq (,$(VERSION))
VERSION := $(BRANCH)-$(COMMIT)
VERSION := $(BRANCH)-$(COMMIT)
endif
endif
@ -31,7 +31,7 @@ BUILDDIR ?= $(CURDIR)/build
###########
go.sum: go.mod
echo "Ensure dependencies have not been modified ..." >&2
@echo "Ensure dependencies have not been modified ..." >&2
go mod verify
go mod tidy
@ -42,7 +42,7 @@ build-linux:
GOOS=linux GOARCH=amd64 LEDGER_ENABLED=false $(MAKE) build
$(BUILD_TARGETS): go.sum $(BUILDDIR)/
@echo "--> installing laconicd"
@echo "--> $@ing laconicd"
go $@ $(BUILD_FLAGS) $(BUILD_ARGS) ./...
$(BUILDDIR)/:

View File

@ -6,13 +6,18 @@ import (
"os"
"path/filepath"
dbm "github.com/cosmos/cosmos-db"
"cosmossdk.io/core/appconfig"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/depinject"
"cosmossdk.io/depinject/appconfig"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
bankkeeper "cosmossdk.io/x/bank/keeper"
consensuskeeper "cosmossdk.io/x/consensus/keeper"
distrkeeper "cosmossdk.io/x/distribution/keeper"
govkeeper "cosmossdk.io/x/gov/keeper"
slashingkeeper "cosmossdk.io/x/slashing/keeper"
stakingkeeper "cosmossdk.io/x/staking/keeper"
auctionkeeper "git.vdb.to/cerc-io/laconicd/x/auction/keeper"
bondkeeper "git.vdb.to/cerc-io/laconicd/x/bond/keeper"
onboardingkeeper "git.vdb.to/cerc-io/laconicd/x/onboarding/keeper"
@ -28,34 +33,23 @@ import (
servertypes "github.com/cosmos/cosmos-sdk/server/types"
"github.com/cosmos/cosmos-sdk/types/module"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
"github.com/cosmos/cosmos-sdk/x/gov"
govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
_ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects
_ "cosmossdk.io/x/accounts" // import for side-effects
_ "cosmossdk.io/x/bank" // import for side-effects
_ "cosmossdk.io/x/consensus" // import for side-effects
_ "cosmossdk.io/x/distribution" // import for side-effects
_ "cosmossdk.io/x/gov" // import for side-effects
_ "cosmossdk.io/x/mint" // import for side-effects
_ "cosmossdk.io/x/protocolpool" // import for side-effects
_ "cosmossdk.io/x/slashing" // import for side-effects
_ "cosmossdk.io/x/staking" // import for side-effects
_ "git.vdb.to/cerc-io/laconicd/x/auction/module" // import for side-effects
_ "git.vdb.to/cerc-io/laconicd/x/bond/module" // import for side-effects
_ "git.vdb.to/cerc-io/laconicd/x/onboarding/module" // import for side-effects
_ "git.vdb.to/cerc-io/laconicd/x/registry/module" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/auth" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/bank" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/consensus" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/slashing" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects
)
// DefaultNodeHome default home directories for the application daemon
@ -74,7 +68,7 @@ var (
// capabilities aren't needed for testing.
type LaconicApp struct {
*runtime.App
legacyAmino *codec.LegacyAmino
// legacyAmino *codec.LegacyAmino
appCodec codec.Codec
txConfig client.TxConfig
interfaceRegistry codectypes.InterfaceRegistry
@ -86,7 +80,6 @@ type LaconicApp struct {
SlashingKeeper slashingkeeper.Keeper
DistrKeeper distrkeeper.Keeper
GovKeeper *govkeeper.Keeper
CrisisKeeper *crisiskeeper.Keeper
ConsensusParamsKeeper consensuskeeper.Keeper
// laconic keepers
@ -112,24 +105,13 @@ func init() {
func AppConfig() depinject.Config {
return depinject.Configs(
appconfig.LoadYAML(AppConfigYAML),
depinject.Supply(
// supply custom module basics
map[string]module.AppModuleBasic{
genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
govtypes.ModuleName: gov.NewAppModuleBasic(
[]govclient.ProposalHandler{
paramsclient.ProposalHandler,
},
),
},
),
)
}
// NewLaconicApp returns a reference to an initialized LaconicApp.
func NewLaconicApp(
logger log.Logger,
db dbm.DB,
db corestore.KVStoreWithBatch,
traceStore io.Writer,
loadLatest bool,
appOpts servertypes.AppOptions,
@ -150,7 +132,7 @@ func NewLaconicApp(
),
&appBuilder,
&app.appCodec,
&app.legacyAmino,
// &app.legacyAmino,
&app.txConfig,
&app.interfaceRegistry,
&app.AccountKeeper,
@ -159,7 +141,6 @@ func NewLaconicApp(
&app.SlashingKeeper,
&app.DistrKeeper,
&app.GovKeeper,
&app.CrisisKeeper,
&app.ConsensusParamsKeeper,
&app.AuctionKeeper,
&app.BondKeeper,
@ -178,11 +159,11 @@ func NewLaconicApp(
/**** Module Options ****/
app.ModuleManager.RegisterInvariants(app.CrisisKeeper)
// create the simulation manager and define the order of the modules for deterministic simulations
// NOTE: this is not required apps that don't use the simulator for fuzz testing transactions
app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, make(map[string]module.AppModuleSimulation, 0))
app.sm = module.NewSimulationManagerFromAppModules(
app.ModuleManager.Modules,
make(map[string]module.AppModuleSimulation, 0))
app.sm.RegisterStoreDecoders()
if err := app.Load(loadLatest); err != nil {
@ -192,10 +173,10 @@ func NewLaconicApp(
return app, nil
}
// LegacyAmino returns LaconicApp's amino codec.
func (app *LaconicApp) LegacyAmino() *codec.LegacyAmino {
return app.legacyAmino
}
// // LegacyAmino returns LaconicApp's amino codec.
// func (app *LaconicApp) LegacyAmino() *codec.LegacyAmino {
// return app.legacyAmino
// }
// GetKey returns the KVStoreKey for the provided store key.
func (app *LaconicApp) GetKey(storeKey string) *storetypes.KVStoreKey {

View File

@ -1,16 +1,30 @@
modules:
- name: runtime
config:
"@type": cosmos.app.runtime.v1alpha1.Module
"@type": cosmos.app.runtime.v2.Module
app_name: LaconicApp
# During begin block slashing happens after distr.BeginBlocker so that
# there is nothing left over in the validator fee pool, so as to keep the CanWithdrawInvariant invariant.
# NOTE: staking module is required if HistoricalEntries param > 0
begin_blockers: [distribution, slashing, staking]
end_blockers: [crisis, gov, staking, auction, registry]
begin_blockers: [distribution, protocolpool, slashing, staking]
end_blockers: [gov, staking, protocolpool, auction, registry]
# NOTE: The genutils module must occur after staking so that pools are properly initialized with tokens from genesis accounts.
# NOTE: The genutils module must also occur after auth so that it can access the params from auth.
init_genesis: [auth, bank, distribution, staking, slashing, gov, crisis, genutil, auction, bond, registry, onboarding]
init_genesis:
- consensus
- accounts
- auth
- bank
- distribution
- staking
- slashing
- gov
- genutil
- protocolpool
- auction
- bond
- registry
- onboarding
override_store_keys:
- module_name: auth
kv_store_key: acc
@ -27,6 +41,9 @@ modules:
permissions: [burner, staking]
- account: gov
permissions: [burner]
- account: protocolpool
- account: stream_acc
- account: protocolpool_distr
- account: auction
- account: auction_burn
- account: bond
@ -59,9 +76,12 @@ modules:
- name: gov
config:
"@type": cosmos.gov.module.v1.Module
- name: crisis
- name: accounts
config:
"@type": cosmos.crisis.module.v1.Module
"@type": cosmos.accounts.module.v1.Module
- name: protocolpool
config:
"@type": cosmos.protocolpool.module.v1.Module
- name: bond
config:
"@type": cerc.bond.module.v1.Module

View File

@ -6,13 +6,17 @@ import (
"fmt"
"log"
"cosmossdk.io/collections"
storetypes "cosmossdk.io/store/types"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
slashingtypes "cosmossdk.io/x/slashing/types"
"cosmossdk.io/x/staking"
stakingtypes "cosmossdk.io/x/staking/types"
tmproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
cmttypes "github.com/cometbft/cometbft/types"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
"github.com/cosmos/cosmos-sdk/x/staking"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"git.vdb.to/cerc-io/laconicd/utils"
)
// ExportAppStateAndValidators exports the state of the application for a genesis file.
@ -32,7 +36,7 @@ func (app *LaconicApp) ExportAppStateAndValidators(
app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)
}
genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec)
genState, err := app.ModuleManager.ExportGenesis(ctx)
if err != nil {
return servertypes.ExportedApp{}, fmt.Errorf("failed to export genesis state: %w", err)
}
@ -43,9 +47,22 @@ func (app *LaconicApp) ExportAppStateAndValidators(
}
validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
if err != nil {
return servertypes.ExportedApp{}, err
}
cmtvalidators := make([]cmttypes.GenesisValidator, len(validators))
for i := range validators {
cmtvalidators[i] = cmttypes.GenesisValidator{
Address: validators[i].Address.Bytes(),
PubKey: validators[i].PubKey,
Power: validators[i].Power,
Name: validators[i].Name,
}
}
return servertypes.ExportedApp{
AppState: appState,
Validators: validators,
Validators: cmtvalidators,
Height: height,
ConsensusParams: app.BaseApp.GetConsensusParams(ctx),
}, err
@ -61,10 +78,12 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
applyAllowedAddrs = true
}
allowedAddrsMap := make(map[string]bool)
addrCodec := utils.NewAddressCodec()
valAddrCodec := utils.NewValAddressCodec()
allowedAddrsMap := make(map[string]bool)
for _, addr := range jailAllowedAddrs {
_, err := sdk.ValAddressFromBech32(addr)
_, err := valAddrCodec.StringToBytes(addr)
if err != nil {
log.Fatal(err)
}
@ -74,7 +93,7 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
/* Handle fee distribution state. */
// withdraw all validator commission
_ = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
_ = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
@ -91,12 +110,12 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
}
for _, delegation := range dels {
valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
valAddr, err := valAddrCodec.StringToBytes(delegation.ValidatorAddress)
if err != nil {
panic(err)
}
delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress)
delAddr, err := addrCodec.StringToBytes(delegation.DelegatorAddress)
if err != nil {
panic(err)
}
@ -105,17 +124,17 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
}
// clear validator slash events
app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)
app.DistrKeeper.ValidatorSlashEvents.Clear(ctx, nil)
// clear validator historical rewards
app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)
app.DistrKeeper.ValidatorHistoricalRewards.Clear(ctx, nil)
// set context height to zero
height := ctx.BlockHeight()
ctx = ctx.WithBlockHeight(0)
// reinitialize all validators
_ = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
_ = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
@ -145,12 +164,12 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
// reinitialize all delegations
for _, del := range dels {
valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
valAddr, err := valAddrCodec.StringToBytes(del.ValidatorAddress)
if err != nil {
panic(err)
}
delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress)
delAddr, err := addrCodec.StringToBytes(del.DelegatorAddress)
if err != nil {
panic(err)
}
@ -181,13 +200,15 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
})
// iterate through unbonding delegations, reset creation height
_ = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {
for i := range ubd.Entries {
ubd.Entries[i].CreationHeight = 0
}
_ = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
return false
})
_ = app.StakingKeeper.UnbondingDelegations.Walk(
ctx, nil,
func(_ collections.Pair[[]byte, []byte], ubd stakingtypes.UnbondingDelegation) (stop bool, err error) {
for i := range ubd.Entries {
ubd.Entries[i].CreationHeight = 0
}
_ = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
return false, nil
})
// Iterate through validators by power descending, reset bond heights, and
// update bond intra-tx counters.
@ -226,15 +247,15 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
/* Handle slashing state. */
// reset start height on signing infos
err = app.SlashingKeeper.IterateValidatorSigningInfos(
ctx,
func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
err = app.SlashingKeeper.ValidatorSigningInfo.Walk(
ctx, nil,
func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool, err error) {
info.StartHeight = 0
err = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)
err = app.SlashingKeeper.ValidatorSigningInfo.Set(ctx, addr, info)
if err != nil {
log.Fatal(err)
return true, err
}
return false
return false, nil
},
)
if err != nil {

View File

@ -1,12 +1,7 @@
package params
import (
"cosmossdk.io/errors"
"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
const (
@ -39,15 +34,16 @@ func init() {
}
func RegisterDenoms() {
err := sdk.RegisterDenom(CoinUnit, math.LegacyOneDec())
if err != nil {
panic(err)
}
// TODO refactor
// err := sdk.RegisterDenom(CoinUnit, math.LegacyOneDec())
// if err != nil {
// panic(err)
// }
err = sdk.RegisterDenom(BaseCoinUnit, math.LegacyNewDecWithPrec(1, LntExponent))
if err != nil {
panic(err)
}
// err = sdk.RegisterDenom(BaseCoinUnit, math.LegacyNewDecWithPrec(1, LntExponent))
// if err != nil {
// panic(err)
// }
}
func SetAddressPrefixes() {
@ -55,22 +51,4 @@ func SetAddressPrefixes() {
config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub)
config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub)
config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub)
// This is copied from the cosmos sdk v0.43.0-beta1
// source: https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-beta1/types/address.go#L141
config.SetAddressVerifier(func(bytes []byte) error {
if len(bytes) == 0 {
return errors.Wrap(sdkerrors.ErrUnknownAddress, "addresses cannot be empty")
}
if len(bytes) > address.MaxAddrLen {
return errors.Wrapf(sdkerrors.ErrUnknownAddress, "address max length is %d, got %d", address.MaxAddrLen, len(bytes))
}
if len(bytes) != 20 && len(bytes) != 32 {
return errors.Wrapf(sdkerrors.ErrUnknownAddress, "address length must be 20 or 32 bytes, got %d", len(bytes))
}
return nil
})
}

View File

@ -5,11 +5,11 @@ import (
"errors"
"io"
dbm "github.com/cosmos/cosmos-db"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"golang.org/x/sync/errgroup"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
confixcmd "cosmossdk.io/tools/confix/cmd"
@ -18,50 +18,54 @@ import (
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/keys"
"github.com/cosmos/cosmos-sdk/client/pruning"
"github.com/cosmos/cosmos-sdk/client/rpc"
"github.com/cosmos/cosmos-sdk/client/snapshot"
"github.com/cosmos/cosmos-sdk/server"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
"git.vdb.to/cerc-io/laconicd/app"
"git.vdb.to/cerc-io/laconicd/gql"
)
func initRootCmd(rootCmd *cobra.Command, txConfig client.TxConfig, basicManager module.BasicManager) {
func initRootCmd(rootCmd *cobra.Command, txConfig client.TxConfig, moduleManager moduleManager) {
cfg := sdk.GetConfig()
cfg.Seal()
rootCmd.AddCommand(
genutilcli.InitCmd(basicManager, app.DefaultNodeHome),
genutilcli.InitCmd(moduleManager),
debug.Cmd(),
confixcmd.ConfigCommand(),
pruning.Cmd(newApp, app.DefaultNodeHome),
pruning.Cmd(newApp),
snapshot.Cmd(newApp),
)
server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, func(startCmd *cobra.Command) {
// Override start command to run the GQL server
newStartCmd := server.StartCmdWithOptions(newApp, app.DefaultNodeHome, server.StartCmdOptions{
PostSetup: func(svrCtx *server.Context, clientCtx client.Context, ctx context.Context, g *errgroup.Group) error {
g.Go(func() error {
return gql.Server(ctx, clientCtx, svrCtx.Logger.With("module", "gql-server"))
})
return nil
},
})
startCmd.RunE = newStartCmd.RunE
})
server.AddCommands(rootCmd, newApp, server.StartCmdOptions[*app.LaconicApp]{
PostSetup: func(
_ *app.LaconicApp,
svrCtx *server.Context,
clientCtx client.Context,
ctx context.Context,
g *errgroup.Group,
) error {
g.Go(func() error {
return gql.Server(ctx, clientCtx, svrCtx.Logger.With("module", "gql-server"))
})
return nil
},
},
)
// add keybase, auxiliary RPC, query, genesis, and tx child commands
rootCmd.AddCommand(
server.StatusCommand(),
genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome),
genutilcli.Commands(
moduleManager.Modules()[genutiltypes.ModuleName].(genutil.AppModule),
moduleManager,
appExport),
queryCommand(),
txCommand(),
keys.Commands(),
@ -79,7 +83,6 @@ func queryCommand() *cobra.Command {
}
cmd.AddCommand(
rpc.ValidatorCommand(),
server.QueryBlockCmd(),
authcmd.QueryTxsByEventsCmd(),
server.QueryBlocksCmd(),
@ -115,20 +118,25 @@ func txCommand() *cobra.Command {
}
// newApp is an appCreator
func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application {
func newApp(
logger log.Logger,
db corestore.KVStoreWithBatch,
traceStore io.Writer,
appOpts servertypes.AppOptions,
) *app.LaconicApp {
var _ = db
baseappOptions := server.DefaultBaseappOptions(appOpts)
app, err := app.NewLaconicApp(logger, db, traceStore, true, appOpts, baseappOptions...)
if err != nil {
panic(err)
}
return app
}
// appExport creates a new app (optionally at a given height) and exports state.
func appExport(
logger log.Logger,
db dbm.DB,
db corestore.KVStoreWithBatch,
traceStore io.Writer,
height int64,
forZeroHeight bool,

View File

@ -11,8 +11,10 @@ import (
"cosmossdk.io/client/v2/autocli"
clientv2keyring "cosmossdk.io/client/v2/autocli/keyring"
"cosmossdk.io/core/address"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
runtime "cosmossdk.io/runtime/v2"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/config"
@ -22,7 +24,6 @@ import (
"github.com/cosmos/cosmos-sdk/server"
serverconfig "github.com/cosmos/cosmos-sdk/server/config"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
"github.com/cosmos/cosmos-sdk/x/auth/tx"
txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
@ -30,33 +31,46 @@ import (
"git.vdb.to/cerc-io/laconicd/app"
"git.vdb.to/cerc-io/laconicd/gql"
"git.vdb.to/cerc-io/laconicd/utils"
)
const EnvPrefix = "LACONIC"
type moduleManager = *runtime.MM[transaction.Tx]
// NewRootCmd creates a new root command for laconicd. It is called once in the
// main function.
func NewRootCmd() *cobra.Command {
var (
txConfigOpts tx.ConfigOptions
autoCliOpts autocli.AppOptions
moduleBasicManager module.BasicManager
clientCtx client.Context
txConfigOpts tx.ConfigOptions
autoCliOpts autocli.AppOptions
moduleManager moduleManager
clientCtx client.Context
)
if err := depinject.Inject(
depinject.Configs(app.AppConfig(),
if err := depinject.InjectDebug(
depinject.Debug(),
depinject.Configs(
app.AppConfig(),
depinject.Supply(
log.NewNopLogger(),
utils.NewAddressCodec,
utils.NewValAddressCodec,
utils.NewConsAddressCodec,
),
runtime.DefaultServiceBindings(),
depinject.Provide(
codec.ProvideInterfaceRegistry,
codec.ProvideAddressCodec,
codec.ProvideProtoCodec,
codec.ProvideLegacyAmino,
ProvideClientContext,
ProvideKeyring,
),
),
&txConfigOpts,
&autoCliOpts,
&moduleBasicManager,
&moduleManager,
&clientCtx,
); err != nil {
panic(err)
@ -86,7 +100,10 @@ func NewRootCmd() *cobra.Command {
// This needs to go after ReadFromClientConfig, as that function ets the RPC client needed for SIGN_MODE_TEXTUAL.
txConfigOpts.EnabledSignModes = append(txConfigOpts.EnabledSignModes, signing.SignMode_SIGN_MODE_TEXTUAL)
txConfigOpts.TextualCoinMetadataQueryFn = txmodule.NewGRPCCoinMetadataQueryFn(clientCtx)
txConfigWithTextual, err := tx.NewTxConfigWithOptions(codec.NewProtoCodec(clientCtx.InterfaceRegistry), txConfigOpts)
txConfigWithTextual, err := tx.NewTxConfigWithOptions(
codec.NewProtoCodec(clientCtx.InterfaceRegistry),
txConfigOpts,
)
if err != nil {
return err
}
@ -104,6 +121,7 @@ func NewRootCmd() *cobra.Command {
// overwrite the block timeout
cmtCfg := cmtcfg.DefaultConfig()
// TODO use FinalizeBlockResponse.next_block_delay
cmtCfg.Consensus.TimeoutCommit = 3 * time.Second
cmtCfg.LogLevel = "*:error,p2p:info,state:info,auction:info,bond:info,registry:info,gql-server:info" // better default logging
@ -111,7 +129,7 @@ func NewRootCmd() *cobra.Command {
},
}
initRootCmd(rootCmd, clientCtx.TxConfig, moduleBasicManager)
initRootCmd(rootCmd, clientCtx.TxConfig, moduleManager)
if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {
panic(err)
@ -127,20 +145,31 @@ func ProvideClientContext(
appCodec codec.Codec,
interfaceRegistry codectypes.InterfaceRegistry,
txConfig client.TxConfig,
legacyAmino *codec.LegacyAmino,
// legacyAmino registry.AminoRegistrar,
addressCodec address.Codec,
validatorAddressCodec address.ValidatorAddressCodec,
consensusAddressCodec address.ConsensusAddressCodec,
) client.Context {
var err error
clientCtx := client.Context{}.
WithCodec(appCodec).
WithInterfaceRegistry(interfaceRegistry).
WithTxConfig(txConfig).
WithLegacyAmino(legacyAmino).
// WithLegacyAmino(amino).
WithInput(os.Stdin).
WithAccountRetriever(types.AccountRetriever{}).
WithAddressCodec(addressCodec).
WithValidatorAddressCodec(validatorAddressCodec).
WithConsensusAddressCodec(consensusAddressCodec).
WithHomeDir(app.DefaultNodeHome).
WithViper(EnvPrefix) // env variable prefix
// Read the config again to overwrite the default values with the values from the config file
clientCtx, _ = config.ReadFromClientConfig(clientCtx)
// Read the config to overwrite the default values with the values from the config file
clientCtx, err = config.CreateClientConfig(clientCtx, "", nil)
if err != nil {
panic(err)
}
// Workaround: Unset clientCtx.HomeDir and clientCtx.KeyringDir from depinject clientCtx as they are given precedence over
// the CLI args (--home flag) in some commands

259
go.mod
View File

@ -1,8 +1,8 @@
module git.vdb.to/cerc-io/laconicd
go 1.21
go 1.23.1
toolchain go1.21.0
toolchain go1.23.2
replace (
// Fix upstream GHSA-h395-qcrw-5vmq vulnerability.
@ -13,23 +13,26 @@ replace (
)
require (
cosmossdk.io/api v0.7.2
cosmossdk.io/api v0.7.6
cosmossdk.io/client/v2 v2.0.0-beta.1
cosmossdk.io/collections v0.4.0
cosmossdk.io/core v0.11.0
cosmossdk.io/depinject v1.0.0-alpha.4
cosmossdk.io/core v1.0.0-alpha.4
cosmossdk.io/depinject v1.0.0
cosmossdk.io/errors v1.0.1
cosmossdk.io/log v1.3.0
cosmossdk.io/math v1.2.0
cosmossdk.io/store v1.0.2
cosmossdk.io/log v1.4.1
cosmossdk.io/math v1.3.0
cosmossdk.io/runtime/v2 v2.0.0-00010101000000-000000000000
cosmossdk.io/server/v2 v2.0.0-20240718121635-a877e3e8048a
cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc
cosmossdk.io/tools/confix v0.1.0
github.com/99designs/gqlgen v0.17.22
github.com/cometbft/cometbft v0.38.2
github.com/cosmos/cosmos-db v1.0.0
github.com/cosmos/cosmos-proto v1.0.0-beta.3
github.com/cosmos/cosmos-sdk v0.50.3
github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
github.com/cometbft/cometbft/api v1.0.0-rc.1
github.com/cosmos/cosmos-db v1.0.3-0.20240911104526-ddc3f09bfc22
github.com/cosmos/cosmos-proto v1.0.0-beta.5
github.com/cosmos/cosmos-sdk v1.0.0
github.com/cosmos/go-bip39 v1.0.0
github.com/cosmos/gogoproto v1.4.11
github.com/cosmos/gogoproto v1.7.0
github.com/deckarep/golang-set v1.8.0
github.com/ethereum/go-ethereum v1.14.5
github.com/gibson042/canonicaljson-go v1.0.3
@ -38,165 +41,235 @@ require (
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/ipfs/go-cid v0.4.1
github.com/ipld/go-ipld-prime v0.21.0
github.com/rs/cors v1.8.3
github.com/spf13/cobra v1.8.0
github.com/spf13/viper v1.17.0
github.com/rs/cors v1.11.1
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/statechannels/go-nitro v0.1.2
github.com/stretchr/testify v1.8.4
github.com/stretchr/testify v1.9.0
github.com/vektah/gqlparser/v2 v2.5.11
golang.org/x/sync v0.7.0
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f
google.golang.org/grpc v1.60.1
google.golang.org/protobuf v1.33.0
golang.org/x/sync v0.8.0
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
google.golang.org/grpc v1.67.1
google.golang.org/protobuf v1.35.1
gopkg.in/yaml.v3 v3.0.1
)
require (
cosmossdk.io/x/tx v0.13.0 // indirect
filippo.io/edwards25519 v1.0.0 // indirect
cosmossdk.io/x/accounts v1.0.0-alpha.4
cosmossdk.io/x/bank v1.0.0-alpha.4
cosmossdk.io/x/consensus v0.0.0-20241007000829-38662ecb209f
cosmossdk.io/x/distribution v0.0.0-20241007000829-38662ecb209f
cosmossdk.io/x/gov v1.0.0-alpha.4
cosmossdk.io/x/mint v0.0.0-20241004153623-489aaae40234
cosmossdk.io/x/params v0.0.0-20241007000829-38662ecb209f
cosmossdk.io/x/protocolpool v1.0.0-alpha.4
cosmossdk.io/x/slashing v0.0.0-20241007000829-38662ecb209f
cosmossdk.io/x/staking v1.0.0-alpha.4
)
require (
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1 // indirect
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1 // indirect
cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29 // indirect
cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect
cosmossdk.io/schema v0.3.1-0.20241010135032-192601639cac // indirect
cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 // indirect
cosmossdk.io/server/v2/stf v0.0.0-00010101000000-000000000000 // indirect
cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 // indirect
cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect
cosmossdk.io/x/tx v0.13.3 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.1 // indirect
github.com/DataDog/datadog-go v3.2.0+incompatible // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
github.com/DataDog/zstd v1.5.5 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.10.0 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/btcsuite/btcd/btcutil v1.1.5 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
github.com/cockroachdb/errors v1.11.1 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.0 // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
github.com/cometbft/cometbft-db v0.9.1 // indirect
github.com/cometbft/cometbft-db v1.0.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
github.com/cosmos/crypto v0.1.2 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
github.com/cosmos/iavl v1.0.0 // indirect
github.com/cosmos/ics23/go v0.10.0 // indirect
github.com/cosmos/iavl v1.3.0 // indirect
github.com/cosmos/ics23/go v0.11.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
github.com/creachadair/atomicfile v0.3.1 // indirect
github.com/creachadair/tomledit v0.0.24 // indirect
github.com/danieljoos/wincred v1.1.2 // indirect
github.com/creachadair/atomicfile v0.3.5 // indirect
github.com/creachadair/tomledit v0.0.26 // indirect
github.com/danieljoos/wincred v1.2.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
github.com/dgraph-io/ristretto v0.1.1 // indirect
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/dgraph-io/badger/v4 v4.3.0 // indirect
github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/emicklei/dot v1.6.0 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/felixge/httpsnoop v1.0.2 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/getsentry/sentry-go v0.25.0 // indirect
github.com/go-kit/kit v0.12.0 // indirect
github.com/dvsekhvalnov/jose2go v1.6.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/getsentry/sentry-go v0.27.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/flatbuffers v2.0.8+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
github.com/gorilla/handlers v1.5.1 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-metrics v0.5.1 // indirect
github.com/hashicorp/go-plugin v1.5.2 // indirect
github.com/hashicorp/go-metrics v0.5.3 // indirect
github.com/hashicorp/go-plugin v1.6.1 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/hdevalence/ed25519consensus v0.1.0 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/holiman/uint256 v1.2.4 // indirect
github.com/huandu/skiplist v1.2.0 // indirect
github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/klauspost/compress v1.17.4 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.7 // indirect
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
github.com/linxGnu/grocksdb v1.8.6 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/linxGnu/grocksdb v1.9.3 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/minio/highwayhash v1.0.2 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/mdp/qrterminal/v3 v3.2.0 // indirect
github.com/minio/highwayhash v1.0.3 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/multiformats/go-base32 v0.1.0 // indirect
github.com/multiformats/go-base36 v0.2.0 // indirect
github.com/multiformats/go-multibase v0.2.0 // indirect
github.com/multiformats/go-multihash v0.2.3 // indirect
github.com/multiformats/go-varint v0.0.7 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/polydawn/refmt v0.89.0 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.45.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.60.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/rs/zerolog v1.31.0 // indirect
github.com/sagikazarmark/locafero v0.3.0 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sasha-s/go-deadlock v0.3.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sasha-s/go-deadlock v0.3.5 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/afero v1.10.0 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/supranational/blst v0.3.13 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/tendermint/go-amino v0.16.0 // indirect
github.com/tidwall/btree v1.7.0 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
go.etcd.io/bbolt v1.3.8 // indirect
gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect
go.opencensus.io v0.24.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect
golang.org/x/crypto v0.28.0 // indirect
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/term v0.25.0 // indirect
golang.org/x/text v0.19.0 // indirect
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gotest.tools/v3 v3.5.1 // indirect
lukechampine.com/blake3 v1.2.1 // indirect
nhooyr.io/websocket v1.8.6 // indirect
pgregory.net/rapid v1.1.0 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
rsc.io/qr v0.2.0 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
replace github.com/statechannels/go-nitro v0.1.2 => github.com/cerc-io/go-nitro v0.1.3-ts-port-0.1.10
// replace (
// cosmossdk.io/core v0.7.6 => github.com/roysc/cosmos-sdk/core v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/api v0.7.6 => github.com/roysc/cosmos-sdk/api v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/client/v2 => github.com/roysc/cosmos-sdk/client/v2 v2.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/store => github.com/roysc/cosmos-sdk/store v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/bank => github.com/roysc/cosmos-sdk/x/bank v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/mint => github.com/roysc/cosmos-sdk/x/mint v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/gov => github.com/roysc/cosmos-sdk/x/gov v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/staking => github.com/roysc/cosmos-sdk/x/staking v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/tx => github.com/roysc/cosmos-sdk/x/tx v0.0.0-20241001191620-a3729c1ad6ba
// cosmossdk.io/x/epochs => github.com/roysc/cosmos-sdk/x/epochs v0.0.0-20241001191620-a3729c1ad6ba
// github.com/cosmos/cosmos-sdk => github.com/roysc/cosmos-sdk v1.0.0-dev
// )
// dev
replace (
// cosmossdk.io/core => ../cosmos-sdk/core
cosmossdk.io/api => ../cosmos-sdk/api
cosmossdk.io/client/v2 => ../cosmos-sdk/client/v2
cosmossdk.io/runtime/v2 => ../cosmos-sdk/runtime/v2
cosmossdk.io/server/v2 => ../cosmos-sdk/server/v2
cosmossdk.io/server/v2/appmanager => ../cosmos-sdk/server/v2/appmanager
cosmossdk.io/server/v2/stf => ../cosmos-sdk/server/v2/stf
cosmossdk.io/store => ../cosmos-sdk/store
cosmossdk.io/store/v2 => ../cosmos-sdk/store/v2
cosmossdk.io/x/accounts => ../cosmos-sdk/x/accounts
cosmossdk.io/x/bank => ../cosmos-sdk/x/bank
cosmossdk.io/x/consensus => ../cosmos-sdk/x/consensus
cosmossdk.io/x/distribution => ../cosmos-sdk/x/distribution
cosmossdk.io/x/epochs => ../cosmos-sdk/x/epochs
cosmossdk.io/x/gov => ../cosmos-sdk/x/gov
cosmossdk.io/x/mint => ../cosmos-sdk/x/mint
cosmossdk.io/x/params => ../cosmos-sdk/x/params
cosmossdk.io/x/protocolpool => ../cosmos-sdk/x/protocolpool
cosmossdk.io/x/slashing => ../cosmos-sdk/x/slashing
cosmossdk.io/x/staking => ../cosmos-sdk/x/staking
cosmossdk.io/x/tx => ../cosmos-sdk/x/tx
github.com/cometbft/cometbft => ../cometbft
github.com/cosmos/cosmos-sdk => ../cosmos-sdk
)

1032
go.sum

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ import (
types "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/query"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
banktypes "cosmossdk.io/x/bank/types"
auctiontypes "git.vdb.to/cerc-io/laconicd/x/auction"
bondtypes "git.vdb.to/cerc-io/laconicd/x/bond"

View File

@ -9,7 +9,6 @@ import (
"github.com/stretchr/testify/suite"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
@ -17,6 +16,7 @@ import (
laconictestcli "git.vdb.to/cerc-io/laconicd/testutil/cli"
"git.vdb.to/cerc-io/laconicd/testutil/network"
"git.vdb.to/cerc-io/laconicd/utils"
types "git.vdb.to/cerc-io/laconicd/x/auction"
"git.vdb.to/cerc-io/laconicd/x/auction/client/cli"
)
@ -80,7 +80,7 @@ func (ets *E2ETestSuite) createAccountWithBalance(accountName string, accountAdd
val.Address,
newAddr,
sdk.NewCoins(sdk.NewCoin(ets.cfg.BondDenom, math.NewInt(200000))),
addresscodec.NewBech32Codec("laconic"),
utils.NewAddressCodec(),
fmt.Sprintf("--%s=%s", flags.FlagFrom, accountName),
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=json", flags.FlagOutput),

View File

@ -7,7 +7,6 @@ import (
"github.com/stretchr/testify/suite"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
@ -15,6 +14,7 @@ import (
laconictestcli "git.vdb.to/cerc-io/laconicd/testutil/cli"
"git.vdb.to/cerc-io/laconicd/testutil/network"
"git.vdb.to/cerc-io/laconicd/utils"
bondtypes "git.vdb.to/cerc-io/laconicd/x/bond"
"git.vdb.to/cerc-io/laconicd/x/bond/client/cli"
)
@ -68,7 +68,7 @@ func (ets *E2ETestSuite) createAccountWithBalance(accountName string, accountAdd
val.Address,
newAddr,
sdk.NewCoins(sdk.NewCoin(ets.cfg.BondDenom, math.NewInt(200000))),
addresscodec.NewBech32Codec("laconic"),
utils.NewAddressCodec(),
fmt.Sprintf("--%s=%s", flags.FlagFrom, accountName),
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=json", flags.FlagOutput),

View File

@ -6,16 +6,16 @@ import (
"cosmossdk.io/log"
pruningtypes "cosmossdk.io/store/pruning/types"
"cosmossdk.io/x/bank"
"cosmossdk.io/x/staking"
dbm "github.com/cosmos/cosmos-db"
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client/flags"
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
"github.com/cosmos/cosmos-sdk/types/module/testutil"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/cosmos/cosmos-sdk/x/staking"
laconicApp "git.vdb.to/cerc-io/laconicd/app"
auctionmodule "git.vdb.to/cerc-io/laconicd/x/auction/module"
@ -58,9 +58,10 @@ func NewTestNetworkFixture() network.TestFixture {
AppConstructor: appCtr,
GenesisState: app.DefaultGenesis(),
EncodingConfig: testutil.MakeTestEncodingConfig(
auth.AppModuleBasic{},
bank.AppModuleBasic{},
staking.AppModuleBasic{},
codectestutil.CodecOptions{},
auth.AppModule{},
bank.AppModule{},
staking.AppModule{},
auctionmodule.AppModule{},
bondmodule.AppModule{},
registrymodule.AppModule{},

View File

@ -9,7 +9,6 @@ import (
"github.com/stretchr/testify/suite"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
@ -17,6 +16,7 @@ import (
laconictestcli "git.vdb.to/cerc-io/laconicd/testutil/cli"
"git.vdb.to/cerc-io/laconicd/testutil/network"
"git.vdb.to/cerc-io/laconicd/utils"
bondtypes "git.vdb.to/cerc-io/laconicd/x/bond"
bondcli "git.vdb.to/cerc-io/laconicd/x/bond/client/cli"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
@ -87,7 +87,7 @@ func (ets *E2ETestSuite) createAccountWithBalance(accountName string, accountAdd
val.Address,
newAddr,
sdk.NewCoins(sdk.NewCoin(ets.cfg.BondDenom, math.NewInt(100000000))),
addresscodec.NewBech32Codec("laconic"),
utils.NewAddressCodec(),
fmt.Sprintf("--%s=%s", flags.FlagFrom, accountName),
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=json", flags.FlagOutput),

View File

@ -6,8 +6,12 @@ import (
"cosmossdk.io/core/appmodule"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
cmtprototypes "github.com/cometbft/cometbft/proto/tendermint/types"
cmtprototypes "github.com/cometbft/cometbft/api/cometbft/types/v1"
"cosmossdk.io/x/bank"
bankkeeper "cosmossdk.io/x/bank/keeper"
banktypes "cosmossdk.io/x/bank/types"
minttypes "cosmossdk.io/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/runtime"
@ -18,10 +22,6 @@ import (
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/bank"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
auctionTypes "git.vdb.to/cerc-io/laconicd/x/auction"
auctionkeeper "git.vdb.to/cerc-io/laconicd/x/auction/keeper"

View File

@ -30,6 +30,12 @@ import (
"cosmossdk.io/math/unsafe"
pruningtypes "cosmossdk.io/store/pruning/types"
_ "cosmossdk.io/x/bank" // import bank as a blank
banktypes "cosmossdk.io/x/bank/types"
_ "cosmossdk.io/x/consensus" // import consensus as a blank
_ "cosmossdk.io/x/params" // import params as a blank
_ "cosmossdk.io/x/staking" // import staking as a blank
stakingtypes "cosmossdk.io/x/staking/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
@ -53,13 +59,7 @@ import (
_ "github.com/cosmos/cosmos-sdk/x/auth" // import auth as a blank
_ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import auth tx config as a blank
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
_ "github.com/cosmos/cosmos-sdk/x/bank" // import bank as a blank
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
_ "github.com/cosmos/cosmos-sdk/x/consensus" // import consensus as a blank
"github.com/cosmos/cosmos-sdk/x/genutil"
_ "github.com/cosmos/cosmos-sdk/x/params" // import params as a blank
_ "github.com/cosmos/cosmos-sdk/x/staking" // import staking as a blank
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)
// package-wide network lock to only allow one test network at a time

View File

@ -25,7 +25,7 @@ import (
servergrpc "github.com/cosmos/cosmos-sdk/server/grpc"
servercmtlog "github.com/cosmos/cosmos-sdk/server/log"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
)

50
utils/address.go Normal file
View File

@ -0,0 +1,50 @@
package utils
import (
"cosmossdk.io/core/address"
errorsmod "cosmossdk.io/errors"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
_ "git.vdb.to/cerc-io/laconicd/app/params" // import for side-effects
)
type addressCodec struct {
bech32codec address.Codec
}
func (ac addressCodec) StringToBytes(text string) ([]byte, error) {
bz, err := ac.bech32codec.StringToBytes(text)
if err != nil {
return nil, err
}
if len(bz) != 20 && len(bz) != 32 {
return nil, errorsmod.Wrapf(sdkerrors.ErrUnknownAddress,
"address length must be 20 or 32 bz, got %d", len(bz))
}
return bz, nil
}
func (ac addressCodec) BytesToString(bz []byte) (string, error) {
return ac.bech32codec.BytesToString(bz)
}
func NewAddressCodec() address.Codec {
return addressCodec{
bech32codec: addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
}
}
func NewValAddressCodec() address.ValidatorAddressCodec {
return addressCodec{
bech32codec: addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
}
}
func NewConsAddressCodec() address.ConsensusAddressCodec {
return addressCodec{
bech32codec: addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()),
}
}

View File

@ -84,7 +84,7 @@ func GetCmdCommitBid() *cobra.Command {
}
// Save reveal file.
err = os.WriteFile(fmt.Sprintf("%s-%s.json", clientCtx.GetFromName(), commitHash), content, 0o600)
err = os.WriteFile(fmt.Sprintf("%s-%s.json", clientCtx.FromName, commitHash), content, 0o600)
if err != nil {
return err
}

View File

@ -1,13 +1,13 @@
package auction
import (
types "github.com/cosmos/cosmos-sdk/codec/types"
"cosmossdk.io/core/registry"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
// RegisterInterfaces registers the interfaces types with the interface registry.
func RegisterInterfaces(registry types.InterfaceRegistry) {
func RegisterInterfaces(registry registry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgCreateAuction{},
&MsgCommitBid{},

View File

@ -1,13 +1,13 @@
package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"context"
"git.vdb.to/cerc-io/laconicd/x/auction"
)
// InitGenesis initializes the module state from a genesis state.
func (k *Keeper) InitGenesis(ctx sdk.Context, data *auction.GenesisState) error {
func (k *Keeper) InitGenesis(ctx context.Context, data *auction.GenesisState) error {
if err := k.Params.Set(ctx, data.Params); err != nil {
return err
}
@ -23,7 +23,7 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *auction.GenesisState) error
}
// ExportGenesis exports the module state to a genesis state.
func (k *Keeper) ExportGenesis(ctx sdk.Context) (*auction.GenesisState, error) {
func (k *Keeper) ExportGenesis(ctx context.Context) (*auction.GenesisState, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err

View File

@ -1,6 +1,7 @@
package keeper
import (
"context"
"encoding/hex"
"encoding/json"
"errors"
@ -15,13 +16,13 @@ import (
"cosmossdk.io/log"
"cosmossdk.io/math"
bank "cosmossdk.io/x/bank/keeper"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
wnsUtils "git.vdb.to/cerc-io/laconicd/utils"
"git.vdb.to/cerc-io/laconicd/utils"
auctiontypes "git.vdb.to/cerc-io/laconicd/x/auction"
)
@ -231,7 +232,7 @@ func (k Keeper) GetBids(ctx sdk.Context, id string) ([]*auctiontypes.Bid, error)
}
// ListAuctions - get all auctions.
func (k Keeper) ListAuctions(ctx sdk.Context) ([]auctiontypes.Auction, error) {
func (k Keeper) ListAuctions(ctx context.Context) ([]auctiontypes.Auction, error) {
iter, err := k.Auctions.Iterate(ctx, nil)
if err != nil {
return nil, err
@ -319,7 +320,7 @@ func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction
return nil, err
}
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
signerAddress, err := utils.NewAddressCodec().StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -327,11 +328,11 @@ func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction
// Generate auction Id.
account := k.accountKeeper.GetAccount(ctx, signerAddress)
if account == nil {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "Account not found.")
return nil, errorsmod.Wrapf(sdkerrors.ErrUnknownAddress, msg.Signer)
}
auctionId := auctiontypes.AuctionId{
Address: signerAddress,
Address: sdk.AccAddress(signerAddress),
AccNum: account.GetAccountNumber(),
Sequence: account.GetSequence(),
}.Generate()
@ -354,7 +355,7 @@ func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction
Id: auctionId,
Kind: msg.Kind,
Status: auctiontypes.AuctionStatusCommitPhase,
OwnerAddress: signerAddress.String(),
OwnerAddress: msg.Signer,
CreateTime: now,
CommitsEndTime: commitsEndTime,
RevealsEndTime: revealsEndTime,
@ -390,7 +391,8 @@ func (k Keeper) CommitBid(ctx sdk.Context, msg auctiontypes.MsgCommitBid) (*auct
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Auction is not in commit phase.")
}
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -403,14 +405,13 @@ func (k Keeper) CommitBid(ctx sdk.Context, msg auctiontypes.MsgCommitBid) (*auct
}
// Check if an old bid already exists, if so, return old bids auction fee (update bid scenario).
bidder := signerAddress.String()
bidExists, err := k.HasBid(ctx, msg.AuctionId, bidder)
bidExists, err := k.HasBid(ctx, msg.AuctionId, msg.Signer)
if err != nil {
return nil, err
}
if bidExists {
oldBid, err := k.GetBid(ctx, msg.AuctionId, bidder)
oldBid, err := k.GetBid(ctx, msg.AuctionId, msg.Signer)
if err != nil {
return nil, err
}
@ -425,7 +426,7 @@ func (k Keeper) CommitBid(ctx sdk.Context, msg auctiontypes.MsgCommitBid) (*auct
// Save new bid.
bid := auctiontypes.Bid{
AuctionId: msg.AuctionId,
BidderAddress: bidder,
BidderAddress: msg.Signer,
Status: auctiontypes.BidStatusCommitted,
CommitHash: msg.CommitHash,
CommitTime: ctx.BlockTime(),
@ -457,13 +458,13 @@ func (k Keeper) RevealBid(ctx sdk.Context, msg auctiontypes.MsgRevealBid) (*auct
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Auction is not in reveal phase.")
}
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
bidder := signerAddress.String()
bidExists, err := k.HasBid(ctx, msg.AuctionId, bidder)
bidExists, err := k.HasBid(ctx, msg.AuctionId, msg.Signer)
if err != nil {
return nil, err
}
@ -472,7 +473,7 @@ func (k Keeper) RevealBid(ctx sdk.Context, msg auctiontypes.MsgRevealBid) (*auct
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Bid not found.")
}
bid, err := k.GetBid(ctx, msg.AuctionId, bidder)
bid, err := k.GetBid(ctx, msg.AuctionId, msg.Signer)
if err != nil {
return nil, err
}
@ -486,7 +487,7 @@ func (k Keeper) RevealBid(ctx sdk.Context, msg auctiontypes.MsgRevealBid) (*auct
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal string.")
}
cid, err := wnsUtils.CIDFromJSONBytes(revealBytes)
cid, err := utils.CIDFromJSONBytes(revealBytes)
if err != nil {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal JSON.")
}
@ -501,26 +502,26 @@ func (k Keeper) RevealBid(ctx sdk.Context, msg auctiontypes.MsgRevealBid) (*auct
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Reveal JSON unmarshal error.")
}
chainId, err := wnsUtils.GetAttributeAsString(reveal, "chainId")
chainId, err := utils.GetAttributeAsString(reveal, "chainId")
if err != nil || chainId != ctx.ChainID() {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal chainID.")
}
auctionId, err := wnsUtils.GetAttributeAsString(reveal, "auctionId")
auctionId, err := utils.GetAttributeAsString(reveal, "auctionId")
if err != nil || auctionId != msg.AuctionId {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal auction Id.")
}
bidderAddress, err := wnsUtils.GetAttributeAsString(reveal, "bidderAddress")
bidderAddress, err := utils.GetAttributeAsString(reveal, "bidderAddress")
if err != nil {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal bid address.")
}
if bidderAddress != signerAddress.String() {
if bidderAddress != msg.Signer {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Reveal bid address mismatch.")
}
bidAmountStr, err := wnsUtils.GetAttributeAsString(reveal, "bidAmount")
bidAmountStr, err := utils.GetAttributeAsString(reveal, "bidAmount")
if err != nil {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid reveal bid amount.")
}
@ -732,8 +733,10 @@ func (k Keeper) pickAuctionWinner(ctx sdk.Context, auction *auctiontypes.Auction
return err
}
addrCodec := utils.NewAddressCodec()
for _, bid := range bids {
bidderAddress, err := sdk.AccAddressFromBech32(bid.BidderAddress)
bidderAddress, err := addrCodec.StringToBytes(bid.BidderAddress)
if err != nil {
k.Logger(ctx).Error(fmt.Sprintf("Invalid bidderAddress address. %v", err))
panic("Invalid bidder address.")
@ -758,7 +761,7 @@ func (k Keeper) pickAuctionWinner(ctx sdk.Context, auction *auctiontypes.Auction
// Process winner account (if nobody bids, there won't be a winner).
if len(auction.WinnerAddresses) != 0 {
winnerAddress, err := sdk.AccAddressFromBech32(auction.WinnerAddresses[0])
winnerAddress, err := addrCodec.StringToBytes(auction.WinnerAddresses[0])
if err != nil {
k.Logger(ctx).Error(fmt.Sprintf("Invalid winner address. %v", err))
panic("Invalid winner address.")
@ -868,8 +871,10 @@ func (k Keeper) pickProviderAuctionWinners(ctx sdk.Context, auction *auctiontype
return err
}
addrCodec := utils.NewAddressCodec()
for _, bid := range bids {
bidderAddress, err := sdk.AccAddressFromBech32(bid.BidderAddress)
bidderAddress, err := addrCodec.StringToBytes(bid.BidderAddress)
if err != nil {
k.Logger(ctx).Error(fmt.Sprintf("Invalid bidderAddress address. %v", err))
panic("Invalid bidder address.")
@ -891,7 +896,7 @@ func (k Keeper) pickProviderAuctionWinners(ctx sdk.Context, auction *auctiontype
totalAmountPaid := auction.WinningPrice.Amount.Mul(math.NewInt(int64(len(auction.WinnerAddresses))))
creatorLeftOverAmount := sdk.NewCoin(auction.MaxPrice.Denom, totalLockedAmount.Sub(totalAmountPaid))
ownerAccAddress, err := sdk.AccAddressFromBech32(auction.OwnerAddress)
ownerAccAddress, err := addrCodec.StringToBytes(auction.OwnerAddress)
if err != nil {
k.Logger(ctx).Error(fmt.Sprintf("Invalid auction owner address. %v", err))
panic("Invalid auction owner address.")
@ -947,9 +952,11 @@ func (k Keeper) ReleaseFunds(ctx sdk.Context, msg auctiontypes.MsgReleaseFunds)
return nil, err
}
addrCodec := utils.NewAddressCodec()
// Process winner accounts.
for _, winnerAddress := range auction.WinnerAddresses {
winnerAccAddress, err := sdk.AccAddressFromBech32(winnerAddress)
winnerAccAddress, err := addrCodec.StringToBytes(winnerAddress)
if err != nil {
k.Logger(ctx).Error(fmt.Sprintf("Invalid winner address. %v", err))
panic("Invalid winner address.")

View File

@ -4,10 +4,11 @@ import (
"context"
errorsmod "cosmossdk.io/errors"
govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"git.vdb.to/cerc-io/laconicd/utils"
auctiontypes "git.vdb.to/cerc-io/laconicd/x/auction"
sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
)
var _ auctiontypes.MsgServer = msgServer{}
@ -25,7 +26,8 @@ func (ms msgServer) CreateAuction(c context.Context, msg *auctiontypes.MsgCreate
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -46,7 +48,7 @@ func (ms msgServer) CreateAuction(c context.Context, msg *auctiontypes.MsgCreate
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, auctiontypes.AttributeValueCategory),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, signerAddress.String()),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, msg.Signer),
),
})
@ -64,7 +66,8 @@ func (ms msgServer) CommitBid(c context.Context, msg *auctiontypes.MsgCommitBid)
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -83,7 +86,7 @@ func (ms msgServer) CommitBid(c context.Context, msg *auctiontypes.MsgCommitBid)
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, auctiontypes.AttributeValueCategory),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, signerAddress.String()),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, msg.Signer),
),
})
@ -101,7 +104,8 @@ func (ms msgServer) RevealBid(c context.Context, msg *auctiontypes.MsgRevealBid)
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -120,7 +124,7 @@ func (ms msgServer) RevealBid(c context.Context, msg *auctiontypes.MsgRevealBid)
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, auctiontypes.AttributeValueCategory),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, signerAddress.String()),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, msg.Signer),
),
})
@ -157,7 +161,8 @@ func (ms msgServer) ReleaseFunds(c context.Context, msg *auctiontypes.MsgRelease
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -175,7 +180,7 @@ func (ms msgServer) ReleaseFunds(c context.Context, msg *auctiontypes.MsgRelease
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, auctiontypes.AttributeValueCategory),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, signerAddress.String()),
sdk.NewAttribute(auctiontypes.AttributeKeySigner, msg.Signer),
),
})

View File

@ -4,12 +4,12 @@ import (
"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/store"
"cosmossdk.io/depinject"
"cosmossdk.io/depinject/appconfig"
bank "cosmossdk.io/x/bank/keeper"
govtypes "cosmossdk.io/x/gov/types"
"github.com/cosmos/cosmos-sdk/codec"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
modulev1 "git.vdb.to/cerc-io/laconicd/api/cerc/auction/module/v1"
"git.vdb.to/cerc-io/laconicd/x/auction"
@ -25,10 +25,10 @@ func (am AppModule) IsOnePerModuleType() {}
func (am AppModule) IsAppModule() {}
func init() {
appmodule.Register(
appconfig.RegisterModule(
&modulev1.Module{},
appmodule.Provide(ProvideModule),
appmodule.Invoke(InvokeSetAuctionHooks),
appconfig.Provide(ProvideModule),
appconfig.Invoke(InvokeSetAuctionHooks),
)
}

View File

@ -5,15 +5,15 @@ import (
"encoding/json"
"fmt"
"cosmossdk.io/core/appmodule"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"cosmossdk.io/client/v2/autocli"
appmodule "cosmossdk.io/core/appmodule/v2"
"cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"git.vdb.to/cerc-io/laconicd/x/auction"
"git.vdb.to/cerc-io/laconicd/x/auction/client/cli"
@ -21,13 +21,18 @@ import (
)
var (
_ module.AppModuleBasic = AppModule{}
_ appmodule.AppModule = AppModule{}
_ module.HasGenesis = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasConsensusVersion = AppModule{}
_ appmodule.HasEndBlocker = AppModule{}
_ module.HasInvariants = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasGenesis = AppModule{}
_ appmodule.HasConsensusVersion = AppModule{}
_ appmodule.HasRegisterInterfaces = AppModule{}
_ appmodule.HasEndBlocker = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasInvariants = AppModule{}
// _ module.HasAminoCodec = AppModule{} // TODO
_ autocli.HasCustomTxCommand = AppModule{}
)
// ConsensusVersion defines the current module consensus version
@ -46,18 +51,12 @@ func NewAppModule(cdc codec.Codec, keeper *keeper.Keeper) AppModule {
}
}
func NewAppModuleBasic(m AppModule) module.AppModuleBasic {
return module.CoreAppModuleBasicAdaptor(m.Name(), m)
}
// module.AppModuleBasic
// module.AppModule
// Name returns the auction module's name.
func (AppModule) Name() string { return auction.ModuleName }
// RegisterLegacyAminoCodec registers the auction module's types on the LegacyAmino codec.
// New modules do not need to support Amino.
func (AppModule) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}
// module.HasGRPCGateway
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the auction module.
func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) {
@ -66,25 +65,29 @@ func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwrunt
}
}
// appmodule.HasRegisterInterfaces
// RegisterInterfaces registers interfaces and implementations of the auction module.
func (AppModule) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
func (AppModule) RegisterInterfaces(registry registry.InterfaceRegistrar) {
auction.RegisterInterfaces(registry)
}
// appmodule.HasConsensusVersion
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion }
// module.HasGenesis
// DefaultGenesis returns default genesis state as raw bytes for the module.
func (AppModule) DefaultGenesis(jsonCodec codec.JSONCodec) json.RawMessage {
return jsonCodec.MustMarshalJSON(auction.DefaultGenesisState())
func (am AppModule) DefaultGenesis() json.RawMessage {
return am.cdc.MustMarshalJSON(auction.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the module.
func (AppModule) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, message json.RawMessage) error {
func (am AppModule) ValidateGenesis(message json.RawMessage) error {
var data auction.GenesisState
if err := cdc.UnmarshalJSON(message, &data); err != nil {
if err := am.cdc.UnmarshalJSON(message, &data); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", auction.ModuleName, err)
}
@ -93,24 +96,25 @@ func (AppModule) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingCo
// InitGenesis performs genesis initialization for the auction module.
// It returns no validator updates.
func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState auction.GenesisState
cdc.MustUnmarshalJSON(data, &genesisState)
am.cdc.MustUnmarshalJSON(data, &genesisState)
if err := am.keeper.InitGenesis(ctx, &genesisState); err != nil {
panic(fmt.Sprintf("failed to initialize %s genesis state: %v", auction.ModuleName, err))
return fmt.Errorf("failed to initialize %s genesis state: %w", auction.ModuleName, err)
}
return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the circuit
// module.
func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs, err := am.keeper.ExportGenesis(ctx)
if err != nil {
panic(fmt.Sprintf("failed to export %s genesis state: %v", auction.ModuleName, err))
return nil, fmt.Errorf("failed to export %s genesis state: %w", auction.ModuleName, err)
}
return cdc.MustMarshalJSON(gs)
return am.cdc.MustMarshalJSON(gs), nil
}
// module.HasServices
@ -133,6 +137,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
keeper.RegisterInvariants(ir, am.keeper)
}
// autocli.HasCustomTxCommand
// Get the root tx command of this module
func (AppModule) GetTxCmd() *cobra.Command {
return cli.GetTxCmd()

View File

@ -1,13 +1,13 @@
package bond
import (
types "github.com/cosmos/cosmos-sdk/codec/types"
"cosmossdk.io/core/registry"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
// RegisterInterfaces registers the interfaces types with the interface registry.
func RegisterInterfaces(registry types.InterfaceRegistry) {
func RegisterInterfaces(registry registry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgCreateBond{},
&MsgRefillBond{},

View File

@ -1,14 +1,12 @@
package bond
import (
sdk "github.com/cosmos/cosmos-sdk/types"
)
import context "context"
// BondUsageKeeper keep track of bond usage in other modules.
// Used to, for example, prevent deletion of a bond that's in use.
type BondUsageKeeper interface {
ModuleName() string
UsesBond(ctx sdk.Context, bondId string) bool
UsesBond(ctx context.Context, bondId string) bool
}
// BondHooksWrapper is a wrapper for modules to inject BondUsageKeeper using depinject.

View File

@ -1,12 +1,13 @@
package keeper
import (
"context"
"git.vdb.to/cerc-io/laconicd/x/bond"
sdk "github.com/cosmos/cosmos-sdk/types"
)
// InitGenesis initializes the module state from a genesis state.
func (k *Keeper) InitGenesis(ctx sdk.Context, data *bond.GenesisState) error {
func (k *Keeper) InitGenesis(ctx context.Context, data *bond.GenesisState) error {
if err := k.Params.Set(ctx, data.Params); err != nil {
return err
}
@ -22,7 +23,7 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *bond.GenesisState) error {
}
// ExportGenesis exports the module state to a genesis state.
func (k *Keeper) ExportGenesis(ctx sdk.Context) (*bond.GenesisState, error) {
func (k *Keeper) ExportGenesis(ctx context.Context) (*bond.GenesisState, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err

View File

@ -1,6 +1,7 @@
package keeper
import (
"context"
"crypto/sha256"
"encoding/hex"
"errors"
@ -12,11 +13,11 @@ import (
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/log"
bank "cosmossdk.io/x/bank/keeper"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
bondtypes "git.vdb.to/cerc-io/laconicd/x/bond"
)
@ -119,13 +120,14 @@ type BondId struct {
// Generate creates the bond Id.
func (bondId BondId) Generate() string {
hasher := sha256.New()
// TODO use address.codec
str := fmt.Sprintf("%s:%d:%d", bondId.Address.String(), bondId.AccNum, bondId.Sequence)
hasher.Write([]byte(str))
return hex.EncodeToString(hasher.Sum(nil))
}
// HasBond - checks if a bond by the given Id exists.
func (k Keeper) HasBond(ctx sdk.Context, id string) (bool, error) {
func (k Keeper) HasBond(ctx context.Context, id string) (bool, error) {
has, err := k.Bonds.Has(ctx, id)
if err != nil {
return false, err
@ -135,17 +137,17 @@ func (k Keeper) HasBond(ctx sdk.Context, id string) (bool, error) {
}
// SaveBond - saves a bond to the store.
func (k Keeper) SaveBond(ctx sdk.Context, bond *bondtypes.Bond) error {
func (k Keeper) SaveBond(ctx context.Context, bond *bondtypes.Bond) error {
return k.Bonds.Set(ctx, bond.Id, *bond)
}
// DeleteBond - deletes the bond.
func (k Keeper) DeleteBond(ctx sdk.Context, bond bondtypes.Bond) error {
func (k Keeper) DeleteBond(ctx context.Context, bond bondtypes.Bond) error {
return k.Bonds.Remove(ctx, bond.Id)
}
// ListBonds - get all bonds.
func (k Keeper) ListBonds(ctx sdk.Context) ([]*bondtypes.Bond, error) {
func (k Keeper) ListBonds(ctx context.Context) ([]*bondtypes.Bond, error) {
var bonds []*bondtypes.Bond
iter, err := k.Bonds.Iterate(ctx, nil)
@ -165,7 +167,7 @@ func (k Keeper) ListBonds(ctx sdk.Context) ([]*bondtypes.Bond, error) {
return bonds, nil
}
func (k Keeper) GetBondById(ctx sdk.Context, id string) (bondtypes.Bond, error) {
func (k Keeper) GetBondById(ctx context.Context, id string) (bondtypes.Bond, error) {
bond, err := k.Bonds.Get(ctx, id)
if err != nil {
if errors.Is(err, collections.ErrNotFound) {
@ -177,7 +179,7 @@ func (k Keeper) GetBondById(ctx sdk.Context, id string) (bondtypes.Bond, error)
return bond, nil
}
func (k Keeper) GetBondsByOwner(ctx sdk.Context, owner string) ([]bondtypes.Bond, error) {
func (k Keeper) GetBondsByOwner(ctx context.Context, owner string) ([]bondtypes.Bond, error) {
iter, err := k.Bonds.Indexes.Owner.MatchExact(ctx, owner)
if err != nil {
return []bondtypes.Bond{}, err
@ -187,7 +189,7 @@ func (k Keeper) GetBondsByOwner(ctx sdk.Context, owner string) ([]bondtypes.Bond
}
// GetBondModuleBalances gets the bond module account(s) balances.
func (k Keeper) GetBondModuleBalances(ctx sdk.Context) sdk.Coins {
func (k Keeper) GetBondModuleBalances(ctx context.Context) sdk.Coins {
moduleAddress := k.accountKeeper.GetModuleAddress(bondtypes.ModuleName)
balances := k.bankKeeper.GetAllBalances(ctx, moduleAddress)
@ -195,7 +197,7 @@ func (k Keeper) GetBondModuleBalances(ctx sdk.Context) sdk.Coins {
}
// CreateBond creates a new bond.
func (k Keeper) CreateBond(ctx sdk.Context, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
func (k Keeper) CreateBond(ctx context.Context, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
// Check if account has funds.
for _, coin := range coins {
balance := k.bankKeeper.HasBalance(ctx, ownerAddress, coin)
@ -237,7 +239,7 @@ func (k Keeper) CreateBond(ctx sdk.Context, ownerAddress sdk.AccAddress, coins s
return &bond, nil
}
func (k Keeper) RefillBond(ctx sdk.Context, id string, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
func (k Keeper) RefillBond(ctx context.Context, id string, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
if has, err := k.HasBond(ctx, id); !has {
if err != nil {
return nil, err
@ -287,7 +289,7 @@ func (k Keeper) RefillBond(ctx sdk.Context, id string, ownerAddress sdk.AccAddre
return &bond, nil
}
func (k Keeper) WithdrawBond(ctx sdk.Context, id string, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
func (k Keeper) WithdrawBond(ctx context.Context, id string, ownerAddress sdk.AccAddress, coins sdk.Coins) (*bondtypes.Bond, error) {
if has, err := k.HasBond(ctx, id); !has {
if err != nil {
return nil, err
@ -325,7 +327,7 @@ func (k Keeper) WithdrawBond(ctx sdk.Context, id string, ownerAddress sdk.AccAdd
return &bond, nil
}
func (k Keeper) CancelBond(ctx sdk.Context, id string, ownerAddress sdk.AccAddress) (*bondtypes.Bond, error) {
func (k Keeper) CancelBond(ctx context.Context, id string, ownerAddress sdk.AccAddress) (*bondtypes.Bond, error) {
if has, err := k.HasBond(ctx, id); !has {
if err != nil {
return nil, err
@ -370,7 +372,7 @@ func (k Keeper) GetAuthority() string {
}
// GetParams gets the bond module's parameters.
func (k Keeper) GetParams(ctx sdk.Context) (*bondtypes.Params, error) {
func (k Keeper) GetParams(ctx context.Context) (*bondtypes.Params, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err
@ -380,11 +382,11 @@ func (k Keeper) GetParams(ctx sdk.Context) (*bondtypes.Params, error) {
}
// SetParams sets the x/bond module parameters.
func (k Keeper) SetParams(ctx sdk.Context, params bondtypes.Params) error {
func (k Keeper) SetParams(ctx context.Context, params bondtypes.Params) error {
return k.Params.Set(ctx, params)
}
func (k Keeper) getMaxBondAmount(ctx sdk.Context) (sdk.Coins, error) {
func (k Keeper) getMaxBondAmount(ctx context.Context) (sdk.Coins, error) {
params, err := k.GetParams(ctx)
if err != nil {
return nil, err
@ -395,7 +397,7 @@ func (k Keeper) getMaxBondAmount(ctx sdk.Context) (sdk.Coins, error) {
}
// TransferCoinsToModuleAccount moves funds from the bonds module account to another module account.
func (k Keeper) TransferCoinsToModuleAccount(ctx sdk.Context, id, moduleAccount string, coins sdk.Coins) error {
func (k Keeper) TransferCoinsToModuleAccount(ctx context.Context, id, moduleAccount string, coins sdk.Coins) error {
if has, err := k.HasBond(ctx, id); !has {
if err != nil {
return err

View File

@ -4,8 +4,8 @@ import (
"context"
errorsmod "cosmossdk.io/errors"
govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"git.vdb.to/cerc-io/laconicd/utils"
"git.vdb.to/cerc-io/laconicd/x/bond"
@ -30,7 +30,8 @@ func (ms msgServer) CreateBond(c context.Context, msg *bond.MsgCreateBond) (*bon
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -67,7 +68,8 @@ func (ms msgServer) RefillBond(c context.Context, msg *bond.MsgRefillBond) (*bon
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -105,7 +107,8 @@ func (ms msgServer) WithdrawBond(c context.Context, msg *bond.MsgWithdrawBond) (
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -143,7 +146,8 @@ func (ms msgServer) CancelBond(c context.Context, msg *bond.MsgCancelBond) (*bon
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}

View File

@ -4,12 +4,12 @@ import (
"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/store"
"cosmossdk.io/depinject"
"cosmossdk.io/depinject/appconfig"
bank "cosmossdk.io/x/bank/keeper"
govtypes "cosmossdk.io/x/gov/types"
"github.com/cosmos/cosmos-sdk/codec"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
modulev1 "git.vdb.to/cerc-io/laconicd/api/cerc/bond/module/v1"
"git.vdb.to/cerc-io/laconicd/x/bond"
@ -25,10 +25,10 @@ func (am AppModule) IsOnePerModuleType() {}
func (am AppModule) IsAppModule() {}
func init() {
appmodule.Register(
appconfig.RegisterModule(
&modulev1.Module{},
appmodule.Provide(ProvideModule),
appmodule.Invoke(InvokeSetBondHooks),
appconfig.Provide(ProvideModule),
appconfig.Invoke(InvokeSetBondHooks),
)
}

View File

@ -5,26 +5,28 @@ import (
"encoding/json"
"fmt"
"cosmossdk.io/core/appmodule"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
appmodule "cosmossdk.io/core/appmodule/v2"
"cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"git.vdb.to/cerc-io/laconicd/x/bond"
"git.vdb.to/cerc-io/laconicd/x/bond/keeper"
)
var (
_ module.AppModuleBasic = AppModule{}
_ appmodule.AppModule = AppModule{}
_ module.HasGenesis = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasConsensusVersion = AppModule{}
_ module.HasInvariants = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasGenesis = AppModule{}
_ appmodule.HasConsensusVersion = AppModule{}
_ appmodule.HasRegisterInterfaces = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasInvariants = AppModule{}
// _ module.HasAminoCodec = AppModule{} // TODO
)
// ConsensusVersion defines the current module consensus version
@ -43,18 +45,12 @@ func NewAppModule(cdc codec.Codec, keeper *keeper.Keeper) AppModule {
}
}
func NewAppModuleBasic(m AppModule) module.AppModuleBasic {
return module.CoreAppModuleBasicAdaptor(m.Name(), m)
}
// module.AppModuleBasic
// module.AppModule
// Name returns the bond module's name.
func (AppModule) Name() string { return bond.ModuleName }
// RegisterLegacyAminoCodec registers the bond module's types on the LegacyAmino codec.
// New modules do not need to support Amino.
func (AppModule) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}
// module.HasGRPCGateway
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the bond module.
func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) {
@ -63,25 +59,29 @@ func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwrunt
}
}
// appmodule.HasRegisterInterfaces
// RegisterInterfaces registers interfaces and implementations of the bond module.
func (AppModule) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
func (AppModule) RegisterInterfaces(registry registry.InterfaceRegistrar) {
bond.RegisterInterfaces(registry)
}
// appmodule.HasConsensusVersion
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion }
// module.HasGenesis
// appmodule.HasGenesis
// DefaultGenesis returns default genesis state as raw bytes for the module.
func (AppModule) DefaultGenesis(jsonCodec codec.JSONCodec) json.RawMessage {
return jsonCodec.MustMarshalJSON(bond.DefaultGenesisState())
func (am AppModule) DefaultGenesis() json.RawMessage {
return am.cdc.MustMarshalJSON(bond.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the module.
func (AppModule) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, message json.RawMessage) error {
func (am AppModule) ValidateGenesis(message json.RawMessage) error {
var data bond.GenesisState
if err := cdc.UnmarshalJSON(message, &data); err != nil {
if err := am.cdc.UnmarshalJSON(message, &data); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", bond.ModuleName, err)
}
@ -90,24 +90,25 @@ func (AppModule) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingCo
// InitGenesis performs genesis initialization for the bond module.
// It returns no validator updates.
func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState bond.GenesisState
cdc.MustUnmarshalJSON(data, &genesisState)
am.cdc.MustUnmarshalJSON(data, &genesisState)
if err := am.keeper.InitGenesis(ctx, &genesisState); err != nil {
panic(fmt.Sprintf("failed to initialize %s genesis state: %v", bond.ModuleName, err))
return fmt.Errorf("failed to initialize %s genesis state: %w", bond.ModuleName, err)
}
return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the circuit
// module.
func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs, err := am.keeper.ExportGenesis(ctx)
if err != nil {
panic(fmt.Sprintf("failed to export %s genesis state: %v", bond.ModuleName, err))
}
return cdc.MustMarshalJSON(gs)
return am.cdc.MustMarshalJSON(gs), nil
}
// module.HasServices

View File

@ -1,13 +1,13 @@
package onboarding
import (
types "github.com/cosmos/cosmos-sdk/codec/types"
"cosmossdk.io/core/registry"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
// RegisterInterfaces registers the interfaces types with the interface registry.
func RegisterInterfaces(registry types.InterfaceRegistry) {
func RegisterInterfaces(registry registry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgOnboardParticipant{},
)

View File

@ -28,7 +28,8 @@ func (ms msgServer) OnboardParticipant(c context.Context, msg *onboarding.MsgOnb
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
signerAddress, err := sdk.AccAddressFromBech32(msg.Participant)
addrCodec := utils.NewAddressCodec()
signerAddress, err := addrCodec.StringToBytes(msg.Participant)
if err != nil {
return nil, err
}

View File

@ -2,10 +2,10 @@ package module
import (
"cosmossdk.io/core/address"
"cosmossdk.io/core/appmodule"
appmodule "cosmossdk.io/core/appmodule/v2"
"cosmossdk.io/core/store"
"cosmossdk.io/depinject"
"cosmossdk.io/depinject/appconfig"
"github.com/cosmos/cosmos-sdk/codec"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
@ -22,9 +22,9 @@ func (am AppModule) IsOnePerModuleType() {}
func (am AppModule) IsAppModule() {}
func init() {
appmodule.Register(
appconfig.RegisterModule(
&modulev1.Module{},
appmodule.Provide(ProvideModule),
appconfig.Provide(ProvideModule),
)
}

View File

@ -5,23 +5,26 @@ import (
"encoding/json"
"fmt"
"cosmossdk.io/core/appmodule"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
appmodule "cosmossdk.io/core/appmodule/v2"
"cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"git.vdb.to/cerc-io/laconicd/x/onboarding"
"git.vdb.to/cerc-io/laconicd/x/onboarding/keeper"
)
var (
_ module.AppModuleBasic = AppModule{}
_ module.HasGenesis = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasGenesis = AppModule{}
_ appmodule.HasConsensusVersion = AppModule{}
_ appmodule.HasRegisterInterfaces = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.HasServices = AppModule{}
// _ module.HasAminoCodec = AppModule{} // TODO
)
// ConsensusVersion defines the current module consensus version.
@ -40,16 +43,12 @@ func NewAppModule(cdc codec.Codec, keeper *keeper.Keeper) AppModule {
}
}
func NewAppModuleBasic(m AppModule) module.AppModuleBasic {
return module.CoreAppModuleBasicAdaptor(m.Name(), m)
}
// module.AppModule
// Name returns the onboarding module's name.
func (AppModule) Name() string { return onboarding.ModuleName }
// RegisterLegacyAminoCodec registers the onboarding module's types on the LegacyAmino codec.
// New modules do not need to support Amino.
func (AppModule) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}
// module.HasGRPCGateway
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the onboarding module.
func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) {
@ -58,14 +57,20 @@ func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwrunt
}
}
// appmodule.HasRegisterInterfaces
// RegisterInterfaces registers interfaces and implementations of the onboarding module.
func (AppModule) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
func (AppModule) RegisterInterfaces(registry registry.InterfaceRegistrar) {
onboarding.RegisterInterfaces(registry)
}
// appmodule.HasConsensusVersion
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion }
// module.HasServices
// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries.
func (am AppModule) RegisterServices(cfg module.Configurator) {
// Register servers
@ -80,14 +85,14 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
}
// DefaultGenesis returns default genesis state as raw bytes for the module.
func (AppModule) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
return cdc.MustMarshalJSON(onboarding.DefaultGenesisState())
func (am AppModule) DefaultGenesis() json.RawMessage {
return am.cdc.MustMarshalJSON(onboarding.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the circuit module.
func (AppModule) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error {
func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var data onboarding.GenesisState
if err := cdc.UnmarshalJSON(bz, &data); err != nil {
if err := am.cdc.UnmarshalJSON(bz, &data); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", onboarding.ModuleName, err)
}
@ -96,22 +101,23 @@ func (AppModule) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig,
// InitGenesis performs genesis initialization for the onboarding module.
// It returns no validator updates.
func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState onboarding.GenesisState
cdc.MustUnmarshalJSON(data, &genesisState)
am.cdc.MustUnmarshalJSON(data, &genesisState)
if err := am.keeper.InitGenesis(ctx, &genesisState); err != nil {
panic(fmt.Sprintf("failed to initialize %s genesis state: %v", onboarding.ModuleName, err))
return fmt.Errorf("failed to initialize %s genesis state: %w", onboarding.ModuleName, err)
}
return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the circuit
// module.
func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs, err := am.keeper.ExportGenesis(ctx)
if err != nil {
panic(fmt.Sprintf("failed to export %s genesis state: %v", onboarding.ModuleName, err))
return nil, fmt.Errorf("failed to export %s genesis state: %w", onboarding.ModuleName, err)
}
return cdc.MustMarshalJSON(gs)
return am.cdc.MustMarshalJSON(gs), nil
}

View File

@ -8,12 +8,12 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/version"
"gopkg.in/yaml.v3"
"github.com/spf13/cobra"
"git.vdb.to/cerc-io/laconicd/utils"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
)
@ -97,7 +97,7 @@ func GetCmdReserveAuthority() *cobra.Command {
return err
}
ownerAddress, err := sdk.AccAddressFromBech32(args[1])
ownerAddress, err := utils.NewAddressCodec().StringToBytes(args[1])
if err != nil {
return err
}

View File

@ -1,12 +1,12 @@
package registry
import (
"github.com/cosmos/cosmos-sdk/codec/types"
"cosmossdk.io/core/registry"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
func RegisterInterfaces(registry types.InterfaceRegistry) {
func RegisterInterfaces(registry registry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgSetName{},
&MsgReserveAuthority{},

View File

@ -1,6 +1,8 @@
package keeper
import (
"context"
"errors"
"time"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -9,7 +11,12 @@ import (
)
// InitGenesis initializes the module state from a genesis state.
func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error {
func (k *Keeper) InitGenesis(ctx_ context.Context, data *registry.GenesisState) error {
ctx, ok := sdk.TryUnwrapSDKContext(ctx_)
if !ok {
return errors.New("failed to unwrap sdk.Context")
}
if err := k.Params.Set(ctx, data.Params); err != nil {
return err
}
@ -18,13 +25,11 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error
if err := k.SaveRecord(ctx, record); err != nil {
return err
}
// Add to record expiry queue if expiry time is in the future.
expiryTime, err := time.Parse(time.RFC3339, record.ExpiryTime)
if err != nil {
return err
}
if expiryTime.After(ctx.BlockTime()) {
if err := k.insertRecordExpiryQueue(ctx, record); err != nil {
return err
@ -38,7 +43,6 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error
if err := k.SaveNameAuthority(ctx, authority.Name, authority.Entry); err != nil {
return err
}
// Add authority name to expiry queue.
if err := k.insertAuthorityExpiryQueue(ctx, authority.Name, authority.Entry.ExpiryTime); err != nil {
return err
@ -51,27 +55,28 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error
return err
}
}
return nil
}
// ExportGenesis exports the module state to a genesis state.
func (k *Keeper) ExportGenesis(ctx sdk.Context) (*registry.GenesisState, error) {
func (k *Keeper) ExportGenesis(ctx_ context.Context) (*registry.GenesisState, error) {
ctx, ok := sdk.TryUnwrapSDKContext(ctx_)
if !ok {
return nil, errors.New("failed to unwrap sdk.Context")
}
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err
}
records, _, err := k.PaginatedListRecords(ctx, nil)
if err != nil {
return nil, err
}
authorityEntries, err := k.ListNameAuthorityRecords(ctx, "")
if err != nil {
return nil, err
}
names, err := k.ListNameRecords(ctx)
if err != nil {
return nil, err

View File

@ -12,13 +12,13 @@ import (
storetypes "cosmossdk.io/core/store"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/log"
bank "cosmossdk.io/x/bank/keeper"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/legacy"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/types/query"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
"github.com/gibson042/canonicaljson-go"
cid "github.com/ipfs/go-cid"
"github.com/ipld/go-ipld-prime"

View File

@ -4,8 +4,8 @@ import (
"context"
errorsmod "cosmossdk.io/errors"
govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"git.vdb.to/cerc-io/laconicd/utils"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
@ -30,7 +30,8 @@ func (ms msgServer) SetRecord(c context.Context, msg *registrytypes.MsgSetRecord
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -68,7 +69,8 @@ func (ms msgServer) SetName(c context.Context, msg *registrytypes.MsgSetName) (*
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -105,11 +107,12 @@ func (ms msgServer) ReserveAuthority(c context.Context, msg *registrytypes.MsgRe
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
_, err = sdk.AccAddressFromBech32(msg.Owner)
_, err = addrCodec.StringToBytes(msg.Owner)
if err != nil {
return nil, err
}
@ -147,7 +150,8 @@ func (ms msgServer) SetAuthorityBond(c context.Context, msg *registrytypes.MsgSe
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -184,7 +188,8 @@ func (ms msgServer) DeleteName(c context.Context, msg *registrytypes.MsgDeleteNa
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -220,7 +225,8 @@ func (ms msgServer) RenewRecord(c context.Context, msg *registrytypes.MsgRenewRe
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -257,7 +263,8 @@ func (ms msgServer) AssociateBond(c context.Context, msg *registrytypes.MsgAssoc
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -294,7 +301,8 @@ func (ms msgServer) DissociateBond(c context.Context, msg *registrytypes.MsgDiss
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -333,7 +341,8 @@ func (ms msgServer) DissociateRecords(
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}
@ -369,7 +378,8 @@ func (ms msgServer) ReassociateRecords(c context.Context, msg *registrytypes.Msg
ctx := sdk.UnwrapSDKContext(c)
ctx = *utils.CtxWithCustomKVGasConfig(&ctx)
_, err := sdk.AccAddressFromBech32(msg.Signer)
addrCodec := utils.NewAddressCodec()
_, err := addrCodec.StringToBytes(msg.Signer)
if err != nil {
return nil, err
}

View File

@ -15,6 +15,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"git.vdb.to/cerc-io/laconicd/utils"
auctiontypes "git.vdb.to/cerc-io/laconicd/x/auction"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
"git.vdb.to/cerc-io/laconicd/x/registry/helpers"
@ -150,7 +151,7 @@ func (k Keeper) SaveNameRecord(ctx sdk.Context, lrn string, id string) error {
// SetName creates a LRN -> Record ID mapping.
func (k Keeper) SetName(ctx sdk.Context, msg registrytypes.MsgSetName) error {
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
signerAddress, err := utils.NewAddressCodec().StringToBytes(msg.Signer)
if err != nil {
return err
}
@ -260,7 +261,7 @@ func (k Keeper) createAuthority(ctx sdk.Context, name string, owner string, isRo
}
}
ownerAddress, err := sdk.AccAddressFromBech32(owner)
ownerAddress, err := utils.NewAddressCodec().StringToBytes(owner)
if err != nil {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Invalid owner address.")
}
@ -369,7 +370,7 @@ func (k Keeper) SetAuthorityBond(ctx sdk.Context, msg registrytypes.MsgSetAuthor
// DeleteName removes a LRN -> Record ID mapping.
func (k Keeper) DeleteName(ctx sdk.Context, msg registrytypes.MsgDeleteName) error {
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
signerAddress, err := utils.NewAddressCodec().StringToBytes(msg.Signer)
if err != nil {
return err
}

View File

@ -1,12 +1,13 @@
package keeper
import (
"context"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
sdk "github.com/cosmos/cosmos-sdk/types"
)
// GetParams - Get all parameters as types.Params.
func (k Keeper) GetParams(ctx sdk.Context) (*registrytypes.Params, error) {
func (k Keeper) GetParams(ctx context.Context) (*registrytypes.Params, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err

View File

@ -1,6 +1,7 @@
package keeper
import (
"context"
"errors"
"fmt"
"time"
@ -130,7 +131,7 @@ func (rk RecordKeeper) OnAuctionWinnerSelected(ctx sdk.Context, auctionId string
}
// UsesBond returns true if the bond has associated records.
func (rk RecordKeeper) UsesBond(ctx sdk.Context, bondId string) bool {
func (rk RecordKeeper) UsesBond(ctx context.Context, bondId string) bool {
iter, err := rk.k.Records.Indexes.BondId.MatchExact(ctx, bondId)
if err != nil {
panic(err)

View File

@ -4,12 +4,12 @@ import (
"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/store"
"cosmossdk.io/depinject"
"cosmossdk.io/depinject/appconfig"
bank "cosmossdk.io/x/bank/keeper"
govtypes "cosmossdk.io/x/gov/types"
"github.com/cosmos/cosmos-sdk/codec"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
modulev1 "git.vdb.to/cerc-io/laconicd/api/cerc/registry/module/v1"
"git.vdb.to/cerc-io/laconicd/x/auction"
@ -28,9 +28,9 @@ func (am AppModule) IsOnePerModuleType() {}
func (am AppModule) IsAppModule() {}
func init() {
appmodule.Register(
appconfig.Register(
&modulev1.Module{},
appmodule.Provide(ProvideModule),
appconfig.Provide(ProvideModule),
)
}

View File

@ -5,15 +5,15 @@ import (
"encoding/json"
"fmt"
"cosmossdk.io/client/v2/autocli"
"cosmossdk.io/core/appmodule"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
registrytypes "git.vdb.to/cerc-io/laconicd/x/registry"
"git.vdb.to/cerc-io/laconicd/x/registry/client/cli"
@ -21,13 +21,18 @@ import (
)
var (
_ module.AppModuleBasic = AppModule{}
_ appmodule.AppModule = AppModule{}
_ module.HasGenesis = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasConsensusVersion = AppModule{}
_ appmodule.HasEndBlocker = AppModule{}
_ module.HasInvariants = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasEndBlocker = AppModule{}
_ appmodule.HasGenesis = AppModule{}
_ appmodule.HasConsensusVersion = AppModule{}
_ appmodule.HasRegisterInterfaces = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasInvariants = AppModule{}
// _ module.HasAminoCodec = AppModule{} // TODO
_ autocli.HasCustomTxCommand = AppModule{}
)
// ConsensusVersion defines the current module consensus version.
@ -46,18 +51,12 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule {
}
}
func NewAppModuleBasic(m AppModule) module.AppModuleBasic {
return module.CoreAppModuleBasicAdaptor(m.Name(), m)
}
// module.AppModuleBasic
// module.AppModule
// Name returns the registry module's name.
func (AppModule) Name() string { return registrytypes.ModuleName }
// RegisterLegacyAminoCodec registers the registry module's types on the LegacyAmino codec.
// New modules do not need to support Amino.
func (AppModule) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}
// module.HasGRPCGateway
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the registry module.
func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) {
@ -66,25 +65,27 @@ func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwrunt
}
}
// appmodule.HasRegisterInterfaces
// RegisterInterfaces registers interfaces and implementations of the registry module.
func (AppModule) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
func (AppModule) RegisterInterfaces(registry registry.InterfaceRegistrar) {
registrytypes.RegisterInterfaces(registry)
}
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion }
// module.HasGenesis
// appmodule.HasGenesis
// DefaultGenesis returns default genesis state as raw bytes for the module.
func (AppModule) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
return cdc.MustMarshalJSON(registrytypes.DefaultGenesisState())
func (am AppModule) DefaultGenesis() json.RawMessage {
return am.cdc.MustMarshalJSON(registrytypes.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the circuit module.
func (AppModule) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error {
func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var data registrytypes.GenesisState
if err := cdc.UnmarshalJSON(bz, &data); err != nil {
if err := am.cdc.UnmarshalJSON(bz, &data); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", registrytypes.ModuleName, err)
}
@ -93,24 +94,25 @@ func (AppModule) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig,
// InitGenesis performs genesis initialization for the registry module.
// It returns no validator updates.
func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState registrytypes.GenesisState
cdc.MustUnmarshalJSON(data, &genesisState)
am.cdc.MustUnmarshalJSON(data, &genesisState)
if err := am.keeper.InitGenesis(ctx, &genesisState); err != nil {
panic(fmt.Sprintf("failed to initialize %s genesis state: %v", registrytypes.ModuleName, err))
return fmt.Errorf("failed to initialize %s genesis state: %w", registrytypes.ModuleName, err)
}
return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the circuit
// module.
func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs, err := am.keeper.ExportGenesis(ctx)
if err != nil {
panic(fmt.Sprintf("failed to export %s genesis state: %v", registrytypes.ModuleName, err))
return nil, fmt.Errorf("failed to export %s genesis state: %w", registrytypes.ModuleName, err)
}
return cdc.MustMarshalJSON(gs)
return am.cdc.MustMarshalJSON(gs), nil
}
// module.HasServices
@ -134,6 +136,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
keeper.RegisterInvariants(ir, am.keeper)
}
// autocli.HasCustomTxCommand
// Get the root tx command of this module
func (AppModule) GetTxCmd() *cobra.Command {
return cli.GetTxCmd()