Files: 026b99c4df17c82be9f9255083a7271d8d3437b6 / address.js
869 bytesRaw
1 | const ethUtils = require('ethereumjs-util') |
2 | |
3 | module.exports = class Address { |
4 | constructor (value) { |
5 | // Special case: duplicate |
6 | if (value instanceof Address) { |
7 | this._value = new Buffer(value._value) |
8 | return |
9 | } |
10 | |
11 | if (value instanceof Uint8Array) { |
12 | this._value = new Buffer(value) |
13 | } else if (typeof value !== 'string') { |
14 | throw new Error('Invalid input to address') |
15 | } else if (!ethUtils.isHexPrefixed(value)) { |
16 | throw new Error('Invalid address format') |
17 | } else { |
18 | this._value = new Buffer(ethUtils.stripHexPrefix(value), 'hex') |
19 | } |
20 | |
21 | if (this._value.length !== 20) { |
22 | throw new Error('Invalid address length') |
23 | } |
24 | } |
25 | |
26 | toBuffer () { |
27 | return this._value |
28 | } |
29 | |
30 | toString () { |
31 | return '0x' + this._value.toString('hex') |
32 | } |
33 | |
34 | isZero () { |
35 | return this._value.equals(ethUtils.zeros(20)) |
36 | } |
37 | } |
38 |
Built with git-ssb-web