Skip to content

Commit 6c087f9

Browse files
authored
Merge pull request CosmWasm#2111 from CosmWasm/co/allow-custom-address-len
Make `ContractAddrLen` variable
2 parents 5f0b5ef + b856840 commit 6c087f9

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

x/wasm/keeper/addresses_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package keeper
22

33
import (
4+
"encoding/hex"
45
"encoding/json"
56
"fmt"
67
"testing"
78

89
tmbytes "github.com/cometbft/cometbft/libs/bytes"
10+
"github.com/stretchr/testify/assert"
911
"github.com/stretchr/testify/require"
1012

1113
sdk "github.com/cosmos/cosmos-sdk/types"
14+
15+
"github.com/CosmWasm/wasmd/x/wasm/types"
1216
)
1317

1418
func prepareCleanup(t *testing.T) {
@@ -69,6 +73,24 @@ func TestBuildContractAddressClassic(t *testing.T) {
6973
}
7074
}
7175

76+
func TestBuildContractAddressPredictableShort(t *testing.T) {
77+
types.ContractAddrLen = 20
78+
// reset to default value after test completion
79+
defer func() { types.ContractAddrLen = 32 }()
80+
81+
checksum, err := hex.DecodeString("13a1fc994cc6d1c81b746ee0c0ff6f90043875e0bf1d9be6b7d779fc978dc2a5")
82+
require.NoError(t, err)
83+
creator, err := sdk.AccAddressFromHexUnsafe("9999999999aaaaaaaaaabbbbbbbbbbcccccccccc")
84+
require.NoError(t, err)
85+
salt, err := hex.DecodeString("61")
86+
require.NoError(t, err)
87+
expAddr, err := sdk.AccAddressFromHexUnsafe("5e865d3e45ad3e961f77fd77d46543417ced44d9")
88+
require.NoError(t, err)
89+
90+
addr := BuildContractAddressPredictable(checksum, creator, salt, []byte{})
91+
assert.Equal(t, expAddr, addr)
92+
}
93+
7294
func TestBuildContractAddressPredictable(t *testing.T) {
7395
// set cleanup function
7496
prepareCleanup(t)

x/wasm/types/types.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ const (
2020
defaultSmartQueryGasLimit uint64 = 3_000_000
2121
defaultContractDebugMode = false
2222

23-
// ContractAddrLen defines a valid address length for contracts
24-
ContractAddrLen = 32
2523
// SDKAddrLen defines a valid address length that was used in sdk address generation
2624
SDKAddrLen = 20
2725
)
2826

27+
// ContractAddrLen defines a valid address length for contracts
28+
var ContractAddrLen = 32
29+
2930
func (m Model) ValidateBasic() error {
3031
if len(m.Key) == 0 {
3132
return errorsmod.Wrap(ErrEmpty, "key")

0 commit comments

Comments
 (0)