|
|
## Census HTTP service
Reference implementation of a voting census service running on the Vocdoni platform
#### Compile
In a GO ready environment:
``` go get -u github.com/vocdoni/dvote-census go build -o censusHttpService github.com/vocdoni/dvote-census/cmd/censushttp ```
#### Usage
`./censusHttpService <port> <namespace>[:pubKey] [<namespace>[:pubKey] ...]`
Example:
``` ./censusHttpService 1500 Got_Favorite 2019/02/01 20:01:15 Starting process HTTP service on port 1500 for namespace GoT_Favorite 2019/02/01 20:01:15 Starting server in http mode ```
#### add claims
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow"}' http://localhost:1500/addClaim
{"error":false,"response":""} ```
If public key authentication enabled, `signature` field is required using Nancl signature.
The signed message is expected to be a concatenation of the following fields: `censusID, claimData, timeStamp`
There is a time window of 10 seconds while the signature is considered valid.
``` curl -d '{"censusID":"GoT_Favorite", "claimData":"Jon Snow", "timeStamp":"1547814675", "signature":"a117c4ce12b29090884112ffe57e664f007e7ef142a1679996e2d34fd2b852fe76966e47932f1e9d3a54610d0f361383afe2d9aab096e15d136c236abb0a0d0e"}' http://localhost:1500/addClaim
{"error":false,"response":""} ```
#### generate proof
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow"}' http://localhost:1500/genProof
{"error":false,"response":"0x000000000000000000000000000000000000000000000000000000000000000352f3ca2aaf635ec2ae4452f6a65be7bca72678287a8bb08ad4babfcccd76c2fef1aac7675261bf6d12c746fb7907beea6d1f1635af93ba931eec0c6a747ecc37"} ```
#### check proof
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow", "proofData": "0x0000000000000000000000000000000000000000000000000000000000000000000123"}' http://localhost:1500/checkProof
{"error":false,"response":"invalid"} ```
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow", "proofData": "0x000000000000000000000000000000000000000000000000000000000000000352f3ca2aaf635ec2ae4452f6a65be7bca72678287a8bb08ad4babfcccd76c2fef1aac7675261bf6d12c746fb7907beea6d1f1635af93ba931eec0c6a747ecc37"}' http://localhost:1500/checkProof
{"error":false,"response":"valid"} ```
#### make snapshot
Snapshots are static and unmutable copies of a specific census
``` curl -d '{"censusID":"GoT_Favorite"}' http://localhost:1500/snapshot
{"error":false,"response":"0x8647692e073a10980d821764c65ca3fddbc606bb936f9812a7a806bfa97df152"} ```
The name for the snapshot is "0x8647692e073a10980d821764c65ca3fddbc606bb936f9812a7a806bfa97df152" which represents the Root Hash.
Now you can use it as censusID for checkProof, getRoot, genProof and dump. But addClaim is not longer allowed.
#### dump
Dump contents of a specific censusID (values)
``` curl -d '{"censusID":"GoT_Favorite"}' http://localhost:1500/dump {"error":false,"response":"[\"Tyrion\",\"Jon Snow\"]"} ```
##### add claims
``` curl -d '{"processID":"GoT_Favorite","claimData":"Jon Snow"}' http://localhost:1500/addClaim {"error":false,"response":""} ```
``` curl -d '{"processID":"GoT_Favorite","claimData":"Tyrion"}' http://localhost:1500/addClaim {"error":false,"response":""} ```
##### generate proof
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow"}' http://localhost:1500/genProof {"error":false,"response":"0x000000000000000000000000000000000000000000000000000000000000000352f3ca2aaf635ec2ae4452f6a65be7bca72678287a8bb08ad4babfcccd76c2fef1aac7675261bf6d12c746fb7907beea6d1f1635af93ba931eec0c6a747ecc37"} ```
##### check proof
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow", "proofData": "0x0000000000000000000000000000000000000000000000000000000000000000000123"}' http://localhost:1500/checkProof {"error":false,"response":"invalid"} ```
``` curl -d '{"censusID":"GoT_Favorite","claimData":"Jon Snow", "proofData": "0x000000000000000000000000000000000000000000000000000000000000000352f3ca2aaf635ec2ae4452f6a65be7bca72678287a8bb08ad4babfcccd76c2fef1aac7675261bf6d12c746fb7907beea6d1f1635af93ba931eec0c6a747ecc37"}' http://localhost:1500/checkProof {"error":false,"response":"valid"} ```
|