Her er et bash-skript som gjør det som er skissert nedenfor:https://gist.github.com/JBaczuk/dab51daf6280f6a2d4b58897d6b36e9b
Dette er en praktisk, teknisk veiledning om generering avBitcoinadresser inkludert private og offentlige nøkler, og kryptografien som er involvert. Selv om dette vil fungere, er det bedre å bruke lommeboken til å generere og administrere adressene dine, dette er for pedagogiske formål.
Lær mer og bli med folk i 48 land rundt om i verden iFullfør kurs i Bitcoin/Blockchain.
Denne guiden vil lede deg gjennom alle trinnene for å generere en Bitcoin-adresse ved hjelp av kommandolinjen på en Mac. Lignende trinn bør være mulig på andre operativsystemer som bruker lignende kryptografiske verktøy. Linjer som begynner med$
angir terminalkommandoer, som du kan skrive og kjøre (uten$
selvfølgelig).
Avhengigheter
brygge
- Installasjon:https://brew.sh/pip
- Installasjon:sudo easy_install pip
libressl
- Installasjon:brew install libressl
base58
- Installasjon:pip install base58
Merk: For å gjøre det inneholdte
openssl
cli-kommandoer, installerte jeglibressl
for at noen av de elliptiske kurvekommandoene skal fungere ettersom den nåværende versjonen av openssl cli på mac har enfeil.
Offentlig nøkkelkryptering
Eller asymmetrisk kryptografi, er en type kryptografi som bruker nøkkelpar, som hver er unik. Nøkkelparet inkluderer en offentlig nøkkel og en privat nøkkel. Dette er den typen kryptografi som Bitcoin bruker for å kontrollere midler. En offentlig nøkkel kan genereres fra en privat nøkkel, men ikke omvendt (beregningsmessig for vanskelig). Også noe som er kryptert med en privat nøkkel kan dekrypteres med den offentlige nøkkelen, og omvendt, derfor er de asymmetriske.
Brukssaker
- Kryptering: Når en bruker har en offentlig nøkkel, kan en melding krypteres ved hjelp av en offentlig nøkkel, som kun kan leses av personen med den private nøkkelen. Dette fungerer også omvendt.
- Digitale signaturer: En bruker kan, med sin private nøkkel og en hash av enkelte data, bruke en digital signaturalgoritme som ECDSA for å beregne en digital signatur. Deretter kan en annen bruker bruke algoritmen til å bekrefte signaturen ved å bruke den offentlige nøkkelen og hashen til de samme dataene. Hvis den går gjennom, beviser dette at en bruker faktisk sendte inn en spesifikk melding, som ikke har blitt tuklet med.
- Digitalt fingeravtrykk: Er en måte å representere et vilkårlig stort datasett ved å beregne hashen til det for å generere et fingeravtrykk av standardstørrelse. Dette fingeravtrykket ville være så vanskelig å replikere uten de samme nøyaktige dataene, som kan antas å ikke ha blitt tuklet med.
Private nøkler er det som beviser at du kan sende Bitcoin som har blitt sendt til deg. Det er som passordet til bankkontoen din. Hvis du mister den eller noen andre får tak i den, er du toast.
Offentlige nøkler hjelper folk å vite hvordan de skal sende deg Bitcoin.
Lær mer og bli med folk i 48 land rundt om i verden på kurset mitt om hvordanBli en Bitcoin + Blockchain-programmerer.
Generering av privat nøkkel
Private nøkler kan være en hvilken som helst 256 bits (32 byte) verdi fra0x1
til0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140
.¹
Det totale mulige antallet private nøkler er derfor 2²⁵⁶ eller 1,16 x 10⁷⁷. Se for deg det totale antallet atomer i kroppen din, og forestill deg at hvert av disse atomene er en jord. Det totale antallet atomer på alle disse jordene er omtrent 7 x 10⁷⁷.² Det er praktisk talt ingen sjanse for at din tilfeldige private nøkkel noen gang vil bli generert tilfeldig eller funnet av noen andre.
En vanlig (men ikke den sikreste) måten å lage en privat nøkkel på er å starte med et frø, for eksempel en gruppe ord eller passordfraser valgt tilfeldig. Dette frøet sendes deretter gjennom SHA256-algoritmen, som alltid vil generere en 256-bits verdi. Dette er mulig fordi hvert datamaskintegn er representert av en heltallsverdi (se ASCII og Unicode).
Merk: SHA256 er en enveis deterministisk funksjon som betyr at det er lett å beregne i én retning, men du kan ikke reversere den. For å finne en spesifikk utgang, må du prøve alle mulige innganger til du får ønsket utgang (brute forcing) og det vil alltid produsere samme utgang gitt henholdsvis samme input.
Frøet kan brukes til å generere den samme private nøkkelen hvis den samme hashing-algoritmen brukes i fremtiden, så det er bare nødvendig å lagre frøet.
$ echo "dette er en gruppe ord som ikke bør anses som tilfeldig lenger, så bruk aldri dette til å generere en privat nøkkel" | openssl sha256a966eb6058f8ec9f47074a2faadd3dab42e2c60ed05bc34d39d6c0e1d32b8bdf
Denne private nøkkelen er i heksadesimal eller base 16. Hvert 2 siffer representerer 8 biter eller 1 byte. Så, med 64 tegn, er det totalt 256 biter.
Lær mer og bli med folk i 48 land rundt om i verden på kurset mitt om hvordanBli en Bitcoin + Blockchain-programmerer.
Generering av offentlig nøkkel
Offentlige nøkler genereres fra de private nøklene i Bitcoin ved hjelp av elliptisk kurve (secp256k1
) multiplikasjon ved hjelp av formelenK = k * G
, hvorK
er den offentlige nøkkelen,k
er den private nøkkelen, ogG
er en konstant kalt Generator Point⁴, som forsecp256k1
er lik:
03 8 F FB10D4B8
Det ser ikke ut til å være kjent hvordan dette punktet ble valgt av de designere av kurven. Dessuten er denne algoritmen en enveisalgoritme, eller en "felledør"-funksjon slik at en privat nøkkel ikke kan utledes fra den offentlige nøkkelen. Det er viktig å merke seg detmultiplikasjon av elliptisk kurveer ikke det samme som skalar multiplikasjon, selv om den deler lignende egenskaper.
For å gjøre dette i terminalen fra vår private nøkkel tidligere,
$ openssl ec -inform DER -text -noout -in <(cat <(echo -n "302e0201010420") <(echo -n "a966eb6058f8ec9f47074a2faadd3dab42e2c60ed05bc34d70dn" 06052b8104000a") | xxd -r -p) 2>/dev/null | hale -6 | hode -5 | sed 's/[ :]//g' | tr -d '\n' && ekko043cba1f4d12d1ce0bced725373769b2262c6daa97be6a0588cfec8ce1a5f0bd092f56b5492adbfc570b15644c74cc8a4874ed250dce1aed
Denne offentlige nøkkelen inneholder et prefiks0x04
og x- og y-koordinatene på den elliptiske kurvensecp256k1
, henholdsvis.
Komprimert offentlig nøkkel
De fleste lommebøker og noder implementerer komprimert offentlig nøkkel som standardformat fordi den er halvparten så stor som en ukomprimert nøkkel, og sparer blokkjedeplass. For å konvertere fra en ukomprimert offentlig nøkkel til en komprimert offentlig nøkkel, kan du utelate y-verdien fordi y-verdien kan løses for å bruke ligningen til den elliptiske kurven: y² = x³ + 7. Siden ligningen løser for y², kan høyre side av ligningen være enten positiv eller negativ. Så,0x02
er satt foran for positive y-verdier, og0x03
er satt foran negative. Hvis det siste binære sifferet i y-koordinaten er 0, er tallet partall, som tilsvarer positivt. Hvis det er 1, så er det negativt. Den komprimerte versjonen av den offentlige nøkkelen blir:
023cba1f4d12d1ce0bced725373769b2262c6daa97be6a0588cfec8ce1a5f0bd09
Prefikset er0x02
fordi y-koordinaten ender på0xa4
, som er jevnt, derfor positivt.
Lær mer og bli med folk i 48 land rundt om i verden på kurset mitt om hvordanBli en Bitcoin + Blockchain-programmerer.
Adresse generering
Det er flere Bitcoin-adressetyper for øyeblikketP2SH
eller betal-til-skript-hash er standard for de fleste lommebøker.P2PKH
var forgjengeren og står for Pay to Public Key Hash. Skript gir deg mer funksjonalitet, som er en grunn til at de er mer populære. Vi vil først generere enP2PKH
opprinnelig format adresse, etterfulgt av nå standardP2SH
.
Hash
Den offentlige nøkkelen fra forrige utdata hashes først ved bruksha256
og deretter hashe ved hjelp avripemd160
. Dette forkorter antall utdatabyte og sikrer at i tilfelle det er et uforutsett forhold mellom elliptisk kurve og sha256, vil en annen ikke-relatert hash-funksjon betydelig øke vanskeligheten med å reversere operasjonen:
$ echo 023cba1f4d12d1ce0bced725373769b2262c6daa97be6a0588cfec8ce1a5f0bd09 | xxd -r -p | openssl sha256
(stdin)= 8eb001a42122826648e66005a549fc4b4511a7ad3fc378221aa1c73c5efe77ef$ echo 8eb001a42122826648e66005a549fc4b4511a7ad3fc378221aa1c73c5efe77ef | xxd -r -p | openssl ripemd160
(stdin)= 3a38d44d6a0c8d0bb84e0232cc632b7e48c72e0e
Merk at siden inngangen er en streng, vil
xxd -r -p
vil konvertere hex-strengen til binær og deretter sende den ut i hexdump-stil (ascii), som er hva openssl-hash-funksjonene forventer som input.
Koding
Nå som vi har hashe den offentlige nøkkelen, utfører vi nåbase58sjekk
koding.Base58sjekklar hashen vises på en mer kompakt måte (ved å bruke flere bokstaver i alfabetet) mens du unngår tegn som kan forveksles med hverandre som 0 og O der en skrivefeil kan føre til at du mister pengene dine. En kontrollsum brukes for å sikre at adressen ble overført riktig uten datakorrupsjon, for eksempel feiltasting av adressen.
Adresseformat
BitcoinP2PKH
adresser begynner med versjonsbyteverdien0x00
angir adressetypen og slutter med en 4 byte kontrollsum. Først setter vi versjonsbyten (prefikset) foran vår offentlige nøkkelhash og beregner og legger til sjekksummen før vi koder den ved å brukebase58
:
$ echo 003a38d44d6a0c8d0bb84e0232cc632b7e48c72e0e | xxd -p -r | base58 -c && ekko
16JrGhLx5bcBSA34kew9V6Mufa4aXhFe9X
Merk:
-c
angir at en kontrollsum skal brukes. Kontrollsummen beregnes som kontrollsum = SHA256(SHA256(prefiks+data)) og bare de første 4 bytene av hashen legges til på slutten av dataene.
Den resulterende verdien er aP2PKH
adresse som kan brukes til å motta Bitcoin:16JrGhLx5bcBSA34kew9V6Mufa4aXhFe9X
Lær mer og bli med folk i 48 land rundt om i verden på kurset mitt om hvordanBli en Bitcoin + Blockchain-programmerer.
Pay-to-Script Hash
Den nye standard adressetypen er en betal-til-skript-hash, der i stedet for å betale til en pubKey-hash, er det en skript-hash. Bitcoin har et skriptspråk, du kan lese mer om dether. I utgangspunktet tillater det ting som flere signaturkrav for å sende Bitcoin eller en tidsforsinkelse før du får lov til å sende penger, osv. Et vanlig brukt skript er en P2WPKH (Pay to Witness Public Key Hash):OP_0 0x14
hvor PubKey Hash erRIPEMD160
avSHA256
av den offentlige nøkkelen, som før, og 0x14 er antall byte i PubKey Hash. Så for å gjøre dette skriptet til en adresse, søker du ganske enkeltBASE58SJEKK
tilRIPEMD160
avSHA256
av manusetOP_0 0x14
bortsett fra at du prepend0x05
til script-hashen i stedet for0x00
for å angi adressetypen er aP2SH
adresse.
$ echo 00143a38d44d6a0c8d0bb84e0232cc632b7e48c72e0e | xxd -r -p | openssl sha256
(stdin)= 1ae968057eaef06c3e13439695edd7a54982fc99f36c3aa41d8cc41340f30195$ echo 1ae968057eaef06c3e13439695edd7a54982fc99f36c3aa41d8cc41340f30195 | xxd -r -p | openssl ripemd160
(stdin)= 1d521dcf4983772b3c1e6ef937103ebdfaa1ad77$ echo 051d521dcf4983772b3c1e6ef937103ebdfaa1ad77 | xxd -p -r | base58 -c && ekko
34N3tf5m5rdNhW5zpTXNEJucHviFEa8KEq
Lær mer og bli med folk i 48 land rundt om i verden på kurset mitt om hvordanBli en Bitcoin + Blockchain-programmerer.
FAQs
How do you enter a Bitcoin address? ›
In order to send crypto to another user's wallet you'll have to enter their wallet address, either by copy-pasting it into your wallet app's “send” field or by scanning a QR code the recipient provides. Crypto wallet addresses can be 40 alphanumeric characters, so they can be quite cumbersome to enter manually.
How much Bitcoin would $1,000 get me? ›How much is 1000 US Dollar in Bitcoin? 1000 US Dollar is 0.031795 Bitcoin. So, you've converted 1000 US Dollar to 0.031795 Bitcoin.
How can I get 1 Bitcoin easily? ›Answer: The best ways to earn free bitcoins include shopping rewards with credit cards, but you can also try airdrops, referral bonuses, playing games, and participating in trading competitions if you are an expert or beginner trader.
How do I set up a Bitcoin wallet? ›- Step 1: Select a software wallet app. The first step in creating a software crypto wallet is to select a reliable wallet provider. ...
- Step 2: Download the wallet app to your phone or computer. ...
- Step 3: Create an account. ...
- Step 4: Transfer your assets.
Structurally, Bitcoin addresses are typically between 26 and 35 characters and are usually alphanumeric. They have private keys, which you need to carry out transactions between addresses. These addresses have a standard format: a pay-to-public key hash (P2PKH).
What is an example of a Bitcoin wallet address? ›Bitcoin wallet addresses have between 26 and 35 characters and consist of both letters and numbers. They start with either "1," "3," or "bc1." Here's an example of a Bitcoin address: 1Lbcfr7sAHTD9CgdQo3HTMTkV8LK4ZnX71.
How much is $1 Bitcoin in US dollars? ›1 USD = 0.000033367 BTC Jul 22, 2023 08:27 UTC
Check the currency rates against all the world currencies here. The currency converter below is easy to use and the currency rates are updated frequently. This is very much needed given the extreme volatility in global currencies lately.
This means the $1,000 invested in 2015 would be worth about $76,363.71, giving a whopping 7636% returns for those who divested at the time. Today, the same $1,000 spent to purchase 3.801 BTC in June 2015 is worth $34,936.89 -- not as absurd as the December 2017 height, but still a considerable gain of 3493%.
How do I convert Bitcoin to cash? ›- Use a crypto debit card like the BitPay Card.
- Sell crypto for cash on a central exchange like Coinbase or Kraken.
- Use a P2P exchange.
- Seek out a Bitcoin ATM.
- Bonus: Gift cards.
Can I get Bitcoin for free? ›
You can also earn free Bitcoins by claiming Airdrops, where you are required to spread the word or increase the awareness about a certain crypto product or any coin. Such airdrops events are associated with free distribution of Bitcoins or other cryptocurrencies which are given to only selected users.
How to start Bitcoin mining for free? ›- Download the MinerGate application on the Play Store.
- Account Registration.
- Enter the app.
- Click the mining option.
- Choose the mining option you want.
- Start mining.
- Choose Bitcoin crypto.
Free bitcoin wallets are available for all major operating systems and devices to serve a variety of your needs. For example, you can install an app on your mobile device for everyday use or you can have a wallet only for online payments on your computer.
Is cash App a bitcoin wallet? ›Once you have bitcoin, you need a wallet and private key to access it. Cash App acts as a bitcoin wallet, where you can view your BTC balance and buy or sell at any time.
Can I send Bitcoin to cash App? ›You can deposit up to $10,000 worth of bitcoin in any 7-day period. Depending on network activity, it can take hours before transfers into or out of your Cash App are confirmed on the blockchain. Cash App only supports Bitcoin (BTC). We do not support any other type of cryptocurrency, including BCH or BSV.
How much is $100 Bitcoin worth right now? ›Current value of 100 BTC in USD is 2,997,800 USD
This is the real-time data fetched from our partnered price aggregators. At the moment, you are looking at the conversion of 100 BTC when 1 BTC is valued at 29,978 USD.
Year | Bitcoin price on January 1 | BTC acquired with $100 investment |
---|---|---|
2020 | $7,300 | 0.013 BTC |
2021 | $29,200 | 0.0034 BTC |
2022 | $47,800 | 0.0020 BTC |
2023 | $16,630 | 0.0060 BTC |
500 US Dollar is 0.016735 Bitcoin.
How much Bitcoin will $2,000 dollars buy? ›How much is 2000 US Dollar in Bitcoin? 2000 US Dollar is 0.066753 Bitcoin. So, you've converted 2000 US Dollar to 0.066753 Bitcoin.