Upami urang ningal tren sababaraha taun sateuacana, urang kantos nguping ngeunaan blockchain, tapi henteu seueur ngeunaan spésifikna.
Urang sadayana terang yén cryptocurrencies sapertos Bitcoin, Ethereum, Dogecoin, Matic, sareng anu sanésna ngandelkeun téknologi blockchain. Blockchain mingpin acara penting anu ngarobih seueur industri di 2021 sareng nyayogikeun jalan pikeun prestasi anyar.
Blockchain mangrupikeun alat pikeun nyimpen data dina cara anu sesah atanapi teu mungkin diédit, hack, atanapi swindle. Éta mangrupikeun buku digital transaksi anu diduplikasi sareng sumebar ka sakumna jaringan sistem komputer blockchain.
Éta mangrupikeun téknologi pangkalan data anu ngagentos anu ngawasa ampir sadaya mata uang kripto. Blockchain ngajadikeun eta incredibly hésé hack atawa curang sistem ku nyebarkeun salinan idéntik tina database sakuliah sakabéh jaringan.
Bari Bitcoin kiwari pamakéan pang menonjol pikeun blockchain, téhnologi nu bisa ngawula rupa pisan lega aplikasi.
Cryptocurrencies na blockchains geus beuki populér di taun panganyarna, sarta trend ieu diperkirakeun nuluykeun.
Urang bakal nyieun blockchain basajan kalawan JavaScript dina tutorial ieu. Éta bakal masihan anjeun pamahaman dasar kumaha blockchain jalan.
Hayu urang sebut wae MelodyCoin tur meunangkeun katuhu dina aksi!
Nyiptakeun Blok
Pikeun ngawitan, urang bakal nyieun file JavaScript anyar nu urang bakal nempatkeun sakabéh kode urang.
Hayu urang sebut wae main.js tur mimitian ku pedaran kumaha blockchain sarta blok kudu kasampak.
Jieun kelas Blok sareng masihan hiji fungsi Objék () {[kode asli]} pikeun dimimitian ku.
Anjeun kedah masihan tanggal, sareng hash blok sateuacana nalika ngadamel blok énggal:
Ieu definisi pikeun tiap sipat:
- Timestamp nunjukkeun iraha blok éta dijieun. Anjeun tiasa nganggo format naon waé anu anjeun pilih (dina hal ieu, cap waktu UNIX).
- Sagala bentuk data anu anjeun hoyong sambungkeun ka blok ieu tiasa dilebetkeun kana parameter data. Upami anjeun hoyong ngadamel cryptocurrency, anjeun tiasa nyimpen data transaksi sapertos pangirim / panampi sareng jumlah artos anu dipindahkeun ka dieu.
- The previousHash mangrupikeun senar anu nahan hash blok sateuacana. Ieu anu bakal ngahasilkeun ranté blok, anu bakal kritis dina nyadiakeun integritas blockchain urang engké.
Nyiptakeun Hashes
Unggal blok numbu ka blok saméméhna (sahingga sipat saméméhnaHash). Hartina, unggal blok merlukeun hash. Hash téh sarupa jeung sidik. Éta béda pikeun tiap blok.
Hash blok bisa diitung ku cara ngalirkeun sakabéh eusina ngaliwatan fungsi hash.
Janten, hayu urang mimitian ku ngalaksanakeun fungsi anu ngitung hash tina blok ayeuna.
Janten, dina kelas Blok, urang ngartikeun fungsi kalkulatorHash:
Tapi, hash SHA256 henteu dirojong ku JavaScript sareng kedah dicandak ti perpustakaan éksternal.
Crypto-js mangrupikeun pakét anu saé anu kalebet palaksanaan aman tina sababaraha algoritma hash.
Teras urang tiasa ngimpor kana kode main.js urang.
Ayeuna urang ngagaduhan fungsi kalkulatorHash (), hayu urang dianggo dina fungsi Blok urang:
Saatos ngajéntrékeun naon Blok Sigana mah, urang bisa nangtukeun naon a Blockchain kedah kasampak kawas. Ku kituna hayu urang nyieun kelas anyar.
Dina skenario ieu, blockchain mangrupakeun obyék basajan pisan nu boga ranté sipat. Ieu mangrupa Asép Sunandar Sunarya nahan sakabéh blok dina ranté nu.
Sateuacan urang tiasa nambihan blok, urang kedah nyiptakeun heula anu katelah "blok genesis". Ieu blok kahiji dina ranté nu, tur éta unik dina eta teu bisa nunjuk ka blok saméméhna (éta kahiji!).
Janten, pikeun ngawangun blok genesis, kuring bakal nambihan fungsi ka kelas kami anu namina createGenesisBlock (). Deui dina fungsi Objék () { [kode asli] } kelas Blockchain urang.
Urang ayeuna tiasa ngalebetkeun blok genesis iraha waé urang ngawangun conto Blockchain énggal:
Métode Blockchain
Ayeuna, hayu urang tambahkeun metode ka kelas Blockchain urang anu bakal ngamungkinkeun urang pikeun ngalakukeun hal-hal sapertos nambihan blok énggal sareng nyandak blok énggal.
Fungsi getLatestBlock mangrupikeun anu paling dasar. Éta ngan ukur mulangkeun anggota ahir tina ranté ranté:
Téhnik addBlock sakedik langkung aub.
Sateuacan urang tiasa nambihan blok énggal kana ranté urang, urang kedah nyetél heula kolom Hash sateuacana blok éta.
Éta kedah disetél kana hash tina blok anu paling anyar ditambahkeun kana ranté urang. Urang ogé kedah ngitung hash tina blok énggal:
tés
Hayu urang tingali kumaha MelodyCoin kami parantos kaluar.
Jieun conto blockchain pikeun ngalengkepan ieu. Hayu urang tambahkeun sababaraha blok deui:
Kami parantos ngadamel dua blok énggal di dinya. Hayu urang tingali kumaha blockchain urang ayeuna.
MelodyCoin bakal diserat sareng diformat ku opat rohangan:
Pariksa Integritas Blockchain
Blockchains anu hebat sabab sakali blok geus ditambahkeun, éta moal bisa dirobah tanpa invalidating sésa ranté nu.
Nanging, teu aya padika pikeun kuring pikeun pariksa integritas blockchain kami kalayan palaksanaan ieu.
Hayu urang ngenalkeun fungsi isChainValid kana blockchain urang. Lamun ranté sah, éta bakal balik leres; Upami teu kitu, éta bakal balik palsu:
Nguji Integritas
Urang ayeuna tiasa nguji integritas blockchain urang. Upami urang ngaéksekusi ayeuna, éta bakal mastikeun yén ranté urang asli.
Hayu urang ayeuna coba tamper kalawan blockchain urang. Hayu urang ngarobah blok 2 jeung nimpa eusina (anggap urang mindahkeun 100 koin tinimbang opat).
Nalika urang ngaéksekusi ieu, urang tiasa ningali yén parangkat lunak ngakuan usaha urang pikeun ngarobih ranté éta.
Najan kitu, anjeun tiasa percanten yen aya metoda sejen keur kuring meddle kalawan ieu. Kuring ngarobih eusi dina blok tapi henteu ngitung deui hash. Janten anjeun tiasa nyobian janten pinter sareng ngitung deui hash tina blok anu sami.
Éta sadayana aya dina pangaturan blockchain leutik kami! Éta ngamungkinkeun urang pikeun nambihan blok énggal sareng ngadeteksi gangguan data dina ranté éta.
Aya dua masalah sareng blockchain leutik urang anu kedah urang atasi:
- Komputer modern gancang pisan sareng tiasa nambihan rébuan blok kana ranté kami dina sababaraha detik. Kami écés henteu hoyong saha waé anu nga-spam blockchain kami.
- blockchain kami masih rentan ka tampering. Anjeun tiasa ngamutahirkeun eusi hiji blok lajeng saukur ngitung ulang hashes (jeung hashes saméméhna) pikeun sakabéh blok handap. Malah lamun mess kalawan eta, anjeun bakal mungkas nepi ka ranté sah.
Pikeun ngajawab masalah ieu, blockchains ngagunakeun téhnik katelah "bukti gawé". Anjeun kedah nunjukkeun yén anjeun ngagunakeun sumber daya komputasi anu ageung pikeun nyiptakeun blok nganggo pendekatan ieu. Ieu disebut oge pertambangan.
Proof-of-work merlukeun hash blok dimimitian ku jumlah nol anu khusus. Tapi kumaha anjeun tiasa terang naha hash anjeun cocog sareng aturan ieu?
Eusi blok nangtukeun hash na. Janten urang sok kéngingkeun hash anu sami, upami urang henteu ngarobih eusina.
Unggal blok kudu boga nilai nonce ditambahkeun kana eta salaku solusi. Ieu dasarna sababaraha data acak anu urang tiasa ngapdet dugi ka hash blok kami dimimitian ku nol anu cukup. Kusabab anjeun teu tiasa ngarobih kaluaran fungsi hash, anjeun kedah nguji seueur kombinasi anu béda sareng ngaharepkeun anu pangsaéna.
Ngenalkeun Pertambangan ka The Blockchain
Hayu urang mimitian ku kaasup nonce di kelas Blok urang. Nonce mangrupikeun nilai tunggal dina blok urang anu tiasa urang modifikasi pikeun mangaruhan hash blok.
Kami henteu tiasa ngarobih stempel waktos atanapi data.
Salajengna, hayu urang nulis mineBlock () fungsi anu bakal ngalakukeun pertambangan sabenerna blok a. Pungsi ieu bakal dikirim kasusah diperlukeun salaku parameter sarta bakal neruskeun ngaéksekusi nepi ka hash tina blok urang dimimitian ku cukup nol.
Kuring ngan ukur ngadamel loop dasar anu bakal dijalankeun dugi ka hash kami dimimitian ku nol anu cekap. Urang make kasusah pikeun nangtukeun sabaraha enol diperlukeun. Kalayan kasusah 5, hash urang kedah dimimitian ku 5 nol.
Nalika Hash kami henteu ngandung cukup nol, kami naékkeun nonce hiji-hiji sareng ngitung deui hash. Sareng upami urang mendakan hash anu cocog sareng kasusah, urang log in kana konsol.
Aya hiji deui anu urang kedah laksanakeun. Kami henteu leres-leres nyandak variabel nonce dina metode ngitungHash kami, janten ieu:
Kelas Blockchain
Hayu urang nguji pendekatan anyar ieu dina kelas blockchain urang sareng tingali kumaha jalanna.
Pikeun ngawitan, kuring bakal nangtukeun kasusah tina blockchain urang dina fungsi Objék (). Urang nangtukeun dieu saprak urang bisa make eta wae engké.
Fungsi addBlock teras kedah dirobih supados nambang blok sateuacan nambihan kana ranté kami.
Paké The Blockchain
Ayeuna, hayu urang nempatkeun blockchain anyar kami pikeun dianggo sareng algoritma proof-of-work. Di dieu, tambahkeun sababaraha pernyataan console.log.
Nalika urang ngaéksekusi kode ieu, urang tiasa ningali yén prosés pertambangan henteu langkung gancang.
Butuh sababaraha waktos pikeun algoritma ngahasilkeun blok sareng hashes anu dimimitian ku tilu nol (sakumaha dikonpigurasi ku kasusah).
Janten éta tungtung pangaturan blockchain dasar urang.
Urang tiasa ngatur kumaha gancang blok anyar ditambahkeun kana blockchain kami berkat mékanisme proof-of-work.
Éta mangrupikeun fitur kaamanan anu paling penting dina blockchain. Sareng ayeuna anjeun ngartos kumaha jalanna, teraskeun nyiptakeun anjeun nyalira!
Leave a Reply