zoukankan      html  css  js  c++  java
  • 基于Go语言构建区块链:part4

    Golang语言和区块链理论学习完毕后,快速入门方法无疑是项目实战。本文将参考https://jeiwan.cc/tags/blockchain/教程,学习如何基于Go语言构建区块链。

    1、引言

    本文为原文第4部分学习笔记,该部分主要是实现blockchain的交易信息。交易是比特币的核心,而blockchain的唯一目的就是安全可靠地存储交易信息,确保创建交易后,没人可以修改该交易信息。 实现过程和说明可参见原文,本文主要描述实现后的命令行交互过程。

    2、Blockchain编译及调用

    代码实现后,要想在命令行调用,最好先编译该项目。进入项目路径D:gosrcBlockchain,输入以下命令:

    D:gosrcBlockchain>go build  

     可看到项目路径内生成Blockchain.exe的编译文件。

    接下来可按照 cli.go 中定义的命令信息,输入相关命令。

    使用Ivan创建一个blockchain: 

    D:gosrcBlockchain4>Blockchain4 createblockchain -address Ivan
    00073ce6c344d91351e9d49bba55472654591b5b4ebcb70c5c70d94fddb39c0c
    
    Done!
    

      

    查看Ivan 账户余额:

    D:gosrcBlockchain4>Blockchain4 getbalance -address Ivan
    Balance of 'Ivan': 10
    

      

      

     再尝试进行一些交易:

    D:gosrcBlockchain4>Blockchain4 send -from Ivan -to Pedro -amount 6
    000f22d22301684ab62eef839cd9b0a5f6fae1acde730c9e9fb113fd088fe1d9
    
    Success!
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Ivan
    Balance of 'Ivan': 4
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Pedro
    Balance of 'Pedro': 6
    
    D:gosrcBlockchain4>Blockchain4 send -from Pedro -to Helen -amount 2
    000df67188c14e1d101e0abc2a3f4bbacc74ef913d2521106533347ffeb093ca
    
    Success!
    
    D:gosrcBlockchain4>Blockchain4 send -from Ivan -to Helen -amount 2
    000c33a5e42c8693f6934a4dd3e4d933b32cfeeccd9435d93f83a12c36608ea8
    
    Success!
    
    D:gosrcBlockchain4>Blockchain4 send -from Helen -to Rachel -amount 3
    000e499dc07fce475cde7cbac1c0e9178aaf1b00bf2c8a622c05b2accdd41ad1
    
    Success!
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Ivan
    Balance of 'Ivan': 2
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Pedro
    Balance of 'Pedro': 4
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Helen
    Balance of 'Helen': 1
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Rachel
    Balance of 'Rachel': 3
    

      

    尝试一种异常情况:PedroIvan5元,但是Pedro只有4元,消费失败。交易失败前后,PedroIvan的余额未发生变化。 

    D:gosrcBlockchain4>Blockchain4 send -from Pedro -to Ivan -amount 5
    2018/03/14 20:09:13 ERROR: Not enough funds
    panic: ERROR: Not enough funds
    
    goroutine 1 [running]:
    log.Panic(0xc042065d18, 0x1, 0x1)
            C:/Go/src/log/log.go:326 +0xc7
    main.NewUTXOTransaction(0xc04200e100, 0x5, 0xc04200e120, 0x4, 0x5, 0xc042002e20, 0xc042065e70)
            D:/go/src/Blockchain4/transaction.go:85 +0x789
    main.(*CLI).send(0xc042065f70, 0xc04200e100, 0x5, 0xc04200e120, 0x4, 0x5)
            D:/go/src/Blockchain4/cli.go:75 +0xc2
    main.(*CLI).Run(0xc042065f70)
            D:/go/src/Blockchain4/cli.go:147 +0x4ae
    main.main()
            D:/go/src/Blockchain4/main.go:5 +0x32
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Pedro
    Balance of 'Pedro': 4
    
    D:gosrcBlockchain4>Blockchain4 getbalance -address Ivan
    Balance of 'Ivan': 2
    

      

     

     

     
  • 相关阅读:
    CSS3实现翻转菜单效果
    C语言根据日期取其位于一年中的第几天
    实习第一周小记------生活不易
    [置顶] iOS开发规范
    理解 Neutorn LBaaS
    FWaaS 实践: 允许 ssh
    实践 Neutron FWaaS
    理解 Neutron FWaaS
    应用新安全组
    Neutron 默认安全组规则
  • 原文地址:https://www.cnblogs.com/yxdz-hit/p/8563343.html
Copyright © 2011-2022 走看看