Jak funguje bitcoin change adresa?

bitcoin
howto
transakce

#1

Ahojky vsem,

Snazim se uz dlouho pochopit jak funguje change adresa ale vse co na netu najdu je napsano ne moc dobre az doslova nesrozumitelne proto bych byla rada kdyby mi to nekdo vysvetlit podrobne.

-Co vim

Mam 10BTC na adrese AAA a chci poslat 4BTC na adrsu BBB.
Stane se to ze 4 BTC se poslou na adresu BBB a 6 se posle na change adresu ale uz nevim proc tomu tak je.

A jestli to tak musi byt jestli se to nemuze poslat rovnou zpet.
A taky nechapu vubec to ze nekde ctu ze change adresy se nemeni a pak zase nekde ctu ze chage adresy se meni stale.

Dekuji za odpovedi :-p


#2

Ahoj,
rozměňovací adresa už z pojmenování napovídá, že slouží k rozměnění větší částky, aby šlo poslat menší. Řekněme, že spojení „na adrese je 10 BTC“ není úplně přesné, ale pokud člověk nerecykluje adresy, tak je to jedno. Tedy zjednodušeně řečeno, člověk musí utratit vždycky vše, co na adrese je (tak to technicky zkrátka funguje, nejde to obejít :c)).

Důvod, proč se používá speciální rozměňovací adresa, a ne ta původní, ze které se posílalo, je primárně bezpečnost, sekundárně soukromí (nebo naopak). Bylo relativně dost případů, kdy kvůli chybě v peněžence a recyklaci adres došlo ke ztrátě peněz (někdo jiný si je přivlastnil, protože šlo z dostupných dat vypočítat soukromý klíč k dané adrese). Totéž ohledně recyklace rozměňovacích adres – správně by se neměla adresa použít více než jednou, ale některé peněženky to stejně dělají. Co se týče soukromí, když pošleš drobné zpátky na původní adresu, tak každý vidí, kolik jsi vlastně utratila.

Ještě malá poznámka: peníze můžou být na více adresách a v jedné transakci se může utrácet z více adres, takže kdyby se posílaly drobné „zpátky na původní adresu“, tak je otázka, která z nich to vlastně je, protože všechny jsou celkem rovnocenné. Když se vezme nová, tak tahle otázka jednoduše odpadá. :c)


#3

Dik dobre napsane,

Takze kdyz mam klient “Bitcoin Core” a nekdo me posle 15x nejakou castku a celkove to bude 10BTC budu to mit na 15x adresach a klient me ukazuje soucet ze vsech adres jestli to rikam dobre.

Kdyz pak poslu vsech 10BTC na jednu adresu posle se to z 15x adres. A ty se pak smazou a penezenka me ukaze 0BTC…

A jestli se nepletu tak bych rekla ze tahle penezenka uz nema jednu hlavni adresu jak to bejvalo ale vsechny adresy se generuji s master klice ktery je ulozeny v penezence mam pravdu nebo se v necem pletu dik za odpoved :stuck_out_tongue:

PS: Daji se nejak z penezenky “Bitcoin Core” zjistit privatni klice ?

A taky jsem nikde nenasla moznost importovat penezenku ale jenom zalohovat proc tomu tak je ?


#4

Bitcoin Core zatím ještě generuje nové adresy náhodně, ale podpora pro systematické generování z jednoho klíče (který se zálohuje jako 12–24 slov někam bezpečně na papír) se už také připravuje.

To, jestli se těch 15 částek objeví na stejné adrese nebo ne, záleží na tom, jaké cílové adresy odesílatel použil. A pokud nedostal 15 různých, ale jen jednu, tak došlo právě k oné recyklaci. Každopádně klient vždy ukazuje součet za celou peněženku. S tím, kde přesně které mince jsou, si tedy není potřeba lámat hlavu (leda si člověk chce sám ručně skládat transakce, a to se pak člověku stejně vypíše – je to skryté pod ruční správou mincí).

Staré adresy se nemažou (ani automaticky, ani není možnost to udělat v klientovi ručně), jen se zaeviduje nový stav účtů.

Export soukromých klíčů se dá celkem snadno provést přes Ladicí konzoli a příkaz dumpprivkey (ovšem peněženka musí být odemčená – viz příkaz walletpassphrase).

