Generating Bitcoin Private Keys and Public Addresses with Elixir
5 stars based on
47 reviews
Elixir ships with all the tools required to generate a cryptographically secure private key and transform it into a public address string. A Bitcoin private key is really just a random two hundred fifty six bit number.
As the name implies, this number is intended to be kept private. From each private key, a public-facing Bitcoin address can be generated. Bitcoin can be sent to this public address by anyone in the world. However, only the keeper of the private key can produce a signature that allows them to access the Bitcoin stored there.
As I mentioned earlier, a Bitcoin private key is really just a random two hundred and fifty six bit number. However, not all random numbers are created equally. To ensure that our private key is difficult to bitcoin generate public key from private key, the Standards for Efficient Cryptography Group recommends that we pick a private key between the number 1 and a number slightly smaller than 1. An excerpt of the SECG guidelines. We can add this validation check fairly easily by adding the SECG-provided upper bound as an attribute to our PrivateKey module:.
Before we pass our private key into our valid? Now we can call PrivateKey. Sign up for Pete's mailing list and have fresh content delivered to you, hot off the presses every week! The most basic process for turning a Bitcoin private key into a sharable public address involves three basic steps.
The first step is to transform our private key into a public key with the help of elliptic curve cryptography. The first element in this tuple is our Bitcoin public key. Once we have our public key in memory, our next step in transforming it into a public address is to hash it. Next, we pipe our public key through two hashing functions: Flipping bitcoin generate public key from private key arguments to: This gives us a thirty two byte binary.
If we wanted, we could Bitcoin generate public key from private key encode this with a testnet version bitcoin generate public key from private key of 0xEF. As its name suggests, converting our private key into a WIF allows us to easily import it into most Bitcoin wallet software:.
Importing our test private key. After initiating the transaction with our faucet, we should see our Bitcoin arrive at our address on either a blockchain exploreror within our wallet software. Our tBTC has arrived. Elixir, thanks to its Erlang heritage, ships with a wealth of tools that make this kind of hashing, signing, and byte mashing a walk in the park. I encourage you to check our the PrivateKey module on Github to get a better feel for the simplicity of the code we wrote today. If you enjoyed this article, I highly recommend you check out the Mastering Bitcoin book.
If you bitcoin generate public key from private key enjoyed this article, feel free to send a few Bitcoin to this address I generated using our new PrivateKey module:. Stay tuned for more Bitcoin-related content as I work my way through Mastering Bitcoin! ElixirBitcoinMastering Bitcoin. Mining for Bitcoin Vanity Addresses with Elixir — In this article we'll our Bitcoin private key generator to mine for vanity addresses.
Once we've built our naive solution, we'll add a drop of Elixir and parallelize the implementation. Bitcoin's Base58Check in Pure Elixir — Elixir ships out of the box with nearly all of the tools required to generate Bitcoin private keys and transform them into public addresses. In this article we implement the missing piece of the puzzle: Secure Meteor — I'm announcing a new project: Learn to how to secure your Meteor application from a Meteor security professional.
This easy to understand and actionable guide will teach you the ins and outs of Meteor security. Hacking Prototypal Inheritance for Fun and Profit — Abuse of prototypal inheritance can allow attackers to exploit your application in various ways. Learn what to watch out for, and how to prevent vulnerabilities. This post may contain affiliate links created with Affiliate Crawler.
Written by Pete Corey on Jan 22,