久久精品A一国产成人免费网站-久久精品爱国产免费久久-久久精品操-久久精品成人免费看-国产一级毛片在线-国产一级免费片

 
您現在的位置:首頁 ? 知識庫 ? 軟件開發 軟件開發
年輕人的第一個區塊鏈
發布日期:2018-04-08

準備工作:

  1. 安裝go開發環境

  2. 用go搭建web服務

  3. go語言基礎

安裝go開發環境

到https://golang.org/dl/這個地址下載對應的安裝包,mac ,windows,linux都有(需要科學上網)。以mac為例,下載成功后雙擊安裝下一步即可,很簡單。安裝成功后運行go version查看版本(如果沒有的話,就重啟一下終端)

用go搭建web服務

在這里咱們用的是Gorilla/mux包。步驟:

  1. 創建NewRouter

  2. 設置端口號

  3. 設置http的參數字典

  4. 調用ListenAndServe方法,啟動服務

go語言基礎

  1. 導包:多個包用小括號括起來

  1. import (

"sync"

"time"

)

  1. 使用點調用方法:

  1. time.Now()

  1. 聲明變量:

  1. var coin int 用空格隔開,類型寫到后面,變量名寫中間,最后是個var

  2. coin := 10 也可以省略var,用:=來賦值,但是必須保證coin沒有聲明過,否則會報錯

  3. coin1,coin2 := 10,20 。 多變量聲明是這樣的

  1. 條件控制:

  1. if a<b {

return 10

}else{

return 20

}

  1. 循環控制:

  1. for a := 0; a < 10; a++ {

fmt.Printf("a: %d ", a)

}

  1. 函數定義,傳參:

  1. /* 函數返回兩個數的最大值 */

  2. func max(num1, num2 int) int {

}

  1. num1, num2 int表示兩個整形參數,是可選的,也可以不填,

  2. 最后的int是返回值的類型

  3. 調用函數通過這樣方式:n := max(a, b)

  • 結構體定義,賦值,調用:

  1. 定義:type Article struct { title string id int}

  2. 賦值:var a1 Article

a1.title = "寫代碼"

  1. 調用:fmt.Printf( "title : %s ", a1.title)

了解這些,今天的代碼就能看懂了,當然go語言還有很多要學習的知識點,可以到這里來http://www.runoob.com/go/go-tutorial.html學習

整理思路:

根據之前了解的區塊鏈原理和共識算法,我們整理一下需要實現哪些方法:

  1. 一個區塊需要包含哪些信息:

  1. Index :這個區塊在整個鏈中的索引

  2. Timestamp : 區塊生成時的時間戳

  3. Hash : 區塊通過 SHA256 算法生成的哈希值

  4. PrevHash : 前一個區塊的 SHA256 哈希值

  5. content : 需要記錄的內容

  1. 計算哈希值的函數

  2. 生成新區塊的函數

  3. 根據不可篡改性,我們還需要一個驗證區塊是否被篡改的函數

  4. 啟動web服務的函數

創建區塊結構體:

type Block struct {

Index int

Timestamp string

Content string

Hash string

PrevHash string

}

計算哈希值:(把區塊結構體中的信息都拼在一起,然后Hash算出來)

func calculateHash(block Block) string {

record := strconv.Itoa(block.Index) + block.Timestamp + strconv.Itoa(block.Content) + block.PrevHash

h := sha256.New()

h.Write([]byte(record))

hashed := h.Sum(nil)

return hex.EncodeToString(hashed)

}

生成新區塊:(上一個區塊的索引加1,上一個區塊的Hash賦值給當前區塊的PrevHash,當前區塊的Hash由calculateHash函數生成)

func generateBlock(oldBlock Block, Content string) Block {

var newBlock Block

t := time.Now()

newBlock.Index = oldBlock.Index + 1

newBlock.Timestamp = t.String()

newBlock.Content = Content

newBlock.PrevHash = oldBlock.Hash

newBlock.Hash = calculateHash(newBlock)

return newBlock

}

