|
5 | 5 | "encoding/hex" |
6 | 6 | "fmt" |
7 | 7 | "math/big" |
| 8 | + "strings" |
8 | 9 | "testing" |
9 | 10 |
|
10 | 11 | "github.com/ethereum/go-ethereum/common" |
@@ -316,39 +317,40 @@ func DecodeTokenTransferV1(encoded []byte, offset int) (*TokenTransferV1, int, e |
316 | 317 |
|
317 | 318 | // PrettyPrintMessage formats a decoded message for readable output |
318 | 319 | func PrettyPrintMessage(msg *MessageV1) string { |
319 | | - s := "=== CCIP Message V1 ===\n\n" |
320 | | - s += fmt.Sprintf(" Version: %d\n", msg.Version) |
321 | | - s += fmt.Sprintf(" Source Chain Selector: %d (0x%x)\n", msg.SourceChainSelector, msg.SourceChainSelector) |
322 | | - s += fmt.Sprintf(" Dest Chain Selector: %d (0x%x)\n", msg.DestChainSelector, msg.DestChainSelector) |
323 | | - s += fmt.Sprintf(" Sequence Number: %d\n", msg.SequenceNumber) |
324 | | - s += fmt.Sprintf(" Execution Gas Limit: %d\n", msg.ExecutionGasLimit) |
325 | | - s += fmt.Sprintf(" Callback Gas Limit: %d\n", msg.CallbackGasLimit) |
326 | | - s += fmt.Sprintf(" Finality: %d\n", msg.Finality) |
327 | | - s += fmt.Sprintf(" CCV & Executor Hash: 0x%x\n", msg.CCVAndExecutorHash) |
328 | | - s += fmt.Sprintf(" OnRamp Address: %s\n", formatAddress(msg.OnRampAddress)) |
329 | | - s += fmt.Sprintf(" OffRamp Address: %s\n", formatAddress(msg.OffRampAddress)) |
330 | | - s += "\n" |
331 | | - s += fmt.Sprintf(" Sender: %s\n", formatAddress(msg.Sender)) |
332 | | - s += fmt.Sprintf(" Receiver: %s\n", formatAddress(msg.Receiver)) |
333 | | - s += fmt.Sprintf(" Dest Blob: %s (%d bytes)\n", formatHex(msg.DestBlob), len(msg.DestBlob)) |
334 | | - s += fmt.Sprintf(" Data Payload: %s (%d bytes)\n", formatHex(msg.Data), len(msg.Data)) |
335 | | - s += "\n" |
336 | | - |
337 | | - s += fmt.Sprintf("Token Transfers: %d\n", len(msg.TokenTransfers)) |
| 320 | + var s strings.Builder |
| 321 | + s.WriteString("=== CCIP Message V1 ===\n\n") |
| 322 | + s.WriteString(fmt.Sprintf(" Version: %d\n", msg.Version)) |
| 323 | + s.WriteString(fmt.Sprintf(" Source Chain Selector: %d (0x%x)\n", msg.SourceChainSelector, msg.SourceChainSelector)) |
| 324 | + s.WriteString(fmt.Sprintf(" Dest Chain Selector: %d (0x%x)\n", msg.DestChainSelector, msg.DestChainSelector)) |
| 325 | + s.WriteString(fmt.Sprintf(" Sequence Number: %d\n", msg.SequenceNumber)) |
| 326 | + s.WriteString(fmt.Sprintf(" Execution Gas Limit: %d\n", msg.ExecutionGasLimit)) |
| 327 | + s.WriteString(fmt.Sprintf(" Callback Gas Limit: %d\n", msg.CallbackGasLimit)) |
| 328 | + s.WriteString(fmt.Sprintf(" Finality: %d\n", msg.Finality)) |
| 329 | + s.WriteString(fmt.Sprintf(" CCV & Executor Hash: 0x%x\n", msg.CCVAndExecutorHash)) |
| 330 | + s.WriteString(fmt.Sprintf(" OnRamp Address: %s\n", formatAddress(msg.OnRampAddress))) |
| 331 | + s.WriteString(fmt.Sprintf(" OffRamp Address: %s\n", formatAddress(msg.OffRampAddress))) |
| 332 | + s.WriteString("\n") |
| 333 | + s.WriteString(fmt.Sprintf(" Sender: %s\n", formatAddress(msg.Sender))) |
| 334 | + s.WriteString(fmt.Sprintf(" Receiver: %s\n", formatAddress(msg.Receiver))) |
| 335 | + s.WriteString(fmt.Sprintf(" Dest Blob: %s (%d bytes)\n", formatHex(msg.DestBlob), len(msg.DestBlob))) |
| 336 | + s.WriteString(fmt.Sprintf(" Data Payload: %s (%d bytes)\n", formatHex(msg.Data), len(msg.Data))) |
| 337 | + s.WriteString("\n") |
| 338 | + |
| 339 | + s.WriteString(fmt.Sprintf("Token Transfers: %d\n", len(msg.TokenTransfers))) |
338 | 340 | for i, tt := range msg.TokenTransfers { |
339 | | - s += fmt.Sprintf("\n Token Transfer #%d:\n", i+1) |
340 | | - s += fmt.Sprintf(" Version: %d\n", tt.Version) |
341 | | - s += fmt.Sprintf(" Amount: %s (wei)\n", tt.Amount.String()) |
342 | | - s += fmt.Sprintf(" Source Pool: %s\n", formatAddress(tt.SourcePoolAddress)) |
343 | | - s += fmt.Sprintf(" Source Token: %s\n", formatAddress(tt.SourceTokenAddress)) |
344 | | - s += fmt.Sprintf(" Dest Token: %s\n", formatAddress(tt.DestTokenAddress)) |
345 | | - s += fmt.Sprintf(" Token Receiver: %s\n", formatAddress(tt.TokenReceiver)) |
346 | | - s += fmt.Sprintf(" Extra Data: %s (%d bytes)\n", formatHex(tt.ExtraData), len(tt.ExtraData)) |
| 341 | + s.WriteString(fmt.Sprintf("\n Token Transfer #%d:\n", i+1)) |
| 342 | + s.WriteString(fmt.Sprintf(" Version: %d\n", tt.Version)) |
| 343 | + s.WriteString(fmt.Sprintf(" Amount: %s (wei)\n", tt.Amount.String())) |
| 344 | + s.WriteString(fmt.Sprintf(" Source Pool: %s\n", formatAddress(tt.SourcePoolAddress))) |
| 345 | + s.WriteString(fmt.Sprintf(" Source Token: %s\n", formatAddress(tt.SourceTokenAddress))) |
| 346 | + s.WriteString(fmt.Sprintf(" Dest Token: %s\n", formatAddress(tt.DestTokenAddress))) |
| 347 | + s.WriteString(fmt.Sprintf(" Token Receiver: %s\n", formatAddress(tt.TokenReceiver))) |
| 348 | + s.WriteString(fmt.Sprintf(" Extra Data: %s (%d bytes)\n", formatHex(tt.ExtraData), len(tt.ExtraData))) |
347 | 349 | } |
348 | 350 |
|
349 | | - s += "\n" |
| 351 | + s.WriteString("\n") |
350 | 352 |
|
351 | | - return s |
| 353 | + return s.String() |
352 | 354 | } |
353 | 355 |
|
354 | 356 | // formatAddress formats a byte slice as an Ethereum address or hex string |
|
0 commit comments