package network.thunder.core.communication.objects.messages.impl.blockchainlistener.bciapi.blockexplorer; import com.google.gson.JsonObject; /** * Represents a transaction input. If the `previousOutput` object is null, this is a * coinbase input. */ public class Input { private Output previousOutput; private long sequence; private String scriptSignature; public Input (Output previousOutput, long sequence, String scriptSignature) { this.previousOutput = previousOutput; this.sequence = sequence; this.scriptSignature = scriptSignature; } public Input (JsonObject i) { if (i.has("prev_out")) { this.previousOutput = new Output(i.get("prev_out").getAsJsonObject(), true); } this.sequence = i.get("sequence").getAsLong(); this.scriptSignature = i.get("script").getAsString(); } /** * @return Previous output. If null, this is a coinbase input. */ public Output getPreviousOutput () { return previousOutput; } /** * @return Sequence number of the input */ public long getSequence () { return sequence; } /** * @return Script signature */ public String getScriptSignature () { return scriptSignature; } @Override public boolean equals (Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Input input = (Input) o; if (sequence != input.sequence) { return false; } if (!previousOutput.equals(input.previousOutput)) { return false; } return scriptSignature.equals(input.scriptSignature); } @Override public int hashCode () { int result = previousOutput.hashCode(); result = 31 * result + (int) (sequence ^ (sequence >>> 32)); result = 31 * result + scriptSignature.hashCode(); return result; } }