21 lines
428 B
JavaScript
21 lines
428 B
JavaScript
|
const crypto = require('crypto');
|
||
|
|
||
|
const memo = new Map();
|
||
|
|
||
|
const fakePeerId = (addr) => {
|
||
|
const hash = crypto.createHash('sha1');
|
||
|
hash.update(addr);
|
||
|
return hash.digest('hex').slice(0, 20);
|
||
|
};
|
||
|
|
||
|
// not super expensive, but probably worth memoizing
|
||
|
module.exports = (addr) => {
|
||
|
if (memo.size >= 300000) {
|
||
|
memo.clear();
|
||
|
}
|
||
|
if (!memo.has(addr)) {
|
||
|
memo.set(addr, fakePeerId(addr));
|
||
|
}
|
||
|
return memo.get(addr);
|
||
|
};
|