@fairdatasociety/fdp-contracts v1.0.4
FDS Contracts JS Library
This library provides simple interface to interact with FDS contracts.
Installation
The library depends on the ethers.js library. So in order to use
the library, ethers must be installed.
To install the both libraries:
npm install --save @fairdatasociety/fdp-contracts ethersUsage
To work with local fdp-contracts docker image, execute the following command:
fdp-play start --detach --blockchain-image fairdatasociety/fdp-contracts-blockchain $BEE_VERSIONNOTE: it will spin up the whole fdp environment for you with running Bee clients
ENS
To interact with Ethereum Name Service (ENS), import and instantiate the ENS class. The ENS class can be
configured with predefined configurations or with a custom one. Currently, the only predefined configuration
is for the localhost envirnoment, which means it will use the swarm-test-blockchain image running locally on
http://localhost:9545 address.
Predefined configurations can be fetched using the getEnvironmentConfig function.
import { ENS, Environments, getEnvironmentConfig } from '@fairdatasociety/fdp-contracts'
const ens = new ENS(getEnvironmentConfig(Environments.LOCALHOST))To use custom configuration, provide an instance of Environment type, or modify some of the predefined
configurations:
import { ENS, Environments, getEnvironmentConfig, Environment } from '@fairdatasociety/fdp-contracts'
const customConfig: Environment = {
...getEnvironmentConfig(Environments.LOCALHOST),
rpcUrl: 'www.example.com',
}
const ens = new ENS(customConfig)Here is an example how to interact with ENS:
import { ENS } from '@fairdatasociety/fdp-contracts'
async function example() {
const ens = new ENS() // Default configuration is for localhost
const username = 'example'
const isUsernameAvailable = await ens.isUsernameAvailable(username)
console.log(`Username ${username} is available: ${isUsernameAvailable}`)
}For methods that require transactions, a signer must be provided. Signer can be specified when creating an
object of the ENS class, or later by calling the connect method. Signer can be a hex string of a private
key, or an ethers.js signer.
import { Wallet } from 'ethers'
import { ENS } from '@fairdatasociety/fdp-contracts'
async function example() {
const ens = new ENS()
const wallet = new Wallet('0x...', ens.provider)
ens.connect(wallet)
const address = await wallet.getAddress()
const username = 'example'
await ens.registerUsername(username, address, wallet.publicKey)
console.log(`Username ${username} successfully registered.`)
}Development
To compile the library in watch mode:
npm startTo build the library:
npm run buildLocal installation
The library can be linked, so it can be imported as a node module from another local project. First, inside this directory run:
npm linkThen in root directory of another project, the library can be installed with:
npm link @fairdatasociety/fdp-contractsTests
To automatically start a fdp-contracts container, build the library and run tests:
./scripts/test.shTests are separated into unit and integration tests to the test/unit and test/it directorties,
respectively.
In order to run integration tests, a container with FDP contracts must be started first. Also the librarry should be built. Then, tests are executed using the command:
npm run test:integrationTo run both tests at once:
npm test