Yog tias peb saib cov qauv ntawm ob peb xyoos dhau los, peb tau hnov txog blockchain txhua lub sijhawm, tab sis tsis ntau txog qhov tshwj xeeb.
Peb txhua tus paub tias cryptocurrencies xws li Bitcoin, Ethereum, Dogecoin, Matic, thiab lwm tus cia siab rau blockchain thev naus laus zis. Blockchain coj cov xwm txheej tseem ceeb uas tau hloov pauv ntau qhov kev lag luam hauv 2021 thiab ua rau txoj hauv kev rau kev ua tiav tshiab.
Blockchain yog ib txoj hauv kev khaws cov ntaub ntawv hauv txoj kev uas nyuaj lossis tsis tuaj yeem hloov kho, hack, lossis swindle. Nws yog ib daim ntawv teev cov lej ntawm cov kev lag luam uas tau muab luam tawm thiab nthuav dav thoob plaws blockchain tag nrho cov network ntawm computer systems.
Nws yog lub hauv paus-tawg database technology uas powers xyaum txhua cryptocurrencies. Blockchain ua rau nws nyuaj heev rau hack lossis dag lub kaw lus los ntawm kev nthuav tawm cov ntawv luam zoo ib yam ntawm cov ntaub ntawv thoob plaws ib lub network.
Thaum Bitcoin yog tam sim no qhov tseem ceeb tshaj plaws siv rau blockchain, thev naus laus zis tuaj yeem ua haujlwm rau ntau yam kev siv.
Cryptocurrencies thiab blockchains tau nrov zuj zus nyob rau xyoo tas los no, thiab qhov kev xav no yuav tsum txuas ntxiv mus.
Peb mam li ua ib qho yooj yim blockchain nrog JavaScript hauv no nyeem. Nws yuav qhia koj txog kev nkag siab yooj yim ntawm blockchain ua haujlwm li cas.
Cia peb hu nws MelodyCoin thiab tau txais txoj cai ntawm qhov kev txiav txim!
Tsim Ib Thaiv
Txhawm rau pib, peb yuav tsim cov ntaub ntawv JavaScript tshiab uas peb yuav tso tag nrho peb cov lej.
Cia peb hu nws main.js thiab pib nrog cov lus piav qhia txog yuav ua li cas blockchain thiab blocks yuav tsum saib.
Tsim ib chav Block thiab muab nws ua haujlwm Object() { [native code] } pib nrog.
Koj yuav tsum muab hnub, thiab hash ntawm yav dhau los thaiv thaum tsim ib qho tshiab:
Nov yog cov lus txhais rau txhua yam khoom:
- Lub sij hawm teev qhia tias thaum lub block tau ua. Koj tuaj yeem siv hom ntawv twg koj xaiv (hauv qhov no, UNIX timestamp).
- Txhua daim ntawv ntawm cov ntaub ntawv uas koj xav txuas rau qhov thaiv no tuaj yeem suav nrog hauv cov ntaub ntawv parameter. Yog tias koj xav tsim lub cryptocurrency, koj tuaj yeem khaws cov ntaub ntawv sib pauv xws li tus xa / txais thiab cov nyiaj tau los ntawm no.
- PreviousHash yog ib txoj hlua uas tuav lub block ua ntej lub hash. Qhov no yog dab tsi yuav tsim cov saw hlau ntawm blocks, uas yuav yog ib qho tseem ceeb hauv kev muab kev ncaj ncees ntawm peb blockchain tom qab.
Tsim Hashes
Txhua qhov thaiv txuas mus rau qhov thaiv ua ntej (yog li yav dhau losHash vaj tse). Ntawd yog, txhua qhov thaiv yuav tsum muaj hash. Lub hash zoo ib yam li tus ntiv tes. Nws yog qhov txawv rau txhua qhov thaiv.
Ib qho block's hash tuaj yeem suav tau los ntawm kev hla tag nrho nws cov ntsiab lus los ntawm kev ua haujlwm hash.
Yog li, cia peb pib los ntawm kev siv lub luag haujlwm uas suav cov hash ntawm tam sim no thaiv.
Yog li, nyob rau hauv chav kawm Block, peb txhais cov kev ua haujlwm suav Hash:
Txawm li cas los xij, SHA256 hash tsis txhawb JavaScript thiab yuav tsum tau txais los ntawm lub tsev qiv ntawv sab nraud.
Crypto-js yog lub pob zoo heev uas suav nrog kev ua haujlwm ruaj ntseg ntawm ntau qhov hash algorithms.
Tom qab ntawd peb tuaj yeem xa nws mus rau hauv peb tus lej main.js.
Tam sim no uas peb muaj peb qhov kev suav Hash() ua haujlwm, cia peb muab tso rau hauv peb qhov Block's function:
Tom qab piav qhia qhov Block zoo li cas, peb tuaj yeem txhais tau tias Blockchain yuav tsum zoo li cas. Yog li cia peb tsim chav kawm tshiab.
Hauv qhov xwm txheej no, blockchain yog ib yam khoom yooj yim heev uas muaj cov cuab yeej cuab tam. Qhov no yog ib qho array tuav tag nrho cov blocks ntawm cov saw.
Ua ntej peb tuaj yeem ntxiv cov blocks, peb yuav tsum xub tsim qhov hu ua "genesis block." Qhov no yog thawj qhov thaiv hauv cov saw hlau, thiab nws yog qhov tshwj xeeb uas nws tsis tuaj yeem taw tes rau qhov thaiv ua ntej (nws yog thawj!).
Yog li, txhawm rau tsim cov genesis block, Kuv mam li ntxiv cov haujlwm rau peb cov chav kawm hu ua createGenesisBlock (). Rov qab rau hauv qhov ua haujlwm Object() { [native code] } ntawm peb chav kawm Blockchain.
Tam sim no peb tuaj yeem suav nrog genesis block txhua lub sijhawm peb tsim qhov tshiab Blockchain piv txwv:
Txoj kev Blockchain
Tam sim no, cia peb ntxiv txoj hauv kev rau peb chav kawm Blockchain uas yuav tso cai rau peb ua tej yam xws li ntxiv cov blocks tshiab thiab nqa cov thaiv tshiab tshaj plaws.
Lub getLatestBlock muaj nuj nqi yog qhov yooj yim tshaj plaws. Nws tsuas yog rov qab cov tswv cuab kawg ntawm cov saw array:
Cov txheej txheem addBlock yog me ntsis ntxiv.
Ua ntej peb tuaj yeem ntxiv qhov thaiv tshiab rau peb cov saw hlau, peb yuav tsum ua ntej kom tsim nyog qhov thaiv qhov ua ntejHash teb.
Nws yuav tsum tau teem rau lub hash ntawm qhov tsis ntev los no ntxiv thaiv rau peb cov saw hlau. Peb kuj yuav tsum xam qhov hash ntawm lub block tshiab:
Kuaj
Cia saib seb peb MelodyCoin tau tawm li cas.
Tsim ib qho piv txwv blockchain kom ua tiav qhov no. Cia peb ntxiv ob peb blocks ntxiv:
Peb tau ua ob lub block tshiab nyob ntawd. Cia peb saib seb peb cov blockchain zoo li cas tam sim no.
MelodyCoin yuav stringified thiab formatted nrog plaub qhov chaw:
Txheeb xyuas qhov Blockchain kev ncaj ncees
Blockchains yog qhov zoo heev vim tias ib zaug ib lub thaiv tau ntxiv lawm, nws tsis tuaj yeem hloov kho yam tsis muaj kev lees paub qhov seem ntawm cov saw hlau.
Txawm li cas los xij, tsis muaj txoj hauv kev rau kuv los txheeb xyuas qhov ncaj ncees ntawm peb cov blockchain nrog qhov kev siv no.
Cia peb qhia txog isChainValid muaj nuj nqi rau peb cov blockchain. Yog tias cov saw hlau raug cai, nws yuav rov qab muaj tseeb; txwv tsis pub, nws yuav rov qab tsis tseeb:
Kev Ntsuas Kev Ncaj Ncees
Tam sim no peb tuaj yeem muab peb cov blockchain kev ncaj ncees rau qhov kev sim. Yog tias peb ua tam sim no, nws yuav lees paub tias peb cov saw hlau yog qhov tseeb.
Cia peb tam sim no sim tamper nrog peb blockchain. Cia peb hloov kho 2 thiab sau nws cov ntsiab lus (xav tias peb pauv 100 npib tsis yog plaub).
Thaum peb ua qhov no, peb tuaj yeem pom tias software lees paub peb txoj kev siv zog los cuam tshuam nrog cov saw hlau.
Txawm li cas los xij, koj tuaj yeem ntseeg tau tias muaj lwm txoj hauv kev rau kuv los cuam tshuam nrog qhov no. Kuv hloov cov ntsiab lus hauv qhov thaiv tab sis tsis suav cov hash. Yog li koj tuaj yeem sim ua kom ntse thiab rov xam cov hash ntawm tib lub thaiv.
Qhov ntawd yog txhua yam muaj rau peb qhov kev teeb tsa me me blockchain! Nws tso cai rau peb ntxiv cov blocks tshiab thiab tshawb pom kev cuam tshuam nrog cov ntaub ntawv hauv cov saw hlau.
Muaj ob qhov teeb meem nrog peb cov blockchain me me uas peb yuav tsum hais:
- Cov khoos phis tawj niaj hnub no nrawm heev thiab tuaj yeem ntxiv ntau txhiab blocks rau peb cov saw hauv vib nas this. Peb pom tseeb tsis xav kom leej twg spamming peb blockchain.
- Peb blockchain tseem muaj kev cuam tshuam rau kev cuam tshuam. Koj tuaj yeem hloov kho cov ntsiab lus ntawm qhov thaiv thiab tom qab ntawd tsuas yog xam cov hashes (thiab ua ntej hashes) rau tag nrho cov blocks hauv qab no. Txawm hais tias koj mess nrog nws, koj yuav xaus nrog cov saw hlau raug cai.
Txhawm rau daws cov kev txhawj xeeb no, blockchains siv cov txheej txheem hu ua "pov thawj ntawm kev ua haujlwm." Koj yuav tsum ua kom pom tau tias koj tau siv ntau qhov kev siv nyiaj txiag los tsim ib qho thaiv uas siv txoj hauv kev no. Qhov no kuj hu ua tsuas.
Pov thawj-ntawm-ua hauj lwm yuav tsum tau hais tias ib tug block lub hash pib nrog ib tug tshwj xeeb npaum li cas ntawm zeros. Tab sis koj yuav paub li cas seb koj tus hash haum rau txoj cai no?
Cov ntsiab lus ntawm lub block txiav txim siab nws cov hash. Yog li peb ib txwm tau txais tib lub hash, yog tias peb tsis hloov cov ntsiab lus.
Txhua qhov thaiv yuav tsum muaj qhov tsis muaj nqis ntxiv rau nws raws li kev daws teeb meem. Qhov no yog qhov tseem ceeb qee cov ntaub ntawv random uas peb tuaj yeem hloov kho kom txog thaum lub hash ntawm peb qhov thaiv pib nrog xoom txaus. Vim tias koj tsis tuaj yeem hloov qhov hash muaj nuj nqi cov zis, koj yuav tsum sim ntau qhov sib txawv ua ke thiab cia siab rau qhov zoo tshaj plaws.
Qhia Mining rau Blockchain
Cia peb pib los ntawm kev suav nrog ib qho nonce hauv peb chav Block. Qhov nonce yog tus nqi nkaus xwb nyob rau hauv peb qhov thaiv uas peb tuaj yeem hloov kho kom cuam tshuam rau qhov block's hash.
Peb tsis tuaj yeem hloov lub sijhawm los yog cov ntaub ntawv.
Tom ntej no, cia peb sau mineBlock() muaj nuj nqi uas yuav ua qhov tseeb mining ntawm ib qho thaiv. Qhov kev ua haujlwm no yuav raug xa mus rau qhov xav tau nyuaj raws li qhov ntsuas thiab yuav txuas ntxiv mus kom txog thaum lub hash ntawm peb qhov thaiv pib nrog xoom txaus.
Kuv nyuam qhuav ua ib qho yooj yim thaum lub voj uas yuav khiav mus txog thaum peb hash pib nrog xoom txaus. Peb siv qhov nyuaj los txiav txim seb yuav tsum muaj pes tsawg zeros. Nrog rau qhov nyuaj ntawm 5, peb hash yuav tsum pib nrog 5 zeros.
Thaum peb hash tsis muaj pes tsawg txaus, peb tsa qhov nonce los ntawm ib qho thiab rov xam cov hash. Thiab yog tias peb pom ib qho hash uas sib haum rau qhov nyuaj, peb nkag mus rau lub console.
Muaj ib qho ntxiv uas peb yuav tsum ua. Peb tsis tshua coj qhov tsis sib xws rau hauv tus account hauv peb txoj kev suavHash, yog li ntawm no nws yog:
Blockchain Class
Cia peb muab txoj hauv kev tshiab no rau qhov kev xeem hauv peb chav kawm blockchain thiab saib seb nws mus li cas.
Txhawm rau pib, Kuv mam li txhais qhov nyuaj ntawm peb cov blockchain hauv kev ua haujlwm Object(). Peb txhais nws ntawm no vim peb tuaj yeem siv nws tom qab.
Lub addBlock muaj nuj nqi yuav tsum tau hloov kho xws li nws mines lub block ua ntej ntxiv rau hauv peb cov saw hlau.
Siv Blockchain
Tam sim no, cia peb muab peb cov blockchain tshiab los siv nrog cov ntaub ntawv pov thawj-ntawm-ua haujlwm algorithm. Ntawm no, ntxiv ob peb console.log nqe lus.
Thaum peb ua tiav cov cai no, peb tuaj yeem pom tias cov txheej txheem tsuas yog tsis nrawm tshwj xeeb.
Nws yuav siv sij hawm qee lub sij hawm rau lub algorithm los tsim cov blocks nrog hashes uas pib nrog peb zeros (raws li teeb tsa los ntawm kev nyuaj).
Yog li ntawd yog qhov kawg ntawm peb qhov kev teeb tsa blockchain.
Peb tuaj yeem tswj hwm sai npaum li cas cov blocks tshiab ntxiv rau peb cov blockchain ua tsaug rau cov pov thawj ntawm kev ua haujlwm.
Nws yog qhov tseem ceeb tshaj plaws kev ruaj ntseg feature ntawm blockchains. Thiab tam sim no koj nkag siab tias nws ua haujlwm li cas, tau tsim koj tus kheej!
Sau ntawv cia Ncua