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