add private key to address function
This commit is contained in:
parent
f0a629dfdc
commit
8435cfd815
|
@ -0,0 +1,10 @@
|
||||||
|
import { privateKeyToAddress } from './private-key-to-address'
|
||||||
|
|
||||||
|
describe('privateKeyToAddress', () => {
|
||||||
|
it('should return public address', () => {
|
||||||
|
const privateKey =
|
||||||
|
'0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709'
|
||||||
|
const address = privateKeyToAddress(privateKey)
|
||||||
|
expect(address).toEqual('0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01')
|
||||||
|
})
|
||||||
|
})
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { keccak256 } from 'ethereum-cryptography/keccak'
|
||||||
|
import { getPublicKey } from 'ethereum-cryptography/secp256k1'
|
||||||
|
import { bytesToHex } from 'ethereum-cryptography/utils'
|
||||||
|
|
||||||
|
export function privateKeyToAddress(privateKey: string): string {
|
||||||
|
const publicKey = getPublicKey(privateKey)
|
||||||
|
const publicKeyWithoutPrefix = publicKey.slice(1) // uncompressed public key has 04 prefix
|
||||||
|
const hash = keccak256(publicKeyWithoutPrefix)
|
||||||
|
const address = bytesToHex(hash.slice(12))
|
||||||
|
|
||||||
|
// TODO: add checksum
|
||||||
|
return address
|
||||||
|
}
|
Loading…
Reference in New Issue