# @openzeppelin/contract-loader

> Load contract ABIs from built artifacts and return contract objects

Latest version **0.6.3** (published 2021-08-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install @openzeppelin/contract-loader
pnpm add @openzeppelin/contract-loader
yarn add @openzeppelin/contract-loader
bun add @openzeppelin/contract-loader
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.6.3 |
| Published | 2021-08-20 |
| First published | 2019-09-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 78.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 14 |
| Author | Nicolas Venturo |
| Maintainers | frangio, amxx, spalladino |
| Keywords | smart-contracts, solidity, ethereum, javascript, web3 |

## Links

- npm: https://www.npmjs.com/package/@openzeppelin/contract-loader
- Repository: https://github.com/OpenZeppelin/contract-loader
- Homepage: https://github.com/OpenZeppelin/contract-loader#readme
- Issues: https://github.com/OpenZeppelin/contract-loader/issues
- npm.io page: https://npm.io/package/@openzeppelin/contract-loader

## Dependencies (2)

- [find-up](https://npm.io/package/find-up.md) ^4.1.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^8.1.0

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.6.3 (latest) — 2021-08-20
- 0.6.2 — 2020-10-28
- 0.6.1 — 2020-01-20
- 0.6.1-rc.0 — 2020-01-17
- 0.6.0 — 2019-12-26
- 0.5.0 — 2019-11-16
- 0.4.0 — 2019-11-08
- 0.3.0 — 2019-11-01
- 0.2.0 — 2019-10-16
- 0.1.0 — 2019-09-18

## README

# OpenZeppelin Contract Loader

[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/contract-loader)
[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/contract-loader.svg)](https://www.npmjs.org/package/@openzeppelin/contract-loader)
[![Build Status](https://circleci.com/gh/OpenZeppelin/openzeppelin-contract-loader.svg?style=shield)](https://circleci.com/gh/OpenZeppelin/openzeppelin-contract-loader)

**Load contract objects from built artifacts or ABIs.** Includes support for both `web3-eth-contract` and `@truffle/contract` objects.

```javascript
const { setupLoader } = require('@openzeppelin/contract-loader');
const loader = setupLoader({ provider: new Web3('http://localhost:8545') }).web3;

const address = '0xCfEB869F69431e42cdB54A4F4f105C19C080A601';
const erc20 = loader.fromArtifact('ERC20', address);

const totalSupply = await token.methods.totalSupply().call();
```

## Overview

### Installation

```bash
npm install @openzeppelin/contract-loader
```

You may also need to install [`web3-eth-contract`](https://www.npmjs.com/package/web3-eth-contract) or [`@truffle/contract`](https://www.npmjs.com/package/@truffle/contract), depending on which abstractions you want to be able to load.

>Contract Loader requires access to the filesystem to read contract ABIs. Because of this, it will not work in a browser-based Dapp.

### Usage

Create a loader object:

```javascript
const { setupLoader } = require('@openzeppelin/contract-loader');

const loader = setupLoader({
  provider,      // either a web3 provider or a web3 instance
  defaultSender, // optional
  defaultGas,    // optional, defaults to 8 million
});
```

Load web3 contracts:

```javascript
const ERC20 = loader.web3.fromArtifact('ERC20');

// Deploy contract
const token = await ERC20.deploy().send();

// Send transactions and query state
const balance = await token.methods.balanceOf(sender).call();
await token.methods.transfer(receiver, balance).send({ from: sender });

```

Load Truffle contracts:

```javascript
const ERC20 = loader.truffle.fromArtifact('ERC20');

// Deploy contract
const token = await ERC20.new();

// Send transactions and query state
const balance = await token.balanceOf(sender);
await token.transfer(receiver, balance, { from: sender });
```

## Learn More

* For detailed usage information, take a look at the [API Reference](https://docs.openzeppelin.com/contract-loader/api).

## License

[MIT](LICENSE).

---
_Source: https://npm.io/package/@openzeppelin/contract-loader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
