Personalizando Minitia

Descripci贸n general

Para aquellos que trabajan dentro del ecosistema de Initia y est谩n considerando modificaciones a componentes principales como cometbfty cosmos-sdk, recomendamos encarecidamente minimizar la l贸gica personalizada para garantizar la estabilidad y la mantenibilidad del sistema. Si la personalizaci贸n es inevitable, es fundamental bifurcar las versiones espec铆ficas initia-labs/cometbfty initia-labs/cosmos-sdkreducir los esfuerzos de integraci贸n y los posibles conflictos.

Pautas de personalizaci贸n para Minitia

Minitia admite la integraci贸n de m贸dulos Cosmos personalizados, pero es recomendable abstenerse de modificar o agregar m贸dulos que est茅n directamente relacionados con el stake, como los m贸dulos de stake, distribuci贸n y gov. En cambio, estas funcionalidades son reemplazadas por el opchildm贸dulo para agilizar las operaciones.

Para mantener la uniformidad en la configuraci贸n de IBC, recomendamos bifurcar repositorios como minimove/miniwasm/minievme implementar cambios all铆 en lugar de integrar directamente el opchildm贸dulo en su cadena de aplicaciones.

Agregar consultas de Cosmos incluidas en la lista blanca

MOVER

Al personalizar consultas dentro del m贸dulo MOVE, evite incluir consultas relacionadas con saldos bancarios, ya que ya est谩n integradas dentro del activo fungible de movimiento. Debido al estado aislado durante la ejecuci贸n, los resultados pueden diferir del estado real de Cosmos.

// in app.go

queryWhitelist := movetypes.DefaultVMQueryWhiteList(ac)
queryWhitelist.Custom["chain_id"] = func(ctx context.Context, _ []byte) ([]byte, error) {
	return []byte(sdk.UnwrapSDKContext(ctx).ChainID()), nil
}
queryWhitelist.Stargate["/slinky.oracle.v1.Query/GetPrices"] = movetypes.ProtoSet{
	Request:  &oracletypes.GetPricesRequest{},
	Response: &oracletypes.GetPricesResponse{},
}

*app.MoveKeeper = movekeeper.NewKeeper(...).WithVMQueryWhitelist(queryWhitelist)

ERA M

Para el m贸dulo WASM, puede especificar qu茅 consultas permitir a trav茅s del sistema:

// in app.go

// add the query list you want to add
queryAllowlist := make(map[string]proto.Message)
queryAllowlist["/slinky.oracle.v1.Query/GetAllCurrencyPairs"] = &oracletypes.GetAllCurrencyPairsResponse{}
queryAllowlist["/slinky.oracle.v1.Query/GetPrice"] = &oracletypes.GetPriceResponse{}
queryAllowlist["/slinky.oracle.v1.Query/GetPrices"] = &oracletypes.GetPricesResponse{}


// use accept list stargate querier
wasmOpts = append(wasmOpts, wasmkeeper.WithQueryPlugins(&wasmkeeper.QueryPlugins{
	Stargate: wasmkeeper.AcceptListStargateQuerier(queryAllowlist, app.GRPCQueryRouter(), appCodec),
}))


*app.WasmKeeper = wasmkeeper.NewKeeper(
	...
	wasmOpts...,
)

EVM

Habilitar consultas personalizadas desde el contrato

En el m贸dulo EVM, es importante evitar agregar consultas relacionadas con saldos bancarios, similar a las configuraciones MOVE y WASM:

// in app.go

whitelist := evmtypes.DefaultQueryCosmosWhitelist()

// append module queries
whitelist["/custom.module.v1.Query/Info"]  = evmtypes.ProtoSet{
	Request:  &customtypes.GetInfoRequest{},
	Response: &customtypes.GetInfoResponse{},
}

app.EVMKeeper = evmkeeper.NewKeeper(
	...,
	whitelist,
)

Deshabilitar la implementaci贸n personalizada de ERC-20

Puede desactivar la compatibilidad con ERC-20 personalizada en g茅nesis.

// $HOME/.minitia/config/genesis.json
{
  ...
  "app_state": {
    ...
    "evm": {
      ...
      "params": {
        ...
        allow_custom_erc20: false,
        // used only allow_custom_erc20 is true.
        // empty means allow all custom contracts.
        allowed_custom_erc20s: ["0xContractAddr"], 
      }
    }
  }
}

O puede modificar esto a trav茅s de MsgUpdateParams.

minitiad tx opchild execute-messages ~/add-currency.json
// add-currency.json
{
    "messages": [{
        "@type": "/minievm.evm.v1.MsgUpdateParams",
        "authority": "init1gz9n8jnu9fgqw7vem9ud67gqjk5q4m2w0aejne",
        "params": {
            "extra_eips": [],
            "allowed_publishers": [],
            "allow_custom_erc20": false,
            "allowed_custom_erc20s": [],
        }
    }]
}

Conclusi贸n

Al personalizar los componentes centrales de la infraestructura de Initia, es fundamental cumplir con las mejores pr谩cticas para mantener la integridad y funcionalidad del sistema. Una consideraci贸n cuidadosa de estas pautas garantiza que cualquier modificaci贸n necesaria se alinee con la estabilidad general y la eficiencia operativa del ecosistema.

Last updated