Appearance
第5章 BCS 区块链与数字人民币(华为篇)
本章对应简历关键词:华为 BCS 边缘自治版 1.2.6、区块链平台部署、数字人民币智能合约引擎。对应项目一最上层的"业务承载平台"。 口径红线:金融客户项目,两个脱敏红线必须守住——不报内网 IP/访问地址/仓库域名(说"签了保密协议");我的水位是"把 BCS 部署通、部署稳并交付验收"的实施者,不是区块链内核开发者。概念层我按"联盟链 + Fabric 组织模型"理解到能讲 2-3 分钟,共识算法源码级细节一律兜底。 本章结构:先讲业务(数字人民币、智能合约——面试必问,纯八股可背),再讲产品(BCS 是什么、为什么是边缘自治版),再讲架构(管理面/数据面),最后是我亲手做的部署全流程(edgetool 命令链、镜像加载、Token 纳管、自研平台部署——这是本章最值钱的一手素材)。
本章知识地图(先看这张表再往下读):
| 节 | 内容 | 三级标注 | 面试出现频率 |
|---|---|---|---|
| 5.1 | 数字人民币本质(M0/双层运营/白皮书) | 【必背】 | 极高(金融客户项目必问) |
| 5.2 | 智能合约与"数币+智能合约≠区块链" | 【必背】 | 高 |
| 5.3 | BCS 定位与边缘自治版选型逻辑 | 【必背】 | 高 |
| 5.4 | 管理面/数据面架构 + 联盟链概念 | 【理解】 | 中(答好是亮点) |
| 5.5 | 部署全流程(edgetool/镜像/Token/自研平台) | 【必背】 | 高(手上功夫) |
| 5.6 | 坑与兜底 | 【理解】+兜底 | 追问层 |
| 5.7 | 面试问答精选 10 题 | 综合 | 高 |
一句话本章总纲(40 秒版):"数字人民币是央行发行的数字法定货币,定位 M0、双层运营、可编程;可编程靠智能合约,多方场景需要可信执行环境,所以我们用华为 BCS 边缘自治版在内网 K8s 上搭了联盟链底座——管理面 3 节点、数据面 6 节点、数据落 Vastbase——上面再跑自研的数币智能合约管理平台。这套东西从监控、BCS、纳管到应用联调,是我完整部署交付的。"
5.1 数字人民币是什么(业务背景,纯八股,必须脱稿)【必背】
标准回答(口述约 1 分钟): 数字人民币是人民银行发行的数字形式的法定货币,专业说法叫 e-CNY。它的定位我背三句话:第一,它是 M0——就是流通中现金的数字化形态,不是 M1/M2 那种存款货币,所以它是央行负债、有无限法偿性,任何单位和个人不得拒收;第二,双层运营体系——央行先把数字人民币兑换给指定运营机构(工行、农行这些商业银行),商业银行再对公众提供服务,商业银行必须交 100% 准备金才能兑换,央行不改原来的货币发行双层架构;第三,技术特征——支持双离线支付(没网也能碰一碰付款),通过加载智能合约实现可编程。我在银行驻场两年,这套业务背景是给客户做培训和写验收文档时必须讲清楚的,所以我不是背概念,是在项目里天天用。
背景核实(联网核实,可作加分引用):
- 数字人民币研发:央行 2014 年成立法定数字货币研究小组,2016 年成立中国人民银行数字货币研究所(数研所)专门推进。
- 权威文本:2021 年 7 月《中国数字人民币的研发进展》白皮书,由"中国人民银行数字人民币研发工作组"发布,系统阐述了研发背景、目标愿景、设计框架——上面三句话全部出自这份白皮书的框架。
- 我项目里用的《智能合约引擎部署指南》开篇就引用了这份白皮书和央行数研所专利来解读数币特征,所以这份白皮书我是真读过目录和要点。
数币大事记速记表(答"数币发展到什么阶段了"用,【理解】):
| 时间 | 事件 | 我的记忆锚点 |
|---|---|---|
| 2014 | 央行启动法定数字货币研究 | "十年磨一剑" |
| 2016 | 央行成立数字货币研究所(数研所) | 专班推进 |
| 2019 底 | 深圳苏州雄安成都+冬奥场景首批试点 | "4+1" |
| 2020 | 试点扩围,数字人民币 App 试点版上线 | 白皮书发布前夜 |
| 2021-07 | 《中国数字人民币的研发进展》白皮书发布 | 试点场景超 132 万个(白皮书口径) |
| 2022 | 试点地区继续扩围(历次央行公告为准) | 我项目正值此阶段 |
| 至今 | 由试点走向深化应用(智能合约等场景创新) | 我们平台就是场景创新载体 |
(说明:试点城市批次与运营机构名单以央行/数研所历次公告为准,面试说"先后多批扩围、指定运营机构以国有大行为主",不硬背具体名单,防止说错。)
钱包体系两个词(被追问时能接住即可,【了解】):
- 软钱包/硬钱包:软钱包是 App 形态(数字人民币 App、银行 App 内的钱包);硬钱包是把密钥放在安全芯片里的形态——卡片、可穿戴设备、手机 SE,支持"碰一碰"双离线支付。双离线的硬件基础就是硬钱包的安全单元。
- 母钱包/子钱包:运营机构开的是母钱包,用户在母钱包下可开多个子钱包用于不同场景(比如专门给某商户付款的子钱包),实现资金用途隔离——这个"隔离"思想和智能合约的条件划拨是一脉相承的。
追问链:
- 追问1:M0、M1、M2 怎么区分?为什么数币定位 M0? → M0 是流通中现金,M1 是 M0+单位活期存款,M2 是 M1+定期储蓄等。数币定位 M0,本质是"纸币硬币的数字化"——央行负债、无限法偿;如果定位成 M1/M2 就变成了存款货币,那是商业银行负债,会冲击现有货币体系。白皮书里明确讲了这个选择:既不对存款货币形成竞争和挤出,也避免对金融体系产生大的冲击。
- 追问2:数字人民币和支付宝/微信支付有什么区别? → 三个本质区别:①法偿性——数币是法定货币必须收,支付宝余额是商业机构的负债可以拒收;②发行方式——数币是央行发行、双层运营,支付软件是账户体系+商业支付工具;③技术能力——数币支持双离线支付和可编程,不依赖网络。我常给客户打的比方:微信支付宝是"钱包",数字人民币是"钱包里的钱"——而且两者不冲突,支付软件可以作为数币的运营入口。
- 追问2b:那数字人民币和比特币这类加密货币的区别? → 一张表讲透(下面"三方对比表")。
数币 vs 加密货币 vs 第三方支付(三方对比表)【理解】:
| 维度 | 数字人民币 | 比特币等加密货币 | 支付宝/微信余额 |
|---|---|---|---|
| 性质 | 法定货币(央行负债) | 虚拟商品/投机资产,非货币 | 商业机构负债(预付价值) |
| 法偿性 | 无限法偿,不得拒收 | 无 | 无(商家可拒收) |
| 发行 | 央行统一发行,双层运营 | 去中心化"挖矿"产生 | 商业机构账户体系 |
| 价值 | 1:1 锚定人民币 | 市场炒作波动巨大 | 1:1 锚定人民币 |
| 技术 | 中心化架构+安全芯片+智能合约 | 区块链/公链 | 中心化账户+支付网络 |
这张表的用法:金融项目面试里"数币和比特币什么区别"几乎是必考题,答"中心化双层运营的法定货币 vs 去中心化波动的虚拟资产,性质根本不同",再补一句"我们平台用区块链但绝不用来发币——链只做合约可信承载",一句话体现两次专业判断。
- 追问3:数字人民币是不是区块链?用了区块链吗? → 不是。白皮书里明确"数字人民币不走比特币那样的区块链技术路线",央行用的是中心化管理的双层架构,因为零售支付要高并发(几十万 TPS 级),公有链性能根本撑不住。但数币体系里智能合约的执行环境可以用联盟链这类可信基础设施来承载——这正是我们项目 BCS 存在的位置:区块链不是拿来"发币"的,是拿来给智能合约提供可信执行环境的。这个区别答清楚,面试官就知道你真懂。
- 追问4:央行数研所是什么机构?和你们项目什么关系? → 中国人民银行数字货币研究所,2016 年成立,是央行直属的数字人民币研发推进机构,白皮书和数币相关专利的主要产出方。我们项目是"银行侧"工程——银行作为运营机构要开展数币智能合约业务,需要自建合约引擎平台,央行侧(数研所)定标准和顶层设计,银行侧建业务设施,我们做的是后者。把这个"央行定规则、银行建设施、我们做交付"的层次讲出来,说明懂整个生态的分工。
- 追问5:数字人民币有利息吗?能兑换黄金/外币吗? → 没有利息——它定位 M0 现金,现金本身不生息,这也是"不构成对存款货币竞争挤出"的设计考量。兑换按 1:1 兑换人民币。这类细节答"没有利息、定位是现金"就够,多余的不展开。
- 追问6:你在银行两年,客户(银行业务人员)最关心数币的什么? → 业务侧最关心两件事:合规(资金监管要求是否满足、审计留痕是否完整)和场景(预付费、定向发放这类合约场景怎么落地)。所以我们的平台培训重点也是合约模板怎么配、履约条件怎么设、存证怎么查——技术是底座,业务问的是业务语言。这个回答体现"驻场懂客户",比纯技术腔加分。
关联话术:"简历里写'数字人民币智能合约引擎平台',被问到'数字人民币是什么',我就用 M0/双层运营/无限法偿这三句开场,再补一句'我做的平台是数币生态里智能合约的承载设施'——先显专业,再落到自己做过的事。"
5.2 智能合约与"数币+智能合约≠区块链"(本项目灵魂概念)【必背】
标准回答(口述约 1 分钟): 智能合约按白皮书和业界通用定义,是"以信息化方式传播、验证或执行合同的计算机协议"——把合同条款写成代码,条件满足就自动执行,不需要第三方介入,交易可追踪、不可逆转。数字人民币交易支付与传统支付最大的能力差异就是智能合约:通过加载不影响货币功能的智能合约,实现数币的可编程性——资金可以按交易各方事先约定的条件、规则自动支付。但这里有个最容易答错的点:数币+智能合约 ≠ 区块链。智能合约在数币体系里是"可信执行机制",不是必须上链;区块链只是承载可信执行的一种技术选项。我们项目里用 BCS 联盟链做承载,是为了多方参与场景下的互信——比如银行、商户、监管方共同验证合约执行,用链上存证保证可追溯、防篡改。
典型场景(能举例就是加分项)——预付资金监管: 这是数币智能合约最经典的落地场景,也是我培训客户时讲的例子:教培、健身、租房这类预付费行业,商家跑路挪用资金是老问题。用数币智能合约的方案是——消费者充值的预付资金以数字人民币形式锁定在智能合约里,按履约条件分次释放:上一节课,合约自动释放一节课的钱给商家;商家跑路,钱还在合约里原路退回消费者。资金流跟着履约进度走,从根上防止挪用。银行做这个业务,就需要一个智能合约引擎平台来管理合约模板、部署执行、存证审计——这就是我们部署的"数币智能合约管理平台"+BCS 底座。
预付资金监管合约的执行时序(把场景讲成流程,更立体的版本)【理解】:
- 签约建档:消费者、商家、监管方在平台创建合约实例——约定总额度、释放条件(如"每课时释放 N 元")、各方钱包/账户标识;
- 资金锁定:消费者的数字人民币转入合约控制的锁定状态——钱离开了消费者钱包,但也没到商家手里;
- 履约触发:商家交付一次服务(消一次课),系统上报履约凭证;
- 条件校验+自动释放:合约校验凭证满足约定条件,自动把这一笔数币释放给商家——多方在链上可见、可验证;
- 异常回退:商家停业/消费者退款,按合约的违约条款原路退回剩余资金;
- 全程存证:每一步的记录上链存证,监管方和审计可随时查——不可篡改。 讲解价值:面试官问"智能合约业务具体怎么跑",按这六步讲 1 分钟,比干背定义强十倍——这套流程我是对着客户培训材料讲熟的。
智能合约生命周期(平台视角,我在管理平台上操作过的环节)【理解】:
- 模板/开发:业务方定义合约规则(履约条件、释放比例),开发成合约代码/模板——应用开发商职责;
- 部署/安装:合约包部署到链节点上——BCS 平台下发;
- 实例化:初始化合约、绑定参数(比如绑定监管账户地址)——合约开始可被调用;
- 调用/执行:交易触发合约(invoke)或查询状态(query),满足条件自动执行资金操作;
- 升级/注销:合约版本升级要走变更流程,旧合约数据保留可审计。 面试价值:被问"你对智能合约懂多少",就答"我在平台层面操作过它的生命周期——部署、实例化、调用验证、升级,这是实施+验收的必修课;合约代码开发不在我的职责边界"。边界清晰,反而可信。
追问链:
- 追问1:智能合约和普通程序有什么区别?为什么要专门一个平台? → 普通程序跑在一方控制的机器上,规则改不改、执行不执行都是这一方说了算;智能合约跑在多方共同维护的可信环境里,代码即规则、执行即存证,单方无法篡改——所以"可信"是它和普通程序的本质差异,也是需要专门平台(管理合约生命周期+可信执行环境)的原因。
- 追问2:你们的智能合约用什么语言写的?链代码你写过吗? → 诚实答:合约代码是应用开发商和华为侧提供的,我负责的是合约引擎平台的部署和联调——包括 BCS 底座、自研管理平台的部署、证书对接、和数据库/中间件的连通验证。合约开发不是我的职责边界,我能讲清楚合约从部署到执行调用经过哪些组件。
- 追问3:双离线支付怎么实现的? → 【了解+兜底】白皮书口径:双离线靠安全芯片和可信任执行环境,交易先在双方设备本地完成"碰一碰"的离线账务记录,联网后再上送清算,靠防重复使用的硬件机制兜底。具体密码学方案(TEE 细节)我没深入,知道原理层到此为止。
- 追问4:联盟链和公有链的区别?为什么金融场景一定选联盟链? → 公有链人人可进出(比特币),联盟链是许可链——节点和成员都要授权准入,身份靠证书体系。金融场景选联盟链的原因:①合规监管需要身份可识别,不能匿名;②性能——联盟链节点少而精,共识开销小得多,能撑业务并发;③数据主权——账本在成员自己手里,不出内网。我们 BCS 的组织/证书准入体系就是典型联盟链设计。
5.3 BCS 是什么:华为云区块链服务,以及为什么我们用"边缘自治版"【必背】
标准回答(口述约 1.5 分钟): BCS 全称 Blockchain Service,华为云的区块链服务,属于 BaaS——Blockchain as a Service,区块链即服务。华为云上的 BCS 有两代形态:早先是 Hyperledger Fabric 增强版(华为把开源联盟链框架 Fabric 增强后以云服务方式提供),后来又推出自研的华为云区块链引擎。它的价值是把建联盟链的复杂工作(节点部署、证书体系、共识、监控)产品化,企业不用自己从零搭链。而我们项目用的是 BCS 的"边缘自治版"(BCS-Site)——原因很直接:这是银行,数据绝不能出内网,公有云上的 BCS 根本不在选项里;边缘自治版就是把区块链平台以软件包形式部署到客户内网自己的 Kubernetes 集群上,部署之后脱离华为云独立运行、内网自治,只需要在初期部署时通过 ESN+配置码做一次授权对接。这个产品形态完美匹配金融客户"数据不出行+自主可控"的要求,这也是这套方案里 BCS 存在的配套逻辑。
BCS 产品形态对比表(把"云上/边缘"一张表讲清,【理解】):
| 形态 | 部署位置 | 适用客户 | 关键特征 |
|---|---|---|---|
| Hyperledger Fabric 增强版 | 华为云上 | 能用公有云/政务云的企业 | 分钟级建链、K8s 管理、开箱即用 |
| 华为云区块链引擎(自研) | 华为云上 | 高性能金融级场景 | 华为自研内核、高性能共识 |
| 边缘自治版(BCS-Site,我们用的) | 客户内网自建 K8s | 金融/政务等数据不出内网的客户 | ESN+配置码授权、部署后内网自治 |
为什么叫"边缘自治"(把名字讲透就是亮点):
- 边缘:部署在华为云之外的"边缘"位置——客户自己的机房/内网,不在公有云上;
- 自治:部署完成后整套系统独立运行,管理面、数据面、数据库全在客户内网,不依赖持续连接华为云;
- 授权方式:部署时用 mgmt0 节点生成 ESN(设备序列号),拿 ESN 到华为云侧的边缘自治实例换配置码导入,完成授权绑定——一次性动作,之后内网自治。
追问链:
- 追问1:BCS 和 Hyperledger Fabric 什么关系? → 华为云 BCS 的云上版就叫"Hyperledger Fabric 增强版",华为在开源 Fabric 基础上做了性能优化、安全加固和运维产品化。边缘自治版沿用的也是 Fabric 的联盟链概念体系——组织、联盟、节点、链代码(chaincode,就是 Fabric 对智能合约的叫法)。所以面试里我可以把"BCS 的组织/链代码模型"和"Fabric 的 org/chaincode 模型"对应着讲。【了解层兜底】边缘自治版内部对 Fabric 做了哪些增强、共识用哪种(Raft/Kafka),我按官方文档口径了解,不冒充内核开发者。
- 追问2:为什么不用开源 Fabric 自己搭? → 能搭,但银行生产环境要的是商用责任+安全加固+版本配套。自建开源 Fabric 意味着出问题没有原厂兜底,证书、监控、升级全自己啃;用 BCS 边缘自治版,出问题走华为工单,符合"金融生产环境必须有厂商责任背书"的行业习惯。这也是华为生态方案的一部分——和我们全华为栈的选型逻辑一致。
- 追问3:和别的厂商的区块链平台(蚂蚁链、FISCO BCOS)比呢? → 【了解+诚实】各家的差异在共识机制、性能指标和生态绑定上,我没做过横向 PoC,不评价谁强谁弱。我们项目选 BCS 的决定性因素不是"技术最优",而是"整套信创方案的配套一致性"——全华为栈下 BCS 有鲲鹏 ARM 的适配和统一责任界面。
- 追问4:你们为什么是 1.2.6 这个版本?怎么看它的版本演进? → 版本由华为侧配套表指定——不同测试阶段拿到的版本不同,以最终商用版本为准,我们的部署指南里专门标注了这一点。我的版本观:边缘自治版属于 BCS 产品线里较新的形态,版本节奏跟华为云 BCS 整体演进走;生产环境我只认"配套表+商用版",不追新——1.2.6 是当时认证通过的组合(配套 K8s v1.17.3、Vastbase 2.2、毕昇 JDK 8u362 这一整套),单独升级任何一件都要重新核配套。
5.4 BCS 边缘自治版架构:管理面 / 数据面(能画图级别的理解)【理解】
标准回答(口述约 1 分钟): 我们部署的 BCS 边缘自治版 1.2.6,架构上分管理面和数据面两层:管理面 3 个节点(命名 mgmt0、mgmt1、mgmt2),跑的是 edge-manager 管理服务——它就是 BCS 的"大脑",提供 Web 管理控制台、联盟和组织的生命周期管理、证书签发,对外通过 https://<管理面VIP>:30000 访问;数据面 6 个节点,是真正跑区块链业务负载的地方——按组织规划,一个组织至少一个节点,我们的规模是 6 台数据面虚机。管理面和数据面之间的关系是"管理面纳管数据面":数据面所在的 Kubernetes 集群通过 Token 认证被管理面纳管,管理面把链代码、组织配置下发下去。另外管理面节点上还部署了 Prometheus 监控(monitor 命名空间),平台和链节点的指标都在这层采集。
架构速记表:
| 组成 | 规模 | 承载内容 | 我的口径 |
|---|---|---|---|
| 管理面(mgmt0/1/2) | 3 节点 | edge-manager 管理服务 + Web 控制台(30000 端口)+ Prometheus 监控 | 部署实操全程 |
| 数据面 | 6 节点(按组织数规划,1 组织 ≥1 节点) | 区块链节点、链代码容器、数币中间件业务 Pod | 镜像加载+Token 纳管实操 |
| 数据库 | Vastbase(openGauss 系)一主一备 | BCS 平台自身数据(db-init 初始化) | 第 4 章详解 |
| 认证 | ESN→配置码;数据面纳管用 Token/证书 | 授权与集群接入 | 实操过 |
必须会讲的五个概念(联盟链/Fabric 体系词汇表):
- 组织(Organization):联盟链里的参与主体,比如一家银行、一个商户平台;每个组织有自己的节点和证书身份。我们数据面节点数就是按组织规划出来的。
- 联盟/通道(Consortium/Channel):多个组织组成联盟开展业务;通道是数据隔离的"子账本",同一链上不同通道的数据互相不可见——这是联盟链做业务隔离的核心机制。
- 节点(Peer):组织里实际记账、执行链代码的服务器/容器。
- 链代码(Chaincode):Fabric 体系对智能合约的叫法,部署到节点上、被交易触发执行的合约程序。
- 证书体系:联盟链的身份基础,成员证书、TLS 证书、管理员证书层层签发——我们对接自研平台时要导出 BCS 管理员证书转 p12 给 Java 服务用,就是这个体系的实际操作。
概念补充三连(被深挖时的第二梯队弹药,【了解】):
- 排序节点(Orderer):负责给交易定全局顺序、打包区块的节点——Fabric"背书-排序-记账"三段式里中间那一环,上面的三段式流程会展开。
- MSP(成员服务提供者):Fabric 的身份与权限管理模块,把证书体系变成可校验的成员规则——谁属于哪个组织、有什么权限,由 MSP 定义。知道这个词+一句话定位即可。
- 世界状态(World State):账本分两部分——区块链结构(交易历史,只追加)和世界状态(当前最新值的快照,通常放数据库里方便查询)。理解了"账本=历史+状态",就理解了为什么链节点本地也要依赖数据库组件。
追问链:
- 追问1:管理面为什么要 3 个节点? → 高可用——管理面是平台的控制中枢,3 节点避免单点,部署文档里明确管理面机器命名 mgmt0/1/2,edge-manager 以 Pod 形式运行(部署完成后确认两个 edge-manager Pod 都 Running)。更深的多副本一致性机制(etcd/选举)是 K8s 层的知识,可以引到我搭的 3 master 高可用 K8s 上——这是我熟的地盘,主动往自己强项引。
- 追问2:数据面节点数怎么定的? → 按组织数:文档原则"1 个组织至少需要 1 个节点",我们项目按客户组织规划定了 6 个数据面节点。数量规划和客户业务方的组织结构相关,我不展开客户组织信息(保密)。
- 追问3:BCS 的数据存哪?链上账本和管理数据是一回事吗? → 分开存:平台自身的管理数据(组织信息、用户、配置)存在外部数据库里——我们用的 Vastbase,部署时 edgetool db-init 就是在初始化这些库表;链上账本数据则在节点本地(账本文件+数据库),两套存储职责不同。能分清这个,说明真部署过。
文字版部署拓扑(面试时可口述"画"出来)【理解】: "最底下是 4 台 TaiShan 物理机跑 FusionCompute 虚拟化;虚拟机两层网络——管理平面和业务平面;K8s 集群 3 master + 10 work 就绪,旁边独立部署 Vastbase 一主一备;BCS 管理面 3 节点(mgmt0/1/2)以 Pod 形态跑 edge-manager,挂 30000 端口的 Web 控制台,Prometheus 在 monitor 命名空间采集指标;数据面 6 台虚机被管理面通过 Token 纳管,跑区块链节点和数币中间件;最上面是自研智能合约管理平台——Nginx 前端+Java 后端+Redis+Vastbase,通过管理员证书(转 p12)调用 BCS 的能力。"——这段 30 秒讲完,就是"我懂全局"的证据。
联盟链一笔交易怎么走(Fabric 背书-排序-记账三段式,【了解】+兜底):
- 背书:客户端把交易提案发给背书节点,节点执行链代码但不落账,返回签名结果;
- 排序:交易连同背书发给排序节点(Orderer),按共识算法确定全局顺序,打包成区块;
- 记账:各节点验证背书签名和读写冲突后把区块写入本地账本——交易上链完成。 兜底话术:"这是 Fabric 的经典三段式流程,我按这个模型理解 BCS 的交易处理;具体到 BCS 边缘自治版用的共识组件版本和调优参数,是华为产品内部实现,我按官方文档口径了解。"——能讲到三段式已经超过"部署者"的平均水位,再深就守边界。
5.5 部署全流程(我的真实操作,本章一手素材核心)【必背】
总前提(先讲条件,显得专业):BCS 边缘自治版不是裸机装的,它长在 Kubernetes 上。所以部署顺序是:① K8s 集群先就绪(我们自建 3 master + 10 work,ARM 版)→ ② Vastbase 数据库集群就绪(第 4 章)→ ③ 部署 BCS 边缘自治监控服务 → ④ 部署 BCS 边缘自治版系统(管理面)→ ⑤ 数据面准备+纳管 → ⑥ 部署数币智能合约管理平台(自研应用)。软件包三件套:工具包(BCS_site_tool,含 edgetool)、软件包(BCS_site_images,全量镜像 tar.gz)、物料包(bcs_config.tar,证书密钥物料)。
三包两码职责表(部署前必须分清,拿错包=白干):
| 包/码 | 名称 | 内容 | 用在哪 |
|---|---|---|---|
| 工具包 | BCS_site_tool_xxx.tar.gz | edgetool 工具与脚本 | mgmt0(生成 ESN/物料/升级)+ 数据面(create-sa) |
| 软件包 | BCS_site_images_1.2.6-aarch64.tar.gz | 全部容器镜像(tar.gz 逐个打包) | 管理面节点(load edge-manager)+ 数据面节点(load 其余) |
| 物料包 | bcs_config.tar | 根密钥、证书(ca/server/public 等) | 仅 mgmt0 解包后分发,必须备份 |
| 配置码 | —— | ESN 换来的授权码 | 管理平台导入激活 |
| 管理员密码 | —— | db-init 时设置 | 首登 30000 后强制修改 |
5.5.1 第③步:部署 BCS 边缘自治监控服务
bash
# 1. 解压监控资源包 monitor.zip(通过云 BCS 团队获取)
unzip monitor.zip
# 2. 给准备跑 Prometheus 的节点打 monitor 标签(调度约束)
kubectl label node <节点名> monitor=<标签值>
# 3. 执行部署脚本
sh deploy.sh
# 4. 验证 Pod 状态
kubectl get po -n monitor
# 5. 获取 Prometheus 访问端口(NodePort)
kubectl get svc -n monitor讲解要点:监控是独立一步——Prometheus 2.33.5 + Node Exporter 1.3.1 跑在 monitor 命名空间,通过节点标签约束调度。这是"先有可观测性再上业务系统"的工程习惯,面试可以点一句。
5.5.2 第④步:部署管理面(edgetool 命令链,背下这条主线)
bash
# 1) 每个管理面节点:解压软件包并加载管理面镜像
tar -zxvf BCS_site_images_1.2.6-aarch64.tar.gz
cd BCS_site_images_1.2.6-aarch64
docker load -i edge-manager-<版本>.tar.gz # 管理面所有机器都要执行
# 2) mgmt0 节点:解压物料包到统一路径(路径固定,不存在就建)
mkdir -p /var/paas/edgemanager
tar -xvf bcs_config.tar
mv bcs_config/* /var/paas/edgemanager
# 解出根密钥(物料里的 key 是 base64 编码的,要解回二进制)
base64 -d /var/paas/edgemanager/root.key > /root/root.key
base64 -d /var/paas/edgemanager/common_shared.key > /root/common_shared.key
# 3) 把 ca.crt、public.key、server.crt、server.key 复制到所有管理面节点
# 的 /var/paas/edgemanager 下
# 4) 生成 ESN(用 mgmt0 网卡 MAC),拿 ESN 到华为云侧边缘自治实例换"配置码"
cat /sys/class/net/eth0/address # 先查 mgmt0 的 MAC
./edgetool create-esn {mac1} --esn_path=/var/paas/edgemanager
./edgetool decrypt-esn --esn_file=/var/paas/edgemanager/esn.txt # 以后想再看 ESN 用这个
# 5) 数据库初始化(BCS 平台数据落在 Vastbase/openGauss 上)
./edgetool db-init {dbhost} {dbport} {dbname} {open_ssl} \
--db_type postgresql \
--esn_file /var/paas/edgemanager/esn.txt \
--ssl_ca_file /root/ca.crt --ssl_cert_file /root/tls.crt --ssl_key_file /root/tls.key
# 按提示输入数据库用户名、密码,设置平台管理员密码
# db_type 支持 mysql 和 postgresql,我们走 postgresql(openGauss 系兼容)
# 6) 生成部署物料清单(版本/架构/模式三个关键参数)
./edgetool create-deploy-material --manager_image_version 1.2.2 \
--arch aarch64 --deploy_mode cloud
# 按提示再次输入数据库用户名密码
# 7) 正式部署
cd /var/paas/edgemanager
./deploy.sh
# 8) 验证:确认管理面两个 edge-manager Pod 都 Running
kubectl get pod | awk '{print $1}' | grep "^edge-manager" | xargs kubectl delete pod
# (删除是为了让 Pod 重建后确认稳定 Running——文档原步骤)部署完成后:浏览器访问 https://<管理面VIP>:30000,用设置的管理员账号首次登录,强制修改密码,然后导入第 4 步换来的配置码,系统才算激活可用。
这条命令链的面试价值(怎么讲才不像背书):我会按"三包两码一条链"总结——三包:工具包(edgetool)、软件包(镜像)、物料包(证书密钥);两码:ESN 换配置码(授权)、管理员密码(首登必改);一条链:load 镜像 → 放物料 → 生成 ESN → db-init 初始化数据库 → create-deploy-material 生成物料清单 → deploy.sh 部署 → 30000 端口验证。这样 30 秒能把骨架讲完,细节等追问再展开。
5.5.3 第⑤步:数据面准备与 Token 纳管(我写的循环加载脚本)
镜像批量加载(内网拉不了海外镜像,全部离线 docker load):
bash
# 每个数据面工作节点执行:解压软件包后,编辑 imagesload.sh
for f in *.tar.gz; do
if [[ "$f" != edge-manager* ]]; then # 排除管理面专用镜像
cat $f | docker load
fi
done
chmod +x imagesload.sh
./imagesload.sh讲解要点:软件包里混着管理面镜像(edge-manager 开头)和数据面镜像——数据面节点只需要数据面那部分,所以要按文件名前缀排除。ARM 环境所有镜像都是 arm64 版本,一个 x86 镜像混进来就会 ImagePullBackOff/Exec format error。这个脚本是我按部署指南沉淀到公司标准文档里的,10 个 work 节点批量执行省了大量重复劳动。
Token 纳管(BCS 管理面纳管数据面 K8s 集群):
bash
# 1) 在有 kubelet/kubectl 客户端的节点(master 即可)解压工具包,创建 ServiceAccount
tar -zxvf BCS_site_tool_<版本>.tar.gz
./edgetool create-sa
kubectl apply -f edge-admin-service-account.yaml
# 2) 从关联 Secret 里解出 Token(base64 解码)
SERVICE_ACCOUNT_NAME=edge-admin-service-account
CONTEXT=$(kubectl config current-context)
NAMESPACE=default
SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
--context ${CONTEXT} --namespace ${NAMESPACE} -o jsonpath='{.secrets[0].name}')
TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
--namespace ${NAMESPACE} -o jsonpath='{.data.token}')
TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
echo $TOKEN # 这串就是纳管凭证最后一步在 Web 界面:登录 BCS 管理平台 → 计算资源管理 → 纳管集群 → 集群类型选 Kubernetes → 填 K8s API 地址 → 认证类型选 Token → 粘贴上面解出的 Token → 提交。纳管成功后数据面节点就归 BCS 调度了。
这里的 K8s 知识点主动关联:这一套本质是"用 ServiceAccount 的 JWT Token 做 API Server 认证"——ServiceAccount 创建后自动生成关联 Secret,Token 就存在 Secret 的 data.token 字段里(base64 编码)。面试官若往 K8s 上引,正中我下怀:RBAC、ServiceAccount、Secret、API Server 认证链路我都能讲(详见主宝典 K8s 章)。
5.5.4 升级流程(能讲"变更纪律"的素材)
bash
# 与部署同构:上传新版工具包/软件包 → 各管理面节点加载新 edge-manager 镜像
# → mgmt0 上生成"升级物料"(注意参数是 upgrade):
./edgetool create-upgrade-material --manager_image_version <新版本号> \
--arch aarch64 --deploy_mode cloud
# 按提示输入数据库用户名密码(文档强调:用有读写权限的普通账号,不用 root 等特权账号)
cd /var/paas/edgemanager
./upgrade.sh
# 交互确认:系统会提示"确认没有正在执行中的变更任务"后输入 y 继续,否则 n 终止升级纪律(面试讲变更管理的好素材):① 升级期间禁止做组织创建、删除、加入联盟等操作——变更窗口内业务操作和平台变更混在一起是事故之源;② 升级前确认无进行中的变更任务;③ 升级后重新通过 30000 端口验证访问。这三条是银行环境变更管理的缩影,可扩展讲我在项目里的变更流程意识(申请窗口→备份→执行→验证→报告)。
5.5.5 第⑥步:数币智能合约管理平台部署(自研应用的完整落地链路)
这是公司自研 Java 平台(跨与数科"数币智能合约管理平台 1.0"),BCS 就绪后由我完成部署——这一节是"从区块链底座到业务应用"的完整闭环素材,每一步都是真实操作:
① 毕昇 JDK(第 6 章详解,这里记命令):
bash
# 从华为云鲲鹏镜像站下载 ARM 版(版本配套表指定 8u362)
tar -zxvf bisheng-jdk-8u362-linux-aarch64.tar.gz
vi /etc/profile # 追加 JAVA_HOME/PATH
source /etc/profile
java -version # 验证输出 1.8.0_362 aarch64② 建库导数(Vastbase 侧):
bash
# 用初始化 SQL 脚本建表导基础数据(vsql 是 Vastbase/openGauss 的客户端工具)
vsql -U <用户名> -W <密码> -f <数据库初始化脚本>.sql -p 5432 -d <库名>③ Redis 5.0.3(源码编译,ARM 注意依赖库齐全):
bash
yum install -y gcc-c++
wget https://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz && cd redis-5.0.3
make && make install PREFIX=/home/redis
# 配置要点:bind 0.0.0.0(允许平台连接)、daemonize yes(后台运行)
./bin/redis-server ./conf/redis.conf
netstat -anp | grep 6379 # 验证监听④ 后端服务(Java jar + BCS 证书转 p12):
bash
mkdir -p /opt/dcepscapi
# 拷贝后端 jar 与启动脚本;修改 application yml 里的数据库、Redis 连接信息
# 导入 BCS 管理员证书并转换格式(Java 服务用 PKCS12):
openssl pkcs12 -export -clcerts -in manager_tls.crt -inkey manager_tls.key -out dcep-tls-console.p12
sh dcepscapi.sh restart
jps -l # 验证 Java 进程;日志在 /opt/dcepscapi/logs⑤ Nginx 1.25.1 前端(源码编译+HTTPS+反代):
bash
# 编译(两个关键模块)
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
# 配置要点:
# 80 端口 301 跳转 443(rewrite ^/(.*)$ https://<域名或IP>/$1 permanent)
# 443 挂证书,root 指向前端静态页目录 /opt/dcepscapi/ui
# location /prod-api/ 反向代理到本地 8080 后端(proxy_pass http://localhost:8080/)
# 前端路由兜底:try_files $uri $uri/ /index.html; ← 解决登录后刷新 404
./sbin/nginx -s reload讲解价值:这条链路把"毕昇 JDK→数据库→缓存→证书对接→Web 服务"串起来了,每一环都是运维基本功+华为生态元件的组合拳。面试里我把它作为"端到端交付能力"的主证据——BCS 是底座,平台是业务,中间的证书转换、参数配置、404 兜底这些细节只有真做过的人才说得出。
5.5.6 上线前检查清单(验收交付的"最后一公里")
交付验收前我按这张清单逐项过——这也是我沉淀到公司标准文档里的内容,面试讲"你怎么保证交付质量"直接用它:
| # | 检查项 | 命令/动作 | 通过标准 |
|---|---|---|---|
| 1 | K8s 组件健康 | kubectl get nodes / get po -A | 全部 Ready/Running,无 CrashLoop |
| 2 | etcd/负载均衡 | 集群 VIP 连通验证(curl -k https://VIP:16443/version) | 返回正常,无证书报错 |
| 3 | 数据库主备 | HAS/DCS 状态查询 | 主备角色正常,VIP 在位 |
| 4 | BCS 管理服务 | kubectl get pod(edge-manager 两个 Pod) | Running 且重启次数稳定 |
| 5 | BCS 控制台 | https://管理VIP:30000 登录 | 登录正常,组织/节点状态正常 |
| 6 | 数据面纳管 | 平台"计算资源管理"页 | 集群在线,节点 Ready |
| 7 | 监控 | kubectl get po -n monitor + Prometheus 页面 | Target 全 Up,能看到指标 |
| 8 | 应用平台 | 前端登录→发起一笔合约调用冒烟 | 业务链路通,存证可查 |
| 9 | 文档 | 部署指南/IP 规划/验收报告齐套 | 客户签收 |
| 10 | 培训 | 平台使用+日常巡检要点培训记录 | 客户侧运维可接手 |
面试话术:"验收不是'装完了就行',我有一张十项清单从容器层到业务层逐项过——这套路子后来成了公司同类项目的验收模板。"(这句话同时回答了"你怎么保证质量"和"你留下过什么沉淀"两个问题。)
5.6 踩过的坑与注意事项(真实细节,防深挖穿帮)
坑1:bcs_config.tar 物料包丢失 = 系统报废级事故【必背】 物料包里有根密钥和证书(root.key、common_shared.key、ca.crt 等),文档红字强调"请提前备份并妥善保管,文件丢失后会导致 BCS 边缘自治版系统无法使用"。我的实践:物料包离线双备份(本地加密存储+公司文档库登记),密钥文件权限收紧。面试价值:这是"信创环境密钥资产管理"的真实案例,能引出我对备份纪律、密钥生命周期管理的理解。
坑2:证书格式转换(BCS 证书给 Java 服务用要转 p12)【理解】 自研数币管理平台要对接 BCS,导入的是 BCS 管理员证书,但 Java 生态(Tomcat/Netty/JVM)常用 PKCS12 格式,所以要转换:
bash
openssl pkcs12 -export -clcerts -in manager_tls.crt -inkey manager_tls.key -out dcep-tls-console.p12注意 p12 有有效期,到期会导致平台到 BCS 的调用失败——这是"平台无法登录/接口报错"排查清单里的一条(先查网络和 Nginx,再查后端进程,再查数据库/Redis,最后查这层证书)。crt/key/p12 的格式关系(PEM 文本格式 vs PKCS12 二进制容器)是顺手就能秀的细节。
坑3:版本配套的刚性约束【必背】 BCS 边缘自治版 1.2.6 对纳管的 Kubernetes 版本有严格兼容矩阵——我们 K8s 被"锁"在 v1.17.3 就是它定的。生产环境绝不能脱离配套表自行升级 K8s,否则 BCS 纳管和链代码下发都可能出问题。这是我"版本配套意识"标签的典型案例(呼应项目笔记:先查配套关系,再谈技术新旧)。
坑4:ARM 架构镜像必须是 arm64【理解】 软件包名里明写 1.2.6-aarch64,edgetool 参数也要 --arch aarch64。ARM 环境最经典的故障就是混入 x86 镜像,现象是 Pod 起不来或 exec 报 Exec format error——排查用 docker inspect <镜像> --format {{.Architecture}} 看架构。这条和第 1 章 ARM 生态内容呼应。
坑5:首次登录与纳管地址细节【理解】 ① 首次登录 30000 管理平台强制改密,新密码要按金融客户密码策略妥善保管——改丢密码是要走华为侧流程的麻烦事;② 纳管集群时"集群地址"填的是 K8s API Server 地址(我们环境是负载均衡 VIP+端口),认证选 Token——地址和凭证任何一个不对,纳管都不会成功,报错还不一定直观,要回到管理面节点用 kubectl/curl 分步验证(先网络、再认证、再提交)。
兜底话术(本章通用):如果被问到共识算法细节、Fabric 源码、链代码开发——"我的角色是把这套平台在银行内网部署到能交付验收,共识机制和合约开发属于华为 BCS 团队和应用开发商的领域;我掌握到'组织/联盟/链代码的 Fabric 概念模型 + 部署运维链路'这一层,再往内核走我如实说没研究过——但我清楚遇到这类问题该抓哪些日志、该找谁闭环。"——先守住边界,再展示闭环能力。
兜底实战示范(对话体,感受一下节奏):
- 面试官:"BCS 底层共识用的是什么?Raft 还是别的?"
- 我:"Fabric 体系默认排序服务支持 Raft 这类 CFT 共识,BCS 边缘自治版具体用哪种共识组件版本,这个属于华为产品内部实现,我以官方文档口径为准,不替厂商答——我实际负责的是把共识所在的整套平台部署稳定,节点和排序服务异常时我能从监控和日志发现并走原厂通道闭环。"
- 要点解析:三句话结构——"概念我懂(Fabric/Raft)、内部版本不冒充、我的价值在部署与闭环"。这个节奏适用于所有"再深一层就不会"的场景,比硬编或直接"不知道"都好。
5.7 本章面试问答精选(12 题)
开场 STAR 案例卡("讲讲你做的区块链部署"用,约 1 分钟):
- S(背景):银行数字人民币智能合约平台,要求全栈国产化且数据不出内网,区块链底座选了华为 BCS 边缘自治版 1.2.6;
- T(任务):我负责在自建的 ARM Kubernetes 集群上完成 BCS 边缘自治版部署、数据面纳管,并配合自研合约平台联调上线;
- A(行动):先部署 Prometheus 监控服务(monitor 命名空间+节点标签调度);管理面按"加载镜像→放置证书物料→生成 ESN 换配置码→db-init 初始化 Vastbase→create-deploy-material 生成清单→deploy.sh"完成部署;数据面编写批量脚本按前缀过滤加载 arm64 镜像,用 edgetool create-sa 创建 ServiceAccount 并从 Secret 解出 Token 完成集群纳管;最后部署自研平台(毕昇 JDK/Redis/Nginx/证书转 p12)完成端到端联调;
- R(结果):平台通过银行验收,支撑数币试点业务运行;部署流程被我沉淀为公司同类项目标准实施文档。 (约 200 字,脱敏纪律:全程不提内网 IP、地址、账号。)
Q1:介绍一下你部署的区块链平台? 答:我们用的是华为云区块链服务 BCS 的边缘自治版 1.2.6——选它是因为银行要求数据不出内网,边缘自治版可以整套部署在客户内网的 Kubernetes 集群里,部署后脱离华为云独立运行。架构上管理面 3 节点跑 edge-manager 管理服务,通过 30000 端口的 Web 控制台管理;数据面 6 节点按组织规划承载链上业务;平台数据落在 Vastbase 数据库上。我负责从监控服务、管理面部署、ESN 配置码授权、数据库初始化,到数据面镜像加载和 Token 纳管的完整落地,最后配合自研数币智能合约管理平台完成联调上线。这套流程我沉淀成了公司同类项目的标准实施文档。(约 230 字)
Q2:区块链在数字人民币项目里到底起了什么作用?数币不是不用区块链吗? 答:对,白皮书明确数字人民币本身不走区块链路线,央行侧是中心化架构。但数币的差异化能力——可编程性,靠智能合约实现,而智能合约在多方参与的商业场景里需要一个可信执行环境:银行、商户、监管方互不隶属,谁的服务器跑合约都不服众,联盟链正好提供多方共同验证、可追溯、防篡改的承载。所以我们平台的逻辑是"数币负责货币本身,BCS 联盟链负责让智能合约的执行可信"。一句话总结:数币+智能合约不等于区块链,但多方互信场景里区块链是合约承载的最优解之一——这正是我们项目的架构选择。(约 220 字)
Q3:ESN 和配置码是干什么用的? 答:这是 BCS 边缘自治版的授权机制。部署时在 mgmt0 节点用 edgetool create-esn 基于网卡 MAC 生成一个设备序列号文件,拿这个 ESN 到华为云侧的边缘自治实例申请配置码,再导入到内网系统里完成授权激活——相当于"一机一码"的license绑定。之后系统就内网自治运行了。顺带要注意 ESN 文件和物料包 bcs_config.tar 都要备份,文档明确物料丢失系统就无法使用了。这套机制我理解成商用软件在离线环境的授权设计——用硬件指纹+云端换码保证可控授权,和数据库 license、虚拟化 License 是同一类思想。(约 210 字)
Q4:BCS 部署的前置依赖是什么?为什么 K8s 版本那么老? 答:两个前置:Kubernetes 集群就绪、数据库就绪——BCS 边缘自治版是长在 K8s 上的,管理服务和业务 Pod 都以容器形态跑;平台自身数据存数据库,我们用的 Vastbase。K8s 锁在 v1.17.3 是 BCS 边缘自治版 1.2.6 的兼容矩阵决定的,生产环境必须严格按版本配套表来。这不是技术保守,而是金融生产环境的原则:平台软件对依赖组件的认证版本就是边界,自行升级出了问题厂商不兜底。所以我养成的习惯是:先查配套表,再谈版本新旧——这也是我后来项目里用新版本 K8s 时会先确认兼容性的原因。(约 220 字)
Q5:数据面纳管时如果 Token 填错了/过期了会怎样?怎么排查? 答:纳管失败的现象是管理平台上添加集群后节点状态不正常或直接报认证错误。排查思路:① 先在管理面节点上用 kubectl 验证 Token 是否还有效——可以用它直接 curl K8s API 试认证;② 检查填的集群地址是否正确、网络是否通(管理面到 API Server 的 6443/16443 端口);③ Token 是否重新生成过——ServiceAccount 的 Token 如果被重建,旧 Token 就失效了,需要重新从关联 Secret 解出新 Token 再填。本质就是"凭证+地址+网络"三要素排查,和我们排查任何带认证的系统接入是一样的方法论。(约 200 字)
Q6:如果让你给别人讲 BCS 边缘自治版部署,你会强调哪三个最容易出错的地方? 答:第一,物料和密钥管理——bcs_config.tar 丢了系统就废,必须先备份再操作,密钥文件要 base64 解码后放对路径,证书要同步到所有管理面节点;第二,镜像和架构匹配——ARM 环境必须用 aarch64 软件包,数据面加载镜像要排除 edge-manager 前缀的管理面镜像,混了架构或混了平面镜像,Pod 直接起不来;第三,部署顺序和升级纪律——必须 K8s 和数据库都就绪再装 BCS,升级窗口内禁止组织/联盟操作,变更前确认没有进行中的任务。这三条都是我在银行环境实操里一条条踩过、写进标准文档的。(约 220 字)
Q7:BCS 的监控你们怎么做的? 答:BCS 边缘自治版自带监控组件:部署顺序是先解压 monitor 资源包,给目标节点打 monitor 标签做调度约束,跑 deploy.sh 之后在 monitor 命名空间起 Prometheus 2.33.5 + Node Exporter 1.3.1,kubectl get svc -n monitor 拿到访问端口。这套监控覆盖平台和节点的指标。我的日常巡检就是三步:看 BCS 管理平台页面上各组织节点状态、看 monitor 命名空间里 Prometheus 的 Target 和告警、看 K8s 层 Pod 分布是否正常——平台层、监控层、容器层三层交叉验证。(约 200 字)
Q8:客户问"这个区块链平台安全吗",你怎么答? 答:我会分四层答:第一层身份安全——联盟链是许可制,组织和节点全部证书准入,没有匿名参与;第二层数据安全——整套系统在客户内网,数据不出行,BCS 边缘自治版部署后不依赖外部云;第三层传输安全——全链路 TLS,我们连平台和 BCS 对接的证书都做了格式管理(crt/key 转 p12 给 Java 服务);第四层操作安全——管理面有独立管理员账号和首登改密策略,操作有审计。这个回答的套路是"把'安全吗'这种开放问题拆成可验证的层次",这是我在银行驻场学到的应答方式——不喊口号,讲机制。(约 230 字)
Q9:你部署的时候数据库用 MySQL 行不行? 答:edgetool db-init 的 db_type 参数同时支持 mysql 和 postgresql 两种,所以纯技术上可行。但我们的方案配套表定的是 Vastbase(openGauss 系),走 postgresql 通道——原因一是信创要求全栈国产化,二是 openGauss 对鲲鹏 ARM 的原生适配,三是整套华为生态的配套认证。我能说清"技术上可以、配套上必须"这两层的区别——生产环境选型从来不是单点技术问题,是配套体系问题。(约 190 字)
Q10:这个项目里 BCS 部分你花了多久?遇到问题怎么解决的? 答:纯 BCS 部分(监控+管理面+数据面纳管)在环境和包都就绪的情况下两三个工作日能完成;但加上前置的 K8s 搭建、数据库就绪和后面的应用联调,整条链路是数周级的工程。遇到问题我的解决路径是:先查部署指南的步骤是不是漏了(八成问题在这),再看 Pod/容器日志和 kubectl 事件,能定位的自己处理;涉及产品内部行为(比如 edge-manager 内部报错)就收集日志走华为工单——我在项目里和华为原厂建立了顺畅的协作通道。这个答案体现的是"有自己排查能力+知道边界在哪+会借力生态",正是渠道商实施工程师的定位。(约 230 字)
Q11:上线之后 BCS 这套系统的日常运维你做什么? 答:我的日常巡检分三层:平台层——每天看 BCS 管理平台 30000 控制台,确认各组织节点状态、系统告警;容器层——巡检 K8s 集群,node 就绪率、Pod 重启次数、资源水位,重点盯 edge-manager 和数据面业务 Pod;监控层——看 monitor 命名空间的 Prometheus 指标和告警规则有没有触发。异常处理按"一线二线"分工:安装配置类、网络类、证书过期类这些我在一线直接处理;产品内部故障(比如管理服务内部异常、链节点数据问题)收集日志转华为原厂二线。每季度配合客户做一次高可用演练(重启节点验证服务自愈)。(约 220 字)
Q12:如果 BCS 平台页面打不开,你怎么排查? 答:按"从入口往里、从网络到应用"的顺序:① 先确认客户端到管理面 VIP 的网络通不通(ping/telnet 30000 端口);② 端口不通看 30000 服务对应的 Pod——kubectl 查 edge-manager 是否 Running、有没有 OOM 重启;③ Pod 不健康往下看事件和日志(ImagePull/挂载/健康检查失败各有特征);④ 再看 K8s 本身——apiserver/VIP/负载均衡是否正常(这是我自己搭的,最熟);⑤ 最后看依赖——Vastbase 是否可用、证书是否过期。这套顺序和排查自研平台登录问题一脉相承,五分钟内能定位到层,然后该我修的修、该转原厂的收集日志转原厂。(约 220 字)
5.8 易混淆词辨析(考前 30 秒过一遍)
| 词 | 一句话辨析 |
|---|---|
| 数字人民币 e-CNY | 央行数字法定货币,M0,本项目的业务对象 |
| 加密货币 | 比特币等去中心化虚拟资产,与数币性质根本不同 |
| 智能合约 | 以代码执行合同条款的可信机制,数币可编程性的实现方式 |
| 链代码 chaincode | Fabric 体系里智能合约的叫法,同一个东西 |
| 区块链 | 分布式账本技术;联盟链=许可制多方账本,是承载选项之一 |
| BaaS | Blockchain as a Service,区块链即服务,BCS 属于这一类 |
| BCS | 华为云区块链服务(BaaS 产品名) |
| BCS 边缘自治版/BCS-Site | BCS 的客户内网部署形态,部署后脱离华为云自治运行 |
| edge-manager | BCS 边缘自治版的管理服务组件,以 Pod 运行在管理面 |
| edgetool | BCS 边缘自治版部署工具(create-esn/db-init 等) |
| ESN/配置码 | 设备序列号→换授权码,边缘自治版的 license 机制 |
| 双离线支付 | 收付双方都无网时靠安全芯片完成的数币支付 |
与其他章节的联动:数据库细节→第 4 章(Vastbase);K8s 高可用与证书 SAN→主宝典 K8s 章+项目笔记;毕昇 JDK→第 6 章;管理平面/业务平面双网络→第 7 章;全栈选型逻辑与"照文档装理解多深"→第 8 章问答集。
5.9 章末自测(一句话答案)
- 数字人民币的货币定位? → M0(流通中现金的数字化形态),央行负债、无限法偿。
- 数币运营体系叫什么? → 双层运营:央行→指定运营机构(商业银行 100% 准备金兑换)→公众。
- 数字人民币白皮书全称和发布时间? → 《中国数字人民币的研发进展》,2021 年 7 月,人民银行数字人民币研发工作组发布。
- "数币+智能合约≠区块链"怎么理解? → 智能合约是可信执行机制,不是必须上链;区块链只是承载选项之一。
- 数币智能合约最典型的预付费场景? → 预付资金监管:资金锁定在合约里,按履约条件分次释放(教培/租房等)。
- BCS 全称和产品形态? → Blockchain Service,华为云区块链服务(BaaS),含 Fabric 增强版/自研引擎/边缘自治版。
- 边缘自治版"边缘"和"自治"分别指什么? → 部署在客户内网(华为云之外);部署后脱离华为云独立运行。
- BCS 边缘自治版的授权机制? → mgmt0 生成 ESN → 华为云侧换配置码 → 导入激活。
- 管理面/数据面规模? → 管理面 3 节点(mgmt0/1/2,edge-manager),数据面 6 节点(1 组织至少 1 节点)。
- 管理平台访问方式和端口? → https://<管理面VIP>:30000,首次登录强制改密。
- edgetool 部署五连命令? → create-esn → db-init → create-deploy-material → deploy.sh(升级对应 create-upgrade-material → upgrade.sh)。
- 数据面纳管用什么认证? → ServiceAccount(edge-admin)的 Token,从关联 Secret base64 解出,Web 界面"纳管集群"填入。
- BCS 平台自身数据存在哪? → 外部数据库(我们用 Vastbase,db-init 初始化),链上账本在节点本地,两者分开。
- bcs_config.tar 的红线? → 提前备份妥善保管,丢失导致系统无法使用。
- 升级期间的纪律? → 禁止组织创建/删除/加入联盟等操作,确认无进行中变更任务再继续。
- 软硬钱包区别? → 软钱包是 App 形态;硬钱包把密钥放安全芯片(卡/穿戴/手机 SE),支持双离线"碰一碰"。
- Fabric 交易三段式? → 背书(执行不落账+签名)→ 排序(全局排序出块)→ 记账(验证后写本地账本)。
- 自研平台对接 BCS 用什么证书格式? → BCS 管理员证书 crt/key 转 p12(PKCS12)给 Java 服务。
- 链代码和智能合约的关系? → 同一件事的两个叫法,链代码(chaincode)是 Fabric 体系对智能合约的称呼。
- 数币智能合约管理平台的部署链路五步? → 毕昇 JDK → 建库导数(vsql)→ Redis 编译部署 → 后端 jar+证书转 p12 → Nginx 编译+HTTPS+反代。
- 预付资金监管合约的核心机制? → 资金锁定在合约中,按履约条件分次自动释放,异常按条款回退,全程上链存证。
- 世界状态是什么? → 账本的"当前值快照",与只追加的交易历史共同构成完整账本。
- 上线验收十项清单里最容易被忽略的三项? → 高可用验证、监控告警验证、文档与培训交付——不只看功能通。
- db-init 的 db_type 支持哪两种? → mysql 和 postgresql,我们走 postgresql(Vastbase/openGauss 系)。
- edge-manager 镜像谁加载? → 管理面节点加载(docker load -i edge-manager-xxx.tar.gz);数据面脚本要排除 edge-manager 前缀。
- 本章脱敏红线两条? → 不报内网 IP/访问地址/仓库域名;被追问就说"客户内网信息,签了保密协议"。
参考资料(链接采集时间:2026-10)
- 华为云区块链服务 BCS 产品页(产品定位、Fabric 增强版/华为云区块链引擎/数字资产链,已核实可达):https://www.huaweicloud.com/product/bcs.html (用途:产品页)
- 华为云帮助中心·区块链服务 BCS 文档(成长地图/使用指南入口,已核实可达):https://support.huaweicloud.com/bcs/ (用途:文档中心)
- 区块链边缘自治版服务(BCS-Site)1.10.0 使用指南(华为企业支持官网,经官网域检索核实;页面为 JS 渲染,如打不开按路径"support.huawei.com → 搜索 BCS-Site"):https://support.huawei.com/enterprise/it/doc/EDOC1100307421 (用途:边缘自治版官方用户指南)
- 人民银行官网·数字人民币专题互动答复(指引阅读《中国数字人民币的研发进展》白皮书,检索核实):https://wzdt.pbc.gov.cn/eportal/ui?pageId=77c3557bd521439ea5cd869f5393ba98&msgDataId=78899fb018e9401fa52c34db6deab1f2 (用途:白皮书官方指引)
- 新华网:央行首次详解数字人民币研发情况(2021-07,白皮书权威报道):http://www.news.cn/money/20210719/b29dc7c222654bef9da77ef1cc046d18/c.html (用途:白皮书背景佐证)
- Hyperledger Fabric 官网(联盟链/组织/链代码概念源头;现 301 跳转至 LF Decentralized Trust 官网,均已核实):https://www.hyperledger.org/use/fabric (用途:概念参考)
- 本章一手素材:《智能合约引擎安装部署指南 v2.1》"BCS 边缘自治版本部署"章节(内部文档,脱敏使用);《面试案例-项目一》第六节数币业务八股。
本章收尾自检:能脱稿讲"数币三句话+智能合约≠区块链+BCS 边缘自治选型逻辑"=必背层过关;能画管理面/数据面并讲完 edgetool 命令链=理解层过关;被问共识/内核能按 5.6 兜底节奏接住=诚实层过关。三关全过,本章的面试收益就已到手。