Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

events and data structures #14

Merged
merged 3 commits into from
Apr 12, 2024
Merged

events and data structures #14

merged 3 commits into from
Apr 12, 2024

Conversation

kitounliu
Copy link
Collaborator

No description provided.

require(IPseudoRand(pseudoRand).verifyPartialEval(currentX, pEval.value, pEval.proof, vkStored), "Verification of partial eval failed");
lastSubmittedRound[msg.sender] = currentRoundNum;
roundToEval[currentRoundNum][ppIndex] = pEval;
roundToEval[currentRoundNum].push(pEval);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mapping is more efficient than arrays, in terms of costs and also protects from a lot of bugs. Given these values are bulky I would be inclined towards map over arrays

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the partial evals need to be downloaded from the contract in order to generate final pseudorandom offchain. I found array easier for retrieving everything and then convert them to be the format that is required in rust (see line 147 in admin.ts). Beside pEval already has index inside the data structure and it doesn't need additional ppIndex. But i am open if you have better way of doing it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ideally accessing shouldn't be a lot different. But there might be ways to simplify at least some parts given the pp/pk changes. will take a look

contracts/zkdvrf.sol Show resolved Hide resolved
@@ -127,12 +145,14 @@ contract zkdvrf is Ownable {

addrToNode[msg.sender].statusPP = true;

uint32 nodeIndex = addrToNode[msg.sender].ppIndex;
ppList[nodeIndex] = pp;
ppList.push(pp);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but this assumes - actors will submit public params in the same order that their pk is registered on the contract?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from conversations - pp order is irrelevant to further generation of global public params

@kitounliu kitounliu merged commit 172d167 into main Apr 12, 2024
1 check passed
@kitounliu kitounliu deleted the events branch July 30, 2024 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants