Skip to content

Commit

Permalink
Merge branch 'main' into dan/restricted-mods
Browse files Browse the repository at this point in the history
  • Loading branch information
johnletey authored Nov 6, 2024
2 parents ad4cea8 + ea3adaf commit 95a3d27
Show file tree
Hide file tree
Showing 10 changed files with 205 additions and 140 deletions.
7 changes: 7 additions & 0 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import (
_ "github.com/monerium/module-noble/v2"
_ "github.com/noble-assets/authority"
_ "github.com/noble-assets/forwarding/v2/x/forwarding"
"github.com/noble-assets/globalfee"
_ "github.com/noble-assets/halo/v2"
_ "github.com/ondoprotocol/usdy-noble/v2"

Expand Down Expand Up @@ -90,6 +91,7 @@ import (
// Noble Modules
authoritykeeper "github.com/noble-assets/authority/keeper"
forwardingkeeper "github.com/noble-assets/forwarding/v2/x/forwarding/keeper"
globalfeekeeper "github.com/noble-assets/globalfee/keeper"
)

var DefaultNodeHome string
Expand Down Expand Up @@ -140,6 +142,7 @@ type App struct {
// Noble Modules
AuthorityKeeper *authoritykeeper.Keeper
ForwardingKeeper *forwardingkeeper.Keeper
GlobalFeeKeeper *globalfeekeeper.Keeper
}

func init() {
Expand Down Expand Up @@ -215,6 +218,7 @@ func NewApp(
// Noble Modules
&app.AuthorityKeeper,
&app.ForwardingKeeper,
&app.GlobalFeeKeeper,
); err != nil {
return nil, err
}
Expand All @@ -231,6 +235,7 @@ func NewApp(
BankKeeper: app.BankKeeper,
FeegrantKeeper: app.FeeGrantKeeper,
SignModeHandler: app.txConfig.SignModeHandler(),
TxFeeChecker: globalfee.TxFeeChecker(app.GlobalFeeKeeper),
},
cdc: app.appCodec,
FTFKeeper: app.FTFKeeper,
Expand Down Expand Up @@ -288,6 +293,7 @@ func (app *App) RegisterUpgradeHandler() error {
app.ModuleManager,
app.Configurator(),
app.appCodec,
app.interfaceRegistry,
app.Logger(),
app.GetKey(capabilitytypes.StoreKey),
app.AccountKeeper,
Expand All @@ -296,6 +302,7 @@ func (app *App) RegisterUpgradeHandler() error {
app.CapabilityKeeper,
app.IBCKeeper.ClientKeeper,
app.ConsensusKeeper,
app.GlobalFeeKeeper,
app.ParamsKeeper,
app.StakingKeeper,
),
Expand Down
6 changes: 5 additions & 1 deletion app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ modules:
pre_blockers: [ upgrade ]
begin_blockers: [ capability, authority, slashing, evidence, staking, ibc, authz ]
end_blockers: [ crisis, staking, feegrant, forwarding ]
init_genesis: [ capability, transfer, auth, bank, staking, slashing, crisis, fiat-tokenfactory, genutil, ibc, interchainaccounts, packetfowardmiddleware, evidence, authz, feegrant, params, upgrade, vesting, cctp, forwarding, aura, halo, florin, authority ]
init_genesis: [ capability, transfer, auth, bank, staking, slashing, crisis, fiat-tokenfactory, globalfee, genutil, ibc, interchainaccounts, packetfowardmiddleware, evidence, authz, feegrant, params, upgrade, vesting, cctp, forwarding, aura, halo, florin, authority ]
override_store_keys:
- module_name: auth
kv_store_key: acc
Expand Down Expand Up @@ -118,3 +118,7 @@ modules:
config:
"@type": noble.forwarding.module.v1.Module
authority: authority # Utilize our custom x/authority module.
- name: globalfee
config:
"@type": noble.globalfee.module.v1.Module
authority: authority # Utilize our custom x/authority module.
129 changes: 129 additions & 0 deletions cmd/init.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package cmd

import (
"os"

"cosmossdk.io/client/v2/autocli"
clientv2keyring "cosmossdk.io/client/v2/autocli/keyring"
"cosmossdk.io/core/address"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/config"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/x/auth/tx"
"github.com/cosmos/cosmos-sdk/x/auth/types"
pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward"
pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types"
"github.com/cosmos/ibc-go/modules/capability"
capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts"
icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types"
"github.com/cosmos/ibc-go/v8/modules/apps/transfer"
transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
ibc "github.com/cosmos/ibc-go/v8/modules/core"
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
soloclient "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine"
tmclient "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint"
"github.com/noble-assets/noble/v8"
)

var (
// Bech32PrefixAccAddr defines the Bech32 prefix of an account's address.
Bech32PrefixAccAddr = "noble"
// Bech32PrefixAccPub defines the Bech32 prefix of an account's public key.
Bech32PrefixAccPub = Bech32PrefixAccAddr + "pub"
// Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address.
Bech32PrefixValAddr = Bech32PrefixAccAddr + "valoper"
// Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key.
Bech32PrefixValPub = Bech32PrefixAccAddr + "valoperpub"
// Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address.
Bech32PrefixConsAddr = Bech32PrefixAccAddr + "valcons"
// Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key.
Bech32PrefixConsPub = Bech32PrefixAccAddr + "valconspub"

txConfigOpts tx.ConfigOptions
autoCliOpts autocli.AppOptions
ModuleBasicManager module.BasicManager
ClientCtx client.Context
)

func Initialize() {
cfg := sdk.GetConfig()
cfg.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub)
cfg.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub)
cfg.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub)
cfg.Seal()

if err := depinject.Inject(
depinject.Configs(noble.AppConfig(),
depinject.Supply(
log.NewNopLogger(),
),
depinject.Provide(
ProvideClientContext,
ProvideKeyring,
),
),
&txConfigOpts,
&autoCliOpts,
&ModuleBasicManager,
&ClientCtx,
); err != nil {
panic(err)
}

// Since the IBC modules don't support dependency injection, we need to
// manually register the modules on the client side.
// This needs to be removed after IBC supports App Wiring.
modules := map[string]appmodule.AppModule{
capabilitytypes.ModuleName: capability.AppModule{},
ibcexported.ModuleName: ibc.AppModule{},
icatypes.ModuleName: ica.AppModule{},
pfmtypes.ModuleName: pfm.AppModule{},
transfertypes.ModuleName: transfer.AppModule{},
tmclient.ModuleName: tmclient.AppModule{},
soloclient.ModuleName: soloclient.AppModule{},
}
for name, mod := range modules {
ModuleBasicManager[name] = module.CoreAppModuleBasicAdaptor(name, mod)
ModuleBasicManager[name].RegisterInterfaces(ClientCtx.InterfaceRegistry)
autoCliOpts.Modules[name] = mod
}
}