S importem je to celkem dobrá poznámka – myslím si, že taková možnost by tam být mohla. Osobně se sice domnívám, že to je kvůli tomu, že je nutné projít celým řetězem bloků a zkontrolovat, jestli v nich není nějaká relevantní transakce, což může nějaký čas zabrat, ale skutečný důvod neznám. Každopádně se to dá opět obejít přes konzoli a příkaz importwallet, případně po jednom přes příkaz importprivkey.


#5

Velice dekuji tyhle informace jsem presne chtela vedet.

Jinak nechapu “zaeviduje nový stav účtů”

To znamena ze vsechny adresy na ktere neco nekdy prislo budou navzdy ulozene v penezence ?

Kdyz jich bude moc ulozenych nebude to zatezovat penezenku ? (pomale nacitani zustatku) ?

Jinak neni mozne tyto adresy nacist napr. pomoci prikazu z penezenky neni to bezpecnostni riziko ?


#6

Klient si uchovává celou historii peněženky – viz záložku „Transakce“. Tohle je uložené staticky a nanejvýš se to aktualizuje při stahování nových bloků či transakcí. Zpomalení by tam asi mohlo být, pokud jich bude opravdu hodně, pod čímž si osobně představuji něco mezi jednotkami a stovkami tisíc adres (nezkoušel jsem to, jenom tak odhaduji). Pro normální provoz se není potřeba znepokojovat – nejpomalejší je stejně načítání bloků. ;c)

Aby člověk mohl klientovi poslat příkaz, potřebuje znát ovládací heslo (a ještě ho obvykle posílat ze stejného počítače). Pokud by to byl nějaký virus, tak to v zásadě udělat může. Jediné, co získá, je ale skutečně jen seznam použitých adres (což je riziko jen pro soukromí) – klíče jsou totiž šifrované. Aby se dostal ke klíčům, musel by buď odchytit heslo (např. jako keylogger) nebo se příkazem trefit do okamžiku, kdy je peněženka odemčená (což je ale otázka, jestli by šlo – teoreticky je možné, že to má Bitcoin Core ošetřené a nelze příkazem využívat odemčení peněženky provedené přes GUI – jestli to tak ale skutečně je, nevím). Proti tomu je zase dobrá fyzická peněženka, jako je třeba Trezor, ale ten zase nejde použít dohromady s Bitcoin Core. :c\

(Mimochodem, super otázky!)


#7

Jses jako bitcoinwiki ale mnohem prijemnejsi :smiley:

Kdyz nebudu brat historii transakci a historii vyzadanych plateb ktere jdou smazat.
Ale presto si nejsem jista jestli se data smazou i fizicky ze souboru “wallet.dat”

Tak stare adresy na kterych byly bitcoiny a ktere jsou ulozene jako vse ostatni v souboru “wallet.dat” smazat jak rikas nejde.

Takze jedina moznost je vytvorit novou penezenku a poslat na ni bitcoiny takz. smazat soubor “wallet.dat” (PS chapu ze ji musim zalohovat abych to pak poslala)

Zeptam se na takovou vec co me vrta v hlavne penezenka ktera je ofic a kterou pouzivam “Bitcoin Core” by nemela predavat IP adresu.

Kdyz ale dam ladici okno a najedu do zalozky protejsky vidim tam IP adresy ale jen ty co jdou ven (to znamena ze nevidim prichozi v programu ale daji se presto snadno zjistit pomoci jineho softwaru napr jestli se nepletu) ale nechapu proc tam vidim odchozi k cemu je to dobre ?


#8

Hehe, dík. :smiley:

To ohledně souboru wallet.dat je celkem přesné. Jde udělat i to, že si prvně vytvoříš novou peněženku přes přepínač -wallet= při spouštění bitcoin-qt (soubor se uloží do stejného adresáře, jak je wallet.dat), vykopíruješ si nové adresy (kolik je potřeba), pak znovu spustíš s wallet.dat, převedeš všechny mince, zkontroluješ, že vše došlo a že v původní je nula, a pak můžeš v zásadě starý wallet.dat smazat. Osobně bych si z něj ale stejně adresy a příslušné soukromé klíče vyexportoval, protože člověk nikdy neví (může se stát, že někdo pošle mince na starou adresu). Těch pár kilobajtů zálohovací médium snese. Jsou utility (jako například pywallet), které to umí vyexportovat přímo ze souboru wallet.dat.

