Jak działa NanoFarmer
Jak działa NanoFarmer
XCHPool NanoFarmer · Szczegóły techniczne
Co działa na Twoim komputerze, co uruchamia XCHPool, jakie komunikaty krążą między nimi i co chroni Twoje klucze i Twoje nagrody. Dla farmerów, którzy chcą poznać szczegóły.
Farmer i harvester Chia 2.7.4
Protokół poolingu v1, plot NFT
Jeden wychodzący WebSocket
Co robi pełny węzeł i co zmienia NanoFarmer
Do farmowania Chia potrzebne są trzy współpracujące programy. Oficjalna aplikacja Chia uruchamia wszystkie trzy na Twoim komputerze. NanoFarmer zostawia dwa z nich na Twoim komputerze, a trzeci powierza XCHPool.
Harvester
Czyta Twoje ploty. Dla każdego signage pointu stosuje filtr plotów, który przepuszcza tylko niewielką część plotów (obecnie w mainnecie 1 na 256), i szuka dowodów przestrzeni w plotach, które przez niego przejdą.
Farmer
Wysyła każdy signage point do harvestera i odbiera jego dowody. Dowód, który spełnia Twoją trudność w poolu, staje się partialem dla poola; dowód wystarczająco dobry, by wygrać blok, trafia do pełnego węzła. Razem z harvesterem podpisuje partiale i bloki.
Pełny węzeł
Przechowuje kopię całego blockchaina (znacznie ponad 100 GB) i pozostaje zsynchronizowany z siecią. Dostarcza nowy signage point mniej więcej co 9,4 sekundy, a gdy Twój dowód wygrywa, buduje i rozgłasza blok.
NanoFarmer uruchamia na Twoim komputerze oryginalnego farmera i harvestera Chia, bez zmian, a pełny węzeł zastępuje jednym połączeniem z XCHPool. Pełne węzły XCHPool dostarczają signage pointy i budują blok, gdy wygrasz. Nic do pobierania ani synchronizowania, a Twoje klucze zostają u Ciebie.
Twój komputer, z całym blockchainem
Pełne węzły XCHPool, przez gateway
Brak: zaimportuj swoje słowa do Sage lub portfela Chia, aby zobaczyć swoje nagrody
Komponenty
Co robi każda część, gdzie działa i w czym jest napisana.
Aplikacja NanoFarmer
Może uruchamiać się po zalogowaniu: wpis na poziomie użytkownika w Windows, LaunchAgent w macOS, usługa użytkownika systemd w Linuksie. Bez uprawnień administratora. W Windows ikona w obszarze powiadomień ponownie otwiera okno po jego zamknięciu i zamyka NanoFarmer.
Jeden program na system. Działa jako agent w tle, który nadzoruje silnik, uruchamia uplink, udostępnia lokalny interfejs i instaluje aktualizacje.
Okno to natywne okno w macOS, a w Windows i Linuksie okno aplikacji Edge lub Chrome (albo Twojej domyślnej przeglądarki). Zamknięcie go nie zatrzymuje farmowania.
Wiersz poleceń z tymi samymi funkcjami, więc NanoFarmer działa też bez ekranu przez SSH, na przykład na Raspberry Pi.
Uplink
Gdy połączenie zostanie zerwane, sam łączy się ponownie, z przerwą rosnącą od 1 do 30 sekund.
Zastępczy pełny węzeł na 127.0.0.1. Farmer Chia łączy się z nim dokładnie tak, jak z prawdziwym pełnym węzłem, przez TLS 1.3 z własnym certyfikatem silnika.
Kopiuje komunikaty Chia bajt w bajt do jednego połączenia WebSocket z gatewayem. Dochodzi tylko kilka komunikatów tekstowych samego gatewaya (powitanie, ostrzeżenia, statystyki); nigdy nie docierają do farmera, a ostrzeżenia pojawiają się w aplikacji.
Jego strażnik podpisów sprawdza tych kilka komunikatów, które mają znaczenie dla Twoich nagród (zob. Klucze i zaufanie).
Gateway
Przekazuje dalej tylko dowody z plot NFT, które farmują w XCHPool. Ogranicza liczbę połączeń na adres internetowy i łącznie, a gdy któreś odrzuca, mówi aplikacji dlaczego.
Część serwera NanoFarmer, zbudowana na oryginalnym kodzie sieciowym Chia 2.7.4. Dla Twojego farmera jest pełnym węzłem; dla pełnych węzłów XCHPool jest farmerem.
Wysyła każdy nowy signage point raz do każdej połączonej instalacji NanoFarmer, a najnowszy zaraz po Twoim połączeniu.
Dokładnie sprawdza każdy zgłoszony dowód, zanim zobaczy go pełny węzeł: prawdziwy signage point, plot z plot NFT, poprawny dowód, który naprawdę wygrywa, zgodne podpisy, brak powtórzeń.
Serwer NanoFarmer
Usługa REST pod adresem https://pool.xchpool.org, stworzona dla aplikacji. Przeglądarka odczytuje z niej tylko publiczne pliki wydań i manifesty aktualizacji, tak jak strona NanoFarmer dla swoich plików do pobrania.
Znajduje Twoje plot NFT, przygotowuje opłacane przez pool tworzenie i dołączanie oraz udostępnia wydania i podpisane manifesty aktualizacji.
Płaci za nowe plot NFT i opłaty za dołączenie z własnego portfela finansującego, oddzielnego od portfeli samego poola.
Pool
Ten sam XCHPool, w którym farmuje każdy członek, przez standardowy protokół poolingu v1.
Twój farmer sam się rejestruje i wysyła swoje partiale prosto do poola, nie przez gateway. Punkty i wypłaty działają tak jak u każdego innego członka.
Chain API
Publiczne API blockchaina XCHPool, usługa oddzielna od serwera NanoFarmer.
Aplikacja używa go, by znaleźć monetę plot NFT w blockchainie, zanim mu zaufa, a przed dołączeniem z trybu self-pooling także po to, by sprawdzić, czy w plot NFT wciąż czekają nagrody.
Eksplorator i My Farm
„Otwórz My Farm” w aplikacji loguje Cię linkiem logowania do poola z Twojego plot NFT.
Każda instalacja NanoFarmer jest w My Farm osobnym harvesterem. Krótko po tym, jak pool zaakceptuje jej pierwszy partial, aplikacja nadaje mu nazwę od urządzenia (marka, model i system; nigdy nazwa Twojego komputera ani Twoja nazwa użytkownika). Możesz ją zmienić w aplikacji lub w My Farm.
Karta czasów odpowiedzi partiali pokazuje, jak szybko odpowiada każdy harvester.
Od signage pointu do partiala lub bloku
Co dzieje się mniej więcej co 9,4 sekundy, z nazwami komunikatów, których używa Chia.
Nowy signage point
Pełne węzły XCHPool wysyłają każdy signage point do gatewaya, który przekazuje go raz do każdej połączonej instalacji NanoFarmer.
Sprawdzony i przekazany
Uplink sprawdza, czy hashe signage pointu zgadzają się z przesłanymi z nim danymi, a potem przekazuje go farmerowi.
Filtr plotów i wyszukiwanie
Harvester stosuje filtr plotów, szuka dowodów w plotach, które go przeszły, i zwraca każdy znaleziony dowód.
Partial do poola
Dowód, który spełnia Twoją trudność w poolu, staje się partialem. Harvester podpisuje go kluczem plotu, farmer dodaje własny podpis i wysyła go prosto do poola przez HTTPS. Pool go sprawdza, przyznaje punkty i zapisuje czas odpowiedzi.
Zgłoszony
Dowód wystarczająco dobry na blok zostaje zgłoszony. Uplink wymaga, by zawierał Twój własny adres nagrody, i prosi o dane stojące za hashami, o których podpisanie zostanie poproszony. Gateway sprawdza dowód i to, czy naprawdę wygrywa, a potem przekazuje go pełnym węzłom. Przez dowód, który nie wygrywa, pełny węzeł zerwałby połączenie z gatewayem, dlatego gateway sprawdza tak rygorystycznie.
Podpisany
Pełny węzeł buduje blok i prosi o jego podpisy. Uplink przepuszcza tę prośbę tylko wtedy, gdy blok wypłaca nagrodę farmera na Twój adres. Harvester podpisuje, a podpisy wracają tą samą drogą.
Rozgłoszony
Pełny węzeł kończy blok i rozgłasza go. Nagroda farmera (0,125 XCH plus opłaty z bloku) trafia na Twój adres nagrody; udział poola trafia na adres poola Twojego plot NFT, skąd odbiera go XCHPool.
Klucze i zaufanie
Twoje klucze zostają na Twoim komputerze. Oto co to oznacza w praktyce, co NanoFarmer podpisze, a czego nie, oraz co strona XCHPool może, a czego nie może zrobić.
Gdzie znajduje się Twój klucz
Ustawienia mogą ponownie pokazać słowa, abyś zapisał je na papierze: tylko po potwierdzeniu, z hasłem, jeśli je ustawiono, bez przycisku kopiowania, a po minucie znów je ukrywają.
NanoFarmer tworzy nowy klucz z 24 słów lub importuje Twój i przechowuje go we własnym pęku kluczy Chia, we własnym folderze danych, nigdy w folderze kluczy oficjalnej aplikacji Chia.
Farmer odczytuje z tego pęku kluczy swoje klucze: farmera, logowania do poola i właściciela plot NFT. Słowa nigdy nie opuszczają Twojego komputera i nigdy nie są zapisywane w logu.
Opcjonalne hasło (co najmniej 8 znaków) szyfruje pęk kluczy. NanoFarmer przechowuje je w magazynie poświadczeń Twojego systemu, żeby farmowanie startowało samo; gdzie takiego magazynu nie ma, pyta o hasło po każdym uruchomieniu.
Co NanoFarmer podpisuje, a czego odmawia
Wartości poola: URL poola, adres docelowy poola, wysokość blokady i czas opóźnienia są wbudowane w aplikację. Aplikacja odmawia utworzenia, dołączenia lub podpisania czegokolwiek, co się od nich różni, bez względu na to, co twierdzi serwer.
Spendy plot NFT: program pomocniczy odtwarza każdy spend zaproponowany przez serwer z oryginalnego kodu puzzli Chia, porównuje go z wartościami poola wbudowanymi w aplikację i dopiero wtedy podpisuje. Nigdy nie podpisuje hasha, którego nie potrafi odtworzyć.
Bloki: farmer Chia podpisuje hashe bloków, nie widząc, co się za nimi kryje, a pełny węzeł bierze adres nagrody farmera z niepodpisanego pola. Dlatego strażnik podpisów uplinku przepuszcza prośbę o podpis tylko wtedy, gdy towarzyszą jej stojące za nią dane bloku, które zgadzają się z hashami i wypłacają nagrodę farmera na adres ustawiony przez NanoFarmer.
Signage pointy: klucz plotu, który podpisuje signage pointy, podpisuje też bloki. Strażnik przepuszcza tylko signage pointy, których hashe są hashami ich własnych danych źródłowych, a te nigdy nie mogą być danymi bloku, i to najwyżej w tempie kilka razy wyższym niż tempo samego łańcucha.
Co strona XCHPool może, a czego nie może zrobić
Reguły konsensusu Chia kierują udział poola z każdego bloku na adres poola Twojego plot NFT, jak w każdym poolu.
Gateway i pełne węzły XCHPool mogłyby wstrzymać albo zepsuć wygrany przez Ciebie blok, tak jak mógłby to zrobić każdy pełny węzeł, na którym polegasz. Nie mogą zmusić NanoFarmer do podpisania bloku, który wypłaca Twoją nagrodę farmera komuś innemu.
Zmyślone signage pointy (protokół farmera Chia nie przenosi dowodu czasu) kosztowałyby Twój harvester jedynie trochę wyszukiwań, które strażnik ogranicza, i nigdy nie dałyby podpisu pasującego do bloku.
Co wysyła aplikacja
Do eksploratora: nazwę Twojego harvestera, utworzoną z marki, modelu i systemu urządzenia.
Do gatewaya: komunikaty farmera Chia (Twoje dowody i podpisy) oraz wersję aplikacji i silnika, typ Twojego systemu i losowy identyfikator instalacji.
Do poola: Twoje partiale i rejestrację Twojej farmy, jak każdy farmer Chia.
Do serwera NanoFarmer: klucze publiczne, by znaleźć i utworzyć Twój plot NFT, oraz plot NFT, który dołączasz. Nigdy klucza prywatnego i nigdy Twoich słów.
Lokalny interfejs
Okno i wiersz poleceń komunikują się z aplikacją wyłącznie przez 127.0.0.1, z losowym tokenem, nowym przy każdym uruchomieniu, ścisłym sprawdzaniem hosta i pochodzenia (origin) oraz ścisłą polityką bezpieczeństwa treści, więc strony internetowe nie mogą z niego korzystać.
Plot NFT: tworzenie i dołączanie
NanoFarmer farmuje ploty plot NFT z protokołem poolingu v1. W kroku 2 aplikacji szuka plot NFT pod pierwszymi 20 kluczami właściciela Twojego klucza, a potem używa istniejącego, dołącza go albo tworzy nowy.
Plot NFT, który farmuje w XCHPool
Zostaje użyty bez zmian, gdy aplikacja sprawdzi w blockchainie, że należy do Twojego klucza.
Plot NFT w trybie self-pooling
Jeden spend dołączenia. Nagrody, które wciąż czekają w plot NFT, najpierw zostają odebrane dla Ciebie.
Dwa spendy: opuszczenie teraz i dołączenie, gdy minie wysokość blokady innego poola. Podpisujesz oba naraz; serwer wysyła drugi, gdy nadejdzie jego pora.
Zostaje dla Ciebie utworzony nowy plot NFT. Jest gotowy po 3 potwierdzeniach, zwykle w ciągu kilku minut.
Pool płaci 1 mojo i opłatę
Moneta poola płaci 1 mojo na Twój własny adres, a Twój klucz w tej samej transakcji zamienia to mojo w launcher plot NFT. Dzięki temu plot NFT od początku należy do Ciebie: portfel Chia go znajduje, a XCHPool możesz opuścić standardowymi narzędziami.
Darmowe tworzenie jest ograniczone do jednego razu na adres internetowy na 24 godziny i jednego razu na klucz.
Aplikacja zapisuje plot NFT w ustawieniach poola silnika; farmer potem sam rejestruje się w poolu.
Serwer przygotowuje spendy; program pomocniczy odtwarza każdy z nich oryginalnym kodem Chia i podpisuje tylko wtedy, gdy spend kończy się w XCHPool z Twoim własnym kluczem właściciela.
Aplikacja uznaje dołączenie za zakończone dopiero wtedy, gdy pokazuje je blockchain, bez względu na to, co zgłasza serwer.
Dołączenie, które mogłoby nastąpić dopiero później niż za mniej więcej dobę (długa wysokość blokady w starym poolu), jest odrzucane, zanim cokolwiek zostanie podpisane. Opłacana przez pool opłata za dołączenie ma własne limity; po ich przekroczeniu dołączenie i tak się odbywa, tylko bez opłaty od poola.
Wartości poola wbudowane w aplikację
100 bloków, około pół godziny: czas oczekiwania, gdy plot NFT opuszcza XCHPool
7 dni (604 800 sekund): nagrody, których pool nie odbierze w tym czasie, można odebrać z powrotem na Twój adres
Aktualizacje i bezpieczeństwo wydań
Aplikacja i silnik aktualizują się osobno. Nowy silnik jest pobierany w trakcie farmowania i podmieniany, gdy nie trwa żadne zadanie plot NFT; jeśli się nie uruchomi, wraca poprzedni silnik. Nowa wersja aplikacji działa od następnego uruchomienia aplikacji albo od razu, gdy aktualizujesz z poziomu aplikacji.
Aplikacja sprawdza aktualizacje przy starcie i co 6 godzin, na podstawie manifestu podpisanego kluczem Ed25519. Wbudowane są dwa klucze publiczne, więc klucz podpisujący można wymienić.
Manifest wymienia każdy plik z jego rozmiarem i SHA-256, po pewnym czasie wygasa, może ustalić wersję minimalną i nigdy nie cofa aplikacji ani silnika do starszej wersji.
Dwa kanały: stabilny i beta. Nowa wersja może najpierw trafić do części instalacji, wybranych według hasha losowego identyfikatora instalacji.
Poprzednia wersja każdego z nich zostaje na dysku na wypadek wycofania zmian.
Klucz podpisujący jest przechowywany offline na jednej maszynie, nigdy na serwerze ani w potoku budowania.
Plik sum kontrolnych każdego wydania też jest podpisany, na potrzeby pierwszego pobrania, a strona NanoFarmer pokazuje SHA-256 każdego pliku.
Programy nie są jeszcze podpisane certyfikatami Apple ani Microsoft, więc Twój system poprosi o potwierdzenie pierwszego uruchomienia.
Silnik przechowuje Twój pęk kluczy i aktualizuje się bez kliknięcia, więc do wydania silnika nie może wystarczyć jedna maszyna budująca. Każde wydanie silnika jest budowane dwa razy z otagowanego commita, w dwóch oddzielnych, czystych środowiskach budowania. Kompilacja jest odtwarzalna, a narzędzie do podpisywania odmawia podpisu, jeśli obie kompilacje nie dały pakietów identycznych bajt w bajt.
Platformy i wymagania
Instalator (na poziomie użytkownika) lub przenośny zip
macOS 15 lub nowszy, Apple silicon
macOS 15 lub nowszy, Intel
Linux x86-64, glibc 2.28 lub nowszy
Linux ARM64, glibc 2.28 lub nowszy (Raspberry Pi 4 i 5 z systemem 64-bitowym)
tar.gz ze skryptem instalacyjnym i usługą użytkownika systemd
Dysk
Około 1 GB wolnego miejsca na aplikację, silnik, poprzednią wersję każdego z nich i logi. Bez blockchaina.
Sieć
Porty lokalne
Silnik używa własnych portów obok domyślnych portów Chia: daemon 55410, farmer 8457, uplink 8454, RPC farmera 8569, RPC harvestera 8570. Gdy któryś jest zajęty, cały zestaw przesuwa się o 100 w górę.
Parametry czasowe i czasy odpowiedzi
Farmowanie Chia działa według zegara. Oto liczby, które mają znaczenie.
Partiale nie przechodzą przez gateway. Tylko signage point przychodzi do Ciebie z pełnych węzłów XCHPool przez gateway; farmer wysyła partial prosto do poola.
64 signage pointy w każdym 10-minutowym sub-slocie
harvester Chia ostrzega, gdy wyszukiwanie w plocie trwa dłużej
od signage pointu do infuzji bloku: dowód, blok i jego podpisy muszą być gotowe wcześniej
czas, jaki gateway daje Twojemu farmerowi na zwrócenie podpisów bloku
Pool mierzy czas odpowiedzi każdego partiala: od chwili, gdy signage point dotarł do poola, do chwili nadejścia Twojego partiala. Partial, który dotrze po limicie czasu poola, jest odrzucany jako spóźniony i nic nie zarabia.
My Farm pokazuje Twoje czasy odpowiedzi dla każdego harvestera: medianę, 95. percentyl i Twój zapas do limitu, a limit jest zaznaczony czerwoną przerywaną linią. W farmie NanoFarmer czas obejmuje przekazanie przez gateway; typowe przyczyny wolnych odpowiedzi to wolne lub uśpione dyski, ploty na pamięci sieciowej i przeciążony komputer.
Czego NanoFarmer nie robi
Bez pełnego węzła: nie pobiera, nie przechowuje ani nie synchronizuje blockchaina.
Bez portfela: aby zobaczyć lub wysłać swoje nagrody, zaimportuj swoje słowa do Sage lub portfela Chia.
Bez plotów OG: ploty utworzone z kluczem publicznym poola (-p) są pomijane, a aplikacja je wypisuje, żebyś wiedział, które to.
Bez plotowania: aplikacja objaśnia plottery i uzupełnia polecenie, ale sama nie tworzy plotów.
Na razie bez innych pooli: farmuje tylko plot NFT w XCHPool.
Bez plotów powyżej C7 i bez skompresowanych plotów Gigahorse, plotów NoSSD ani DrPlotter: Chia 2.7.4 nie potrafi ich farmować.
Jeszcze bez plotów Proof of Space 2: wymagają Chia 3.0, a silnik może przejść na tę wersję własną aktualizacją.
Bez przekierowania portów: każde połączenie wychodzi z Twojego komputera.
Decyzje projektowe
WebSocket zamiast portu peerów Chia
Bez nowego protokołu farmowania
WebSocket przenosi oryginalne komunikaty protokołu farmera Chia bajt w bajt. Farmer to niezmieniony farmer Chia i nie może rozpoznać, że nie rozmawia z prawdziwym pełnym węzłem.
Matematyka kluczy tylko w kodzie Chia
Chia wyprowadza swoje klucze na własny sposób, a inna biblioteka mogłaby zrobić to źle i nikt by tego nie zauważył. Dlatego każde wyprowadzenie klucza Chia i każdy podpis wykonuje oryginalny kod Chia w silniku; aplikacja w Go nie robi żadnego z nich.
Aplikacja i silnik osobno
Aplikacja w Go pozostaje mała, a silnik może przejść na nową wersję Chia we własnym tempie, na przykład na Chia 3.0 przed forkiem Proof of Space 2.
Pytania i odpowiedzi
Czy XCHPool może przekierować moją nagrodę za blok?
Nagrody farmera nie może: NanoFarmer podpisuje tylko blok, który wypłaca ją na Twój adres. Udział poola trafia na adres poola Twojego plot NFT zgodnie z regułami Chia, jak w każdym poolu. Strona XCHPool mogłaby natomiast wstrzymać wygrany przez Ciebie blok, tak jak mógłby to zrobić każdy pełny węzeł, na którym polegasz.
Co się dzieje, gdy moje połączenie z internetem zostanie zerwane?
Uplink sam łączy się ponownie, z przerwą rosnącą od 1 do 30 sekund, a farmer Chia ponownie łączy się z uplinkiem. Jeśli połączenie zerwie się między wygrywającym dowodem a prośbą o podpis, gateway wyśle tę prośbę do Twojego nowego połączenia.
Czy mogę uruchomić NanoFarmer na kilku komputerach z jednym kluczem?
Tak. Każda instalacja tworzy własne certyfikaty harvestera, więc każdy komputer pojawia się w My Farm jako osobny harvester, z własną nazwą.
Czy mogę opuścić XCHPool?
Tak. Plot NFT należy do Ciebie, a portfel Chia może przenieść go do innego poola lub na self-pooling. Wysokość blokady XCHPool to 100 bloków, około pół godziny.
Dlaczego aplikacja nie wysyła partiali przez gateway?
Nie musi. Partiale używają standardowego protokołu poolingu przez HTTPS, dokładnie tak jak u farmera z pełnym węzłem. Do XCHPool przeniesiona jest tylko rola pełnego węzła.