diff --git a/packages/common-universal/src/types/CheckedAddress.test.ts b/packages/common-universal/src/types/CheckedAddress.test.ts index eaf29df18..f492dba1a 100644 --- a/packages/common-universal/src/types/CheckedAddress.test.ts +++ b/packages/common-universal/src/types/CheckedAddress.test.ts @@ -27,7 +27,7 @@ describe(CheckedAddress.name, () => { it('generates a random address with prefix', () => { const address = CheckedAddress.random('alice') - expect(address.toLowerCase()).toMatchRegex(/^0xa11ce[0-9a-f]{35}$/) + expect(address.toLowerCase()).toMatchRegex(/^0xdeadbeefa11ce[0-9a-f]{27}$/) }) }) }) diff --git a/packages/common-universal/src/types/CheckedAddress.ts b/packages/common-universal/src/types/CheckedAddress.ts index 5e415a90a..8e791c17c 100644 --- a/packages/common-universal/src/types/CheckedAddress.ts +++ b/packages/common-universal/src/types/CheckedAddress.ts @@ -19,10 +19,11 @@ export function CheckedAddress(value: string): CheckedAddress { * Generates a random address. Tries to represent desired ascii prefix as hex value. Helps to identify transactions in the logs. */ CheckedAddress.random = (asciiPrefix = ''): CheckedAddress => { + const constantAddressPrefix = 'deadbeef' const hexPrefix = asciiToHex(asciiPrefix) - const postfixLength = 40 - hexPrefix.length + const postfixLength = 40 - hexPrefix.length - constantAddressPrefix.length assert(postfixLength >= 0, `Prefix too long: ${asciiPrefix}`) - const address = hexPrefix + randomPartialHex(postfixLength) + const address = `${constantAddressPrefix}${hexPrefix}${randomPartialHex(postfixLength)}` return CheckedAddress(`0x${address}`) } diff --git a/packages/common-universal/src/types/Hex.ts b/packages/common-universal/src/types/Hex.ts index 6fb426152..cf485e971 100644 --- a/packages/common-universal/src/types/Hex.ts +++ b/packages/common-universal/src/types/Hex.ts @@ -19,6 +19,10 @@ export function Hex(hex: string, { allowEmpty = false } = {}): Hex { } Hex.random = (ascii = '', length = 64): Hex => { - assert(ascii.length <= length, `Ascii prefix too long: ${ascii}`) - return Hex(`0x${asciiToHex(ascii)}${randomPartialHex(length - ascii.length)}`) + const constantHexPrefix = 'deadbeef' + assert(ascii.length <= length - constantHexPrefix.length, `Ascii prefix too long: ${ascii}`) + assert(length >= constantHexPrefix.length, `Total length too short: ${length}`) + return Hex( + `0x${constantHexPrefix}${asciiToHex(ascii)}${randomPartialHex(length - ascii.length - constantHexPrefix.length)}`, + ) }