Ohledně IP adres. Aby měl člověk maximální míru soukromí/anonymity, musel by se připojovat přes Tor proxy (pozor ale na to, že i tady existují útoky na soukromí – například přes dočasné zabanování většiny bran mimo ty, které ovládá útočník).

Protějšky se rozlišují na příchozí a odchozí podle toho, kdo se ke komu připojil. Běžně je člověk doma za Natem, nemá veřejnou IPv4 adresu, takže se k němu nemůže nikdo připojit (leda po IPv6), a proto nebude mít žádná příchozí spojení, ale jen odchozí. Odchozích spojení je běžně až 8 (ale můj klient má celkem problémy se na tohle číslo vyškrábat – v tenhle moment má třeba jen jedno spojení :c\ ). Standardně se Bitcoin Core snaží zapřít, s kým je nebo není spojen (myšleno když se ostatní uzly ptají na seznam známých uzlů v síti), plus když se posílá transakce, tak se nerozesílá všem, ale Bitcoin Core si vybere jeden/pár uzlů, které bude používat jako své rozesílací kanály, a navíc si je nevybírá z příchozích spojení, ale jen odchozích. Tím pádem se snižuje šance pro přesnou identifikaci původce transakce, i když si útočník navytváří hromadu uzlů v síti.

A proč tam jsou vidět – dřív nebyly, ale je to šikovná informace při ladění nebo jen tak pro zvědavost. ;c) (Víc než IP adresa spíš ty ostatní informace, co tam jsou.)


#9

V “Bitcoin Core” v zalozce “Prijmi” vytvarim ruzne adresy ktere kdyz v “Historie vyzadanych plateb” smazu zustanou navzdy ulozene v souboru “wallet.dat” a kdyz me na ty adresy nekdo posle bitcoiny dostanuje.

Kdyz si zalohuji penezenku “wallet.dat” kde budu mit vytvorene takto 3 adresy a budu pouzivat nadale puvodni penezenku kde vytvorim 2 nove adresy a neco se stane.

A ja bych se chtela nebo musela obnovit penezenku ze zalohy nebudu mit k tem 2 novym adresam pristup jestli to rikam dobre.

Takze je dobre mit “wallet.dat” v nejakem sync cloudovem reseni.
napr. Mega.co.nz

Ted otazka je nejaky prikaz ktery presune a prejmenuje treba penezenku aby se nacitala z jineho umisteni v systemu Windows nebo Linux ?

Jestli se v necem pletu prosimte napis v cem :slight_smile:

Jinak strasne me prave zajima jestli nejsou prikazy i na export adres a klicu treba do txt nebo se na to musi pouzivat nejaky cizi soft ?


#10

No, z ruky (natož do cloudu) bych osobně peněženku nedal, ale každopádně je dobrý nápad to ještě extra zašifrovat (například přes gpg). Pro klid.

Přepnout Bitcoin Core na jiný soubor s peněženkou jde přes ten argument -wallet= (ve Windows nevím, v G/L normálně třeba v terminálu bitcoin-qt -wallet=wallet2.dat například).

Ad export: zkus příkaz dumpwallet


#11

Jinak jsem to pochopila a napsala teda dobre ze bych nemela pristup k tem dvou adresam jo ?

EDIT: Na strance https://bitcoin.org/en/choose-your-wallet
Kde jsou penezenky pres web neni (blockchain wallet)

Nevis proc tomu tak je uplne me to ted zarazilo ja jsem myslela ze blockchain je nejvetsi a ofic penezenkana ze vsech…


#12

Blockchain.info oficiální rozhodně není. Vyřazená byla už před více jak rokem, viz https://github.com/bitcoin-dot-org/bitcoin.org/pull/663. Osobně bych žádnou webovou peněženku nepoužíval – jsou z principu nejméně bezpečné ze všech (předstihnout už je můžou jenom služby typu Coinbase, kde veškeré klíče mají oni – u peněženek typu té od Blockchain.info to bylo tak napůl). Pokud chceš něco malého, rychlého a jednoduchého, mrkni na Electrum – připojuje se k různým serverům, od kterých získává historii pro dané adresy, ale veškeré klíče jsou u tebe na počítači, a to ještě šifrované. Navíc je to historicky první peněženka, která používala deterministické generování adres.

