久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    區塊鏈學習(三)區塊鏈實例

     印度阿三17 2019-05-04

    1.計算哈希,創建 區塊

    package core
    
    import (
       "crypto/sha256"
       "encoding/hex"
       "time"
    )
    
    type Block struct {
       Index        int64  // 區塊編號
       Timestmp     int64  // 區塊時間戳
       PreBolckHash string // 上一個區塊的哈希值
       Hash         string // 當前區塊哈希值
       Data         string // 區塊數據
    }
    
    // 計算哈希
    func CalculateHash(b Block) string {
       // 數據不允許修改
       // 把 數據 包含在hash運算的數值里面, ,任何一個模塊數據的修改,都會導致區塊鏈, 鏈式數據結構的破壞
       blockData := string(b.Index)   string(b.Timestmp)   string(b.PreBolckHash)
       HashInBytes := sha256.Sum256([]byte(blockData))
       return hex.EncodeToString(HashInBytes[:])
    }
    
    // 生成新區塊
    func GenerateNewBlock(preBlock Block, data string) Block {
       newBlock := Block{}
       // 新區塊的index = 父區塊的index 1
       newBlock.Index = preBlock.Index   1
       // 哈希值 = 父區塊的哈希值
       newBlock.PreBolckHash = preBlock.Hash
       // 新區塊的時間戳,==當前時間
       newBlock.Timestmp = time.Now().Unix()
       newBlock.Data = data
       // 新區塊的哈希 是計算得來的
       newBlock.Hash = CalculateHash(newBlock)
       return newBlock
    }
    
    // 生成創始區塊
    func GenerateGenesisBlock() Block {
       preBlock := Block{}
       preBlock.Index = -1
       preBlock.Timestmp = time.Now().Unix()
       preBlock.Hash = CalculateHash(preBlock)
       preBlock.Data = "Genesis Block(創始區塊)"
       GenerateNewBlock(preBlock, "Genesis Block")
       return preBlock
    }
    

    ?

    鏈式數據

    package core
    
    import (
       "fmt"
       "log"
    )
    
    type Blockchain struct {
       // 數組
       Blocks []*Block
    }
    
    func NewBlockchain() *Blockchain {
       genesisBlock := GenerateGenesisBlock()
       blockchain := Blockchain{}
       blockchain.ApendBlock(&genesisBlock)
       return &blockchain
    }
    
    func (bc *Blockchain) SendData(data string) {
       proBlock := bc.Blocks[len(bc.Blocks)-1]
       newBlock := GenerateNewBlock(*proBlock, data)
       bc.ApendBlock(&newBlock)
    }
    
    func (bc *Blockchain) ApendBlock(newBlock *Block) {
       // 防止越界
       if len(bc.Blocks) == 0 {
          bc.Blocks = append(bc.Blocks, newBlock)
          return
       }
       if isValid(*newBlock, *bc.Blocks[len(bc.Blocks)-1]) {
          bc.Blocks = append(bc.Blocks, newBlock)
       } else {
          log.Fatal("invalid block")
       }
    }
    
    func (bc *Blockchain) Print() {
       // 下劃線表示賦值是忽略的
       for _, block := range bc.Blocks {
          fmt.Printf("Index: %d\n", block.Index)
          fmt.Printf("Prev.Hash: %s\n", block.PreBolckHash)
          fmt.Printf("Curr.Hash: %s\n", block.Hash)
          fmt.Printf("Data: %s\n", block.Data)
          fmt.Printf("Timestmp: %d\n", block.Timestmp)
          fmt.Println("")
       }
    }
    
    func isValid(newBlock Block, oldBlock Block) bool {
       if newBlock.Index-1 != oldBlock.Index {
          return false
       }
       if newBlock.PreBolckHash != oldBlock.Hash {
          return false
       }
       if CalculateHash(newBlock) != newBlock.Hash {
          return false
       }
       return true
    }
    

    ?

    啟動類

    package main
    
    import "./core"
    
    func main() {
       bc := core.NewBlockchain()
       bc.SendData("Send 1 BTC to jacky")
       bc.SendData("Send 1 EOS to jacky")
       bc.Print()
    }
    
    來源:http://www./content-4-180551.html

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 欧美福利电影A在线播放| 天天澡日日澡狠狠欧美老妇 | 亚洲一区二区精品极品| 欧美亚洲人成网站在线观看| 狠狠色噜噜狠狠狠7777奇米| 中文字幕人妻在线精品| 99久久久国产精品消防器材| 亚洲大尺度无码专区尤物| 久久综合亚洲鲁鲁九月天| 久久综合亚洲色一区二区三区| 国产精品成人影院在线观看| 特黄A又粗又大又黄又爽A片| 天天澡日日澡狠狠欧美老妇| 成人H视频在线观看| 婷婷色爱区综合五月激情韩国| 亚洲春色在线视频| 国产成人久久综合一区| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 国产AV无码专区亚洲AV毛片搜| 国产影片AV级毛片特别刺激| 亚洲AV无码不卡私人影院| 韩国三级在线 中文字幕 无码| 成人久久免费网站| 亚洲综合小说另类图片五月天| 日韩精品有码中文字幕| 久久99热只有频精品6狠狠 | 国产乱子伦农村叉叉叉| 成 人 在 线 免费观看| 香蕉伊蕉伊中文在线视频| 亚洲人亚洲人成电影网站色| 国产伦码精品一区二区| 人妻少妇久久中文字幕| 日本高清视频色欧WWW| 无码人妻aⅴ一区二区三区蜜桃| 精品亚洲欧美无人区乱码| 人妻精品动漫H无码中字| 国产日韩一区二区在线| 天天在线看无码AV片| 美女内射无套日韩免费播放| 午夜大片免费男女爽爽影院| 国产精品中文字幕av|