You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
821 B
33 lines
821 B
/* 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
|
|
}
|
|
|