baking-bad/tzkt

Protocol not supported issue

Closed this issue · 13 comments

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

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.

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

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.

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

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 :)

adding support of the new protocol to the indexer means?

Groxan commented

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

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

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).

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

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

Thanks for the help till now :)

Groxan commented

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