olalonde / proof-of-liabilities

Proof of Liabilities (PoL) is a scheme designed to let companies that accept monetary deposits from consumers (e.g. Bitcoin exchanges, gambling websites, online Bitcoin wallets, etc.) prove their total amount of deposits (their liabilities) without compromising the privacy of individual users.

Home Page:http://olalonde.github.io/proof-of-liabilities

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A few changes to the specification

olalonde opened this issue · comments

commented

@zw and myself (mostly zw) have worked on updating the specification to address some potential issues and make the serialization format more formal in order to facilitate interoperability of implementations.

The current README file is up to date and the diff of what has changed can be seen here: https://github.com/olalonde/proof-of-liabilities/pull/18/files

Notable changes:

  • value becomes sum
  • SHA256 hashes are now hex-encoded instead of base64-encoded
  • nonces now have explicit advice on length and specified hex encoding
  • numbers are serialized as JSON strings
  • convention on producing accounts trees deterministically, to ensure predictable root hashes and facilitate implementations testing

You can test your implementation against mine, but it is possible I got something wrong in my own implementation so if your output doesn't match, create an issue instead of banging your head on the keyboard.

cc @gmaxwell @janx @FredericHeem @ConceptPending @bifubao

commented

Paging @intelliot --- we'd welcome your involvement too!

In section https://github.com/olalonde/proof-of-liabilities#root-node-1:

use the code that Bloomberg uses (e.g. XBT for Bitcoin)

I suggest using BTC as it's used everywhere and everyone knows what it stands for. We can draw up a list of code for cryptocurrencies as appendix.

commented

We can draw up a list of code for cryptocurrencies as appendix.

Yes that would not be a bad idea. I agree that BTC is probably more widely used and recognized than BTC.

With regards to the code list, I am working on a later release of X-ISO4217-A3 which would be better published on Github rather than through the IETF who are too slow with Internet Standards Drafts (sometimes they don't submit properlty, etc.). More info here: http://www.ifex-project.org/our-proposals/x-iso4217-a3 ... (Essentially, a registry prefix character is adopted to programatically clarify the namespace, ie. Euro is encoded as ZEUR as it is ISO issued, Bitcoin is XBTC as it is is not ISO issued.)