@energyweb/issuer

<p align="center"> <a href="https://www.energyweb.org" target="blank"><img src="../../../docs/images/EW.png" width="120" alt="Energy Web Foundation Logo" /></a> </p>

Usage no npm install needed!

<script type="module">
  import energywebIssuer from 'https://cdn.skypack.dev/@energyweb/issuer';
</script>

README

Energy Web Foundation Logo

Issuer

Description

The Issuer package contains smart contracts and interfaces that handle the management of Energy Attribute Certificates on the blockchain.

It is a component of Energy Web Origin's Traceability SDK.

Documentation

Contributing Guidelines

See contributing.md

Energy Web Decentralized Operating System

EW-Origin is a component of the Energy Web Decentralized Operating System (EW-DOS).

The purpose of EW-DOS is to develop and deploy an open and decentralized digital operating system for the energy sector in support of a low-carbon, customer-centric energy future.

We develop blockchain technology, full-stack applications and middleware packages that facilitate participation of Distributed Energy Resources on the grid and create open market places for transparent and efficient renewable energy trading.

  • To learn about more about the EW-DOS tech stack, see our documentation

For a deep-dive into the motivation and methodology behind our technical solutions, read our White Papers:

Connect with Energy Web

License

This project is licensed under the MIT License - see the LICENSE file for details

Notes:

prevCommitment is required to prevent state corruption, transition to new commitment based on other state that's currently on-chain will result in error.

Implementation:

  • Certificate owner A has 1000kWh of energy on certificate id = 1 (C1)
  • A requesting private transfer of 500kWh from C1 to B
    • A calls API with (id, value, newOwner) in our case (1, 500000, B)
    • if API approves the transfer (enough balance, maybe other API checks)
      • API returns (updatedBalanceOfA, salt) in our case (500000, 'randomsalt')
      • A creates onChain request where hash = hash(address, updatedBalanceOfA, salt) in our case hash(A, 5000000, salt)
      • Issuer - approves by sending new commitment that is verified against the request.hash