Skip to content

Commit

Permalink
Add storage helper
Browse files Browse the repository at this point in the history
  • Loading branch information
fractasy committed May 28, 2024
1 parent dcec31e commit 03324ea
Show file tree
Hide file tree
Showing 9 changed files with 1,030 additions and 1,780 deletions.
895 changes: 33 additions & 862 deletions src/main_generator/main_generator_10.cpp

Large diffs are not rendered by default.

10 changes: 1 addition & 9 deletions src/main_sm/fork_10/helpers/arith_helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@ zkresult Arith_verify ( Context &ctx,
return ZKR_SM_MAIN_ARITH_MISMATCH;
}

#ifdef USE_REQUIRED
if (required != NULL)
{
ArithAction arithAction;
Expand Down Expand Up @@ -265,8 +264,6 @@ zkresult Arith_verify ( Context &ctx,

required->Arith.push_back(arithAction);
}
#endif

}
else if (((arithEquation >= ARITH_ECADD_DIFFERENT) && (arithEquation <= ARITH_BN254_SUBFP2)) ||
((arithEquation >= ARITH_BLS12381_MULFP2) && (arithEquation <= ARITH_BLS12381_SUBFP2)))
Expand Down Expand Up @@ -582,7 +579,6 @@ zkresult Arith_verify ( Context &ctx,
return ZKR_SM_MAIN_ARITH_MISMATCH;
}

