Blockchain

Picasun ECNU_Jinggg

区块链

肖臻

  • 不需要不存在证明,只需要存在性证明,不要求排序

北京大学Web3公开课

1、Web3 综述 24/03/26

  • Web1:只读、静态内容
  • Web2:可读写交互、数据存在中心化服务器、用户生成内容:社交媒体
  • Web3:可拥有
    • 区块链技术
    • 智能合约
    • 去中心化
    • 不可篡改
  • 密码学是区块链底层安全的保证
    • 公钥密码学
    • 哈希函数
  • 比特币
    • 去中心化电子记账系统
    • 工作量证明PoW共识机制
    • 不可篡改
  • 以太坊
    • 开源、去中心化、有智能合约的区块链
    • 去中心化的全球计算机
    • 智能合约
    • PoW共识机制
    • 22年转为权益证明PoS共识机制
  • 智能合约
    • 图灵完备、Solidity语言创建运行在EVM上的应用程序——智能合约
    • 去中心化
    • 代码即法律,无需第三方
    • 无需准入
    • 可组合
  • 加密钱包
    • Web3,使用加密钱包管理链上资产
    • 助记词/私钥:谁拥有,就拥有资产
    • 公钥:链上地址、用户名
  • DeFi(去中心化金融)
    • 建立在区块链、智能合约平台上的金融类产品工具
    • 去中心化交易所DEX
    • 链上借贷
    • 稳定币
  • NFT
    • 非同质化代币
    • 不能互换,独特数字代币
    • 门槛低
    • 链上艺术品/头像
    • 虚拟房产
    • 链上凭证
    • NFT交易所
  • DAO
    • 去中心化自治组织
    • 与公司制相对
    • 通过智能合约保持运转的组织
 	

2、密码学基础 24/03/28

  • 数字签名
    • 私钥签名,公钥验证
    • ECDSA(椭圆曲线数字签名算法)
  • 区块链中的密码学
    • 钱包地址
      • 每个钱包地址都是一个公私钥对
      • 私钥 产生 公钥
      • 公钥 产生 地址
      • 私钥是证明你拥有账户的唯一方式
        • 不要复制私钥/助记词
    • 交易
      • 每个交易就是一条message
    • 哈希算法
      • 除了暴力枚举以外没有其他挖矿方法
      • pow靠hash出块
      • 维护最长链(链式结构)
      • 前改后都改
      • 枚举哈希很难,所以很难对抗全网算力
    • Merkle Tree
      • 快速确认某个值是否在某个集合中的数据结构
      • 用于区块存储交易、发行白名单

3、以太坊和Layer2

  • Layer2(加速)
    • 交易批量打包压缩
    • 状态转移确认
    • 交易不用在以太坊Layer1上执行,在链下执行完上传就行
    • Rollup把状态更新提交到主链的智能合约
      • 智能合约的验证并不用执行交易
      • Optimistic Rollups
        • 欺诈性证明
        • 假设正确,有人发现不对可以发布证明,验证主链错误,恢复Rollups之前状态,惩罚、奖赏
        • 用挑战期来保护数据正确性(时间太长)
        • 激励验证
        • OPTIMISM
          • 单轮交互式欺诈式证明
        • ARBITRUM
          • L2上的多轮 L1上一轮
          • 不断拆分存在争议的部分
          • 切分出一个最小的不能拆分的单位,发送给L1,最后确定争议的胜者(智能合约的可组合性?)
          • 分成200份 优化 缩小范围
            • 并不减少复杂度
          • 多伦交互式证明,窗口争议期更长,
      • zk-Rollups(基于零知识证明的Rollup扩容方案)
        • 有效性证明(不需要挑战期)
          • 目前的zk-rollup通用计算能力较差
        • 提交的时候就带着证明
        • 更安全,当场验证
        • 依赖的证明很复杂
        • 目前无法和EVM完全兼容
        • 零知识证明
          • 证明者向验证者证明一个陈述是正确的,而无需透露除该陈述是正确的之外的其他信息
          • 证明者负责计算交易并聚合成零知识证明
          • 验证者证明其有效性
          • 数学基础:同态加密(公私钥签名验证)
      • zk-SNARK
        • 证明者向验证者一次性发送一个较细 无需交互
        • 验证速度快 存储空间小
        • 应用:
          • Zcash 用其来隐藏具体交易信息
          • Filecoin
      • zkSync 基于SNARKs
        • 链上存储 链下存储
        • EVM兼容,把智能合约转换操作码来实现Solidity兼容

