Proof of block commit

Hi

Is there any way to see the block committee as a proof of a block?
I used the SDK but I couldn’t find a way to find a proof for a given block.

For verifying block N, you need to have a valid block N-1 and a proof for block N. Right? So how can I check this proof?

I am also curios to know if Algorand stores signatures from committee members as a proof for a block.
If yes, how can I check them?
If no, why?

1 Like

@mostafa ,

When the algorand node catchup, it retrieve a block(N) along with a certificate.
It verifies that the block(N) is valid by checking the signatures on the certificate.
The signature on the certificate is the collection of cert committee signatures from the agreement.

So, to sum this up: by having a node catchup up, you already have the block verified.
The information is not available via a REST API, but its stored in the local blocks database. You could dig into the source code to find how the validation is being done; You can look here as a starting point : go-algorand/certificate.go at master · algorand/go-algorand · GitHub

1 Like

So there is no way for a user to see a block’s certificate?

No; I don’t see any reason an end-user would be interested seeing that certificate.

The node is an open source, so you could verify that your node gets all block and verifies them.
Beyond that point, you can use the above assumption and rely on that. ( i.e. all the blocks that your node has have been verified - no need to revisit that )

As I’m sure you’ve seen in the codebase, the verification isn’t trivial, and exposing the certificate signatures wouldn’t be valuable if you can’t present the verification “path” as well.

For the very few users that would need more, I would suggest decoding the msgp-raw block and take a look of the signatures there. But I don’t think there would be too many users doing so.

1 Like

This a naive, unprofessional and unacceptable excuse (not response).

Proof-Of-xxx means I do xxx to make sure the block is valid. In bitcoin it is a hash. In dPoS is signature form the set of delagated validators. In Algorand it supposed to be Committee’s signature. Right? Please don’t say go and dig it? Show it to me. Otherwise the whole system is untrustworthy.

I would like to know:

  • How many online users are participating in block producing?
  • How decentralized is committee?
  • How many times an online user has proposed blocks yet?
  • How many signature each block has?
  • How much is the size of block commit

I am expecting a professional response.

1 Like

Hey There!

We’re all part of a community here looking to help and learn from others. I appreciate your questions and, like Tsachi, will try to help answer them.

The reason that Tsachi is saying that the project is open source and therefore you can validate yourself is important. Your responses indicate that you don’t trust the protocol is doing what it should without some additional verification (trust but verify) - thats a great attitude to have. However, if you don’t trust the protocol directly, it seems strange that you would trust a forum member to verify it for you :slight_smile: By being open source, you can check the code your self and be completely sure that it is doing what it is supposed to be doing and not rely on anyone or anything else to interpret it for you. So, to be COMPLETELY sure, checking the code, as Tsachi suggested, is the best route.

In addition, the answers to the questions that you’re asking can be derived from public network data. If you run a node you can gather the statistics and report out on them yourself. Again, in a situation where you are (reasonably) skeptical about the veracity of a claim self validation is always the best course.

However, if you’d like some answers from me, there are roughly 200-210 unique block voters over the course of a week. Anyone can be a voter and the current bar in terms of how many algos you would need to be selected is on the order of 2500. I don’t have the number of signatures off hand, but block sizes are roughly 1MB (or smaller depending on how full they are).

You can see some other network metrics here: https://metrics.algorand.org/

Thanks for joining our community!

1 Like

@paul

Thanks for the quick respond.

I would like to bring a quote from Ken Thomposn here: "You can’t trust code that you did not totally create yourself."

Let me bring another quote from bitcoin white paper: "Conclusion: We have proposed a system for electronic transactions without relying on trust."

Blockchain and trust problem

In my point of view, blockchain solves issues of data “Trust” between arbitrary actors. But it doesn’t mean we can have an absolute trustlessness system. We need minimum level of trust in blockchain.

Bitcoin offers a cryptographic hash as a proof. If you know block N is valid, with high level of certainty you can make sure block N+1 also is valid, without digging into bitcoin source code.

In delegated Proof-of-stake, minimum level of trust is cryptographic signature(s) from validators.

So what is this minimum level of trust in Algorand? Is it the source code?
Please give me the right to not accept it.

Do you have any plan for a rich of statistical report about accounts activities like proposing block or validating proposal, etc.?