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() {
return toDisplayString(chunks);
}
static String toDisplayString(List<ScriptChunk> scriptChunks) {
StringBuilder builder = new StringBuilder();
int signatureCount = 1;
int pubKeyCount = 1;
for(ScriptChunk chunk : chunks) {
for(ScriptChunk chunk : scriptChunks) {
if(chunk.isSignature()) {
builder.append("<signature").append(signatureCount++).append(">");
} else if(chunk.isScript()) {

View file

@ -145,6 +145,16 @@ public class ScriptChunk {
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() {
if (data == null) {
return "OP_" + getOpCodeName(opcode);

View file

@ -56,19 +56,28 @@ public class TransactionWitness {
@Override
public String toString() {
StringBuffer buffer = new StringBuffer();
StringBuilder builder = new StringBuilder();
for (byte[] push : pushes) {
if (push == null) {
buffer.append("NULL");
builder.append("NULL");
} else if (push.length == 0) {
buffer.append("EMPTY");
builder.append("EMPTY");
} 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