ExocoreNetwork / exocore

Omnichain Restaking
7 stars 9 forks source link

feat: CLIs for delegation, operator, dogfood #46

Closed MaxMustermann2 closed 4 months ago

MaxMustermann2 commented 5 months ago

BREAKING: the format of storing the previous consensus keys has changed. Previously, they were indexed by operator's AccAddress and chainID. Now they are indexed by the reverse of it, that is, chainID + AccAddress. This is done to ensure easy clearing of the data for each specific AVS.

BREAKING: the prefixSlashAssetsState and another prefix were sharing the same value of 5 BytePrefixForOperatorAndChainIDToConsKey. This has been fixed.

cloud8little commented 5 months ago

47f30f638acc2d06233151f801e0be1

cloud8little commented 5 months ago

Command:

exocored tx operator register-operator --meta-info operator4 --commission-rate 0 --commission-max-rate 1 --commission-max-change-rate 1 --from testaccount1 --node http://localhost:20000 --fees 50000000000aexo

Error Log:

gas estimate: 152564
auth_info:
  fee:
    amount:
    - amount: "5225469564"
      denom: aexo
    gas_limit: "152564"
    granter: ""
    payer: ""
  signer_infos: []
  tip: null
body:
  extension_options: []
  memo: ""
  messages:
  - '@type': /exocore.operator.v1.RegisterOperatorReq
    from_address: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
    info:
      approve_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
      client_chain_earnings_addr:
        earning_info_list: []
      commission:
        commission_rates:
          max_change_rate: "1.000000000000000000"
          max_rate: "1.000000000000000000"
          rate: "0.000000000000000000"
        update_time: "1970-01-01T00:00:00Z"
      earnings_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
      operator_meta_info: jessica1
  non_critical_extension_options: []
  timeout_height: "0"
