基于Pinocchio的zkVM——Pinocchio Lambda VM

1. 引言

Lambdaclass团队主要关注ZKP和全同态加密技术。

Lambdaclass团队基于2013年论文《Pinocchio: Nearly Practical Verifiable Computation》实现了一种zero-knowledge Virtual Machine,开源代码见:

以如下可验证计算对应的circuit为例:
在这里插入图片描述
其中:

  • c 1 , c 2 c_1,c_2 c1,c2为输入
  • c 3 c_3 c3为输出
  • c 4 c_4 c4为中间变量

可 以R1CS(Rank-1 Constraint System)来表示。

参考资料

[1] Pinocchio Virtual Machine: Nearly Practical Verifiable Computation

### Pinocchio简介及其应用 Pinocchio 是一个多刚体动力学计算的开源库,支持 C++ 和 Python 编程语言[^3]。它广泛应用于机器人领域,特别是在仿真和控制方面。通过该库可以实现高效的前向和反向动力学计算、惯性参数估计以及运动规划等功能。 #### Pinocchio的主要功能 - **高效的动力学计算**:提供快速的关节空间和操作空间的动力学求解器。 - **丰富的接口支持**:兼容多种编程环境,尤其是 Python 接口使得科研人员能够更便捷地开发算法并进行测试。 - **易于集成**:可以通过 `CMake` 配置文件轻松引入到项目中[^2],从而与其他工具链无缝衔接。 #### PyBullet联合调试案例 为了进一步扩展其能力范围,在某些情况下会将 Pinocchio 与物理引擎如 PyBullet 结合起来使用。这种组合允许开发者构建更加真实的模拟场景来验证理论模型的有效性。具体来说,存在一个名为 pinocchio_bullet_wrapper.py 的脚本用于促进两者之间的交互过程[^1]。 以下是简单的代码片段展示如何初始化此类封装类对象: ```python from pinocchio.robot_wrapper import RobotWrapper import pybullet as p class BulletRobot(RobotWrapper): def __init__(self, urdfName): self.client = p.connect(p.DIRECT) super(BulletRobot,self).__init__("/path/to/urdfs/" + urdfName) robot = BulletRobot('my_robot.urdf') print(robot.model) ``` 上述例子展示了创建自定义子类继承自标准 RobotWrapper 类型,并重写构造函数以便加载特定URDF描述文档的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值