func ProvideClientContext(
appCodec codec.Codec,
interfaceRegistry codectypes.InterfaceRegistry,
txConfig client.TxConfig,
legacyAmino *codec.LegacyAmino,
) client.Context {
clientCtx := client.Context{}.
WithCodec(appCodec).
WithInterfaceRegistry(interfaceRegistry).
WithTxConfig(txConfig).
WithLegacyAmino(legacyAmino).
WithInput(os.Stdin).
WithAccountRetriever(types.AccountRetriever{}).
WithHomeDir(noble.DefaultNodeHome).
WithViper("") // env variable prefix

// Read the config again to overwrite the default values with the values from the config file
clientCtx, _ = config.ReadFromClientConfig(clientCtx)

return clientCtx
}

func ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) {
kb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend())
if err != nil {
return nil, err
}

return keyring.NewAutoCLIKeyring(kb)
}
36 changes: 0 additions & 36 deletions cmd/nobled/main.go
Original file line number Diff line number Diff line change
@@ -1,51 +1,15 @@
// Copyright 2024 NASD Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
"fmt"
"os"

svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/noble-assets/noble/v8"
"github.com/noble-assets/noble/v8/cmd"
)

var (
// Bech32PrefixAccAddr defines the Bech32 prefix of an account's address.
Bech32PrefixAccAddr = "noble"
// Bech32PrefixAccPub defines the Bech32 prefix of an account's public key.
Bech32PrefixAccPub = Bech32PrefixAccAddr + "pub"
// Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address.
Bech32PrefixValAddr = Bech32PrefixAccAddr + "valoper"
// Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key.
Bech32PrefixValPub = Bech32PrefixAccAddr + "valoperpub"
// Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address.
Bech32PrefixConsAddr = Bech32PrefixAccAddr + "valcons"
// Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key.
Bech32PrefixConsPub = Bech32PrefixAccAddr + "valconspub"
)

func main() {
config := sdk.GetConfig()
config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub)
config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub)
config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub)
config.Seal()

rootCmd := cmd.NewRootCmd()
if err := svrcmd.Execute(rootCmd, "", noble.DefaultNodeHome); err != nil {
fmt.Fprintln(rootCmd.OutOrStderr(), err)
Expand Down
Loading

0 comments on commit 95a3d27

Please sign in to comment.