Skip to content

Commit 20eb8cd

Browse files
committed
address comments, rename buildMessageForDest
1 parent b42e9ff commit 20eb8cd

File tree

8 files changed

+93
-75
lines changed

8 files changed

+93
-75
lines changed

ccip-cli/src/commands/send.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ async function sendMessage(
233233
}
234234

235235
// builds a catch-all extraArgs object, which can be massaged by
236-
// [[Chain.populateDefaultMessageForDest]] to create suitable extraArgs with defaults if needed
236+
// [[Chain.buildMessageForDest]] to create suitable extraArgs with defaults if needed
237237
const extraArgs = {
238238
...(argv.allowOutOfOrderExec != null && {
239239
allowOutOfOrderExecution: !!argv.allowOutOfOrderExec,

ccip-sdk/src/aptos/index.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ import { getUserTxByVersion, getVersionTimestamp, streamAptosLogs } from './logs
9090
import { getTokenInfo } from './token.ts'
9191
import type { CCIPMessage_V1_6_EVM } from '../evm/messages.ts'
9292
import {
93+
buildMessageForDest,
9394
decodeMessage,
9495
getMessageById,
9596
getMessagesInBatch,
9697
getMessagesInTx,
97-
populateDefaultMessageForDest,
9898
} from '../requests.ts'
9999
export type { UnsignedAptosTx }
100100

@@ -537,26 +537,29 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
537537
destChainSelector,
538538
message,
539539
}: Parameters<Chain['getFee']>[0]): Promise<bigint> {
540-
const message_ = populateDefaultMessageForDest(message, networkInfo(destChainSelector).family)
541-
return getFee(this.provider, router, destChainSelector, message_)
540+
const populatedMessage = buildMessageForDest(message, networkInfo(destChainSelector).family)
541+
return getFee(this.provider, router, destChainSelector, populatedMessage)
542542
}
543543

544544
/** {@inheritDoc Chain.generateUnsignedSendMessage} */
545545
async generateUnsignedSendMessage(
546546
opts: Parameters<Chain['generateUnsignedSendMessage']>[0],
547547
): Promise<UnsignedAptosTx> {
548-
opts.message = populateDefaultMessageForDest(
548+
const { sender, router, destChainSelector } = opts
549+
const populatedMessage = buildMessageForDest(
549550
opts.message,
550-
networkInfo(opts.destChainSelector).family,
551+
networkInfo(destChainSelector).family,
551552
)
552-
const { sender, router, destChainSelector, message } = opts
553-
if (!message.fee) message.fee = await this.getFee(opts)
553+
const message = {
554+
...populatedMessage,
555+
fee: opts.message.fee ?? (await this.getFee({ ...opts, message: populatedMessage })),
556+
}
554557
const tx = await generateUnsignedCcipSend(
555558
this.provider,
556559
sender,
557560
router,
558561
destChainSelector,
559-
message as AnyMessage & { fee: bigint },
562+
message,
560563
opts,
561564
)
562565
return {

ccip-sdk/src/chain.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,9 @@ export abstract class Chain<F extends ChainFamily = ChainFamily> {
693693
*/
694694
abstract getFeeTokens(router: string): Promise<Record<string, TokenInfo>>
695695

696-
/** {@inheritDoc ChainStatic.populateDefaultMessageForDest} */
697-
static populateDefaultMessageForDest(
698-
message: Parameters<ChainStatic['populateDefaultMessageForDest']>[0],
696+
/** {@inheritDoc ChainStatic.buildMessageForDest} */
697+
static buildMessageForDest(
698+
message: Parameters<ChainStatic['buildMessageForDest']>[0],
699699
): AnyMessage {
700700
// default to GenericExtraArgsV2, aka EVMExtraArgsV2
701701
return {
@@ -798,7 +798,7 @@ export type ChainStatic<F extends ChainFamily = ChainFamily> = Function & {
798798
* @param message - AnyMessage (from source), containing at least `receiver`
799799
* @returns A message suitable for `sendMessage` to this destination chain family
800800
*/
801-
populateDefaultMessageForDest(message: RequestMessage): AnyMessage
801+
buildMessageForDest(message: RequestMessage): AnyMessage
802802
}
803803

804804
/** Function type for getting a Chain instance by ID, selector, or name. */

ccip-sdk/src/evm/index.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import {
6464
import type { LeafHasher } from '../hasher/common.ts'
6565
import { supportedChains } from '../supported-chains.ts'
6666
import {
67+
type AnyMessage,
6768
type CCIPExecution,
6869
type CCIPMessage,
6970
type CCIPRequest,
@@ -117,10 +118,10 @@ import {
117118
} from './messages.ts'
118119
import { encodeEVMOffchainTokenData, fetchEVMOffchainTokenData } from './offchain.ts'
119120
import {
121+
buildMessageForDest,
120122
getMessageById,
121123
getMessagesInBatch,
122124
getMessagesInTx,
123-
populateDefaultMessageForDest,
124125
} from '../requests.ts'
125126
import type { UnsignedEVMTx } from './types.ts'
126127
export type { UnsignedEVMTx }
@@ -965,18 +966,20 @@ export class EVMChain extends Chain<typeof ChainFamily.EVM> {
965966
destChainSelector,
966967
message,
967968
}: Parameters<Chain['getFee']>[0]): Promise<bigint> {
968-
const message_ = populateDefaultMessageForDest(message, networkInfo(destChainSelector).family)
969+
const populatedMessage = buildMessageForDest(message, networkInfo(destChainSelector).family)
969970
const contract = new Contract(
970971
router,
971972
interfaces.Router,
972973
this.provider,
973974
) as unknown as TypedContract<typeof Router_ABI>
974975
return contract.getFee(destChainSelector, {
975-
receiver: zeroPadValue(getAddressBytes(message.receiver), 32),
976-
data: hexlify(message_.data ?? '0x'),
977-
tokenAmounts: message.tokenAmounts ?? [],
978-
feeToken: message.feeToken ?? ZeroAddress,
979-
extraArgs: hexlify((this.constructor as typeof EVMChain).encodeExtraArgs(message.extraArgs)),
976+
receiver: zeroPadValue(getAddressBytes(populatedMessage.receiver), 32),
977+
data: hexlify(populatedMessage.data ?? '0x'),
978+
tokenAmounts: populatedMessage.tokenAmounts ?? [],
979+
feeToken: populatedMessage.feeToken ?? ZeroAddress,
980+
extraArgs: hexlify(
981+
(this.constructor as typeof EVMChain).encodeExtraArgs(populatedMessage.extraArgs),
982+
),
980983
})
981984
}
982985

@@ -988,15 +991,21 @@ export class EVMChain extends Chain<typeof ChainFamily.EVM> {
988991
async generateUnsignedSendMessage(
989992
opts: Parameters<Chain['generateUnsignedSendMessage']>[0],
990993
): Promise<UnsignedEVMTx> {
991-
const { sender, router, destChainSelector, message } = opts
992-
if (!message.fee) message.fee = await this.getFee(opts)
994+
const { sender, router, destChainSelector } = opts
995+
const populatedMessage = buildMessageForDest(
996+
opts.message,
997+
networkInfo(destChainSelector).family,
998+
)
999+
const message = {
1000+
...populatedMessage,
1001+
fee: opts.message.fee ?? (await this.getFee({ ...opts, message: populatedMessage })),
1002+
}
1003+
9931004
const feeToken = message.feeToken ?? ZeroAddress
9941005
const receiver = zeroPadValue(getAddressBytes(message.receiver), 32)
995-
996-
const message_ = populateDefaultMessageForDest(message, networkInfo(destChainSelector).family)
997-
const data = hexlify(message_.data ?? '0x')
1006+
const data = hexlify(message.data ?? '0x')
9981007
const extraArgs = hexlify(
999-
(this.constructor as typeof EVMChain).encodeExtraArgs(message_.extraArgs),
1008+
(this.constructor as typeof EVMChain).encodeExtraArgs(message.extraArgs),
10001009
)
10011010

10021011
// make sure to approve once per token, for the total amount (including fee, if needed)

0 commit comments

Comments
 (0)