-
Notifications
You must be signed in to change notification settings - Fork 10
IP-1188: fix failing subgraph #174
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
IP-1188: fix failing subgraph #174
Conversation
WalkthroughUpdated multiple subgraph ABIs (IPToken, TermsAcceptedPermissioner, Tokenizer), bumped subgraph deploy version label, added guarded JSON parsing/validation to Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Client
participant Tokenizer
participant IIPToken as IIPToken (tokenContract)
participant Wrapped as WrappedIPToken
Note over Client,Tokenizer #E8F1FF: New attach/wrap flow (ABI additions)
Client->>Tokenizer: attachIpt(ipnftId, agreementCid, signedAgreement, tokenContract)
Tokenizer->>IIPToken: validate tokenContract / synthesized(...)
alt tokenContract valid
IIPToken-->>Tokenizer: synthesized(address)
Tokenizer->>Wrapped: setWrappedIPTokenImplementation(addr) / wrappedTokenImplementation()
Tokenizer-->>Client: return wrappedIpt address
Tokenizer-->>Tokenizer: emit TokenWrapped / WrappedIPTokenImplementationUpdated
else invalid tokenContract
Tokenizer-->>Client: revert InvalidTokenContract or InvalidTokenDecimals
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (1)
🧰 Additional context used🧠 Learnings (3)📓 Common learnings📚 Learning: 2024-10-08T19:40:07.111ZApplied to files:
📚 Learning: 2024-10-08T19:40:07.111ZApplied to files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
Comment |
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: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
subgraph/src/metadataMapping.ts (1)
109-109: Remove redundant save() call to avoid double-write.Line 109 unconditionally calls
ipnftMetadata.save(), but Line 45 already saves the entity when all required fields are present. This results in:
- Double-save when all fields exist (performance/efficiency issue)
- Save with partial data when required fields are missing (data integrity concern)
Apply this diff to remove the redundant save:
} } - ipnftMetadata.save() } }The entity is already saved at Line 45 when the required fields (
name,image,description,externalURL) are present. The properties extraction (lines 50-108) happens after that save, updating optional fields. If you intend to save the optional properties updates, the save should be conditional on whether any properties were actually updated.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (5)
subgraph/abis/IPToken.json(1 hunks)subgraph/abis/TermsAcceptedPermissioner.json(3 hunks)subgraph/abis/Tokenizer.json(9 hunks)subgraph/package.json(1 hunks)subgraph/src/metadataMapping.ts(2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-10-08T19:40:07.111Z
Learnt from: elmariachi111
PR: moleculeprotocol/IPNFT#166
File: subgraph/src/metadataMapping.ts:8-18
Timestamp: 2024-10-08T19:40:07.111Z
Learning: In `subgraph/src/metadataMapping.ts`, the code is written in AssemblyScript, which cannot use advanced JavaScript features.
Applied to files:
subgraph/src/metadataMapping.ts
📚 Learning: 2024-10-08T19:40:07.111Z
Learnt from: elmariachi111
PR: moleculeprotocol/IPNFT#166
File: subgraph/src/metadataMapping.ts:8-18
Timestamp: 2024-10-08T19:40:07.111Z
Learning: The NFT metadata standard requires all fields (`image`, `name`, `description`, `external_url`) to be present, and this is validated by a different service before the entity goes onto the chain.
Applied to files:
subgraph/src/metadataMapping.ts
🔇 Additional comments (6)
subgraph/abis/TermsAcceptedPermissioner.json (1)
9-9: LGTM! Type references updated consistently.The internalType updates from
IPTokentoIIPTokenare consistent across all three occurrences and align with the broader ABI type updates in this PR.Also applies to: 32-32, 97-97
subgraph/abis/IPToken.json (1)
196-196: LGTM! Parameter naming follows convention.The underscore suffix (
name_,symbol_) is a standard convention to avoid shadowing state variables in the contract implementation.Also applies to: 201-201
subgraph/src/metadataMapping.ts (1)
1-30: Excellent defensive JSON parsing!The added validation layers effectively handle edge cases:
- Empty content check prevents processing invalid data
- JSON format validation (checking for
{or[) provides early detectiontry_fromByteswith proper error handling prevents parsing failuresThis aligns well with the PR objective to add error handling for null metadata.
subgraph/abis/Tokenizer.json (3)
7-40: LGTM! Comprehensive token wrapping functionality added.The new functions for token wrapping are well-structured:
attachIpt: Creates wrapped token from existing ERC20setWrappedIPTokenImplementation: Updates the wrapped token implementationwrappedTokenImplementation: Queries current implementation- Updated
reinitto support wrapped token configurationAlso applies to: 183-187, 217-229, 332-344
244-244: LGTM! Type updates and new events are consistent.The ABI updates properly reflect:
- Type migration from
IPTokentoIIPTokenin existing declarations- New
TokenWrappedandWrappedIPTokenImplementationUpdatedevents for observability- Consistent use of
IIPTokenandWrappedIPTokencontract types throughoutAlso applies to: 385-385, 391-391, 447-465, 534-552
563-572: LGTM! Error types for validation added.The new error types
InvalidTokenContractandInvalidTokenDecimalsprovide clear failure modes for token wrapping validation.
8b46419 to
d86bf3e
Compare
…ling if the metadata is null and deploy a new version for sepolia and mainnet
d86bf3e to
281c9df
Compare
0xmme
left a comment
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.
🔥
Summary by CodeRabbit
New Features
Bug Fixes
Chores