4、智能合约

5、DEFI 去中心化金融

6、Web3应用

7、去中心化安全

MOOC

c1 什么是区块链和区块链思维

c2 比特币分布式账本初探

  • 在比特币中,公钥用于接收比特币,私钥用于生成其对应地址上支付此特币所必需的签名,以唯一确定这些比特币的所有权。具体到比特币地址的生成,其实是先产生私钥,私钥通过椭圆曲线算法这种不可逆的函数来产生公钥,公钥经过一系列不可逆的运算再来产生地址。

  • 私钥持有者,是比特币的拥有者

  • 钱包:用来装密钥的容器,不包含具体几个比特币

    • 钱包装了一系列密钥用于完成比特币交易
    • 钱包地址(银行账户)公开、私钥:银行卡密码
  • 持有比特币:拥有特定比特币的地址(银行账户)

  • 需要知道余额需要到区块链计算

  • 交易

    • 第一笔是矿工挖矿所得
    • 之后都有一个或者多个输入、一个或者多个输出
    • 输入:谁给A的币的地址
    • 数目:币数目
    • 输出:B的地址
    • 每一个交易输入,都和之前的某个交易输出关联
    • 本质:包含输入值和输出值的数据结构
      • 输出是对之前输入的引用
      • A给B转账的时候,加了公钥脚本(使用输出的必须是Bob本人)
      • 签名需要用私钥,私钥对应的公钥才能验证签名通过
        • B签名后,其他人可以用Bob提供的公钥验签
  • 某个地址,具有多个比特币,其实是钱包根据未花费的交易输出算出来的

  • 地址是公钥的hash 多方签名

  • 私钥生成公钥,公钥生成地址

    • 公钥加密的内容只能用私钥解密,利用公钥可以生成比特币地址
    • 私钥签名,公钥验签名
    • 公私钥生成以及签名算法都基于椭圆曲线算法
  • 避免假账

    • 私钥签名,公钥验证
    • 签名过的交易信息广播,广泛验签
    • 接受信息,生成区块,组装(默克尔树)
  • 哈希指针

  • 双花问题(利用UTXO解决)

    • 一笔钱被花了多次
    • 比特币以交易输出(TXO)的形式存在
    • 输入输出配平(12 = 2(给别人) + 10(给自己))
    • majority attack (实现双花)
  • 算力

    • 用来衡量哈希运算能力的指标(每秒能进行多少次hash运算)
    • 矿工通过算力解答加密难题,把转账信息放到区块中,完成这笔转账
    • 51%攻击,控制算力
  • 共识算法:规定了下一个新区块由哪个矿工生成

    • 工作量证明 pow 通过工作结果证明完成一定的工作量(不对称性)
      • 容易重算,不容易得到
    • 权益证明
    • 委托工作量证明
    • 实用拜占庭容错算法
  • 区块的链接

    • 元数据:难度、时间戳和nonce
    • 找到区块:hash or 区块高度(不能唯一表示)
  • 共识算法规定下一个新区块由哪个矿工生成

    • 区块包含交易记录,生成的矿工获得比特币奖励

c3 从分布式信息系统视角分析比特币

  • 分布式系统随意分布空间位置,没有控制整个系统的主机
    • 系统资源被所有计算机共享,可以用系统中其他资源
      • CPU 文件 打印机
    • 任意两台计算机可以通信交换信息
  • 分布式系统
    • 信息发布与传输:任意节点都可以发起,相邻交互,全网公开
    • 记账:根据共识机制完成工作量设定获得记账权,可以溯源,不可篡改
    • 存储:每个节点有完整本地数据存储,实时更新
      • 选择完整or部分存储
    • 一致性
  • 一致性
    • 原子提交协议,引入多个leader机器
    • leader机器故障?
    • 保证一定数量的机器能够运行,利用共识机制
  • Paxos
    • 解决分布式一致性问题
    • Proposer 提议者
      • 利用更大的ID抢占临时访问权 避免思索
    • Acceptor 批准者 完全对等独立
    • Learner 学习者 学习value
  • 拜占庭将军问题
    • 可能出现丢失or错误的不可靠信道,如何通过消息传递的方式达到一致性
    • 要求
      • 所有忠诚接受相同命令,恶意消息不被接受
      • 发送命令的将军忠诚,忠诚将军遵守
    • 选择正确的人(不同共识算法不同),加大造价成本
  • 拜占庭容错算法(BFT)
    • 类似于POW
    • PBFT(实用拜占庭容错算法)
      • 复杂度指数级降低到多项式级
      • 失效节点不超过1/3保证信息可靠
      • 通信次数换取可靠性

c4 智能合约和区块链操作系统

  • 以太坊:开源的有智能合约功能的公共区块链平台,以太币(ETH),以太虚拟机(EVM)

  • 智能合约:脚本代码(计算机程序定义 自动执行的承诺和协议)

  • 以太坊的优化:图灵完备、可编程的底层系统(区块链网络)

  • 共识:POW+POS 矿工和持币者利益平衡

  • 以太坊智能合约:代码(合约功能)和数据(合约状态的集合),存在于特定地址,依靠EVM以二进制形式在区块链运行

  • 智能合约

    • 数据库合约:数据存储,允许其他合约crud
    • 管理员合约:在数据库合约上运行,批量读写
    • 合约管理合约:管理其他合约
      • 跟踪所有合约/组建,处理通信,简化模块设计
    • 应用逻辑合约:包含应用程序的特定代码
    • 公用合约:执行特定任务,被其他合约无限制调用
      • 少依赖,少空间

  • 区块链虚拟机

    • 自动兼容所有硬件
    • 本质实现将硬件层or系统层进行抽象,隐藏底层实现细节,实现快速应用部署
    • 将高级语言程序转换成CPU相关指令
    • 语言 业务分离
    • 提供原始API为了编写智能合约的需要
    • ABI:其他应用要知道本合约提供的借口以及数据结构
    • 流程
      • 高级语言和API编写智能合约
      • 编译成byte codes 并同时生成ABI
      • 测试后就可以利用byte codes 进行交易
  • 以太坊虚拟机

    • Solidity 面向合约 类似JS 静态语言
      • 基于账户而不是UTXO
      • address类型 定位用户 定位合约 定位合约代码
      • 合约本身也是一个账户
      • 再去中心化网络运行
      • 强调 合约 函数 的调用方式
      • 异常机制,全部回撤,保证原子性
      • REMIX(IDE)
    • Solidity
      • 版本申明
      • 引用文件
      • 路经相关
      • 在实际编译器中的使用
      • 代码注释
      • 文档注释
    • 合约结构
      • 状态变量
      • 函数(可执行单元)
      • 函数的修饰符:声明时修改语义
      • 事件(日志提供的便利借口)
      • 结构体类型
      • 枚举类型
  • 以太坊的共识机制

    • POW
      • 前沿
      • 家园
      • 大都会
    • POS
      • 宁静
    • Casper
      • 基于保证金的经济激励共识协议
  • 挖矿

    • 生成钱包(地址 可获取)
    • 电脑(显卡 主板电源决定稳定程度)
    • 挖矿软件(xxx)
  • EOS

    • 加密货币令牌 区块链操作系统
    • 为去中心化公司打造智能合约平台
    • 实现分布式横纵向扩展
    • 目标
      - 成为支持工厂模式的去中心化操作系统
      - 每秒处理百万笔级别的交易

