考虑以下示例:
假设我有一个用 C 语言编写的函数 ADD,它将两个整数 int A 和 int B 相加并返回总和 C。现在,我想验证我的函数 ADD 使用以太坊区块链是否正确工作。
为此,我在以太坊区块链上部署了一个简单的智能合约,它有一个名为Verify ((A,B),C) 的函数,如果验证成立则返回 true,否则返回 false。对于此验证,我想将两个参数传递给验证函数。第一个参数应该是输入,第二个参数将是我的 ADD 函数的输出。
验证函数将在 (A,B) 上执行,生成输出 C' 并将其与 C 进行比较。如果 C'== C,则返回 true,否则返回 false。现在,对于上面的例子,我的问题如下:
- 如何将我的 C 程序的编译二进制代码转换为 EVM 代码?换句话说,如果我将 (A,B,0) 视为状态 1 输出,将 (A,B,C) 视为 C 程序的状态 2 输出,那么如何将每个状态转换为 EVM 字节码,以便 EVM从 state1 开始执行并在 state2 结束?