soy-contracts

ENS resolvers for soy

Usage no npm install needed!

<script type="module">
  import soyContracts from 'https://cdn.skypack.dev/soy-contracts';
</script>

README



Contracts

ENS+IPFS ❤ DevOps - Static Websites on the Distributed Web

SetupAPILicense

Soy Contracts is the source code for Soy's public ENS resolver and a low level JS interface to the contracts.


Usage

Install

# Yarn
$ yarn add soy-contracts

# npm
$ npm install --save soy-contracts

API

soy-contracts exports two smart contracts wrapped by truffle-contract. If you're familiar with the Truffle console, then the api should feel natural.

The two contract's are named exports and are:

  • ENS: The main ENS registry contract, source.
  • SoyPublicResolver: Soy's public resolver implementation, source

For more details about API for each contract, refer to Truffle's documentation and the source above.

Examples

Deploying and Configuring Test Contracts

const { SoyPublicResolver, ENS } = require('soy-contracts');

const rootNode = web3.utils.asciiToHex(0);
const provider = web3.currentProvider;
const accounts = await web3.eth.getAccounts();
const txOps = { from: accounts[0] };

ENS.setProvider(provider);
ENS.defaults(txOps);
SoyPublicResolver.setProvider(provider);
SoyPublicResolver.defaults(txOps);

const registryContract = await ENS.new(txOps);
const resolverContract = await SoyPublicResolver.new(
  registryContract.address,
  txOps
);

await registryContract.setSubnodeOwner(
  rootNode,
  web3.utils.sha3(tld),
  txOps.from,
  txOps
);

Contributing

Please read through our contributing guidelines. Included are directions for coding standards, and notes on development.

Deploying a new Public Resolver

NB: For maintainers only

Create a .env file in packages/soy-contracts and add INFURA_API_KEY and WALLET_MNEMONIC.

INFURA_API_KEY="Some api key"
WALLET_MNEMONIC="Team's wallet mnemonic"

Then follow below:

# Build a fresh set of contract assets
$ yarn build

# Test local deployment for issues, you'll need ganache running on the computer
$ yarn truffle deploy

# If everything goes well, run for each network
$ yarn truffle deploy --network ropsten
$ yarn truffle deploy --network rinkeby

# Check current [gas prices](https://ethgasstation.info/) and update
# `truffle-config.js`'s mainnet configuration
$ yarn truffle deploy --network mainnet

# When done, update the network locations in `src/SoyPublicResolver.js` with new addresses

License

Apache 2.0