Wallet.dat obsahuje více adres, než kolik zobrazuje v GUI. Bitcoin Core totiž předgeneruje stovku klíčů dopředu, a z nich pak bere. To znamená, že není nutné zálohovat každou jednotlivou novou adresu, ale stačí podle frekvence používání. Tyhle věci doporučuji vyzkoušet v testnetu (tzn. spustit Bitcoin Core s přepínačem -testnet), což vytvoří novou peněženku a stáhne testovací (a daleko menší) blockchain. Jsou různé weby, kde si pak můžeš nechat poslat testovací mince, například http://faucet.luis.im/. Je to celkem šikovné. Člověk se přeci jenom cítí líp, když si něco sám ověřil, než když musí jen věřit někomu, kdo mu něco řekl.


#13

Super diky moc mrknu se na ten Electrum.

Pomoci prikazu dumpwallet “test1” jsem dostala ty adresy ven divila jsem se proc tam mam 105 adres.

Jen nechapu na co tech 100 adres je kdyz zadam vytvorit patvu tak se vytvori nova adresa prece proto tam mam tech 105 k cemu teda jsou ?

Jinak muzes me tea potvrdit jeste tohle:
Jinak jsem to pochopila a napsala teda dobre ze bych nemela pristup k tem dvou adresam jo ?


#14

Pokavaď ty adresy nebudou mezi těmi předgenerovanými, tak ne. Pokud budou, tak ano. Osobně by mi přišlo divné, pokud by nebyly, ale klidně si to ověř – dump před, dump po a porovnat. Mělo by to být tak, že z těch předpřipravených klíčů se v okamžiku, kdy chceš „vytvořit adresu“, jeden vezme a použije. A automaticky se z nich bere na rozměňovací adresy. Samozřejmě se může hnedka vygenerovat další nový klíč, ale to neznamená, že to je ten, který se právě použil – ten spíše bude na konci té zásoby.

Dá se nastavit (případně vynutit příkazem), aby to nebylo 100 klíčů, ale třeba tisíc, deset tisíc apod. Když se ještě nepoužívaly determinstické peněženky (i když, upřímně řečeno, řada služeb je nepoužívá dodnes…), tak se tímto způsobem u veřejných služeb zajišťovalo, že provozovatel bude mít zálohu všech klíčů, kdyby se se serverem něco stalo.


#15

Ta penezenka Electrum je presne to co jsem chtela je vazne super tam krasne vidim adresy i change adresy a co je na nich vazne moc dekuji :smiley:

Jenom se me nejak nedari tam hodit cestinu mam ji nastavenou a vidim v configu ze tam je nastavena ale kdyz zapnu electrum je stale v EN…

Priznam se ze si uz toho pro me napsal hodne a vse jsem diky tobe pochopila ale ted se vazne stracim…

A to i pres to ze jsem nasla celkem pekny clanek zde:
http://www.ami.cz/publikujeme/blog/co-me-naucil-bitcoin-v-kryptografii

Takz. Master key nebo Seed jak se tomu rika tak pres nej se generuji:

  • Privatni klice
  • Verejne klice
  • Bitcoin Adresy
  • (i tech 20 adres a 6 change adres kdyz zapnu electrum)

Laicky receno kdyz ztratim vse co jsem ted popsala ale budu mit (Seed) tak se k bitcoinum dostanu jestli jsem to pochopila…

Co ale nechapu ani laicky je to generovani dam priklad.

Mam seed “12345”

A z toho pustupne dostanu 5 adres (to co je za “_x” je generovano pomoci seedu)

“bitcoin_adresa_1_x68” “privatni_klic_1_x24” "verejni_klic_1_x57"
“bitcoin_adresa_2_x75” “privatni_klic_2_x68” "verejni_klic_2_x47"
“bitcoin_adresa_3_x28” “privatni_klic_3_x98” "verejni_klic_3_x22"
“bitcoin_adresa_4_x88” “privatni_klic_4_x07” "verejni_klic_4_x68"
“bitcoin_adresa_5_x68” “privatni_klic_5_x68” “verejni_klic_5_x99”

