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
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;
}
Lbrth_BoC
CQM