Hallo zusammen,
ich habe eine Frage bezüglich der folgenden Methoden und zwar habe ich eine Map erstellt, welche zu einem Hash den dazu gehörenden Block speichert:
Um den Hashwert von einem Byte-Array in einen String umzuwandeln habe ich einfach die normale "toString()"-Methode verwendet:
Soweit so gut, allerdings hat mein Web-Interface Probleme damit das ganze korrekt zu verarbeiten, denn die Startseite meines Block-Explorers sieht dann wie folgt aus:
Es wird immer nur der letzte gefundene Block angezeigt, es sollten aber die 10 letzten Blöcke angezeigt werden....
Hab dann meine Implementierung mit der Musterlösung verglichen und den Fehler schnell gefunden und zwar wandeln die den BlockHash mittels einer Hilfsklasse in einen Hex-String um:
Die Methode sieht folgendermaßen aus:
Damit funktioniert auch das Web-Interface:
Könnt ihr mir sagen woran das genau liegt? Ich denke mal weil ja ein HexadezimalerString nicht die gleichen Zeichen verwendet wie ein "normaler"String wegen Basis16 usw oder? Hab noch nicht soo oft mit dem Hexadezimalsystem gearbeitet und deshalb ist mir das auch nicht soo geläufig. Was mich halt verwirrt ist das wenn ich die "normale"toString() Methode verwende mir halt trotzdem zumindest ein Hash angezeigt wird, der btw vom Format her genauso aussieht wie die Hex-Srtings beim zweiten Screenshot.
Falls ich die HTML auch reinstellen soll kann ich das natürlich gerne machen. Die gab das Buch aber mehr oder weniger vor und ich kann HTML (noch) nicht deshalb kann ich dadrinnen nicht wirklich nachsehen aber vll. gibt es ja im JavaCode irgendwas das ich übersehe.
lg. ~
ich habe eine Frage bezüglich der folgenden Methoden und zwar habe ich eine Map erstellt, welche zu einem Hash den dazu gehörenden Block speichert:
Java:
private Map<String, Block> blockCache;
Code:
public void addBlock( Block block )
{
chain.add( block );
blockCache.put(block.getBlockHash().toString(), block);
for(Transaction trx : block.getTransactions()) {
transactionCache.put(trx.getTxIdAsString(), trx);
}
}
Es wird immer nur der letzte gefundene Block angezeigt, es sollten aber die 10 letzten Blöcke angezeigt werden....
Hab dann meine Implementierung mit der Musterlösung verglichen und den Fehler schnell gefunden und zwar wandeln die den BlockHash mittels einer Hilfsklasse in einen Hex-String um:
Java:
public void addBlock( Block block )
{
chain.add( block );
blockCache.put(SHA3Helper.digestToHex(block.getBlockHash()), block);
for(Transaction trx : block.getTransactions()) {
transactionCache.put(trx.getTxIdAsString(), trx);
}
}
Die Methode sieht folgendermaßen aus:
Code:
public static String digestToHex( byte[] digest )
{
return Hex.toHexString( digest );
}
Damit funktioniert auch das Web-Interface:
Könnt ihr mir sagen woran das genau liegt? Ich denke mal weil ja ein HexadezimalerString nicht die gleichen Zeichen verwendet wie ein "normaler"String wegen Basis16 usw oder? Hab noch nicht soo oft mit dem Hexadezimalsystem gearbeitet und deshalb ist mir das auch nicht soo geläufig. Was mich halt verwirrt ist das wenn ich die "normale"toString() Methode verwende mir halt trotzdem zumindest ein Hash angezeigt wird, der btw vom Format her genauso aussieht wie die Hex-Srtings beim zweiten Screenshot.
Falls ich die HTML auch reinstellen soll kann ich das natürlich gerne machen. Die gab das Buch aber mehr oder weniger vor und ich kann HTML (noch) nicht deshalb kann ich dadrinnen nicht wirklich nachsehen aber vll. gibt es ja im JavaCode irgendwas das ich übersehe.
lg. ~