-
Notifications
You must be signed in to change notification settings - Fork 5
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
Conversation
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); |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
@@ -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); |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
No description provided.