From 5b658806e80f4121861b7c1d81ab30f6d1d3f980 Mon Sep 17 00:00:00 2001 From: NikYak228 Date: Mon, 1 Jun 2026 15:08:04 +0000 Subject: [PATCH 1/4] fix: validate tron address checksum --- x/tron/types/address.go | 6 ++++++ x/tron/types/address_test.go | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/x/tron/types/address.go b/x/tron/types/address.go index e6552ea7f..6a08ec809 100644 --- a/x/tron/types/address.go +++ b/x/tron/types/address.go @@ -54,6 +54,12 @@ func ValidateTronAddress(address string) error { if err != nil { return errors.New("doesn't pass format validation") } + if len(tronAddr) != tronaddress.AddressLength { + return errors.New("wrong length") + } + if tronAddr[0] != tronaddress.TronBytePrefix { + return errors.New("invalid tron prefix") + } expectAddress := common.EncodeCheck(tronAddr) if expectAddress != address { return fmt.Errorf("mismatch expected: %s, got: %s", expectAddress, address) diff --git a/x/tron/types/address_test.go b/x/tron/types/address_test.go index 243c44c99..c1cd81993 100644 --- a/x/tron/types/address_test.go +++ b/x/tron/types/address_test.go @@ -1,8 +1,10 @@ package types_test import ( + "bytes" "testing" + troncommon "github.com/fbsobreira/gotron-sdk/pkg/common" "github.com/openmetaearth/me-hub/x/tron/types" "github.com/stretchr/testify/require" ) @@ -44,6 +46,12 @@ func TestValidateTronAddress(t *testing.T) { expectPass: false, errStr: "doesn't pass format validation", }, + { + testName: "base58check address with non-tron prefix", + value: troncommon.EncodeCheck(append([]byte{0x00}, bytes.Repeat([]byte{0x11}, 20)...)), + expectPass: false, + errStr: "invalid tron prefix", + }, { testName: "normal address", value: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", From 66be50476854836ac824ca9441ff6b31b4251c1b Mon Sep 17 00:00:00 2001 From: NikYak228 Date: Mon, 1 Jun 2026 18:01:13 +0000 Subject: [PATCH 2/4] fix: clarify tron address length validation --- x/tron/types/address.go | 4 ++-- x/tron/types/address_test.go | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/x/tron/types/address.go b/x/tron/types/address.go index 6a08ec809..128423594 100644 --- a/x/tron/types/address.go +++ b/x/tron/types/address.go @@ -48,14 +48,14 @@ func ValidateTronAddress(address string) error { return errors.New("empty") } if len(address) != tronaddress.AddressLengthBase58 { - return errors.New("wrong length") + return fmt.Errorf("invalid address length: expected %d chars, got %d", tronaddress.AddressLengthBase58, len(address)) } tronAddr, err := common.DecodeCheck(address) if err != nil { return errors.New("doesn't pass format validation") } if len(tronAddr) != tronaddress.AddressLength { - return errors.New("wrong length") + return fmt.Errorf("invalid address length: expected decoded %d bytes, got %d", tronaddress.AddressLength, len(tronAddr)) } if tronAddr[0] != tronaddress.TronBytePrefix { return errors.New("invalid tron prefix") diff --git a/x/tron/types/address_test.go b/x/tron/types/address_test.go index c1cd81993..34f309fa2 100644 --- a/x/tron/types/address_test.go +++ b/x/tron/types/address_test.go @@ -4,12 +4,17 @@ import ( "bytes" "testing" + tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" troncommon "github.com/fbsobreira/gotron-sdk/pkg/common" "github.com/openmetaearth/me-hub/x/tron/types" "github.com/stretchr/testify/require" ) func TestValidateTronAddress(t *testing.T) { + nonTronPrefix := byte(0x00) + nonTronPayload := append([]byte{nonTronPrefix}, bytes.Repeat([]byte{0x11}, tronaddress.AddressLength-1)...) + shortTronPayload := append([]byte{tronaddress.TronBytePrefix}, bytes.Repeat([]byte{0x11}, tronaddress.AddressLength-2)...) + testCases := []struct { testName string value string @@ -26,13 +31,13 @@ func TestValidateTronAddress(t *testing.T) { testName: "address length not match", value: "abcdddddd", expectPass: false, - errStr: "wrong length", + errStr: "invalid address length", }, { testName: "address length great than tron address", value: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t6666", expectPass: false, - errStr: "wrong length", + errStr: "invalid address length", }, { testName: "lowercase address", @@ -48,10 +53,16 @@ func TestValidateTronAddress(t *testing.T) { }, { testName: "base58check address with non-tron prefix", - value: troncommon.EncodeCheck(append([]byte{0x00}, bytes.Repeat([]byte{0x11}, 20)...)), + value: troncommon.EncodeCheck(nonTronPayload), expectPass: false, errStr: "invalid tron prefix", }, + { + testName: "base58check address with invalid decoded length", + value: troncommon.EncodeCheck(shortTronPayload), + expectPass: false, + errStr: "invalid address length", + }, { testName: "normal address", value: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", @@ -66,7 +77,7 @@ func TestValidateTronAddress(t *testing.T) { require.NoError(t, err) return } - require.EqualValues(t, testCase.errStr, err.Error(), testCase.value) + require.Contains(t, err.Error(), testCase.errStr, testCase.value) }) } } From 8836fcc40ffd5bfb10a041f62c37c0887c3b4d06 Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 24 Jun 2026 14:48:52 +0800 Subject: [PATCH 3/4] Update address_test.go --- x/tron/types/address_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x/tron/types/address_test.go b/x/tron/types/address_test.go index ae111d5d2..8b6dfd000 100644 --- a/x/tron/types/address_test.go +++ b/x/tron/types/address_test.go @@ -2,6 +2,8 @@ package types_test import ( "bytes" + tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" + troncommon "github.com/fbsobreira/gotron-sdk/pkg/common" "testing" "github.com/stretchr/testify/require" From 0caba9420006e87ee74ba900aab7e240e975e72b Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 24 Jun 2026 14:59:55 +0800 Subject: [PATCH 4/4] format import --- x/tron/types/address_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/tron/types/address_test.go b/x/tron/types/address_test.go index 8b6dfd000..394115c6e 100644 --- a/x/tron/types/address_test.go +++ b/x/tron/types/address_test.go @@ -2,10 +2,10 @@ package types_test import ( "bytes" - tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" - troncommon "github.com/fbsobreira/gotron-sdk/pkg/common" "testing" + tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" + troncommon "github.com/fbsobreira/gotron-sdk/pkg/common" "github.com/stretchr/testify/require" "github.com/openmetaearth/me-hub/x/tron/types"