Кодирование и декодирование Dart Bech32 и Hex - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь декодировать этот адрес Bech32 в шестнадцатеричный формат. Когда дан cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt. Он разбивает его на заголовок, который является «космосом», а остаток представлен в виде списка 8-битных целых чисел без знака (Uint8List).

Когда это закодировано в шестнадцатеричном формате (HEX.Encode), я получаю значение 00011203001a0a1413081f091106060518170d16000514111317030d11130408.

Однако оно предназначено для получения 00643069549a3e9898c5c5db6016919dc6d8cc88 * 1006, если вместо этого

и расшифровать cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt, что дает 00643069549a3e9898c5c5db6016919dc6d8cc88.

Я не могу понять проблему, возможно, форматирование неправильное, разные базы? или я делаю это совершенно неправильно.

Спасибо, я ценю любые ответы Вот фрагмент кода;

import 'package:bech32/bech32.dart';
import 'package:hex/hex.dart';

  Bech32Codec bech32codec = Bech32Codec();
  //  target address : 00643069549a3e9898c5c5db6016919dc6d8cc88  -> to get to this address

  String address = 'cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt';
  Bech32 bech32 = bech32codec.decode(address); 
  print(bech32.data); 
  // this returns [0, 1, 18, 3, 0, 26, 10, 20, 19, 8, 31, 9, 17, 6, 6, 5, 24, 23, 13, 22, 0, 5, 20, 17, 19, 23, 3, 13, 17, 19, 4, 8] 

  print(bech32.hrp);
  print(bech32codec.encode(Bech32("cosmos", bech32.data))); 

  var answer2 = HEX.encode(bech32.data);
  print(answer2);
var decode = HEX.decode('00643069549a3e9898c5c5db6016919dc6d8cc88');

  print(decode);
  // this returns [0, 100, 48, 105, 84, 154, 62, 152, 152, 197, 197, 219, 96, 22, 145, 157, 198, 216, 204, 136]
...