#ifdef USE_REQUIRED
if (required != NULL)
{
ArithAction arithAction;
Expand Down Expand Up @@ -645,8 +641,6 @@ zkresult Arith_verify ( Context &ctx,

required->Arith.push_back(arithAction);
}
#endif

}
else if (arithEquation == ARITH_256TO384)
{
Expand Down Expand Up @@ -684,7 +678,6 @@ zkresult Arith_verify ( Context &ctx,
useCD = 0;
useE = 0;

#ifdef USE_REQUIRED
if (required != NULL)
{
ArithAction arithAction;
Expand Down Expand Up @@ -747,15 +740,14 @@ zkresult Arith_verify ( Context &ctx,

required->Arith.push_back(arithAction);
}
#endif
}
else
{
zklog.error("Arith_verify() invalid arithEquation=" + arith2string(arithEquation));
exitProcess();
}

if (required != NULL)
if (!ctx.bProcessBatch)
{
ctx.pols.arith[i] = fr.one();
ctx.pols.arithEquation[i] = fr.fromU64(arithEquation);
Expand Down
9 changes: 5 additions & 4 deletions src/main_sm/fork_10/helpers/binary_helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,21 +250,22 @@ zkresult Binary_verify ( Context &ctx,
}
}

if (required != NULL)
if (!ctx.bProcessBatch)
{
ctx.pols.bin[i] = fr.one();
ctx.pols.binOpcode[i] = fr.fromU64(binOpcode);
}

#ifdef USE_REQUIRED
if(required != NULL)
{
// Store the binary action to execute it later with the binary SM
BinaryAction binaryAction;
binaryAction.a = a;
binaryAction.b = b;
binaryAction.c = c;
binaryAction.opcode = binOpcode;
binaryAction.type = 1;
required.Binary.push_back(binaryAction);
#endif
required->Binary.push_back(binaryAction);
}

return ZKR_SUCCESS;
Expand Down
34 changes: 18 additions & 16 deletions src/main_sm/fork_10/helpers/memalign_helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,13 @@ zkresult Memalign_verify ( Context &ctx,
return ZKR_SM_MAIN_MEMALIGN_WRITE_MISMATCH;
}

if (required != NULL)
if (!ctx.bProcessBatch)
{
ctx.pols.memAlignWR[i] = fr.one();
}

#ifdef USE_REQUIRED
if (required != NULL)
{
MemAlignAction memAlignAction;
memAlignAction.m0 = m0;
memAlignAction.m1 = m1;
Expand All @@ -183,8 +185,7 @@ zkresult Memalign_verify ( Context &ctx,
memAlignAction.v = v;
memAlignAction.mode = mode;
memAlignAction.wr = 1;
required.MemAlign.push_back(memAlignAction);
#endif
required->MemAlign.push_back(memAlignAction);
}
}
else if ((ctx.rom.line[zkPC].memAlignRD == 1) && (ctx.rom.line[zkPC].memAlignWR == 0))
Expand Down Expand Up @@ -214,20 +215,21 @@ zkresult Memalign_verify ( Context &ctx,
zklog.error("Memalign_verify() MemAlign v invalid: v=" + v.get_str(16) + " _V=" + _v.get_str(16) + " m0=" + m0.get_str(16) + " m1=" + m1.get_str(16) + " mode=" + to_string(mode));
return ZKR_SM_MAIN_MEMALIGN_READ_MISMATCH;
}
if (required != NULL)
if (ctx.bProcessBatch)
{
ctx.pols.memAlignRD[i] = fr.one();
#ifdef USE_REQUIRED
MemAlignAction memAlignAction;
memAlignAction.m0 = m0;
memAlignAction.m1 = m1;
memAlignAction.w0 = 0;
memAlignAction.w1 = 0;
memAlignAction.v = v;
memAlignAction.mode = mode;
memAlignAction.wr = 0;
required.MemAlign.push_back(memAlignAction);
#endif
}
if (required != NULL)
{
MemAlignAction memAlignAction;
memAlignAction.m0 = m0;
memAlignAction.m1 = m1;
memAlignAction.w0 = 0;
memAlignAction.w1 = 0;
memAlignAction.v = v;
memAlignAction.mode = mode;
memAlignAction.wr = 0;
required->MemAlign.push_back(memAlignAction);
}
}
else
Expand Down
23 changes: 13 additions & 10 deletions src/main_sm/fork_10/helpers/memory_helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ zkresult Memory_verify ( Context &ctx,
zkassert(ctx.pStep != NULL);
uint64_t i = *ctx.pStep;

if (required != NULL) ctx.pols.mOp[i] = fr.one();

if ((required != NULL) && (ctx.rom.line[zkPC].memUseAddrRel == 1)) ctx.pols.memUseAddrRel[i] = fr.one();
if ((!ctx.bProcessBatch) && (ctx.rom.line[zkPC].memUseAddrRel == 1))
{
ctx.pols.memUseAddrRel[i] = fr.one();
}

// If MEMORY WRITE, store op in memory
if (ctx.rom.line[zkPC].mWR == 1)
Expand All @@ -65,7 +66,6 @@ zkresult Memory_verify ( Context &ctx,
ctx.mem[memAddr].fe6 = op6;
ctx.mem[memAddr].fe7 = op7;

#ifdef USE_REQUIRED
if (required != NULL)
{
MemoryAccess memoryAccess;
Expand All @@ -80,11 +80,13 @@ zkresult Memory_verify ( Context &ctx,
memoryAccess.fe5 = op5;
memoryAccess.fe6 = op6;
memoryAccess.fe7 = op7;
required.Memory.push_back(memoryAccess);
required->Memory.push_back(memoryAccess);
}
if (!ctx.bProcessBatch)
{
ctx.pols.mOp[i] = fr.one();
ctx.pols.mWR[i] = fr.one();
}
#endif
#ifdef LOG_MEMORY
zklog.info("Memory write mWR: memAddr:" + to_string(memAddr) + " " + fea2stringchain(fr, ctx.mem[memAddr].fe0, ctx.mem[memAddr].fe1, ctx.mem[memAddr].fe2, ctx.mem[memAddr].fe3, ctx.mem[memAddr].fe4, ctx.mem[memAddr].fe5, ctx.mem[memAddr].fe6, ctx.mem[memAddr].fe7));
#endif
Expand Down Expand Up @@ -115,8 +117,7 @@ zkresult Memory_verify ( Context &ctx,
value[6] = op6;
value[7] = op7;
}
#ifdef USE_REQUIRED
if (requested != NULL)
if (required != NULL)
{
MemoryAccess memoryAccess;
memoryAccess.bIsWrite = false;
Expand All @@ -130,10 +131,12 @@ zkresult Memory_verify ( Context &ctx,
memoryAccess.fe5 = value[5];
memoryAccess.fe6 = value[6];
memoryAccess.fe7 = value[7];
required.Memory.push_back(memoryAccess);
required->Memory.push_back(memoryAccess);
}
if (!ctx.bProcessBatch)
{
ctx.pols.mOp[i] = fr.one();
}
#endif
if (ctx.mem.find(memAddr) != ctx.mem.end())
{
if ( (!fr.equal(ctx.mem[memAddr].fe0, value[0])) ||
Expand Down
Loading

0 comments on commit 03324ea

Please sign in to comment.