microsoft/scitt-ccf-ledger
GitHub: microsoft/scitt-ccf-ledger
微软开源的供应链完整性透明度账本,基于 CCF 框架实现 IETF SCITT 标准,为数字供应链制品提供可验证的不可变签名声明注册与追溯。
Stars: 45 | Forks: 28
# scitt-ccf-ledger
[](https://github.com/microsoft/scitt-ccf-ledger/actions/workflows/build-test.yml) [](https://github-private.visualstudio.com/microsoft/_build/latest?definitionId=716&repoName=scitt-ccf-ledger-wrapper&branchName=master)
本仓库包含 scitt-ccf-ledger 的源代码,这是一个运行在 [CCF](https://github.com/microsoft/CCF) 之上的应用程序,实现了 IETF 内部制定的草案标准。请参阅 [SCITT 标准对齐](docs/scitt.md)。
scitt-ccf-ledger 的目的是为数字供应链中的制品提供透明的出处。它通过允许将有关制品的已签名声明提交到安全、不可变的账本中,并返回证明声明已被存储且已应用注册策略的收据来实现这一点。
本项目是开源的,以促进可审计性和学术合作。我们非常希望参与本项目的科研合作。请通过创建 issue 与我们联系并进行讨论。
## 快速开始
以下说明将指导您构建和部署 scitt-ccf-ledger 的本地实例,用于开发和测试目的。
作为 CCF 应用程序,scitt-ccf-ledger 主要面向 AMD SEV-SNP,但也支持在没有 TEE 支持的 x86-64 硬件上以所谓的*虚拟*模式运行。
以下所有说明均假定使用 Linux 操作系统,并且已安装 Docker 和 Python。
首先,在一个终端窗口中启动服务:
```
./docker/build.sh
./docker/run-dev.sh
# 输出将显示:
# ...
# 2025-11-06T13:10:51.559932Z 100 [info ] CCF/src/host/socket.h:49 | TCP RPC Client listening on 0.0.0.0:8000
# ...
# 2025-11-06T13:11:01.743871Z -0.012 0 [info ] CCF/src/node/rpc/frontend.h:949 | Opening frontend
# 2025-11-06T13:11:01.743882Z -0.012 0 [info ] CCF/src/node/node_state.h:2581 | Service open at seqno 9
# ...
```
然后,在**另一个终端**窗口中,您可以提交一个测试签名声明并获取透明声明:
```
# 使用在上一步中设置的 Python 虚拟环境
source venv/bin/activate
# 使用 CLI 提交测试 payload
scitt submit test/payloads/manifest.spdx.json.sha384.digest.cose --development --url "https://localhost:8000" --transparent-statement output.cose
# 2025-11-06 13:19:16.006 | DEBUG | pyscitt.client:request:469 - POST /entries 303
# 2025-11-06 13:19:18.009 | DEBUG | pyscitt.client:request:457 - Following 302 redirect to https://localhost:8000/entries/2.13
# 2025-11-06 13:19:20.012 | DEBUG | pyscitt.client:request:457 - Following 302 redirect to https://localhost:8000/entries/2.13
# 2025-11-06 13:19:20.015 | DEBUG | pyscitt.client:request:469 - GET https://localhost:8000/entries/2.13 (attempt #3) 200
# 2025-11-06 13:19:20.018 | DEBUG | pyscitt.client:request:469 - GET /entries/2.13/statement 200
# 已将 test/payloads/manifest.spdx.json.sha384.digest.cose 注册为 transaction 2.13
# 已接收 output.cose
```
或者,使用 `--wait-for-commit` 来阻塞直到事务被提交,并在单个请求中直接返回收据,而无需轮询:
```
scitt submit test/payloads/manifest.spdx.json.sha384.digest.cose --development --url "https://localhost:8000" --transparent-statement output.cose --wait-for-commit
# 2025-11-06 13:19:16.006 | DEBUG | pyscitt.client:request:402 - POST /entries?waitForCommit=true 200
# 已将 test/payloads/manifest.spdx.json.sha384.digest.cose 注册为 transaction 2.13
# 已接收 output.cose
```
## 支持的输入
请参阅 [inputs.md](./docs/inputs.md) 以了解您可以在服务中注册和存储的内容。
## 用法示例
请参阅 [demo/](demo/) 目录以获取启动和使用该服务的步骤。
## 开发和测试
请参阅 [DEVELOPMENT.md](DEVELOPMENT.md) 以获取有关构建、运行和测试 scitt-ccf-ledger 的说明。
## 可用客户端
请参阅 [clients.md](./docs/clients.md) 获取可与该服务交互的可用客户端列表。
## 配置
请参阅 [configuration.md](./docs/configuration.md) 获取有关如何配置注册策略和身份验证的说明。
## 复现构建
请参阅 [reproducibility.md](./docs/reproducibility.md) 获取有关复现构建的说明。
## 贡献
本项目欢迎贡献和建议。请参阅[贡献指南](CONTRIBUTING.md)。
### 商标
本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标受 Microsoft 商标和品牌指南的约束并必须遵循该指南。在修改后的本项目中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受这些第三方的政策约束。
标签:供应链溯源, 分布式账本, 区块链, 可信执行环境, 请求拦截, 逆向工具, 防篡改