@@ -0,0 +1,1685 @@
+package org.bitcoinj.core;%0A%0Aimport java.io.IOException;%0Aimport java.io.OutputStream;%0Aimport java.util.Arrays;%0A%0A/**%0A * Created by Hash Engineering on 8/25/2018.%0A */%0Apublic class KeyId extends ChildMessage %7B%0A    public static final int MESSAGE_SIZE = 20;%0A%0A    byte %5B%5D bytes;%0A%0A%0A    public KeyId(NetworkParameters params, byte%5B%5D payload, int offset) throws ProtocolException %7B%0A        super(params, payload, offset);%0A    %7D%0A%0A    public KeyId(byte %5B%5D key)%0A    %7B%0A        assert(key.length == 20);%0A        bytes = new byte%5Bkey.length%5D;%0A        System.arraycopy(key, 0, bytes, 0, key.length);%0A    %7D%0A%0A    protected static int calcLength(byte%5B%5D buf, int offset) %7B%0A        return MESSAGE_SIZE;%0A    %7D%0A%0A    public int calculateMessageSizeInBytes()%0A    %7B%0A        return bytes.length;%0A    %7D%0A%0A    @Override%0A    protected void parse() throws ProtocolException %7B%0A        bytes = readBytes(MESSAGE_SIZE);%0A        length = cursor - offset;%0A    %7D%0A    @Override%0A    protected void bitcoinSerializeToStream(OutputStream stream) throws IOException %7B%0A%0A        stream.write(bytes);%0A    %7D%0A%0A    public String toString()%0A    %7B%0A        return %22key id: %22 + Utils.HEX.encode(bytes);%0A    %7D%0A%0A    public byte %5B%5D getBytes() %7B return bytes; %7D%0A%0A    public boolean equals(Object o)%0A    %7B%0A       KeyId key = (KeyId)o;%0A        if(key.bytes.length == this.bytes.length)%0A        %7B%0A            if(Arrays.equals(key.bytes, this.bytes) == true)%0A                return true;%0A        %7D%0A        return false;%0A    %7D%0A%0A    public KeyId duplicate()%0A    %7B%0A        KeyId copy = new KeyId(getBytes());%0A        return copy;%0A    %7D%0A%0A    Address getAddress(NetworkParameters params) %7B%0A        return Address.fromP2SHHash(params, bytes);%0A    %7D%0A%0A%7D%0A

Add KeyId for hash160 objects with serialization