Catalog npm
Back to packageRELEASE DETAILS

0.0.1-beta-2

npm

@0xessential/contracts

This project demonstrates an advanced Hardhat use case, integrating other tools commonly used alongside Hardhat in the ecosystem.

contractsethereumsmartsolidity
Published4 May 2022
Direct dependencies33
Transitive dependenciesNot calculated

README

Current package documentation

@0xessential/contracts

This repo contains the Solidity source code for the contracts used in 0xEssential's Cross-Chain Token Gating meta-transaction stack.

The contracts are available as an NPM package and can also be installed as a Foundry dependency.

0xEssential provides deployed versions of EssentialForwarder on Polygon's Mumbai testnet and Matic mainnet.

Developers are also free to deploy their own versions of EssentialForwarder - you may want to deploy your own version so that you can change the domainName that is displayed to users when signing a meta-transaction with their wallet.

Install

With NPM:

  yarn add @0xessential/contracts

With Foundry:

Then add the following line to your remappings.txt:

essential-contracts/=lib/essential-contracts/

Use Deployed Instances

If you're building a layer 2 contract that uses Cross-Chain Token Gating and don't wish to customize the domain name displayed to users, you need to inherit EssentialERC2771Context in your contract. We also provide EssentialERC2771ContextUpgradeable if your contract is an upgradeable proxy.

pragma solidity ^0.8.13;

import "essential-contracts/contracts/fwd/EssentialERC2771Context.sol";

contract MyContract is EssentialERC2771Context {}

