more unnecessary contracts gotten rid of, and fixes made to Embarkjs file
Signed-off-by: VoR0220 <catalanor0220@gmail.com>
This commit is contained in:
parent
ac6c741a15
commit
592e4db762
|
@ -1,117 +0,0 @@
|
||||||
pragma solidity ^0.4.10;
|
|
||||||
|
|
||||||
import "./ENS.sol";
|
|
||||||
|
|
||||||
contract Resolver {
|
|
||||||
function setName(bytes32 node, string name) public;
|
|
||||||
}
|
|
||||||
|
|
||||||
contract ReverseRegistrar {
|
|
||||||
// namehash('addr.reverse')
|
|
||||||
bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;
|
|
||||||
|
|
||||||
ENS public ens;
|
|
||||||
Resolver public defaultResolver;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Constructor
|
|
||||||
* @param ensAddr The address of the ENS registry.
|
|
||||||
* @param resolverAddr The address of the default reverse resolver.
|
|
||||||
*/
|
|
||||||
function ReverseRegistrar(ENS ensAddr, Resolver resolverAddr) public {
|
|
||||||
ens = ensAddr;
|
|
||||||
defaultResolver = resolverAddr;
|
|
||||||
|
|
||||||
// Assign ownership of the reverse record to our deployer
|
|
||||||
ReverseRegistrar oldRegistrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE));
|
|
||||||
if (address(oldRegistrar) != 0) {
|
|
||||||
oldRegistrar.claim(msg.sender);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Transfers ownership of the reverse ENS record associated with the
|
|
||||||
* calling account.
|
|
||||||
* @param owner The address to set as the owner of the reverse record in ENS.
|
|
||||||
* @return The ENS node hash of the reverse record.
|
|
||||||
*/
|
|
||||||
function claim(address owner) public returns (bytes32) {
|
|
||||||
return claimWithResolver(owner, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Transfers ownership of the reverse ENS record associated with the
|
|
||||||
* calling account.
|
|
||||||
* @param owner The address to set as the owner of the reverse record in ENS.
|
|
||||||
* @param resolver The address of the resolver to set; 0 to leave unchanged.
|
|
||||||
* @return The ENS node hash of the reverse record.
|
|
||||||
*/
|
|
||||||
function claimWithResolver(address owner, address resolver) public returns (bytes32) {
|
|
||||||
var label = sha3HexAddress(msg.sender);
|
|
||||||
bytes32 node = keccak256(ADDR_REVERSE_NODE, label);
|
|
||||||
var currentOwner = ens.owner(node);
|
|
||||||
|
|
||||||
// Update the resolver if required
|
|
||||||
if (resolver != 0 && resolver != ens.resolver(node)) {
|
|
||||||
// Transfer the name to us first if it's not already
|
|
||||||
if (currentOwner != address(this)) {
|
|
||||||
ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, this);
|
|
||||||
currentOwner = address(this);
|
|
||||||
}
|
|
||||||
ens.setResolver(node, resolver);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the owner if required
|
|
||||||
if (currentOwner != owner) {
|
|
||||||
ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, owner);
|
|
||||||
}
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Sets the `name()` record for the reverse ENS record associated with
|
|
||||||
* the calling account. First updates the resolver to the default reverse
|
|
||||||
* resolver if necessary.
|
|
||||||
* @param name The name to set for this address.
|
|
||||||
* @return The ENS node hash of the reverse record.
|
|
||||||
*/
|
|
||||||
function setName(string name) public returns (bytes32) {
|
|
||||||
bytes32 node = claimWithResolver(this, defaultResolver);
|
|
||||||
defaultResolver.setName(node, name);
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the node hash for a given account's reverse records.
|
|
||||||
* @param addr The address to hash
|
|
||||||
* @return The ENS node hash.
|
|
||||||
*/
|
|
||||||
function node(address addr) public view returns (bytes32) {
|
|
||||||
return keccak256(ADDR_REVERSE_NODE, sha3HexAddress(addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev An optimised function to compute the sha3 of the lower-case
|
|
||||||
* hexadecimal representation of an Ethereum address.
|
|
||||||
* @param addr The address to hash
|
|
||||||
* @return The SHA3 hash of the lower-case hexadecimal encoding of the
|
|
||||||
* input address.
|
|
||||||
*/
|
|
||||||
function sha3HexAddress(address addr) private returns (bytes32 ret) {
|
|
||||||
addr; ret; // Stop warning us about unused variables
|
|
||||||
assembly {
|
|
||||||
let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000
|
|
||||||
let i := 40
|
|
||||||
loop:
|
|
||||||
i := sub(i, 1)
|
|
||||||
mstore8(i, byte(and(addr, 0xf), lookup))
|
|
||||||
addr := div(addr, 0x10)
|
|
||||||
i := sub(i, 1)
|
|
||||||
mstore8(i, byte(and(addr, 0xf), lookup))
|
|
||||||
addr := div(addr, 0x10)
|
|
||||||
jumpi(loop, i)
|
|
||||||
ret := keccak256(0, 40)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue