convertir la dirección de temas rellenados en una cadena de dirección válida

Estoy analizando información de la matriz de temas.

Recibo direcciones rellenadas de 32 bits en algunos índices. ¿Existe una función de utilidad web3 o un método de ayuda útil para que vuelvan a tener direcciones de tamaño normal?

No estoy seguro si eliminaré la cantidad correcta de 0 para obtener la misma dirección válida que estoy buscando.

por favor avise

¿Finalmente encontraste una manera?
@Lbrth_BoC Creo que hago algo similar a la respuesta a continuación, y luego ejecuto el método web3 isValid para verificar dos veces

Respuestas (3)

Un poco más simple:

function paddedToChecksumAddress(address) {
  if (address.slice(0, 2) === '0x') address = address.slice(2)
  while (address.slice(0, 2) === '00') address = address.slice(2)
  return web3.utils.toChecksumAddress('0x' + address)
}

Editar:

web3.eth.abi.decodeParameter('address', address)

es la forma correcta

Pruebe esto para cualquier longitud de relleno:

    getAddress(address) {
        const web3Utils = require('web3-utils');

        let i = -1;
        let exit = false;
        let result = address;
        while(!exit && i < address.length){
            i++;
            result = "0x" + address.substring(i);
            exit = web3Utils.isAddress(result);
        }

        return web3Utils.toChecksumAddress(result);
    }

Esta función elimina cualquier grupo inicial de "00" y luego agrega "0x" al principio.

public string AddressWithoutPadding(string address)
    {
        if (address.StartsWith("0x"))
            address = address.Remove(0, 2);
        do
        {
            if (address.StartsWith("00"))
            {
                address = address.Remove(0, 2);
            }
            else
                break;
        } while (true);
        return "0x" + address;
    }