-
Notifications
You must be signed in to change notification settings - Fork 448
Description
Description
When running the gnoland start command with --lazy, and a custom --genesis-txs-file (attached below), the package gno.land/p/nt/ufmt seems to be loaded twice (there are 2 deploy transactions that end up in the genesis.json), causing the node to fail when initializing the genesis block.
Your environment
- Go version: 1.23
- OS and CPU architecture: macOS 26.3
- Gno commit hash causing the issue:
76a6a79822d00ff3d8b8cdbcbb8117746bba1e42(master)
Steps to reproduce
Download the genesis_txs.txt file I attached and rename it to .jsonl (GitHub doesn't allow uploading jsonl files for some reason).
genesis_txs.txt
Run:
gnoland start --lazy --skip-genesis-sig-verification --chainid test11 --genesis-txs-file ~/Desktop/test11/genesis_txs.jsonlExpected behavior
The genesis.json should not have 2 deploy transactions for the same package.
Notice that they have different deployers as well, indicating it's probably an issue with --lazy.
Actual behavior
The gno.land/p/nt/ufmt package is deployed twice in the genesis, causing the node to halt on boot.
Logs
Unable to deliver genesis tx {"log": "msg:0,success:false,log:--= Error =--\nData: vm.PkgExistError{abciError:vm.abciError{}}\nMsg Traces:\n 0 gno/gno.land/pkg/sdk/vm/errors.go:48 - package already exists: gno.land/p/nt/ufmt\nStack Trace:\n 0 gno/tm2/pkg/errors/errors.go:93\n 1 gno/gno.land/pkg/sdk/vm/errors.go:48\n 2 gno/gno.land/pkg/sdk/vm/keeper.go:481\n 3 gno/gno.land/pkg/sdk/vm/handler.go:42\n 4 gno/gno.land/pkg/sdk/vm/handler.go:29\n 5 gno/tm2/pkg/sdk/baseapp.go:671\n 6 gno/tm2/pkg/sdk/baseapp.go:862\n 7 gno/tm2/pkg/sdk/helpers.go:35\n 8 gno/gno.land/pkg/gnoland/app.go:419\n 9 gno/gno.land/pkg/gnoland/app.go:316\n 10 gno/tm2/pkg/sdk/baseapp.go:346\n 11 gno/tm2/pkg/bft/abci/client/local_client.go:196\n 12 gno/tm2/pkg/bft/appconn/app_conn.go:66\n 13 gno/tm2/pkg/bft/consensus/replay.go:305\n 14 gno/tm2/pkg/bft/consensus/replay.go:263\n 15 gno/tm2/pkg/bft/node/node.go:247\n 16 gno/tm2/pkg/bft/node/node.go:404\n 17 gno/tm2/pkg/bft/node/node.go:133\n 18 gno/gno.land/cmd/gnoland/start.go:265\n 19 gno/gno.land/cmd/gnoland/start.go:74\n 20 gno/tm2/pkg/commands/command.go:265\n 21 gno/tm2/pkg/commands/command.go:269\n 22 gno/tm2/pkg/commands/command.go:150\n 23 gno/tm2/pkg/commands/command.go:127\n 24 gno/gno.land/cmd/gnoland/root.go:24\n 25 /opt/homebrew/Cellar/go/1.25.7_1/libexec/src/runtime/proc.go:285\n 26 /opt/homebrew/Cellar/go/1.25.7_1/libexec/src/runtime/asm_arm64.s:1268\n--= /Error =--\n,events:[]", "error": "package already exists", "gas-used": 447088}
github.com/gnolang/gno/gno.land/pkg/gnoland.InitChainerConfig.loadAppState
/Users/zmilos/work/gno/gno.land/pkg/gnoland/app.go:421
github.com/gnolang/gno/gno.land/pkg/gnoland.InitChainerConfig.InitChainer
/Users/zmilos/work/gno/gno.land/pkg/gnoland/app.go:316
github.com/gnolang/gno/tm2/pkg/sdk.(*BaseApp).InitChain
/Users/zmilos/work/gno/tm2/pkg/sdk/baseapp.go:346
github.com/gnolang/gno/tm2/pkg/bft/abci/client.(*localClient).InitChainSync
/Users/zmilos/work/gno/tm2/pkg/bft/abci/client/local_client.go:196
github.com/gnolang/gno/tm2/pkg/bft/appconn.(*consensus).InitChainSync
/Users/zmilos/work/gno/tm2/pkg/bft/appconn/app_conn.go:66
github.com/gnolang/gno/tm2/pkg/bft/consensus.(*Handshaker).ReplayBlocks
/Users/zmilos/work/gno/tm2/pkg/bft/consensus/replay.go:305
github.com/gnolang/gno/tm2/pkg/bft/consensus.(*Handshaker).Handshake
/Users/zmilos/work/gno/tm2/pkg/bft/consensus/replay.go:263
github.com/gnolang/gno/tm2/pkg/bft/node.doHandshake
/Users/zmilos/work/gno/tm2/pkg/bft/node/node.go:247
github.com/gnolang/gno/tm2/pkg/bft/node.NewNode
/Users/zmilos/work/gno/tm2/pkg/bft/node/node.go:404
github.com/gnolang/gno/tm2/pkg/bft/node.DefaultNewNode
/Users/zmilos/work/gno/tm2/pkg/bft/node/node.go:133
main.execStart
/Users/zmilos/work/gno/gno.land/cmd/gnoland/start.go:265
main.newStartCmd.func1
/Users/zmilos/work/gno/gno.land/cmd/gnoland/start.go:74
github.com/gnolang/gno/tm2/pkg/commands.(*Command).Run
/Users/zmilos/work/gno/tm2/pkg/commands/command.go:265
github.com/gnolang/gno/tm2/pkg/commands.(*Command).Run
/Users/zmilos/work/gno/tm2/pkg/commands/command.go:269
github.com/gnolang/gno/tm2/pkg/commands.(*Command).ParseAndRun
/Users/zmilos/work/gno/tm2/pkg/commands/command.go:150
github.com/gnolang/gno/tm2/pkg/commands.(*Command).Execute
/Users/zmilos/work/gno/tm2/pkg/commands/command.go:127
main.main
/Users/zmilos/work/gno/gno.land/cmd/gnoland/root.go:24
runtime.main
/opt/homebrew/Cellar/go/1.25.7_1/libexec/src/runtime/proc.go:285
panic: msg:0,success:false,log:--= Error =--
Data: vm.PkgExistError{abciError:vm.abciError{}}
Msg Traces:
0 gno/gno.land/pkg/sdk/vm/errors.go:48 - package already exists: gno.land/p/nt/ufmt
Stack Trace:
0 gno/tm2/pkg/errors/errors.go:93
1 gno/gno.land/pkg/sdk/vm/errors.go:48
2 gno/gno.land/pkg/sdk/vm/keeper.go:481
3 gno/gno.land/pkg/sdk/vm/handler.go:42
4 gno/gno.land/pkg/sdk/vm/handler.go:29
5 gno/tm2/pkg/sdk/baseapp.go:671
6 gno/tm2/pkg/sdk/baseapp.go:862
7 gno/tm2/pkg/sdk/helpers.go:35
8 gno/gno.land/pkg/gnoland/app.go:419
9 gno/gno.land/pkg/gnoland/app.go:316
10 gno/tm2/pkg/sdk/baseapp.go:346
11 gno/tm2/pkg/bft/abci/client/local_client.go:196
12 gno/tm2/pkg/bft/appconn/app_conn.go:66
13 gno/tm2/pkg/bft/consensus/replay.go:305
14 gno/tm2/pkg/bft/consensus/replay.go:263
15 gno/tm2/pkg/bft/node/node.go:247
16 gno/tm2/pkg/bft/node/node.go:404
17 gno/tm2/pkg/bft/node/node.go:133
18 gno/gno.land/cmd/gnoland/start.go:265
19 gno/gno.land/cmd/gnoland/start.go:74
20 gno/tm2/pkg/commands/command.go:265
21 gno/tm2/pkg/commands/command.go:269
22 gno/tm2/pkg/commands/command.go:150
23 gno/tm2/pkg/commands/command.go:127
24 gno/gno.land/cmd/gnoland/root.go:24
25 /opt/homebrew/Cellar/go/1.25.7_1/libexec/src/runtime/proc.go:285
26 /opt/homebrew/Cellar/go/1.25.7_1/libexec/src/runtime/asm_arm64.s:1268
--= /Error =--
,events:[]Proposed solution
Probably an issue with --lazy, and how we treat the --genesis-txs-file flag.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status