I'd be happy with:

> This hashed representation **must** be in the shortest possible form allowed by the regular expression without sacrificing any trailing non-zero digits, and must never use more decimal places than required to represent the currency's [smallest subunit](https://en.wikipedia.org/wiki/Denomination_%28currency%29#Subunit_and_super_unit).  Examples:
> * given 0, use `0`, not `0.0` or `0.000`
> * given 1.23 use `1.23`, not `1.230` or `1.23000000`

I'm not sure if the "smallest subunit" requirement is really necessary. Implementations would have to maintain a list of (currency, subunit) and as you mentioned, some exchanges might extend those subunits.

If you agree, please update the pull request to reflect this new "hashed representation" and I will merge. (don't forget line [327](https://github.com/olalonde/blind-liability-proof/pull/18/files#diff-04c6e90faac2675aa89e2176d2eec7d8R327) and a few places where you computed hashes as examples (sorry))