區塊鏈V3版本實現之六

2022-06-29 14:45:09 字數 2041 閱讀 4862

命令列demo**:

1

package main23

import (4"

fmt"5"

os"6)

78func main()

16 }

顯示效果:

使用命令列分析:

所有的支配動作交給命令列來做

主函式只需要呼叫命令列結構即可

根據輸入的不同命令,命令列做相應動作

a)  addblock

b) printchain

cli:command line的縮寫

type cli struct

1617

//給cli提供乙個方法,進行命令解析,從而執行排程

18 func (cli *cli) run()

2627

switch cmds[1

] 33

34 fmt.printf("

新增區塊命令被呼叫, 資料:%s\n

", cmds[2

])35

36 data := cmds[2]37

cli.addblock(data)

3839

case

"printchain":

40 fmt.printf("

列印區塊鏈命令被呼叫\n")

41cli.printchain()

4243

default

:44 fmt.printf("

無效的命令,請檢查\n")

45fmt.printf(usage)46}

47//

新增區塊的時候: bc.addblock(data), data 通過os.args拿回來

48//

列印區塊鏈時候:遍歷區塊鏈,不需要外部輸入資料

49 }

部分**(commands.go

1

package main23

import (4"

fmt"5"

time"6

"bytes"7

)89//

實現具體的命令

1011 func (cli *cli) addblock(data string

) 15

16 func (cli *cli) printchain() ) 43}

44 }

部分**(main.go檔案的改寫):

package main

func main()

cli.run()

}

執行指令碼(方便執行):

1 #!/bin/bash

2rm blockchain

3 rm *.db

45 go build -o blockchain *.go

6 ./blockchain

顯示效果:

v3版本專案目錄結構:

本人的系統是windows10,不能用命令列執行,如果有大佬知道如何執行,請指點一下,謝謝!

區塊鏈V3版本實現之四

部分 blockchain.go檔案中改寫addblock函式 1 v3版本 2 func bc blockchain addblock data string 12 block newblock data,bc.tail 13 b.put block.hash,block.serialize 將區...

區塊鏈V3版本實現思路

當前版本問題 區塊在記憶體中,每次執行完程式就釋放,無法重用 建立區塊不靈活,在main中寫死,無法隨意新增區塊 v3版本思路 bolt資料庫介紹 輕量級 開源 go語言實現 key value進行讀取 map byte byte blockchain結構重寫 newblockchain函式重寫 由...

區塊鏈V3版本實現之二

部分 gob.go檔案中建立乙個gob的demo實現序列化與反序列化的功能 1 package main23 import 4 encoding gob 5 bytes 6 log 7 fmt 8 910 1.gob是go語言內建的編碼包 11 2.它可以對任意資料型別進行編碼和解碼 12 3.編碼...