国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript實現小型區塊鏈功能

2024-05-06 15:41:05
字體:
來源:轉載
供稿:網友
區塊鏈概念
狹義:區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,并以密碼方式保證的不可篡改和不可偽造的分布式賬本。
一、挖礦(產生新區塊)

首先,區塊鏈是由每一個區塊聯系而形成的,在產生新區塊之前必須先有一個最初始的區塊,這個區塊也叫創世區塊。通過這個創世區塊,不停地通過變化隨機數(nonce)來計算出符合條件的區塊。以下是創世區塊基本信息:

const initBlock = { index: 0, data: 'hey,this is a block chain', previousHash: '0', timestamp: '1551806536961', nonce: 80490, hash: '0000352fb27dd1141fa7265833190a53e5776b1111e275db0d9a77bf840081e6'};
    index:是指每個區塊的序號 data: 這里存放著區塊中所有的信息,例如轉賬,余額等數據 previousHash: 指的是上一個區塊的hash值,創世區塊沒有上一個,顯示0即可 timestamp:指的是創建這個區塊的時間 nonce:這個是隨機數,挖礦就是通過不停變換這個nonce來計算出符合條件的哈希。 hash: 本區塊的hash值,通過前面5個字段的信息進行hash運算得出的值。

接著,通過不停的hash運算計算出符合條件的哈希,即挖礦。挖礦也可以調節難度的大小,例如算出的哈希值必須前3位數必須為1或者末3位數必須為1等等,這個可以自行的去定義,只要最后留一個控制的開關,方便控制即可。可以在定義一個變量

哈希的計算:

.createHash('sha256') .update(index + data + previousHash + timestamp + nonce) .digest('hex')
_that.difficulty = 3 // 即前3位或者末3位數必須為1,數量越多難度越大

生成了符合條件的hash之后,則產生了新的區塊,但是還要對這個區塊進行校驗看看是否有效,因為可能這是一個被篡改的非法的區塊,也有可能和這個鏈沒有任何關系的區塊而僅僅只是符合上述哈希的規則而已。所以,需要進行一下校驗,,前后區塊的有效性。

isValidaBlock(newBlock,lastBlock) {  if (newBlock.index !== lastBlock.index+1) return false  if (newBlock.previousHash !== lastBlock.hash) return false  if (newBlock.timestamp <= lastBlock.timestamp) return false  if (newBlock.hash.slice(1 ,_that.difficulty) !== '1'.repeat(_that.difficulty)) return false  if (newBlock.hash !== this.computeHashForBlock(newBlock)) return false //確保隨機數正確  // 都滿足則返回true  return true }

除了上面的校驗之外,還需要使用上面這個函數對整一個chain進行一個每一個塊的校驗,以保證每一個塊的信息是正確的,是沒有被篡改過的是合法的。

二、構建P2P網絡

區塊鏈的網絡是去中心化的,即沒有中心服務器的網絡,客戶端不需要依賴中心服務器來獲取或者處理數據。區塊鏈網絡中,有這許許多多的節點,每個節點都是一個獨立的成員,他們既是客戶端也是服務器,節點與節點直接都是點對點進行連接(peer-to-peer),不需要通過某一個中心服務器進行中轉,所以,信息安全的角度來說,點對點的連接方式對信息私密性是非常可靠的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 长岭县| 苍山县| 东源县| 东城区| 巫山县| 榆社县| 安义县| 江达县| 佛坪县| 眉山市| 青河县| 比如县| 济源市| 陆河县| 台江县| 织金县| 莱芜市| 舞钢市| 五常市| 大冶市| 丹凤县| 房产| 榆林市| 铜川市| 九台市| 利辛县| 浪卡子县| 石景山区| 根河市| 女性| 长春市| 永宁县| 都江堰市| 亚东县| 治县。| 合水县| 龙江县| 确山县| 莱芜市| 宁安市| 义马市|