Is this a process that can be automated / carried out without an outside auditor?
Yes, see
https://github.com/olalonde/proof-of-solvencyGreat work guys, congratulations.
I'm afraid one piece of the puzzle seems still open to me. The audit proves that everyone's balance is represented in the Merkle tree, but not that the same bitcoins aren't backing two people's accounts at the same time. That is, there's no way to check against the following scenario:
USER1 audit page:
Submission code: 379377cd8190f9bf
Amount: 0.01500000
USER2 audit page:
Submission code: 379377cd8190f9bf
Amount: 0.01500000
Thankfully, this proof gap can be resolved without an auditor, and in an anonymous way.
I propose the following three-step scheme. (step 1) Kraken generates a 64-bit nonce for each account in the system. They publish this nonce on each user's account page, as follows:
USER1 audit:
Submission code: 379377cd8190f9bf
Nonce: fa132f44d7e35e0f
Amount: 0.01500000
(step 2) Kraken publish a signed document with the anonymized account name for each submission code:
$submission_code: sha256($nonce || ":" || $username)
For USER1 in our example, sha256("fa132f44d7e35e0f:USER1")=b7000194f1327aeb9b16f6104333fc889dd2f4c3cdba1eb3500d91ca5efc8208, so the document would contain:
379377cd8190f9bf: b7000194f1327aeb9b16f6104333fc889dd2f4c3cdba1eb3500d91ca5efc8208
(step 3) Users will verify not only that their submission code exists in the Merkle tree, but also that the submission code cannot correspond to any other account by calculating the sha256 as above and verifying that it corresponds to the submission code.
(end of scheme)
The only drawback I see is that this will make public the number of accounts in the Merkle tree, but I don't think this should be a problem.
Let me know what you think.
This problem is addressed in the standard proposed here:
https://github.com/olalonde/proof-of-liabilities/#leaf-nodeBy the way, I'm not sure I understand how Kraken users are supposed to do the verification. Are they given a tree in order to compute the root? If so, would anyone mind sharing the tree they were given so that I can make
http://syskall.com/proof-of-liabilities/#verify compatible with their format (this will reveal your balance on Kraken)? Let's be realistic, most users will never verify the code if it involves writing some code.