驗證區塊:(根據索引和Hash值判斷,老索引加1應該等于新索引,新的PrevHash應該等于老的Hash,最后還要重新計算一個新區塊的Hash,看是否和傳過來的一樣)

func isBlockValid(newBlock, oldBlock Block) bool {

if oldBlock.Index+1 != newBlock.Index {

return false

}

if oldBlock.Hash != newBlock.PrevHash {

return false

}

if calculateHash(newBlock) != newBlock.Hash {

return false

}

return true

}

啟動web服務:

//設置http需要的參數,并開啟服務

func run() error {

mux := makeMuxRouter()

httpAddr := os.Getenv("ADDR")

log.Println("Listening on ", os.Getenv("ADDR"))

s := &http.Server{

Addr: ":" + httpAddr,

Handler: mux,

ReadTimeout: 10 * time.Second,

WriteTimeout: 10 * time.Second,

MaxHeaderBytes: 1 << 20,

}

if err := s.ListenAndServe(); err != nil {

return err

}

return nil

}

//生成NewRouter對象

func makeMuxRouter() http.Handler {

muxRouter := mux.NewRouter()

muxRouter.HandleFunc("/", handleGetBlockchain).Methods("GET")

muxRouter.HandleFunc("/", handleWriteBlock).Methods("POST")

return muxRouter

}

好的,需要的函數都已經列好,下面把它們組裝起來即可,然后放到一個main.go的文件中,啟動終端,進入到main.go文件夾并輸入go run main.go命令。

打開http://localhost:8080/地址,會看到一個創世區塊,如果想添加一個新區塊則需要使用postman 傳一個content參數過去,如圖:

然后再刷新瀏覽器,會返回新的區塊信息,如圖:

好的,先到這里,下一次我們把共識算法加進去。

總結:

今天實現了生成新區塊、哈希計算、區塊校驗這些基本功能。代碼在:https://github.com/sunqichao/createblockchain

  • 1.公司登記注冊于2003年1月27日,清遠市桑達電子網絡媒體有限公司
    2.公司2006年起成為清遠市政府定點協議供貨商,電子采購供貨商
    3.公司2007年被清遠市相關政府部門評為安防行業狀元
    4.公司2007年起成為長城電腦清遠如意服務站(SP368)
    5.公司2007年承建清遠市橫河路口電子警察工程,開創清遠電子警察先河。
  • 6.公司2007年起成為IBM合作伙伴、公司2010年底成為金蝶軟件清遠金牌代理(伙伴編號:30030013)
    7.公司組團隊參加南方都市報組織的創富評選,獲廣東80強。公司申請多項軟件著作權、專利權
    8.2016年起公司成為粵東西北地區為數不多的雙軟企業,確立“讓軟件驅動世界,讓智能改變生活!"企業理想
    9.2016-01-29更名為廣東互動電子網絡媒體有限公司
    10.2021-01-13更名為廣東互動電子有限公司
  • 投資合作咨詢熱線電話:0763-3391888 3323588
  • 做一個負責任的百年企業! 天行健,君子以自強不息;地勢坤,君子以厚德載物;
    為用戶創造價值! 讓軟件驅動世界; 讓智能改變生活; 超越顧客期望,幫助顧客成功;
    對客戶負責,對員工負責,對企業命運負責!幫助支持公司的客戶成功;幫助忠誠于公司的員工成功!
  • 聯系電話:0763-3391888 3323588 3318977
    服務熱線:18023314222 QQ:529623964
  • 工作QQ:2501204690 商務QQ: 602045550
    投資及業務投訴QQ: 529623964
    微信:小米哥 微信號:qysed3391888
    騰訊微博:桑達網絡-基石與起點
  • E-MAIL:222#QYSED.CN ok3391888#163.com (請用@替換#)
在線客服
  • 系統集成咨詢
    點擊這里給我發消息
  • 網站\微信\軟件咨詢
    點擊這里給我發消息
  • 售后服務
    點擊這里給我發消息
  • 投資合作
    點擊這里給我發消息
