Skip to content

πŸ”Œ Ethereum connector for Decentraland scenes and applications

License

Notifications You must be signed in to change notification settings

decentraland/eth-connect

Repository files navigation

eth-connect

NPM version codecov Install Size

eth-connect is a TypeScript-based web3 library alternative which implements the Generic JSON RPC spec as well.

You can follow the JavaScript API documentation until TypeScript docs are released.

Design goals

  • A Typed web3.js alternative
  • Have as few convention-invented functions as possible (by following the RPC specs as much as possible)
  • Leverage WS and HTTP providers
  • Portable (support and work equally in both browser and node)
  • Painless eth usage: Using contract factories, well-split event types (block, transaction and contracts plus topics)
  • async/await out of the box

Installation

Using NPM:

npm i eth-connect

Importing as a browser module:

<script src="https://unpkg.com/eth-connect@latest/eth-connect.js"></script>

Examples

Below are some simple illustrative examples. You can also find more complete examples are in the integration /tests folder.

Initialize with a provider

import { RequestManager } from 'eth-connect'

// using the injected MetaMask provider
const requestManager = new RequestManager(web3.currentProvider)

const myBalance = await requestManager.eth_getBalance(myAddress)

or

import { RequestManager, HTTPProvider } from 'eth-connect'

const provider = 'my-own-RPC-url'
const providerInstance = new HTTPProvider(provider)
const requestManager = new RequestManager(providerInstance)

const someBalance = await requestManager.eth_getBalance(someAddress)

Initialize a contract

import { RequestManager, ContractFactory } from 'eth-connect'

const abi = require('./some-contract-abi.json')
// using the injected MetaMask provider
const requestManager = new RequestManager(web3.currentProvider)

const factory = new ContractFactory(requestManager, abi)
const instance = await factory.at(address)

console.log('Calling a method', await instance.mint(myAddress))

Get the accounts

import { RequestManager } from 'eth-connect'

const requestManager = new RequestManager(web3.currentProvider)

const accounts = await requestManager.eth_accounts()

Build the project

Clone this project and run the following in the terminal:

make build

Run tests

make test-local

Comparison

web3 eth-connect
Browser support βœ” βœ”
Promise API βœ– βœ”
Strict type checks βœ– βœ”
TS/JS Docs βœ– βœ”
Wiki Docs βœ” ?
Coverage
Dependents
Install size

Full documentation

Follow this link to read the full documentation for eth-connect here.

Project Status

You may find issues while using this library, as it's still under development. Please report any issues you come accross.