| 
	eMule u¿ywa wielu sposobów by zapewniæ, ¿e pliki w sieci s± udostêpniane i pobierane bez b³êdów. Je¶li wykryte 
	zostanie uszkodzenie, eMule u¿yje zaawansowanych procedur by je naprawiæ z minimaln± ilo¶ci± danych do ponownego pobrania.
 
	Hash pliku i ICH - Intelligent Corruption Handling (Inteligentna obs³uga uszkodzeñ)
 
	Hash pliku, Part Hashes i Hashset
	Dla ka¿dego udostêpnianego pliku w sieci przypisana jest unikalna warto¶æ tworzona przy u¿yciu algorytmu MD4. 
	Jest ona nazywana hashem pliku i jest zawarta w ka¿dym standardowym linku eD2k, np.
 
 ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|/
 
	gdzie 6744FC42EDA527B27F0B2F2538728B3E to hash czyni±cy plik unikalnym w ca³ej sieci.
	Hash pliku wyliczany jest przez podzia³ ca³ego pliku na czê¶ci po 9.28MB. Dla ka¿dej z nich tworzony jest 
	part hash przy pomocy algorytmu MD4. Z nich (wszystkie razem nosz± nazwê hashset) wyliczany jest koñcowy 
	hash pliku. Na przyk³ad plik o rozmiarze 600 MB zostanie podzielony na 65 czê¶ci, z których ka¿da 
	bêdzie mia³a swój part hash u¿yty do utworzenia koñcowego wyniku.
 By siê upewniæ, ¿e eMule zawsze otrzyma poprawny hashset, mo¿na utworzyæ link który go zawiera, np.
 
	ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|p=264E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/
 
	gdzie warto¶æ p= oznacza hashset. Ka¿dy part hash oddzielony jest ":". Ten plik ma rozmiar 12043984 bajtów (=11.49 MB), 
	co oznacza ¿e ma jedn± pe³n± czê¶æ o rozmiarze 9.28 MB i drug± niepe³n±, czego wynikiem s± dwa part hashes.
 
	ICH Inteligentna obs³uga uszkodzeñ
	Jak tylko eMule pobierze tak± czê¶æ, zostanie ona sprawdzona czy pobrane dane pasuj± do wyliczonego wcze¶niej part hash 
	dla tej czê¶ci. Je¶li tak, zostaje ona udostêpniona by lepiej rozpowszechniæ j± w sieci.
 Je¶li nie, znaczy to ¿e zosta³a uszkodzona i musi byæ pobrana jeszcze raz. By unikn±æ pobierania ca³ych 9.28 MB, ICH pobiera 
	jej pierwsze 180 KB i sprawdza jeszcze raz ca³± czê¶æ od pocz±tku. Je¶li wci±¿ nie zgadza siê part hash, pobrane zostanie kolejne 180 KB, 
	sprawdzone, itd. a¿ do czasu gdy obie warto¶ci bêd± zgodne. W najlepszym przypadku trzeba bêdzie pobraæ jedynie 180 KB 
	danych, je¶li uszkodzenie powsta³o na pocz±tku czê¶ci. W najgorszym przypadku trzeba bêdzie pobraæ ca³± czê¶æ, 
	je¶li uszkodzenie powsta³o gdzie¶ pod koniec. ¦rednio ICH oszczêdza 50% danych w przypadku uszkodzenia.
 
	AICH - Advanced Intelligent Corruption Handling (Zaawansowana inteligentna obs³uga uszkodzeñ)
	Standardowa ICH jest do¶æ efektywna, lecz ma ograniczenia, gdy¿ jest w stanie sprawdziæ tylko ca³e 9.28 MB danych i 
	nie radzi sobie z mniejszymi blokami. Je¶li wiêcej ni¿ jedna pozycja w czê¶ci jest uszkodzona lub z³o¶liwi klienci 
	bez przerwy wysy³aj± uszkodzone dane lub nawet z³y part hash, ICH staje siê bezu¿yteczna.
 Wtedy AICH zajmie siê zachowaniem integralno¶ci 
	danych z minimaln± ilo¶ci± danych do ponownego pobrania tworz±c o wiele lepsze warto¶ci hash.
 
	Root Hash, Block Hash i AICH Hashset
 
	
	  
 Tym razem punktem z którego zaczynamy s± nasze czê¶ci po 9.28 MB. Ka¿da z nich jest dzielona na bloki po 180 KB, czego wynikiem s± 53 
	bloki na ka¿d± czê¶æ, dla których wyliczany jest hash u¿ywaj±c algorytmu SHA1. Warto¶ci te nazywane s± Block Hashes 
	i formuj± najni¿szy poziom kompletnego AICH hashset.
 Rysunek powy¿ej przedstawia jak pe³ne drzewo hashów jest 
	tworzone z bloków pliku podzielonego na 4 czê¶ci. Ka¿da czê¶æ zawiera 53 bloki daj±ce w sumie 212 Block Hashes 
	które tworz± drzewo kolejnych 7 poziomów a¿ obliczony zostanie Root Hash. Ca³e drzewo nazywane jest AICH Hashset.
 Zielone i ¿ó³te pola ukazuj± matematyczne zale¿no¶ci pomiêdzy najmniejszym Block Hash i
	Root Hash. To oznacza, ¿e je¶li mamy zaufany Root Hash, ca³e drzewo mo¿e zostaæ sprawdzone na jego podstawie.
 eMule potrafi tworzyæ linki zawieraj±ce Root Hash, np.
 
	ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/
 
	gdzie h= oznacza Root Hash. Linki do nowych plików powinny zawieraæ t± warto¶æ, gdy¿ znacznie poprawia 
	odporno¶æ na uszkodzenia, dostarczaj±c zaufany Root Hash. Przeczytaj 
	Wiarygodno¶æ Root Hash
 
	Odzyskiwanie uszkodzonych danych
	Gdy tylko eMule wykryje uszkodzenie, ¿±da od losowego klienta przes³ania Pakietu Odbudowuj±cego z kompletnym 
	AICH Hashset. Zawiera on wszystkie 53 Block Hashes uszkodzonej czê¶ci i pewn± liczbê 
	Verifying Hashes ca³ego drzewa. 
	Powy¿szy rysunek przedstawia Pakiet Odbudowuj±cy dla 4 czê¶ci pliku. Liczba Verifying Hashes 
	jest wyznaczana z liczby czê¶ci pliku (2^x >= 'liczba czê¶ci', gdzie x = Liczba Verifying Hashes).
 Po odbiorze Pakietu Odbudowuj±cego eMule sprawdza czy Verifying Hashes zgadzaj± siê z Root Hash. 
	Je¶li do siebie pasuj±, eMule sprawdza wszystkie 53 bloki uszkodzonej czê¶ci czy zgadzaj± siê z Block Hashes 
	z Pakietu Odbudowuj±cego. AICH przywraca nastêpnie wszystkie bloki, które pasuj± do ich Block Hash by 
	zostawiæ tylko te, które nale¿y ponownie pobraæ z powodu uszkodzeñ.
 W logu udana próba odzyskania bêdzie wygl±da³a tak:
 
	09.09.2004 02:43:43: Pobrana czê¶æ 6 jest uszkodzona ([plik])
	09.09.2004 02:43:46: AICH successfully recovered 8.22 MB of 9.28 MB from part 6 for [plik]
 
	Wiarygodno¶æ Root Hash
	Najlepiej pobieraæ pliki z linków zawieraj±cych Root Hash. Przyjmuj±c, ¿e ¼ród³o z którego mamy link 
	jest wiarygodne, Root Hash od razu zostanie zapisany na dysk dla tego pliku.
 Je¶li w linku nie zostanie podany Root Hash, eMule musi zaufaæ ¼ród³om które go prze¶l±. Uwa¿any jest on za 
	godny zaufania je¶li przynajmniej 10 ró¿nych ¼róde³ prze¶le tê sam± warto¶æ i przynajmniej u 92% ¼róde³ jest ona 
	zgodna. Poniewa¿ taki Root Hash nie jest tak godny zaufania, bêdzie poprawny tylko przez czas trwania sesji i 
	nie zostanie zapisany. Tak¿e linki zawieraj±ce taki Root Hash nie mog± zostaæ utworzone.
 Jak tylko eMule ukoñczy ca³y AICH Hashset, np. po pobraniu pliku, propaguje swój Root Hash
	wsród innych klientów.
 
	| Uwagi: |  
	| • | Nowe lub rzadkie pliki prawdopodobnie bêd± mia³y zbyt ma³o ¼róde³ by wygenerowaæ zaufany
		Root Hash. Zalecane jest rozprowadzanie takich plików przez linki zawieraj±ce za³±czony hash. |  
	| • | Je¶li nie istnieje Root Hash lub jest on uszkodzony, eMule wci±¿ jest w stanie pobraæ plik na normalnych 
		warunkach. Funkcja AICH nie mo¿e zostaæ u¿yta w tym przypadku. |  
	| • | Z powodu mo¿liwych du¿ych rozmiarów AICH Hashsets nie s± przechowywane w pamiêci, lecz zapisane w pliku 
		known2.met i odczytywane tylko w razie potrzeby. |  
	| • | AICH jest przydatny tylko dla klientów eMule v.44a i powy¿ej lecz zachowuje kompatybilno¶æ ze starszymi wersjami. |  
	Applies to: v.44a+
		Update on: 2004-09-11 by 
	Monk
 |