-
链式结构小结
更改区块1的数据,只有修改所有链条上的数据才能保证一致。
在区块1上可以分叉新的链条,这种方式也需要全网区块达成共识。
查看全部 -
认识hash函数
确定性:对同一个输入数据,无论用哈希函数重复计算多少次,每次都能得到相同的结果。
单向性:可以很轻松的对已知数据进行哈希计算,得到哈希值,通过哈希值反推相应的已知数据非常难。
隐秘性:在已知哈希值的情况下,没有可行的办法算出哈希函数的输入值。
抗篡改:对一个数据块,哪怕只改动一个bit位,哈希值改动非常大。
抗碰撞:两个不同的数据块,hash值相同的可能性非常小。
MD系列常用MD5,但其抗碰撞性被公认较差,不推荐使用。
SHA0,SHA1已被证实不安全,推荐使用SHA256,SHA3。
查看全部 -
区块链链式结构
查看全部 -
区块链的架构模型
查看全部 -
认识一下什么是区块链
价值传递从转让方到了受让方
价值传递双方借助第三方中介进行传递,由于担心第三方系统会发生故障导致数据丢失,因此引入区块链。
通过区块链协议进行自管理。
查看全部 -
go语言构建区块链
查看全部 -
要看一下,钱包是啥玩意查看全部
-
done查看全部
-
学习区块链查看全部
-
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") }
查看全部 -
修改其中一个区块,这个区块后面的所有区块都有跟着修改
查看全部 -
链式结构哈希的计算
查看全部 -
哈希函数:是一种算法,把任意长度的二进制数据映射为固定长度的二进制数据。
哈希函数的特点:具有确定性,单向性,隐秘性,抗篡改,抗碰撞
哈希函数的实现:MD系列,SHA系列,推荐SHA256,SHA3
查看全部 -
区块链链式结构:
一个区块由区块头和区块体组成;
区块体中存储了相关的交易数据;
区块头中最重要的元素是父区块hash,每一个区块含有一个父区块的hash,相当于有了一个指向父区块的指针,通过hash指针把一个一个的区块连接起来,就构成了区块链特殊的链式结构。
在区块链中的第一个节点称为创世区块,创世区块只有数据值,没有父区块和hash值。
查看全部 -
区块链的架构模型
数据层:封装了底层数据区块的链子结构,以及相关的非对称的公钥私钥加密技术和时间戳技术;是整个区块链最底层的数据结构。
网络层:包括P2P组网机制,数据传播机制和数据验证机制。
共识层:封装了网络节点的各类共识机制算法,是区块链的核心技术,它决定是到底是谁来进行记账,而记账方式将会影响整个系统的安全性和可靠性。
激励层:将帧元素集中到区块链的技术体系中来,包括发行机制和分配机制,主要应用在公有链中,并不是所有的区块链都有激励层。
合约层:用于封装各类脚本、算法和智能合约,是区块链可编程特性的基础,可以简单理解为一份自定义的电子合同。
应用层:封装了区块链的各种应用场景和案例。
合约层、激励层、共识层、网络层、数据层构成了区块链的核心系统
共识层、网络层、数据层是构建区块链系统的必要元素
激励层通常位于公有链,激励遵守规则的节点,惩罚不遵守规则的节点
合约层用于封装各类脚本、算法、合约。
查看全部
举报