Origin is a set of toolkits that together provide a system for issuance and management of Energy Attribute Certificates (EACs). This repository is an entry point to Origin systems. It has a goal of explaining briefly the whole system and providing you with insight and info where to explore next.
- Packages
- Installation
- Energy Attribute Certificates
- Key modules and components
- Deployment
- Contribution guidelines
Package | Stable | Canary | Description |
---|---|---|---|
@energyweb/device-registry |
Contracts and client for the Device Registry | ||
@energyweb/market-matcher-core |
Matching rules and logic for market-matcher | ||
@energyweb/market |
Contracts and client for the Origin Marketplace | ||
@energyweb/origin |
Contracts and client Origin Issuer of certificates | ||
@energyweb/origin-backend-client |
Client library for off-chain data source | ||
@energyweb/origin-backend |
Example backend for storing off-chain meta-data | ||
@energyweb/user-registry |
Contracts and client for the User Registry | ||
@energyweb/utils-general |
Utilities |
Package | Description |
---|---|
@energyweb/origin-ui |
UI for Origin |
@energyweb/market-matcher |
Off-chain agent for demand and supply matching |
@energyweb/solar-simulator |
Solar production and consumption simulator |
@energyweb/event-listener |
Listens to Origin events, triggers actions on-chain and sends notifications |
@energyweb/migrations |
Deployment and configuration utilities |
Make sure have latest yarn
package manager installed.
yarn
yarn build
yarn test
Make sure you have created a .env
file in the root of the monorepo and that all necessary variables are set.
Use .env.example
as an example of how the .env
file should look.
After you have the .env
file created, run the following command:
yarn run:origin
Visit the UI at: http://localhost:3000.
Energy Attribute Certificates, or EACs, is an official document which guarantees that produced energy comes from a renewable source. There are different standards that regulate how data is stored and validated. In Europe, this document is called Guarantee of Origin (GO), in North America, it's called Renewable Energy Certificate (REC), and in parts of Asia, Africa, the Middle East, and Latin America governing standard is International REC (I-REC). Standards do vary, but they all share the same core principles.
The main purpose of EACs is to act as an accounting vehicle to prove that consumed energy came from a renewable source. EACs are mostly used to address sustainability reports regarding Scope 2 emissions.
Overview of architecture
This section lists key entry points to start your journey with Origin.
- migrations - repository with build scripts that enable easy deployment of smart contracts to EWC, Volta or a local blockchain. Often used to demo and get to know features and capabilities of Origin.
- origin-backend - Origin combines on and off-chain data storage. This repository is used to act as a backend service for off-chain data storage. You'll need this to run
migrations
(store data), andorigin-ui
to display stored data. - origin-ui - frontend of the system needed to view data stored in smart contracts (on-chain) and in the backend (off-chain). To interact Origin frontend you'll need MetaMask.
- user-registry - high-level library to interact with user registry. Can be used to i. a. create new user or set user's role in the system.
- device-registry - high-level library for creating and managing electricity producing and consuming devices. Depends on user-registry, because only user with Device Manager role can be owner of device.
- origin - a heart of Origin systems, contains logic for storing and transferring Energy Attribute Certificates (as a form of unique ERC721 tokens).
- market - a library that allows to create demand (for buyers), supply (for sellers) and agreements between buyers and sellers. It also extends the
Certificate
from origin and createsPurchasableCertificate
s that can be sold on the marketplace. - market-matcher - the most important part of marketplace, guarantees automatic matching of supply and demand between sellers and buyers. Matching rules can be highly customized and afterwards the algorithm can be tested by running matching simulator.
- utils-general - Contains logic for more straightforward interaction with contracts, such as watching events. It is also a base layer for other libraries to build upon. It provides a foundation for things like off-chain data storage that is universal for all entities.
- solar-simulator - This service simulates smart-meter readings based on example solar data from whole year in 15-mins intervals. Also allows you to generate the config based on data from public I-REC registry.
- event-listener - Event listeners listen to events on the blockchain and react accordingly.
For deployment instructions please refer to Deployment wiki page.
If you want to contribute to Origin, be sure to follow classic open source contribution guidelines (described below).
- Commiting a change
- Fork the repository
- Make a change to repo code
- Commit the change to the
master
branch
- Pull request
- Open a pull request from your fork
master
branch - Request code reviews from @Kuzirashi, @JosephBagaric or @kosecki123
- Once the PR is approved and the build passes, it will be merged to the master branch
- Open a pull request from your fork