interconnection


Nameinterconnection JSON
Version 0.2.0.dev0 PyPI version JSON
download
home_pagehttps://github.com/secretflow/interconnection
SummaryInterconnection aims to define standard interconnection protocols for multi-layers in privacy-preserving computing.
upload_time2024-03-20 08:32:30
maintainerNone
docs_urlNone
authorSecretFlow Team
requires_pythonNone
licenseApache 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 隐私计算平台开放算法协议

## 背景

本仓库用于存放隐私计算平台开放算法协议接口,旨在将算法接口通过程序化设计语言 Protobuf 更加全面、精确地表述出来,帮助隐私计算平台开发者更好地实施互联互通改造,促进隐私计算算法的互联互通。

协议文档地址:[https://www.secretflow.org.cn/docs/interconnection/](https://www.secretflow.org.cn/docs/interconnection/)

本仓库接口符合北京金融科技产业联盟(简称:金科联盟)隐私计算跨平台互联互通团体标准、信通院牵头隐私计算联盟互联互通团体标准要求,其中握手协商部分两个标准略有差异:

- 金科联盟标准定义了完整的隐私计算平台框架,算法组件运行所需的配置全部由管理层的工作流配置模块(原名 DAG&CONF 模块)下发,因此不再需要握手协议
- 隐私计算联盟标准并未对算法组件之外的其它模块做过多假设,因此所有算法均有握手协商过程,从而提升开放算法独立部署、运行的可行性

隐语采用可选的握手协商过程,从而同时兼容两大标准。至于开放算法的协议主体在两联盟的标准中一致。

<table>
    <tr>
        <td></td>
        <td>金科联盟标准</td>
        <td>隐私计算联盟标准</td>
        <td>本仓库</td>
    <tr>
    <tr>
        <td>算法运行参数</td>
        <td>由管理层工作流配置模块下发</td>
        <td>参与方运行握手协商协议自行对齐参数</td>
        <td>定义了完整的握手协商接口,如对方采用金科联盟方式,可跳过此部分接口</td>
    <tr>
    <tr>
        <td>算法协议主体</td>
        <td colspan="2" style="text-align: center;">协议流程、接口一致</td>
        <td>定义了完整的协议主体运行所需接口</td>
    <tr>
</table>

### 相关仓库

| 仓库                                                                              | 说明                                 |
|---------------------------------------------------------------------------------|------------------------------------|
| [InterOp](https://github.com/secretflow/interop)                                | 金科联盟互联互通研究成果官方仓库                   |
| [caict-ppca/privacy-computing](https://github.com/caict-ppca/privacy-computing) | 隐私计算联盟互联互通研究成果官方仓库                 |
| [interconnection](https://github.com/secretflow/interconnection) (本仓库)          | 隐语收集、定义的互联互通开放算法协议接口、文档            |
| [interconnection-impl](https://github.com/secretflow/interconnection-impl)      | 互联互通开放算法协议的参考实现,支持 Python & C++ 语言 |

注: 仓库排名不分先后

## Interconnection 仓库结构

```
.
├── PPCA   # 存放隐私计算联盟归口的标准协议文件副本
├── docs   # 文档网站的网页源代码
└── interconnection    # 所有接口文件
    ├── common     # 通用的接口定义
    ├── handshake  # 所有握手协议相关接口
    │   ├── algos  # 算法层的握手协议接口
    │   ├── op     # 安全算子层的握手协议接口
    │   └── protocol_family    # 密码协议层的握手协议接口
    ├── legacy     # 目前已经废弃的接口文件
    ├── link       # 传输层接口
    ├── runtime    # 算法运行主体所用的接口
    └── service    # 访问第三方公共基础服务所用的接口

```

当前已经定义的互联互通协议(接口)有:

- [ECDH-PSI 协议](./PPCA/open-protocols/ECDH-PSI.pdf)
- [SS-LR 协议](./PPCA/open-protocols/SS-LR.pdf)
- [SGB 协议](./PPCA/open-protocols/SGB.pdf)

注:本仓库收集、存放的互联互通接口仅为金科联盟、隐私计算联盟标准的子集,完整的接口、文档请参考各联盟的官方仓库。

## 握手协议设计范式

隐私计算联盟所有算法协议都包含握手协议和算法主体两部分,其中握手协议用于对齐算法版本、算法运行所需参数等,并遵循一些统一的范式:

1. 所有算法都复用同一套握手协议,即所有算法的握手请求都用的是 `interconnection/handshake/entry.proto` 中定义的 `HandshakeRequest`,所有算法的握手协商结果都使用 `HandshakeResponse` 格式。
2. 对于多个参与方的算法,我们为每个参与方赋予一个编号,称为 rank,rank 的数值从 0 开始依次递增。
3. 握手协议执行时,由非 0 参与方向 rank-0 发送 `HandshakeRequest`,rank-0 汇总所有参与方的请求后,得出一组公共参数,依次发送 `HandshakeResponse`,如果参数协商失败,则依次发送错误消息。
4. `HandshakeRequest` 中每一类具体的参数项,其命名风格一般为 XxxProposal,`HandshakeResponse` 中选定的参数项,其命名风格一般为 XxxResult。
5. 对于某些连续数值型参数,例如深度学习中的 learning_rate 等,我们假设无论参数选择几对功能无影响,对方都应该支持,这一类参数不需要协商,而是由 rank-0 选定一个数值,在 `HandshakeResponse` 中发给大家。
6. 对于一些可枚举的功能性参数,`HandshakeRequest` 用一个列表表示,表示发送者支持列表所列的功能;并且这个列表是有序的,表示发送者更加偏爱列表中靠前的参数。例如 ECDH-PSI 中的椭圆曲线(EC)类型,假如请求列表是 `[SM2, CURVE25519]`,则表示发送者同时支持 SM2 和 CURVE25519,如果其他参与方也同时支持这两种 EC,则协商者应当优先选择 SM2, 因为 SM2 排在前面。当然,如果多个参数方发送的列表顺序是矛盾的,协商者会优先满足大多数参与方的偏爱。


## 算法协议与传输层关系

算法协议中提到的 proto 一般并不直接用于 RPC 框架,而是用作跨语言、跨版本的序列化、反序列化工具使用。传输层只负责传输裸的二进制 buffer,不感知具体的 proto 格式,下图是一个示例:

```
 ┌─────────────┐                 ┌─────────────┐
 │  Algorithm  │                 │  Algorithm  │
 └──────┬──────┘                 └──────▲──────┘
        │Serialize                      │
        │proto                          │Deserialize
        │to buffer                      │buffer
 ┌──────▼──────┐                 ┌──────┴──────┐
 │  Transport  │     buffer      │  Transport  │
 │    layer    ├────────────────►│    layer    │
 └─────────────┘   http(s)/rpc   └─────────────┘
```

示例图:

1. 左侧的算法将 proto 序列化成 buffer,提交给传输层
2. 左侧传输层通过网络将数据发送到右侧传输层模块
3. 右侧算法获取传输层中的 buffer,反序列化成 proto

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/secretflow/interconnection",
    "name": "interconnection",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "SecretFlow Team",
    "author_email": "secretflow-contact@service.alipay.com",
    "download_url": null,
    "platform": null,
    "description": "# \u9690\u79c1\u8ba1\u7b97\u5e73\u53f0\u5f00\u653e\u7b97\u6cd5\u534f\u8bae\n\n## \u80cc\u666f\n\n\u672c\u4ed3\u5e93\u7528\u4e8e\u5b58\u653e\u9690\u79c1\u8ba1\u7b97\u5e73\u53f0\u5f00\u653e\u7b97\u6cd5\u534f\u8bae\u63a5\u53e3\uff0c\u65e8\u5728\u5c06\u7b97\u6cd5\u63a5\u53e3\u901a\u8fc7\u7a0b\u5e8f\u5316\u8bbe\u8ba1\u8bed\u8a00 Protobuf \u66f4\u52a0\u5168\u9762\u3001\u7cbe\u786e\u5730\u8868\u8ff0\u51fa\u6765\uff0c\u5e2e\u52a9\u9690\u79c1\u8ba1\u7b97\u5e73\u53f0\u5f00\u53d1\u8005\u66f4\u597d\u5730\u5b9e\u65bd\u4e92\u8054\u4e92\u901a\u6539\u9020\uff0c\u4fc3\u8fdb\u9690\u79c1\u8ba1\u7b97\u7b97\u6cd5\u7684\u4e92\u8054\u4e92\u901a\u3002\n\n\u534f\u8bae\u6587\u6863\u5730\u5740\uff1a[https://www.secretflow.org.cn/docs/interconnection/](https://www.secretflow.org.cn/docs/interconnection/)\n\n\u672c\u4ed3\u5e93\u63a5\u53e3\u7b26\u5408\u5317\u4eac\u91d1\u878d\u79d1\u6280\u4ea7\u4e1a\u8054\u76df\uff08\u7b80\u79f0\uff1a\u91d1\u79d1\u8054\u76df\uff09\u9690\u79c1\u8ba1\u7b97\u8de8\u5e73\u53f0\u4e92\u8054\u4e92\u901a\u56e2\u4f53\u6807\u51c6\u3001\u4fe1\u901a\u9662\u7275\u5934\u9690\u79c1\u8ba1\u7b97\u8054\u76df\u4e92\u8054\u4e92\u901a\u56e2\u4f53\u6807\u51c6\u8981\u6c42\uff0c\u5176\u4e2d\u63e1\u624b\u534f\u5546\u90e8\u5206\u4e24\u4e2a\u6807\u51c6\u7565\u6709\u5dee\u5f02\uff1a\n\n- \u91d1\u79d1\u8054\u76df\u6807\u51c6\u5b9a\u4e49\u4e86\u5b8c\u6574\u7684\u9690\u79c1\u8ba1\u7b97\u5e73\u53f0\u6846\u67b6\uff0c\u7b97\u6cd5\u7ec4\u4ef6\u8fd0\u884c\u6240\u9700\u7684\u914d\u7f6e\u5168\u90e8\u7531\u7ba1\u7406\u5c42\u7684\u5de5\u4f5c\u6d41\u914d\u7f6e\u6a21\u5757\uff08\u539f\u540d DAG&CONF \u6a21\u5757\uff09\u4e0b\u53d1\uff0c\u56e0\u6b64\u4e0d\u518d\u9700\u8981\u63e1\u624b\u534f\u8bae\n- \u9690\u79c1\u8ba1\u7b97\u8054\u76df\u6807\u51c6\u5e76\u672a\u5bf9\u7b97\u6cd5\u7ec4\u4ef6\u4e4b\u5916\u7684\u5176\u5b83\u6a21\u5757\u505a\u8fc7\u591a\u5047\u8bbe\uff0c\u56e0\u6b64\u6240\u6709\u7b97\u6cd5\u5747\u6709\u63e1\u624b\u534f\u5546\u8fc7\u7a0b\uff0c\u4ece\u800c\u63d0\u5347\u5f00\u653e\u7b97\u6cd5\u72ec\u7acb\u90e8\u7f72\u3001\u8fd0\u884c\u7684\u53ef\u884c\u6027\n\n\u9690\u8bed\u91c7\u7528\u53ef\u9009\u7684\u63e1\u624b\u534f\u5546\u8fc7\u7a0b\uff0c\u4ece\u800c\u540c\u65f6\u517c\u5bb9\u4e24\u5927\u6807\u51c6\u3002\u81f3\u4e8e\u5f00\u653e\u7b97\u6cd5\u7684\u534f\u8bae\u4e3b\u4f53\u5728\u4e24\u8054\u76df\u7684\u6807\u51c6\u4e2d\u4e00\u81f4\u3002\n\n<table>\n    <tr>\n        <td></td>\n        <td>\u91d1\u79d1\u8054\u76df\u6807\u51c6</td>\n        <td>\u9690\u79c1\u8ba1\u7b97\u8054\u76df\u6807\u51c6</td>\n        <td>\u672c\u4ed3\u5e93</td>\n    <tr>\n    <tr>\n        <td>\u7b97\u6cd5\u8fd0\u884c\u53c2\u6570</td>\n        <td>\u7531\u7ba1\u7406\u5c42\u5de5\u4f5c\u6d41\u914d\u7f6e\u6a21\u5757\u4e0b\u53d1</td>\n        <td>\u53c2\u4e0e\u65b9\u8fd0\u884c\u63e1\u624b\u534f\u5546\u534f\u8bae\u81ea\u884c\u5bf9\u9f50\u53c2\u6570</td>\n        <td>\u5b9a\u4e49\u4e86\u5b8c\u6574\u7684\u63e1\u624b\u534f\u5546\u63a5\u53e3\uff0c\u5982\u5bf9\u65b9\u91c7\u7528\u91d1\u79d1\u8054\u76df\u65b9\u5f0f\uff0c\u53ef\u8df3\u8fc7\u6b64\u90e8\u5206\u63a5\u53e3</td>\n    <tr>\n    <tr>\n        <td>\u7b97\u6cd5\u534f\u8bae\u4e3b\u4f53</td>\n        <td colspan=\"2\" style=\"text-align: center;\">\u534f\u8bae\u6d41\u7a0b\u3001\u63a5\u53e3\u4e00\u81f4</td>\n        <td>\u5b9a\u4e49\u4e86\u5b8c\u6574\u7684\u534f\u8bae\u4e3b\u4f53\u8fd0\u884c\u6240\u9700\u63a5\u53e3</td>\n    <tr>\n</table>\n\n### \u76f8\u5173\u4ed3\u5e93\n\n| \u4ed3\u5e93                                                                              | \u8bf4\u660e                                 |\n|---------------------------------------------------------------------------------|------------------------------------|\n| [InterOp](https://github.com/secretflow/interop)                                | \u91d1\u79d1\u8054\u76df\u4e92\u8054\u4e92\u901a\u7814\u7a76\u6210\u679c\u5b98\u65b9\u4ed3\u5e93                   |\n| [caict-ppca/privacy-computing](https://github.com/caict-ppca/privacy-computing) | \u9690\u79c1\u8ba1\u7b97\u8054\u76df\u4e92\u8054\u4e92\u901a\u7814\u7a76\u6210\u679c\u5b98\u65b9\u4ed3\u5e93                 |\n| [interconnection](https://github.com/secretflow/interconnection) (\u672c\u4ed3\u5e93\uff09          | \u9690\u8bed\u6536\u96c6\u3001\u5b9a\u4e49\u7684\u4e92\u8054\u4e92\u901a\u5f00\u653e\u7b97\u6cd5\u534f\u8bae\u63a5\u53e3\u3001\u6587\u6863            |\n| [interconnection-impl](https://github.com/secretflow/interconnection-impl)      | \u4e92\u8054\u4e92\u901a\u5f00\u653e\u7b97\u6cd5\u534f\u8bae\u7684\u53c2\u8003\u5b9e\u73b0\uff0c\u652f\u6301 Python & C++ \u8bed\u8a00 |\n\n\u6ce8: \u4ed3\u5e93\u6392\u540d\u4e0d\u5206\u5148\u540e\n\n## Interconnection \u4ed3\u5e93\u7ed3\u6784\n\n```\n.\n\u251c\u2500\u2500 PPCA   # \u5b58\u653e\u9690\u79c1\u8ba1\u7b97\u8054\u76df\u5f52\u53e3\u7684\u6807\u51c6\u534f\u8bae\u6587\u4ef6\u526f\u672c\n\u251c\u2500\u2500 docs   # \u6587\u6863\u7f51\u7ad9\u7684\u7f51\u9875\u6e90\u4ee3\u7801\n\u2514\u2500\u2500 interconnection    # \u6240\u6709\u63a5\u53e3\u6587\u4ef6\n    \u251c\u2500\u2500 common     # \u901a\u7528\u7684\u63a5\u53e3\u5b9a\u4e49\n    \u251c\u2500\u2500 handshake  # \u6240\u6709\u63e1\u624b\u534f\u8bae\u76f8\u5173\u63a5\u53e3\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 algos  # \u7b97\u6cd5\u5c42\u7684\u63e1\u624b\u534f\u8bae\u63a5\u53e3\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 op     # \u5b89\u5168\u7b97\u5b50\u5c42\u7684\u63e1\u624b\u534f\u8bae\u63a5\u53e3\n    \u2502\u00a0\u00a0 \u2514\u2500\u2500 protocol_family    # \u5bc6\u7801\u534f\u8bae\u5c42\u7684\u63e1\u624b\u534f\u8bae\u63a5\u53e3\n    \u251c\u2500\u2500 legacy     # \u76ee\u524d\u5df2\u7ecf\u5e9f\u5f03\u7684\u63a5\u53e3\u6587\u4ef6\n    \u251c\u2500\u2500 link       # \u4f20\u8f93\u5c42\u63a5\u53e3\n    \u251c\u2500\u2500 runtime    # \u7b97\u6cd5\u8fd0\u884c\u4e3b\u4f53\u6240\u7528\u7684\u63a5\u53e3\n    \u2514\u2500\u2500 service    # \u8bbf\u95ee\u7b2c\u4e09\u65b9\u516c\u5171\u57fa\u7840\u670d\u52a1\u6240\u7528\u7684\u63a5\u53e3\n\n```\n\n\u5f53\u524d\u5df2\u7ecf\u5b9a\u4e49\u7684\u4e92\u8054\u4e92\u901a\u534f\u8bae\uff08\u63a5\u53e3\uff09\u6709:\n\n- [ECDH-PSI \u534f\u8bae](./PPCA/open-protocols/ECDH-PSI.pdf)\n- [SS-LR \u534f\u8bae](./PPCA/open-protocols/SS-LR.pdf)\n- [SGB \u534f\u8bae](./PPCA/open-protocols/SGB.pdf)\n\n\u6ce8\uff1a\u672c\u4ed3\u5e93\u6536\u96c6\u3001\u5b58\u653e\u7684\u4e92\u8054\u4e92\u901a\u63a5\u53e3\u4ec5\u4e3a\u91d1\u79d1\u8054\u76df\u3001\u9690\u79c1\u8ba1\u7b97\u8054\u76df\u6807\u51c6\u7684\u5b50\u96c6\uff0c\u5b8c\u6574\u7684\u63a5\u53e3\u3001\u6587\u6863\u8bf7\u53c2\u8003\u5404\u8054\u76df\u7684\u5b98\u65b9\u4ed3\u5e93\u3002\n\n## \u63e1\u624b\u534f\u8bae\u8bbe\u8ba1\u8303\u5f0f\n\n\u9690\u79c1\u8ba1\u7b97\u8054\u76df\u6240\u6709\u7b97\u6cd5\u534f\u8bae\u90fd\u5305\u542b\u63e1\u624b\u534f\u8bae\u548c\u7b97\u6cd5\u4e3b\u4f53\u4e24\u90e8\u5206\uff0c\u5176\u4e2d\u63e1\u624b\u534f\u8bae\u7528\u4e8e\u5bf9\u9f50\u7b97\u6cd5\u7248\u672c\u3001\u7b97\u6cd5\u8fd0\u884c\u6240\u9700\u53c2\u6570\u7b49\uff0c\u5e76\u9075\u5faa\u4e00\u4e9b\u7edf\u4e00\u7684\u8303\u5f0f\uff1a\n\n1. \u6240\u6709\u7b97\u6cd5\u90fd\u590d\u7528\u540c\u4e00\u5957\u63e1\u624b\u534f\u8bae\uff0c\u5373\u6240\u6709\u7b97\u6cd5\u7684\u63e1\u624b\u8bf7\u6c42\u90fd\u7528\u7684\u662f `interconnection/handshake/entry.proto` \u4e2d\u5b9a\u4e49\u7684 `HandshakeRequest`\uff0c\u6240\u6709\u7b97\u6cd5\u7684\u63e1\u624b\u534f\u5546\u7ed3\u679c\u90fd\u4f7f\u7528 `HandshakeResponse` \u683c\u5f0f\u3002\n2. \u5bf9\u4e8e\u591a\u4e2a\u53c2\u4e0e\u65b9\u7684\u7b97\u6cd5\uff0c\u6211\u4eec\u4e3a\u6bcf\u4e2a\u53c2\u4e0e\u65b9\u8d4b\u4e88\u4e00\u4e2a\u7f16\u53f7\uff0c\u79f0\u4e3a rank\uff0crank \u7684\u6570\u503c\u4ece 0 \u5f00\u59cb\u4f9d\u6b21\u9012\u589e\u3002\n3. \u63e1\u624b\u534f\u8bae\u6267\u884c\u65f6\uff0c\u7531\u975e 0 \u53c2\u4e0e\u65b9\u5411 rank-0 \u53d1\u9001 `HandshakeRequest`\uff0crank-0 \u6c47\u603b\u6240\u6709\u53c2\u4e0e\u65b9\u7684\u8bf7\u6c42\u540e\uff0c\u5f97\u51fa\u4e00\u7ec4\u516c\u5171\u53c2\u6570\uff0c\u4f9d\u6b21\u53d1\u9001 `HandshakeResponse`\uff0c\u5982\u679c\u53c2\u6570\u534f\u5546\u5931\u8d25\uff0c\u5219\u4f9d\u6b21\u53d1\u9001\u9519\u8bef\u6d88\u606f\u3002\n4. `HandshakeRequest` \u4e2d\u6bcf\u4e00\u7c7b\u5177\u4f53\u7684\u53c2\u6570\u9879\uff0c\u5176\u547d\u540d\u98ce\u683c\u4e00\u822c\u4e3a XxxProposal\uff0c`HandshakeResponse` \u4e2d\u9009\u5b9a\u7684\u53c2\u6570\u9879\uff0c\u5176\u547d\u540d\u98ce\u683c\u4e00\u822c\u4e3a XxxResult\u3002\n5. \u5bf9\u4e8e\u67d0\u4e9b\u8fde\u7eed\u6570\u503c\u578b\u53c2\u6570\uff0c\u4f8b\u5982\u6df1\u5ea6\u5b66\u4e60\u4e2d\u7684 learning_rate \u7b49\uff0c\u6211\u4eec\u5047\u8bbe\u65e0\u8bba\u53c2\u6570\u9009\u62e9\u51e0\u5bf9\u529f\u80fd\u65e0\u5f71\u54cd\uff0c\u5bf9\u65b9\u90fd\u5e94\u8be5\u652f\u6301\uff0c\u8fd9\u4e00\u7c7b\u53c2\u6570\u4e0d\u9700\u8981\u534f\u5546\uff0c\u800c\u662f\u7531 rank-0 \u9009\u5b9a\u4e00\u4e2a\u6570\u503c\uff0c\u5728 `HandshakeResponse` \u4e2d\u53d1\u7ed9\u5927\u5bb6\u3002\n6. \u5bf9\u4e8e\u4e00\u4e9b\u53ef\u679a\u4e3e\u7684\u529f\u80fd\u6027\u53c2\u6570\uff0c`HandshakeRequest` \u7528\u4e00\u4e2a\u5217\u8868\u8868\u793a\uff0c\u8868\u793a\u53d1\u9001\u8005\u652f\u6301\u5217\u8868\u6240\u5217\u7684\u529f\u80fd\uff1b\u5e76\u4e14\u8fd9\u4e2a\u5217\u8868\u662f\u6709\u5e8f\u7684\uff0c\u8868\u793a\u53d1\u9001\u8005\u66f4\u52a0\u504f\u7231\u5217\u8868\u4e2d\u9760\u524d\u7684\u53c2\u6570\u3002\u4f8b\u5982 ECDH-PSI \u4e2d\u7684\u692d\u5706\u66f2\u7ebf(EC)\u7c7b\u578b\uff0c\u5047\u5982\u8bf7\u6c42\u5217\u8868\u662f `[SM2, CURVE25519]`\uff0c\u5219\u8868\u793a\u53d1\u9001\u8005\u540c\u65f6\u652f\u6301 SM2 \u548c CURVE25519\uff0c\u5982\u679c\u5176\u4ed6\u53c2\u4e0e\u65b9\u4e5f\u540c\u65f6\u652f\u6301\u8fd9\u4e24\u79cd EC\uff0c\u5219\u534f\u5546\u8005\u5e94\u5f53\u4f18\u5148\u9009\u62e9 SM2, \u56e0\u4e3a SM2 \u6392\u5728\u524d\u9762\u3002\u5f53\u7136\uff0c\u5982\u679c\u591a\u4e2a\u53c2\u6570\u65b9\u53d1\u9001\u7684\u5217\u8868\u987a\u5e8f\u662f\u77db\u76fe\u7684\uff0c\u534f\u5546\u8005\u4f1a\u4f18\u5148\u6ee1\u8db3\u5927\u591a\u6570\u53c2\u4e0e\u65b9\u7684\u504f\u7231\u3002\n\n\n## \u7b97\u6cd5\u534f\u8bae\u4e0e\u4f20\u8f93\u5c42\u5173\u7cfb\n\n\u7b97\u6cd5\u534f\u8bae\u4e2d\u63d0\u5230\u7684 proto \u4e00\u822c\u5e76\u4e0d\u76f4\u63a5\u7528\u4e8e RPC \u6846\u67b6\uff0c\u800c\u662f\u7528\u4f5c\u8de8\u8bed\u8a00\u3001\u8de8\u7248\u672c\u7684\u5e8f\u5217\u5316\u3001\u53cd\u5e8f\u5217\u5316\u5de5\u5177\u4f7f\u7528\u3002\u4f20\u8f93\u5c42\u53ea\u8d1f\u8d23\u4f20\u8f93\u88f8\u7684\u4e8c\u8fdb\u5236 buffer\uff0c\u4e0d\u611f\u77e5\u5177\u4f53\u7684 proto \u683c\u5f0f\uff0c\u4e0b\u56fe\u662f\u4e00\u4e2a\u793a\u4f8b\uff1a\n\n```\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510                 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502  Algorithm  \u2502                 \u2502  Algorithm  \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518                 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u25b2\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n        \u2502Serialize                      \u2502\n        \u2502proto                          \u2502Deserialize\n        \u2502to buffer                      \u2502buffer\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2510                 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502  Transport  \u2502     buffer      \u2502  Transport  \u2502\n \u2502    layer    \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25ba\u2502    layer    \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   http(s)/rpc   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n\u793a\u4f8b\u56fe\uff1a\n\n1. \u5de6\u4fa7\u7684\u7b97\u6cd5\u5c06 proto \u5e8f\u5217\u5316\u6210 buffer\uff0c\u63d0\u4ea4\u7ed9\u4f20\u8f93\u5c42\n2. \u5de6\u4fa7\u4f20\u8f93\u5c42\u901a\u8fc7\u7f51\u7edc\u5c06\u6570\u636e\u53d1\u9001\u5230\u53f3\u4fa7\u4f20\u8f93\u5c42\u6a21\u5757\n3. \u53f3\u4fa7\u7b97\u6cd5\u83b7\u53d6\u4f20\u8f93\u5c42\u4e2d\u7684 buffer\uff0c\u53cd\u5e8f\u5217\u5316\u6210 proto\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Interconnection aims to define standard interconnection protocols for multi-layers in privacy-preserving computing.",
    "version": "0.2.0.dev0",
    "project_urls": {
        "Homepage": "https://github.com/secretflow/interconnection"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7580ad75f728f9df64be915e98a374a182067d897263ee769fd2c1b8cf30deb0",
                "md5": "5be9f942181f7f98db3794a130c8247b",
                "sha256": "d64e6dff498e9c3f781c200f1033c83b56ff5a5d344f79822bd04c040c15ce07"
            },
            "downloads": -1,
            "filename": "interconnection-0.2.0.dev0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5be9f942181f7f98db3794a130c8247b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 23749,
            "upload_time": "2024-03-20T08:32:30",
            "upload_time_iso_8601": "2024-03-20T08:32:30.945812Z",
            "url": "https://files.pythonhosted.org/packages/75/80/ad75f728f9df64be915e98a374a182067d897263ee769fd2c1b8cf30deb0/interconnection-0.2.0.dev0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-20 08:32:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "secretflow",
    "github_project": "interconnection",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "circle": true,
    "requirements": [],
    "lcname": "interconnection"
}
        
Elapsed time: 4.54587s