aboutsummaryrefslogtreecommitdiffstats
path: root/ui/lib/contract-namer.js
blob: f05e770cc7fe108ee5da12e9826323b9be2242e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* CONTRACT NAMER
 *
 * Takes an address,
 * Returns a nicname if we have one stored,
 * otherwise returns null.
 */

const contractMap = require('eth-contract-metadata')
const ethUtil = require('ethereumjs-util')

module.exports = function (addr, identities = {}) {
  const checksummed = ethUtil.toChecksumAddress(addr)
  if (contractMap[checksummed] && contractMap[checksummed].name) {
    return contractMap[checksummed].name
  }

  const address = addr.toLowerCase()
  const ids = hashFromIdentities(identities)
  return addrFromHash(address, ids)
}

function hashFromIdentities (identities) {
  const result = {}
  for (const key in identities) {
    result[key] = identities[key].name
  }
  return result
}

function addrFromHash (addr, hash) {
  const address = addr.toLowerCase()
  return hash[address] || null
}