区块链基础[待补充]


概念

  • 区块链是一种去中心化分布式数据库。

  • P2P
  • 区块链与比特币
  • 区块链1.0 & 区块链2.0

记账原理

Hash(序号0、记账时间、交易记录) = 787635ACD

Hash(上一个Hash值、序号1、记账时间、交易记录) = 456635BCD

  • 10分钟
  • 哈希函数:简化,隐匿,验证
  • 便于验证
  • 不可更改

所有权

  • 地址与私钥

地址: 2A39CBa2390FDe
私钥: sdgHsdniNIhdsgaKIhkgnakgaihNKHIskdgal

Hash(Hash(fun(sdgHsdniNIhdsgaKIhkgnakgaihNKHIskdgal))) -> 2A39CBa2390FDe

  • 对交易信息进行Hash运算得到摘要信息
  • 用私钥对交易摘要进行签名
  • 广播
  • 验证

verify(“3cdferdadgadg”, “2A39CBa2390FDe”) -> “8aDB23CDEA6”

挖矿(比特币为例)

  • 比特币发行过程
  • “挖矿”其实就是记账的过程

工作量证明

  • 一段时间内(10分钟左右,具体时间会与密码学难题难度相互影响)只有一人可以记账成功
  • 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
  • 其他节点复制记账结果

提高记账难度

Hash(上一个Hash值,交易记录集) = 456635BCD

Hash(上一个Hash值,交易记录集,随机数) = 0000aFD635BCD

当前区块

验证

共识 - 最长链的选择

  • %51攻击 - DDCTF
  • 双重花费

拜占庭将军问题

  • 区块链(账本)达成共识的方法(取得一致性)。
  • 工作量证明 = 将军的签名
  • 提高做叛徒(发布虚假区块)的成本

共识算法的核心就是解决拜占庭将军问题(分布式网络一致性问题)。

拓展

  • 用Python创建自己的区块链
  • 以太坊智能合约
  • Solidity编程语言

区块链攻击方法

  • %51攻击
  • 双重花费攻击
  • 自私采矿攻击:挖到新块先不广播
  • 算力伪造攻击:利用算法漏洞虚报算力,得到超额奖励分配
  • 扣块攻击:私吞新区块
  • 日蚀攻击
  • ……

从DDCTF中看区块链安全之51%攻击

HCTF2018智能合约两则

文章目录
  1. 1. 概念
  2. 2. 记账原理
    1. 2.1. 所有权
  3. 3. 挖矿(比特币为例)
    1. 3.1. 工作量证明
    2. 3.2. 验证
  4. 4. 共识 - 最长链的选择
    1. 4.1. 拜占庭将军问题
  5. 5. 拓展
    1. 5.1. 区块链攻击方法
|