Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ensdomains/ens
Implementations for ENS core functionality: The registry, registrars, and public resolvers.
https://github.com/ensdomains/ens
Last synced: 3 months ago
JSON representation
Implementations for ENS core functionality: The registry, registrars, and public resolvers.
- Host: GitHub
- URL: https://github.com/ensdomains/ens
- Owner: ensdomains
- License: bsd-2-clause
- Archived: true
- Created: 2016-05-29T11:31:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-09-27T04:12:02.000Z (about 1 year ago)
- Last Synced: 2024-09-22T04:03:33.842Z (3 months ago)
- Language: JavaScript
- Homepage: https://ens.domains/
- Size: 3.76 MB
- Stars: 1,159
- Watchers: 71
- Forks: 509
- Open Issues: 92
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- best-of-crypto - GitHub - 36% open · ⏱️ 27.09.2023): (Others)
README
# This repo is depreacted, please see [ens-contracts](https://github.com/ensdomains/ens-contracts)
# ENS
[![Build Status](https://travis-ci.org/ensdomains/ens.svg?branch=master)](https://travis-ci.org/ensdomains/ens)
Implementations for registrars and local resolvers for the Ethereum Name Service.
For documentation of the ENS system, see [docs.ens.domains](https://docs.ens.domains/).
To run unit tests, clone this repository, and run:
$ npm install
$ npm test# npm package
This repo doubles as an npm package with the compiled JSON contracts
```js
import {
Deed,
DeedImplementation,
ENS,
ENSRegistry,
FIFSRegistrar,
Migrations,
Registrar,
ReverseRegistrar,
TestRegistrar
} from '@ensdomains/ens'
```## ENSRegistry.sol
Implementation of the ENS Registry, the central contract used to look up resolvers and owners for domains.
## FIFSRegistrar.sol
Implementation of a simple first-in-first-served registrar, which issues (sub-)domains to the first account to request them.
# ENS Registry interface
The ENS registry is a single central contract that provides a mapping from domain names to owners and resolvers, as described in [EIP 137](https://github.com/ethereum/EIPs/issues/137).
The ENS operates on 'nodes' instead of human-readable names; a human readable name is converted to a node using the namehash algorithm, which is as follows:
def namehash(name):
if name == '':
return '\0' * 32
else:
label, _, remainder = name.partition('.')
return sha3(namehash(remainder) + sha3(label))The registry's interface is as follows:
## owner(bytes32 node) constant returns (address)
Returns the owner of the specified node.
## resolver(bytes32 node) constant returns (address)
Returns the resolver for the specified node.
## setOwner(bytes32 node, address owner)
Updates the owner of a node. Only the current owner may call this function.
## setSubnodeOwner(bytes32 node, bytes32 label, address owner)
Updates the owner of a subnode. For instance, the owner of "foo.com" may change the owner of "bar.foo.com" by calling `setSubnodeOwner(namehash("foo.com"), sha3("bar"), newowner)`. Only callable by the owner of `node`.
## setResolver(bytes32 node, address resolver)
Sets the resolver address for the specified node.
# Resolvers
Resolvers can be found in the resolver specific [repository](https://github.com/ensdomains/resolvers).
# Generating LLL ABI and binary data
ENS.lll.bin was generated with the following command, using the lllc packaged with Solidity 0.4.4:
$ lllc ENS.lll > ENS.lll.bin
The files in the abi directory were generated with the following command:
$ solc --abi -o abi AbstractENS.sol FIFSRegistrar.sol HashRegistrarSimplified.sol
# Getting started
Install Truffle
$ npm install -g truffle
Launch the RPC client, for example TestRPC:
$ testrpc
Deploy `ENS` and `FIFSRegistrar` to the private network, the deployment process is defined at [here](migrations/2_deploy_contracts.js):
$ truffle migrate --network dev.fifs
Check the truffle [documentation](http://truffleframework.com/docs/) for more information.