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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@inco/automata-on-chain-pccs

v1.0.0

Published

Automata on-chain PCCS Solidity contracts and helpers

Readme

Automata On Chain PCCS

Automata On Chain PCCS

Summary

This repo consists of Solidity implementation for an on-chain PCCS (Provisioning Certificate Caching Service) used in Intel DCAP (Data Center Attestation Primitives).

On-chain PCCS provides an open and permissionless service where users can freely contribute and be given easy access to collaterals for quote verification.


Contracts

ℹ️ UPDATE (March 2025): The EVM contracts for both Automata On Chain PCCS and Automata DCAP Attestation have been fully audited by Trail of Bits.

Click here to view the audit report.

There are two sets of contracts, i.e. the Helper and Base.

Helper Contracts

The Helper contracts provide APIs for parsing collaterals and converting into Solidity structs, i.e. QEIdentity.json, TCBInfo.json, basic DER-decoder for PCK X509 leaf certificate and extensions and X509 CRLs.

Testnet

| | Network | Address | | --- | --- | --- | | EnclaveIdentityHelper.sol | Automata Testnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Ethereum Sepolia | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Ethereum Holesky | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Base Sepolia | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | OP Sepolia | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Arbitrum Sepolia | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | World Sepolia | 0x95175096a9B74165BE0ac84260cc14Fc1c0EF5FF | | | Avalanche C-Chain Fuji | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | BSC Testnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Polygon Amoy | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Hoodi Testnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Unichain Sepolia | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | FmspcTcbHelper.sol | Automata Testnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Ethereum Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Ethereum Holesky | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Base Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | OP Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Arbitrum Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | World Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Avalanche C-Chain Fuji | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | BSC Testnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Polygon Amoy | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Hoodi Testnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Unichain Sepolia | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | PCKHelper.sol | Automata Testnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Ethereum Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Ethereum Holesky | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Base Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | OP Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Arbitrum Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | World Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Avalanche C-Chain Fuji | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | BSC Testnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Polygon Amoy | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Hoodi Testnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Unichain Sepolia | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | X509CRLHelper.sol | Automata Testnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Ethereum Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Ethereum Holesky | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Base Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | OP Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Arbitrum Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | World Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Avalanche C-Chain Fuji | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | BSC Testnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Polygon Amoy | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Hoodi Testnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Unichain Sepolia | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C |

Mainnet

| | Network | Address | | --- | --- | --- | | EnclaveIdentityHelper.sol | Automata Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Ethereum Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Base Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | OP Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | World Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Arbitrum Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Polygon PoS Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | BSC Mainnet | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | | Avalanche C-Chain | 0x635A8A01e84cDcE1475FCeB7D57FEcadD3d1a0A0 | | FmspcTcbHelper.sol | Automata Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Ethereum Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Base Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | OP Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | World Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Arbitrum Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Polygon PoS Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | BSC Mainnet | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | | Avalanche C-Chain | 0x181dc716922c84554aeA8bafa07c906F4e4C15B2 | | PCKHelper.sol | Automata Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Ethereum Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Base Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | OP Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | World Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Arbitrum Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Polygon PoS Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | BSC Mainnet | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | | Avalanche C-Chain | 0xeD75bb6543c53d49f4445055Ba18380068025370 | | X509CRLHelper.sol | Automata Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Ethereum Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Base Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | OP Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | World Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Arbitrum Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Polygon PoS Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | BSC Mainnet | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C | | | Avalanche C-Chain | 0xA454FB9522631D586f3A790c6CDc6f1B70Ca903C |

Base libraries and Automata DAO contracts

The base contracts are libraries that provide the Data Access Object (DAO) APIs with similar designs inspired from the Design Guide for Intel SGX PCCS.

Base contracts are dependent on Helper contracts to parse collaterals, and contains implementation of basic collateral authenticity check functions for upserts. Smart contract developers are encouraged to extend the base contracts to build their own custom implementation of on-chain PCCS.

Our DAO implementation can be found in the automata_pccs directory.

Testnet

