explorer: add support for upgrade nonce ix (#26007)

This commit is contained in:
Justin Starry 2022-06-16 15:51:45 +01:00 committed by GitHub
parent eacb9183d4
commit 8f51c2d985
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 0 deletions

View File

@ -18,6 +18,7 @@ import { NonceAdvanceDetailsCard } from "./NonceAdvanceDetailsCard";
import { NonceWithdrawDetailsCard } from "./NonceWithdrawDetailsCard";
import { NonceAuthorizeDetailsCard } from "./NonceAuthorizeDetailsCard";
import { TransferWithSeedDetailsCard } from "./TransferWithSeedDetailsCard";
import { UpgradeNonceDetailsCard } from "./UpgradeNonceDetailsCard";
import { ParsedInfo } from "validators";
import { create } from "superstruct";
import { reportError } from "utils/sentry";
@ -34,6 +35,7 @@ import {
InitializeNonceInfo,
WithdrawNonceInfo,
TransferWithSeedInfo,
UpgradeNonceInfo,
} from "./types";
type DetailsProps = {
@ -97,6 +99,10 @@ export function SystemDetailsCard(props: DetailsProps) {
const info = create(parsed.info, TransferWithSeedInfo);
return <TransferWithSeedDetailsCard info={info} {...props} />;
}
case "upgradeNonce": {
const info = create(parsed.info, UpgradeNonceInfo);
return <UpgradeNonceDetailsCard info={info} {...props} />;
}
default:
return <UnknownDetailsCard {...props} />;
}

View File

@ -0,0 +1,45 @@
import React from "react";
import {
SystemProgram,
SignatureResult,
ParsedInstruction,
} from "@solana/web3.js";
import { InstructionCard } from "../InstructionCard";
import { Address } from "components/common/Address";
import { UpgradeNonceInfo } from "./types";
export function UpgradeNonceDetailsCard(props: {
ix: ParsedInstruction;
index: number;
result: SignatureResult;
info: UpgradeNonceInfo;
innerCards?: JSX.Element[];
childIndex?: number;
}) {
const { ix, index, result, info, innerCards, childIndex } = props;
return (
<InstructionCard
ix={ix}
index={index}
result={result}
title="System Program: Upgrade Nonce"
innerCards={innerCards}
childIndex={childIndex}
>
<tr>
<td>Program</td>
<td className="text-lg-end">
<Address pubkey={SystemProgram.programId} alignRight link />
</td>
</tr>
<tr>
<td>Nonce Address</td>
<td className="text-lg-end">
<Address pubkey={info.nonceAccount} alignRight link />
</td>
</tr>
</InstructionCard>
);
}

View File

@ -96,6 +96,11 @@ export const TransferWithSeedInfo = type({
sourceOwner: PublicKeyFromString,
});
export type UpgradeNonceInfo = Infer<typeof UpgradeNonceInfo>;
export const UpgradeNonceInfo = type({
nonceAccount: PublicKeyFromString,
});
export type SystemInstructionType = Infer<typeof SystemInstructionType>;
export const SystemInstructionType = enums([
"createAccount",
@ -110,4 +115,5 @@ export const SystemInstructionType = enums([
"authorizeNonce",
"initializeNonce",
"transferWithSeed",
"upgradeNonce",
]);