di4
November 29, 2017, 2:37pm
1
Hello thank you
I am still confused.
Please indicate what should be done to derive “Bitcoin address” from “private key”.
Also i do not want to use Web wallets, as i was advised not store it online.
What should i do to pay someone to their “Bitcoin address” without using wallet.
To derive Bitcoin Address from a given private key:
First you calculate the public key of a given private key using elliptic curve multiplication.
Then, you take the public key and apply it through 2 hash functions, SHA256() and RIPEMD260(), and you’ll get A’:
A = RIPEMD260(SHA256((Public Key))
Then, calculate double-SHA checksum of A:
checksum = SHA256(SHA256(version prefix + A))
where ‘+’ denotes concatenation.
Then, append first 4-byte of the above checksum to A:
A = version prefix + A + checksum.
Lastly, turn 'A into Base58Check encoding (which allows these characters: ‘123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz’)
Bitcoin Address = Base58Check(A)
For details, please see:
Chapter 4. Keys, Addresses, Wallets
Mastering Bitcoin
by Andreas M. Antonopoulos
Published by O’Reilly Media, Inc., 2014
di4
December 1, 2017, 10:33am
3
Could you make an example with expected outputs?
Where I should put these commands?
Do I need use Linux Virtual machine?
Consider using LibBitcoin Explorer (bx).
Use bx ec-to-public
command to derive the EC (Elliptic Curve) public key of an EC private key. e.g.,
$ bx ec-to-public 8ed1d17dabce1fccbbe5e9bf008b318334e5bcc78eb9e7c1ea850b7eb0ddb9c8
returns:
0247140d2811498679fe9a0467a75ac7aa581476c102d27377bc0232635af8ad36
Then, use bx ec-to-address
command to convert an EC public key to a payment address.
e.g.,
$ bx ec-to-address 0247140d2811498679fe9a0467a75ac7aa581476c102d27377bc0232635af8ad36
returns:
1EKJFK8kBmasFRYY3Ay9QjpJLm4vemJtC1
bx, as mentioned , can be installed and run on Linux, Macintosh and Windows.
Please share with us if you have been using better tool/library.