Substrate Developer Hub

Substrate Developer Hub

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

›学习 Substrate

开始

  • 总览
  • 安装
  • 在 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

会话密钥

验证人使用会话密钥对共识相关的信息签名。 会议密钥 是一种通用、可索引的类型,它是在 runtime 里被指定的。

你可以声明任何数量的会话密钥。 例如,默认的 Substrate 节点使用 4个。 其他链可能更多或更少,这取决于链需要验证者执行哪些操作。

实际上,验证人会将所有会话公钥合并在单一对象中,使用 "Controller" 账户签署公钥集合并提交一份交易来注册链上的密钥。 这个链上注册过程就把验证人 节点 和带有资金的 账户 联系起来。 因此该帐户的资金会根据节点的行为被奖励或惩罚。

Runtime 声明了會包含哪些会话密钥(在 runtime/src/lib.rs):

impl_opaque_keys! {
    pub struct SessionKeys {
        pub grandpa: Grandpa,
        pub babe: Babe,
        pub im_online: ImOnline,
        pub authority_discovery: AuthorityDiscovery,
    }
}

每个密钥使用的加密曲线是定义在 primitives 里。 例如,BABE 的密钥所使用的 sr25519:

mod app {
      use sp_application_crypto::{app_crypto, key_types::BABE, sr25519};
      app_crypto!(sr25519, BABE);
}

这个代码只是 Substrate 节点 当前 的一个例子。 最新实现方法请参考 runtime 代码。

The default Substrate node implements Session keys in the Session pallet.

生成和使用

会话密钥是必须在线上持有的 “热” 密钥。 个人密钥 不 应用于控制资金。 处理会话密钥的所有逻辑都存放在 Substrate 客户端、原始类型,和 Session 模块中。 如果一个会话密钥被泄露,攻击者可提交导致节点权益受损的行为。

Node operators can generate keys via the RPC call author_rotateKeys. 你则需要调用 session.setKeys 函数在链上注册一对新钥匙。

通过把对会话公钥签了名的证书利用外部调用广发到网络上,钥匙会定期被更改。

← 账户摘要交易权重 →
  • 生成和使用
Substrate Developer Hub
开发者中心
教程知识库进阶菜谱API 文档
社区
社区主页通讯Substrate 技术聊天室Substrate 研讨会Stack Overflow推特聚会活动
更多
Substrate Builders 计划BlogSubstrate GitHub开发者中心 GitHub隐私政策使用条款Cookie 设置
Copyright © 2021 Parity Technologies