open-index/open-npm huggingface dataset:
npm package: @0xcert/ethereum-bitski-backend-provider
Description: Implementation of Bitski back-end communication provider for the Ethereum blockchain.
Latest version: 2.0.3

<img src="../../assets/cover-sub.png" />

> Implementation of Bitski back-end communication provider for the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/ethereum-erc20-contracts
Description: Smart contract implementation of the ERC-20 standard on the Ethereum blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Smart contract implementation of the ERC-20 standard on the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).

# Build

By default, the contracts in this package are built for Constantinople EVM. If you would like to use these smart contracts for `Wanchain` or other blockchains using EVM for a different version, you will need to rebuild them for the desired version.
npm package: @0xcert/ethereum-gateway
Description: Order gateway module for executing atomic operations on the Ethereum blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Order gateway module for executing atomic operations on the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/ethereum-gateway-contracts
Description: Smart contracts used by the gateway on the Ethereum blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Smart contracts used by the gateway on the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).

**Warning about deploying Gateway smart contract**

To prevent replay attacks (signed order created on testnet can be executed on mainnet), the order signing mechanism includes the contract address in the order you sign. This way, only a specific smart contract address can execute the signed order.

Ethereum [`CREATE2`](http://eips.ethereum.org/EIPS/eip-1014) and other methods provide ways of deploying the same contract on different networks that end up with the same contract address. This is the reason this warning exists. If you are deploying the Gateway yourself or if you are using a third-party deployment that you do not trust, this could become a possible vulnerability. 

All 0xcert-deployed addresses are available in [Documentation](https://docs.0xcert.org/api/ethereum.html#public-addresses). We will never deploy smart contracts on different networks in a way that would assign it the same contract addresses.

# Build

By default, the contracts in this package are built for Constantinople EVM. If you would like to use these smart contracts for `Wanchain` or other blockchains using EVM for a different version, you will need to rebuild them for the desired version.
npm package: @0xcert/ethereum-generic-provider
Description: Basic implementation of communication provider for the Ethereum blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Basic implementation of communication provider for the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/ethereum-metamask-provider
Description: Implementation of MetaMask communication provider for the Ethereum blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Implementation of MetaMask communication provider for the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/ethereum-order-gateway-contracts
Description: Smart contracts used by the order gateway on the Ethereum blockchain.
Latest version: 1.9.0

<img src="https://github.com/0xcert/framework/raw/master/assets/cover-sub.png" />

> Smart contracts used by the order gateway on the Ethereum blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).

**Warning about deploying OrderGateway smart contract**

To prevent from replay attacks (signed order created on testnet can be executed on mainnet), the order signing mechanism includes the contract address in the order you sign. This way, only a specific smart contract address can execute the signed order.

Ethereum [`CREATE2`](http://eips.ethereum.org/EIPS/eip-1014) and other methods provide ways of deploying the same contract on different networks that end up with the same contract address. This is the reason this warning exists. If you are deploying the OrderGateway yourself or if you are using a third-party deployment that you do not trust, this could become a possible vulnerability. 

All 0xcert-deployed addresses are available in [Documentation](https://docs.0xcert.org/api/ethereum.html#public-addresses). We will never deploy smart contract on different networks in a way that would assign it the same contract addresses.
npm package: @0xcert/ethereum-scanner
Description: 0xcert Etherium blockchain scanner.
Author: 0xcert
Latest version: 0.3.3

<img src="assets/cover.png" />

![Build Status](https://travis-ci.org/0xcert/ethereum-scanner.svg?branch=master)&nbsp;[![npm version](https://badge.fury.io/js/%400xcert%2Fethereum-scanner.svg)](https://badge.fury.io/js/%400xcert%2Fethereum-scanner)&nbsp;[![Dependency Status](https://gemnasium.com/0xcert/ethereum-scanner.svg)](https://gemnasium.com/0xcert/ethereum-scanner)

> 0xcert Ethereum blockchain parser.

This is an open source package for NodeJS written with [TypeScript](https://www.typescriptlang.org). It allows for scraping of the Ethereum blockchain for 0xcert protocol related contracts and transactions.

This package is actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/0xcert/ethereum-scanner) where you can also find our [issue tracker](https://github.com/0xcert/ethereum-scanner/issues).

## Installation

Run the command below to install the package.

```
npm install --save web3 @0xcert/ethereum-scanner
```

This package uses promises thus you need to use [Promise polyfill](https://github.com/taylorhakes/promise-polyfill) when promises are not supported.

## Getting started

Initialize the Web3 provider.

```js
import * as Web3 from 'web3';

const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
```

Load and parse data of a particular block.

```js
import { Scanner } from '@0xcert/ethereum-scanner';

const blockNumber = 2996066;
const scanner = new Scanner(web3);

await scanner.parse(blockNumber); // => { transactions: [...], contracts: [...]}
```

## API

### Scanner Class

**Scanner(web3)**

> Main class which allows for parsing the Ethereum blockchain.

| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| web3 | Web3 | Yes | - | Instance of a Web3 provider.

**NOTICE:** The scanner class extends is a [RawModel class](https://github.com/xpepermint/rawmodeljs) and thus exposes all related helper methods.

**Scanner.prototype.parse(block)**: Promise(JSON)

> Populates the scanner with block data and then returns serialized scanner data.

| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| block | Integer | Yes | - | Block number.

**Scanner.prototype.populateByBlock(block)**: Promise(Scanner)

> Loads and parses transactions and new contracts of a particular block on the Ethereum blockchain.

| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| block | Integer | Yes | - | Block number.

## License (MIT)

Copyright (c) 2018 0xcert <admin@0xcert.org>.
npm package: @0xcert/ethereum-zxc
Description: 0xcert protocol token implementation for the Ethereum blockchain.
Author: 0xcert
Latest version: 1.3.0

<img src="https://github.com/0xcert/ethereum-zxc/raw/master/assets/cover.png" />

![Build Status](https://travis-ci.org/0xcert/ethereum-zxc.svg?branch=master)&nbsp;[![NPM Version](https://badge.fury.io/js/@0xcert%2Fethereum-zxc.svg)](https://badge.fury.io/js/0xcert%2Fethereum-zxc)&nbsp;[![Dependencies Status](https://david-dm.org/0xcert/ethereum-zxc.svg)](https://david-dm.org/0xcert/ethereum-zxc)&nbsp;[![Bug Bounty](https://img.shields.io/badge/bounty-pending-2930e8.svg)](https://github.com/0xcert/ethereum-zxc/issues)

> 0xcert protocol token implementation for the Ethereum blockchain.

This is the official implementation of the `ZXC` 0xcert protocol token for the Ethereum blockchain. This is an open source project build with [Truffle](http://truffleframework.com) framework.

## Structure

Since this is a Truffle project, you will find all tokens in `contracts/tokens/` directory.

## Requirements

* NodeJS 9.0+ recommended.
* Windows, Linux or Mac OS X.

## Installation

### NPM

This is an [NPM](https://www.npmjs.com/package/@0xcert/ethereum-zxc) module for [Truffle](http://truffleframework.com) framework. In order to use it as a dependency in your Javascript project, you must install it through the `npm` command:

```
$ npm install @0xcert/ethereum-zxc
```

### Source

Clone the repository and install the required npm dependencies:

```
$ git clone git@github.com:0xcert/ethereum-zxc.git
$ cd ethereum-zxc
$ npm install
```

Make sure that everything has been set up correctly:

```
$ npm run test
```

All tests should pass.

## Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md) for how to help out.

## Licence

See [LICENSE](./LICENSE) for details.
npm package: @0xcert/merkle-tree
Description: Merkle tree management tool.
Latest version: 0.0.0-alpha0

## Define Convention

Asset convention is defined as a list of data items.

| Index | Type | Description
|-|-|-
| 0 | String | First name of a user.
| 1 | String | Middle name of a user.
| 2 | String | Last name of a user.
| 3 | String | Email address of a user.
| 4 | Integer | Age of a user.

This can be converted into a merkle tree where leafs represent the values and the root represents the proof.

```
                    [0,0]             
                    99999               MerkleNode
            [1,0]               [1,1]
            88888               55555   MerkleNode
    [2,0]           [2,1]       [2,2]
    66666           77777       55555   MerkleNode
[3,0]   [3,1]   [3,2]   [3,3]   [3,4]
11111   22222   33333   44444   55555   MerkleNode
-----   -----   -----   -----   —----
  a       b       c       d       e     MerkleValue
```

## Usage

Create an instance of a merkle tree.

```js
import { sha256 } from '@0xcert/crypto'; 
import { Merkle } from '@0xcert/merkle-tree'; 

const merkle = new Merkle({
  algo: sha256, 
});
```

Build merkle tree nodes from a list of values.

```ts
const allNodes = merkle.build([
  { index: 0, value: 'a' },
  { index: 1, value: 'b' },
  { index: 2, value: 'c' },
  { index: 3, value: 'd' },
  { index: 4, value: 'e' },
]);
```

Create a minimal list of nodes from which a tree root can be calculated.

```ts
const recipeNodes = await merkle.pack(
  allNodes, 
  [0, 2] // expose values `a` and `c`
);
```

Recalculate the tree root hash object.

```ts
const rootNode = await merkle.calculate([
  // values
  { index: 0, value: 'a' },
], [
  // nodes
  { level: 0, index: 0, hash: '0x...' },
  { level: 1, index: 0, hash: '0x...' },
  { level: 1, index: 1, hash: '0x...' },
  { level: 2, index: 0, hash: '0x...' },
]);
```

## License (MIT)

```
Copyright (c) 2017+ Kristijan Sedlak <xpepermint@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated modelation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
```
npm package: @0xcert/wanchain-asset-ledger
Description: Asset ledger module for asset management on the Wanchain blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Asset ledger module for asset management on the Wanchain blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/wanchain-gateway
Description: Order gateway module for executing atomic operations on the Wanchain blockchain.
Latest version: 2.1.1

<img src="../../assets/cover-sub.png" />

> Order gateway module for executing atomic operations on the Wanchain blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/wanchain-order-gateway
Description: Order gateway module for executing atomic operations on the Wanchain blockchain.
Latest version: 1.9.0

<img src="https://github.com/0xcert/framework/raw/master/assets/cover-sub.png" />

> Order gateway module for executing atomic operations on the Wanchain blockchain.

The [0xcert Framework](https://docs.0xcert.org) is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the [official documentation](https://docs.0xcert.org) for more details.

This module is one of the bricks of the [0xcert Framework](https://docs.0xcert.org). It's written with [TypeScript](https://www.typescriptlang.org) and it's actively maintained. The source code is available on [GitHub](https://github.com/0xcert/framework) where you can also find our [issue tracker](https://github.com/0xcert/framework/issues).
npm package: @0xcert/web3-sandbox
Description: ```ts // VERIFICATION EXAMPLE // I share an evidence file that proofs certain JSON paths (e.g. public JSON) // I have an object with just some data. // The function recreates a recipe for this partial data object and assignes is to the evidence file. // A
Latest version: 0.0.0-init

```ts
// VERIFICATION EXAMPLE
// I share an evidence file that proofs certain JSON paths (e.g. public JSON)
// I have an object with just some data.
// The function recreates a recipe for this partial data object and assignes is to the evidence file.
// At this stage we modified evidence file with data we know.
// We then calculate the imprint which must match the one stored in the token.
// NOTE: Custom fields always pass.

// WORDING
// evidence -> consists of proofs -> forms an imprint
// data object -> consists of properties (props)

// USAGE
// Define arbitrary data object.
const data = { ... };
// Define certificate with JSON schema definition.
const cert = new Cert({ schema: { ...} });
// Notarize data object (returns all proofs for whole data object).
const proofs = await cert.notarize(data);
// Expose selected data keys (returns proofs and exposed values from which an imprint can be calculated).
const proofs = await cert.disclose(exampleData, [ ...paths... ]);
// Verify data object against proofs generated with function `disclose` (if object is valid, an imprint is the right root hash).
const imprint = await cert.calculate(data, proofs);
// Generate root hash from complete data object.
const imprint = await cert.imprint(data);
```