From f0da52546d1f0f5c9087f32f17a170a73bdd9ee6 Mon Sep 17 00:00:00 2001 From: Corey Rice Date: Wed, 25 Sep 2024 16:16:28 -0300 Subject: [PATCH] feat: save untrusted remote for completion and transparency --- subgraphs/venus-governance/schema.graphql | 2 +- .../src/operations/createRemoteProposals.ts | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/subgraphs/venus-governance/schema.graphql b/subgraphs/venus-governance/schema.graphql index ddcf0345..f7d5fa74 100644 --- a/subgraphs/venus-governance/schema.graphql +++ b/subgraphs/venus-governance/schema.graphql @@ -256,7 +256,7 @@ type RemoteProposal @entity { proposalId: BigInt "Remote ChainId where the proposal was sent" - trustedRemote: TrustedRemote + trustedRemote: TrustedRemote! "Targets data for the change" targets: [Bytes!] diff --git a/subgraphs/venus-governance/src/operations/createRemoteProposals.ts b/subgraphs/venus-governance/src/operations/createRemoteProposals.ts index bbc039a3..6f97bf98 100644 --- a/subgraphs/venus-governance/src/operations/createRemoteProposals.ts +++ b/subgraphs/venus-governance/src/operations/createRemoteProposals.ts @@ -1,8 +1,9 @@ import { Address, BigInt, Bytes, ethereum } from '@graphprotocol/graph-ts'; import { ProposalCreated as ProposalCreatedV2 } from '../../generated/GovernorBravoDelegate2/GovernorBravoDelegate2'; -import { RemoteProposal } from '../../generated/schema'; +import { RemoteProposal, TrustedRemote } from '../../generated/schema'; import { DYNAMIC_TUPLE_BYTES_PREFIX } from '../constants'; +import { nullAddress } from '../constants/addresses'; class RemoteCommandMap { sourceProposalId: BigInt; @@ -40,8 +41,16 @@ const createRemoteProposals = (event: ProposalCreatedV2): void => { Bytes.fromByteArray(Bytes.fromBigInt(acc.sourceProposalId)), ); const remoteProposal = new RemoteProposal(remoteProposalId); - - remoteProposal.trustedRemote = Bytes.fromI32(layerZeroChainId); // default value replaced in event handler + const trustRemoteId = Bytes.fromI32(layerZeroChainId); + let trustedRemote = TrustedRemote.load(trustRemoteId); + if (!trustedRemote) { + trustedRemote = new TrustedRemote(trustRemoteId); + trustedRemote.layerZeroChainId = layerZeroChainId; + trustedRemote.address = nullAddress; + trustedRemote.active = false; + trustedRemote.save(); + } + remoteProposal.trustedRemote = trustRemoteId; remoteProposal.sourceProposal = acc.sourceProposalId.toString(); const targets = payloadDecoded[0] .toAddressArray()