npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@energyweb/contracts

v2.0.2

Published

Onchain module of the worker-contract core SDK of Energyweb Foundation.

Downloads

6

Readme

Green Proof blockchain contracts

Description


The present package is the onchain module of the Greenproof core SDK of Energyweb Foundation.

Architecture


The on-chain component of the greenProof core module is an upgradable proxied module, implementing the EIP-2535 standard, which is a standard recommended in the upgrades section of the EIP-1155 token standard documentation.

This upgradable pattern is called a Diamond standard architecture, where all smart contracts are organized as different facets of one single diamond. It ultimately allows users to trigger any on-chain function of any Greenroof component using one single and stable contract address.

As mentioned in the Ethereum documentation :

The diamond pattern can be considered an improvement on the proxy pattern. Diamond patterns differ from proxy patterns because the diamond proxy contract can delegates function calls to more than one logic contract.

The diamond upgrade pattern has some advantages over traditional proxy upgrade patterns:

  • It allows you to upgrade a small part of the contract without changing all of the code. Using the proxy pattern for upgrades requires creating an entirely new logic contract, even for minor upgrades.

  • All smart contracts (including logic contracts used in proxy patterns) have a 24KB size limit, which can be a limitation—especially for complex contracts requiring more functions. The diamond pattern makes it easy to solve this problem by splitting functions across multiple logic contracts.

  • Proxy patterns adopt a catch-all approach to access controls. An entity with access to upgrade functions can change the entire contract. But the diamond pattern enables a modular permissions approach, where you can restrict entities to upgrading certain functions within a smart contract.

Each smartcontract component provided in contracts/facets directory is then a facet of this greenproof Diamond.

  • Voting component : the voting logic is implemented in the VotingFacet.sol contract

  • NFT Issuer component : the issuance component is encapsulated inside the IssuerFacet.sol contract

Additional utility facets are provided by the Solidstate diamond implementation, which help conforming to the EIP-2535 standard specification


Quickstart


  • Install dependencies:
npm install

Running tests

  • end-to-end tests
npm run test:e2e

This command will run unit tests for the whole greenproof-contracts components. You can target one specific component to test inside the greenproof core module :

  • issuerFacet.spec.js handles unit tests for the Issuance component.
npm run issuer:test
  • test/voting handles unit tests for the Voting component
npm run voting:test
npm run greenproof:test

To run coverage test :

npm run coverage:test

Questions and Support

For questions and support please use Energy Web's Discord channel

Or reach out to us via email: [email protected]

EW-DOS

The Energy Web Decentralized Operating System is a blockchain-based, multi-layer digital infrastructure.

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 an overview of the energy-sector challenges our use cases address, go here.

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

Connect with Energy Web