witness as display string

This commit is contained in:
Craig Raw 2020-04-03 17:14:10 +02:00
parent e574a2bfd3
commit 4d875f5ad0
3 changed files with 30 additions and 7 deletions

View file

@ -246,10 +246,14 @@ public class Script {
} }
public String toDisplayString() { public String toDisplayString() {
return toDisplayString(chunks);
}
static String toDisplayString(List<ScriptChunk> scriptChunks) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
int signatureCount = 1; int signatureCount = 1;
int pubKeyCount = 1; int pubKeyCount = 1;
for(ScriptChunk chunk : chunks) { for(ScriptChunk chunk : scriptChunks) {
if(chunk.isSignature()) { if(chunk.isSignature()) {
builder.append("<signature").append(signatureCount++).append(">"); builder.append("<signature").append(signatureCount++).append(">");
} else if(chunk.isScript()) { } else if(chunk.isScript()) {

View file

@ -145,6 +145,16 @@ public class ScriptChunk {
return opcodeLength + pushDataSizeLength + dataLength; return opcodeLength + pushDataSizeLength + dataLength;
} }
static int getOpcodeForLength(int length) {
if(length <= 0xFF) {
return OP_PUSHDATA1;
}
if(length <= 0xFFFF) {
return OP_PUSHDATA2;
}
return OP_PUSHDATA4;
}
public String toString() { public String toString() {
if (data == null) { if (data == null) {
return "OP_" + getOpCodeName(opcode); return "OP_" + getOpCodeName(opcode);

View file

@ -56,19 +56,28 @@ public class TransactionWitness {
@Override @Override
public String toString() { public String toString() {
StringBuffer buffer = new StringBuffer(); StringBuilder builder = new StringBuilder();
for (byte[] push : pushes) { for (byte[] push : pushes) {
if (push == null) { if (push == null) {
buffer.append("NULL"); builder.append("NULL");
} else if (push.length == 0) { } else if (push.length == 0) {
buffer.append("EMPTY"); builder.append("EMPTY");
} else { } else {
buffer.append(Hex.toHexString(push)); builder.append(Hex.toHexString(push));
} }
buffer.append(" "); builder.append(" ");
} }
return buffer.toString().trim(); return builder.toString().trim();
}
public String toDisplayString() {
List<ScriptChunk> scriptChunks = new ArrayList<>(pushes.size());
for(byte[] push : pushes) {
scriptChunks.add(new ScriptChunk(ScriptChunk.getOpcodeForLength(push.length), push));
}
return Script.toDisplayString(scriptChunks);
} }
@Override @Override