基础配置推荐
MPC 计算包含本地 CPU 计算以及网络通信开销,不同的 MPC 协议对于 CPU 和网络通信的开销不同,以下为 SMN 套件基础推荐的配置。
💡
当开发者采购云厂商中间件时,请注意以下事项:
- Redis、MySQL 均需要多区可用,至少 1 个副本以确保数据的高可用
- SMN CA 和 SMN Service 需要采购支持 Intel SGX 的机器实例
- SMN CA、SMN Service、SMN Relayer 均需要部署不同可用区 2 台以上实例以确保服务高可用
SMN CA
SMN CA 仅 SMN 套件服务端内部使用,正常使用情况下没有性能压力,数据库和机器采用最小配置即可:
MySQL:1 CPU 2 GB RAM,多可用区主备部署,20 G 存储空间
服务器:2 CPU 8 GB RAM,50 G 硬盘空间
💡
请至少多可用区部署 2 台 CA,以确保服务正常授权和运行。
SMN Relayer
服务器:2 CPU 4 GB RAM,80 G 硬盘空间,2 台服务器
Redis:单机模式,多可用区主备部署,4G RAM,10000 最大连接数
SMN Service
服务器:2 CPU 8 GM RAM,80 G 硬盘空间,2 台服务器
MySQL:2 CPU 4 GB RAM,多可用区主备部署,100 G 存储空间
💡
SMN Service 接口和业务层面不存在调用并发限制,需要开发者根据实际业务场景,在开发者的后端服务调用 SMN Service 时考虑并发控制。
满足性能指标
以下性能指标为 MPC-CMP、EdDSA- Lin22、Schnorr-Lin22 2/3 门限下的指标,指标为在推荐的配置下仅针对某个算法的某个协议进行性能测试得到的结果,未考虑同一时间存在不同的任务类型和压力的情况。
并发数
在上述基础配置下,不同的 MPC 协议由于所需计算量不同,所以推荐的并发数不同,针对执行各协议的时间指标,主观认为用户可以在产品使用体验可接受范围内时,推荐开发者控制的并发数如下:
| MPC-CMP | EdDSA- Lin22 | Schnorr-Lin22 | |
| Keygen | 4 | 24 | 24 |
| Recover | 4 | 24 | 24 |
| Refresh | 4 | 24 | 24 |
| Sign | 8 | 48 | 48 |
吞吐量
在上述基础配置和推荐的并发数控制下,每个算法不同的协议每分钟平均完成的任务数如下(由于网络波动会造成多次压测测试结果的浮动,因此这里给出一个范围值,计算方式为一个时间段内全部完成的任务数除以总分钟数):
| MPC-CMP | EdDSA-Lin22 | Schnorr-Lin22 | |
| Keygen | 18~24 | 1750~1850 | 1750~1850 |
| Recover | 18~24 | 1750~1850 | 1750~1850 |
| Refresh | 18~24 | 1750~1850 | 1750~1850 |
| Sign | 280~320 | 4200~4400 | 4200~4400 |
时间指标
在上述基础配置和推荐的并发数控制下,每个算法不同的协议每个任务完成的时间指标 P95 和 P99 如下(表格中格式为: P95 指标, P99 指标,单位为秒):
| MPC-CMP | EdDSA-Lin22 | Schnorr-Lin22 | |
| Keygen | 16.9, 17.7 | 1.019, 1.071 | 1.036, 1.110 |
| Recover | 16.0, 16.2 | 1.019, 1.071 | 1.036, 1.110 |
| Refresh | 15.6, 16.7 | 1.019, 1.071 | 1.036, 1.110 |
| Sign | 1.979, 2.044 | 0.879, 0.991 | 1.061, 1.146 |
💡
SMN Relayer 和 SMN Service 通过横向扩容可以实现性能近似线性增长,开发者可以基于推荐配置计算满足自身业务需求的配置,并基于业务场景进行压测验证。