baking-bad / tzkt

😼 Awesome Tezos blockchain indexer and API
https://tzkt.io
MIT License
183 stars 35 forks source link

Protocol not supported issue #160

Closed nasbasarin closed 10 months ago

nasbasarin commented 10 months ago

I was trying to setup tzkt explorer for my tezos sandbox node. but it says protocol not supported.

fail: Tzkt.Sync.Services.Observer[0] Failed to apply updates System.NotImplementedException: Protocol 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK' is not supported at Tzkt.Sync.TezosProtocols.GetProtocolHandler(IServiceProvider services, Int32 level, String protocol) in /app/Tzkt.Sync/Protocols/TezosProtocols.cs:line 55 at Tzkt.Sync.ProtocolHandler.CommitBlock(Int32 head) in /app/Tzkt.Sync/Protocols/ProtocolHandler.cs:line 84 at Tzkt.Sync.ProtocolHandler.CommitBlock(Int32 head) in /app/Tzkt.Sync/Protocols/ProtocolHandler.cs:line 130 at Tzkt.Sync.Services.Observer.ApplyUpdatesAsync(CancellationToken cancelToken) in /app/Tzkt.Sync/Services/Observer/Observer.cs:line 183 at Tzkt.Sync.Services.Observer.ExecuteAsync(CancellationToken cancelToken) in /app/Tzkt.Sync/Services/Observer/Observer.cs:line 66

can't i use alpha protocol with tzkt ?

Groxan commented 10 months ago

Alpha protocol is actually not a protocol, but sort of an alias for "the next version". In other words, it's a "development branch" in the Tezos repo. So, on the TzKT side it's practically impossible to have a protocol handler for alpha, because it changes every day, with no announcements, with no documentation, with no change log. And without a protocol handler TzKT is simply unable to index the protocol.

However, you can specify a fallback protocol in the settings, that will make TzKT use the hadler of that fallback protocol for all unknown protocols, including alpha. But keep in mind that stability of the indexer and correctness of indexed data are not guaranteed in case of using a fallback protocol.

nasbasarin commented 10 months ago

i have included the fallback protocol in the settings but still getting the error and i can't see the appsettings.json file is updated in the tzkt-sync docker container. is there any way to verify it? "Protocols": { "Diagnostics": false, "Validation": true, "Fallback": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK" },

tzkt@55935350b5ee:/app$ cat appsettings.json { "Protocols": { "Diagnostics": false, "Validation": true, "Fallback": null },

Groxan commented 10 months ago

Fallback is what TzKT will use for processing unknown protocols. You cannot use alpha as a fallback, because alpha is an unknown protocol :) Use one of supported protocols, for instance PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf.

If you make changes in the appsettings.json, you have to rebuild docker images. As an alternative to appsettings.json, you can simply pass it via env vars (env vars override appsettings.json): just add Protocols__Fallback=Pt... in the docker-compose.yml.

nasbasarin commented 10 months ago

there is another error after resolving unknown protocol --> fail: Tzkt.Sync.Services.Observer[0] Failed to apply updates Tzkt.Sync.ValidationException: Validation exception - invalid block reward at Tzkt.Sync.Protocols.Proto17.Validator.ValidateBlockMetadata(JsonElement metadata) in /app/Tzkt.Sync/Protocols/Handlers/Proto17/Validation/Validator.cs:line 107 at Tzkt.Sync.Protocols.Proto17.Validator.ValidateBlock(JsonElement block) in /app/Tzkt.Sync/Protocols/Handlers/Proto17/Validation/Validator.cs:line 29

Groxan commented 10 months ago

That error caused by breaking changes in the new protocol (comparing to Nairobi, that you use as a fallback), so the indexer stops indexing, because it simply doesn't know how to index that.

So, in this case you can do nothing, except for adding support of the new protocol to the indexer :)

nasbasarin commented 10 months ago

adding support of the new protocol to the indexer means?

Groxan commented 10 months ago

Adding support of a new protocol means writing a code that will handle new protocol behavior

nasbasarin commented 10 months ago

i was creating a sandboxed private network using Tezos rolllup and therefore, used Alpha as the protocol. If I also want to use an explorer, is there any other other protocol that I can use or any explorer that I can use?

Groxan commented 10 months ago

I also want to use an explorer

Just for your information, this repo is not about an explorer, but a blockchain indexer with API.

is there any other other protocol that I can use

At the moment TzKT supports the following protocols, so you can run your sandbox on any of them.

or any explorer that I can use?

As far as I know, there are no indexers supporting alpha (due to reasons I described above).

nasbasarin commented 10 months ago

to use these protocols i couldn't find supported octez binaries for most of the protocols in the tezos development environment after the setup.

Groxan commented 10 months ago

I see. Not sure if I can help you with that, because it is out of TzKT's scope...

nasbasarin commented 10 months ago

Thanks for the help till now :)

Groxan commented 10 months ago

Alright, since your question has been answered, I'm closing this issue. Feel free to open a new one if you have any other issues