Skip to content

P2PKH Litecoin addresses starting with LTc1 or LTC1 cannot be decoded #133

@anonpay-sh

Description

@anonpay-sh

As first reported in #112, some Litecoin addresses cannot be decoded by this library. ea27eab implemented a partial fix, but the problem still exists for P2PKH Litecoin addresses starting with LTc1 or LTC1 as shown in the reproduction below.

import type { BTC_NETWORK } from "@scure/btc-signer/utils.js";

import { Address, p2pkh } from "@scure/btc-signer";
import { pubECDSA, randomPrivateKeyBytes } from "@scure/btc-signer/utils.js";

const litecoinNetwork: BTC_NETWORK = {
  bech32: "ltc", // https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/chainparams.cpp#L139
  pubKeyHash: 48, // https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/chainparams.cpp#L132
  scriptHash: 50, // https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/chainparams.cpp#L134
  wif: 176, // https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/chainparams.cpp#L135
};

for (let addressDecodeFailures = 0; addressDecodeFailures < 20; ) {
  const privateKeyBytes = randomPrivateKeyBytes();

  const publicKeyBytes = pubECDSA(privateKeyBytes);

  const { address } = p2pkh(publicKeyBytes, litecoinNetwork);

  try {
    Address(litecoinNetwork).decode(address);
  } catch {
    console.log("Failed to decode address:", address);

    addressDecodeFailures++;
  }
}
$ node find-litecoin-address-decode-failures.ts 
Failed to decode address: LTC1zjVGsmn3xcSkog7Bo1uGyDxahZVQUb
Failed to decode address: LTC1HGy8TeF6vLBp76qjBtjZz9TG8zpJ6j
Failed to decode address: LTC1LcyW9nfPCyYocdyUgHZc2XghFkBpXY
Failed to decode address: LTC1Y3q5hCNd1k4upQeFiwyKPAr5YiCvfN
Failed to decode address: LTc1ryp642TP8mPRfPch3ZM9wGo9zRF2oJ
Failed to decode address: LTc11n2KGvXsmj4ugTUZo7d6ghx5GuxzTV
Failed to decode address: LTC1pF5s3D4yH2S2FkGswPv7ToXXuaAB2G
Failed to decode address: LTC1vMWAiEchr6m4NGQExi7B93TH8YFXdy
Failed to decode address: LTc1XEndWeVLAyU4KiUgaQf75NbSPFdxf8
Failed to decode address: LTC18PhC7QM3s39HUBevPHqtrMf2mNkzSj
Failed to decode address: LTc1SgNUc5h9ev4ToBu7JJAtYBuif6oLKt
Failed to decode address: LTC1RNPfPgoerwkyjkWds2vvRzFmfZMXoM
Failed to decode address: LTC1KEjDhuxuNF4JDyozu99BgqBGhLN9Rq
Failed to decode address: LTc16ULdEvnn6Z16jFUcsVjrseQ2ubVkvF
Failed to decode address: LTc1uK5VfZw9f9euVvszzXsVXrg67QKjM2
Failed to decode address: LTC1zsbzxgUZyLzpBfv9zoWWYvfR17xLAd
Failed to decode address: LTc1fM6fo9ju8yD51VaER9FrPknDvC94k3
Failed to decode address: LTC15qvqSNUQbgXrEjwko9tP12E6YfMwkn
Failed to decode address: LTc1589Ti1BerhYUzVW4dAs8AawDtnJmTD
Failed to decode address: LTc1toQUH7Q43M9XpFRHYhpobwFSw5sgds

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions