Error: Computed hash does not match remote hash


Hi Everyone at Blockcerts!
In the last few months, with a friend, we’ve been building a Cert-Tools for creating the certs Jsons, the Issuers Jsons, and the revocation list Jsons in Java languaje instead of python.
We followed the Openbadges specification to create the certificates (
Here are two unsigned and signed credentials, one created with Cert-tools and the other one with Java-tools. They are ziped in a drive folder because I couldnt share them otherwhise.
If you check the values from both tools, we have a slight diference in ordering them, but we built every field.
I ran them through the Cert-Issuer and both passed and were pasted in the Bitcoin Testnet, but when I try to verify the Java cert in I get an error when comparing the hashes. Ive looked at the Bitcoin transaction OP_Return and the hashes inside the Jsons and they are the same.

Does anyone know where the error is? A friend mentioned me that there are several ways to encode a Json, and maybe thats the issue?
Thanks in advanced to everyone for the help :slight_smile:
Ps: Ive ran the verification process in local mode through the cert-viewer and it ran fine in both credentials.


Sorry for the delay on responding.

Yeah this is interesting. So our python cert-verifier thinks it’s okay, but our cert-verifier-js project (which is part of the verifier on is pulling a different local hash.

Expected: 673a2cb17e5c8b4786519a77eadaa1d60bf585e7f5fe9e06f532243390451143
Actual: 0b7eb59edfdad755e56871d2799a28ac7e5e2c1742ceab795a9a7f389d55e274

Not sure what the difference is between the python and javascript hashing, but your friend might be right on the json part. I haven’t inspected your certificate with a fine comb yet, but I’ll try to get to it at some point today. I wonder what the differences are.


Hi @aronning!
We thought so too, we are still developing our tool, and we started investigating Cert-Verifier-JS also :slight_smile:
Ive built a JSON by hand that looks Exactly as the one by Cert-Tools-Python, I Paste it in the same drive that I shared. Im waiting to Issue it, but the Testnet is under some kind of attack because its only procesing Tx that have 5000 Sat/byte fee, and Cert-Issuer only emits 250 Sat/byte Fee.
By the way, do you know how to configure the fee so I can Issue some credentials???
Thanks in advanced for all the help


Yeah, take a look at this file for some of the environment variables you can set in your config: