Substrate Developer Hub

Substrate Developer Hub

  • 教程
  • 知识库
  • 进阶菜谱
  • API 文档
  • Languages icon简体中文
    • English
    • 繁體中文
    • 协助翻译

›进阶

开始

  • 总览
  • 安装
  • 在 Windows 系统开始
  • 词汇表

学习 Substrate

  • Extrinsics
  • 交易池
  • 账户摘要
  • 会话密钥
  • 交易权重
  • 链下功能

Runtime

  • Runtime 总览
  • Runtime 的基本类型
  • FRAME
  • Pallets
  • Runtime宏
  • Runtime 元数据
  • Runtime 存储
  • Runtime 来源
  • Runtime 执行流程
  • Runtime事件
  • Runtime 错误
  • 交易费用
  • 链下工作机
  • 调试
  • Runtime 测试
  • 链上随机生成
  • Runtime 升级

智能合约

  • 总览
  • ink! 智能合约
  • ink! 概念
  • ink! 开发
  • EVM 模块
  • ink! 常问问题

整合

  • Polkadot-JS
  • 客户端库
  • 链描述
  • Subkey 工具
  • 内存分析

进阶

  • SCALE 编解码器
  • 共识机制
  • 区块导入过程
  • 执行器
  • 密码学
  • 存储
  • SS58 地址格式

贡献

  • 协助翻译
Translate

密码学

本文对 Substrate 中所使用的密码学知识进行了概述。

哈希算法

Substrate 使用哈希函数将任意大小的数据映射到固定大小的值上。

Substrate 提供了两种开箱即用的哈希算法,也可以支持任何实现了 Hasher trait 的哈希算法。

xxHash

xxHash 是一种快速的非加密型哈希函数,算法速度接近于RAM的极限。 由于 xxhash 不是加密安全的,所以有可能通过修改输入来合理地控制散列算法的输出。 这就使得用户有机会通过创建密钥碰撞、哈希碰撞和失衡存储树来攻击此哈希算法。

xxHash 适用于外界无法操纵哈希函数输入的情景。 例如,它可用于生成 runtime 存储值的主键,因为其输入由 Runtime 开发者控制。

Substrate 采用了 twox-hash的Rust实现版本 。

Blake2

Blake2 是一个基于密码学的哈希函数。 它是公认的非常快,也被用于 Zcash 中。

Substrate 使用了blake2的Rust实现版本。

公钥加密

Substrate 中使用公钥加密技术实现了一个健壮的认证系统。

Substrate 提供了多种不同的加密方案,因此它十分通用,可以兼容任何实现了 Pair trait 的方案。

ECDSA

Substrate 提供了一个使用 secp256k1 曲线的ECDSA签名方案。 这与用于保护 Bitcoin 和 Ethereum 安全的加密算法相同。

Ed25519

Ed25519 是一个基于 Curve25519曲线 的EdDSA签名方案, 它在设计和实现的多个层面上做了精心的处理,在不影响安全性的前提下实现了非常高的速度。

SR25519

SR25519 是基于与 Ed25519 相同的基础曲线算法。 但是,它使用 Schnorr 签名替换了 EdDSA 的原有方案。

相比于 ECDSA/EdDSA 方案,Schnorr 签名具有一些显著的特性:

  • 它更适用于分层确定性的密钥推导。
  • 它通过使用 signature aggregation 实现本机多签。
  • 它总体上更能防止滥用。

当使用 Schnorr 签名替代ECDSA 方案时,一个不好的地方是,虽然两者都要占用64个字节,但只有 ECDSA 签名才会传递其公钥。

后续步骤

进一步学习

  • 了解 Substrate 的账户抽象.
  • 更详细的描述,请看 研究 wiki。

例子

  • 查看 Polkadot claims 模块,了解如何 在 Substrate runtime 验证 Ethereum 签名.

参考文档

  • 查看实现新的哈希算法所需的 Hash trait。
  • 查看实现新的加密方案所需的 Pair trait。
← 执行器存储 →
  • 哈希算法
    • xxHash
    • Blake2
  • 公钥加密
    • ECDSA
    • Ed25519
    • SR25519
  • 后续步骤
    • 进一步学习
    • 例子
    • 参考文档
Substrate Developer Hub
开发者中心
教程知识库进阶菜谱API 文档
社区
社区主页通讯Substrate 技术聊天室Substrate 研讨会Stack Overflow推特事件 (Events)
更多
Substrate Builders 计划BlogSubstrate GitHub开发者中心 GitHub隐私政策使用条款Cookie 设置
Copyright © 2021 Parity Technologies