A ted moje otazka kdyz ztratim 5 adres ktere jsou nahore a ktere jsou generovane podle seedu “12345” dostanu zase ten stejny seznam ve stejnem poradi nebo NE ?

Ja totiz nechapu kdyz nekdo bude pouzivat rok penezenku ztrati ji jak bude vsechno zpet generovat ze Seedu protoze za tu dobu tam bude mit vazne hodne adres a change adres…


#16

No, v tom článku toho tedy moc není… :c|

Jak je na tom čeština v Electru, nevím, to jsem nepřekládal. Je teoreticky i možné, že chybí překlady, ale netuším. Já to měl vždycky v angličtině.

Seed je základ, ze kterého se vše postupně vypočítá. Současně je potřeba si dát pozor na to, aby člověku skutečně nikde neunikl žádný soukromý klíč, protože z něj by šly dopočítat další soukromé klíče. Takže raději žádné exporty klíčů pro nějaké specifické účely nebo papírové peněženky – v takových případech buďto nový seed nebo přímo vygenerovat náhodně (a mince přeposlat).

Tedy když budu peněženku obnovovat ze seedu, tak si klient vygeneruje počáteční množství adres, a pak se kouká, pro které z nich existují (příchozí) transakce. Když u x-té adresy najde příjem, tak vygeneruje ještě dalšcích x adres a pro ně to kontroluje stejně. Tímhle způsobem postupně obnoví celou transakční historii peněženky, dokud neskončí u posledních N adres, které žádné transakce nemají.

Ze stejného seedu se vždycky vygeneruje stejná posloupnost adres. Toho ostatně využívá třeba onen Trezor – namísto toho, aby měl nějakou velkou vnitřní paměť, do které by si ukládal všechny vygenerované/používané soukromé klíče, tak má uložený jen v malé paměti seed (volitelně zašifrovaný), a pak si nechá říct od klienta, jakou adresu chce a vždycky se k ní dopočítá. A konec konců je v tom schovaný i celý smysl seedu – aby člověk nemusel řešit žádné další zálohy, ale stačila jen jedna na začátku.


#17

Tak nevim ale nechapu proc u penezenky electrum nemohu vytvorit vlastni seed ale musim pouzit ten co se generuje…

A taky nevim proc musim pouzit 13 slovni kombinaci a ne treba 24 coz je max jestli se nepletu…

Kdyz dam import klice a pozmenim nejake pismeno nebo slova zprehazim uplne jinak nemuzu kliknout na next…

Tak si rikam co kdyz se to generuje podle nejakeho klice :smiley:


#18

Detailní informace k seedu jsou tu: http://docs.electrum.org/en/latest/seedphrase.html

Slova jsou ze slovníku, takže ta se jen tak měnit nemůžou. S vytvářením vlastního, snadno zapamatovatelného seedu opatrně – aby nebyl ve výsledku slabý. K zapamatování si často lidé vymýšlejí příběhy, které obsahují příslušná slova v příslušném pořadí (samozřejmě musí vědět, která slova to jsou :-D).


#19

Tak tu češtinu jsem stáhla zde: https://crowdin.com/project/electrum

Dala jsem soubor “electrum.po” do složky "electrum_data"
Cestina je nastavena i v programu ale stale nic tak nevim kde je problem :-/

EDIT:
tak uz vim proc to nejde
https://translate.googleusercontent.com/translate_c?depth=1&hl=cs&prev=search&rurl=translate.google.cz&sl=en&u=https://github.com/spesmilo/electrum/issues/626&usg=ALkJrhgOMs7c66xvL4j8Ci4EBWdoaxTX-Q


#20

Ahojte.

Rad by som sa pridal do Vášej diskusie.

Veľa som pochopil z Vášho rozhovoru, no mám jednu otázku.
Poslal som BTC na jednu adresu. V trnsakcii sa objavila rozmeňovacia adresa no ja ju v peňaženke nevidím. Vidím len poslanú sumu. Ale z hodnoty účtu bola odpočítaná aj suma ktora bola poslana na rozmenovaciu adresu. Transakcia zatiaľ nebola potvrdená (dal som veľmi nízky poplatok).

Kedy sa zobrazia BTC z rozmenovacej adresy.

Použivam Bitcoin core?
Môžem si nejako overiť či rozmenovacia adresa patrí mne?

Ďakujem Vám za radu.