蚂蚁课程

区块链系统开发与应用(初级)

区块链核心概念

  • 区块链本质是去中心化的(账本)数据库

    • 中心化
      • 单点失效 系统无法使用
      • 隐私保护性差
      • 信息泄漏
      • 诚信问题
    • 去中心化
      • 避免单点失效
      • 公开透明
      • 不可篡改
      • 可追溯
  • 链块式结构:假象式区块链(时序的链块式结构)

    • 如今成为行业
    • 技术
      • 密码学(签名让交易不可抵赖 可信 )
        • 私钥才能签名
      • 数据结构
      • 分布式存储
      • P2P网络
      • 共识算法
      • 博弈论
  • 区块链分类与架构相关术语

    • 分类
      • 划分1(节点的加入、退出是否需要区块链系统的许可)
        • 许可链
          • 根据权限的主体是否集中
            • 联盟链(只允许一个节点介入网络的半开放式区块链)
            • 私有链(企业或组织部署,权限严格内部控制)
          • 如蚂蚁链
        • 非许可链(公有链)
          • 开放程度最高,任何人可以参与
          • 加密货币
          • 可以参与网络共识
    • 架构相关术语
      • 一个区块 一页账目 包含多笔交易
      • 利用链连起来,时序,时间戳
      • DAG(有向无环图)
        • 区块链的变种 也算区块链系统
      • P2P网络
        • 去中心化 每个主机都可以看成服务器和客户端
  • 区块链常用术语

    • 智能合约
      • 智能合约之于区块链
      • 相当于SQL之于数据库
    • 协议
      • 共同遵从的一组约定
    • 双花
      • 把一笔资金花出去2次或多次
      • 想要成功 一定要分叉(因为不可能在同一个区块、时序问题会避免同链)
      • 算力或资金足够强大
    • 共识算法
      • 各分布节点对事务或状态的验证、记录、修改等行为达成一致确认的算法
      • 伏笔 共识算法章节才有
    • 数字签名
      • 附加在数据单元上的数据or对数据进行密码变换
      • 数据单元的接受者可以确认来源和完整性,防止伪造抵赖
    • 国密算法(国产加密算法)
      • 加密算法
        • 非对称
          • RSA Elgamal ECC
        • 对称
          • AES DES
      • 国产加密算法 国家密码局认定
        • SM1对称
        • SM2非对称
        • SM3消息摘要算法
        • SM4无限局域网标准的分组数据方法
  • 区块链的匿名性和开放性

    • 技术特征
      • 匿名性 开放性 可追溯 不可篡改 共识 完整 自治 不可抵赖….
    • 匿名性
      • 只需要加密货币地址进行交易,不知道个人信息(如是谁 资产)
      • 违法行为的保护伞
      • 级别划分
        • 基础:知道是谁,就可以查交易
        • 高级:知道是谁,也查不到所有转账信息
        • 极致:只有私钥持有者才能看到对应地址交易行为
    • 开放性 (参与程度)
      • 账目、组织结构、生态
      • 公有链 联盟链 私有链
  • 区块链的可编程和可追溯

    • 进化
      • 可编程货币
      • 可编程金融(通过智能合约生产金融衍生产品)
      • 可编程社会(不仅仅是货币和金融衍生品)
    • 智能合约并不是一定要在区块链系统中运行
      • 区块链是最合适的环境
    • 可追溯性
      • 加入链中的交易记录永久存储
      • 交易记录绑定交易者信息、完整记录、可追溯、不可被摧毁
        • 一头牛从出生到被食用
        • 农产品
      • 基于区块链溯源的优势
        • 安全性有效提高
        • 记录不可篡改
        • 数据透明度高 容易追溯
  • 区块链的不可篡改性

    • 在开放的网络实现一个可信的账本、数据安全是第一要务
    • 数据安全:账本不可损坏和不可篡改
    • 不可篡改的技术实现
      • 1、分布式多点记账 P2P
      • 2、链块式结构(重点是防碰撞的hash函数)
        • 区块内包含时间戳、交易信息、前和本块hash
      • 默克尔🌲
        • 区块分为区块头和区块体
        • 区块的hash由前一块hash、随机数、树根、时间戳作为输入获得
          • 记录在区块头
        • 通过只同步区块头来减少流量和存储、
          • 利用默克尔🌲来验证数据安全可靠(因为区块头和体分开)
          • 平衡二叉树
          • 叶子结点都是交易数据
          • 非叶子结点是下属节点作为输入得到的hash
            • 某个交易信息改了,树根也改了,快速定位篡改
          • 可以快速验证交易是否属于这个区块
  • 区块链其他技术特征

    • 数据完整性
      • 精确 可靠
      • hash函数(是否修改) 数字签名(修改者身份) P2P网络(多点数据备份)
    • 自治性
      • 通过区块链协议和特性本身达到自治
    • 集体维护性
      • 各个参与方基于协议共同维护区块链系统
      • 由于开放 自治 必然需要集体维护
      • 可信交易
      • 提升可扩展性和健壮性
    • 不可抵赖性
      • 行为不可抵赖:数字签名
      • 发生时间不可抵赖:时间戳
  • 区块链系统架构概述

    • 架构
      • 应用层:封装应用场景和案例
        • 传统应用部署在区块链平台(冷链、等等)
      • 合约层:封装脚本、算法、智能合约
        • 无需第三方
        • 可编程的基础
        • 不止转账 记账也是 智能合约控制
      • 通信层:节点间通信的通信协议
        • RPC HTTP IPC等
      • 共识层:对区块数据的有效性达成共识
        • 进行验证的交易数据通过共识机制来决定记账权
        • 得到符合条件的hash值,就可以记账
      • 通道层:联盟链中确保隐私安全(跨组织数据信任)
        • 需要隔离 也需要复用
      • 网络层:区块链网络中节点与节点之间的信息交流方式
        • P2P组网机制
        • 数据传播机制
          • 全网广播 验证 临近节点
        • 数据验证机制
          • 格式 输入输出 数字签名
      • 数据层:存储区块链基础数据
      • 不同链不同结构

区块链系统开发与应用(高级)

共识机制

  • BFT拜占庭共识
    • 区别两军问题,两军问题在于可信信道
    • 拜占庭信道无问题,问题在于如何达成共识
    • 忠诚的将军让别的将军收到自己的真实意图
      • 仅仅靠一致性,就能解决吗?
        • 由于叛徒的存在,可能一致没有进攻
        • 不该进攻却又一致进攻
        • 需要看客观事实
    • 形式化:一致性正确性
    • 一个发送命令的将军要发送一个命令给其他n-1个将军
      • 所有忠诚的接受命令的将军遵守相同的命令
      • 如果发送命令的将军也是忠诚的
        • 所有忠诚的接受命令的将军遵守所接受的命令
        • 在分布式系统中非常有挑战性
    • 问题修复
      • 口头协议
        • 实现简单 算法复杂 需要克服更多困难
        • 知道谁发的 能被正确发 知道缺少的消息
        • 少于1/3 可解
        • 不能追本溯源
      • 书面协议
        • 实现困难 算法简单 无需克服很多困难
        • 知道谁发的 能被正确发 知道缺少的消息+签名不可伪造 否则发现
        • 所有消息追本溯源 采用即可
        • 忠诚将军必定一致
          • 书面协议在实际情况下的问题可以通过区块链解决
  • POW共识
  • POS共识

aweaweweaw
aweaweawea

  • Post title:Blockchain
  • Post author:Picasun
  • Create time:2024-03-05 13:03:21
  • Post link:https://redefine.ohevan.com/2024/03/05/Blockchain/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.