Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a blockchain client in Go #2773

Closed
olfa-dallel-enit opened this issue Aug 23, 2022 · 19 comments
Closed

Create a blockchain client in Go #2773

olfa-dallel-enit opened this issue Aug 23, 2022 · 19 comments
Assignees
Labels

Comments

@olfa-dallel-enit
Copy link

Hello,
I tried to create a blockchain client in go as mentionned in this tuto
https://docs.ignite.com/guide/blog/connect-blockchain
However, I got this error when trying to extract the account from the the accountName

unable to unmarshal item.Data, err: Bytes left over in UnmarshalBinaryLengthPrefixed, should read 10 more bytes but have 152
exit status 1

Is there any mistake in the tuto??

Thank you

@tbruyelle
Copy link
Contributor

Hi @olfa-dallel-enit, thanks for your report. Can you specify which version of the CLI you are using ? (you can run ignite version for that).

Also can you confirm the error occurs at this line ?

account, err := cosmos.Account(accountName)

@olfa-dallel-enit
Copy link
Author

Hello,

The version of the CLI :
Ignite CLI version: development
Ignite CLI build date: 2022-08-20T07:51:28
Ignite CLI source hash: e2eb141
Your OS: linux
Your arch: amd64
Your Node.js version: v16.15.1
Your go version: go version go1.18.1 linux/amd64
Your uname -a: Linux ignite-cli-2tvm788i0pr 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Your cwd: /workspace/ignite/.gitpod
Is on Gitpod: true

I confirm that the error occurs at the line mentioned (account, err := cosmos.Account(accountName)).

Thank you

@tbruyelle
Copy link
Contributor

Thx @olfa-dallel-enit
It looks like there's something wrong with the accounts stored in your keyring. While your blog chain is running, can you run the following command and gives me the input :

blogd keys list

@olfa-dallel-enit
Copy link
Author

olfa-dallel-enit commented Aug 24, 2022

Hello,

the output of the command "testbrokerd keys list" is:

  • address: testbroker14yrnr4yqz6zl09zrdefq0axg5vsuhnudmvq46c
    name: alice
    pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AmEJaz0VJB0+B7qvj6F2mmiX3+0XstuJpGRTD+aJAs1p"}'
    type: local
  • address: testbroker1mh33zuyds22hsqwe5xhh54xhzw7dvrvchqfuf6
    name: bob
    pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AqCRvKDCB+En+D5V0aMoDEOwsELhcdPC8lRS7HWUzPZP"}'
    type: local

Thank you

@tbruyelle
Copy link
Contributor

Hmm I was expecting to see an identical error with the keys list command.

Can re-run your chain with -r flag (ignite c serve -r) to reset the accounts, then run again your client to see if you still have the error ?

@nashqueue
Copy link

Not sure if related but i had this error:

./main.go:48:36: cannot use account (variable of type cosmosaccount.Account) as type string in argument to cosmos.BroadcastTx

Changing account to accountName in Line 48 fixed it for me.

my version:
Ignite CLI version: v0.22.2
Ignite CLI build date: 2022-06-23T16:39:25Z
Ignite CLI source hash: a22808a
Your OS: linux
Your arch: amd64
Your go version: go version go1.18 linux/amd64

@olfa-dallel-enit
Copy link
Author

Hello,

@tbruyelle I got the same error also after running "ignite c serve -r"

Thank you

@tbruyelle
Copy link
Contributor

Changing account to accountName in Line 48 fixed it for me.

Indeed @nashqueue, this is something we changed recently and we updated the tutorial as well.

@tbruyelle
Copy link
Contributor

@olfa-dallel-enit what version of the cosmos-sdk are you using in your testbrocker chain (check the go.mod) ?

@tbruyelle
Copy link
Contributor

tbruyelle commented Aug 24, 2022

@olfa-dallel-enit I'm pretty sure your bug is related to a keyring migration included in cosmos v0.46. cosmos/cosmos-sdk#9695

Prior to that, the keyring items were amino encoded, but in v0.46, they are protobuf encoded. If you used a client that depends on cosmos v0.46 to reads your keyring, it automatically migrated the keyring to protobuf encoding. Now the problem is if you try to read again that keyring with a client that depends on an older version of the cosmos-sdk (like your testbrokerd chain binary), it fails with the error you mentioned Error: Bytes left over in UnmarshalBinaryLengthPrefixed, should read 10 more bytes but have 152.

Now if I'm correct the reset flag should have fixed the problem, unless you have run an other client that depends on cosmos-sdk v0.46 after the reset, and that client migrated the keyring. Have you ?

