-
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") }
查看全部 -
数据层:底层数据的链式结构、加密技术、时间戳技术、构建全球金融系统的基础
网络层:自动组网功能(自我管理)、数据传播机制、数据验证机制
激励层:经济激励的发行机制和激励机制-公有链:促进良性循环发展(原生货币支持有激励层)
合约层:脚本、算法和智能合约-达到约束条件,自动签约;不满足,自动解约
比特币:有一定脚本编辑能力
以太坊:强化编程语言协议
软件应用层:区块链各种应用场景和案例
合约层
共识层:封装网络节点各类·共识机制算法(核心技术)、公众量证明机制PNW、传印证明机制US、股份授权证明机制(DPOS)、使用拜占庭容错(PDFT)
查看全部 -
区块链的分类:
公有链 比特币 以太坊 EOS
私有链 开发节点 测试节点
联盟链 Fabric R3联盟 EEA 阳光链
区块链是一种特殊的分布式数据库
没有中心,无管理员
全民记账
只能增查,不能改删
区块链的特点
不可篡改
可追溯
去中心化
查看全部 -
区块链的发展:
2008年中本聪比特币白皮书
2009年比特币创世区块产生
2010年 10000比特币 1披萨
2013年-2014 以太坊 区块链2.0时代
2015 R3成立
2018 EOS与其他 区块链3.0时代
区块链的现状:
全球关注
跑步进入
野蛮生长
如何转型区块链技术
区块链底层
智能合约
掌握区块链的技术原理
助你踏入区块链技术世界
理解什么是区块链
掌握区块链基本架构
构建区块链基本模型
查看全部 -
创建Blockchain
查看全部 -
创建Block创建Block
查看全部 -
实践部分简介:构建自己的区块链
查看全部 -
链式结构小结
查看全部 -
hash函数介绍hash函数介绍
查看全部 -
区块链的链式结构
查看全部 -
区块架构模型
查看全部 -
什么是区块链
查看全部 -
课程介绍课程介绍
查看全部 -
链式结构
查看全部 -
架构层
查看全部
举报