Alguém sabe de uma lib java ou kotlin que valida um endereço Bech32m?
Login to reply
Replies (4)
Bitcoinj
Tem um exemplo ai? Nos docs só aparece Bech32
```java
import org.bitcoinj.base.Bech32;
import org.bitcoinj.base.exceptions.AddressFormatException;
public class Bech32mValidator {
public static void main(String[] args) {
// Exemplo de endereço Bech32m para validação
String address = "bc1qw508d6qejxtdg4y5r3z5j6q6q6q6q6q6q6q6"; // Substitua pelo endereço que deseja validar
String expectedHrp = "bc"; // Prefixo esperado para Bitcoin
Bech32.Encoding expectedEncoding = Bech32.Encoding.BECH32M; // Tipo de encoding esperado
try {
// Decodifica e valida o endereço Bech32m
byte[] decodedData = Bech32.decodeBytes(address, expectedHrp, expectedEncoding);
System.out.println("Endereço Bech32m válido! Dados decodificados: " + bytesToHex(decodedData));
} catch (AddressFormatException e) {
System.out.println("Endereço inválido: " + e.getMessage());
}
}
// Método auxiliar para converter bytes em uma representação hexadecimal
private static String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xFF & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
}
```
Olhei por cima, mas da pra ver que a lib trabalha com bech32m:
https://github.com/bitcoinj/bitcoinj/blob/master/base/src/main/java/org/bitcoinj/base/Bech32.java