public boolean validate() throws IOException {
		this.valid = false;

		try {
			logger.trace("Validating piece#" + this.index + " off: " + this.offset + " len: " + this.length);
			ByteBuffer buffer = this.bucket.read(this.offset, this.length);
			if (buffer.remaining() == this.length) {
				byte[] data = new byte[this.length];
				buffer.get(data);
				this.valid = Arrays.equals(Torrent.hash(data), this.hash);
			}
		} catch (NoSuchAlgorithmException nsae) {
			logger.error(nsae.getMessage());
		}

		return this.isValid();
	}