Skip to content
ying tong edited this page Dec 2, 2019 · 2 revisions

Climate Action Tracking & Data Sharing

Open Climate Collabathon 2019 (Yale-NUS College, Singapore)

Architecture

Blockchain for data availability + smart contract enforcement

  • data analysis smart contract
  • encrypted emissions data (PoC: assume numerical and standard data format)
  • goal fulfilment smart contract
  • publicly declared reductions goals
  • stake deposit

Trusted execution environment (TEE) for machine learning

  • INPUT: encrypted data, ML weights
  • COMPUTE: sentiment analysis for bad actor prediction, data cleaning, outlier detection
  • OUTPUT: cleaned encrypted data, bad actors, updated ML weights

Homomorphic statistical aggregation

  • INPUT: cleaned encrypted data
  • COMPUTE: aggregate statistics on cleaned encrypted data
  • OUTPUT: decrypted aggregate result, proof of decryption

Incentives

  • Reporting accurate data
  • Making reduction commitments
  • Fulfilling reduction commitments

Demo

Data verifier

(Main repository: https://github.com/openclimate-sg/data_verification) Sometimes emissions data can be misreported. This script does some simple checks to ensure that the numbers reported are not too ridiculous.

Usage

  1. Ensure that your file headers are of a similar format
"population", "baseline_emissions", "baseline_year", "total_co2_emissions", "total_co2_emissions_year"
  1. Run the script on your .csv file

  2. It for each line in your file whether it passes the following:

  • per capita co2 emissions
  • per capita baseline emissions
  • compound annual growth rate of emissions
  • co2 vs baseline emissions

Data whistleblowing

(Main repositories: https://github.com/openclimate-sg/datawhistleblowing, https://github.com/openclimate-sg/datawhistleblowing_ui)

For the purposes of this hackathon, we have implemented a simple proof of concept. We use as an example a solar energy farm which is required to report its daily power production. We also assume that this farm is a corporation with 5 executives.

Each executive registers their cryptographic identity into an Ethereum smart contract (based on Semaphore (https://weijiekoh.github.io/semaphore-ui/, https://github.com/kobigurk/semaphore/), a zero-knowledge signalling gadget), so that anyone can anonymously prove their membership in the set and broadcast a whistleblowing signal.

We then simulate the following process of the company reporting data, along with a deposit, for five days in a row, and an executive anonymously blowing the whistle on data reported on the fifth day. This locks up part of the total deposit. After an investigation (outside the system), an investigator then seizes part of the total amount deposited, and rewards part of the seized funds to a separate address specified by the whistleblower when she blew the whistle earlier.

Demo

  1. On day 1, the solar farm publishes their true power readings on a smart contract and deposits 0.1 ETH along with the data.
  2. The solar farm does the same for days 2, 3, and 4.
  3. On day 5, however, the solar farm reports false power readings.
  4. Alice, an executive in the corporation, decides to blow the whistle on this false reading. She produces a zero-knowledge proof of her membership in the set of executives, states that the readings of day 5 are fraudulent, and publishes it. Most importantly, the proof does not reveal Alice’s identity.
  5. The smart contract locks up 0.2 ETH of deposits pending the results of an external investigation.
  6. We assume that the investigator is a trusted third party. They hold the administrative private key with which they can unlock the farm’s deposit, or trigger the confiscation of said funds. Alice is rewarded a portion of the deposit for correctly whistleblowing, with this portion determined by the rules agreed upon, and saved in the smart contract. In this demo, she is rewarded 0.1 ETH. For the sake of anonymity, we assume that her payout address, specified along with the zero-knowledge proof, is unlinked to the address used to register her identity.