Package Exports
- soy-contracts
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (soy-contracts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Contracts
ENS+IPFS ❤ DevOps - Static Websites on the Distributed Web
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