diff --git a/.changeset/mighty-parrots-tell.md b/.changeset/mighty-parrots-tell.md new file mode 100644 index 0000000000..a9c1c05b48 --- /dev/null +++ b/.changeset/mighty-parrots-tell.md @@ -0,0 +1,6 @@ +--- +"@layerzerolabs/ua-devtools-evm-hardhat": patch +"@layerzerolabs/devtools": patch +--- + +solana transaction data display as base58 diff --git a/packages/devtools/src/transactions/format.ts b/packages/devtools/src/transactions/format.ts index a29de96e42..e4b91fdc14 100644 --- a/packages/devtools/src/transactions/format.ts +++ b/packages/devtools/src/transactions/format.ts @@ -1,5 +1,28 @@ import { OmniTransaction } from './types' import { formatEid } from '@/omnigraph/format' +import { ChainType, endpointIdToChainType } from '@layerzerolabs/lz-definitions' +import bs58 from 'bs58' + +/** + * Helper to check if an endpoint ID is for Solana + */ +const isSolanaEid = (eid: number): boolean => endpointIdToChainType(eid) === ChainType.SOLANA + +/** + * Format transaction data for display. + * Converts hex to base58 for Solana transactions. + */ +const formatTransactionData = (data: string, eid: number): string => { + if (!isSolanaEid(eid)) { + return data + } + + // Convert hex string to base58 for Solana + // Remove '0x' prefix if present + const hexData = data.startsWith('0x') ? data.slice(2) : data + const bytes = Uint8Array.from(Buffer.from(hexData, 'hex')) + return bs58.encode(bytes) +} export const formatOmniTransaction = ( transaction: OmniTransaction @@ -10,7 +33,7 @@ export const formatOmniTransaction = ( 'Function Name': transaction.metadata?.functionName, 'Function Arguments': transaction.metadata?.functionArgs, Description: transaction.description, - Data: transaction.data, + Data: formatTransactionData(transaction.data, transaction.point.eid), Value: transaction.value, 'Gas Limit': transaction.gasLimit, }) diff --git a/packages/ua-devtools-evm-hardhat/src/tasks/oapp/wire/index.ts b/packages/ua-devtools-evm-hardhat/src/tasks/oapp/wire/index.ts index 4d345fd153..112d2a9e8d 100644 --- a/packages/ua-devtools-evm-hardhat/src/tasks/oapp/wire/index.ts +++ b/packages/ua-devtools-evm-hardhat/src/tasks/oapp/wire/index.ts @@ -9,7 +9,7 @@ import { createGnosisSignerFactory, createSignerFactory, } from '@layerzerolabs/devtools-evm-hardhat' -import { createWireFlow } from '@layerzerolabs/devtools' +import { createWireFlow, formatOmniTransaction } from '@layerzerolabs/devtools' import { printLogo } from '@layerzerolabs/io-devtools/swag' import type { SignAndSendResult } from '@layerzerolabs/devtools' @@ -110,7 +110,7 @@ const action: ActionType = async ( signAndSend: ({ transactions }) => { if (outputFilename) { logger.debug(`Writing transactions to ${outputFilename}`) - writeFileSync(outputFilename, JSON.stringify(transactions, null, 2)) + writeFileSync(outputFilename, JSON.stringify(transactions.map(formatOmniTransaction), null, 2)) } return hre.run(signAndSendSubtask, { ci,