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

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

Ashton2018 全栈工程师
难度初级
时长 1小时16分
学习人数
综合评分9.47
26人评价 查看评价
9.5 内容实用
9.3 简洁易懂
9.6 逻辑清晰
  • 链式结构小结

    https://img1.sycdn.imooc.com//5b8005cc000111ff07160327.jpg

    更改区块1的数据,只有修改所有链条上的数据才能保证一致。

    https://img1.sycdn.imooc.com//5b800695000177ad07180371.jpg

    在区块1上可以分叉新的链条,这种方式也需要全网区块达成共识。


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

    2018-08-24

  • 认识hash函数

    https://img1.sycdn.imooc.com//5b7fffb60001ccd506350265.jpg

    https://img1.sycdn.imooc.com//5b80008e0001acf306780301.jpg

    确定性:对同一个输入数据,无论用哈希函数重复计算多少次,每次都能得到相同的结果。

    单向性:可以很轻松的对已知数据进行哈希计算,得到哈希值,通过哈希值反推相应的已知数据非常难。

    隐秘性:在已知哈希值的情况下,没有可行的办法算出哈希函数的输入值。

    https://img1.sycdn.imooc.com//5b80010a0001285806180253.jpg

    抗篡改:对一个数据块,哪怕只改动一个bit位,哈希值改动非常大。

    抗碰撞:两个不同的数据块,hash值相同的可能性非常小。

    https://img1.sycdn.imooc.com//5b8001ad0001d95906030268.jpg

    MD系列常用MD5,但其抗碰撞性被公认较差,不推荐使用。

    SHA0,SHA1已被证实不安全,推荐使用SHA256,SHA3。


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

    2018-08-24

  • 区块链链式结构

    https://img1.sycdn.imooc.com//5b7fff3900010c5205980306.jpg

    https://img1.sycdn.imooc.com//5b7fff0e0001c01706990314.jpg

    查看全部
  • 区块链的架构模型

     https://img1.sycdn.imooc.com//5b7ffd7e0001e0a304150378.jpg

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

    2018-08-24

  • 认识一下什么是区块链

    https://img1.sycdn.imooc.com//5b7ff9ce00014f8806110346.jpg

    https://img1.sycdn.imooc.com//5b7ffa1e0001f10606560372.jpg

    价值传递从转让方到了受让方

    https://img1.sycdn.imooc.com//5b7ffa6a0001061006970366.jpg

    价值传递双方借助第三方中介进行传递,由于担心第三方系统会发生故障导致数据丢失,因此引入区块链。

    https://img1.sycdn.imooc.com//5b7ffb1b0001c4f606280364.jpg

    https://img1.sycdn.imooc.com//5b7ffb9900015d9906780352.jpg

    通过区块链协议进行自管理。

    https://img1.sycdn.imooc.com//5b7ffbd30001d67906500346.jpg


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

    2018-08-24

  • go语言构建区块链

    https://img1.sycdn.imooc.com//5b7ff7720001fb6706420329.jpg

    https://img1.sycdn.imooc.com//5b7ff83900016d3f06370333.jpg

    https://img1.sycdn.imooc.com//5b7ff88c0001643606940317.jpg

    https://img1.sycdn.imooc.com//5b7ff8d00001976106740307.jpg

    https://img1.sycdn.imooc.com//5b7ff90700019a8706780340.jpg

    https://img1.sycdn.imooc.com//5b7ff9200001fe5806630346.jpg

    https://img1.sycdn.imooc.com//5b7ff9350001e0e406180350.jpg

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

    2018-08-24

  • 要看一下,钱包是啥玩意
    查看全部
    0 采集 收起 来源:课程介绍

    2018-08-19

  • done
    查看全部
    0 采集 收起 来源:课程总结

    2018-08-14

  • 学习区块链
    查看全部
    0 采集 收起 来源:课程介绍

    2018-08-11

  • 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

  • 修改其中一个区块,这个区块后面的所有区块都有跟着修改

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

    2018-08-07

  • 链式结构哈希的计算

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

    2018-08-07

  • 哈希函数:是一种算法,把任意长度的二进制数据映射为固定长度的二进制数据。

    哈希函数的特点:具有确定性,单向性,隐秘性,抗篡改,抗碰撞

    哈希函数的实现:MD系列,SHA系列,推荐SHA256,SHA3


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

    2018-08-07

  • 区块链链式结构:

    一个区块由区块头和区块体组成;

    区块体中存储了相关的交易数据;

    区块头中最重要的元素是父区块hash,每一个区块含有一个父区块的hash,相当于有了一个指向父区块的指针,通过hash指针把一个一个的区块连接起来,就构成了区块链特殊的链式结构。

    在区块链中的第一个节点称为创世区块,创世区块只有数据值,没有父区块和hash值。

    查看全部
  • 区块链的架构模型

    1. 数据层:封装了底层数据区块的链子结构,以及相关的非对称的公钥私钥加密技术和时间戳技术;是整个区块链最底层的数据结构。

    2. 网络层:包括P2P组网机制,数据传播机制和数据验证机制。

    3. 共识层:封装了网络节点的各类共识机制算法,是区块链的核心技术,它决定是到底是谁来进行记账,而记账方式将会影响整个系统的安全性和可靠性。

    4. 激励层:将帧元素集中到区块链的技术体系中来,包括发行机制和分配机制,主要应用在公有链中,并不是所有的区块链都有激励层。

    5. 合约层:用于封装各类脚本、算法和智能合约,是区块链可编程特性的基础,可以简单理解为一份自定义的电子合同。

    6. 应用层:封装了区块链的各种应用场景和案例。

      合约层、激励层、共识层、网络层、数据层构成了区块链的核心系统

      共识层、网络层、数据层是构建区块链系统的必要元素

      激励层通常位于公有链,激励遵守规则的节点,惩罚不遵守规则的节点

      合约层用于封装各类脚本、算法、合约。

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

    2018-08-07

举报

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

微信扫码,参与3人拼团

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

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