-
Notifications
You must be signed in to change notification settings - Fork 7
add transformFromOnchain function #30
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
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThe changes introduce structured, bidirectional transformations between internal proof representations and their on-chain equivalents. A new Changes
Sequence Diagram(s)sequenceDiagram
participant Internal as Internal System
participant Reclaim as Reclaim Module
participant OnChain as On-Chain System
Internal->>Reclaim: Provide Proof object
Reclaim->>Reclaim: transformForOnchain(Proof)
Reclaim->>OnChain: Send OnchainProof
OnChain->>Reclaim: Return OnchainProof
Reclaim->>Reclaim: transformFromOnchain(OnchainProof)
Reclaim->>Internal: Return Proof object
Suggested reviewers
Poem
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/Reclaim.ts (1)
109-151
: Hard-coded witness values may need reconsideration.The
transformFromOnchain
function successfully reconstructs aProof
object from anOnchainProof
. However, it uses hard-coded witness values which could become outdated or incorrect if witness configurations change.Also, consider simplifying the initialization approach by directly constructing objects with their values rather than creating empty objects first.
export function transformFromOnchain(onchainProof: OnchainProof): Proof { - - const claimData: ProviderClaimData = { - provider: '', - parameters: '', - owner: '', - timestampS: 0, - context: '', - identifier: '', - epoch: 0 - } - - let proof: Proof = { - identifier: '', - claimData, - signatures: [], - witnesses: [], - extractedParameterValues: undefined - } - - proof.signatures = onchainProof.signedClaim.signatures - proof.identifier = onchainProof.signedClaim.claim.identifier - - proof.claimData = { - provider: onchainProof.claimInfo.provider, - parameters: onchainProof.claimInfo.parameters, - context: onchainProof.claimInfo.context, - owner: onchainProof.signedClaim.claim.owner, - timestampS: onchainProof.signedClaim.claim.timestampS, - epoch: onchainProof.signedClaim.claim.epoch, - identifier: onchainProof.signedClaim.claim.identifier, - } - - proof.witnesses = [ - { - "id": "0x244897572368eadf65bfbc5aec98d8e5443a9072", - "url": "wss://attestor.reclaimprotocol.org/ws" - } - ] - - return proof + return { + identifier: onchainProof.signedClaim.claim.identifier, + signatures: onchainProof.signedClaim.signatures, + claimData: { + provider: onchainProof.claimInfo.provider, + parameters: onchainProof.claimInfo.parameters, + context: onchainProof.claimInfo.context, + owner: onchainProof.signedClaim.claim.owner, + timestampS: onchainProof.signedClaim.claim.timestampS, + epoch: onchainProof.signedClaim.claim.epoch, + identifier: onchainProof.signedClaim.claim.identifier + }, + witnesses: [ + { + "id": "0x244897572368eadf65bfbc5aec98d8e5443a9072", + "url": "wss://attestor.reclaimprotocol.org/ws" + } + ], + extractedParameterValues: undefined + }; }Additionally, consider adding a parameter for witness data or fetching it dynamically to avoid hard-coding.
Is there a mechanism to retrieve witness data dynamically based on the proof details?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/Reclaim.ts
(3 hunks)src/utils/interfaces.ts
(2 hunks)src/utils/types.ts
(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
src/utils/interfaces.ts (1)
src/utils/types.ts (2)
ClaimInfo
(7-7)OnchainSignedClaim
(18-21)
src/utils/types.ts (1)
src/utils/interfaces.ts (1)
ProviderClaimData
(24-32)
src/Reclaim.ts (2)
src/utils/interfaces.ts (3)
OnchainProof
(19-22)Proof
(4-12)ProviderClaimData
(24-32)src/utils/types.ts (3)
ClaimInfo
(7-7)CompleteClaimData
(11-11)OnchainSignedClaim
(18-21)
🔇 Additional comments (7)
src/utils/types.ts (2)
11-11
: Good update to include the identifier property.The
CompleteClaimData
type has been appropriately updated to include theidentifier
property fromProviderClaimData
. This addition is essential for bidirectional transformations between internal proof structures and on-chain representations.
18-21
: Good addition of the OnchainSignedClaim type.The new
OnchainSignedClaim
type mirrors the structure ofSignedClaim
but uses string arrays for signatures instead ofUint8Array[]
, which is appropriate for on-chain compatibility.src/utils/interfaces.ts (2)
1-1
: Clean import statement.Good job importing the necessary types from the types module, which keeps the code organized and maintainable.
19-22
: Well-structured OnchainProof interface.The new
OnchainProof
interface clearly defines the components required for on-chain proof representation, consisting ofclaimInfo
andsignedClaim
.src/Reclaim.ts (3)
1-1
: Good import update to include OnchainProof.The import statement has been correctly updated to include the new
OnchainProof
interface.
11-13
: Complete type imports added.The additional imports for
ClaimInfo
,CompleteClaimData
, andOnchainSignedClaim
from./utils/types
are appropriate for the new functionality.
153-174
: Well-structured transformation function.The
transformForOnchain
function properly constructs anOnchainProof
object from aProof
, ensuring the appropriate mapping of properties. The separation of concerns betweenclaimInfo
andsignedClaim
is clean and aligns well with theOnchainProof
interface.
Adds transformFromOnchain utility function
Updates transformForOnchain to use types
Summary by CodeRabbit
New Features
Improvements