- Get Bitcoin Address From Private Key
- Generate Wallet Address Without Private Key West
- Generate Wallet Address From Private Key
This article has 3 sections - one for the new Blockchain.info wallets based of BIP39 seeds, one for classic wallet addresses imported into the new wallet and one for the classic old wallets.
For Blockchain.info's newer wallets based on a recovery phrase
Note: Blockchain.info's new wallets make use of a bip39 recovery seed to generate EVERY ADDRESS and PRIVATE KEY in your Blockchain.info account. At this time it is not possible to extract only 1 address' private key so the only option is to make use of the recovery seed to gain access to the address that has your OmniTokens. Extreme care should be taken to perform the following steps on an airgapped/offline machine to preserve the integrity of your recovery seed. You may even want to consider this method a fallback/last resort and after completing the recovery actions discard all addresses/wallets/accounts and start a new Blockchain.info wallet.You have been warned
- If you do not already have your Blockchain.info recovery seed/phrase you will need to login to your Blockchain.info account and navigate to the 'Security Center' and then click on the 'Phrase Backup' Option under Level 1 (Note: Once you backup the recovery phrase you will not be able to access it again. Make sure you properly record this info)
- If you have more than 1 wallet in your blockchain.info account you will need to determine which wallet contains the address you want to recover.
- In blockchain.info's wallet go to 'Settings-> Addresses'. You will see all your wallets listed by name.
- If you only have 1 then your Account number for step 6 is 0. If you have more than 1 then use the 'Manage Address' button to display the addresses within each wallet until you find the wallet that contains the address you want to recover/import into Omniwallet.
- Count down the list of wallets starting with 0 for the first/'My Bitcoin Wallet' and when you reach the wallet that has the address make note of its number. This will be the account number for step 6.
- Once you have your recovery phrase you will need access to the Bip39 generator
- We recommend you download the 'bip39-standalone.html' file directly from github to thumbdrive
- On your offline machine access/open/load the 'bip39-standalone.html' file
- Enter your Blockchain.info recovery phrase/seed in the webpage next to 'BIP39 Mnemonic'
- Choose number of words = '12' (or set the number of words for how many were in your recovery phrase)
- Scroll down to the 'Derivation Path' (leave BIP44 selected) and enter your account number from step 2 here.
- Leave all the rest of the entries set to their default
- Scroll down to the 'Derived Addresses' section and you should now see a list of addresses that will match the list of addresses in blockchain.info for your wallet.
- Find the address in question and copy its private key.
- Once you have this you can go to https://www.omniwallet.org and click 'Create a New Wallet' (or log into a wallet you already created).
- Once you have created/logged into your wallet go to the 'My Address' page and click the 'Import Address with Private Key' Button.
- Enter the private key you exported from blockchain.info and in a few moments that address should be added to your wallet and displayed in the list below giving you access to your BTC and any Omni Protocol Properties on that address.
- If the newly imported address does NOT match the address you are expecting try taking a look at this article: After importing my private key and the address I get is different than what I expected!
For Blockchain.info addresses imported into the New Blockchain.info Wallet from Blockchain.info's Classic Wallets
- Login to your wallet on Blockchain.info
- Goto the 'Settings' Menu on the left
- Goto the 'Addresses' Submenu under 'Settings' Menu
- On the right side find the section named 'Imported Addresses'
- Click on 'Manage Addresses'
- On the new screen find the address you want to export the private key from
- Click on the 'More Options' on far right side of that address
- Select 'Private Key' and then 'Continue'
- Choose the 'Private Key Format' : 'WIF'
- Copy the Private Key listed and go to your Omniwallet
- Once you have this you can go to https://www.omniwallet.org and click 'Create a New Wallet' (or log into a wallet you already created).
- Once you have created/logged into your wallet go to the 'My Address' page and click the 'Import Address with Private Key' Button.
- Enter the private key you exported from blockchain.info and in a few moments that address should be added to your wallet and displayed in the list below giving you access to your BTC and any Omni Protocol Properties on that address.
- If the newly imported address does NOT match the address you are expecting try taking a look at this article: After importing my private key and the address I get is different than what I expected!
- Mar 13, 2019 Send your Proof of Payment to [email protected] once is confirmed you will get your software, licence key plus the User Guide download link in your email address.
- The drawback is that they are in charge of your private keys. You may implement your own simple solution using an extended public key (XPUB) from a hierarchically deterministic (HD) wallet, however. The whole process is explained in BIP 32. I suggest you read it first to get a general idea of how addresses.
- The generate from keys switch requires the private spend key, view key, and public address in order to recreate the wallet. The first piece of info it requested was probably a filename to save to, not the seed. It is what you use when you have all the raw information, but not the seed. It you want to restore from seed, you need to use the.
For Blockchain.info Classic Wallets
- Login to your wallet on Blockchain.info
- Click 'Import/Export' link in the second header
- Click 'I Understand' to the advanced warning
- On the left side menu click 'Export unencrypted'
- Enter your secondary password
- Select the 'Private Key Format' of 'Bitcoin-QT Format'
- In the window underneath you will see a bunch of json formatted text (text enclosed in {} braces).
- Search for the last few lines that look like 'addr':'1Pd3','priv':'....'
- Your private key will be the shown after the 'priv' and will start with either the number 5 or the letter K
- Once you have this you can go to https://www.omniwallet.org and click 'Create a New Wallet' (or log into a wallet you already created).
- Once you have created/logged into your wallet go to the 'My Address' page and click the 'Import Address with Private Key' Button.
- Enter the private key you exported from blockchain.info and in a few moments that address should be added to your wallet and displayed in the list below giving you access to your BTC and any Omni Protocol Properties on that address.
- If the newly imported address does NOT match the address you are expecting try taking a look at this article: After importing my private key and the address I get is different than what I expected!
You can explore the functionality of the platform, create a profile, create gigs, accept gigs, start disputes and bid. We will add new features step by step. Do not send any real Ether. Please use Ropsten-Ether! You are welcome to explore the platform and please send.
Clone this wiki locally
In the previous article, we looked at different methods to generate a private key. Whatever method you choose, you’ll end up with 32 bytes of data. Here’s the one that we got at the end of that article:
60cf347dbc59d31c1358c8e5cf5e45b822ab85b79cb32a9f3d98184779a9efc2
We’ll use this private key throughout the article to derive both a public key and the address for the Bitcoin wallet.
What we want to do is to apply a series of conversions to the private key to get a public key and then a wallet address. Most of these conversions are called hash functions. These hash functions are one-way conversions that can’t be reversed. We won’t go to the mechanics of the functions themselves — there are plenty of great articles that cover that. Instead, we will look at how using these functions in the correct order can lead you to the Bitcoin wallet address that you can use.
Elliptic Curve Cryptography
The first thing we need to do is to apply the ECDSA or Elliptic Curve Digital Signature Algorithm to our private key. An elliptic curve is a curve defined by the equation
y² = x³ + ax + b
with a chosen a
and b
. There is a whole family of such curves that are widely known and used. Bitcoin uses the secp256k1 curve. If you want to learn more about Elliptic Curve Cryptography, I’ll refer you to this article.By applying the ECDSA to the private key, we get a 64-byte integer. This consists of two 32-byte integers that represent the X and Y of the point on the elliptic curve, concatenated together.
For our example, we got:
1e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7b73ff919898c836396a6b0c96812c3213b99372050853bd1678da0ead14487d7
.In Python, it would look like this:
Note: as you can see from the code, before I used a method from the
ecdsa
module, I decoded the private key using codecs
. This is relevant more to the Python and less to the algorithm itself, but I will explain what are we doing here to remove possible confusion.In Python, there are at least two classes that can keep the private and public keys: “str” and “bytes”. The first is a string and the second is a byte array. Cryptographic methods in Python work with a “bytes” class, taking it as input and returning it as the result.
Now, there’s a little catch: a string, say,
4f3c
does not equal the byte array 4f3c
, it equals the byte array with two elements, O&
lt;. And that’s what codecs.dec
ode method does: it converts a string into a byte array. That will be the same for all cryptographic manipulations that we’ll do in this article.Public key
Once we’re done with the ECDSA, all we need to do is to add the bytes
0x04
at the start of our public key. The result is a Bitcoin full public key, which is equal to: 041e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7b73ff919898c836396a6b0c96812c3213b99372050853bd1678da0ead14487d7
for us.Compressed public key
But we can do better. As you might remember, the public key is some point (X, Y) on the curve. We know the curve, and for each X there are only two Ys that define the point which lies on that curve. So why keep Y? Instead, let’s keep X and the sign of Y. Later, we can derive Y from that if needed.
The specifics are as follows: we take X from the ECDSA public key. Now, we add the
0x02
if the last byte of Y is even, and the byte 0x03
if the last byte is odd.In our case, the last byte is odd, so we add
0x03
to get the compressed public key: 031e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7
. This key contains the same information, but it’s almost twice as short as the uncompressed key. Cool!Previously, wallet software used long, full versions of public keys, but now most of it has switched to compressed keys.
Encrypting the public key
From now on, we need to make a wallet address. Whatever method of getting the public key you choose, it goes through the same procedure. Obviously, the addresses will differ. In this article, we will go with the compressed version.
What we need to do here is to apply SHA-256 to the public key, and then apply RIPEMD-160 to the result. The order is important.
Get Bitcoin Address From Private Key
SHA-256 and RIPEMD-160 are two hash functions, and again, we won’t go into the details of how they work. What matters is that now we have 160-bit integer, which will be used for further modifications. Let’s call that an encrypted public key. For our example, the encrypted public key is
453233600a96384bb8d73d400984117ac84d7e8b
.Here’s how we encrypt the public key in Python:
Generate Wallet Address Without Private Key West
Adding the network byte
The Bitcoin has two networks, main and test. The main network is the network that all people use to transfer the coins. The test network was created — you guessed it — to test new features and software.
We want to generate an address to use it on the mainnet, so we need to add
0x00
bytes to the encrypted public key. The result is 00453233600a96384bb8d73d400984117ac84d7e8b
. For the testnet, that would be 0x6f
bytes.Checksum
Now we need to calculate the checksum of our mainnet key. The idea of checksum is to make sure that the data (in our case, the key) wasn’t corrupted during transmission. The wallet software should look at the checksum and mark the address as invalid if the checksum mismatches.
To calculate the checksum of the key, we need to apply SHA-256 twice and then take first 4 bytes of the result. For our example, the double SHA-256 is
512f43c48517a75e58a7ec4c554ecd1a8f9603c891b46325006abf39c5c6b995
and therefore the checksum is 512f43c4
(note that 4 bytes is 8 hex digits).The code to calculate an address checksum is the following:
Getting the address
Finally, to make an address, we just concatenate the mainnet key and the checksum. That makes it
00453233600a96384bb8d73d400984117ac84d7e8b512f43c4
for our example.That’s it! Generate ssh key arch linux. That’s the wallet address for the private key at the start of the article.
But you may notice that something is off. You’ve probably seen a handful of Bitcoin addresses and they didn’t look like that. Well, the reason is that they are encoded with Base58. It’s a little bit odd.
Here’s the algorithm to convert a hex address to the Base58 address:
What we get is
17JsmEygbbEUEpvt4PFtYaTeSqfb9ki1F1
, a compressed Bitcoin wallet address.Conclusion
The wallet key generation process can be split into four steps:
- creating a public key with ECDSA
- encrypting the key with SHA-256 and RIPEMD-160
- calculating the checksum with double SHA-256
- encoding the key with Base58.
Depending on the form of public key (full or compressed), we get different addresses, but both are perfectly valid.
Here’s the full algorithm for the uncompressed public key:
If you want to play with the code, I published it to the Github repository.
I am making a course on cryptocurrencies here on freeCodeCamp News. The first part is a detailed description of the blockchain.
Generate Wallet Address From Private Key
Windows 7 home premium sp1 key generator. I also post random thoughts about crypto on Twitter, so you might want to check it out.