區塊鏈初始化與實現POW工作量證明

2021-09-03 10:52:10 字數 2716 閱讀 1215

package blc

import (

"time"

"strconv"

"bytes"

"crypto/sha256"

)//定義區塊

type block struct 

//定義區塊生成hash的方法

func (block *block) sethash() , byte{})

//4.生成hash

hash := sha256.sum256(blockbytes)

block.hash = hash[:]

}//1. 建立新的區塊

func newblock(data string, height int64, preblockhash byte) *block 

//設定hash

block.sethash()

return block

}//2.生成創世區塊

func creategenesisblock(data string) *block )

}

package blc

type blockchain struct 

func (blc *blockchain)addblockchain(data string,height int64,prehash byte)

//1.建立帶有創世區塊的區塊鏈

func createblockchainwithgenesisblock() *blockchain }

}

package blc

import (

"bytes"

"encoding/binary"

"log"

)//將int64轉換為位元組陣列

func inttohex(num int64) byte 

return buff.bytes()

}

package main

import (

"publicchain/blc"

"fmt"

)func main()

package blc

import (

"math/big"

"bytes"

"crypto/sha256"

"fmt"

"time"

)type proofofwork struct 

//資料拼接,返回位元組陣列

func (pow *proofofwork) preparedata(nonce int) byte ,

byte{},

)return data

}//256位hash裡面至少要有16個零0000 0000 0000 0000

const targetbit = 16

func (proofofwork *proofofwork) run(num int64) (byte, int64) 

nonce ++

}return hash[:], int64(nonce)

}//建立新的工作量證明物件

func newproofofwork(block *block) *proofofwork 

}

package blc

import (

"time"

)//定義區塊

type block struct 

//1. 建立新的區塊

func newblock(data string, height int64, preblockhash byte) *block 

//呼叫工作量證明的方法,並且返回有效的hash和nonce值

//建立pow物件

pow := newproofofwork(block)

//挖礦驗證

hash, nonce := pow.run(height)

block.hash = hash[:]

block.nonce = nonce

return block

}//2.生成創世區塊

func creategenesisblock(data string) *block )

}

package main

import (

"publicchain/part2-工作量證明/blc"

"fmt"

)func main()

//判斷挖礦得到的區塊是否有效

func (proofofwork *proofofwork) isvalid() bool 

return false

}

//通過pow挖出新的區塊block

block := blc.newblock("send $500 to tom", blockchain.blocks[len(blockchain.blocks)-1].height+1, blockchain.blocks[len(blockchain.blocks)-1].hash)

//手動將該區塊新增至區塊鏈中

//建立乙個工作量證明物件

proofofwork := blc.newproofofwork(block)

//判斷該區塊是否合法有效

fmt.println(proofofwork.isvalid())

區塊鏈初始化與實現POW工作量證明

package blc import time strconv bytes crypto sha256 定義區塊 type block struct 定義區塊生成hash的方法 func block block sethash byte 4.生成hash hash sha256.sum256 blo...

PoW 工作量證明 go實現

proof of work 簡稱 pow,即為工作量證明 通過計算乙個數值,使得拼揍上交易資料後內容的值滿足規定的上限,在節點成功 找到滿足的 hash 值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播 打包區塊,會立刻對其進行驗證 網路中只有最快解密的區塊,才會新增的賬本中,其他的節點進行...

區塊鏈(中心化 工作量證明)

中心化數需要乙個類似銀行的中心機構來驗證交易的。去中心化本質上是讓所有的借點都能驗證交易的真偽,用非對稱加密技術來解決中心化問題,工作量證明機制是位元幣不可篡改的技術 1 工作量證明機制 是一種對在差不多時間內發生的事物的先後順序達成共識的一種演算法。監測工作的整個過程通常是效率非常低的,而通過對工...