| | Network | Address | | --- | --- | --- | | AutomataEnclaveIdentityDao.sol | Automata Testnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Ethereum Sepolia | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | | Ethereum Holesky | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | | Base Sepolia | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | OP Sepolia | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Arbitrum Sepolia | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | World Sepolia | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Avalanche C-Chain Fuji | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | | BSC Testnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Polygon Amoy | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Hoodi Testnet | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | | Unichain Sepolia | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | AutomataFmspcTcbDao.sol | Automata Testnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Ethereum Sepolia | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | | Ethereum Holesky | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | | Base Sepolia | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | OP Sepolia | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Arbitrum Sepolia | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | World Sepolia | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Avalanche C-Chain Fuji | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | | BSC Testnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Polygon Amoy | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Hoodi Testnet | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | | Unichain Sepolia | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | AutomataPckDao.sol | Automata Testnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Ethereum Sepolia | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | | Ethereum Holesky | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | | Base Sepolia | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | OP Sepolia | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Arbitrum Sepolia | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | World Sepolia | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Avalanche C-Chain Fuji | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | | BSC Testnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Polygon Amoy | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Hoodi Testnet | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | | Unichain Sepolia | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | AutomataPcsDao.sol | Automata Testnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Ethereum Sepolia | 0x45CF7485A0D394130153a3630EA0729999511C2e | | | Ethereum Holesky | 0x45CF7485A0D394130153a3630EA0729999511C2e | | | Base Sepolia | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | OP Sepolia | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Arbitrum Sepolia | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | World Sepolia | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Avalanche C-Chain Fuji | 0x45CF7485A0D394130153a3630EA0729999511C2e | | | BSC Testnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Polygon Amoy | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Hoodi Testnet | 0x45CF7485A0D394130153a3630EA0729999511C2e | | | Unichain Sepolia | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 |

Mainnet

| | Network | Address | | --- | --- | --- | | AutomataEnclaveIdentityDao.sol | Automata Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Ethereum Mainnet | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | | Base Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | OP Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | World Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Arbitrum Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Polygon PoS Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | BSC Mainnet | 0xd74e880029cd3B6b434f16beA5F53A06989458Ee | | | Avalanche C-Chain | 0xc3ea5Ff40263E16cD2f4413152A77e7A6b10B0C9 | | AutomataFmspcTcbDao.sol | Automata Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Ethereum Mainnet | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | | Base Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | OP Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | World Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Arbitrum Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Polygon PoS Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | BSC Mainnet | 0xd3A3f34E8615065704cCb5c304C0cEd41bB81483 | | | Avalanche C-Chain | 0x63eF330eAaadA189861144FCbc9176dae41A5BAf | | AutomataPckDao.sol | Automata Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Ethereum Mainnet | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | | Base Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | OP Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | World Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Arbitrum Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Polygon PoS Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | BSC Mainnet | 0xa4615C2a260413878241ff7605AD9577feB356A5 | | | Avalanche C-Chain | 0x75A2BafFfb2096990246F1a2dA65801Ea2A00b36 | | AutomataPcsDao.sol | Automata Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Ethereum Mainnet | 0x45CF7485A0D394130153a3630EA0729999511C2e | | | Base Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | OP Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | World Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Arbitrum Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Polygon PoS Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | BSC Mainnet | 0xB270cD8550DA117E3accec36A90c4b0b48daD342 | | | Avalanche C-Chain | 0x45CF7485A0D394130153a3630EA0729999511C2e |


#BUIDL 🛠️

  1. Install Foundry

  2. Install the dependencies

forge install
  1. Compile the contracts
forge build
  1. Run tests
forge test

To view gas report, pass the --gas-report flag.

Deployment

Before you begin, it is HIGHLY recommended that you store and encrypt wallet keys using Cast.

cast wallet import --keystore-dir ./keystore dcap_prod --interactive

If you had decided against taking the .env pledge, you can (but shouldn't) pass your wallet key to the PRIVATE_KEY environmental variable.

Once you have set up your wallet, you may run the following script to deploy the PCCS Contracts.

make deploy-all RPC_URL=<rpc-url>

You may also pass SIMULATE=true at the end of the command to run the script without broadcasting the transactions.

After deploying the contracts, run the commands below to verify contracts on the explorer.

Etherscan:

make verify-all RPC_URL=<rpc-url> ETHERSCAN_API_KEY=<etherscan-api-key>

Blockscout:

make verify-all RPC_URL=<rpc-url> VERIFIER=blockscout VERIFIER_URL=<explorer-api-url>

To see all available commands, run:

make help