Then add the EssentialERC2771Context constructor call:

  constructor(address trustedForwarder) EssentialERC2771Context(trustedForwarder) {

The deployed EssentialForwarder instances are available at the following addresses. You will need the name value in your frontend.

NetworkAddressname
Mumbai0x9928351FD354D4E45416fc53e90457a428960cF40xEssential Playsession
Mainnet0x9bbb4217115B7296630183Bb23703DEC93E8edCf0xEssential Playsession

Deploy Your Own

If you require customizing the name of the forwarder shown to users when signing meta-transactions, you need to deploy your own version of an EssentialForwarder.

You can do this by creating your own contract that inherits EssentialForwarder and calls its constructor with your custom name:

pragma solidity ^0.8.13;

import "@0xessential/contracts/fwd/EssentialForwarder.sol";

contract MyCustomForwarder is EssentialForwarder {
  constructor(string[] memory _urls) 
  EssentialForwarder("My Custom Forwarder Name", _urls)
  {}
}

The _urls constructor argument is an array of HTTPS URLs that serve 0xEssential's open source Ownership Lookup RPC API.

You may specify the instance 0xEssential runs - https://middleware.nfight.xyz or see that repo for deploying your own version.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 33

Native requirements
33 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
@openzeppelin/contracts
Environment
{
  "local_name": "@openzeppelin/contracts",
  "alias": false,
  "peer_metadata": null
}
^4.6.0runtime
@nomiclabs/hardhat-ethers
Environment
{
  "local_name": "@nomiclabs/hardhat-ethers",
  "alias": false,
  "peer_metadata": null
}
^2.0.5development
@nomiclabs/hardhat-etherscan
Environment
{
  "local_name": "@nomiclabs/hardhat-etherscan",
  "alias": false,
  "peer_metadata": null
}
^3.0.3development
@nomiclabs/hardhat-waffle
Environment
{
  "local_name": "@nomiclabs/hardhat-waffle",
  "alias": false,
  "peer_metadata": null
}
^2.0.3development
@typechain/ethers-v5
Environment
{
  "local_name": "@typechain/ethers-v5",
  "alias": false,
  "peer_metadata": null
}
^7.2.0development
@typechain/hardhat
Environment
{
  "local_name": "@typechain/hardhat",
  "alias": false,
  "peer_metadata": null
}
^2.3.1development
@types/chai
Environment
{
  "local_name": "@types/chai",
  "alias": false,
  "peer_metadata": null
}
^4.3.1development
@types/mocha
Environment
{
  "local_name": "@types/mocha",
  "alias": false,
  "peer_metadata": null
}
^9.1.1development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^12.20.50development
@typescript-eslint/eslint-plugin
Environment
{
  "local_name": "@typescript-eslint/eslint-plugin",
  "alias": false,
  "peer_metadata": null
}
^4.33.0development
@typescript-eslint/parser
Environment
{
  "local_name": "@typescript-eslint/parser",
  "alias": false,
  "peer_metadata": null
}
^4.33.0development
chai
Environment
{
  "local_name": "chai",
  "alias": false,
  "peer_metadata": null
}
^4.3.6development
dotenv
Environment
{
  "local_name": "dotenv",
  "alias": false,
  "peer_metadata": null
}
^10.0.0development
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^7.32.0development
eslint-config-prettier
Environment
{
  "local_name": "eslint-config-prettier",
  "alias": false,
  "peer_metadata": null
}
^8.5.0development
eslint-config-standard
Environment
{
  "local_name": "eslint-config-standard",
  "alias": false,
  "peer_metadata": null
}
^16.0.3development
eslint-plugin-import
Environment
{
  "local_name": "eslint-plugin-import",
  "alias": false,
  "peer_metadata": null
}
^2.26.0development
eslint-plugin-node
Environment
{
  "local_name": "eslint-plugin-node",
  "alias": false,
  "peer_metadata": null
}
^11.1.0development
eslint-plugin-prettier
Environment
{
  "local_name": "eslint-plugin-prettier",
  "alias": false,
  "peer_metadata": null
}
^3.4.1development
eslint-plugin-promise
Environment
{
  "local_name": "eslint-plugin-promise",
  "alias": false,
  "peer_metadata": null
}
^5.2.0development
ethereum-waffle
Environment
{
  "local_name": "ethereum-waffle",
  "alias": false,
  "peer_metadata": null
}
^3.4.4development
ethers
Environment
{
  "local_name": "ethers",
  "alias": false,
  "peer_metadata": null
}
^5.6.4development
hardhat
Environment
{
  "local_name": "hardhat",
  "alias": false,
  "peer_metadata": null
}
^2.9.3development
hardhat-gas-reporter
Environment
{
  "local_name": "hardhat-gas-reporter",
  "alias": false,
  "peer_metadata": null
}
^1.0.8development
prettier
Environment
{
  "local_name": "prettier",
  "alias": false,
  "peer_metadata": null
}
^2.6.2development
prettier-plugin-solidity
Environment
{
  "local_name": "prettier-plugin-solidity",
  "alias": false,
  "peer_metadata": null
}
^1.0.0-beta.13development
rimraf
Environment
{
  "local_name": "rimraf",
  "alias": false,
  "peer_metadata": null
}
^3.0.2development
solhint
Environment
{
  "local_name": "solhint",
  "alias": false,
  "peer_metadata": null
}
^3.3.7development
solidity-coverage
Environment
{
  "local_name": "solidity-coverage",
  "alias": false,
  "peer_metadata": null
}
^0.7.21development
solidity-docgen
Environment
{
  "local_name": "solidity-docgen",
  "alias": false,
  "peer_metadata": null
}
^0.6.0-beta.10development
ts-node
Environment
{
  "local_name": "ts-node",
  "alias": false,
  "peer_metadata": null
}
^10.7.0development
typechain
Environment
{
  "local_name": "typechain",
  "alias": false,
  "peer_metadata": null
}
^5.2.0development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^4.6.4development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-2KLI4UxLPGGsZFnHAr/YzmqqdeVJE+AyryBAwwmvFqZ1saLZc+4r1cPMeCQIfbBQwW0VGmk3knSInzxsteaZEQ==",
  "shasum": "071d3528d9d552c1db2406e3dcf229951a42142b",
  "tarball": "https://registry.npmjs.org/@0xessential/contracts/-/contracts-0.0.1-beta-2.tgz",
  "fileCount": 9,
  "unpackedSize": 26497,
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEYCIQDFIRPPDmV7vjFeKYNSA1FYwRjYbgMX/b5UoZRUS887XgIhAOTcEndEdTnzBI/DKFq2L3ytbSVLCKtQA58Hph1wt7A2"
    }
  ],
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicosAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXlQ/+N0q6aIo8voz2u/KO6/90vu1GzpR/J+/o9JjzQfpOYThq8N0D\r\n+JDhrDbbncgQq5yI1AqT3sSgKbk8mzvtXRRof2I11D2SWzs33aPagrfR7OKi\r\nF4VneHvoJtSbnpImMJzIygpR09R6XtRv96M0hwaNPyC2MGcq6HIVnPGCZzTQ\r\n3umxtsqHVTsxCSrJB4qGZubw30jjxfj1cwyeEdIf96TFsi4gdg+nBxsI+SAb\r\nVQ9boAL5yuN9rRurLOSA0xNTswqzzb/K/ax7k6+SXLyJ8gwuAWQi2lq5+UGY\r\nqAwz1Kv1YC+Gb0Pp6yXGloh9seZ00RwAgdxL1XB2epNEORvcGdTMJFLEhrJy\r\nV4hzDkO9rmBZ4jdrj9iXc/jYG2UHp40cez3bqXOzc59YbpOiZPMdGjHvXzoQ\r\nsxb+mB3a3sZZ7+DOuhlkLAf10VN/lguQ/15Kedo3qLW84hDX53x3VO8of/66\r\nJttSlADbovEp0GhBvzbzP0CLeLF5/9WgCZ9VcPsQ8k9JjgagDcsZt41OO//P\r\nC7D9bHN7Jy8/nFerutk2X39wCiKDiwj1tn99Tm+WFZWC4nOdhYuFX/QWl7En\r\ngfIiI6V/w4tIqA6Nbx8HP3FTevZnaVScroBVaPZz80wLZAerPwT3u0NBR3Aq\r\n1AloAsO/3yuHIciMytd0dPT5VmnKvm4iB1g=\r\n=Wznt\r\n-----END PGP SIGNATURE-----\r\n"
}

Repository

PENDING
0xessential/nfight

Shared repository data · GitHub

License detected in repository
Not collected

Repository

NOT_FOUND
0xessential/0xessential-contracts

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 23:07 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:a4d2614e8a562c2c3cc8d47c0755a4e6adc7c245af53dd3b812e46259b3a17d2

Other collected versions

0.0.1-beta-1630 Dec0.0.1-beta-1530 Dec0.0.1-beta-1411 Oct0.0.1-beta-1321 Sept0.0.1-beta-1221 Sept0.0.1-beta-1119 SeptView all collected versions →