亚洲日韩中文字幕一区| 欧美日韩精品一区二区在线播放| 亚洲妇女无套内射精| 国产三级多多影院| 午夜成人无码免费看网站| 国产精华最好的产品人V中文| 少妇性饥渴无码A区免费| 高潮白浆潮喷正在播放| 四虎AV永久在线精品免费观看| 俄罗斯另类ZOZO| 深夜成人毛片天堂| 国产成人AV在线影院| 特级毛片爽WWW免费版| 国产99久久精品一区二区| 熟妇人妻中文字幕无码老熟妇| 国产SUV精品一区二区33| 无码国产伦一区二区三区视频| 国产精产国品一二三产区区别| 无码A级毛片免费视频内谢| 国产乱子伦农村叉叉叉| 亚洲AV无码成人精品区蜜桃 | 亚洲一区二区三区AV无码| 精品人妻无码区二区三区密桃| 亚洲人成网77777色在线播放| 久久精品99久久香蕉国产色戒| 野花视频大全高清免费| MM1313午夜视频在线观看| 欧美日韩视频在线第一区| 暴躁老阿姨CSGO| 少妇寂寞难耐被黑人中出| 国产成A人片在线观看视频| 无码视频一区二区三区| 国产亚洲精选美女久久久久| 亚洲国产成人久久精品99 | JAPANESE春药高潮| 日韩欧美中文字幕看片你懂的| 国产AV精品白浆一区二| 无码天堂亚洲国产AV久久| 好爽…又高潮了免费毛片| 亚洲中文久久精品无码WW16| 毛片无遮挡高清免费| JAPANESE嫩21VIDE| 上面一个奶下面一个顶是什么字| 国产精品亚洲第一区焦香味| 亚洲国产综合无码一区二区BT下 | 非洲BBOOMBBOOM的含义| 小SAO货水好多真紧H视频| 精品无码国产污污污免费 | 无码一区二区三区AⅤ免费麻豆| 国产亚洲精品第一综合另类灬| 亚洲精品国产AV成拍色拍婷婷| 久久婷婷综合缴情亚洲狠狠| 99久热RE在线精品视频| 色国产精品一区在线观看| 国产片AV国语在线观麻豆| 亚洲精品自偷自拍无码| 美女露0裸体无档动态视频| 把腿张开让老子臊烂你的视频| 婷婷丁香五月深爱憿情网| 狠狠色噜噜狠狠狠狠AV不卡| 在线V观看免费国岛国片| 秋霞电影高清完整版| 国产激情一区二区三区小说| 亚洲国产精品无码专区| 妺妺坐在我腿上勃起弄了视频| 成人综合色在线一区二区| 亚洲AV成人永久无在线观看| 久久久亚洲一区少妇无码| らだ天堂√在线WWW| 无码少妇xxxx| 久久久噜噜噜久噜久久| Y1111111少妇影院| 欧美老熟妇又粗又大| 粉嫩AV一区二区精品爆乳| 亚洲AV午夜精品一区二区三区| 旅游途中夫妻换着玩的说说搞笑| 草草浮力地址线路①屁屁影院| 日本精品无码一区二区三区久久久 | 补课老师让我爽了一夜| 小鲜肉洗澡时自慰网站XNXX| 久久久久99精品成人片试看 | 国产精品无码无卡无需播放器 | 欧美人妻少妇精品久久黑人| 国产成人无码A区在线观看视频免| 亚洲精品成人区在线观看 | 国产成人AV无码专区亚洲AV| 亚洲欧美日韩久久精品| 欧洲美熟女乱又伦AV曰曰| 国产精品毛片久久久久久久| 一下子就弄进去岳的身体| 日韩一区二区三区精品视频| 娇喘潮喷抽搐高潮在线观看视频 | 国产成人久久精品流白浆| 亚洲一区二区三区成人网站| 日本XXXX裸体XXXX在线| 经典精品毛片免费观看| YSL千人千色T9T9T9最新| 亚洲AV无码专区国产乱码京东传| 欧美V国产V亚洲V日韩九九| 国产乱人伦AV在线无码| 50岁老熟女一級毛片| 无人免费观看视频在线观看| 蜜桃AV一区二区三区| 国产成人无码A区在线观看视频A | 牲欲强的熟妇农村老妇女视频| 久久久久成人片免费观看 | 久久久久99精品成人片欧美| 成人午夜性A级毛片免费| 亚洲午夜久久久久久噜噜噜 | 精品国产免费人成网站 | 亚洲午夜性春猛交77777| 日韩精品免费无码专区| 国产拍揄自揄精品视频| 9L国产精品久久久久尤物| 亚洲 欧洲 小说 自拍| 欧美亚洲国产SUV| 精品第一国产综合精品AⅤ | 亚洲午夜久久久久久久久电影网| 上边一面亲下边一面膜的作用| 看全色黄大色黄女片爽在线看 | 久久精品午夜亚洲AV无码少妇| 风流老太婆大BBWBBWHD| 中文字幕AⅤ天堂在线| 无码专区无码专区视频网址| 欧美老熟妇乱大交XXXXX| 娇妻在厨房被朋友玩得呻吟| 东京热无码人妻系列综合网站| 在教室伦流澡到高潮H强圩电影| 无码一区在线视频| 热99RE6久精品国产首页青柠| 久久97超碰人人澡人人爱| 国产69精品久久久久777| 69无人区乱码一二三四区别| 亚洲第一无码AV无码专区| 少妇AV一区二区三区无码久久 | 公交车上荫蒂添的好舒服的句子| 18禁黄网站禁片免费观看国产| 少妇无码AV无码一区| 免费免APP看大片视频播放器| 国产亚洲色欲色一色WWW| 成人欧美一区二区三区在线| 真人作爱90分钟免费看视频| 亚洲AV成人无码网站大全| 日本少妇情视频WWW| 久久综合亚洲鲁鲁九月天| 国产无遮挡又爽又黄大胸免费| 插插插精品亚洲一区| 中文字幕精品亚洲人成在线 | 99RE6在线视频精品免费下载| 亚洲国产成人A精品不卡在线| 少妇久久久久久久久久| 欧美大胆老熟妇乱子伦视频| 久久99久国产精品66| 国产清纯美女爆白浆视频| 丁香花高清在线观看完整版| 77色午夜成人影院综合网| 亚洲熟妇色XXXXX无码| 亚洲 欧美 综合 在线 精品 | 亚洲在AV极品无码高清| 亚洲AV成人无码久久精品| 色综合色综合色综合色欲| 欧美亚洲国产精品久久蜜芽直播 | 国产精品 精品国内自产拍| 把腿张开老子臊烂你多P| 91久久精品www人人做人人爽| 亚洲一区二区三区在线网址| 性XXⅩ欧美老妇肥老太| 少妇人妻真实偷人精品视频| 欧洲无码一区二区三区在线观看| 久久亚洲色WWW成人| 精品无码久久久久久国产| 国精品99久9在线 | 免费| 国产成人综合色视频精品| 纯肉无遮挡H肉动漫在线观看国产| GOGO少妇无码肉肉视频| 最新永久无码AV网址亚洲| 亚洲伊人久久大香线蕉综合图片| 亚洲AV永久无码精品网站色欲| 无码欧精品亚洲日韩一区| 熟妇人妻av无码一区二区三区| 日本高清WWW色视频总站| 欧美一级内射黑人内射| 欧美粗大强交18P直喷水| 男女猛烈XX00免费视频试看| 两口子交换真实刺激高潮| 久久精品国产亚洲AV瑜伽| 精品人妻少妇一区| 激情欧美成人久久综合| 村长压在小雪身上耕耘视频| YW尤物无码点击进入| JAPANESEHD熟女熟妇伦| 日本少妇自慰免费完整版| 欧美黑人aAAAAAAa| 母亲とが话しています播放| 蜜桃AV不卡无码三区| 美女高潮20分钟视频在线观看| 麻花豆传媒剧国产MV的特点| 亂倫近親相姦中文字幕| 麻豆人人妻人人妻人人片AV| 美美哒中文日本免费6|