Skip to content

Commit

Permalink
Update dependency to 5.0.1, and add ERC4906 support
Browse files Browse the repository at this point in the history
  • Loading branch information
Amxx committed Jan 15, 2024
1 parent cbf254d commit aae39cb
Show file tree
Hide file tree
Showing 14 changed files with 68 additions and 29 deletions.
4 changes: 2 additions & 2 deletions generated/all.schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,8 @@ type Proposal @entity {
governor: Governor!
proposalId: BigInt!
proposer: Account!
startBlock: BigInt!
endBlock: BigInt!
voteStart: BigInt!
voteEnd: BigInt!
description: String!
eta: BigInt
canceled: Boolean!
Expand Down
2 changes: 1 addition & 1 deletion generated/erc1967upgrade.subgraph.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ dataSources:
- ERC1967
abis:
- name: ERC1967
file: ../node_modules/@openzeppelin/contracts/build/contracts/ERC1967Upgrade.json
file: ../node_modules/@openzeppelin/contracts/build/contracts/IERC1967.json
eventHandlers:
- event: AdminChanged(address,address)
handler: handleAdminChanged
Expand Down
4 changes: 2 additions & 2 deletions generated/governor.schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ type Proposal @entity {
governor: Governor!
proposalId: BigInt!
proposer: Account!
startBlock: BigInt!
endBlock: BigInt!
voteStart: BigInt!
voteEnd: BigInt!
description: String!
eta: BigInt
canceled: Boolean!
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
},
"dependencies": {
"@amxx/graphprotocol-utils": "^1.1.0",
"@openzeppelin/contracts": "^4.8.1"
"@openzeppelin/contracts": "^5.0.1"
},
"devDependencies": {
"@graphprotocol/graph-cli": "^0.65.0",
Expand Down
2 changes: 1 addition & 1 deletion src/datasources/erc1967upgrade.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- ERC1967
abis:
- name: ERC1967
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/ERC1967Upgrade.json
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IERC1967.json
eventHandlers:
- event: AdminChanged(address,address)
handler: handleAdminChanged
Expand Down
39 changes: 36 additions & 3 deletions src/datasources/erc721.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
import {
Address,
BigInt,
} from '@graphprotocol/graph-ts'

import {
ERC721Transfer,
} from '../../generated/schema'

import {
Approval as ApprovalEvent,
ApprovalForAll as ApprovalForAllEvent,
Transfer as TransferEvent,
IERC721,
Approval as ApprovalEvent,
ApprovalForAll as ApprovalForAllEvent,
Transfer as TransferEvent,
} from '../../generated/erc721/IERC721'

import {
MetadataUpdate as MetadataUpdateEvent,
BatchMetadataUpdate as BatchMetadataUpdateEvent,
} from '../../generated/erc721/IERC4906'

import {
events,
transactions,
Expand Down Expand Up @@ -99,3 +106,29 @@ export function handleApprovalForAll(event: ApprovalForAllEvent): void {
// ev.save()
}
}

export function handleMetadataUpdate(event: MetadataUpdateEvent) : void {
let contract = fetchERC721(event.address)
if (contract != null) {
let erc721 = IERC721.bind(Address.fromBytes(contract.id))

let token = fetchERC721Token(contract, event.params._tokenId)
let try_tokenURI = erc721.try_tokenURI(event.params._tokenId)
token.uri = try_tokenURI.reverted ? '' : try_tokenURI.value
token.save()
}
}

export function handleBatchMetadataUpdate(event: BatchMetadataUpdateEvent) : void {
let contract = fetchERC721(event.address)
if (contract != null) {
let erc721 = IERC721.bind(Address.fromBytes(contract.id))

for (let tokenId = event.params._fromTokenId.toU64(); tokenId <= event.params._toTokenId.toU64(); ++tokenId) {
let token = fetchERC721Token(contract, BigInt.fromU64(tokenId))
let try_tokenURI = erc721.try_tokenURI(BigInt.fromU64(tokenId))
token.uri = try_tokenURI.reverted ? '' : try_tokenURI.value
token.save()
}
}
}
8 changes: 7 additions & 1 deletion src/datasources/erc721.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
network: {chain}
source:
address: "{address}"
abi: IERC721
abi: IERC4906
startBlock: {startBlock}
mapping:
kind: ethereum/events
Expand All @@ -14,11 +14,17 @@
abis:
- name: IERC721
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IERC721Metadata.json
- name: IERC4906
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IERC4906.json
eventHandlers:
- event: Approval(indexed address,indexed address,indexed uint256)
handler: handleApproval
- event: ApprovalForAll(indexed address,indexed address,bool)
handler: handleApprovalForAll
- event: Transfer(indexed address,indexed address,indexed uint256)
handler: handleTransfer
- event: MetadataUpdate(uint256)
handler: handleMetadataUpdate
- event: BatchMetadataUpdate(uint256,uint256)
handler: handleBatchMetadataUpdate
file: {file}
4 changes: 2 additions & 2 deletions src/datasources/governor.gql.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
{ "name": "governor", "type": "Governor!" },
{ "name": "proposalId", "type": "BigInt!" },
{ "name": "proposer", "type": "Account!" },
{ "name": "startBlock", "type": "BigInt!" },
{ "name": "endBlock", "type": "BigInt!" },
{ "name": "voteStart", "type": "BigInt!" },
{ "name": "voteEnd", "type": "BigInt!" },
{ "name": "description", "type": "String!" },
{ "name": "eta", "type": "BigInt" },
{ "name": "canceled", "type": "Boolean!" },
Expand Down
8 changes: 4 additions & 4 deletions src/datasources/governor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ export function handleProposalCreated(event: ProposalCreatedEvent): void {

let proposal = fetchProposal(governor, event.params.proposalId)
proposal.proposer = fetchAccount(event.params.proposer).id
proposal.startBlock = event.params.startBlock
proposal.endBlock = event.params.endBlock
proposal.voteStart = event.params.voteStart
proposal.voteEnd = event.params.voteEnd
proposal.description = event.params.description
proposal.save()

Expand Down Expand Up @@ -76,7 +76,7 @@ export function handleProposalQueued(event: ProposalQueuedEvent): void {

let proposal = fetchProposal(governor, event.params.proposalId)
proposal.queued = true
proposal.eta = event.params.eta
proposal.eta = event.params.etaSeconds
proposal.save()

let ev = new ProposalQueued(events.id(event))
Expand All @@ -85,7 +85,7 @@ export function handleProposalQueued(event: ProposalQueuedEvent): void {
ev.timestamp = event.block.timestamp
ev.governor = governor.id
ev.proposal = proposal.id
ev.eta = event.params.eta
ev.eta = event.params.etaSeconds
ev.save()
}

Expand Down
2 changes: 1 addition & 1 deletion src/datasources/governor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- Governor
abis:
- name: Governor
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IGovernorTimelock.json
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IGovernor.json
eventHandlers:
- event: ProposalCanceled(uint256)
handler: handleProposalCanceled
Expand Down
8 changes: 4 additions & 4 deletions src/datasources/voting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ export function handleDelegateVotesChanged(event: DelegateVotesChangedEvent): vo
const total = fetchWeight(contract, null)
const weigth = fetchWeight(contract, delegate)

total.value = total.value.minus(event.params.previousBalance).plus(event.params.newBalance)
weigth.value = event.params.newBalance
total.value = total.value.minus(event.params.previousVotes).plus(event.params.newVotes)
weigth.value = event.params.newVotes

total.save()
weigth.save()
Expand All @@ -65,7 +65,7 @@ export function handleDelegateVotesChanged(event: DelegateVotesChangedEvent): vo
ev.voteWeight = weigth.id
ev.contract = contract.id
ev.delegate = delegate.id
ev.oldValue = event.params.previousBalance
ev.newValue = event.params.newBalance
ev.oldValue = event.params.previousVotes
ev.newValue = event.params.newVotes
ev.save()
}
2 changes: 1 addition & 1 deletion src/datasources/voting.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- Voting
abis:
- name: Voting
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IVotes.json
file: {root}/node_modules/@openzeppelin/contracts/build/contracts/IERC5805.json
eventHandlers:
- event: DelegateChanged(indexed address,indexed address,indexed address)
handler: handleDelegateChanged
Expand Down
4 changes: 2 additions & 2 deletions src/fetch/governor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ export function fetchProposal(contract: Governor, proposalId: BigInt): Proposal
proposal.governor = contract.id
proposal.proposalId = proposalId
proposal.proposer = Address.zero()
proposal.startBlock = BigInt.zero()
proposal.endBlock = BigInt.zero()
proposal.voteStart = BigInt.zero()
proposal.voteEnd = BigInt.zero()
proposal.description = ""
proposal.canceled = false
proposal.queued = false
Expand Down

0 comments on commit aae39cb

Please sign in to comment.