signatures: []
confirm transaction before signing and broadcasting [y/N]: y
code: 111222
codespace: undefined
data: ""
events: []
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: "recovered: expected *legacytx.LegacyMsg when using amino JSON\nstack:\ngoroutine
  160346 [running]:\nruntime/debug.Stack()\n\truntime/debug/stack.go:24 +0x5e\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.func3({0x2cbbd00?,
  0xc001a7be40})\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/recovery.go:71 +0x26\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.newRecoveryMiddleware.func5({0x2cbbd00?,
  0xc001a7be40?})\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/recovery.go:39 +0x2d\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2cbbd00,
  0xc001a7be40}, 0x13ff00f0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/recovery.go:28
  +0x2f\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2cbbd00, 0xc001a7be40},
  0x0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/recovery.go:33 +0x53\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/baseapp.go:641
  +0xfe\npanic({0x2cbbd00?, 0xc001a7be40?})\n\truntime/panic.go:920 +0x270\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/setup.go:57
  +0x1e5\npanic({0x2cbbd00?, 0xc001a7be40?})\n\truntime/panic.go:914 +0x21f\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx.StdSignBytes({0xc009d2cdf8,
  0x14}, 0xa9, 0x2, 0x0, {{0xc005dad488, 0x1, 0x1}, 0x30d40, {0x0, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/migrations/legacytx/stdsign.go:60
  +0x438\ngithub.com/evmos/evmos/v14/ethereum/eip712.decodeProtobufSignDoc({0xc002aba820,
  0x18b, 0x18b})\n\tgithub.com/evmos/evmos/v14@v14.0.0-rc4/ethereum/eip712/encoding.go:183
  +0x729\ngithub.com/evmos/evmos/v14/ethereum/eip712.GetEIP712TypedDataForMsg({0xc002aba820,
  0x18b, 0x18b})\n\tgithub.com/evmos/evmos/v14@v14.0.0-rc4/ethereum/eip712/encoding.go:60
  +0x251\ngithub.com/evmos/evmos/v14/ethereum/eip712.GetEIP712BytesForMsg({0xc002aba820?,
  0x40?, 0x21?})\n\tgithub.com/evmos/evmos/v14@v14.0.0-rc4/ethereum/eip712/encoding.go:38
  +0x58\ngithub.com/evmos/evmos/v14/crypto/ethsecp256k1.PubKey.verifySignatureAsEIP712({{0xc0066091a0?,
  0xf103fd?, 0xc003d73dd0?}}, {0xc002aba820, 0x18b, 0x18b}, {0xc0030e6b40, 0x41, 0x41})\n\tgithub.com/evmos/evmos/v14@v14.0.0-rc4/crypto/ethsecp256k1/ethsecp256k1.go:222
  +0x65\ngithub.com/evmos/evmos/v14/crypto/ethsecp256k1.PubKey.VerifySignature({{0xc0066091a0?,
  0x4290ed?, 0x40d2b68?}}, {0xc002aba820, 0x18b, 0x18b}, {0xc0030e6b40, 0x41, 0x41})\n\tgithub.com/evmos/evmos/v14@v14.0.0-rc4/crypto/ethsecp256k1/ethsecp256k1.go:215
  +0xaa\ngithub.com/cosmos/cosmos-sdk/x/auth/signing.VerifySignature({0x4108838?,
  0xc005dad440}, {{0xc003d73dd0, 0x2a}, {0xc0075a75d8, 0x14}, 0xa9, 0x2, {0x4108838,
  0xc005dad440}}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/signing/verify.go:21
  +0x10d\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SigVerificationDecorator.AnteHandle({{_,
  _}, {_, _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, ...},
  ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/sigverify.go:292
  +0x63a\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SigGasConsumeDecorator.AnteHandle({{_,
  _}, _}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/sigverify.go:194
  +0x577\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateSigCountDecorator.AnteHandle({{_,
  _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/sigverify.go:384
  +0x3ce\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetPubKeyDecorator.AnteHandle({{_,
  _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/sigverify.go:126
  +0xad7\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/ExocoreNetwork/exocore/app/ante/cosmos.DeductFeeDecorator.AnteHandle({{0x7f32a80bd438,
  0xc001217900}, {0x7f32a0469a18, 0xc0015e8f20}, {0x40c22a0, 0xc000e2b640}, {0x40c2280,
  0xc001985fb0}, {0x40d1a60, 0xc001945e10}, ...}, ...)\n\tgithub.com/ExocoreNetwork/exocore/app/ante/cosmos/fees.go:88
  +0x397\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ConsumeTxSizeGasDecorator.AnteHandle({{_,
  _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/basic.go:143
  +0x5af\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/ExocoreNetwork/exocore/app/ante/cosmos.MinGasPriceDecorator.AnteHandle({{_,
  _}, {_, _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, ...},
  ...}, ...)\n\tgithub.com/ExocoreNetwork/exocore/app/ante/cosmos/min_price.go:38
  +0x3d2\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateMemoDecorator.AnteHandle({{_,
  _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/basic.go:67
  +0x1b9\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.TxTimeoutHeightDecorator.AnteHandle({},
  {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, 0x35b45f, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/basic.go:206
  +0x26e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateBasicDecorator.AnteHandle({},
  {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, 0x35b45f, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/basic.go:34
  +0x14e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.RejectExtensionOptionsDecorator.AnteHandle({_},
  {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, 0x35b45f, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/ext.go:52
  +0x10e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle({},
  {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, 0x35b45f, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/x/auth/ante/setup.go:62
  +0x56e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/ExocoreNetwork/exocore/app/ante/cosmos.AuthzLimiterDecorator.AnteHandle({{_,
  _, _}}, {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  ...}, ...}, ...}, ...)\n\tgithub.com/ExocoreNetwork/exocore/app/ante/cosmos/authz.go:33
  +0x18e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/ExocoreNetwork/exocore/app/ante/cosmos.RejectMessagesDecorator.AnteHandle({},
  {{0x40f9158, 0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8,
  0x14}, 0x35b45f, ...}, ...}, ...)\n\tgithub.com/ExocoreNetwork/exocore/app/ante/cosmos/reject_msgs.go:25
  +0x14e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/types/handler.go:49
  +0x136\ngithub.com/ExocoreNetwork/exocore/app.(*ExocoreApp).setAnteHandler.NewAnteHandler.func2({{0x40f9158,
  0x5f8e340}, {0x4114290, 0xc008926000}, {{0xb, 0x0}, {0xc0075a75d8, 0x14}, 0x35b45f,
  {0x2286648f, ...}, ...}, ...}, ...)\n\tgithub.com/ExocoreNetwork/exocore/app/ante/ante.go:53
  +0x218\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc000320d20, 0x0,
  {0xc002ad0a80, 0x1b5, 0x1b6})\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/baseapp.go:696
  +0x4f9\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).CheckTx(0xc000320d20, {{0xc002ad0a80?,
  0x868940c709eefc85?, 0x4ed8aa4a391c0cb3?}, 0x5b9cca4f?})\n\tgithub.com/cosmos/cosmos-sdk@v0.47.5/baseapp/abci.go:370
  +0x86\ngithub.com/cometbft/cometbft/abci/client.(*localClient).CheckTxAsync(0xc001a00600,
  {{0xc002ad0a80?, 0x0?, 0x0?}, 0x307cbd8?})\n\tgithub.com/cometbft/cometbft@v0.37.2/abci/client/local_client.go:93
  +0x102\ngithub.com/cometbft/cometbft/proxy.(*appConnMempool).CheckTxAsync(0xc000df65a0,
  {{0xc002ad0a80?, 0x548c3d?, 0xc00307cc68?}, 0x432c05?})\n\tgithub.com/cometbft/cometbft@v0.37.2/proxy/app_conn.go:154
  +0x171\ngithub.com/cometbft/cometbft/mempool/v0.(*CListMempool).CheckTx(0xc000e4fd40,
  {0xc002ad0a80, 0x1b5, 0x1b6}, 0xc005dad008, {0x20?, {0x0?, 0x50003?}})\n\tgithub.com/cometbft/cometbft@v0.37.2/mempool/v0/clist_mempool.go:254
  +0x1c3\ngithub.com/cometbft/cometbft/rpc/core.BroadcastTxSync(0xc0068d6ae0, {0xc002ad0a80,
  0x1b5, 0x1b6})\n\tgithub.com/cometbft/cometbft@v0.37.2/rpc/core/mempool.go:35 +0xe4\nreflect.Value.call({0x2cfa080?,
  0x3ae68d8?, 0x3195360?}, {0x31a7644, 0x4}, {0xc005d58150, 0x2, 0x439572?})\n\treflect/value.go:596
  +0xce7\nreflect.Value.Call({0x2cfa080?, 0x3ae68d8?, 0x251?}, {0xc005d58150?, 0x3195360?,
  0xc0032ebc00?})\n\treflect/value.go:380 +0xb9\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server.RegisterRPCFuncs.makeJSONRPCHandler.func3({0x40e95b0,
  0xc005dacf60}, 0xc004f87300)\n\tgithub.com/cometbft/cometbft@v0.37.2/rpc/jsonrpc/server/http_json_handler.go:108
  +0xcf0\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server.RegisterRPCFuncs.handleInvalidJSONRPCPaths.func4({0x40e95b0?,
  0xc005dacf60?}, 0x7f32a8041380?)\n\tgithub.com/cometbft/cometbft@v0.37.2/rpc/jsonrpc/server/http_json_handler.go:140
  +0x42\nnet/http.HandlerFunc.ServeHTTP(0xc000600000?, {0x40e95b0?, 0xc005dacf60?},
  0xc00307d968?)\n\tnet/http/server.go:2136 +0x29\nnet/http.(*ServeMux).ServeHTTP(0xc000600000?,
  {0x40e95b0, 0xc005dacf60}, 0xc004f87300)\n\tnet/http/server.go:2514 +0x142\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server.maxBytesHandler.ServeHTTP({{0x40c3660?,
  0xc0005ba180?}, 0xd?}, {0x40e95b0?, 0xc005dacf60}, 0xc004f87300)\n\tgithub.com/cometbft/cometbft@v0.37.2/rpc/jsonrpc/server/http_server.go:256
  +0x11c\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server.Serve.RecoverAndLogHandler.func1({0x40df760?,
  0xc000916540}, 0xc004f87300)\n\tgithub.com/cometbft/cometbft@v0.37.2/rpc/jsonrpc/server/http_server.go:229
  +0x26f\nnet/http.HandlerFunc.ServeHTTP(0x432f85?, {0x40df760?, 0xc000916540?}, 0xc000916501?)\n\tnet/http/server.go:2136
  +0x29\nnet/http.serverHandler.ServeHTTP({0x40d2398?}, {0x40df760?, 0xc000916540?},
  0x6?)\n\tnet/http/server.go:2938 +0x8e\nnet/http.(*conn).serve(0xc006cb3710, {0x40f9660,
  0xc004fc3b60})\n\tnet/http/server.go:2009 +0x5f4\ncreated by net/http.(*Server).Serve
  in goroutine 97\n\tnet/http/server.go:3086 +0x5cb\n: panic"
MaxMustermann2 commented 5 months ago

The latest commit fixes it.

Please ensure to supply lots of gas with --gas auto --gas-adjustment 2.0 --gas-prices 34251aexo

MaxMustermann2 commented 5 months ago

47f30f638acc2d06233151f801e0be1

The last commit resolves this error as well.

cloud8little commented 5 months ago

Tested 5099fcb8a5b2d9259c0798488e4307be66030c2a, still gets the error here https://github.com/ExocoreNetwork/exocore/pull/46#issuecomment-2084582779.

More investigation: This did not happen on single node running a new chain, happens on the export testnet V1 data and import bootstrap data, and three nodes consensus.

cloud8little commented 4 months ago

After register operator, it is ok to query operator info with get-operator-info, but not able to query consensus key get-operator-cons-key and consensus address get-operator-cons-address, and there is no info for the new added operator in get-all-operator-cons-addrs and get-all-operators-by-chain-id

[root@testnet-exochain ~]# exocored query operator get-operator-info exo16hgwvex9jm4ztxpf2d7dee56qd50tch2a84c6a --home ~/.tmp-exocored/
approve_addr: exo16hgwvex9jm4ztxpf2d7dee56qd50tch2a84c6a
client_chain_earnings_addr:
  earning_info_list: []
commission:
  commission_rates:
    max_change_rate: "1.000000000000000000"
    max_rate: "1.000000000000000000"
    rate: "0.000000000000000000"
  update_time: "2024-05-06T10:07:45.065045865Z"
earnings_addr: exo16hgwvex9jm4ztxpf2d7dee56qd50tch2a84c6a
operator_meta_info: operator4

[root@testnet-exochain ~]# exocored query operator get-operator-cons-address exo16hgwvex9jm4ztxpf2d7dee56qd50tch2a84c6a exocoretestnet_233-1 --home ~/.tmp-exocored/
Error: rpc error: code = InvalidArgument desc = no key assigned: invalid request

exocored query operator get-operator-cons-key exo16hgwvex9jm4ztxpf2d7dee56qd50tch2a84c6a exocoretestnet_233-1 --home ~/.tmp-exocored
Error: rpc error: code = InvalidArgument desc = no key assigned: invalid request

[root@testnet-exochain ~]# exocored query operator get-all-operator-cons-addrs exocoretestnet_233-1 --home ~/.tmp-exocored/
operator_cons_addrs:
- cons_addr: exovalcons18z3p42xn8pjk338upvzp794h02wh7p4t7jj9jx
  operator_acc_addr: exo18cggcpvwspnd5c6ny8wrqxpffj5zmhklprtnph
pagination:
  next_key: null
  total: "1"
[root@testnet-exochain ~]# exocored query operator get-all-operators-by-chain-id exocoretestnet_233-1 --home ~/.tmp-exocored/
operator_cons_keys:
- operator_acc_addr: exo18cggcpvwspnd5c6ny8wrqxpffj5zmhklprtnph
  public_key:
    ed25519: 8PaRnlIsW5fbLIJVv/dD+d/d162fw3ywwWcLSA0PmRQ=
pagination:
  next_key: null
  total: "1"
MaxMustermann2 commented 4 months ago

BREAKING: the format of storing the previous consensus keys has changed. Previously, they were indexed by operator's AccAddress and chainID. Now they are indexed by the reverse of it, that is, chainID + AccAddress. This is done to ensure easy clearing of the data for each specific AVS.

BREAKING: the prefixSlashAssetsState and another prefix were sharing the same value of 5 BytePrefixForOperatorAndChainIDToConsKey. This has been fixed.

cloud8little commented 4 months ago

Test binary: https://github.com/ExocoreNetwork/exocore/pull/46/commits/95bde9820c246ab750e3e0071eb8a1453528ceb9

  1. register operator with from account dev0.
  2. exocored tx operator opt-into-avs exocoretestnet_233-1 --from dev0 --home ~/.tmp-exocored/ --gas-prices 5000000aexo
  3. exocored tx operator set-cons-key exocoretestnet_233-1 '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"LlzL2PWhXBgDyTuK1qNXhHxy3+dpcq8ZkT9/GSY6318="}' --from dev0 --home ~/.tmp-exocored --gas-prices 5000000aexo
  4. query transaction.
  5. error log. set_cons_key_errlog.txt
cloud8little commented 4 months ago

Retesting.

cloud8little commented 4 months ago

Test Result For https://github.com/ExocoreNetwork/exocore/pull/46/commits/eb2959c17f5ebd7440ce2f0bbbb3e40da114d43d, test scenario:

  1. Register Operator for a new operator with a non existing operator name. [Passed]
  2. Register Operator for a new operator with an existing operator name. [Passed]
  3. Register operator for the same account for several times. [Passed]
  4. Set consensus key for the new registered operator without opt into avs. [Passed]
  5. Set consensus key for the new registered operator after opting into avs. [Passed]
  6. Set consensus key for the new registered operator after opting into avs the second time. [Passed]
  7. Check all opeartors by chain id after register the new operator but without setting a consensus key [Passed]
  8. Check the new registered operator consensus key info and operator info without setting a consensus key. [Passed]
  9. Check the new registered operator consensus key info and operator info after setting a consensus key. [Passed]
  10. Register operator, opt into avs, set consensus key, then initiate key removal and opt-out avs. check the specific operator info and all operator info. [The consensus key still shows ]
MaxMustermann2 commented 4 months ago

errolog_register.txt

I cannot reproduce this error. If it doesn't stop consensus, it looks to be an issue in the sender-side of things, especially based on the logs which do not mention anything related to the modules.

image

MaxMustermann2 commented 4 months ago

Register operator, opt into avs, set consensus key, then initiate key removal and opt-out avs. check the specific operator info and all operator info. [The consensus key still shows ]

That is intentional. It stays till maturity of the unbonding period. However, let me discuss with Timmy again - based on the slashing design this will change.

MaxMustermann2 commented 4 months ago

I cannot reproduce this error. If it doesn't stop consensus, it looks to be an issue in the sender-side of things, especially based on the logs which do not mention anything related to the modules.

I am able to reproduce this error by providing the wrong chain id to the call. This means it is a problem of the sender and not the receiver and is not a cause for concern. It does not stop consensus at all.

The same doesn't hold for tx bank send which reports a nice clean error. Let me see if we can get that.

cloud8little commented 4 months ago

Test object: https://github.com/ExocoreNetwork/exocore/pull/46/commits/11a8a960af2947c6e4a49de16cd9e968b917c030

Scenario 1. deployer1 account is under default folder ~/.exocored and no balances, shows key not founderror.

exocored tx operator register-operator --meta-info deployer1 --commission-rate 0 --commission-max-rate 1 --commission-max-change-rate 1 --from deployer1 --node http://localhost:20000 --gas-prices 7aexo
Enter keyring passphrase (attempt 1/3):
Error: rpc error: code = NotFound desc = rpc error: code = NotFound desc = account exo1hn2qgt0yn8g5u4gqrn9myjj4ruae2syk76pvk5 not found: key not found

Scenario 2. testaccount1 has balances, and is under default folder ~/.exocored. register operator successfully.

exocored tx operator register-operator --meta-info testoperator1 --commission-rate 0 --commission-max-rate 1 --commission-max-change-rate 1 --from testaccount1 --node http://localhost:20000 --gas-prices 7aexo
Enter keyring passphrase (attempt 1/3):
auth_info:
  fee:
    amount:
    - amount: "1400000"
      denom: aexo
    gas_limit: "200000"
    granter: ""
    payer: ""
  signer_infos: []
  tip: null
body:
  extension_options: []
  memo: ""
  messages:
  - '@type': /exocore.operator.v1.RegisterOperatorReq
    from_address: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
    info:
      approve_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
      client_chain_earnings_addr:
        earning_info_list: []
      commission:
        commission_rates:
          max_change_rate: "1.000000000000000000"
          max_rate: "1.000000000000000000"
          rate: "0.000000000000000000"
        update_time: "1970-01-01T00:00:00Z"
      earnings_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
      operator_meta_info: testoperator1
  non_critical_extension_options: []
  timeout_height: "0"
signatures: []
confirm transaction before signing and broadcasting [y/N]: y
code: 0
codespace: ""
data: ""
events: []
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: '[]'
timestamp: ""
tx: null
txhash: A89DC8B45AB57A87B309CE2FC6A3913B9779831C8EF7C5FBA2B8F4A18C51322C
exocored query operator get-operator-info exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj --n
ode http://localhost:20000
approve_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
client_chain_earnings_addr:
  earning_info_list: []
commission:
  commission_rates:
    max_change_rate: "1.000000000000000000"
    max_rate: "1.000000000000000000"
    rate: "0.000000000000000000"
  update_time: "2024-05-23T08:52:11.854962787Z"
earnings_addr: exo1nkh04qzxed98megzz53xx9a4uju599zg3rw0mj
operator_meta_info: testoperator1