为了账号安全,请及时绑定邮箱和手机立即绑定

用GO语言构建自己的区块链

Ashton2018 全栈工程师
难度初级
时长 1小时16分
学习人数
综合评分9.47
26人评价 查看评价
9.5 内容实用
9.3 简洁易懂
9.6 逻辑清晰
  • package BlockChain
    
    import (
       "crypto/sha256"
       "encoding/hex"
       "time"
    )
    
    //构建区块链结构体——区块
    type Block struct {
       Index int64   //区块编号
       Timestamp int64  //区块时间戳秒为单位,区块创建的时间
       PrevBlockHash string  //上一个区块哈希值
       Hash string  //当前区块的哈希值
       Data string  //区块所包含的数据
    }
    
    //计算区块的哈希值
    func calculateHash(b Block) string{
       //用区块的这几个部分作为hash内容
       //string(b.Index)   将int64转化为string
       blockData := string(b.Index) + string(b.Timestamp) + b.PrevBlockHash + b.Data
       //计算hash值并存入字节数组
       hashInBytes := sha256.Sum256([] byte(blockData))
    
        return hex.EncodeToString(hashInBytes[:])
    
    }
    
    //生成区块
    func GenerateNewBlock(preBlock Block, data string) Block{
       //定义一个新的区块
       newBlock := Block{}
       //新区块的编号等于父区块的编号+1
       newBlock.Index = preBlock.Index + 1
       //新区块的哈希值等于上一个区块本身的hash值
       newBlock.PrevBlockHash = preBlock.Hash
       //新区块的时间戳等于当前时间
       newBlock.Timestamp = time.Now().Unix()
       //新区块的Hash是更新新内容计算得来
       newBlock.Hash = calculateHash(newBlock)
       return newBlock
    }
    
    //生成创世区块:是第一个区块,区块编号为0,区块的哈希值是一个空值,
    //区块的时间戳和当前Hash值可以为它传递一个虚拟的父区块生成
    // 在系统启动之前就已经生成好了
    func GenerateGenesisBlock() Block{
       preBlock := Block{}
       preBlock.Index = -1
       preBlock.Hash = ""
       return GenerateNewBlock(preBlock,"First Block")
    }


    查看全部
    2 采集 收起 来源:创建Block

    2018-08-07

  • 数据层:底层数据的链式结构、加密技术、时间戳技术、构建全球金融系统的基础

    网络层:自动组网功能(自我管理)、数据传播机制、数据验证机制

    激励层:经济激励的发行机制和激励机制-公有链:促进良性循环发展(原生货币支持有激励层)

    合约层:脚本、算法和智能合约-达到约束条件,自动签约;不满足,自动解约

    比特币:有一定脚本编辑能力

    以太坊:强化编程语言协议

    软件应用层:区块链各种应用场景和案例

    合约层

    共识层:封装网络节点各类·共识机制算法(核心技术)、公众量证明机制PNW、传印证明机制US、股份授权证明机制(DPOS)、使用拜占庭容错(PDFT)


    查看全部
    1 采集 收起 来源:区块架构模型

    2019-08-19

  • 区块链的分类:

    • 公有链 比特币 以太坊 EOS

    • 私有链  开发节点 测试节点

    • 联盟链   Fabric R3联盟  EEA 阳光链

    区块链是一种特殊的分布式数据库

    • 没有中心,无管理员

    • 全民记账

    • 只能增查,不能改删

    区块链的特点

    • 不可篡改

    • 可追溯

    • 去中心化

    查看全部
    1 采集 收起 来源:什么是区块链

    2018-10-24

  • 区块链的发展:

    • 2008年中本聪比特币白皮书

    • 2009年比特币创世区块产生

    • 2010年 10000比特币 1披萨

    • 2013年-2014 以太坊 区块链2.0时代

    • 2015 R3成立

    • 2018 EOS与其他 区块链3.0时代

    区块链的现状:

    • 全球关注

    • 跑步进入

    • 野蛮生长

    如何转型区块链技术

    • 区块链底层

    • 智能合约

    • 掌握区块链的技术原理

    助你踏入区块链技术世界

    • 理解什么是区块链

    • 掌握区块链基本架构

    • 构建区块链基本模型


    查看全部
    1 采集 收起 来源:课程介绍

    2018-10-24

  • 创建Blockchain

    https://img1.sycdn.imooc.com/65470b6a0001be5a07620407.jpg

    查看全部
    0 采集 收起 来源:创建Blockchain

    2023-11-05

  • 创建Block创建Block

    查看全部
    0 采集 收起 来源:创建Block

    2023-11-05

  • 实践部分简介:构建自己的区块链

    查看全部
  • 链式结构小结

    查看全部
    0 采集 收起 来源:链式结构小结

    2023-11-05

  • hash函数介绍hash函数介绍

    查看全部
    0 采集 收起 来源:hash函数介绍

    2023-11-05

  • 区块链的链式结构

    查看全部
  • 区块架构模型

    查看全部
    0 采集 收起 来源:区块架构模型

    2023-11-05

  • 什么是区块链

    查看全部
    0 采集 收起 来源:什么是区块链

    2023-11-05

  • 课程介绍课程介绍

    查看全部
    0 采集 收起 来源:课程介绍

    2023-11-05

  • http://img1.sycdn.imooc.com//638f4d930001773912670691.jpg链式结构

    查看全部
  • http://img1.sycdn.imooc.com//638f4c4b00011a8710330717.jpg架构层

    查看全部
    0 采集 收起 来源:区块架构模型

    2022-12-06

首页上一页123456下一页尾页

举报

0/150
提交
取消
课程须知
1、对区块链有基本的认知。 2、有基本的开发基础,最好有基本的Go语言语法知识。
老师告诉你能学到什么?
1、区块链的发展与现状 2、技术人员的机会 3、什么是区块链 4、区块链的架构模型 5、区块链的链式结构 6、如何用 Go 实现一个简单的区块链模型

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!