If you upgrade cosmos-sdk to v0.46 in your testbroker chain, it should solve the problem, but I'm curious to know how the migration happened on your keyring.

@jeronimoalbi
Copy link
Member

This issue is related to #2755. It is indeed happening because of the keyring migration.

@olfa-dallel-enit
Copy link
Author

Hello
@tbruyelle, sorry for replying late.
This is the content of the go.mod file

module testbroker

go 1.18

require (
github.com/cosmos/cosmos-sdk v0.46.0
github.com/cosmos/ibc-go/v5 v5.0.0-beta1
github.com/gogo/protobuf v1.3.3
github.com/golang/protobuf v1.5.2
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/ignite/cli v0.23.1-0.20220801134230-8d30121393da
github.com/spf13/cast v1.5.0
github.com/spf13/cobra v1.5.0
github.com/stretchr/testify v1.8.0
github.com/tendermint/tendermint v0.34.20
github.com/tendermint/tm-db v0.6.7
google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc
google.golang.org/grpc v1.48.0
gopkg.in/yaml.v2 v2.4.0
)

require (
cloud.google.com/go v0.102.0 // indirect
cloud.google.com/go/compute v1.7.0 // indirect
cloud.google.com/go/iam v0.3.0 // indirect
cloud.google.com/go/storage v1.22.1 // indirect
cosmossdk.io/errors v1.0.0-beta.7 // indirect
cosmossdk.io/math v1.0.0-beta.3 // indirect
filippo.io/edwards25519 v1.0.0-rc.1 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.1 // indirect
github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect
github.com/Microsoft/go-winio v0.5.2 // indirect
github.com/Microsoft/hcsshim v0.9.2 // indirect
github.com/Workiva/go-datastructures v1.0.53 // indirect
github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 // indirect
github.com/armon/go-metrics v0.4.0 // indirect
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 // indirect
github.com/aws/aws-sdk-go v1.40.45 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/btcsuite/btcd v0.22.1 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/cenkalti/backoff v2.2.1+incompatible // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect
github.com/confio/ics23/go v0.7.0 // indirect
github.com/containerd/cgroups v1.0.3 // indirect
github.com/containerd/containerd v1.6.2 // indirect
github.com/cosmos/btcutil v1.0.4 // indirect
github.com/cosmos/cosmos-proto v1.0.0-alpha7 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gorocksdb v1.2.0 // indirect
github.com/cosmos/iavl v0.19.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect
github.com/cosmos/ledger-go v0.9.2 // indirect
github.com/danieljoos/wincred v1.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // 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.0 // indirect
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
github.com/docker/docker v20.10.17+incompatible // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac // indirect
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/emicklei/proto v1.9.0 // indirect
github.com/emirpasic/gods v1.12.0 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.1 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-git/gcfg v1.5.0 // indirect
github.com/go-git/go-billy/v5 v5.0.0 // indirect
github.com/go-git/go-git/v5 v5.1.0 // indirect
github.com/go-kit/kit v0.12.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/goccy/go-yaml v1.9.4 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/gateway v1.1.0 // indirect
github.com/golang/glog v1.0.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.0.1 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/google/orderedcode v0.0.1 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa // indirect
github.com/googleapis/gax-go/v2 v2.4.0 // indirect
github.com/googleapis/go-type-adapters v1.0.0 // indirect
github.com/gookit/color v1.5.0 // 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/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/gtank/merlin v0.1.1 // indirect
github.com/gtank/ristretto255 v0.1.2 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-getter v1.6.1 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-version v1.4.0 // indirect
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect
github.com/iancoleman/strcase v0.2.0 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/jpillora/ansi v1.0.2 // indirect
github.com/jpillora/backoff v1.0.0 // indirect
github.com/jpillora/chisel v1.7.7 // indirect
github.com/jpillora/requestlog v1.0.0 // indirect
github.com/jpillora/sizestr v1.0.0 // indirect
github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect
github.com/klauspost/compress v1.15.1 // indirect
github.com/lib/pq v1.10.6 // indirect
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-zglob v0.0.3 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 // indirect
github.com/minio/highwayhash v1.0.2 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/sys/mount v0.3.1 // indirect
github.com/moby/sys/mountinfo v0.6.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/opencontainers/runc v1.1.3 // indirect
github.com/otiai10/copy v1.6.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.2 // indirect
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_golang v1.12.2 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.34.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/radovskyb/watcher v1.0.7 // indirect
github.com/rakyll/statik v0.1.7 // indirect
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect
github.com/regen-network/cosmos-proto v0.3.1 // indirect
github.com/rs/cors v1.8.2 // indirect
github.com/rs/zerolog v1.27.0 // indirect
github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect
github.com/sergi/go-diff v1.2.0 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.12.0 // indirect
github.com/subosito/gotenv v1.4.0 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
github.com/takuoki/gocase v1.0.0 // indirect
github.com/tendermint/btcd v0.1.1 // indirect
github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect
github.com/tendermint/go-amino v0.16.0 // indirect
github.com/tendermint/spn v0.2.1-0.20220801133447-6737a26cb12d // indirect
github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect
github.com/ulikunitz/xz v0.5.8 // indirect
github.com/xanzy/ssh-agent v0.2.1 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
go.opencensus.io v0.23.0 // indirect
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 // indirect
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
google.golang.org/api v0.84.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/ini.v1 v1.66.6 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
nhooyr.io/websocket v1.8.6 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)

replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1

Thank you

@tbruyelle
Copy link
Contributor

github.com/cosmos/cosmos-sdk v0.46.0

So this is again unexpected, I can reproduce the error with a client that depends on cosmos-sdk version <v0.46, but with an up-to-date client, you shouldn't have this error!

@olfa-dallel-enit
Copy link
Author

Hello,

@tbruyelle
I tried to redo the blog tuto with github.com/cosmos/cosmos-sdk v0.46.1, but I got the same error while running
go run main.go
2022/08/27 09:27:10 unable to unmarshal item.Data, err: Bytes left over in UnmarshalBinaryLengthPrefixed, should read 10 more bytes but have 152
exit status 1

these are the repositories for both blog and blogclient projects
https://github.com/olfa-dallel-enit/blog
https://github.com/olfa-dallel-enit/blogclient

the ignite version is:
Ignite CLI version: development
Ignite CLI build date: 2022-08-27T08:06:51
Ignite CLI source hash: f17cab1
Your OS: linux
Your arch: amd64
Your Node.js version: v16.15.1
Your go version: go version go1.18.1 linux/amd64
Your cwd: /workspace/ignite/.gitpod/blogclient
Is on Gitpod: true

Thank you

@tbruyelle
Copy link
Contributor

tbruyelle commented Aug 29, 2022

Hello @olfa-dallel-enit , thanks for this I was able to reproduce the issue with your code and debug it.

So as expected, when you run ignite chain serve in blog, it creates a keyring that is properly protobuf encoded, because your chain depends on cosmos-sdk 0.46.1. Since blogclient depends on the same version, it should be able to decode this keyring, but unfortunately, there's an error during the protobuf decode, and so it fallbacks to amino decode and finally returns the amino decode error Bytes left over in UnmarshalBinaryLengthPrefixed.

The related code in cosmos-sdk:

	// 2. Try to deserialize using proto
	k, err := ks.protoUnmarshalRecord(item.Data)           // <--- ERROR HAPPENS HERE
	// 3. If ok then return the key
	if err == nil {
		return k, nil
	}

	// 4. Try to decode with amino
	legacyInfo, err := unMarshalLegacyInfo(item.Data)
	if err != nil {
		return nil, fmt.Errorf("unable to unmarshal item.Data, err: %w", err)   // <--- RETURNED ERROR
	}

ref https://github.com/cosmos/cosmos-sdk/blob/bc274d8d950f5be972c47fce370059bdeec130f2/crypto/keyring/keyring.go#L925-L936

Using delve, I was able to print the protobuf decode error, it's no registered implementations of type types.PubKey. So it's not really a decoding issue, it's something else related to type registration. Unfortunately because of this migration, the real error is not exposed properly.

Note that if you use the latest develop of CLI (easiest way for that is to clone the CLI repo and add a replace in your blogclient's go.mod), you no longer have the problem, I need to understand what has been fixed between the 2...

@tbruyelle
Copy link
Contributor

@olfa-dallel-enit I got the confirmation from the team we had to manually register some types [0] due a recent change in cosmos-sdk. I don't know why but the cosmos-sdk team removed that type registration.

To conclude, use the latest CLI to fix that bug 🤝

[0]

cryptocodec.RegisterInterfaces(interfaceRegistry)

@olfa-dallel-enit
Copy link
Author

@tbruyelle

Thank you very much

@tbruyelle
Copy link
Contributor

Feel free to close the issue if using the latest CLI worked for you.

@tbruyelle tbruyelle self-assigned this Aug 30, 2022
@aljo242
Copy link
Contributor

aljo242 commented Oct 27, 2022

It looks like this issue is overall resolved. If you have more info or have other concerns please open a new issue :).

@aljo242 aljo242 closed this as completed Oct 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants