如何使用JavaScript和Express創(chuàng)建區(qū)塊鏈
什么是區(qū)塊鏈?
當(dāng)結(jié)合生成有關(guān)某些交易或一系列步驟的信息時,區(qū)塊鏈?zhǔn)且唤M在一起的區(qū)塊鏈。例如,每當(dāng)您進(jìn)行任何銀行存款或取款交易時,您都將根據(jù)您上一次存儲在銀行中的金額執(zhí)行一項(xiàng)操作,當(dāng)任何人在線上進(jìn)行交易時,它都需要與上一個區(qū)塊有某種關(guān)系。
我們將如何理解這種情況并基于此創(chuàng)建應(yīng)用程序,這是該塊將如何連接的演示。
與流程圖類似,我們將創(chuàng)建一個應(yīng)用程序來演示相同的內(nèi)容。
讓我們建立一個塊
首先,創(chuàng)建一個區(qū)塊鏈。首先我們需要擁有塊,因此讓我們創(chuàng)建一個名為Block的類。
在第一行,我們正在導(dǎo)入一個包來為我們處理加密。下面的命令將為我們安裝軟件包。
npm i crypto-js
在構(gòu)造對象時,這里有一些參數(shù),即索引,時間戳,事務(wù)和foreignHash。
index 是為塊提供唯一的標(biāo)識符,并通過索引為我們需要的任何數(shù)據(jù)結(jié)構(gòu)提取塊。
timestamp 就是給特定的塊一個創(chuàng)建時間,因?yàn)椴荒芨略搲K,所以我們不關(guān)心那個的updateAt時間戳。
transaction是需要阻止的實(shí)際數(shù)據(jù)。例如,員工總數(shù)或總數(shù)或發(fā)件人詳細(xì)信息等
precedingHash 如圖所示,該字段將負(fù)責(zé)上一個塊和當(dāng)前塊之間的連接。
hash是將與一起工作的領(lǐng)域,precedingHash以確保我們處在正確的連接軌道上。
最后,有一個函數(shù)computeHash可以使用SHA256算法為我們計(jì)算哈希值。該算法將獲取所有數(shù)據(jù),以確保我們生成的哈希碼的唯一性。
現(xiàn)在,我們創(chuàng)建了塊,讓我們轉(zhuǎn)到鏈上。
創(chuàng)建一條鏈
同樣,我們將創(chuàng)建一個鏈類,該鏈類將使用更多方法在其中調(diào)用該塊。這是整個類的代碼。
首先,我們創(chuàng)建了一個空的構(gòu)造函數(shù)來為我們初始化一些字段,包括id [給標(biāo)識符],name [給塊一個很酷的名字],blockchain [正在處理所有塊的實(shí)際字段],以及最后一個困難[獲得工作證明]。
在進(jìn)入代碼的另一部分之前,我們將研究成因。對于任何區(qū)塊鏈項(xiàng)目,我們都需要一個創(chuàng)始來用第一個塊初始化鏈,因?yàn)榈谝粋€塊的行為類似于構(gòu)建塊,并包含該塊其余部分的第一個哈希,以用作先前的哈希。在這里,我們從上一類創(chuàng)建了一個塊對象,并將其初始值作為參考。
然后,我們創(chuàng)建了一個create()包含少量參數(shù)的name 是通過API命名,id 是從API提供ID并genesis賦予初始成因一個值。
那么我們在obtainLatestBlock()給我們鏈中輸入的最后一個塊,這將幫助我們獲取最后一個塊的哈希,然后將其分配給鏈中的新元素。
最重要的方法是addNewBlock()在我們的鏈中添加一個新的塊,該方法將塊項(xiàng)目作為參數(shù)。首先,我們將獲取區(qū)塊鏈的最新哈希并將其添加到中precedingHash,然后創(chuàng)建一個新哈希并將其分配給哈希,我們可以跳過此步驟,因?yàn)槲覀円呀?jīng)將其添加到了Block對象的構(gòu)造函數(shù)中。但是一旦這種方法運(yùn)行,它將繼續(xù)將物品推入我們的區(qū)塊鏈生態(tài)系統(tǒng)。
最后checkChainValidity(),我們將不使用它,但有助于驗(yàn)證該塊。
添加控制器和路由
我們將添加3條路線,創(chuàng)建一個區(qū)塊鏈,
POST - /api/blockchain
得到區(qū)塊鏈,
GET - /api/blockchain
將新的孩子添加到鏈中
POST - /api/blockchain/append
讓我們?yōu)樗鼊?chuàng)建一個控制器文件,
首先,我們將導(dǎo)入我們創(chuàng)建的兩個類Block和BlockChain。然后,我們創(chuàng)建了一個名為FlippingCoin的控制器,您可以根據(jù)需要命名它。但是,關(guān)鍵是我們需要關(guān)注3種方法:
createNewChain
appendNewChild
getChain
現(xiàn)在,為了簡單起見,我將跳過數(shù)據(jù)存儲部分。除了這3個之外,我們還必須驗(yàn)證該方法以驗(yàn)證鏈?zhǔn)欠窬哂幸獎?chuàng)建的正確數(shù)據(jù)格式。
我們需要調(diào)用相應(yīng)的方法來使事情工作。
如下所示添加路線
在這里,我們確保將方法映射到正確的路線。
讓我們測試一下
讓我們轉(zhuǎn)到POST路線-/ api / blockchain,
這將根據(jù)我們在創(chuàng)世交易中傳遞的任何數(shù)據(jù)為我們創(chuàng)建一個新的區(qū)塊鏈。
讓我們轉(zhuǎn)到POST路線-/ api / blockchain / append,
在將交易數(shù)據(jù)傳遞到區(qū)塊鏈時,它將添加到鏈中。
最后,我們轉(zhuǎn)到路由GET-/ api / blockchain /檢查數(shù)據(jù)是否已更新。
以上就是如何使用JavaScript和Express創(chuàng)建區(qū)塊鏈的詳細(xì)內(nèi)容,更多關(guān)于創(chuàng)建區(qū)塊鏈的資料請關(guān)注腳本之家其它相關(guān)文章!
你可能感興趣的文章
-
以太坊還能漲嗎?從技術(shù)和基本面幫你看懂真相
上一周以太坊實(shí)現(xiàn)26.4%的周漲幅, 一舉突破2800的壓力位, 沖刺至4000大關(guān)腳下,以太坊還能漲嗎?下文將從以太坊的基本面以及技術(shù)面價格走勢來分析過去一周以及今年以來的以太…
2025-07-28 -
區(qū)塊鏈究竟是什么?原理、應(yīng)用、投資風(fēng)險以及未來趨勢解析
區(qū)塊鏈究竟是什么?區(qū)塊鏈簡單說,就是一種建立在線上的去中心化的數(shù)位帳本技術(shù),能確保交易數(shù)據(jù)安全透明,且不可篡改,這種技術(shù)不僅應(yīng)用于比特幣,還被廣泛應(yīng)用于供應(yīng)鏈管…
2025-07-28 -
加密貨幣中鏈上與鏈下交易主要區(qū)別是什么?
加密領(lǐng)域的鏈上交易是指直接在區(qū)塊鏈上執(zhí)行的轉(zhuǎn)賬,鏈下交易最初繞過區(qū)塊鏈驗(yàn)證,最終確認(rèn)后再記錄在鏈上,從而提高速度并降低成本,鏈下流程的用戶允許受信任的第三方處理交…
2025-07-28 -
ChatGPT怎么用?ChatGPT AI 在加密交易中的5 個實(shí)際應(yīng)用案例
加密貨幣交易面臨獨(dú)特的挑戰(zhàn):海量的數(shù)據(jù)流、迅速的市場變動和情緒決策陷阱,雖然技術(shù)分析和基本面研究依然至關(guān)重要,但現(xiàn)在許多交易者已經(jīng)開始利用像ChatGPT 這樣的AI 工具…
2025-07-28 -
什么是Linea?如何運(yùn)作?ConsenSys 推出的以太坊Layer-2 網(wǎng)絡(luò)?
什么是Linea?如何運(yùn)作?作為第二大公有區(qū)塊鏈,以太坊's 網(wǎng)絡(luò)仍然面臨著高昂的Gas 費(fèi)用、慢速交易速度和有限的吞吐量,尤其是在需求高峰時,進(jìn)入Linea,一個由以太坊Layer-…
2025-07-28 -
什么是云算力?如何運(yùn)作?挖礦加密貨幣的簡單指南
在不斷發(fā)展的加密貨幣世界中,挖礦長期以來被視為推動區(qū)塊鏈網(wǎng)絡(luò)的最基本過程之一,然而,隨著挖礦變得越來越具競爭性和資源密集型,許多人開始轉(zhuǎn)向一種更為便捷的替代方案…
2025-07-28 -
TRON是什么?最快、最便宜的USDT網(wǎng)絡(luò)的構(gòu)建介紹
2025年7月,波場TRON掀起波瀾,其原生代幣TRX一度超越卡爾達(dá)諾的ADA,成為市值第九大的加密貨幣,這一里程碑不僅體現(xiàn)在波場TRON市值飆升至298億美元,還體現(xiàn)在該公司在納斯…
2025-07-28 -
什么是去中心化應(yīng)用 (dApp)?dApp的優(yōu)勢、缺點(diǎn)、用途是什么介紹
去中心化應(yīng)用程序dApps是在點(diǎn)對點(diǎn)P2P或區(qū)塊鏈網(wǎng)絡(luò)上運(yùn)行的軟件,而不是在單個服務(wù)器或集中式計(jì)算機(jī)上運(yùn)行,在區(qū)塊鏈技術(shù)和智能合約的支持下,dApp提供了增強(qiáng)的安全性、透明…
2025-07-28 -
Monad是什么?Monad主網(wǎng)發(fā)布日期和空投是什么時候?
Monad是一個高性能 Layer1區(qū)塊鏈,旨在徹底革新以太坊兼容性,Monad的主網(wǎng)發(fā)布日期為2025年9月30日,代幣指標(biāo)如下:MON的總發(fā)行量和最大發(fā)行量均為1000億,盡管 Monad Labs尚…
2025-07-27 -
正向合約和反向合約是什么?兩者有什么區(qū)別?各有什么優(yōu)勢?
在永續(xù)合約市場中,合約一般分為正向合約和反向合約,正向合約在加密市場中也稱為USDT本位合約、穩(wěn)定幣合約,它以USDT為定價單位,而反向合約也稱為幣本位合約,反向合約則是…
2025-07-26