Ejemplo n.º 1
0
		protected static int calcLength(byte[] buf,int cursor,int offset)
		{
			VarInt varint;
			// jump past version (uint32)
			cursor = offset + 4;

			int i;
			long scriptLen;

			varint = new VarInt(buf, cursor);
			long txInCount = varint.value;
			cursor += varint.getOriginalSizeInBytes();

			for (i = 0; i < txInCount; i++) {
				// 36 = length of previous_outpoint
				cursor += 36;
				varint = new VarInt(buf, cursor);
				scriptLen = varint.value;
				// 4 = length of sequence field (unint32)
				cursor += scriptLen + 4 + varint.getOriginalSizeInBytes();
			}

			varint = new VarInt(buf, cursor);
			long txOutCount = varint.value;
			cursor += varint.getOriginalSizeInBytes();

			for (i = 0; i < txOutCount; i++) {
				// 8 = length of tx value field (uint64)
				cursor += 8;
				varint = new VarInt(buf, cursor);
				scriptLen = varint.value;
				cursor += scriptLen + varint.getOriginalSizeInBytes();
			}
			// 4 = length of lock_time field (uint32)
			return cursor - offset + 4;
		}