Hacker News new | ask | show | jobs
by lonestar 6012 days ago
The section on "verifiable computation" is interesting: http://www.enchiladacode.nl/technology.html#verifyable

"Every ID of an Enchilada Value is calculated by taking the SHA1 hash of the Value's contents."

The docs suggest that this can be used in a consensus protocol. Many nodes can compute the same result, and quickly test for equality by comparing the ID. Seems nice to have this built-in to the language, but I have to wonder:

a) Why SHA1? Why not a member of the SHA2 family? b) If you're creating a distributed system and want to implement a consensus protocol, a hash ID isn't really sufficient. Who is going to end up using this feature?

1 comments

can you expand on why hash isn't sufficient for consensus? (i am just curious - i know nothing about this, but it seems like as long as the hash space is large enough that there are no collisions in the age of the universe etc etc..)
The hash could be used as the response in a consensus protocol, but it looks like Enchilada leaves building that protocol up to the developer.

So like I said, it's nice to have that hash for every reference, but I wonder if it's worth the storage overhead, and if a developer will use it when he's building his own distributed system anyway.

ah, ok, thanks. for "simple" values they wouldn't need to actually store the hash. instead they could use, for example, the actual value of an int, byte, float etc, xored with a type-specific base (but it wouldn't be that great as a hash in, say, a hash table - better to use some function that preserves uniqueness but disperses related values). that would mean they only need to store large hashes for composite structures.

edit: i am making life too complicated. in short, if it can be calculated quickly, it doesn't have to be stored.