maryannxy / geo-probabilistic-proof-of-location

Smart Contract to provide a probabilistic model for determining Proof of Location

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Geo Probabilistic Proof of Location

logo

A. Proof Generation

  1. User visits verifying node $V_0$
  2. User signs message $sig_{user} = ECSign(latestBlockNum, latestBlockHash, UUID, K^{private}_{user})$
  3. $V_0$ randomly selects $k-1$ verifying nodes $[V_1..V_{k-1}]$
  4. $[V_0..V_{k-1}]$ signs ring signature $sig_{ring} = RingSign(sig_{user}, K^{private}{V_0}, K^{public}{[V_0..V_{k-1}]})$
  5. Proof $Pr = (sig_{user}, sig_{ring})$ is given to the user.
  6. User logs the proof via an Ethereum transaction at time $T_{log}​$.
  7. $Pr$ proves that there's a $\frac{1}{k}$ probability that the user visited $V_0$ at sometime between $latestBlockHash$ and $T_{log}$

B. Proof Verification

  1. Check that $ECRecover(keccak256(latestBlockNum, latestBlockHash, UUID), sig_{user}) == user.address$
  2. Check that $RingVerify(sig_{ring}, sig_{user}, K^{public}{[V_0..V{k-1}]})$

About

Smart Contract to provide a probabilistic model for determining Proof of Location


Languages

Language:CoffeeScript 62.8%Language:HTML 18.7%Language:JavaScript 18.0%Language:CSS 0.5%