Closed AntoineRondelet closed 4 years ago
Sure, thanks for the message @dannywillems!
As of now, the "Proof Consumer" (PC for short) is just implemented as a bunch of Python scripts (see the pyClient
folder). These scripts execute a "mock" scenario with Alice, Bob and Charlie doing Ether or ERC20 transfers in zero knowledge (the scripts call the "Proof Generator" via RPC calls and use the received proofs to call the "Mix" function of the Mixer smart contract, to effectively do private transfers).
In this issue, we propose to enhance usability of zeth by having a better way to interact with the Proof Generator and the Mixer smart contract to do private asset transfer. In fact, rather than writing your script describing the scenario you'd like to test; it'd be great to have a CLI that enables the user to enter the payment informations, then call the PG on the given inputs to get a proof and then call the Mixer to execute the transfers.
As mentioned on the comment above, the purpose of this issue is to have a basic CLI to enable users to do payments via the Zeth contract. Thus, the basic functionalities desired are:
Payment
, something like zeth pay [options and args]
Receive
a payment zeth receive [options and args]
, see https://github.com/clearmatics/zeth/issues/11 (note we logged the addresses of the inserted commitments on the Mixer contract to ease this check). Here we basically need to listen to the mixer events to try to decrypt the ciphertexts logged/emitted (are we the recipients?) + we need to recompute the commitment(s) and check it(them) against the one(s) appended in the merkle tree to make sure the payment is valid. Note, this command should be quite similar to the one to run a note recovery procedure (imagine a hardware failure that yields a loss of the content of the coin store), something like zeth scan/recover --keyfile [yourViewingKeyFile] --depth [depthOfTheScan]
. This would scan the blockchain up to the specified depth and try to repopulate the coinstore - ie: run the receive function constantly from the specified depth to the last block - (here we assume that the content of the keystore
was backed up). If a payment is successfully received, then we write the note in a file in the coinstore (like already done in the test scripts, see https://github.com/clearmatics/zeth/blob/61a224a43eb7fe98e7a0ad93069fa83fa75b3830/pyClient/zethUtils.py#L104-L120).I wrote some more infos on how the flow would work, here some time ago: https://github.com/clearmatics/zeth/tree/master/coinstore
Closing this issue since the corresponding PR has been merged
Can you give a bit more info pls? What do you want exactly?