From c66aea37da529d78b2f133cd10017242fda2ece8 Mon Sep 17 00:00:00 2001 From: codchen Date: Mon, 7 Nov 2022 15:34:17 +0800 Subject: [PATCH] Nitro: trim \x prefix in data passed to replayer --- x/nitro/replay/replay.go | 25 +++++++++++++++++++------ x/nitro/replay/replay_test.go | 9 +++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/x/nitro/replay/replay.go b/x/nitro/replay/replay.go index bc6c6a8fd5..6ecf0e846a 100644 --- a/x/nitro/replay/replay.go +++ b/x/nitro/replay/replay.go @@ -109,16 +109,17 @@ func writeTransactionToFile(directory string, tx []byte) (string, error) { ) serialized += header serialized += "," - serialized += strings.Join(transactionData.LegacyMessage.AccountKeys, "-") + serialized += strings.Join( + utils.Map(transactionData.LegacyMessage.AccountKeys, trimHexPrefix), "-") serialized += "," - serialized += transactionData.LegacyMessage.RecentBlockhash + serialized += trimHexPrefix(transactionData.LegacyMessage.RecentBlockhash) serialized += "," instructions := utils.Map(transactionData.LegacyMessage.Instructions, func(i *types.CompiledInstruction) string { return fmt.Sprintf( "%d_%s_%s", i.ProgramIdIndex, strings.Join(utils.Map(i.Accounts, func(a uint32) string { return fmt.Sprintf("%d", a) }), ":"), - i.Data, + trimHexPrefix(i.Data), ) }) serialized += strings.Join(instructions, "-") @@ -133,16 +134,17 @@ func writeTransactionToFile(directory string, tx []byte) (string, error) { ) serialized += header serialized += "," - serialized += strings.Join(transactionData.V0LoadedMessage.Message.AccountKeys, "-") + serialized += strings.Join( + utils.Map(transactionData.V0LoadedMessage.Message.AccountKeys, trimHexPrefix), "-") serialized += "," - serialized += transactionData.V0LoadedMessage.Message.RecentBlockhash + serialized += trimHexPrefix(transactionData.V0LoadedMessage.Message.RecentBlockhash) serialized += "," instructions := utils.Map(transactionData.V0LoadedMessage.Message.Instructions, func(i *types.CompiledInstruction) string { return fmt.Sprintf( "%d_%s_%s", i.ProgramIdIndex, strings.Join(utils.Map(i.Accounts, func(a uint32) string { return fmt.Sprintf("%d", a) }), ":"), - i.Data, + trimHexPrefix(i.Data), ) }) serialized += strings.Join(instructions, "-") @@ -185,3 +187,14 @@ func writeAccountToFile(directory string, account types.Account) (string, error) filepath := fmt.Sprintf("%s%s", directory, account.Pubkey) return filepath, os.WriteFile(filepath, []byte(serialized), 0644) } + +// input: \x1234 output: 1234 +func trimHexPrefix(s string) string { + if len(s) < 2 { + return s + } + if s[:2] != "\\x" { + return s + } + return s[2:] +} diff --git a/x/nitro/replay/replay_test.go b/x/nitro/replay/replay_test.go index 6abe1afa58..c9ee66adab 100644 --- a/x/nitro/replay/replay_test.go +++ b/x/nitro/replay/replay_test.go @@ -93,3 +93,12 @@ func TestWriteTransactionToFile(t *testing.T) { require.Nil(t, err) require.Equal(t, "0|1-2-3,a1-a2,recent,1_4:5:6_d1-2_7:8:9_d2|message|f|s1,s2", string(bz)) } + +func TestTrimHexPrefix(t *testing.T) { + require.Equal(t, "", trimHexPrefix("")) + require.Equal(t, "a", trimHexPrefix("a")) + require.Equal(t, "\\y", trimHexPrefix("\\y")) + require.Equal(t, "", trimHexPrefix("\\x")) + require.Equal(t, "abc", trimHexPrefix("abc")) + require.Equal(t, "1234", trimHexPrefix("\\x1234")) +}