diff --git a/explorer/src/components/instruction/system/SystemDetailsCard.tsx b/explorer/src/components/instruction/system/SystemDetailsCard.tsx index 267f8a5ecc..12b0d1a3bc 100644 --- a/explorer/src/components/instruction/system/SystemDetailsCard.tsx +++ b/explorer/src/components/instruction/system/SystemDetailsCard.tsx @@ -17,6 +17,7 @@ import { NonceInitializeDetailsCard } from "./NonceInitializeDetailsCard"; import { NonceAdvanceDetailsCard } from "./NonceAdvanceDetailsCard"; import { NonceWithdrawDetailsCard } from "./NonceWithdrawDetailsCard"; import { NonceAuthorizeDetailsCard } from "./NonceAuthorizeDetailsCard"; +import { TransferWithSeedDetailsCard } from "./TransferWithSeedDetailsCard"; import { ParsedInfo } from "validators"; import { coerce } from "superstruct"; import { reportError } from "utils/sentry"; @@ -32,6 +33,7 @@ import { AuthorizeNonceInfo, InitializeNonceInfo, WithdrawNonceInfo, + TransferWithSeedInfo, } from "./types"; type DetailsProps = { @@ -91,6 +93,10 @@ export function SystemDetailsCard(props: DetailsProps) { const info = coerce(parsed.info, InitializeNonceInfo); return ; } + case "transferWithSeed": { + const info = coerce(parsed.info, TransferWithSeedInfo); + return ; + } default: return ; } diff --git a/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx b/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx new file mode 100644 index 0000000000..355536e4ab --- /dev/null +++ b/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx @@ -0,0 +1,82 @@ +import React from "react"; +import { + SystemProgram, + SignatureResult, + ParsedInstruction, +} from "@solana/web3.js"; +import { lamportsToSolString } from "utils"; +import { InstructionCard } from "../InstructionCard"; +import { Copyable } from "components/common/Copyable"; +import { Address } from "components/common/Address"; +import { TransferWithSeedInfo } from "./types"; + +export function TransferWithSeedDetailsCard(props: { + ix: ParsedInstruction; + index: number; + result: SignatureResult; + info: TransferWithSeedInfo; + innerCards?: JSX.Element[]; + childIndex?: number; +}) { + const { ix, index, result, info, innerCards, childIndex } = props; + + return ( + + + Program + +
+ + + + + From Address + +
+ + + + + Destination Address + +
+ + + + + Base Address + +
+ + + + + Transfer Amount (SOL) + {lamportsToSolString(info.lamports)} + + + + Seed + + + {info.sourceSeed} + + + + + + Source Owner + +
+ + + + ); +} diff --git a/explorer/src/components/instruction/system/types.ts b/explorer/src/components/instruction/system/types.ts index 171fed122b..ee34f5a31e 100644 --- a/explorer/src/components/instruction/system/types.ts +++ b/explorer/src/components/instruction/system/types.ts @@ -111,5 +111,5 @@ export const SystemInstructionType = enums([ "withdrawNonce", "authorizeNonce", "initializeNonce", - // "transferWithSeed", TODO: Add support for transfer with seed + "transferWithSeed", ]);