
P2Pool został pomyślany niejako jako "nakładka" na sieć bitcoina. Z sieci bitcoin czerpie też sposób rozliczania.
P2Pool wykorzystuje własny łańcuch share podobnie jak robi to sieć bitcoina. Każde share odpowiada blokowi. Każde share zawiera skrót poprzedniego share, skrót bloku oraz transakcji w bloku. Najważniejszą (i przynajmniej ta jedyną) jest transakcja wypłaty (podziału nagrody) pomiędzy kopiących w poolu. Dzięki takiej konstrukcji nie ma możliwości aby kopacz "zabrał" sobie blok, bo znaleziony share będzie prawidłowy tylko dla bloku który już zawiera transakcję wypłaty.
Podobnie jak w sieci bitcoina każde share jest rozsyłane do wszystkich podłączonych nodów. Może się więc zdarzyć, że 2 nody w niemal tym samym momencie znajdą share. I podobnie jak w sieci bitcoin kolejne share w poolu zdecyduje które z nich będzie w łańcuchu do wypłaty a które odpadnie jako orphaned (porzucone/osierocone). Ważne jest więc, aby mieć podłączonych sporą ilość klientów i być na bieżąco z łańcuchem oraz szybko rozsyłać własne share. Wiąże się to oczywiście ze sporym ruchem na łączach. Pomiędzy nodami P2Pool rozsyłane są też informacje o transakcjach oraz blokach widzianych przez nody, przyspiesza się więc komunikację pomiędzy nodami sieci bitcoin oraz mamy komunikaty "punishing share" w momencie gdy pojawiają się łańcuchu poprawne share należące jednak do starego już bloku w sieci bitcoin.
Share typu DOA (Dead On Arrival - martwy w momencie przybycia) powstaje w momencie gdy miner wyśle share które należy już do poprzedniego share w łańcuchu. Ponieważ nie może być ono w żaden sposób naliczone odpada automagicznie. Ponieważ jednak łańcuch P2Poola ma 10s pomiędzy własnymi blokami/share (sieć bitcoin ma 10 minut) jest wielka szansa że nawet DOA share jest dla łańcucha bitcoin prawidłowe. KAŻDE share wysłane przez minera jest więc sprawdzane pod kątem trudności. Jeżeli okaże się, że jest to blok w sieci bitcoin P2Pool wysyła to oczywiście do daemona i pool zalicza wypłatę. Nam ucieka tylko 1 share, ale wypłata jest naliczana z całego aktualnego łańcucha dla wszystkich kopaczy poola. Ponadto kopacz który znalazł share jest nagradzany dodatkowo 0,5% wartości bloku. Reszta bloku (liczone cały czas wraz z prowizjami za transakcje) jest dzielone pomiędzy kopaczy. W sumie, to naliczanie udziału dokonywane jest wcześniej ponieważ to co kopiemy JUŻ musi zawierać transakcję wypłaty

Co każde otrzymane share P2pool oblicza, jakie trudne powinno być kolejne share w łańcuchu aby utrzymać 10s pomiędzy sharesami. W bitcoinie odbywa się to co ok 2 tgodnie, tu mamy co każdy share. Unikamy w ten sposób "skakania" po poolu, gdzie mocny kopacz wskakiwałby na chwilę łapiąc dużo share i uciekał przy wzroście trudności. Regulacja jest natychmiastowa więc nic takie zachowanie nie daje.
P2Pool reguluje również siłę share o które pyta minera. Standardowo jest to 1, jednak gdy node otrzymuje więcej niż 1 "małe" share na sekundę trudność podstawowego share jest zwiększane do momentu aż otrzymuje ok 1 na sekundę. Zapobiega to zapychaniu łącza oraz odciąża sam pool. Do łańcucha share są zapisywane jednak share o dużo większej trudności zależnej od aktualnej mocy całego poola. Ze względu na to, że wartość ta ciągle jest zmienna obliczanie wypłaty dla każdego kopacza nie jest tylko ilość share/wszystkie share ale share*moc+share*moc..../suma*moc wszystkich share w łańcuchu. Dzięki temu jak moc poola wzrośnie i znajdziemy share a następnie moc spadnie i znowu znajdziemy share to pierwsze będzie miało większą wartość w BTC niż drugie. Suma summarum wszystko jednak zależy od naszej mocy i mocy sieci bitcoin, bo to ona decyduje o tym jak często jest wypłata. Zwiększanie trudności share w poolu wpływa tylko na "wariację" czyli stałość wypłaty. Im mniejszą mamy moc tym rzadziej wpada nam share. Ponieważ jest to losowe może się zdarzyć, że przy trudności poola 1200 (jak teraz) i mocy koparki 100MH/s możemy przez cały dzień nie znaleźć jednego share i w efekcie nie dostaniemy nic, nawet jak wpadną bloki w poolu.
Do wypłaty liczą się share z ostatnich 24h kopania, ale każde share może być rozliczone max 3 razy. Chcąc uzyskać więc w miarę stałe wypłaty w okresie np. tygodnia należy kopać w miarę możliwości stałą ilość czasu (ofc 24/7 najlepiej). NIE należy liczyć wypłat z dnia czy 2 kopania ponieważ ze względu na duży rozrzut w czasie kopania bloków przez pool są to bardzo różnie wartości.
P2Pool dzięki swojej konstrukcji jest całkowicie odporny na ataki typu DDOS, ponieważ żeby zatrzymać całkiem pool trzeba by zaatakować wszystkie jego nody w tym samym czasie. Jest to co najmniej 200-250 maszyn, sporo postawionych na dobrych hostingach, sporo jest też "prywatnych" (nie mają forwardowanych/otwartych portów), nie ma więc możliwości wyłączenia go. Nie mając postawionego własnego noda, warto w ustawieniach minera podać 2 czy 3 inne bliskie sobie nody jako backup. Kopiąc pod ten sam adres (podawany jako username) nie ma znaczenia na którym nodzie kopiemy - zapłata za wszystkie znalezione share jest sumowana.
Mam nadzieję że udało mi się rozwiać sporo niepewności i odpowiedzieć na większość zadanych i nie zadanych pytań co do działania P2Pool.
Zakładam, że będę ten post edytował w razie konieczności
