Біткойн (, ад — адзінка інфармацыі «біт» і — «манета») — электронная пірынгавая валютная сістэма, створаная ў 2009 годзе Сатоcі НакаматоSatoshi Nakamoto в Bitcoin Wiki, сапраўдная асоба якога (ці групы асоб) застаецца невядомай.
Гэта назва таксама належыць праграмнаму забеспячэнню з адкрытым зыходным кодам, створанаму ім, і аднарангавай сетцы, утворанай гэтай праграмай. Сховішчам сродкаў з’яўляецца файл-гаманец, які захоўваецца на камп’ютары. Біткойн можа быць адасланы любому карыстальніку ў сетцы, выкарыстоўваючы адрас Bitcoin.
У адрозненні ад іншых валют, біткойн не залежыць ад нейкага цэнтра, што займаецца вытворчасцю валюты. Даныя аб перамяшчэнні грашовых сродкаў захоўваюцца ў размеркаванай БД. Немагчыма распараджацца чужымі грашовымі сродкамі і выдаткаваць адны і тыя ж сродкі двойчы: для забеспячэння бяспекі ўжываюцца крыптаграфічныя метады.
Прынцып аднарангавай сеткі і адсутнасць адміністрацыйнага цэнтра робіць немагчымым дзяржаўнае рэгуляванне і маніпуляцыі курса шляхам змянення грашовай масы. Эмісія біткойна алгарытмічна абмежавана. Біткойн прадугледжвае ананімнае валоданне і перавод грашовых сродкаў.
Біткойн — адна з першых рэалізацый крыптавалюты, апісанай у 1998 годзе Вэй Дай (Wei Dai) у рассыланні шыфрапанкаў.
Агляд Біткойн заснаваны на запісе перамяшчэння грашовых сродкаў з ужываннем асіметрычнага шыфравання. Усе транзакцыі публічныя і захоўваюцца ў размеркаванай БД. Для прадухілення шматразовай траты адной і той жа сумы сетка рэалізуе нешта накшталт размеркаванага серверу часу, ужываючы ідэю ланцуга хэшаў, кожны з якіх вылічаецца на базе папярэдняга. Для змяншэння памеру БД выкарыстоўваецца дрэвападобнае хэшаванне.
Тэхнічныя падрабязнасці Біткойн — рэалізацыя ідэі прапанаванай Вэй Дай пад назвай b-money і Ніка Сабо (Nick Szabo) пад назвай Bitgold. Па словах Сатосі, распрацоўка біткойна пачалася ў 2007 годзеQuestions about Bitcoin. Прынцыпы работы сістэмы пададзены ў працы Сатосі Накамото ў 2008 годзе.
Адрасы Bitcoin адрас з’яўляецца вынікам пераўтварэння адкрытага ключа карыстальніка. Публічныя ключы, ці адрасы біткойн, выконваюць функцыю канчатковых пунктаў пры адпраўцы і прыёме грашовых сродкаў. Адпаведныя ім прыватныя ключы аўтарызуюць адпраўніка. Адрасы не змяшчаюць ніякай інфармацыі пра іх уладальніка і ў агульным выпадку з’яўляюцца ананімнымі. Кожны ўдзельнік сеткі біткойн мае так званы гаманец, які ўтрымлівае адвольную колькасць пар ключоў. Біткойн ужывае алгарытм ECDSA з параметрамі secp256k1 для стварэння новых пар ключоў. Памер закрытага ключа — 256 біт, а адпаведнага яму адкрытага ключа — 512 біт. Карыстальнік біткойн можа мець мноства адрасоў, ствараючы іх па ўласнай ініцыятыве. Стварэнне новага адрасу ўяўляе сабой стварэнне новай пары ключоў і не патрабуе нават злучэння з сеткай. Стварэнне адрасу толькі для адной транзакцыі ці аднаго карэспандэнта дазваляе захаваць ананімнасць.
Алгарытм стварэння Bitcoin адраса. Адкрыты ключ паслядоўна хэшуецца з дапамогай SHA-256 і RIPEMD-160. Перад вынікам пункта 1 дадаецца байт ID сеткі (0x00 — асноўная сетка). Выкарыстоўваецца SHA-256 да выніка пункта 2. Абіраюцца першыя 32 біта ад выніка папярэдняга кроку і дадаюцца ў канец выніка пункта 2. Вынік пункта 4 пераўтвараецца ў base58 радок з дапамогай Base58Check кадзіравання.
Адрасы ў тэкставай форме ўяўляюць сабой радкі даўжынёй да 34 сімвалаў, якія складаюцца з літар лацінскага алфавіта і лічбаў, напрыклад 1PksxEN1zvFoP59qxXTg5cZWixeTqS6Nt9. Існуюць варыянты прадстаўлення адрасоў біткойн у выглядзе QR-кодаў і іншых двухмерных штрыхкодаў, прыдатных для счытвання мабільнымі прыладамі.
Транзакцыі thumb|left|350px|Транзакцыі Біткойн вызначае кожную манету ланцугом лічбавых подпісаў. Калі адзін карыстальнік перадае нейкую суму другому карыстальніку, ён стварае новую транзакцыю, якая змяшчае хэш папярэдняй транзакцыі, падпісанай ім, і публічны ключ наступнага ўладальнікаTransactions — Bitcoin. Потым гэтая інфармацыя шырокавяшчальным запытам адпраўляецца ў сетку біткойн. Астатнія ўдзельнікі сеткі правяраюць подпісы, перш чым прыняць транзакцыю да апрацоўкі.
Магчымы выпадкі, калі неабходна перадаць сродкі, атрыманыя з розных транзакцый некалькім розным карыстальнікам. Для гэтых мэт транзакцыі падтрымліваюць шматлікія ўваходы і выхады. Значэнні з усіх уваходаў сумуюцца і сума распаўсюджваецца па выхадах.
Для таго, каб праверыць транзакцыю, ужываецца сцэнарый на Forth-подобнай мове. У цяперашні час у Біткойн існуе тры розных сцэнарыі транзакцый: перавод на IP-адрас, перавод на Bitcoin-адрас і генерацыя. Апошні тып транзакцый ужываецца пры генерацыі блокаў для эмісіі новых манет.
Ланцуг блокаў 102px|thumb|right|Асноўная паслядоўнасць блокаў (чорныя) з’яўляецца самай доўгай ад пачатковага (зялёны) да бягучага. Пабочныя галіны (шэрыя) адсякаюцца.
Транзакцыі не пацвярджаюцца, пакуль не будуць калектыўнымі намаганнямі сеткі спакаваны ў паслядоўнасць блокаў. Пацверджанне засноўваецца на тым, што праведзеная работа па спакоўцы можа быць хутка праверана, што выключае шматразовае выдаткоўванне адных і тых жа сродкаў ці падробку.
Блок уяўляе сабой запіс усіх ці некалькіх з самых апошніх транзакцый, якія пакуль не былі запісаны ў папярэднія блокі. Ён дзеліцца на загаловак і спіс транзакцый. Загаловак блока ўключае ў сябе свой SHA-256 хэш, версію блока(зараз ужываецца толькі дадзеная версія блока — 1), SHA-256 хэш папярэдняга блока з ланцуга, спіс хэшаў транзакцый, час стварэння блока, параметры bits і nounce, колькасць транзакцый у блоке і памер блока ў байтах. У пачатак спіса транзакцый дадаецца транзакцыя генерацыі, якая ў выпадку паспяховай генерацыі блока перадае карыстальніку ўзнагароды за створаны блок.
Створаны блок будзе прыняты астатнімі карыстальнікамі толькі ў тым выпадку, калі SHA-256 хэш загалоўка роўны ці ніжэй пэўнай мэты, якая вылічаецца з параметра bits. Напрыклад, калі значэнне bits 0x1a0115cb, то мэтай з’яўляецца 0x0115cb * 2**(8*(0x1a - 3)) = 0x0000000000000115cb0000000000000000000000000000000000000000000000. Максімальна магчымая мэта (г.зн. мінімальная складанасць) вызначаецца значэннем bits 0x1d00ffff.
Калі блок не задавальняе мэты, то параметр nounce змяняецца і хэш пералічваецца. Гэты працэс патрабуе мноства цыклаў спроб і памылак, таму што вынік функцыі хэшавання (SHA-256) практычна непрадказальны. Калі задача вырашана, вузел рассылае атрыманы блок усім далучаным вузлам. Іншыя вузлы правяраюць блок, і, калі ён верны, прымаюць яго ў якасці наступнага сапраўднага, гэта значыць дадаюць у ланцуг.
Мэта карэктуецца кожныя 2016 блокаў, у залежнасці ад таго, колькі часу спатрэбілася на іх стварэнне. У ідэале ўся сетка будзе генераваць адзін блок кожныя 10 хвілін, г.зн. на генерацыю 2016 блокаў павінна сысці два тыдні. Калі 2016 блокаў было згенеравана даўжэй чым за два тыдні, то мэта павялічваецца, у адваротным выпадку змяншаецца. Такім чынам, сістэма будзе генераваць блокі з пастаяннай хуткасцю, не залежнай ад магутнасці сеткі.
Любыя транзакцыі не лічацца легітымнымі (не лічацца «пацверджанымі»), пакуль інфармацыя пра іх не будзе згрупавана ў спецыяльныя структуры — блокі. Структура і інфармацыя ў блоках падпарадкоўваюцца зададзеным правілам і яе можна хутка спраўдзіць. Кожны блок заўсёды змяшчае інфармацыю (хэш) ад адным папярэднім блоку. Гэта дазваляе ўсе існуючыя блокі ўявіць у выглядзе ланцуга, які з’яўляецца размеркаванай базай даных і змяшчае інфармацыю аб усіх здзейсненых калі-небудзь аперацыях з біткойнамі.
Блокі адначасова ствараюць мноства майнераў. Рэгулярна ўзнікаюць сітуацыі, калі адзін і той жа блок з’яўляецца папярэднім для двух новых блокаў. У кожным з новых блокаў могуць сустракацца як аднолькавыя транзакцыі, так і розныя. Праз некаторы час з’яўляюцца чарговыя блокі, ланцуг можа раздваіцца. Кожная з галін раўнавартасная да той пары, пакуль адна з іх не атрымае больш доўгі працяг. Звычайна пры роўнай даўжыні перавага аддаецца таму ланцугу, канцавы блок якой з’явіўся раней. Сістэма аўтаматычна лічыць легітымным даўжэйшы ланцуг, не звяртаючы ўвагу на час стварэння апошняга блока. Транзакцыі, якія ўвайшлі выключна ў менш працяглую галіну (у тым ліку па выплаце ўзнагароды), страчваюць статус пацверджаных. Калі гэта транзакцыя перадачы біткойнаў, то яна можа быць уключана ў наступны блок. Транзакцыі атрыманя ўзнагароды за стварэнне адсечаных блокаў не дубліруюцца ў другой галіне, гэта значыць «лішнія» біткойны за адсечаныя блокі не атрымліваюць далейшых пацверджанняў і «страчваюцца».
Такім чынам ланцуг блокаў змяшчае крыптаграфічную гісторыю валодання пэўнай порцыяй біткойн. Калі карыстальнік паспрабуе выкарыстаць калісьці атрыманыя біткойны ізноў, сетка не прыме яго транзакцыю як дзейсную.
Эмісія Першай транзакцыяй кожнага блока-кандыдата з’яўляецца налічэнне генеруючаму вузлу ўзнагароджвання ў 50 біткойнаў. Пасля стварэння кожных 210 000 блокаўНа момант 2011-02-14 іх колькасць прыблізна роўная 108 100 узнагароджванне будзе змяншацца ў 2 разыАпісанне кантралюемай інфляцыі. Такім чынам, агульная колькасць біткойнаў не перавысіць 21 000 000. У выпадку знікнення часткі гэтых сродкаў з абароту, дадзенае абмежаванне не будзе праблемай, таму што мінімальны аб’ём транзакцыі складае 10−8 біткойн.
Верагоднасць атрымання ўзнагароджання залежыць ад стаўлення вылічальнай магутнасці вузла да сумарнай вылічальнай магутнасці ўсіх вузлоў сеткі. Жадаючыя атрымаць як мага большае ўзнагароджанне імкнуцца задзейнічаць як мага большыя вылічальныя магутнасці для генерацыі: ужыванне вектарных графічных працэсараў (GPU)http://www.theregister.co.uk/2011/08/16/gpu_bitcoin_brute_forcing/ «the idea of GPGPU extremely attractive for the purpose of bitcoin mining» (у сотні разоў эфектыўней CPUhttp://arstechnica.com/tech-policy/news/2011/08/symantec-spots-malware-that-uses-your-gpu-to-mine-bitcoins.ars «estimates that GPUs can compute hashes up to 750 times as quickly as a typical CPU.»). Гэты від дзейнасці атрымаў назву «майнінг» ( — здабыча карысных выкапняў, шахтная распрацоўка), верагодна, з-за падабенства з золатаздабычай. Па меры падзення аб’ёму ўзнагароджання матывацыя карыстальнікаў, верагодна, перамесціцца на збор камісій.
Так як вылічальныя магутнасці сеткі нясталыя, праграмнае забеспячэнне вузлоў праз кожныя 2016 блокаў, а гэта прыкладна кожныя два тыдні, пералічваеГісторыя змянення складанасці сеткі Bitcoin патрабаванні да хэшаў блокаў такім чынам, каб падтрымліваць сярэднюю частату генерацыі на ўзроўні 6 блокаў у гадзіну. Такім чынам, хуткасць эмісіі жорстка зададзена самім алгарытмам і не можа быць зменена пабочнымі фактарамі.
Захоўванне даных У Bitcoin была дададзена сістэма, арганізуючая запісы транзакцый такім чынам, што карыстальнік можа лакальна выдаляць даныя з сваёй базы, якія яму дакладна не спатрэбяцца. Пасля таго, як усе транзакцыі з нейкімі сродкамі былі спакаваны ў блокі, папярэднія транзакцыі з гэтымі сродкамі можна адкінуць для эканоміі месца на дыску. Для таго, каб гэта можна было ажыццявіць без змянення хэша блока, транзакцыі хэшуюцца з дапамогай TTH і ў загаловак блока змяшчаецца толькі вынік дадзенага хэшавання.
Зараз усе карыстальнікі Bitcoin атрымліваюць поўную базу даных (блокі без індэксацыі і аптымізацыі) пасля запуску праграмы ў першы раз. Станам на жнівень 2012 яе памер складае крыху болей за 2 ГБ. Без транзакцый мае памер каля 80 байт. Так як блокі генеруюцца прыкладна кожныя 10 хвілін, то за год будзе збірацца 4.2 МБ блокаў.
Пулы Для памяншэння ўплыву фактара ўдачы і больш раўнамернага і прадказальнага заробку, карыстальнікі могуць аб’ядноўвацца ў вылічальныя пулыPooled Mining //Bitcoin wiki. Уклад карыстальніка ў пул ацэньваецца ў шарах (shares). Шара — гэта кандыдат у подпіс блока, у сярэднім трэба 232 аперацый хэшавання для знаходжання адной шарыReward systems //Bitcoin wiki. Для знаходжання блока ў сярэднім патрабуецца колькасць шар, роўная бягучай складанасці. Існуе 3 асноўных тыпы налічэння ўзнагародMining pool reward FAQ //Bitcoin wiki: Proportional — пасля знаходжання пулам блока ўзнагарода дзеліцца прапарцыйна ўкладу кожнага ўдзельніка.