@@ -220,8 +213,8 @@ Nie. Po wyjściu walidatora i wypłaceniu jego pełnego salda wszelkie dodatkowe
## Dalsza lektura {#further-reading}
-- [Wypłaty Staking Launchpad](https://launchpad.ethereum.org/withdrawals)
-- [EIP-4895: Wypłaty z łańcucha śledzącego jako operacje](https://eips.ethereum.org/EIPS/eip-4895)
-- [PEEPanEIP #94: Wypłata zestakowanego ETH (testowanie) z Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE)
-- [PEEPanEIP#68: EIP-4895: Wypłaty push łańcucha śledzącego jako operacje z Alexem Stokesem](https://www.youtube.com/watch?v=CcL9RJBljUs)
-- [Zrozumienie efektywnego bilansu walidatora](https://www.attestant.io/posts/understanding-validator-effective-balance/)
+- [Wypłaty w Staking Launchpad](https://launchpad.ethereum.org/withdrawals)
+- [EIP-4895: Wypłaty push z łańcucha Beacon jako operacje](https://eips.ethereum.org/EIPS/eip-4895)
+- [PEEPanEIP #94: Wypłata stakowanego ETH (testowanie) z udziałem Potuz i Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8EsUstwmGtyE)
+- [PEEPanEIP#68: EIP-4895: Wypłaty push z łańcucha Beacon jako operacje z Alexem Stokesem](https://www.youtube.com/watch?v=CcL9RJBljUs)
+- [Zrozumieć efektywne saldo walidatora](https://www.attestant.io/posts/understanding-validator-effective-balance/)
diff --git a/public/content/translations/pl/web3/index.md b/public/content/translations/pl/web3/index.md
index 8c184abddc5..8694c8f7f46 100644
--- a/public/content/translations/pl/web3/index.md
+++ b/public/content/translations/pl/web3/index.md
@@ -1,18 +1,23 @@
---
-title: Co to jest Web3 i dlaczego jest ważny?
-description: Wprowadzenie do Web3 — kolejnej ewolucji sieci WWW — i dlaczego ma znaczenie.
+title: "Co to jest Web3 i dlaczego jest ważny?"
+description: "Wprowadzenie do Web3 — kolejnej ewolucji sieci WWW — i dlaczego ma znaczenie."
lang: pl
---
# Wprowadzenie do Web3 {#introduction}
+
+
+
+
Centralizacja pomogła miliardom ludzi wejść do sieci World Wide Web i stworzyła stabilną, niezawodną infrastrukturę, na której się opiera. Jednocześnie garstka scentralizowanych podmiotów kontroluje duże obszary sieci World Wide Web, jednostronnie decydując, co powinno, a co nie powinno być dozwolone.
-Web3 jest odpowiedzią na ten dylemat. Zamiast sieci zmonopolizowanej przez duże firmy technologiczne, Web3 jest zdecentralizowany i jest tworzony, obsługiwany i jest własnością użytkowników. Web3 oddaje władzę w ręce osób indywidualnych, a nie korporacji. Zanim porozmawiamy o Web3, dowiedzmy się, jak się tu znaleźliśmy.
+Web3 jest odpowiedzią na ten dylemat. Zamiast sieci zmonopolizowanej przez duże firmy technologiczne, Web3 jest zdecentralizowany i jest tworzony, obsługiwany i jest własnością użytkowników. Web3 oddaje władzę w ręce osób indywidualnych, a nie korporacji.
+Zanim porozmawiamy o Web3, dowiedzmy się, jak się tu znaleźliśmy.
-## Wczesna sieć {#early-internet}
+## Wczesny Internet {#early-internet}
Większość ludzi myśli o sieci jak o ciągłym filarze współczesnego życia — została wynaleziona i od tego czasu po prostu istnieje. Jednak sieć, którą większość z nas zna dzisiaj, znacznie różni się od pierwotnych wyobrażeń. Aby lepiej to zrozumieć, warto podzielić krótką historię sieci na kilka okresów — Web 1.0 i Web 2.0.
@@ -22,27 +27,27 @@ W 1989 roku, w CERN w Genewie, Tim Berners-Lee był zajęty opracowywaniem proto
Pierwsza odsłona dzieła Bernersa-Lee, obecnie znanego jako „Web 1.0”, miała miejsce mniej więcej w latach 1990-2004. Web 1.0 było głównie statycznymi stronami internetowymi należącymi do firm, a interakcja między użytkownikami była bliska zeru — osoby rzadko tworzyły treści — co doprowadziło do tego, że było znane jako sieć tylko do odczytu.
-
+
### Web 2.0: Odczyt i zapis (2004-teraz) {#web2}
Okres Web 2.0 rozpoczął się w 2004 roku wraz z pojawieniem się platform mediów społecznościowych. Zamiast tylko do odczytu, sieć ewoluowała do odczytu i zapisu. Zamiast dostarczać treści użytkownikom, firmy zaczęły również dostarczać platformy do udostępniania treści wygenerowanych przez użytkowników i angażowania się w interakcje między użytkownikami. W miarę coraz większej ilości korzystającej z Internetu garstka czołowych firm zaczęła kontrolować nieproporcjonalnie dużą część ruchu i wartości generowanej w sieci. Web 2.0 zapoczątkował również model przychodów oparty na reklamach. Podczas gdy użytkownicy mogli tworzyć treści, nie byli ich właścicielami ani nie czerpali korzyści z ich monetyzacji.
-
+
## Web 3.0: Odczyt, zapis i posiadanie {#web3}
-Założenie „Web 3.0” zostało wymyślone przez współzałożyciela [Ethereum](/what-is-ethereum/) Gavina Wooda wkrótce po uruchomieniu Ethereum w 2014 roku. Gavin przedstawił rozwiązanie problemu, który odczuwało wielu wczesnych użytkowników kryptowalut: sieć wymagała zbyt dużego zaufania. Oznacza to, że większość sieci, którą ludzie znają i używają dzisiaj, opiera się na zaufaniu garstce prywatnych firm, które działają w najlepszym interesie publicznym.
+Założenie „Web 3.0” zostało wymyślone przez współzałożyciela [Ethereum](/what-is-ethereum/), Gavina Wooda, wkrótce po uruchomieniu Ethereum w 2014 roku. Gavin przedstawił rozwiązanie problemu, który odczuwało wielu wczesnych użytkowników kryptowalut: sieć wymagała zbyt dużego zaufania. Oznacza to, że większość sieci, którą ludzie znają i używają dzisiaj, opiera się na zaufaniu garstce prywatnych firm, które działają w najlepszym interesie publicznym.
-
+
### Co to jest Web3? {#what-is-web3}
-Web3 stał się terminem określającym wizję nowego, lepszego Internetu. U podstaw, Web3 wykorzystuje blockchainy, kryptowaluty i NFT, aby oddać władzę użytkownikom w formie własności. [Post z 2020 roku na Twitterze](https://twitter.com/himgajria/status/1266415636789334016) ujął to najlepiej: Web1 był tylko do odczytu, Web2 jest do odczytu i zapisu, Web3 będzie do odczytu, zapisu i posiadania.
+Web3 stał się terminem określającym wizję nowego, lepszego Internetu. U podstaw, Web3 wykorzystuje blockchainy, kryptowaluty i NFT, aby oddać władzę użytkownikom w formie własności. [Post na Twitterze z 2020 roku](https://twitter.com/himgajria/status/1266415636789334016) ujął to najlepiej: Web1 był tylko do odczytu, Web2 jest do odczytu i zapisu, Web3 będzie do odczytu, zapisu i posiadania.
-#### Główne założenia Web3 {#core-ideas}
+#### Podstawowe idee Web3 {#core-ideas}
Chociaż trudno jest podać dokładną definicję tego, czym jest Web3, kilka podstawowych zasad kieruje jego tworzeniem.
@@ -59,7 +64,7 @@ Chociaż zabójcze funkcje Web3 nie są odizolowane i nie pasują do oddzielnych
Web3 daje Ci prawo własności do Twoich zasobów cyfrowych w bezprecedensowy sposób. Załóżmy na przykład, że grasz w grę web2. Jeśli kupisz przedmiot w grze, jest on powiązany bezpośrednio z Twoim kontem. Jeśli twórcy gry usuną Twoje konto, stracisz te przedmioty. Lub, jeśli przestaniesz grać w grę, stracisz wartość zainwestowaną w przedmioty w grze.
-Web3 pozwala na bezpośrednią własność poprzez [niewymienialne tokeny (NFT)](/glossary/#nft). Nikt, nawet twórcy gry, nie ma prawa odebrać ci Twoich własności. A jeśli przestaniesz grać, możesz sprzedać lub wymienić swoje przedmioty w grze na otwartych rynkach i odzyskać ich wartość.
+Web3 pozwala na bezpośrednią własność poprzez [niewymienialne tokeny (NFT)](/glossary/#nft). Nikt, nawet twórcy gry, nie ma prawa odebrać ci Twoich własności. A jeśli przestaniesz grać, możesz sprzedać lub wymienić swoje przedmioty w grze na otwartych rynkach i odzyskać ich wartość. Odkryj [gry onchain](/gaming/), aby zobaczyć to w akcji.
@@ -81,7 +86,7 @@ W Web3 dane użytkownika znajdują się w blockchainie. Kiedy zdecydujesz się o
Web 2.0 wymaga od twórców treści zaufania platformom, że nie zmienią zasad, ale odporność na cenzurę jest natywną cechą platformy Web3.
-#### Zdecentralizowane autonomiczne organizacje (DAO) {#daos}
+#### Zdecentralizowane organizacje autonomiczne (DAO) {#daos}
Oprócz posiadania swoich danych, w Web3 możesz być właścicielem platformy jako grupy, używając tokenów, które działają jak udziały w firmie. DAO pozwalają koordynować zdecentralizowaną własność platformy i podejmować decyzje dotyczące jej przyszłości.
@@ -94,7 +99,7 @@ Ludzie jednak definiują wiele społeczności Web3 jako DAO. Wszystkie te społe
Dowiedz się więcej o DAO
- Więcej informacji o: DAO
+ Więcej o DAO
@@ -103,31 +108,32 @@ Ludzie jednak definiują wiele społeczności Web3 jako DAO. Wszystkie te społe
Tradycyjnie należałoby utworzyć konto dla każdej używanej platformy. Na przykład, możesz mieć konto na Twitterze, konto na YouTubie i konto na Reddit. Chcesz zmienić wyświetlaną nazwę lub zdjęcie profilowe? Musisz to zrobić na każdym koncie. W niektórych przypadkach można korzystać z logowania społecznościowego, ale wiąże się to z dobrze znanym problemem — cenzurą. Za pomocą jednego kliknięcia platformy te mogą zablokować dostęp do całego Twojego życia online. Co gorsza, wiele platform wymaga od użytkownika zaufania do nich i podania danych osobowych w celu utworzenia konta.
-Web3 rozwiązuje te problemy, umożliwiając kontrolowanie cyfrowej tożsamości za pomocą adresu Ethereum i profilu [Ethereum Name Service (ENS)](/glossary/#ens). Korzystanie z adresu Ethereum zapewnia pojedynczy login na różnych platformach, który jest bezpieczny, odporny na cenzurę i anonimowy.
+Web3 rozwiązuje te problemy, umożliwiając kontrolowanie swojej tożsamości cyfrowej za pomocą adresu Ethereum i profilu [Usługi nazw Ethereum (ENS)](/glossary/#ens). Korzystanie z adresu Ethereum zapewnia pojedynczy login na różnych platformach, który jest bezpieczny, odporny na cenzurę i anonimowy.
### Natywne płatności {#native-payments}
-Infrastruktura płatności Web2 opiera się na bankach i przetwórcach płatności, wykluczając osoby bez kont bankowych lub te, które mieszkają w granicach niewłaściwego kraju. Web3 wykorzystuje takie tokeny jak [ETH](/glossary/#ether) do wysyłania pieniędzy bezpośrednio w przeglądarce i nie wymaga zaufanej strony trzeciej.
+Infrastruktura płatności Web2 opiera się na bankach i przetwórcach płatności, wykluczając osoby bez kont bankowych lub te, które mieszkają w granicach niewłaściwego kraju.
+Web3 wykorzystuje tokeny, takie jak [ETH](/glossary/#ether), do wysyłania pieniędzy bezpośrednio w przeglądarce i nie wymaga zaufanej strony trzeciej.
Więcej na temat ETH
-## Ograniczenia sieci Web3 {#web3-limitations}
+## Ograniczenia Web3 {#web3-limitations}
Pomimo licznych zalet Web3 w jego obecnej formie, nadal istnieje wiele ograniczeń, które ekosystem musi rozwiązać, aby mógł on się rozwijać.
### Dostępność {#accessibility}
-Ważne funkcje Web3, takie jak logowanie za pomocą Ethereum, są już dostępne dla każdego bez ponoszenia żadnych kosztów. Jednak względny koszt transakcji jest nadal zbyt wysoki dla wielu osób. Jest mniej prawdopodobne, że Web3 będzie wykorzystywany w mniej zamożnych, rozwijających się krajach ze względu na wysokie opłaty transakcyjne. W Ethereum wyzwania te rozwiązywane są poprzez [plan działania](/roadmap/) i [rozwiązania do skalowania warstwy 2](/glossary/#layer-2). Technologia jest gotowa, ale potrzebujemy wyższego poziomu wykorzystania warstwy 2, aby Web3 był dostępny dla każdego.
+Ważne funkcje Web3, takie jak logowanie za pomocą Ethereum, są już dostępne dla każdego bez ponoszenia żadnych kosztów. Jednak względny koszt transakcji jest nadal zbyt wysoki dla wielu osób. Jest mniej prawdopodobne, że Web3 będzie wykorzystywany w mniej zamożnych, rozwijających się krajach ze względu na wysokie opłaty transakcyjne. W Ethereum wyzwania te są rozwiązywane poprzez [plan działania](/roadmap/) i [rozwiązania skalujące warstwy 2](/glossary/#layer-2). Technologia jest gotowa, ale potrzebujemy wyższego poziomu wykorzystania warstwy 2, aby Web3 był dostępny dla każdego.
### Doświadczenie użytkownika {#user-experience}
-Techniczna bariera wejścia do korzystania z Web3 jest obecnie zbyt wysoka. Użytkownicy muszą zrozumieć kwestie bezpieczeństwa, zrozumieć złożoną dokumentację techniczną i poruszać się po nieintuicyjnych interfejsach użytkownika. W szczególności [dostawcy portfeli](/wallets/find-wallet/) pracują nad rozwiązaniem tego problemu, ale potrzebne są dalsze postępy, zanim Web3 zostanie masowo przyjęty.
+Techniczna bariera wejścia do korzystania z Web3 jest obecnie zbyt wysoka. Użytkownicy muszą zrozumieć kwestie bezpieczeństwa, zrozumieć złożoną dokumentację techniczną i poruszać się po nieintuicyjnych interfejsach użytkownika. [Dostawcy portfeli](/wallets/find-wallet/), w szczególności, pracują nad rozwiązaniem tego problemu, ale potrzebne są dalsze postępy, zanim Web3 zostanie masowo przyjęty.
### Edukacja {#education}
-Web3 wprowadza nowe standardy, które wymagają uczenia się innych modeli mentalnych niż te używane w Web2.0. Podobna akcja edukacyjna miała miejsce, gdy Web1.0 zyskiwał popularność pod koniec lat 90. ; zwolennicy sieci WWW wykorzystali mnóstwo technik edukacyjnych, aby edukować społeczeństwo, od prostych metafor (infostrady, przeglądarki, surfowanie po sieci) po [transmisje telewizyjne](https://www.youtube.com/watch?v=SzQLI7BxfYI). Web3 nie jest trudny, ale jest inny. Inicjatywy edukacyjne informujące użytkowników Web2 o tych modelach Web3 są niezbędne dla jego sukcesu.
+Web3 wprowadza nowe standardy, które wymagają uczenia się innych modeli mentalnych niż te używane w Web2.0. Podobna akcja edukacyjna miała miejsce, gdy Web1.0 zyskiwał popularność pod koniec lat 90.; zwolennicy sieci WWW wykorzystali mnóstwo technik edukacyjnych, aby edukować społeczeństwo, od prostych metafor (infostrady, przeglądarki, surfowanie po sieci) po [transmisje telewizyjne](https://www.youtube.com/watch?v=SzQLI7BxfYI). Web3 nie jest trudny, ale jest inny. Inicjatywy edukacyjne informujące użytkowników Web2 o tych modelach Web3 są niezbędne dla jego sukcesu.
Ethereum.org przyczynia się do edukacji Web3 poprzez nasz [Program Tłumaczeń](/contributing/translation-program/), mający na celu przetłumaczenie ważnych treści Ethereum na jak najwięcej języków.
@@ -143,21 +149,21 @@ Jesteśmy dopiero na początku tworzenia lepszej sieci z Web3, ale ponieważ nad
## Jak mogę się zaangażować {#get-involved}
-- [Wybierz portfel](/wallets/)
+- [Zdobądź portfel](/wallets/)
- [Znajdź społeczność](/community/)
- [Odkryj aplikacje Web3](/apps/)
- [Dołącz do DAO](/dao/)
-- [Buduj na Web3](/developers/)
+- [Twórz w Web3](/developers/)
-## Dodatkowo przeczytaj {#further-reading}
+## Dalsza lektura {#further-reading}
Web3 nie jest jednoznacznie zdefiniowany. Różni uczestnicy społeczności mają na to różne spojrzenia. Oto kilka z nich:
-- [Czym jest Web3? Wyjaśnienie zdecentralizowanego Internetu przyszłości](https://www.freecodecamp.org/news/what-is-web3) — _Nader Dabit_
-- [Zrozumieć Web3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) — _Josh Stark_
-- [Dlaczego Web3 ma znaczenie](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_
-- [Dlaczego decentralizacja ma znaczenie](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) — _Chris Dixon_
-- [Wygląd Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) — _a16z_
-- [Debata o Web3](https://www.notboring.co/p/the-web3-debate) — _Packy McCormick_
+- [Czym jest Web3? [Wyjaśnienie zdecentralizowanego internetu przyszłości](https://www.freecodecamp.org/news/what-is-web3) – _Nader Dabit_
+- [Zrozumieć Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_
+- [Dlaczego Web3 ma znaczenie](https://a16zcrypto.com/posts/article/why-web3-matters/) — _Chris Dixon_
+- [Dlaczego decentralizacja ma znaczenie](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_
+- [Krajobraz Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_
+- [Debata o Web3](https://www.notboring.co/p/the-web3-debate) – _Packy McCormick_
diff --git a/public/content/translations/pl/what-are-apps/index.md b/public/content/translations/pl/what-are-apps/index.md
new file mode 100644
index 00000000000..7a07bfcb34c
--- /dev/null
+++ b/public/content/translations/pl/what-are-apps/index.md
@@ -0,0 +1,80 @@
+---
+title: Aplikacje Ethereum
+metaTitle: Aplikacje Ethereum | Zdecentralizowane aplikacje na sieci Ethereum
+description: "Aplikacje na sieci Ethereum są darmowe, globalne i używają publicznego łańcucha bloków zamiast serwerów prywatnej firmy To oznacza, że możesz używać tego samego konta w każdym projekcie, zachowując swoją prywatność."
+lang: pl
+template: use-cases
+emoji: ":handshake:"
+sidebarDepth: 2
+showDropdown: false
+image: /images/doge-computer.png
+summary: "Aplikacje na sieci Ethereum są darmowe, globalne i używają publicznego łańcucha bloków zamiast serwerów prywatnej firmy To oznacza, że możesz używać tego samego konta w każdym projekcie, zachowując swoją prywatność."
+---
+
+## Aplikacje z supermocami {#apps-with-superpowers}
+
+Aplikacje Ethereum mogą sprawiać wrażenie normalnych aplikacji. Ale na zapleczu mają one specjalne właściwości.
+
+W momencie opublikowania na sieci Ethereum staje się ona niemożliwa do zatrzymania. Dzieje się tak, ponieważ sieć Ethereum jest zdecentralizowana pośród tysięcy komputerów na całym świecie. Nikt nie może wyłączyć aplikacji działających na sieci Ethereum, ponieważ nie ma jednego konkretnego serwera, który można wziąć za cel. Ethereum jest także neutralne i dlatego każdy, gdziekolwiek jest na świecie, może go używać lub nawet połączyć się z nim i budować na nim swoje modyfikacje.
+
+## Co to jest dapka? {#what-is-a-dapp}
+
+Aplikacje Ethereum mają swoją logikę działania na łańcuchu bloków Ethereum zamiast na scentralizowanym serwerze. Właśnie dlatego często były nazywane zdecentralizowanymi aplikacjami czy, w skrócie, dapkami.
+
+
+
+
+
+
+
+## Dlaczego ma to znacznie {#why-does-this-matter}
+
+Aplikacje Ethereum mogą robić rzeczy, które nie są niewykonalne dla tradycyjnych apek. Na przykład pożyczyć pieniądze nieznajomemu z gwarancją, że otrzymasz je z powrotem, razem z odsetkami. Bez opłacania "zaufanego" pośrednika, takiego jak prawnik, który obsłuży tę transakcję.
+
+Są to aplikacje do wszystkiego: grania, finansów, pracy, komunikacji, przechowywania i wielu innych zastosowań. W przypadku większości aplikacji nie jesteś zmuszany do oglądania reklam czy ograniczony zastrzeżonym dostępem.
+
+Wystarczy portfel Ethereum i odrobina ETH, aby zacząć korzystać z dowolnej aplikacji Ethereum.
+
+## Jak to działa {#how-does-it-work}
+
+Aplikacje są zasilane przez inteligentne kontrakty- fragmenty kodu, które żyją na łańcuchu bloków Ethereum. W przeciwieństwie do tradycyjnych apek nie potrzebują firmy, aby działać.
+
+| Funkcja | Tradycyjne aplikacje | Aplikacje Ethereum |
+| ---------------------------------------- | ------------------------ | -------------------------------- |
+| **Kto ją kontroluje?** | Firma | Nikt |
+| **Działa na** | Serwerze prywatnej firmy | Publicznym blockchainie Ethereum |
+| **Czy może zostać ocenzurowana?** | Tak | Nie |
+| **Kto jest właścicielem Twoich danych?** | Zwykle nie Ty | Ty |
+
+
+
+
+
+
+
+
+## Aplikacje Ethereum są jak klocki lego {#ethereum-apps-are-like-legos}
+
+Gdy wszystkie aplikacje są oparte na Ethereum, wszystkie są ze sobą kompatybilne. Token dla jednej apki zadziała również dla kompletnie innej. To jakbyś mógł publikować tweety na Facebooku. Możesz nawet wykorzystać ten sam profil w różnych apkach Ethereum bez konieczności osobnej rejestracji.
+
+
+
+## Dalsza lektura {#further-reading}
+
+- [Ethereum dla początkujących](/what-is-ethereum)
+- [Czym są inteligentne kontrakty?](/developers/docs/smart-contracts/)
+- [Dokumentacja techniczna dapek](/developers/docs/dapps/)
+
+## Często zadawane pytania {#faq}
+
+
+ Dapka oznaczna zdecentralizowaną aplikację. Są to aplikacje zbudowane na łańcuchu bloków takich jak Ethereum. Nazywane są zdecentralizowanymi, ponieważ leżąca u podstaw sieć jest zdecentralizowana.
+
+
+
+ Niektóre aplikacje umożliwiają handel lub zakup krypto tokenów, ale nie wszystkie aplikacje są do tego przeznaczone. Jeśli chcesz kupić swoje pierwsze tokeny, odwiedź stronę [Zdobądź ETH](/get-eth).
+
+
+
+ Portfele krypto pozwalają Ci przechowywać swoje tokeny i zarządzać Twoim kontem Ethereum. Istnieje wiele świetnych portfeli, z których każdy ma inne przeznaczenie. Aby dowiedzieć się, który portfel jest dla Ciebie najlepszy, odwiedź naszą [listę portfeli](/wallets/find-wallet).
+
\ No newline at end of file
diff --git a/public/content/translations/pl/whitepaper/index.md b/public/content/translations/pl/whitepaper/index.md
index 29fbf261ab4..2a698b81e5f 100644
--- a/public/content/translations/pl/whitepaper/index.md
+++ b/public/content/translations/pl/whitepaper/index.md
@@ -1,427 +1,461 @@
---
-title: Biała księga Ethereum
-description: Dokument wprowadzający do Ethereum, opublikowany w 2013 r. przed jego uruchomieniem.
+title: "Biała księga Ethereum"
+description: "Dokument wprowadzający do Ethereum, opublikowany w 2013 r. przed jego uruchomieniem."
lang: pl
sidebarDepth: 2
+hideEditButton: true
---
# Biała księga Ethereum {#ethereum-whitepaper}
-_Ten dokument wprowadzający został pierwotnie opublikowany w 2013 r. przez Vitalika Buterina, założyciela [Ethereum](/what-is-ethereum/), przed uruchomieniem projektu w 2015 r. Warto zauważyć, że Ethereum, podobnie jak wiele projektów oprogramowania opartych na społecznościach, rozwija się od czasu jego początkowego powstania._
+_Ten dokument wprowadzający został pierwotnie opublikowany w 2014 r. przez Vitalika Buterina, założyciela [Ethereum](/what-is-ethereum/), przed uruchomieniem projektu w 2015 r. Warto zauważyć, że Ethereum, podobnie jak wiele projektów oprogramowania open-source tworzonych przez społeczność, ewoluowało od czasu powstania._
-_Przez okres kilkunastu lat, utrzymujemy ten dokument, ponieważ nadal służy on jako użyteczny punkt odniesienia i dokładna reprezentacja Ethereum i jego wizji. Aby dowiedzieć się o najnowszych zmianach w Ethereum i jak wprowadzone są zmiany w protokole, zalecamy [ten przewodnik](/learn/)._
+_Chociaż ten dokument ma już kilka lat, zachowujemy go, ponieważ nadal służy on jako użyteczny punkt odniesienia i dokładna reprezentacja Ethereum i jego wizji. _Aby dowiedzieć się o najnowszych zmianach w Ethereum i o tym, jak wprowadzane są zmiany w protokole, polecamy [ten przewodnik](/learn/)._
-## Inteligentny kontrakt nowej generacji i zdecentralizowana platforma aplikacji {#a-next-generation-smart-contract-and-decentralized-application-platform}
+[Badacze i naukowcy poszukujący historycznej lub kanonicznej wersji białej księgi [z grudnia 2014 r.] powinni skorzystać z tego pliku PDF.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
-Rozwój Bitcoina przez Satoshi Nakamoto w 2009 roku był często chwalony jako radykalny rozwój pieniądza i waluty, będący pierwszym przykładem zasobu cyfrowego, który jednocześnie nie ma wsparcia lub [wartości](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/) i brak scentralizowanego emitenta lub kontrolera. Jednak kolejna - prawdopodobnie ważniejsza - część eksperymentu Bitcoin to podstawowa technologia blockchain jako narzędzie rozproszonego konsensusu i uwaga szybko zaczyna się przechodzić na ten inny aspekt Bitcoina. Często cytowane alternatywne zastosowania technologii blockchain obejmują użycie zasobów cyfrowych w blockchain do reprezentowania niestandardowych walut oraz instrumentów finansowych ([kolorowych monet](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)), własność podstawowego urządzenia fizycznego ([smart property](https://en.bitcoin.it/wiki/Smart_Property)), aktywów niezamiennych takich jak nazwy domen ([Namecoin](http://namecoin.org)), dodatkowo jako bardziej złożone aplikacje polegające na tym, że aktywa cyfrowe są kontrolowane bezpośrednio przez element kodu, wdrażający arbitralne reguły ([inteligentnych kontraktów](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)) lub nawet blockchain [zdecentralizowanych autonomicznych organizacji](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) (DAO). To, co zamierza zapewnić Ethereum, to blockchain z wbudowanym w pełni rozwiniętym językiem programowania Turinga, którego można użyć, by tworzyć „kontrakty”, które mogą być użyte do zakodowania dowolnej zmiany stanu funkcji, pozwalającej użytkownikom na tworzenie dowolnych z opisanych powyżej systemów, a także wiele innych, których jeszcze nie wyobrażaliśmy sobie, po prostu pisząc logikę w kilku linijkach kodu.
+## Platforma nowej generacji dla inteligentnych kontraktów i zdecentralizowanych aplikacji {#a-next-generation-smart-contract-and-decentralized-application-platform}
+
+Stworzenie Bitcoina przez Satoshi Nakamoto w 2009 roku było często uznawane za radykalny krok w rozwoju pieniądza i waluty, będąc pierwszym przykładem cyfrowego aktywa, które jednocześnie nie ma zabezpieczenia ani „[wartości wewnętrznej](https://bitcoinmagazine.com/culture/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it)” oraz nie ma scentralizowanego emitenta ani kontrolera. Jednak kolejną, prawdopodobnie ważniejszą częścią eksperymentu Bitcoin jest leżąca u jego podstaw technologia blockchain jako narzędzia rozproszonego konsensusu i uwaga szybko zaczyna przesuwać się na ten inny aspekt Bitcoina. Często cytowane alternatywne zastosowania technologii blockchain obejmują wykorzystanie cyfrowych zasobów w łańcuchu bloków do reprezentowania niestandardowych walut i instrumentów finansowych („[kolorowe monety](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)”), własność podstawowego urządzenia fizycznego („[inteligentna własność](https://en.bitcoin.it/wiki/Smart_Property)”), aktywa niewymienialne, takie jak nazwy domen („[Namecoin](http://namecoin.org)”), a także bardziej złożone aplikacje, w których zasoby cyfrowe są bezpośrednio kontrolowane przez fragment kodu implementujący dowolne zasady („[inteligentne kontrakty](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)”), a nawet oparte na blockchainie „[zdecentralizowane organizacje autonomiczne](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)” (DAO). To, co Ethereum zamierza zapewnić, to blockchain z wbudowanym w pełni rozwiniętym językiem programowania z kompletnością Turinga, który może być używany do tworzenia „kontraktów”, które mogą być używane do zakodowania dowolnych funkcji przejścia stanu, umożliwiając użytkownikom tworzenie dowolnego z opisanych powyżej systemów, a także wielu innych, których jeszcze sobie nie wyobrażamy, po prostu poprzez zapisanie logiki w kilku wierszach kodu.
## Wprowadzenie do Bitcoina i istniejących koncepcji {#introduction-to-bitcoin-and-existing-concepts}
### Historia {#history}
-Koncepcja zdecentralizowanej waluty cyfrowej, a także alternatywnych aplikacji, takich jak rejestry nieruchomości, istnieje od dziesięcioleci. Anonimowe protokoły e-gotówki z lat 80. i 90., oparte głównie na prymitywie kryptografii znanym jako oślepienie Chaumiana, głównym założeniem było że będzie to waluta o wysokim stopniu prywatności, ale protokoły w dużej mierze zawiodły. zyskały przyczepność ze względu na ich zależność od scentralizowanego pośrednika. W 1998 r. Wei Dai's [b-money](http://www.weidai.com/bmoney.txt) stał się pierwszą propozycją wprowadzenia pomysłu tworzenia pieniędzy poprzez rozwiązywanie zadań obliczeniowych oraz zdecentralizowanego konsensusu, jednak wniosek nie zawierał szczegółowych informacji na temat tego, w jaki sposób zdecentralizowany konsensus mógłby zostać faktycznie wdrożony. W 2005 roku Hal Finney wprowadził koncepcję [nadającego się do wielokrotnego użytku dowody pracy](http://nakamotoinstitute.org/finney/rpow/), system który wykorzystuje pomysły z b-money wraz z obliczeniami Adama Backa trudne zagadki Hashcash do stworzenia koncepcji kryptowaluty, ale po raz kolejny nie spełnił ideału, opierając się na zaufanych komputerach jako zaplecza. W 2009 r. zdecentralizowana waluta została po raz pierwszy wdrożona w praktyce przez Satoshi Nakamoto, połączenie ustanowionych prymitywów do zarządzania własnością za pomocą kryptografii klucza publicznego z algorytmem konsensusu do śledzenia tego, kto jest właścicielem monet, znany jako „dowód pracy”.
-
-Mechanizm dowodu pracy był przełomem w przestrzeni ponieważ jednocześnie rozwiązał dwa problemy. Po pierwsze, zapewnił prosty i umiarkowanie skuteczny algorytm konsensusu, umożliwiający węzłom w sieci do wspólnego uzgodnienia zestawu kanonicznych aktualizacji do to stanu księgi Bitcoin. Po drugie, zapewnił mechanizm pozwalający na swobodne wejście do procesu konsensusu, rozwiązanie politycznego problemu decydowania o tym, kto ma wpływ na konsensus, przy czym jednocześnie zapobiega atakom sybili. Czyni to, zastępując formalną barierę dla uczestnictwa, np. wymóg rejestracji jako niepowtarzalny podmiot w określonym wykazie, z ekonomiczną barierą - waga pojedynczego węzła w procesie głosowania konsensualnego jest wprost proporcjonalna do mocy obliczeniowej, którą tworzy węzeł. Od tamego czasu zaproponowano alternatywne podejście zwane _dowodem stawki_, obliczanie wagi węzła jako proporcjonalnej do jego waluty i zasobów obliczeniowych; dyskusja nad względnymi zaletami tych dwóch podejść wykracza poza zakres niniejszego dokumentu, ale należy zauważyć, że oba podejścia mogą służyć jako szkielet kryptowaluty.
+Koncepcja zdecentralizowanej cyfrowej waluty, a także alternatywnych zastosowań, takich jak rejestry własności, istnieje od dziesięcioleci. Protokoły anonimowych e-pieniędzy z lat 80. i 90., w większości oparte na prymitywie kryptograficznym znanym jako Chaumian blinding, zapewniały walutę o wysokim stopniu prywatności, ale protokoły te w dużej mierze nie zyskały na popularności ze względu na ich zależność od scentralizowanego pośrednika. W 1998 roku [b-money](http://www.weidai.com/bmoney.txt) autorstwa Wei Dai stało się pierwszą propozycją wprowadzenia idei tworzenia pieniędzy poprzez rozwiązywanie zagadek obliczeniowych, a także zdecentralizowanego konsensusu, ale propozycja była skąpa w szczegóły dotyczące tego, jak zdecentralizowany konsensus mógłby zostać faktycznie wdrożony. W 2005 roku Hal Finney wprowadził koncepcję „[dowodów pracy wielokrotnego użytku](https://nakamotoinstitute.org/finney/rpow/)”, systemu, który wykorzystuje pomysły z b-money wraz z trudnymi obliczeniowo zagadkami Hashcash Adama Backa, aby stworzyć koncepcję kryptowaluty, ale po raz kolejny nie udało mu się osiągnąć ideału, polegając na zaufanym przetwarzaniu jako backendzie. W 2009 roku zdecentralizowana waluta została po raz pierwszy wdrożona w praktyce przez Satoshi'ego Nakamoto, łącząc ustalone prymitywy zarządzania własnością poprzez kryptografię klucza publicznego z algorytmem konsensusu do śledzenia, kto jest właścicielem monet, znanym jako „proof-of-work”.
-Oto wpis na blogu od Vitalika Buterina, założyciela Ethereum, na temat [prehistorii Ethereum](https://vitalik.eth.limo/general/2017/09/14/prehistory.html). [Tutaj](https://blog.ethereum.org/2016/02/09/cut-and-try-building-a-dream/) jest kolejny post przedstawiający więcej informacji o historii.
+Mechanizm stojący za proof-of-work był przełomem w przestrzeni, ponieważ rozwiązywał jednocześnie dwa problemy. Po pierwsze, zapewniał prosty i umiarkowanie skuteczny algorytm konsensusu, umożliwiając węzłom w sieci wspólne uzgadnianie zestawu kanonicznych aktualizacji stanu księgi Bitcoin. Po drugie, zapewniał mechanizm umożliwiający swobodne wejście w proces konsensusu, rozwiązując polityczny problem decydowania o tym, kto może wpływać na konsensus, jednocześnie zapobiegając atakom typu Sybil. Czyni to, zastępując formalną barierę uczestnictwa, np. wymóg rejestracji jako unikalny podmiot na określonej liście, barierą ekonomiczną — waga pojedynczego węzła w procesie głosowania konsensusu jest wprost proporcjonalna do mocy obliczeniowej, jaką wnosi węzeł. Od tego czasu zaproponowano alternatywne podejście zwane _proof-of-stake_, obliczające wagę węzła jako proporcjonalną do jego zasobów walutowych, a nie zasobów obliczeniowych; dyskusja na temat względnych zalet obu podejść wykracza poza zakres tego dokumentu, ale należy zauważyć, że oba podejścia mogą być wykorzystane jako szkielet kryptowaluty.
-### Bitcoin jako system przejścia między stanami {#bitcoin-as-a-state-transition-system}
+### Bitcoin jako system transformacji stanu {#bitcoin-as-a-state-transition-system}
-
+
-Z technicznego punktu widzenia księga kryptowalut takich jak Bitcoin może być uważana za system transformacji stanu, gdzie jest "stan" składający się ze statusu własności wszystkich istniejących bitcoinów i "funkcja transformacji stanu", która przyjmuje stan i transakcję oraz wygeneruje nowy stan, który jest rezultatem. Przykładowo w standardowym systemie bankowym stan jest bilansem, transakcja jest prośbą o przeniesienie $X z A do B, a funkcja przejścia stanu zmniejsza wartość na koncie A o $X i zwiększa wartość na koncie B o $X. Jeśli konto A ma w pierwszej kolejności mniej niż X Usd, to stan funkcja przejścia zwraca błąd. Można zatem formalnie zdefiniować:
+Z technicznego punktu widzenia, księga kryptowalut, takich jak Bitcoin, może być postrzegana jako system zmiany stanu, w którym istnieje „stan” składający się ze statusu własności wszystkich istniejących bitcoinów oraz „funkcja zmiany stanu”, która przyjmuje stan i transakcję i wyprowadza nowy stan, który jest wynikiem. Przykładowo w standardowym systemie bankowym stan jest bilansem, transakcja jest prośbą o przeniesienie $X z A do B, a funkcja przejścia stanu zmniejsza wartość na koncie A o $X i zwiększa wartość na koncie B o $X. Jeśli konto A ma mniej niż $X, to funkcja zmiany stanu zwraca błąd. Można zatem formalnie zdefiniować:
```
- ZASTOSUJ(S,TX) —>> S' lub BŁĄD
+ZASTOSUJ(S,TX) -> S' lub BŁĄD
```
W systemie bankowym zdefiniowanym powyżej:
-```
- Zastosuj ({ Alice: $50, Bob: $50 },"wyślij $20 z Alice do Bob") = { Alice: $30, Bob: $70 }
+```js
+Zastosuj ({ Alice: $50, Bob: $50 },"wyślij $20 z Alice do Bob") = { Alice: $30, Bob: $70 }
```
Ale:
+```js
+ZASTOSUJ({ Alice: $50, Bob: $50 }:,"wyślij 70 USD od Alicji do Roberta") = BŁĄD
```
- ZASTOSUJ({ Alice: $50, Bob: $50 }:,"wyślij 70 USD od Alicji do Roberta") = BŁĄD
-```
-
-"Stan" w Bitcoinach to kolekcja wszystkich monet (technicznie, "niewykorzystane wyniki transakcji" lub UTXO, które zostały wydobyte i jeszcze nie zostały wydane, z każdym UTXO o nazwie i właścicielu (określonym przez 20-bajtowy adres, który zasadniczo jest publicznym kluczem kryptograficznym[fn. 1](#notes)). Transakcja zawiera jedno lub więcej danych wejściowych, przy każdym wejściu zawierającym odniesienie do istniejącego UTXO i podpisu kryptograficznego wygenerowanego przez prywatny klucz powiązany z adresem właściciela, i jedno lub więcej wyjść z każdym wyjściem zawierającym nowe UTXO dodawane do stanu.
-
-Funkcja przejścia stanu `APPLY(S,TX) -> S'` może być zdefiniowana w przybliżeniu w następujący sposób:
-
-1. Dla każdego wejścia w `TX`:
-
- - Jeśli odniesienie UTXO nie jest w `S`, zwraca błąd.
- - Jeśli podany podpis nie pasuje do właściciela UTXO, zwraca błąd.
-
-2. Jeśli suma nominałów wszystkich wejściowych UTXO jest mniejsza niż suma nominałów wszystkich wyjściowych UTXO, zwraca błąd.
-3. Zwraca `S'` z usuniętymi wszystkimi wprowadzonymi wartościami UTXO i wszystkimi dodanymi wartościami UTXO.
-Pierwsza połowa pierwszego kroku uniemożliwia nadawcom transakcji wydawanie monet, które nie istnieją, druga połowa pierwszego kroku uniemożliwia nadawcom transakcji wydawanie monet innych ludzi, a drugi wymusza zachowanie wartości. Aby użyć tego do płatności, protokół jest następujący. Załóżmy, że Alice chce wysłać 11,7 BTC do pracy. Najpierw Alice będzie szukać zestawu dostępnych UTXO które posiada w sumie do co najmniej 11.7 BTC. Realistycznie rzecz biorąc, Alice nie będzie w stanie uzyskać dokładnie 11,7 BTC; powiedzmy, że najmniejsza z nich to 6+4+2=12. Następnie tworzy transakcję z tymi trzema wejściami i dwoma wyjściami. Pierwsze wejście będzie miało wartość 11.7 BTC z adresem Boba jako jego właścicielem, a drugie będzie wartością 0. BTC "change",, a właścicielem jest Alice.
+„Stan” w Bitcoinie to zbiór wszystkich monet (technicznie rzecz biorąc, „niewydanych wyników transakcji” lub UTXO), które zostały wybite i nie zostały jeszcze wydane, przy czym każda UTXO ma nominał i właściciela (zdefiniowanego przez 20-bajtowy adres, który jest zasadniczo kryptograficznym kluczem publicznym[fn1](#notes)). Transakcja zawiera jedno lub więcej danych wejściowych, z których każde zawiera odniesienie do istniejącego UTXO i podpis kryptograficzny wygenerowany przez klucz prywatny powiązany z adresem właściciela, oraz jedno lub więcej danych wyjściowych, z których każde zawiera nowe UTXO, które ma zostać dodane do stanu.
+
+Funkcja przejścia stanu `APPLY(S,TX) -> S'` może być z grubsza zdefiniowana w następujący sposób:
+
+
+ -
+ Dla każdego wejścia w
TX:
+
+ -
+ Jeśli UTXO, do którego następuje odwołanie, nie znajduje się w
S, zwróć błąd.
+
+ -
+ Jeśli podany podpis nie pasuje do właściciela UTXO, zwróć błąd.
+
+
+
+ -
+ Jeśli suma wartości wszystkich wejściowych UTXO jest mniejsza niż suma wartości wszystkich wyjściowych UTXO, zwróć błąd.
+
+ -
+ Zwróć
S ze wszystkimi wejściowymi UTXO usuniętymi i wszystkimi wyjściowymi UTXO dodanymi.
+
+
+
+Pierwsza połowa pierwszego kroku uniemożliwia nadawcom transakcji
+wydawanie monet, które nie istnieją, druga połowa pierwszego kroku
+uniemożliwia nadawcom transakcji wydawanie monet innych ludzi, a drugi krok
+wymusza zachowanie wartości. Aby użyć tego do płatności, protokół jest następujący. Załóżmy, że Alice chce wysłać 11,7 BTC do Boba. Najpierw Alice poszuka zestawu dostępnych UTXO, które posiada, o łącznej wartości co najmniej 11,7 BTC. Realistycznie rzecz biorąc, Alice nie będzie
+w stanie uzyskać dokładnie 11,7 BTC; powiedzmy, że najmniejsza kwota, jaką będzie w stanie uzyskać, to
+6+4+2=12. Następnie tworzy transakcję z tymi trzema wejściami i dwoma wyjściami. Pierwszym wyjściem będzie 11,7 BTC z adresem Boba jako właścicielem, a drugim wyjściem będzie pozostałe 0,3 BTC „reszty”, a właścicielem będzie sama Alice.
### Wydobycie {#mining}

-Gdybyśmy mieli dostęp do godnej zaufania usługi scentralizowanej, ten system byłby błahy do wdrożenia; można je po prostu zakodować dokładnie tak, jak to opisano, za pomocą scentralizowanego dysku twardy serwera, aby śledzić stan serwera. Jednak za pomocą Bitcoina próbujemy zbudować zdecentralizowaną walutę systemu, więc będziemy musieli połączyć system przejścia stanów z system konsensusu w celu zapewnienia, że wszyscy zgadzają się na kolejność transakcji. Zdecentralizowany proces konsensusu Bitcoina wymaga węzłów w sieci, aby nieustannie próbować tworzyć pakiety transakcji zwanych "blokami". Sieć ma produkować z grubsza jeden blok co dziesięć minut, z każdym blokiem zawierającym znacznik czasu, a nonce, odwołanie do (tj. hash of) poprzedniego bloku i lista wszystkich transakcji, które miały miejsce od poprzedniego bloku. Z czasem tworzy to trwały, ciągle rozwijający się "blockchain", który stale aktualizuje, aby reprezentować najnowszy stan księgi Bitcoin.
+Gdybyśmy mieli dostęp do godnej zaufania scentralizowanej usługi, system ten byłby banalny do wdrożenia; można by go po prostu zakodować dokładnie tak, jak opisano, używając dysku twardego scentralizowanego serwera do śledzenia stanu. Jednak w przypadku Bitcoina staramy się zbudować zdecentralizowany system walutowy, więc będziemy musieli połączyć stanowy system transakcji z systemem konsensusu, aby zapewnić, że wszyscy zgadzają się co do kolejności transakcji. Zdecentralizowany proces konsensusu Bitcoina wymaga, aby węzły w sieci nieustannie próbowały tworzyć pakiety transakcji zwane „blokami”. Sieć ma na celu tworzenie mniej więcej jednego bloku co dziesięć minut, przy czym każdy blok zawiera znacznik czasu, nonce, odniesienie do (tj. hasz) poprzedniego bloku i listę wszystkich transakcji, które miały miejsce od poprzedniego bloku. Z czasem tworzy to trwały, ciągle rosnący „blockchain”, który stale aktualizuje się, aby reprezentować najnowszy stan księgi Bitcoin.
-Algorytm sprawdzający, czy blok jest prawidłowy, wyrażony w tym paradygmatze, jest następujący:
+Algorytm sprawdzający, czy blok jest prawidłowy, wyrażony w tym
+paradygmacie, jest następujący:
-1. Sprawdź, czy poprzedni blok odwołany przez blok istnieje i jest ważny.
-2. Sprawdź, czy znacznik czasu bloku jest większy niż w poprzednim bloku[fn. 2](#notes) i niecałe 2 godziny w przyszłość
-3. Sprawdź, czy dowód pracy na bloku jest ważny.
-4. Niech `S[0]` będzie stanem na końcu poprzedniego bloku.
-5. Załóżmy, że `TX` jest listą transakcji z `n` transakcji. Za wszystkie `i` w `0... -1`, ustaw `S[i+1] = APPLY(S[i], X[i])` Jeśli jakakolwiek aplikacja zwróci błąd, wyjdź i zwróć fałsz.
-6. Zwróć true i zarejestruj `S[n]` jako stan na końcu tego bloku.
+1. Sprawdź, czy poprzedni blok, na który powołuje się bieżący blok, istnieje i jest prawidłowy.
+2. Sprawdź, czy znacznik czasu bloku jest większy niż znacznik poprzedniego bloku[fn2](#notes) i mniejszy niż 2 godziny w przyszłości.
+3. Sprawdź, czy proof-of-work w bloku jest prawidłowy.
+4. Niech S[0] będzie stanem na końcu poprzedniego bloku.
+5. Załóżmy, że TX jest listą transakcji bloku z n transakcjami. Dla wszystkich `i` w `0...n-1` ustaw `S[i+1] = APPLY(S[i],TX[i])`. Jeśli jakakolwiek aplikacja zwróci błąd, wyjdź i zwróć fałsz.
+6. Zwróć prawdę i zarejestruj S[n] jako stan na końcu tego bloku.
-Zasadniczo, każda transakcja w bloku musi zapewniać prawidłowy stan przejścia od stanu kanonicznego przed wykonaniem transakcji do nowego stanu. Należy zauważyć, że stan nie jest zakodowany w bloku. jest to wyłącznie abstrakcja, która ma być zapamiętana przez węzeł walidacyjny i może być (bezpiecznie) obliczona tylko dla każdego bloku przez zaczynając od stanu genezy i sekwencyjnie stosując każdą transakcję w każdym bloku. Ponadto należy zwrócić uwagę, że kolejność, w której górnik zawiera transakcje w bloku ma znaczenie; jeżeli w bloku są dwie transakcje A i B takie, że B wydaje UTXO stworzone przez A, wtedy blok będzie prawidłowy, jeśli A pojawi się przed B, ale nie w przeciwnym wypadku.
+Zasadniczo, każda transakcja w bloku musi zapewnić prawidłowe przejście stanu ze stanu kanonicznego przed wykonaniem transakcji do nowego stanu. Należy zauważyć, że stan nie jest w żaden sposób zakodowany w bloku; jest to wyłącznie abstrakcja, która ma być zapamiętana przez węzeł walidujący i może być (bezpiecznie) obliczony tylko dla dowolnego bloku, zaczynając od stanu genezy i sekwencyjnie stosując każdą transakcję w każdym bloku. Ponadto należy zwrócić uwagę, że kolejność, w której górnik uwzględnia transakcje w bloku, ma znaczenie; jeżeli w bloku są dwie transakcje A i B, a B wydaje UTXO stworzone przez A, wtedy blok będzie prawidłowy, jeśli A pojawi się przed B, ale nie odwrotnie.
-Jednym z warunków ważności obecnych na powyższej liście, który nie jest znaleziony w innych systemach, jest wymóg „dowodu pracy”. Dokładny warunek polega na tym, że podwójny skrót SHA256 każdego bloku, traktowany jako liczba 256-bitowa, musi być mniejsza niż dynamicznie dostosowany cel, który od czasu pisania wynosi około 2187. Ma to na celu spowodowanie tworzenia bloków w sposób obliczeniowy "utwardzony", uniemożliwiając tym samym atakującym sybil retworzenie całego łańcucha bloków na ich korzyść. Ponieważ SHA256 jest zaprojektowany jako funkcja całkowicie nieprzewidywalna, jedynym sposobem na stworzenie poprawnego bloku jest po prostu próba i błąd, wielokrotne zwiększanie liczby nonce i patrząc, czy nowy skrót pasuje.
+Jednym z warunków prawidłowości obecnych na powyższej liście, który nie jest znaleziony
+w innych systemach, jest wymóg „dowodu pracy”. Dokładny warunek polega na tym, że podwójny hash SHA256 każdego bloku, traktowany jako 256-bitowa liczba, musi być mniejszy niż dynamicznie dostosowany cel, który w chwili pisania tego wynosi około 2187. Celem tego jest sprawienie, aby tworzenie bloków było obliczeniowo „trudne”, uniemożliwiając w ten sposób atakującym metodą Sybil przerobienie całego blockchainu na swoją korzyść. Ponieważ SHA256 jest zaprojektowany, by być kompletnie nieprzewidywalną pseudo losową funkcją, jedyną możliwością stworzenia ważnego bloku jest zwykła metoda prób i błędów, wielokrotne powtarzanie nonce i porównywanie z haszem.
-Przy obecnym celu \~2187 sieć musi wykonać średnia z \~269 prób przed znalezieniem prawidłowego bloku; w ogólnie, cel jest rekalibrowany przez sieć co 2016 bloki, więc że średnio nowy blok jest tworzony przez jakiś węzeł w sieci co dziesięć minut. Aby zrekompensować górnikom to obliczenie pracy, górnik każdego bloku ma prawo do zawarcia transakcji dając sobie 12,5 BTC znikąd. Dodatkowo, jeśli jakakolwiek transakcja ma wyższy nominał całkowity na wejściu niż na wyjściach, różnica trafia również do górnika jako „opłata transakcyjna”. Nawiasem mówiąc, jest to jedyny mechanizm, za pomocą którego BTC są emitowane; stan genetyczny nie zawierał żadnych monet.
+Przy obecnym celu \~2187, sieć musi wykonać średnio \~269 prób, zanim zostanie znaleziony prawidłowy blok; generalnie, cel jest ponownie kalibrowany przez sieć co 2016 bloków, więc nowy blok jest tworzony przez jakiś węzeł w sieci co średnio dziesięć minut. Aby zrekompensować górnikom tę pracę obliczeniową, górnik każdego bloku ma prawo do zawarcia transakcji dającej mu 25 BTC znikąd. Dodatkowo, jeśli jakakolwiek transakcja ma wyższy łączny nominał na wejściach niż na wyjściach, różnica trafia również do górnika jako „opłata transakcyjna”. Nawiasem mówiąc, jest to jedyny mechanizm, za pomocą którego emitowane są BTC;
+stan genezy nie zawierał żadnych monet.
-Aby lepiej zrozumieć cel górnictwa, zbadajmy co dzieje się w przypadku złośliwego atakującego. Ponieważ kryptografia bazowa Bitcoina jest znana jako bezpieczna, atakujący będzie kierował do jednej części systemu Bitcoin, która nie jest chroniona przez kryptografię bezpośrednio: kolejność transakcji. Strategia atakującego jest prosta:
+Aby lepiej zrozumieć cel wydobywania, zbadajmy, co dzieje się w przypadku złośliwego atakującego. Ponieważ wiadomo, że kryptografia Bitcoina jest bezpieczna, atakujący będzie koncentrował się na jedynej części systemu Bitcoin, która nie jest chroniona bezpośrednio przez kryptografię: kolejność transakcji. Strategia atakującego jest prosta:
-1. Wyślij 100 BTC do sprzedawcy w zamian za jakiś produkt (najlepiej szybką dostawę cyfrową)
-2. Poczekaj na dostawę produktu
-3. Wyprodukuj inną transakcję wysyłającą te same 100 BTC do siebie
-4. Staraj się przekonać sieć, że jego transakcja dla siebie to taka, która pojawiła się pierwszy.
+1. Wysyła 100 BTC do sprzedawcy w zamian za jakiś produkt (najlepiej cyfrowy towar z szybką dostawą)
+2. Czeka na dostawę produktu
+3. Produkuje kolejną transakcję wysyłającą te same 100 BTC do niego samego
+4. Spróbuj przekonać sieć, że jego transakcja do samego siebie była pierwsza
-Po wykonaniu kroku (1) po kilku minutach jakiś górnik uwzględni transakcję w bloku, powiedzmy numer bloku 270. Po około jednej godziny, pięć kolejnych bloków zostanie dodanych do łańcucha po tym bloku, z każdym z bloków pośrednio wskazującym transakcję, a tym samym „potwierdzającą”. W tym momencie sprzedawca zaakceptuje płatności w sfinalizowanej wersji i dostarczy produkt; ponieważ zakładamy, że to dobro cyfrowe, dostawa jest natychmiastowa. Teraz atakujący tworzy kolejną transakcję wysyłającą 100 BTC do siebie. Jeśli napastnik po prostu uwolni go do środowiska naturalnego, transakcja nie zostanie przetworzona; górnicy będą próbowali uruchomić `APPLY(S, X)` i zauważą, że `TX` zużywa UTXO, który już nie jest w stanie. Zamiast tego, napastnik tworzy "widek" blockchain, rozpoczynając od wydobycia innej wersji bloku 270 wskazującej na ten sam blok 269 jako element nadrzędny, ale z nową transakcją zamiast starej. Ponieważ dane bloku są różne, wymaga to ponownego potwierdzenia pracy. Ponadto nowa wersja bloku 270 atakującego ma inny hash, tak aby oryginalne bloki od 271 do 275 nie wskazywały na nią; w ten sposób oryginalny łańcuch i nowy łańcuch atakującego są całkowicie oddzielone. Reguła jest, że w forku najdłuższy blockchain jest prawdą, i tak legalni górnicy będą pracować w łańcuchu 275, podczas gdy sam atakujący pracuje w łańcuchu 270. Aby jego blockchain stał się najdłuższy, musiałby mieć więcej mocy obliczeniowej niż pozostała część sieci połączona w celu nadrabiania zaległości (tj. "51% ataku").
+Po wykonaniu kroku (1), po kilku minutach jakiś górnik uwzględni transakcję w bloku, powiedzmy bloku numer 270000. Po około godzinie do łańcucha zostanie dodanych kolejnych pięć bloków po tym bloku, a każdy z tych bloków pośrednio wskaże transakcję, a tym samym ją „potwierdzi”. W tym momencie sprzedawca zaakceptuje płatność jako sfinalizowaną i dostarczy produkt; ponieważ zakładamy, że to towar cyfrowy, dostawa jest natychmiastowa. Teraz atakujący tworzy kolejną transakcję wysyłającą 100 BTC do siebie. Jeśli atakujący po prostu wypuści ją do sieci, transakcja nie zostanie przetworzona; górnicy spróbują uruchomić `APPLY(S,TX)` i zauważą, że `TX` zużywa UTXO, które nie jest już w danym stanie. Zamiast tego atakujący tworzy „fork” blockchainu, zaczynając od wydobycia innej wersji bloku 270000 wskazującego na ten sam blok 269999 jako rodzica, ale z nową transakcją w miejscu starej. Ponieważ dane bloku są
+różne, wymaga to ponownego potwierdzenia pracy. Ponadto nowa wersja bloku 270000 atakującego ma inny hash, więc oryginalne bloki od 270001 do 270005 nie „wskazują” na niego; w ten sposób oryginalny łańcuch i nowy łańcuch atakującego są całkowicie oddzielne. Reguła jest taka, że w forku najdłuższy blockchain jest uznawany za prawdziwy, więc
+prawdziwi górnicy będą pracować na łańcuchu 270005, podczas gdy sam atakujący
+będzie pracował na łańcuchu 270000. Aby atakujący mógł uczynić swój blockchain najdłuższym, musiałby mieć więcej mocy obliczeniowej niż pozostała część sieci łącznie, aby nadrobić zaległości (stąd „atak 51%”).
### Drzewa Merkle {#merkle-trees}

-_Po lewej: wystarczy przedstawić tylko niewielką liczbę węzłów w drzewie Merkle, aby przedstawić dowód ważności gałęzi._
+_Po lewej: wystarczy przedstawić tylko niewielką liczbę węzłów w drzewie Merkle, aby udowodnić prawidłowość gałęzi._
-_Prawo: każda próba zmiany dowolnej części drzewa Merkle ostatecznie doprowadzi do niespójności w górę łańcucha._
+_Po prawej: każda próba zmiany jakiejkolwiek części drzewa Merkle ostatecznie doprowadzi do niespójności gdzieś w łańcuchu._
-Ważną funkcją skalowalności Bitcoina jest to, że blok jest przechowywany w wielopoziomowej strukturze danych. "hash" bloku to w rzeczywistości tylko skrót nagłówka bloku, około 200 bajtowych danych, które zawierają znacznik czasu, non, poprzedni skrót bloku i główny skrót struktury danych zwanej drzewem Merkle przechowującym wszystkie transakcje w bloku. Drzewo Merkle jest typem drzewa binarnego, złożony z węzłów z dużą liczbą węzłów liściowych u dołu drzewa zawierających podstawowe dane, zbiór węzłów pośrednich, w których każdy węzeł jest skrótem jego dwóch podrzędnych, a w końcu pojedynczym węzłem głównym, utworzono również z hashu jego dwóch dzieci, reprezentując "góra" drzewa. Drzewo Merkle ma na celu umożliwienie dostarczenia danych w bloku w części – węzeł może pobrać tylko nagłówek bloku z jednego źródła, niewielka część drzewa odnosząca się do nich z innego źródła i nadal musi być zapewniona, że wszystkie dane są poprawne. Powodem tego działania jest to, że hashuje szerzenie się w górę: jeśli złośliwy użytkownik próbuje zamienić fałszywą transakcję na dole drzewa Merkle, ta zmiana spowoduje zmianę w węźle powyżej, a, a następnie zmianę w węźle powyżej w końcu zmienia korzenie drzewa i tym samym skrót bloku, spowodowanie, że protokół zarejestruje go jako zupełnie inny blok (prawie na pewno z niepoprawnym dowodem pracy).
+Ważną funkcją skalowalności Bitcoina jest to, że blok jest przechowywany w wielopoziomowej strukturze danych. „Hash” bloku jest w rzeczywistości tylko hashem nagłówka bloku, około 200-bajtowym fragmentem danych, który zawiera znacznik czasu, nonce, hash poprzedniego bloku i hash korzenia struktury danych zwanej drzewem Merkle przechowującym wszystkie transakcje w bloku. Drzewo Merkle jest rodzajem drzewa binarnego, składającego się z węzłów z dużą liczbą węzłów liści u dołu drzewa zawierających bazowe dane, zbioru węzłów pośrednich, gdzie każdy węzeł jest hashem jego dwóch dzieci, i finalnie pojedynczego węzła korzenia, również utworzonego z hashu jego dwóch dzieci, reprezentującego „wierzchołek” drzewa. Celem drzewa Merkle jest umożliwienie dostarczania danych w bloku fragmentarycznie: węzeł może pobrać tylko nagłówek bloku z jednego źródła, niewielką część drzewa istotną dla niego z innego źródła i nadal mieć pewność, że wszystkie dane są poprawne. Powodem, dla którego to działa, jest to, że hashe propagują się w górę: jeśli złośliwy użytkownik spróbuje zamienić fałszywą transakcję w dolnej części drzewa Merkle, ta zmiana spowoduje zmianę w węźle powyżej, a następnie zmianę w kolejnym węźle powyżej, ostatecznie zmieniając korzeń drzewa, a tym samym hash bloku, powodując, że protokół zarejestruje go jako zupełnie inny blok (prawie na pewno z nieprawidłowym dowodem pracy).
-Protokół drzewa Merkle jest niewątpliwie niezbędny do zapewnienia stabilności w dłuższej perspektywie. „Pełny węzeł” w sieci Bitcoin, który przechowuje i przetwarza cały każdy blok, zajmuje od kwietnia 2014 r. około 15 GB dysku w sieci Bitcoin, i rośnie o ponad gigabajt miesięcznie. Obecnie jest to opłacalne dla niektórych komputerów stacjonarnych, a nie telefonów, a później w przyszłości tylko przedsiębiorstwa i hobbyści będą mogli wziąć w nim udział. Protokół znany jako "uproszczona weryfikacja płatności (SPV) pozwala na istnienie innej klasy węzłów, zwana "lekkie węzły", które pobierają nagłówki bloków, sprawdź dowód pracy na nagłówkach bloku, a następnie pobierz tylko "branches" związane z transakcjami, które są dla nich istotne. Pozwala to węzłom świetlnych określić ich mocną gwarancję bezpieczeństwa, jaki jest status każdej transakcji Bitcoin, i ich obecne saldo jest podczas pobierających tylko bardzo małą część całego łańcucha bloków.
+Protokół drzewa Merkle jest niewątpliwie niezbędny do zapewnienia stabilności w dłuższej perspektywie. „Pełny węzeł” w sieci Bitcoin, który przechowuje i przetwarza cały każdy blok, zajmuje około 15 GB przestrzeni dyskowej w sieci Bitcoin na kwiecień 2014 r. i rośnie o ponad gigabajt miesięcznie. Obecnie jest to opłacalne dla niektórych komputerów stacjonarnych, a nie telefonów, a później w przyszłości tylko przedsiębiorstwa i hobbyści będą mogli w tym uczestniczyć. Protokół znany jako „uproszczona weryfikacja płatności” (SPV) pozwala na istnienie innej klasy węzłów, zwanych „lekkimi węzłami”, które pobierają nagłówki bloków, weryfikują proof-of-work w nagłówkach bloków, a następnie pobierają tylko„gałęzie” związane z transakcjami, które są dla nich istotne. Pozwala to lekkim węzłom na określenie z dużą gwarancją bezpieczeństwa statusu dowolnej transakcji Bitcoin i ich aktualnego salda, przy jednoczesnym pobraniu tylko bardzo małej części całego blockchainu.
-### Alternatywne aplikacje Blockchain {#alternative-blockchain-applications}
+### Alternatywne zastosowania Blockchain {#alternative-blockchain-applications}
-Pomysł przejęcia podstawowej idei blockchain i zastosowania go do innych pojęć ma również długą historię. W 1998 roku pojawił się Nick Szabo z koncepcją [bezpiecznych tytułów własności z właścicielem autorytet](http://nakamotoinstitute.org/secure-property-titles/), a dokument opisujący „nowe postępy w technologii replikowanych baz danych” pozwoli na system oparty na blockchain do przechowywania rejestru osób posiada jaką ziemię, tworząc rozbudowane ramy zawierające koncepcje takie jak jako gospodarstwo rolne, zawłaszczenie i kastralny podatek gruntowy. Niestety nie był dostępny w tym czasie skuteczny system baz danych i dlatego protokół nigdy nie był wdrażany w praktyce. Jednak po 2009 roku, kiedy zdecentralizowany konsensus Bitcoina został opracowany szereg alternatywnych aplikacji, które szybko zaczęły się pojawić się.
+Pomysł wykorzystania podstawowej idei blockchain i zastosowania jej do
+innych koncepcji również ma długą historię. W 2005 r. Nick Szabo przedstawił koncepcję „[bezpiecznych tytułów własności z upoważnieniem właściciela](https://nakamotoinstitute.org/library/secure-property-titles/)”, dokumentu opisującego, w jaki sposób „nowe postępy w technologii replikowanych baz danych” pozwolą na system oparty na blockchainie do przechowywania rejestru tego, kto jest właścicielem jakiej ziemi, tworząc rozbudowany framework obejmujący takie koncepcje, jak gospodarstwo rolne, zasiedzenie i gruziński podatek gruntowy. Niestety, w tamtym czasie nie istniał skuteczny system zreplikowanych baz danych, więc protokół ten nigdy nie został wdrożony w praktyce. Jednak po 2009 roku, gdy zdecentralizowany konsensus Bitcoina został opracowany, szybko zaczęło pojawiać się wiele alternatywnych aplikacji.
-- **Namecoin** - stworzony w 2010 roku, [Namecoin](https://namecoin.org/) jest go najlepiej opisać jako zdecentralizowaną bazę danych rejestracji nazw. W zdecentralizowanych protokołach, takich jak Tor, Bitcoin i BitMessage, musi być jakiś sposób identyfikacji kont, aby inni ludzie mogli z nimi współdziałać, ale we wszystkich istniejących rozwiązaniach jedynym dostępnym identyfikatorem jest pseudorandom hash, taki jak `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Najlepiej byłoby, gdyby było w stanie posiadać konto o nazwie takiej jak "george". Jednak problem polega na tym, że jeśli jedna osoba może utworzyć konto o nazwie "george", ktoś inny może użyć tego samego procesu do rejestracji "george" również dla siebie i podszywać się pod nie. Jedynym rozwiązaniem jest pierwszy do pliku, gdzie pierwszy rejestrator zakończył się sukcesem, a drugi porażka - problem doskonale pasujący do protokołu konsensusu Bitcoin. Naamecoin jest najstarszym i najbardziej udanym wdrożeniem systemu rejestracji nazw za pomocą takiego pomysłu.
-- **Kolorowe monety** - celem [kolorowych monet](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) jest służyć jako protokół umożliwiający ludziom tworzenie własnych walut cyfrowych - lub w ważnym trywialnym przypadku waluty z jedną jednostką, tokenami cyfrowymi, na blockchainie Bitcoin. W protokole z kolorowych monet, jeden „wydaje” nową walutę publicznie przypisanie koloru do konkretnego Bitcoin UTXO i protokołu rekursywnie definiuje kolor innego UTXO tak, aby był taki sam jak kolor danych wejściowych, które wydała transakcja je tworząca (niektóre specjalne zasady obowiązują w przypadku wejść mieszanych kolorów). Pozwala użytkownikom na utrzymywanie portfeli zawierających tylko UTXO o określonym kolorze i wysyłanie ich w pobliżu podobnych do zwykłych bitcoinów, śledzenie wsteczne przez łańcuch bloków, aby określić kolor każdego UTXO, który otrzymuje.
-- **Metacoiny** – ideą stojącą za metacoinem jest posiadanie protokołu który żyje na szczycie Bitcoina, używając transakcji Bitcoin do przechowywania transakcje metacoin, ale z innym przejściem stanu funkcja, `ZASTOSUJ'`. Ponieważ protokół metacoin nie może zapobiec nieprawidłowym transakcjom metacoin pojawiającym się w blockchain Bitcoina, dodawana jest reguła, że jeśli `ZASTOSUJ'(S,TX)` zwraca błąd, protokół domyślnie to `ZASTOSUJ'(S,TX) = S`. Zapewnia to łatwy mechanizm tworzenia arbitralnego protokołu kryptowalutowego, potencjalnie z zaawansowanymi funkcjami, które nie mogą być zaimplementowane wewnątrz samego Bitcoina, ale przy bardzo niskich kosztach rozwoju od czasu złożoności wydobycia i tworzenia sieci są już przedmiotem protokołu Bitcoin. Metacoins zostały użyte do implementacji niektórych klas umów finansowych, rejestracji nazw i zdecentralizowanej wymiany.
+- **Namecoin** – stworzony w 2010 roku, [Namecoin](https://namecoin.org/) można najlepiej opisać jako zdecentralizowaną bazę danych do rejestracji nazw. W zdecentralizowanych protokołach, takich jak Tor, Bitcoin i BitMessage, musi istnieć jakiś sposób identyfikacji kont, aby inni ludzie mogli wchodzić z nimi w interakcje, ale we wszystkich istniejących rozwiązaniach jedynym dostępnym rodzajem identyfikatora jest pseudolosowy hasz, taki jak `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idealnie byłoby mieć konto o nazwie „george”. Problem polega jednak na tym, że jeśli jedna osoba może utworzyć konto o nazwie „george”, to ktoś inny może użyć tego samego procesu, aby zarejestrować nazwę „george” również dla siebie i podszyć się pod niego. Jedynym rozwiązaniem jest paradygmat first-to-file, w którym pierwszy rejestrator odnosi sukces, a drugi ponosi porażkę — problem ten doskonale pasuje do protokołu konsensusu Bitcoina. Namecoin jest najstarszą i najbardziej udaną implementacją systemu rejestracji nazw wykorzystującą taki pomysł.
+- **Kolorowe monety** – celem [kolorowych monet](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) jest służenie jako protokół umożliwiający ludziom tworzenie własnych cyfrowych walut – lub, w ważnym trywialnym przypadku waluty z jedną jednostką, cyfrowych tokenów na blockchainie Bitcoina. W protokole kolorowych monet „emituje się” nową walutę poprzez publiczne przypisanie koloru do określonego UTXO Bitcoina, a protokół rekurencyjnie definiuje kolor innych UTXO jako taki sam jak kolor danych wejściowych, które wydała tworząca je transakcja (niektóre specjalne zasady mają zastosowanie w przypadku danych wejściowych o mieszanych kolorach). Pozwala to użytkownikom na utrzymywanie portfeli zawierających tylko UTXO o określonym kolorze i wysyłanie ich podobnie jak zwykłych bitcoinów, śledząc wstecznie blockchain, aby określić kolor każdego UTXO, który otrzymają.
+- **Metacoins** – ideą metacoin jest posiadanie protokołu, który działa na Bitcoinie, wykorzystując transakcje Bitcoin do przechowywania transakcji metacoin, ale posiadając inną funkcję przejścia stanu, `APPLY'`. Ponieważ protokół metacoin nie może zapobiec pojawianiu się nieprawidłowych transakcji metacoin w blockchainie Bitcoina, dodano regułę, która domyślnie ustawia protokół na `APPLY'(S,TX) = S`, jeśli `APPLY'(S,TX)` zwróci błąd. Zapewnia to łatwy mechanizm tworzenia dowolnego protokołu kryptowalutowego, potencjalnie z zaawansowanymi funkcjami, których nie można zaimplementować w samym Bitcoinie, ale przy bardzo niskich kosztach rozwoju, ponieważ złożoność wydobycia i sieci jest już obsługiwana przez protokół Bitcoina. Metacoiny zostały wykorzystane do implementacji niektórych klas umów finansowych, rejestracji nazw i zdecentralizowanej giełdy.
-Tak więc, ogólnie rzecz biorąc, istnieją dwa podejścia do budowania protokołu konsensusu: budowanie niezależnej sieci, i zbudowanie protokołu na górze Bitcoin. Trudno jest wdrożyć pierwsze podejście, choć w przypadku aplikacji takich jak Namecoin; każda indywidualna implementacja wymaga bootstrap niezależnego łańcucha bloków, oraz budowy i testowanie wszystkich niezbędnych zmian stanu i kodeksu tworzenia sieci. Dodatkowo, przewidujemy, że zestaw aplikacji dla zdecentralizowanej technologii konsensualnej będzie przebiegał zgodnie z rozdziałem prawa w którym zdecydowana większość aplikacji byłaby zbyt mała, aby uzasadnić ich własny blockchain, i zwracamy uwagę, że istnieją duże klasy zdecentralizowanych aplikacji, w szczególności autonomiczne organizacje, które muszą ze sobą współpracować.
+Ogólnie rzecz biorąc, istnieją dwa podejścia do budowania protokołu konsensusu: budowanie niezależnej sieci i budowanie protokołu na Bitcoinie. Pierwsze podejście, choć dość skuteczne w przypadku aplikacji takich jak Namecoin, jest trudne do wdrożenia; każda indywidualna implementacja wymaga uruchomienia niezależnego blockchainu, a także zbudowania i przetestowania całego niezbędnego kodu przejścia stanu i sieci. Ponadto przewidujemy, że zestaw aplikacji dla zdecentralizowanej technologii konsensusu będzie zgodny z rozkładem prawa potęgowego, w którym zdecydowana większość aplikacji byłaby zbyt mała, aby uzasadnić swój własny blockchain, i zauważamy, że istnieją duże klasy zdecentralizowanych aplikacji, w szczególności zdecentralizowane autonomiczne organizacje, które muszą ze sobą współdziałać.
-Z drugiej strony podejście oparte na Bitcoinach ma wadę, że nie dziedziczy uproszczonych funkcji weryfikacji płatności Bitcoina. SPV działa dla Bitcoina, ponieważ może użyć głębokości blockchain jako proxy dla ważności; w pewnym momencie, gdy przodkowie transakcji pójdą wystarczająco daleko wstecz, można bezpiecznie powiedzieć, że byli oni legalnie częścią stanu. Z drugiej strony, metaprotokoły oparte na technologii blockchain nie można zmusić blockchain do nieuwzględniania transakcji, które nie są ważne w kontekście ich własnych protokołów. Stąd w pełni bezpieczna implementacja meta-protokołu SPV musiałaby zeskanować wstecz na początek blockchaina Bitcoin, aby ustalić, czy określone transakcje są prawidłowe. Obecnie wszystkie "lekkie" implementacje meta-protokołów bazujących na Bitcoinach opierają się na zaufanym serwerze, aby dostarczyć dane, Prawdopodobnie wysoce nieoptymalny wynik, zwłaszcza gdy jednym z podstawowych celów kryptowaluty jest wyeliminowanie konieczności zaufania.
+Z drugiej strony, podejście oparte na Bitcoinie ma tę wadę, że nie dziedziczy uproszczonych funkcji weryfikacji płatności Bitcoina. SPV działa w przypadku Bitcoina, ponieważ może wykorzystywać głębokość blockchainu jako proxy dla ważności; w pewnym momencie, gdy przodkowie transakcji sięgają wystarczająco daleko wstecz, można bezpiecznie powiedzieć, że byli oni legalnie częścią stanu. Z drugiej strony, metaprotokoły oparte na blockchainie nie mogą zmusić blockchainu do nieuwzględnienia transakcji, które nie są ważne w kontekście ich własnych protokołów. W związku z tym w pełni bezpieczna implementacja meta-protokołu SPV musiałaby skanować wstecz aż do początku blockchainu Bitcoin, aby określić, czy określone transakcje są ważne. Obecnie wszystkie „lekkie” implementacje meta-protokołów opartych na Bitcoinie polegają na zaufanym serwerze w celu dostarczenia danych, co jest niewątpliwie wysoce nieoptymalnym wynikiem, zwłaszcza gdy jednym z głównych celów kryptowalut jest wyeliminowanie potrzeby zaufania.
### Skrypty {#scripting}
-Nawet bez żadnych rozszerzeń, protokół Bitcoin w rzeczywistości ułatwia słabą wersję pojęcia "inteligentnych umów". UTXO in Bitcoin może być własnością nie tylko klucza publicznego; ale także bardziej skomplikowanym skryptem wyrażonym w prostym języku programowania. W tym paradygmacie wydatki transakcyjne, które UTXO musi podać dane, które spełniają wymagania skryptu. Nawet podstawowy mechanizm własności klucza publicznego jest wdrażany za pomocą skryptu: skrypt przyjmuje eliptyczny podpis krzywej jako dane wejściowe, weryfikuje ją w odniesieniu do transakcji i adresu będącego właścicielem UTXO i zwraca 1 jeśli weryfikacja jest udana i 0 w innym przypadku. Inne, bardziej skomplikowane skrypty istnieją dla różnych dodatkowych przypadków użycia. Na przykład można zbudować skrypt wymagający podpisów z dwóch z trzech wybranych kluczy prywatnych do walidacji ("multisig"), konfiguracja przydatna dla kont korporacyjnych, zabezpiecz konta oszczędnościowe i niektóre sytuacje powiernika. Skrypty mogą również być używane do płacenia nagród za rozwiązania problemów obliczeniowych i jeden może nawet skonstruować skrypt, który mówi coś w stylu „ten Bitcoin UTXO jest twój, jeśli możesz dostarczyć dowód SPV, że wysłałeś Dogecoin transakcja tego nominału do mnie”, zasadniczo pozwalająca na zdecentralizowaną wymianę między kryptowalutami.
+Nawet bez żadnych rozszerzeń, protokół Bitcoin faktycznie umożliwia słabą wersję koncepcji „inteligentnych kontraktów”. UTXO w Bitcoinie może być własnością nie tylko klucza publicznego, ale także bardziej skomplikowanego skryptu wyrażonego w prostym języku programowania opartym na stosie. W tym modelu transakcja wydająca to UTXO musi dostarczyć dane, które spełniają wymagania skryptu. W rzeczywistości nawet podstawowy mechanizm własności klucza publicznego jest implementowany za pomocą skryptu: skrypt przyjmuje podpis krzywej eliptycznej jako dane wejściowe, weryfikuje go względem transakcji i adresu, który jest właścicielem UTXO, i zwraca 1, jeśli weryfikacja zakończy się pomyślnie. W przeciwnym przpadku zwraca 0. Istnieją również inne, bardziej skomplikowane skrypty dla różnych dodatkowych przypadków użycia. Na przykład, można stworzyć skrypt, który wymaga podpisów od dwóch z trzech podanych kluczy prywatnych do walidacji („multisig”), konfigurację przydatną dla kont firmowych, bezpieczne konta oszczędnościowe i niektóre sytuacje depozytu handlowego. Skrypty mogą być również wykorzystywane do wypłacania nagród za rozwiązania problemów obliczeniowych, a nawet można skonstruować skrypt, który mówi coś w stylu „ten Bitcoin UTXO jest Twój, jeśli możesz dostarczyć dowód SPV, że wysłałeś do mnie transakcję Dogecoin o tym nominale”, zasadniczo umożliwiając zdecentralizowaną wymianę między kryptowalutami.
-Jednak język skryptu zaimplementowany w Bitcoinach ma kilka ważnych ograniczeń:
+Język skryptowy zaimplementowany w Bitcoinie ma jednak kilka istotnych ograniczeń:
-- **Brak kompletności w sensie Turinga ** - to znaczy, że choć istnieje duży podzbiór obliczeń, które obsługuje język skryptowy Bitcoin, nie obsługuje on jednak wszystkiego. Główna kategoria, której brakuje, to pętle. Wykonuje się to w celu uniknięcia nieskończonych pętli podczas weryfikacji transakcji; teoretycznie jest to przeszkoda dla programistów skryptów, ponieważ dowolna pętla może być symulowana przez po prostu wielokrotne powtarzanie kodu bazowego z instrukcją, ale prowadzi to do bardzo nieefektywnych w przestrzeni skryptów. Na przykład implementacja alternatywnego algorytmu podpisu eliptycznego prawdopodobnie wymagałaby 256 powtarzanych mnożeń zaokrągla wszystkie osobno zawarte w kodzie.
-- **Ślepota na wartości** - nie ma sposobu, aby skrypt UTXO zapewniał szczegółową kontrolę kwoty, która może zostać pobrana. Na przykład jednym potężnym przypadkiem wykorzystania kontraktu wyroczni byłby kontrakt zabezpieczający, gdzie A i B umieściły BTC o wartości 1000 USD i po 30 dniach, skrypt wysyła BTC o wartości 1000 USD do A, a resztę do B. Wymagałoby to wyroczni do określenia wartości 1 BTC w USD, ale nawet wtedy jest to ogromna poprawa pod względem zaufania i potrzeba infrastruktury nad w pełni scentralizowanymi rozwiązaniami, które są obecnie dostępne. Jednakże, ponieważ UTXO są typu "wszystko albo nic", jedynym sposobem, aby to osiągnąć jest bardzo nieefektywny hacking polegający na posiadaniu wielu UTXO o różnych nominałach (np. jedno UTXO o wartości 2k na każde k do 30) i posiadaniu O wyboru, które UTXO wysłać do A, a które do B.
-- **Brak stanu** – [UTXO można wydać lub zostawić niewykorzystane](https://bitcoin.org/en/glossary/unspent-transaction-output); nie ma możliwości na wieloetapowe kontrakty czy skrypty, które utrzymują jakikolwiek inny wewnętrzny stan poza tym. To sprawia, że trudno jest tworzyć wieloetapowe kontrakty opcji, zdecentralizowane oferty wymiany lub dwuetapowe protokoły zobowiązań kryptograficznych (niezbędne do zabezpieczenia pól obliczeniowych). Oznacza to również, że UTXO może być używany tylko do: buduj proste, jednorazowe kontrakty i nie bardziej złożone „stanowe” kontrakty, takie jak zdecentralizowane organizacje i sprawia, meta-protokoły trudne do wdrożenia. Stan binarny w połączeniu z ślepotą wartości oznacza również, że inna ważna aplikacja, limity wypłaty jest niemożliwa.
-- **Blockchain-blindness** - UTXO są ślepe na dane blockchain, takie jak nonce znacznik czasu i poprzedni hash bloku. To bardzo ogranicza zastosowania w grach i kilku innych kategoriach, przez pozbawienie języka skryptowego potencjalnie cennego źródła losowości.
+- **Brak kompletności w sensie Turinga** – znaczy to, że choć język skryptowy Bitcoina obsługuje duży podzbiór obliczeń, to jednak nie obsługuje on wszystkiego. Główną kategorią, której brakuje, są pętle. Ma to na celu uniknięcie nieskończonych pętli podczas weryfikacji transakcji; teoretycznie jest to przeszkoda możliwa do pokonania przez programistów skryptów, ponieważ każda pętla może być symulowana przez wielokrotne powtarzanie kodu bazowego za pomocą instrukcji warunkowej „if”, ale prowadzi to do skryptów, które są bardzo nieefektywne pod względem wykorzystania przestrzeni. Przykładowo, implementacja alternatywnego algorytmu podpisu krzywej eliptycznej prawdopodobnie wymagałaby 256 powtórzonych cykli mnożenia, które musiałyby być indywidualnie uwzględnione w kodzie.
+- **Ślepota na wartość** – nie ma możliwości, aby skrypt UTXO zapewniał precyzyjną kontrolę nad kwotą, którą można wypłacić. Na przykład, jednym z potężnych przypadków użycia kontraktu wyroczni byłby kontrakt zabezpieczający (hedging), do którego A i B wpłacają równowartość 1000 USD w BTC, a po 30 dniach skrypt wysyła równowartość 1000 USD w BTC do A, a resztę do B. Wymagałoby to wyroczni do określenia wartości 1 BTC w USD, ale nawet wtedy byłaby to ogromna poprawa pod względem zaufania i wymagań infrastrukturalnych w porównaniu do w pełni scentralizowanych rozwiązań dostępnych obecnie. Jednakże, ponieważ UTXO działają w trybie „wszystko albo nic”, jedynym sposobem osiągnięcia tego jest bardzo nieefektywne obejście polegające na posiadaniu wielu UTXO o różnych nominałach (np. jedno UTXO o wartości 2k dla każdego k do 30) i pozwoleniu wyroczni na wybór, które UTXO wysłać do A, a które do B.
+- **Brak stanu** – UTXO mogą być albo wydane, albo niewydane; nie ma możliwości tworzenia kontraktów wieloetapowych ani skryptów, które przechowują jakikolwiek inny stan wewnętrzny poza tym. Utrudnia to tworzenie wieloetapowych kontraktów opcyjnych, zdecentralizowanych ofert wymiany lub dwuetapowych protokołów kryptograficznego zobowiązania (niezbędnych do bezpiecznego nagród obliczeniowych). Oznacza to również, że UTXO mogą być wykorzystywane jedynie do budowania prostych, jednorazowych kontraktów, a nie bardziej złożonych kontraktów „stanowych”, takich jak zdecentralizowane organizacje, co sprawia, że meta-protokoły są trudne do wdrożenia. Połączenie binarnego stanu ze ślepotą na wartość oznacza również, że kolejne ważne zastosowanie, jak limity wypłat, jest niemożliwe do zrealizowania.
+- **Ślepota na blockchain** – UTXO są ślepe na dane z blockchainu, takie jak nonce, znacznik czasu i hasz poprzedniego bloku. Powoduje to poważne ograniczenia w aplikacjach hazardowych i w kilku innych kategoriach, pozbawiając język skryptowy potencjalnie cennego źródła losowości.
-Widzimy zatem trzy podejścia do budowania zaawansowanych aplikacji bazujących na kryptowalucie: budowanie nowego blockchaina, używanie skryptów bazujących na Bitcoin i budowanie metaprotokołu opartego na Bitcoin. Budowanie nowego blockchainu pozwala na nieograniczoną swobodę w budowaniu zestawu funkcji, ale kosztem czasu rozwoju, wysiłku przy uruchamianiu i bezpieczeństwa. Korzystanie ze skryptów jest łatwe do wdrożenia i standaryzacji, ale jest bardzo ograniczone w swoich możliwościach, a metaprotokoły, choć łatwe, cierpią z powodu błędów w skalowalności. Dzięki Ethereum zamierzamy zbudować alternatywny framework, który zapewnia jeszcze większe korzyści w łatwości rozwoju, jak również jak również jeszcze silniejsze właściwości lekkiego klienta, a jednocześnie pozwala aplikacjom na współdzielenie środowiska ekonomicznego i bezpieczeństwa blockchainu.
+Widzimy zatem trzy podejścia do budowania zaawansowanych aplikacji bazujących na
+kryptowalucie: budowanie nowego blockchaina, używanie skryptów bazujących na
+Bitcoin i budowanie metaprotokołu opartego na Bitcoin. Budowanie nowego blockchainu pozwala na nieograniczoną swobodę w budowaniu zestawu funkcji, ale kosztem czasu rozwoju, wysiłku przy uruchamianiu i bezpieczeństwa. Korzystanie ze skryptów jest łatwe do wdrożenia i standaryzacji, ale jest bardzo ograniczone w swoich możliwościach, a metaprotokoły, choć łatwe, cierpią z powodu błędów w skalowalności. Dzięki Ethereum zamierzamy zbudować alternatywny framework, który zapewnia jeszcze większe korzyści w łatwości rozwoju, jak również jeszcze silniejsze właściwości lekkiego klienta, a jednocześnie pozwala aplikacjom na współdzielenie środowiska ekonomicznego i bezpieczeństwa blockchainu.
## Ethereum {#ethereum}
-Celem Ethereum jest stworzenie alternatywnego protokołu do budowy zdecentralizowanych aplikacji, zapewnienie innego zestawu kompromisów, które uważamy za bardzo przydatne dla dużej klasy zdecentralizowanych aplikacji, ze szczególnym naciskiem na sytuacje, w których szybki czas rozwoju, bezpieczeństwo dla małych i rzadkich zastosowań i zdolność różnych aplikacji do bardzo efektywnej interakcji jest istotna. Ethereum robi to budując to, co zasadniczo jest najlepszą abstrakcyjną warstwą podstawową: blockchain z wbudowanym językiem programowania, umożliwienie każdemu pisania inteligentnych kontraktów i zdecentralizowanych aplikacji, w których mogą tworzyć własne arbitralne zasady własności, formaty transakcji i funkcje przemiany stanu. Wersję „gołej kości” Namecoina można zapisać w dwóch linijkach kodu, a inne protokoły, takie jak waluty i systemy reputacji, mogą być zbudowany w czasie poniżej dwudziestu lat. Inteligentne kontrakty, „skrzynki” kryptograficzne, które zawierają wartość i odblokowują je tylko wtedy, gdy spełnione są określone warunki, można również budować na platformie z znacznie większą mocą niż oferowaną przez skryptowanie Bitcoina z powodu dodatkowych potęg Trójkompletność, świadomość wartości, świadomość blockchain-a i stan.
-
-### Filozofia {#philosophy}
-
-Ethereum ma być zaprojektowane zgodnie z następującymi zasadami:
-
-1. **Prostota**: protokół Ethereum powinien być jak najprostszy. Nawet kosztem mniejszej efektywności przechowywania danych lub czasu [fd. 3](#notes) Średni programista powinien być w stanie śledzić i implementować całą specyfikację,[fn. 4](#notes) tak, aby w pełni wykorzystać bezprecedensowy potencjał demokratyzacji, który kryptowaluta wnosi i rozwija wizję Ethereum jako protokół, który jest otwarty dla wszystkich. Żadna optymalizacja która zwiększa złożoność nie powinna być uwzględniona, chyba że optymalizacja ta zapewnia znaczną korzyść.
-2. **Uniwersalność**: zasadnicza część filozofii projektowej Ethereum jest taka, że Ethereum nie posiada "funkcji".[fn. 5](#notes) Zamiast tego Ethereum zapewnia wewnętrzny Skrypt Turing-complete język, który programista może użyć do budowy inteligentnej umowy lub typu transakcji, które mogą być zdefiniowane matematycznie. Chcesz wynaleźć własną finansową pochodną? Z Ethereum, możesz. Chcesz stworzyć własną walutę? Skonfiguruj jako kontrakt Ethereum. Chcesz skonfigurować całą skalę Daemona lub Skynet? Być może będziesz potrzebować kilku tysiący powiązanych umów i pamiętaj, aby je nakarmić hojnie, ale nic Cię nie powstrzymuje z Ethereum i Twoimi opuszkami palców.
-3. **Modularność**: części protokołu Ethereum powinny być zaprojektowane tak, aby były tak modułowe i możliwe do oddzielenia. W trakcie rozwoju, naszym celem jest stworzenie programu, w którym gdybyś miał wykonać małą modyfikację protokołu w jednym miejscu, stos aplikacji nadal funkcjonowałby bez żadnych dalszych modyfikacji. Innowacje takie jak Ethash (patrz [Żółty papier załącznik](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.J) lub artykuł wiki), zmodyfikowanych drzew Patricia ([Żółty papier](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.D), [wiki](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)) i RLP ([YP](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.B) [wiki](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)) powinien być i jest wdrożony jako oddzielna, funkcjonalnie wypełniona biblioteka. Jest to takie, że nawet jeśli są używane w Ethereum, nawet jeśli Ethereum nie wymaga pewnych funkcji, takie funkcje są nadal przydatne również w innych protokołach. Rozwój Ethereum powinien być maksymalnie wykonany, aby przynieść korzyści całemu ekosystemowi kryptowalut, a nie tylko samemu.
-4. **Zdolność**: szczegóły protokołu Ethereum nie są ustawione w kamieniach. Chociaż będziemy bardzo roztropni w zakresie wprowadzania zmian do konstrukcji wysokiego szczebla, na przykład z [odcięciem mapy drogowej](https://ethresear.ch/t/sharding-phase-1-spec/1407/), abstrakcyjnym wykonaniem, przy czym tylko dostępność danych zapisana jest w konsensusie. Testy obliczeniowe później w procesie opracowywania mogą prowadzić do odkrycia, że niektóre modyfikacje, np. do architektury protokołu lub do maszyny wirtualnej Ethereum (EVM) znacząco zwiększą skalowalność lub bezpieczeństwo. Jeśli znajdziemy takie możliwości, wykorzystamy je.
-5. **Niedyskryminacja** i **niecenzura**: protokół powinien nie próbować aktywnie ograniczać lub zapobiegać określonym kategoriom stosowania. Wszystkie mechanizmy regulacyjne zawarte w protokole powinny być zaprojektowane w taki sposób, aby bezpośrednio regulować szkody i nie próbować sprzeciwiać się określonym niepożądanym aplikacjom. Programista może nawet uruchomić nieskończoną pętlę na szczycie Ethereum tak długo, jak długo będą chciały utrzymać płacenie opłaty transakcyjnej.
+Celem Ethereum jest stworzenie alternatywnego protokołu do budowy zdecentralizowanych aplikacji, zapewnienie innego zestawu kompromisów, które uważamy za bardzo przydatne dla dużej klasy zdecentralizowanych aplikacji, ze szczególnym naciskiem na sytuacje, w których szybki czas rozwoju, bezpieczeństwo dla małych i rzadko używanych aplikacji i zdolność różnych aplikacji do bardzo efektywnej interakcji, są ważne. Ethereum robi to, budując coś, co jest w zasadzie ostateczną abstrakcyjną warstwą podstawową: blockchain z wbudowanym językiem programowania kompletnym w sensie Turinga, pozwalającym każdemu pisać inteligentne kontrakty i zdecentralizowane aplikacje, w których można tworzyć własne, dowolne zasady własności, formaty transakcji i funkcje przejścia stanów. Uproszczoną wersję Namecoina można zapisać w dwóch linijkach kodu, a inne protokoły, takie jak waluty i systemy reputacji, mogą być zbudowane w mniej niż dwudziestu. Inteligentne kontrakty, kryptograficzne „skrzynki”, które zawierają wartość i odblokowują ją tylko wtedy, gdy spełnione są określone warunki, można również budować na tej platformie, ze znacznie większą mocą niż oferowana przez skrypty Bitcoina, ze względu na dodatkowe możliwości kompletności w sensie Turinga, świadomości wartości, świadomości blockchainu i stanu.
### Konta Ethereum {#ethereum-accounts}
-W Ethereum stan składa się z obiektów zwanych "kontami", z każdym kontem o 20-bajtowym adresie i przejściach stanu są bezpośrednie transfery wartości i informacji pomiędzy kontami. Konta Ethereum mają cztery pola:
+W Ethereum stan składa się z obiektów zwanych „kontami”, przy czym każde konto ma 20-bajtowy adres, a przejścia stanu to bezpośrednie transfery wartości i informacji pomiędzy kontami. Konto Ethereum posiada cztery pola:
-- **nonce**, licznik używany do upewnienia się, że każda transakcja może być przetworzona tylko raz
-- Bieżące saldo **etheru konta**
-- **kod umowy konta**, jeśli jest obecny
-- Pamięć **konta** (pusta domyślnie)
+- **Nonce**, licznik używany do zapewnienia, że każda transakcja może być przetworzona tylko raz
+- Bieżące **saldo etheru** konta
+- **Kod kontraktu** konta, jeśli jest obecny
+- **Pamięć** konta (domyślnie pusta)
-„Ether” jest główną wewnętrzną kryptowalutą Ethereum używaną do uiszczania opłat transakcyjnych. Ogólnie rzecz biorąc, istnieją dwa rodzaje kont: **rachunki zewnętrzne**, kontrolowane przez klucze prywatne oraz **konta kont kontraktowych**, kontrolowane przez ich kod kontraktu. Zewnętrznie posiadane konto nie posiada kodu i można wysyłać wiadomości z zewnętrznego konta poprzez tworzenie i podpisywanie transakcji; w koncie, za każdym razem, gdy konto kontraktowe otrzymuje komunikat o kodzie aktywuje, pozwala na odczytywanie i zapisywanie do pamięci wewnętrznej i wysyłanie innych wiadomości lub tworzenie kontraktów z kolei.
+„Ether” jest głównym wewnętrznym krypto-paliwem Ethereum, wykorzystywanym do uiszczania opłat transakcyjnych. Ogólnie rzecz biorąc, istnieją dwa rodzaje kont: **konta zewnętrzne**, kontrolowane przez klucze prywatne oraz **konta kontraktowe**, kontrolowane przez ich kod kontraktu. Konto zewnętrzne nie ma kodu i można z niego wysyłać wiadomości poprzez tworzenie i podpisywanie transakcji; w przypadku konta kontraktu, za każdym razem, gdy konto takie otrzyma wiadomość, jego kod zostaje aktywowany, co pozwala mu na odczytywanie i zapisywanie do wewnętrznego magazynu oraz wysyłanie innych wiadomości lub tworzenie kontaktów.
-Należy zauważyć, że „kontraktów” w Ethereum nie należy postrzegać jako czegoś, co powinno być „spełniane” lub „przestrzegane”; są raczej takie jak „czynniki autonomiczne”, które żyją w środowisku Ethereum execution, zawsze wykonując określony fragment kodu, gdy jest "poked" przez wiadomość lub transakcję, i sprawowanie bezpośredniej kontroli nad własnym eterem oraz ich własnym sklepem kluczowy/wartości w celu śledzenia trwałych zmiennych.
+Warto zauważyć, że „kontrakty” w Ethereum nie powinny być postrzegane jako coś, co powinno być „spełnione” lub „przestrzegane”; są one raczej jak „autonomiczni agenci”, którzy żyją w środowisku wykonawczym Ethereum, zawsze wykonując określony fragment kodu, gdy są „szturchani” przez wiadomość lub transakcję, oraz mają bezpośrednią kontrolę nad własnym saldem etheru i własnym magazynem klucz/wartość, w którym przechowują trwałe zmienne.
-### Wiadomości i Transakcje {#messages-and-transactions}
+### Wiadomości i transakcje {#messages-and-transactions}
-Termin "transakcja" jest używany w Ethereum do odwoływania się do podpisanego pakietu danych, który przechowuje wiadomość, która ma być wysłana z zewnętrznego konta. Transakcje zawierają:
+Termin „transakcja” jest używany w Ethereum w odniesieniu do podpisanego pakietu danych, który przechowuje wiadomość do wysłania z konta zewnętrznego. Transakcje zawierają:
-- Odbiorca wiadomości
+- Odbiorcę wiadomości
- Podpis identyfikujący nadawcę
-- Ilość etheru do przeniesienia od nadawcy do odbiorcy
+- Ilość etheru do przesłania od nadawcy do odbiorcy
- Opcjonalne pole danych
-- Wartość `STARTGAS` przedstawiająca maksymalną liczbę kroków do wykonania transakcji
-- Wartość `GASPRICE`, przedstawiająca opłatę, którą nadawca płaci za krok obliczeniowy
+- Wartość `STARTGAS`, reprezentująca maksymalną liczbę kroków obliczeniowych, które może wykonać transakcja
+- Wartość `GASPRICE` reprezentująca opłatę, jaką płaci nadawca za każdy krok obliczeniowy
-Pierwsze trzy pola to pola standardowe w każdej kryptowalucie. Pole danych nie posiada domyślnie żadnej funkcji, ale maszyna wirtualna posiada opcode, które kontrakt może wykorzystać do uzyskania dostępu do danych; jako przykład użyj, jeśli kontrakt działa jako usługa rejestracyjna domeny blockchain, następnie może zinterpretować dane przekazane do niego jako zawierające dwa "pola", pierwsze pole jest domeną do rejestracji, a drugie pole jest adresem IP do rejestracji. Umowa odczytałaby te wartości z danych wiadomości i odpowiednio umieściłaby je w pamięci.
+Pierwsze trzy to standardowe pola, których się oczekuje w każdej kryptowalucie. Pole danych nie ma domyślnie żadnej funkcji, ale maszyna wirtualna posiada kod operacyjny, za pomocą którego kontrakt może uzyskać dostęp do tych danych; dla przykładu, jeśli kontrakt działa na blockchainie jako usługa rejestracji domen, może chcieć zinterpretować przekazywane mu dane jako zawierające dwa „pola”, przy czym pierwsze pole mogłoby być domeną do zarejestrowania, a drugie adresem IP, do którego byłaby przypisana domena. Kontrakt odczytałby te wartości z danych wiadomości i odpowiednio umieścił je w magazynie.
-Pola `STARTGAS` i `GASPRICE` są kluczowe dla antynegowania modelu serwisowego. Aby zapobiec przypadkowemu lub wrogim nieskończonym pętlom lub innym stratom obliczeniowym w kodzie, każda transakcja jest wymagana, aby ustawić limit do ile kroków obliczeniowych wykonania kodu, które może użyć. Podstawową jednostką obliczeniową jest „gaz”; Zazwyczaj krok obliczeniowy kosztuje 1 gaz, ale niektóre operacje kosztują więcej gazu, ponieważ są bardziej kosztowne, lub zwiększyć ilość danych, które muszą być przechowywane jako część stanu. Za każdy bajt danych transakcji pobiera się również opłatę w wysokości 5 gazów. Zamiarem systemu opłat jest wymaganie od atakującego zapłaty proporcjonalnie za każdy zasób, który konsumowają, w tym obliczenia, szerokość pasma i przechowywanie; stąd jakakolwiek transakcja, która powoduje, że sieć zużywająca większą ilość dowolnego z tych zasobów musi mieć opłatę gazową w przybliżeniu proporcjonalną do przyrostu ilości.
+Pola `STARTGAS` i `GASPRICE` mają kluczowe znaczenie dla modelu ochrony Ethereum przed atakami typu „odmowa usługi”. Aby zapobiec przypadkowym bądź wrogim nieskończonym pętlom lub innym przypadkom marnotrawienia zasobów obliczeniowych w kodzie, każda transakcja musi ustawić limit na liczbę kroków obliczeniowych, które mogą zostać wykorzystane podczas jej realizacji. Podstawową jednostką obliczeniową jest „gaz”; zazwyczaj jeden krok obliczeniowy kosztuje 1 gaz, ale niektóre operacje kosztują większe ilości gazu, ponieważ są bardziej wymagające obliczeniowo lub zwiększają ilość danych, które muszą być przechowywane jako część stanu. Istnieje również opłata w wysokości 5 gazu za każdy bajt w danych transakcji. System opłat ma na celu zmuszenie atakującego do proporcjonalnego płacenia za każdy zasób, który zużywa, w tym za obliczenia, przepustowość i pamięć; w związku z tym każda transakcja, która powoduje zwiększone zużycie któregokolwiek z tych zasobów przez sieć, musi mieć opłatę za gaz w przybliżeniu proporcjonalną to tego wzrostu.
-### Wiadomości {#messages}
+### Komunikaty {#messages}
-Umowy mają możliwość wysyłania „wiadomości” do innych umów. Wiadomości są obiektami wirtualnymi, które nigdy nie są serializowane i istnieją tylko w środowisku wykonania Ethereum. Wiadomość zawiera:
+Kontrakty mają możliwość wysyłania „wiadomości” do innych kontraktów. Wiadomości są wirtualnymi obiektami, które nigdy nie są serializowane i istnieją tylko w środowisku wykonawczym Ethereum. Wiadomość zawiera:
-- Nadawca wiadomości (niejawny)
-- Odbiorca wiadomości
-- Ilość etheru do przeniesienia wraz z wiadomością
+- Nadawcę wiadomości (niejawny)
+- Odbiorcę wiadomości
+- Ilość etheru do przesłania wraz z wiadomością
- Opcjonalne pole danych
- Wartość `STARTGAS`
-Wiadomość jest zasadniczo jak transakcja, z wyjątkiem tego, że jest generowana przez kontrakt, a nie przez podmiot zewnętrzny. Wiadomość jest generowana, gdy kontrakt aktualnie wykonujący kod wykonuje kod `CALL` opcode, który tworzy i wykonuje wiadomość. Podobnie jak transakcja, wiadomość prowadzi do konta odbiorcy z jego kodem. Tak więc kontrakty mogą mieć relacje z innymi kontraktami w dokładnie taki sam sposób, jak podmioty zewnętrzne.
+Zasadniczo wiadomość jest jak transakcja, z tą różnicą, że jest tworzona przez kontakt, a nie podmiot zewnętrzny. Wiadomość jest tworzona, gdy kontrakt aktualnie wykonujący kod wykona kod operacyjny `CALL`, który tworzy i wykonuje wiadomość. Podobnie jak w przypadku transakcji, wiadomość prowadzi do uruchomienia kodu na koncie odbiorcy. W ten sposób, kontrakty mogą mieć relacje z innymi kontraktami w taki sam sposób, w jaki mogą to robić podmioty zewnętrzne.
-Zauważ, że przydział gazu przydzielony przez transakcję lub umowę ma zastosowanie do całkowitej ilości gazu zużywanego przez tę transakcję i do wszystkich zleceń. Na przykład, jeśli zewnętrzny podmiot A wysyła transakcję do B z 1000 gazów, i B zużywa 600 gazu przed wysłaniem wiadomości do C, a wewnętrzna realizacja C zużywa 300 gazu przed powrotem, następnie B może wydać kolejne 100 gazu przed wyczerpaniem gazu.
+Warto zauważyć, że przydział gazu przypisany przez transakcję lub kontrakt dotyczy całkowitej ilości gazu zużytej przez tę transakcję i wszystkie jej podwykonania. Na przykład, jeśli podmiot zewnętrzny A wyśle transakcję do B z 1000 gazu, a B zużyje 600 gazu przed wysłaniem wiadomości do C, a wewnętrzne wykonanie C zużyje 300 gazu przed zwróceniem wyniku, to B może zużyć jeszcze 100 gazu przed wyczerpaniem dostępnego gazu.
-### Funkcja Przejścia Stanów Ethereum {#ethereum-state-transition-function}
+### Funkcja przejścia stanu w Ethereum {#ethereum-state-transition-function}
-
+
-Funkcja zmiany stanu Ethereum, `ZASTOSUJ-(S,TX) -> S'` może być zdefiniowane w następujący sposób:
+Funkcja przejścia stanu Ethereum, `APPLY(S,TX) -> S'` może być zdefiniowana w następujący sposób:
-1. Sprawdź, czy transakcja jest dobrze sformułowana (tj. ma prawą liczbę wartości), podpis jest prawidłowy, a nonce odpowiada nonce na koncie nadawcy. Jeśli nie, zwracaj błąd.
-2. Oblicz opłatę transakcyjną jako `STARTGAS * GASPRICE`, i ustaw adres wysyłający na podstawie podpisu. Odejmij opłatę z salda konta nadawcy i pomnóż wartość jednorazową nadawcy. Jeśli nie ma wystarczającego salda do wydania, zwróć błąd.
-3. Inicjalizacja `GAS = STARTGAS`, i odebrać pewną ilość gazu na bajt, aby zapłacić za bajty w transakcji.
-4. Przenieś wartość transakcji z konta nadawcy na konto odbiorcze. Jeśli konto odbierające jeszcze nie istnieje, utwórz je. Jeśli konto otrzymujące jest umową, uruchom kod kontraktu albo w celu dokończenia lub do czasu wygaśnięcia wykonania gazu.
-5. Jeśli transfer wartości nie powiódł się, ponieważ nadawca nie miał wystarczającej ilości pieniędzy lub podczas wykonanie kodu skończył się gaz, przywróć wszystkie zmiany stanu z wyjątkiem płatności opłat i dodać opłaty do konta kopalni.
-6. W przeciwnym razie zwrot opłat za cały pozostały gaz nadawcy i wyślij opłaty zapłacone za gaz zużywany górnikowi.
+1. Sprawdź, czy transakcja jest poprawnie sformułowana (tj. ma odpowiednią liczbę wartości), podpis jest prawidłowy, a nonce pasuje do nonce na koncie nadawcy. W przeciwnym razie zwróć błąd.
+2. Oblicz opłatę transakcyjną jako `STARTGAS * GASPRICE` i określ adres nadawcy na podstawie podpisu. Odejmij opłatę od salda konta nadawcy i zwiększ nonce nadawcy. Jeśli saldo jest nie wystarczające, aby pokryć opłatę, zwróć błąd.
+3. Zainicjuj `GAS = STARTGAS` i odejmij określoną ilość gazu na bajt, aby zapłacić za bajty w transakcji.
+4. Przenieś wartość transakcji z konta nadawcy na konto odbiorcy. Jeśli konto odbiorcy jeszcze nie istnieje, utwórz je. Jeśli konto odbiorcy jest kontraktem, wykonaj kod kontraktu do momentu zakończenia lub wyczerpania gazu.
+5. Jeśli transfer wartości nie powiedzie się z powodu braku środków na koncie nadawcy lub wykonanie kodu wyczerpało gaz, cofnij wszystkie zmiany stanu z wyjątkiem uiszczenia opłat, a opłaty dodaj do konta górnika.
+6. W przeciwnym razie zwróć opłaty za niewykorzystany gaz nadawcy i wyślij opłaty za zużyty gaz na konto górnika.
-Na przykład należy przyjąć, że kod kontraktu jest:
+Załóżmy na przykład, że kod kontaktu wygląda tak:
- if !self.storage[calldataload(0)]:
- self.storage[calldataload(0)] = calldataload(32)
+```py
+if !self.storage[calldataload(0)]:
+ self.storage[calldataload(0)] = calldataload(32)
+```
-Zauważ, że w rzeczywistości kod umowy jest zapisany w kodzie EVM o niskim poziomie; ten przykład jest napisany w Serpent, jednym z naszych języków wysokiego szczebla, dla jasności i może być skompilowany do kodu EVM. Załóżmy, że magazyn umowy zaczyna się od pustego, a transakcja jest wysyłana o wartości 10 eterów, 2000 gazu, 0. 01 cena gazu dla eteru i 64 bajty danych, z bajtami 0-31 reprezentującymi liczbę `2` i bajty 32-63 reprezentujące ciąg `CHARLIE`.[fn. 6](#notes) Proces dla funkcji przejścia stanu w tym przypadku jest następujący:
+Warto zauważyć, że w rzeczywistości kod kontraktu jest napisany w niskopoziomowym kodzie EVM; dla przejrzystości, powyższy przykład jest napisany w Serpent, jednym z naszych języków wysokiego poziomu, i może być skompilowany do kodu EVM. Załóżmy, że pamięć kontraktu jest na początku pusta i zostaje wysłana transakcja z wartością 10 etherów, 2000 gazu, ceną gazu 0,001 etheru i 64 bajtami danych, gdzie bajty 0-31 reprezentują liczbę `2`, a bajty 32-63 reprezentują ciąg znaków `CHARLIE`. Proces dla funkcji przejścia stanu w tym przypadku wygląda następująco:
-1. Sprawdź, czy transakcja jest prawidłowa i dobrze sformowana.
-2. Sprawdź, czy nadawca transakcji ma co najmniej 2000 \* 0.001 = 2 każdego z nich. Jeśli tak, wówczas odjąć 2 ether od konta nadawcy.
-3. Rozpoczęcie gazu = 2000; zakładając, że transakcja ma 170 bajtów a opłata bajtowa wynosi 5, odjąć 850 tak, że pozostało 1150 gazów.
-4. Odejmij więcej 10 etherów od konta nadawcy i dodaj je do konta kontraktu.
-5. Uruchom kod. W tym przypadku jest to proste: sprawdza, czy użyto magazynu w kontrakcie `2`, zauważa, że nie jest, i, aby ustawić pamięć w indeksie `2` na wartość `CHARLIE`. Załóżmy, że to zajmuje 187 gazu, więc pozostała ilość gazu wynosi 1150 - 187 = 963
-6. Dodaj 963 \* 0.001 = 0.963 ether z powrotem na konto nadawcy i zwróć otrzymany stan.
+1. Sprawdź, czy transakcja jest prawidłowa i poprawnie sformułowana.
+2. Sprawdź, czy nadawca transakcji ma przynajmniej 2000 \* 0.001 = 2 ethery. Jeśli tak, odejmij 2 ethery z konta nadawcy.
+3. Zainicjuj gaz = 2000; zakładając, że transakcja ma 170 bajtów, a opłata za bajt wynosi 5, odejmij 850, pozostawiając 1150 gazu.
+4. Odejmij kolejne 10 etherów z konta nadawcy i dodaj je do konta kontraktu.
+5. Uruchom kod. W tym przypadku jest to proste: sprawdza, czy pamięć kontraktu pod indeksem `2` jest używana, zauważa, że nie jest, więc ustawia pamięć pod indeksem `2` na wartość `CHARLIE`. Załóżmy, że zabiera to 187 gazu, więc pozostała ilość gazu wynosi 1150 - 187 = 963
+6. Dodaj 963 \* 0.001 = 0.963 etheru z powrotem na konto nadawcy i zwróć wynikowy stan.
-W przypadku braku kontraktu na dzień otrzymania transakcji, następnie całkowita opłata transakcyjna byłaby po prostu równa dostarczonej `GASPRICE` pomnożonej przez długość transakcji wyrażonej w bajtach, i dane przesyłane wraz z transakcją byłyby nieistotne.
+Gdyby po stronie odbiorcy transakcji nie byłoby kontraktu, to całkowita opłata transakcyjna byłaby po prostu równa wartości `GASPRICE` pomnożonej przez długość transakcji w bajtach, a dane przesłane wraz z transakcją byłyby nieistotne.
-Zauważ, że wiadomości działają równorzędnie do transakcji pod względem powracają: jeśli wykonanie wiadomości kończy się gazem, następnie tego komunikatu wykonania i wszystkich innych egzekucji wyzwalanych przez to wykonanie, cofnięcie,, ale wykonania nadrzędne nie muszą być przywrócone. Oznacza to, że "bezpiecznie" kontraktu na inną umowę, tak jak w przypadku połączeń B z gazem G, wówczas realizacja A jest gwarantowana utratą co najwyżej gazu G. Na koniec, weź pod uwagę, że istnieje opcode, `STWÓRZ`, który tworzy umowę; jego mechaniki wykonania są na ogół podobne do `CALL`, z wyjątkiem, że wyjście wykonania określa kod nowo utworzonej umowy.
+Warto zauważyć, że wiadomości działają podobnie do transakcji w kontekście cofania; jeśli wykonanie transakcji wyczerpie gaz, to jej wykonanie i wszystkie inne wykonania wywołane przez to wykonanie zostaną cofnięte, ale wykonania nadrzędne nie muszą być cofane. Oznacza to, że „bezpieczne” jest dla kontraktu wywołanie innego kontraktu, ponieważ jeśli A wywołuje B z ilością G gazu, to wykonanie A gwarantuje utratę co najwyżej G gazu. Na koniec warto zauważyć, że istnieje kod operacyjny, `CREATE`, który tworzy kontrakt; jego mechanika wykonania jest generalnie podobna do `CALL`, z tą różnicą, że wynik wykonania określa kod nowo utworzonego kontraktu.
### Wykonanie kodu {#code-execution}
-Kod w kontraktach Ethereum jest napisany w niskopoziomowym, opartym na stosie języku kodowym bytecode, zwanym "Ethereum virtual machincode" lub "EVM code". Kod składa się z serii bajtów, gdzie każdy bajt reprezentuje operację. Zasadniczo wykonanie kodu jest nieskończoną pętlą polegającą na wielokrotnym przeprowadzaniu operacji w bieżącym liczniku programu (co rozpoczyna się od zera), a następnie zwiększaniu licznika programu o jeden, do momentu osiągnięcia końca kodu lub wykrycia błędu lub `STOP` lub `RETURN`. Operacje mają dostęp do trzech typów przestrzeni do przechowywania danych:
+Kod w kontraktach Ethereum jest napisany w niskopoziomowym, opartym na stosie języku kodu bajtowego, nazywanym „kodem maszyny wirtualnej Ethereum” lub „kodem EVM”. Kod składa się z serii bajtów, gdzie każdy bajt reprezentuje operację. Zasadniczo wykonywanie kodu jest nieskończoną pętlą, która polega na wielokrotnym powtarzaniu operacji na bieżącym liczniku programu (który zaczyna od zera), a następnie zwiększaniu licznika programu o jeden, aż do momentu osiągnięcia końca kodu lub napotkania błędu bądź instrukcji `STOP` lub `RETURN`. Operacje mają dostęp do trzech typów przestrzeni do przechowywania danych:
-- **stos**, kontener ostatniej w pierwszej kolejności, do którego wartości można wcisnąć i wyciąć
+- **Stos**, kontener typu „ostatnie weszło, pierwsze wyszło”, do którego można wstawiać i usuwać wartości
- **Pamięć**, nieskończenie rozszerzalna tablica bajtów
-- Długoterminowa pamięć **kontraktu**, sklep klucz/wartość. W odróżnieniu od stosu i pamięci, które resetują się po zakończeniu obliczeń, pamięć utrzymuje się przez długi czas.
+- Długoterminowa **pamięć** kontraktu, czyli magazyn klucz-wartość. W przeciwieństwie do stosu i pamięci, które są resetowane po zakończeniu obliczeń, magazyn jest trwały i przechowuje dane przez dłuższy czas.
-Kod może również uzyskać dostęp do wartości, nadawcy i danych przychodzących wiadomości, jak również dane nagłówka bloku, a kod może również zwracać bajt tablicy danych jako dane wyjściowe.
+Kod ma również dostęp do wartości, nadawcy, danych przychodzącej wiadomości, a także do danych nagłówka bloku. Kod może również zwrócić tablicę bajtów danych jako dane wyjściowe.
-Formalny model realizacji kodu EVM jest zaskakująco prosty. Podczas gdy maszyna wirtualna Ethereum jest uruchomiona, jej pełny stan obliczeniowy może być zdefiniowany przez kropkę `(block_state, transakcja, wiadomość, kod, pamięć, stack, pc, gaz)`, gdzie `block_state` jest stanem globalnym zawierającym wszystkie konta, także zawiera salda i pamięć. Na początku każdej rundy egzekucji bieżąca instrukcja jest odnajdywana przez pobranie `pc`-tego bajtu `code` (lub 0, jeśli `pc >= len(kod)`), a każda instrukcja ma własną definicję pod względem tego, jak wpływa na krotkę. Na przykład `ADD` wyświetla dwa elementy poza stos i pycha ich sumę, zmniejsza `gaz` o 1 i przyrosty `pc` o 1, i `PRZECHOWYWANIE` wyświetla dwa najlepsze elementy poza stosem i wstawia drugą pozycję do magazynu kontraktu w indeksie określonym przez pierwszą pozycję. Chociaż istnieje wiele sposobów optymalizacji Ethereum wykonywania maszyny wirtualnej poprzez kompilację just-in-time podstawowa implementacja Ethereum może być wykonana za kilkaset linii kodu.
+Formalny model wykonywania kodu EVM jest zaskakująco prosty. Podczas gdy Wirtualna Maszyna Ethereum jest uruchomiona, jej pełny stan obliczeniowy może być zdefiniowany za pomocą krotki `(block_state, transaction, message, code, memory, stack, pc, gas)`, gdzie `block_state` to globalny stan zawierający wszystkie konta, w tym ich salda i pamięć. Na początku każdej rundy wykonywania aktualna instrukcja jest odnajdywana poprzez pobranie `pc`-tego bajtu `code` (lub 0, jeśli `pc >= len(code)`), a każda instrukcja ma własną definicję tego, jak wpływa na krotkę. Na przykład `ADD` usuwa dwa elementy ze stosu i dodaje z powrotem ich sumę, zmniejsza `gas` o 1 i zwiększa `pc` o 1, a `SSTORE` usuwa dwa górne elementy ze stosu i wstawia drugi element do pamięci kontraktu pod indeksem określonym przez pierwszy element. Chociaż istnieje wiele sposobów optymalizacji wykonywania kodu maszyny wirtualnej Ethereum, na przykład poprzez kompilację just-in-time, podstawową implementację Ethereum można zrealizować w kilku setkach linii kodu.
-### Łańcuch bloków i górnictwo {#blockchain-and-mining}
+### Blockchain i wydobycie {#blockchain-and-mining}
-
+
-Blockchain Ethereum jest pod wieloma względami podobny do łańcucha bloków Bitcoin, choć ma pewne różnice. Główna różnica między Ethereum i Bitcoinem w odniesieniu do architektury blockchain polega na tym, że w odróżnieniu od Bitcoin(który zawiera tylko kopię listy transakcji), Bloki Ethereum zawierają kopię zarówno listy transakcji, jak i najnowszego stanu. Oprócz tego, dwie inne wartości, liczba bloku i trudności, są również przechowywane w bloku. Podstawowy blok algorytm walidacji w Ethereum jest następujący:
+Blockchain Ethereum jest w wielu aspektach podobny do blockchainu Bitcoin, chociaż ma też pewne różnice. Główna różnica między Ethereum a Bitcoinem pod względem architektury blockchainu polega na tym, że bloki Ethereum, w przeciwieństwie do bloków Bitcoin, zawierają kopię zarówno listę transakcji, jak i najnowszego stanu. Poza tym, w bloku przechowywane są również dwie inne wartości: numer bloku i trudność. Podstawowy algorytm walidacji bloku w Ethereum wygląda następująco:
-1. Sprawdź, czy poprzedni blok odwołany przez blok istnieje i jest ważny.
-2. Sprawdź, czy znacznik czasu bloku jest większy niż w poprzedni blok i mniej niż 15 minut w przyszłości
-3. Sprawdź, czy numer bloku, poziom trudności, korzeń transakcji, wujek limit root i gazu (różne koncepcje specyficzne dla Ethereum niskiego poziomu) są ważne.
-4. Sprawdź, czy dowód pracy na bloku jest ważny.
-5. Niech `S[0]` będzie stanem na końcu poprzedniego bloku.
-6. Załóżmy, że `TX` jest listą transakcji z `n` transakcji. Dla wszystkich `i` w `0...n-1`, ustaw `S[i+1] = APPLY(S[i],TX[i])`. Jeśli którakolwiek z aplikacji zwraca błąd, lub jeśli całkowity gaz zużywany w bloku w górę aż do momentu, gdy ten punkt przekroczy `GASLIMIT`, zwróć błąd.
-7. Pozwól `S_FINAL` być `S[n]`, ale dodaj nagrodę za blok zapłaconą górnikowi.
-8. Sprawdź, czy pierwiastek drzewa Merkle stanu `S_FINAL` jest równy końcowemu pierwiastkowi stanu podanemu w nagłówku bloku. Jeśli tak, blok jest ważny; w przeciwnym razie jest nieprawidłowy.
+1. Sprawdź, czy poprzedni blok, do którego się odwołano, istnieje i jest prawidłowy.
+2. Sprawdź, czy znacznik czasu bloku jest większy niż znacznik czasu poprzedniego bloku i mniejszy niż 15 minut w przyszłość.
+3. Sprawdź, czy numer bloku, trudność, korzeń transakcji, korzeń wujka oraz limit gazu (różne niskopoziomowe koncepcje specyficzne dla Ethereum) są prawidłowe.
+4. Sprawdź, czy proof-of-work w bloku jest prawidłowy.
+5. Niech S[0] będzie stanem na końcu poprzedniego bloku.
+6. Niech `TX` będzie listą transakcji bloku z `n` transakcjami. Dla wszystkich `i` w `0...n-1`, ustaw `S[i+1] = APPLY(S[i],TX[i])`. Jeśli którakolwiek z aplikacji zwróci błąd lub jeśli całkowite zużycie gazu w bloku do tego momentu przekroczy `GASLIMIT`, zwróć błąd.
+7. Niech `S_FINAL` będzie równe `S[n]`, ale z dodaną nagrodą za blok wypłaconą górnikowi.
+8. Sprawdź, czy korzeń drzewa Merkle stanu `S_FINAL` jest równy końcowemu korzeniowi stanu podanemu w nagłówku bloku. Jeśli tak, blok jest prawidłowy; w przeciwnym razie jest nieprawidłowy.
-Podejście na pierwszy rzut oka może wydawać się wysoce nieskuteczne, ponieważ musi przechowywać cały stan z każdym blokiem, ale w rzeczywistości wydajność powinna być porównywalna do wydajności Bitcoin. Powodem jest to, że stan jest przechowywany w strukturze drzewa, i po każdym bloku tylko mała część drzewa musi zostać zmieniona. Tak więc ogólnie pomiędzy dwoma sąsiadującymi blokami zdecydowana większość drzewa powinna być taka sama, i dlatego dane mogą być przechowywane raz i odsyłane dwukrotnie za pomocą wskaźników (tj. hashy subdrzewa). Aby to osiągnąć, użyto specjalnego rodzaju drzewa znanego jako "drzewo Patricia". łącznie z modyfikacją pojęcia drzewa Merkle, która pozwala na wstawienie węzłów i usunięcie, a nie tylko na sprawne zmiany. Dodatkowo, ponieważ wszystkie informacje o stanie są częścią ostatniego bloku, nie ma potrzeby przechowywania całej historii blockchain - strategii, która jeśli może być zastosowany do Bitcoina, można obliczyć aby zapewnić 5-20x oszczędności w przestrzeni.
+Podejście to może wydawać się bardzo nieefektywne na pierwszy rzut oka, ponieważ wymaga przechowywania całego stanu z każdym blokiem, ale w rzeczywistości efektywność powinna być porównywalna do tej w Bitcoinie. Powodem jest to, że stan jest przechowywany w strukturze drzewa, a po każdym bloku tylko mała część drzewa musi być zmieniana. W związku z tym na ogół między dwoma sąsiednimi blokami zdecydowana większość drzewa powinna być taka sama, a zatem dane mogą być przechowywane raz i odwoływane podwójnie za pomocą wskaźników (tj. haszy poddrzew). W tym celu wykorzystuje się specjalny rodzaj drzewa znany jako „drzewo Patricia”, które jest modyfikacją koncepcji drzewa Merkle, umożliwiającą efektywne dodawanie i usuwanie węzłów, a nie tylko ich zmianę. Co więcej, ponieważ wszystkie informacje o stanie są częścią ostatniego bloku, nie ma potrzeby przechowywania całej historii blockchainu — strategia, która gdyby mogła być zastosowana w Bitcoinie, mogłaby zapewnić oszczędności rzędu 5-20 razy względem przestrzeni.
-Często zadawane pytanie brzmi: "gdzie" kod kontraktu w kategoriach fizycznego sprzętu. Ma to prostą odpowiedź: proces wykonywania kodu kontraktu jest częścią definicji funkcji przejścia stanu, który jest częścią algorytmu walidacji bloku, więc jeśli transakcja jest dodana do bloku `B` kod wygenerowany przez tę transakcję zostanie wykonany przez wszystkie węzły, teraz i w przyszłości, ten pobierz i zweryfikuj blok `B`.
+Często zadawanym pytaniem jest „gdzie” wykonywany jest kod kontraktu, pod względem fizycznego sprzętu. Odpowiedź jest prosta: proces wykonywania kodu kontraktu jest częścią definicji funkcji przejścia stanu, która jest częścią algorytmu walidacji bloku, więc jeśli transakcja zostanie dodana do bloku `B`, wykonanie kodu wywołane przez tę transakcję zostanie wykonane przez wszystkie węzły, teraz i w przyszłości, które pobiorą i zweryfikują blok `B`.
## Aplikacje {#applications}
-Ogólnie rzecz biorąc, oprócz Ethereum istnieją trzy rodzaje zastosowań. Pierwsza kategoria to aplikacje finansowe, dające użytkownikom potężniejsze sposoby zarządzania i zawierania umów przy użyciu pieniędzy. Obejmuje to podzlecenia, pochodne instrumenty finansowe, kontrakty zabezpieczające, portfele oszczędnościowe, testamenty, a ostatecznie nawet niektóre klasy umów o pracę. Druga kategoria to aplikacje półfinansowe, w których zaangażowane są pieniądze, ale istnieje również ciężka strona niepieniężna tego, co się dzieje; Doskonałym przykładem jest samowymuszanie odbić się na rozwiązaniach problemów obliczeniowych. Wreszcie istnieją takie aplikacje, jak głosowanie online i zdecentralizowane zarządzanie które w ogóle nie są finansowe.
+Ogólnie rzecz biorąc, na Ethereum istnieją trzy rodzaje zastosowań. Pierwsza kategoria to aplikacje finansowe, które zapewniają użytkownikom bardziej zaawansowane sposoby zarządzania i zawierania umów z wykorzystaniem ich środków. Obejmuje to subwaluty, derywaty finansowe, kontrakty zabezpieczające, portfele oszczędnościowe, testamenty, a nawet niektóre rodzaje pełnowymiarowych umów o pracę. Druga kategoria to aplikacje półfinansowe, w których zaangażowane są pieniądze, ale istnieje również silna strona niepieniężna tego, co się robi; doskonałym przykładem są samoegzekwujące się nagrody za rozwiązania problemów obliczeniowych. Trzecia kategoria to aplikacje, takie jak głosowanie online i zdecentralizowane zarządzanie, które nie są w ogóle związane z finansami.
### Systemy tokenów {#token-systems}
-Systemy tokenów blockchain mają wiele zastosowań, począwszy od podwalut reprezentujących aktywa takie jak USD lub złoto po firmę, indywidualne tokeny reprezentujące inteligentną nieruchomość, zabezpiecz nieprzerobione kupony, a nawet systemy tokenów bez powiązań z konwencjonalną wartością w ogóle używane jako systemy motywacyjne. Systemy tokenów są zaskakująco łatwe do wdrożenia w Ethereum. Kluczowym punktem do jest to, że waluta lub system tokenów, zasadniczo jest bazą danych z jedną operacją: odjąć X jednostki od A i dać X jednostkom B, z przepisem, że (1) A posiadała co najmniej X jednostek przed transakcją oraz (2) transakcja jest zatwierdzona przez A. Wszystko, czego potrzebuje do wdrożenia systemu tokenów to wdrożenie tej logiki do umowy.
+Blockchainowe systemy tokenów mają wiele zastosowań, począwszy od subwalut reprezentujących aktywa takie jak USD, złoto czy nawet akcje firm, indywidualnych tokenów reprezentujących inteligentną własność, bezpiecznych i niepodrabialnych kuponów, aż do systemów tokenów niezwiązanych z tradycyjną wartością, wykorzystywanych jako systemy punktowe do zachęcania. Systemy tokenów są zaskakująco łatwe do zaimplementowania w Ethereum. Kluczowym punktem do zrozumienia jest to, że każda waluta lub system tokenów to zasadniczo baza danych z jedną operacją: odejmij X jednostek od A i dodaj X jednostek do B z zastrzeżeniem, że (1) A miał co najmniej X jednostek przed transakcją oraz (2) transakcja została zatwierdzona przez A. Wszystko, czego potrzeba do zaimplementowania systemu tokenów, to zaimplementowanie tej logiki w kontrakcie.
-Podstawowy kod do implementacji systemu tokenów w Serpent wygląda tak: następuje:
+Podstawowy kod do implementacji systemu tokenów w Serpent wygląda następująco:
- def wyślij (do, wartość):
- jeśli siebie. torage[msg.sender] >= wartość:
- siebie. torage[msg.sender] = self.storage[msg.sender] - wartość
- samo. torage[to] = samodzielny.magazyn[to] + wartość
+```py
+def send(to, value):
+ if self.storage[msg.sender] >= value:
+ self.storage[msg.sender] = self.storage[msg.sender] - value
+ self.storage[to] = self.storage[to] + value
+```
-Jest to zasadniczo dosłowne wdrożenie „systemu bankowego” funkcji transformacji stanu, opisanej powyżej w niniejszym dokumencie. Kilka dodatkowych linii kodu, aby zapewnić początkowy etap dystrybucji jednostek waluty w pierwszym miejscu i kilka innych skrzynek krawędziowych, i idealnie funkcja zostałaby dodana, aby umożliwić innym umowom zapytanie o saldo adresu. Ale to wszystko jest w porządku. Teoretycznie Systemy tokenów ethereum, działające jako subwaluty, mogą potencjalnie zawierać inną ważną funkcję, której w łańcuchu meta-waluty bazujące na Bitcoinach brakuje: możliwość uiszczania opłat za transakcje bezpośrednio w tej walucie. Sposób, w jaki miałaby być wdrożony, jest taki, że kontrakt utrzymałby saldo eteru, z którym zwrócił ether użyty do uiszczenia opłat na rzecz nadawcy, i napełniłby saldo pobierając wewnętrzne jednostki walutowe, które pobiera, i odsprzedając je na ciągłej aukcji. Użytkownicy musieliby zatem "aktywować" swoje konta z eterem, ale kiedy ether będzie tam taki, będzie mógł zostać ponownie użyty, ponieważ kontrakt będzie go zwracał za każdym razem.
+Jest to zasadniczo dosłowna implementacja funkcji przejścia stanu „systemu bankowego” opisanej wcześniej w tym dokumencie. Trzeba dodać kilka dodatkowych linijek kodu, aby zapewnić początkowy etap dystrybucji jednostek walutowych, a najlepiej byłoby dodać funkcję, która pozwoli innymi kontraktom sprawdzenie salda adresu. I to wszystko. Teoretycznie, oparte na Ethereum systemy tokenów odgrywające rolę walut podrzędnych mogą potencjalnie zawierać inną ważną funkcję, której brakuje meta walutom opartym na Bitcoinie: możliwość płacenia opłat transakcyjnych w tej walucie. Sposób, w jaki można by to zaimplementować, polega na tym, że kontakt utrzymywałby saldo etheru, z którego refundowałby ether użyty do uiszczenia opłat nadawcy, a uzupełniałby to saldo, zbierając wewnętrzne jednostki walutowe pobierane jako opłaty i odsprzedając je w stale trwającej aukcji. Użytkownicy musieliby zatem „aktywować” swoje konta za pomocą etheru, ale gdy ether byłby już na koncie, to mógłby on być ponownie używany, ponieważ kontrakt refundowałby go za każdym razem.
-### Instrumenty pochodne i waluty o stabilnej wartości {#financial-derivatives-and-stable-value-currencies}
+### Pochodne finansowe i waluty o stabilnej wartości {#financial-derivatives-and-stable-value-currencies}
-Finansowe instrumenty pochodne są najczęstszym zastosowaniem „inteligentnego kontraktu ” i jednym z najprostszych do wdrożenia w kodzie. Głównym wyzwaniem dla realizacji umów finansowych jest to, że większość z nich wymaga odniesienia do zewnętrznego wskaźnika ceny; Na przykład bardzo pożądane zastosowanie jest inteligentnym kontraktem, który zabezpiecza się przed zmiennością eteru (lub innej kryptowaluty) w stosunku do amerykańskiego dolara, ale wykonanie tego wymaga od kontraktu wiedzieć, jaka jest wartość ETH/USD. Najprostszym sposobem na to jest kontrakt "kanał danych" utrzymywany przez konkretną stronę (np. NASDAQ) zaprojektowany tak, aby strona miała możliwość aktualizowania kontraktu w razie potrzeby, i udostępnienie interfejsu umożliwiającego innym kontraktom wysłanie wiadomości do tego kontraktu i odzyskanie odpowiedzi podającej cenę.
+Derywaty finansowe są najczęstszym zastosowaniem „inteligentnego kontraktu” i jednym z najprostszych do zaimplementowania w kodzie. Głównym wyzwaniem przy implementacji kontraktów finansowych jest to, że większość z nich wymaga odniesienia do zewnętrznego wskaźnika cen; na przykład bardzo pożądanych zastosowaniem jest inteligentny kontrakt, który zabezpiecza przed zmiennością etheru (lub innej kryptowaluty) w odniesieniu do dolara amerykańskiego, ale wymaga to, aby kontrakt wiedział jaka jest wartość ETH/USD. Najprostszym sposobem na to jest użycie kontraktu „kanału danych” utrzymywanego przez określoną stronę (np. NASDAQ), zaprojektowanego tak, aby ta strona miała możliwość aktualizowania kontraktu w razie potrzeby oraz zapewnienia interfejsu, który pozwala innym kontraktom wysyłać wiadomości do tego kontraktu i otrzymywać odpowiedź zawierającą cenę.
-Biorąc pod uwagę ten krytyczny składnik, kontrakt hedgingowy wyglądałby tak: następuje:
+Biorąc pod uwagę ten krytyczny składnik, kontrakt zabezpieczający wyglądałby następująco:
-1. Poczekaj, aż strona A wprowadzi 1000 etherów.
-2. Poczekaj, aż strona B wprowadzi 1000 etherów.
-3. Nagrywaj wartość USD 1000 eterów, obliczoną przez zapytanie o kontraktu na kanał w pamięci, powiedzmy, że to jest $x.
-4. Po 30 dniach, zezwól A lub B na "reaktywację" kontraktu, aby wysłać $x wartość etheru (obliczoną przez ponowne zapytanie kontraktu w celu uzyskania nowej ceny) do A i reszty do B.
+1. Poczekaj, aż strona A wpłaci 1000 etherów.
+2. Poczekaj, aż strona B wpłaci 1000 etherów.
+3. Zapisz w magazynie wartość USD równą 1000 etherów, obliczoną poprzez zapytanie kontraktu kanału danych, powiedzmy, że jest to $x.
+4. Po 30 dniach pozwól A lub B „reaktywować” kontrakt w celu wysłania etheru o wartości $x (obliczonego poprzez ponowne zapytanie kontraktu kanału danych w celu uzyskania nowej ceny) do A, a resztę do B.
-Taka umowa miałaby znaczny potencjał w handlu kryptowalutami. Jeden z głównych wymienionych problemów dotyczących kryptowaluty jest fakt, że jest lotny; chociaż wielu użytkowników i sprzedawców może chcieć bezpieczeństwa i wygoda obchodzenia się z zasobami kryptograficznymi, mogą nie chcieć zmierzyć się z perspektywą utraty 23% wartości swoich środków w jednym dzień. Do tej pory najczęściej proponowanym rozwiązaniem było aktywów zabezpieczonych emitentami; emitent tworzy subwalutę, w której ma prawo do emisji i cofania jednostek uczestnictwa, i podaj jedną jednostkę waluty każdemu, kto dostarcza ją (offline) jedną jednostkę określonego składnika aktywów bazowych (np. Złoto, USD). Emitent obiecuje dostarczyć jedną jednostkę bazowego składnika aktywów każdemu, kto odsyła z powrotem jedną jednostkę kryptowaluty. Mechanizm ten pozwala każdemu niekryptograficznemu aktywowi "przekształcić go w aktywa kryptograficzne, pod warunkiem że emitent może być zaufany.
+Taki kontrakt miałby znaczący potencjał w handlu kryptowalutami. Jednym z głównych problemów wymienianych w odniesieniu do kryptowalut jest fakt, że są one zmienne; chociaż wielu użytkowników i kupców może chcieć korzystać z bezpieczeństwa i wygody, jakie oferują kryptograficzne aktywa, to nie chcą oni jednak ryzykować utraty 23% wartości swoich środków w ciągu jednego dnia. Do tej pory najczęściej proponowanym rozwiązaniem były aktywa zabezpieczone przez emitenta; zamysł jest taki, że to emitent tworzy subwalutę, w której ma prawo emitować i odwoływać jednostki, a także dostarczać jedną jednostkę waluty każdemu, kto dostarczy mu (offline) jedną jednostkę określonego aktywa bazowego (np. złota, USD). Emitent obiecuje następnie dostarczyć jedną jednostkę aktywa bazowego każdemu, kto odeśle mu jedną jednostkę krypto-aktywa. Mechanizm ten umożliwia „podniesienie” dowolnego niekryptograficznego aktywa do aktywa kryptograficznego, pod warunkiem, że emitentowi można zaufać.
-W praktyce jednak emitenci nie zawsze są wiarygodni, a w niektórych przypadkach infrastruktura bankowa jest zbyt słaba lub zbyt wroga, aby takie usługi mogły istnieć. Alternatywnym rozwiązaniem są finansowe instrumenty pochodne. Tutaj, zamiast jednego emitenta dostarczającego środki do wykonania kopii zapasowej, zdecentralizowany rynek spekulantów, zakładający cenę kryptograficznego referencyjnego składnika aktywów (np. ETH) przejdzie do przodu, odgrywając tę rolę. W odróżnieniu od emitentów, spekulanci nie mają możliwości niewywiązania się ze zobowiązań z umowy, ponieważ kontrakt zabezpieczający przechowuje swoje środki w escrow. Zauważ, że to podejście nie jest w pełni zdecentralizowane, ponieważ zaufane źródło jest nadal potrzebne do zapewnienia znacznika ceny, chociaż jest to nawet nadal ogromna poprawa pod względem zmniejszenia wymogów w zakresie infrastruktury (w przeciwieństwie do emitenta, wystawienie ceny kanału nie wymaga żadnych licencji i może być sklasyfikowane jako swoboda wypowiedzi) i ograniczenie możliwości oszustw.
+W praktyce jednak emitenci nie zawsze są godni zaufania, a w niektórych przypadkach infrastruktura bankowa jest zbyt słaba lub wroga, aby takie usługi mogły istnieć. Derywaty finansowe stanowią alternatywę. W tym przypadku zamiast pojedynczego emitenta zapewniającego środki na zabezpieczenie aktywa, rolę odgrywa zdecentralizowany rynek spekulantów, obstawiających, że cena kryptograficznego aktywa referencyjnego (np. ETH) wzrośnie. W przeciwieństwie do emitentów, spekulanci nie mają możliwości wycofania się ze swojej części umowy, ponieważ kontrakt zabezpieczający przechowuje ich fundusze w depozycie. Warto zauważyć, że takie podejście nie jest w pełni zdecentralizowane, ponieważ wciąż potrzebne jest zaufane źródło do dostarczania wskaźnika cenowego, choć mimo to stanowi ono ogromną poprawę pod względem zmniejszenia wymagań infrastrukturalnych (w przeciwieństwie do bycia emitentem, dostarczanie wskaźnika cenowego nie wymaga licencji i moze być prawdopodobnie sklasyfikowane jako wolność słowa) oraz zmniejszenia potencjału oszustw.
-### Systemy identyfikacji i reputacji {#identity-and-reputation-systems}
+### Systemy tożsamości i reputacji {#identity-and-reputation-systems}
-Najwcześniejsza alternatywna kryptowaluta, [Namecoin](http://namecoin.org/), próbowała użyć blockchain podobny do Bitcoina, aby zapewnić system rejestracji nazwy, gdzie użytkownicy mogą rejestrować swoje nazwy w publicznej bazie danych wraz z innymi danymi. Główny cytowany przypadek użycia dotyczy a System [DNS](https://wikipedia.org/wiki/Domain_Name_System), mapowanie nazwy domen, takie jak „bitcoin.org” (lub, w przypadku Namecoin, „bitcoin.bit”) na adres IP. Inne przypadki użycia obejmują uwierzytelnianie poczty elektronicznej i potencjalnie bardziej zaawansowane systemy reputacji. Oto podstawowa umowa, aby dostarczyć system rejestracji nazw podobnych do Namecoin na Ethereum:
+Najwcześniejsza ze wszystkich alternatywnych kryptowalut, [Namecoin](http://namecoin.org/), próbowała wykorzystać blockchain podobny do Bitcoina do zapewnienia systemu rejestracji nazw, w którym użytkownicy mogą rejestrować swoje nazwy w publicznej bazie danych wraz z innymi danymi. Głównym cytowanym przypadkiem użycia jest system [DNS](https://wikipedia.org/wiki/Domain_Name_System), który mapuje nazwy domen, takie jak „bitcoin.org” (lub w przypadku Namecoina, „bitcoin.bit”) na adres IP. Inne przypadki użycia obejmują uwierzytelnianie e-maili i potencjalnie bardziej zaawansowane systemy reputacji. Oto podstawowy kontrakt zapewniający podobny do Namecoin system rejestracji nazw na Ethereum:
- def register(nazwa, wartość):
- if !self.storage[name]:
- self.storage[name] = wartość
+```py
+def register(name, value):
+ if !self.storage[name]:
+ self.storage[name] = value
+```
-Umowa jest bardzo prosta; wszystko to jest baza danych wewnątrz sieci Ethereum, która może być dodawana do sieci ale nie modyfikowana ani usuwana. Każdy może zarejestrować nazwę z pewną wartością, a ta rejestracja zostanie zachowana na zawsze. Bardziej zaawansowana umowa rejestracji nazw będzie również zawierać "klauzulę funkcji" umożliwiającą innym umowom zapytanie o nie, jak również mechanizm dla "właściciela" (tj. pierwszy rejestrujący) nazwy mającej na celu zmianę danych lub przeniesienie własności. Można nawet dodać reputację i funkcji sieciowej zaufania.
+Kontrakt jest bardzo prosty; jest to baza danych wewnątrz sieci Ethereum, do której można dodawać, ale nie można modyfikować ani usuwać. Każdy może zarejestrować nazwę z pewną wartością, a rejestracja ta pozostaje na zawsze. Bardziej zaawansowany kontrakt rejestracji nazw będzie również posiadać „klauzulę funkcji” pozwalającą innym kontraktom odpytywać go, a także mechanizm dla „właściciela” (tj. pierwszego rejestrującego) nazwy do zmiany nazwy lub przeniesienia własności. Można nawet dodać funkcjonalność reputacji i sieci zaufania.
-### Zdecentralizowane przechowywanie plików {#decentralized-file-storage}
+### Zdecentralizowana pamięć plików {#decentralized-file-storage}
-W ciągu ostatnich kilku lat pojawiło się wiele popularnych startów przechowywania plików online, z których najważniejszym jest Dropbox, szukanie pozwolenia użytkownikom na przesłanie kopii zapasowej dysku twardego i przechowywanie kopii zapasowej i umożliwienie użytkownikowi dostępu do niej w zamian za miesięczną opłatę. Jednak w tym momencie rynek przechowywania plików jest stosunkowo nieefektywny; kursory spojrzą na różne [istniejące rozwiązania](http://online-storage-service-review.toptenreviews.com/) pokazuje, że: w szczególności na poziomie 20–200 GB na poziomie, w którym nie pojawiają się żadne wolne kwoty ani rabaty na poziomie przedsiębiorstwa, miesięczne ceny głównego przechowywania plików są takie, że płacisz za więcej niż koszt całego dysku twardego w jednym miesiącu. Kontrakty Ethereum mogą umożliwić opracowanie zdecentralizowanego ekosystemu przechowywania plików, gdzie indywidualni użytkownicy mogą zarobić małe ilości pieniędzy poprzez wynajem własnych twardych dysków, a niewykorzystane miejsce może zostać wykorzystane do dalszego obniżenia kosztów przechowywania plików.
+W ciągu ostatnich lat pojawiło się wiele popularnych startupów zajmujących się przechowywaniem plików online, z których najbardziej znanym jest Dropbox, oferujący użytkownikom możliwość przesyłania kopii zapasowej swojego dysku i przechowywania ich w usłudze oraz udostępniania za miesięczną opłatą. Jednak aktualnie rynek przechowywania plików jest czasami stosunkowo nieefektywny; pobieżne spojrzenie na istniejące rozwiązania pokazuje, że szczególnie na poziomie „doliny niesamowitości” 20-200 GB, na którym nie działają ani bezpłatne kwoty, ani rabaty dla przedsiębiorstw, miesięczne ceny za przechowywanie plików są takie, że płaci się więcej w ciągu jednego miesiąca więcej niż za cały dysk. Kontrakty Ethereum mogą umożliwić rozwój ekosystemy zdecentralizowanego przechowywania plików, w którym indywidualni użytkownicy mogą zarabiać drobne kwoty, wynajmując swoje własne dyski, a niewykorzystana przestrzeń może być używana do dalszego obniżania kosztów przechowywania plików.
-Kluczowym elementem takiego urządzenia byłoby to, co nazwaliśmy "zdecentralizowanym kontraktem Dropbox". Umowa ta działa w następujący sposób. Najpierw dzieli żądane dane na bloki, szyfrując każdy blok dla prywatności i buduje z tego drzewo Merkle. Jeden z nich tworzy kontraktu z regułą, że każdy N bloków, kontrakt wybierze losowy indeks w drzewie Merkle (używając poprzedniego skrótu bloku, dostępny z kodu kontraktu, jako źródło losowania), i dać X eterowi pierwszemu podmiotowi, który dostarczył transakcję z uproszczonym dowodem posiadania tego bloku w tym określonym indeksie drzewa. Gdy użytkownik chce ponownie pobrać swój plik, może użyć protokołu kanału mikropłatności (np. zapłać 1 szabo per 32 kilobajtów) za odzyskanie pliku; najbardziej opłacalnym podejściem jest dla zleceniodawcy, aby nie publikować transakcji do końca, zamiast zastąpienie transakcji nieco bardziej dochodową transakcją tą samą nraz po 32 kilobajtach.
+Kluczowym elementem takiego urządzenia byłoby to, co nazwaliśmy „kontraktem zdecentralizowanego Dropboxa”. Kontrakt ten działa w następujący sposób. Najpierw dzieli się pożądane dane na bloki, szyfrując każdy blok dla prywatności, a następnie tworzy się z nich drzewo Merkle. Następnie tworzy się kontrakt z regułą, że co N bloków, kontrakt wybierze losowy indeks z drzewa Merkle (używając hasha poprzedniego bloku, dostępnego z kodu kontraktu, jako źródło losowości) i da X etheru pierwszemu podmiotowi, który dostarczy transakcję z dowodem własności bloku w tym konkretnym indeksie drzewa, podobnym do uproszczonej weryfikacji płatności. Gdy użytkownik chce ponownie pobrać swój plik, może użyć protokołu kanału mikropłatności (np. zapłacić 1 szabo za 32 kilobajty), aby odzyskać plik; najefektywniejszym podejściem dla płacącego pod względem opłat jest to, aby nie publikował transakcji do końca, zamiast tego zastępując transakcję nieco bardziej opłacalną transakcją z tym samym nonce po każdych 32 kilobajtach.
-Ważną cechą protokołu jest to, że: chociaż może wydawać się, że jeden ufa wielu losowym węzłom, aby nie zdecydowały się zapomnieć o pliku, jeden może zmniejszyć to ryzyko do niemal zera dzieląc plik na wiele kawałków poprzez tajne udostępnianie, i oglądanie kontraktów, aby zobaczyć każdy element jest nadal w posiadaniu jakiegoś węzła. Jeśli kontrakt nadal płaci pieniędze, to stanowi dowód kryptograficzny, że ktoś tam nadal przechowuje plik.
+Ważną cechą tego protokołu jest to, że chociaż może się wydawać, że użytkownik ufa wielu losowym węzłom, że nie zapomną o pliku, można zredukować to ryzyko do niemal zera, dzieląc plik na wiele części za pomocą protokołu dzielenia sekretu i obserwując kontrakty, aby zobaczyć, czy każdy kawałek jest nadal w posiadaniu jakiegoś węzła. Jeśli kontrakt nadal wypłaca pieniądze, stanowi to kryptograficzny dowód na to, że ktoś nadal przechowuje plik.
-### Zdecentralizowana Organizacja Autonomiczna {#decentralized-autonomous-organizations}
+### Zdecentralizowane organizacje autonomiczne {#decentralized-autonomous-organizations}
-Ogólna koncepcja „zdecentralizowanej organizacji autonomicznej” jest taka: wirtualnego podmiotu, który ma określony zestaw członków lub udziałowców które, być może z większością 67%, mają prawo do wydawania środków finansowych podmiotu funduszy i modyfikować jego kod. Członkowie wspólnie decydują, w jaki sposób organizacja powinna przydzielić swoje środki. Metody przydzielania a Fundusze DAO mogą obejmować nagrody, pensje, a nawet bardziej egzotyczne mechanizmy, takie jak wewnętrzna waluta, aby nagradzać pracę. Zasadniczo replikuje legalne obrazy tradycyjnej firmy lub non-profit, ale przy użyciu wyłącznie kryptograficznej technologii blockchain. Jak dotąd wiele rozmów o DAO-ach dotyczyło modelu „kapitalistycznego” „zdecentralizowanej autonomicznej korporacji” (DAC) z dywidendą otrzymującą udziałowców i zbywalnymi akcjami; alternatywę opisaną być może jako „zdecentralizowana społeczność autonomiczna”, gdyby wszyscy członkowie mieli równy udział w procesie podejmowania decyzji i wymagali, aby 67% istniejących członków wyraziło zgodę na dodanie lub usunięcie członka. Wymaganie, że jedna osoba może mieć tylko jedno członkostwo, musiałoby być wtedy wyegzekwowane wspólnie przez grupę.
+Ogólna koncepcja „zdecentralizowanej organizacji autonomicznej” polega na tym, że wirtualny podmiot ma określony zestaw członków lub udziałowców, którzy, być może z 67% większością, mają prawo do wydawania funduszy podmiotu i modyfikowania jego kodu. Członkowie wspólnie decydowaliby o tym, jak organizacja powinna ulokować swoje fundusze. Metody alokacji funduszy DAO mogłyby obejmować nagrody i wynagrodzenia, a nawet bardziej egzotyczne mechanizmy, takie jak wewnętrzna waluta do nagradzania pracy. Zasadniczo replikuje to prawne cechy tradycyjnej firmy lub organizacji non-profit, ale przy użyciu wyłącznie kryptograficznej technologii blockchain do egzekwowania prawa. Do tej pory wiele dyskusji na temat DAO dotyczyło „kapitalistycznego” modelu „zdecentralizowanej korporacji autonomicznej” (DAC) z akcjonariuszami otrzymującymi dywidendy i zbywalnymi udziałami; alternatywa, być może określana jako „zdecentralizowana społeczność autonomiczna”, miałaby równy udział wszystkich członków w podejmowaniu decyzji i wymagałaby zgody 67% obecnych członków na dodanie lub usunięcie członka. Wymóg, aby jedna osoba mogła mieć tylko jedno członkostwo, musiałby być wtedy egzekwowany wspólnie przez grupę.
-Ogólny zarys kodowania DAO przedstawia się następująco. Najprostszy projekt to po prostu fragment samomodyfikującego się kodu, który zmienia się, jeśli dwie trzecie członków zgadza się na zmianę. Chociaż kod teoretycznie jest niezmienny, można łatwo dotrzeć do tego i mieć faktyczną zmienność poprzez posiadanie fragmentów kodu w osobnych kontraktach, oraz posiadanie adresów, z których kontrakty na wezwanie do przechowywania przechowywane w zmodyfikowanym magazynie. W prostej realizacji takiej umowy DAO będą trzy typy transakcji, wyróżnione danymi dostarczonymi w transakcji:
+Ogólny zarys kodowania DAO jest następujący. Najprostszy projekt to po prostu fragment samomodyfikującego się kodu, który zmienia się, jeśli dwie trzecie członków zgodzi się na zmianę. Chociaż kod jest teoretycznie niezmienny, można to łatwo obejść i uzyskać faktyczną zmienność, umieszczając fragmenty kodu w osobnych kontraktach i przechowując adresy kontraktów, które należy wywołać, w modyfikowalnym magazynie. W prostej implementacji takiego kontraktu DAO byłyby trzy typy transakcji, rozróżniane na podstawie danych dostarczanych w transakcji:
-- `Struktura danych]` aby zarejestrować propozycję z indeksem `i` aby zmienić adres w indeksie magazynu `K` na wartość `V`
-- `[1,i]` aby zarejestrować głos za wnioskiem `i`
-- `[2,i]` aby sfinalizować propozycję `i` jeśli została złożona wystarczająca ilość głosów
+- `[0,i,K,V]`, aby zarejestrować propozycję z indeksem `i` w celu zmiany adresu w indeksie pamięci `K` na wartość `V`
+- `[1,i]`, aby zarejestrować głos za propozycją `i`
+- `[2,i]`, aby sfinalizować propozycję `i`, jeśli oddano wystarczającą liczbę głosów
-Umowa zawierałaby wówczas klauzule dla każdego z nich. Przechowuje zapis wszystkich otwartych zmian pamięci, wraz z listą osób, na które zagłosowały. Miałaby również listę wszystkich członków. Gdy jakakolwiek zmiana pamięci dostanie się do dwóch trzecich głosujących na nią członków, finalizacja transakcji może wykonać zmianę. Bardziej zaawansowany szkielet miałby również wbudowaną możliwość głosowania na funkcje takie jak wysyłanie transakcji, dodawanie członków i usuwanie członków, a nawet może przewidywać dla [Płynnej Demokracji](https://wikipedia.org/wiki/Delegative_democracy)- delegacji (np. każdy może przypisać kogoś do głosowania, i przypisanie jest translityczne, więc jeśli A przypisuje B i B przypisuje C wtedy C określa głos A). Ten projekt pozwoliłby DAO na rozwój organiczny jako społeczności zdecentralizowanej, umożliwienie ludziom w końcu delegowania zadania filtrowania, kto jest członkiem specjalistów, chociaż w odróżnieniu od „obecnego systemu” specjaliści mogą z łatwością wyskakać i z czasem przebywać w sytuacji, gdy indywidualni członkowie społeczności zmieniają swoje dostosowania.
+Kontrakt miałby następnie klauzule dla każdego z tych przypadków. Utrzymywałby zapis wszystkich otwartych zmian magazynu, wraz z listą tych, którzy za nimi zagłosowali. Miałby również listę wszystkich członków. Gdyby jakakolwiek zmiana magazynu osiągnęła poparcie dwóch trzecich członków, transakcja finalizująca, mogłaby wykonać tę zmianę. Bardziej zaawansowany szkielet kontraktu zawierałby również wbudowaną możliwość głosowania nad funkcjami takimi jak wysyłanie transakcji, dodawanie członków i usuwanie członków, a może nawet mógłby zapewniać oddelegowywanie głosów w stylu [płynnej demokracji](https://wikipedia.org/wiki/Liquid_democracy) (tj. każdy może przypisać komuś innemu prawo do głosowania w swoim imieniu, a przypisanie jest przechodnie, więc jeśli A przypisze B, a B przypisze C, to C decyduje o głosie A). Ten projekt pozwoliłby DAO rozwijać się organicznie jako zdecentralizowana społeczność, umożliwiając ludziom ostatecznie delegować zadanie filtrowania, kto jest członkiem, specjalistom, chociaż w przeciwieństwie do „obecnego systemu” specjaliści mogą łatwo pojawiać się i znikać z czasem, gdy poszczególni członkowie społeczności zmieniają swoje nastawienie.
-Alternatywnym modelem jest zdecentralizowana korporacja, gdzie każdy rachunek może mieć zero lub więcej akcji, a dwie trzecie akcji jest zobowiązane do podjęcia decyzji. Kompletny szkielet obejmowałby funkcje zarządzania aktywami, możliwość złożenia oferty kupna lub sprzedaży akcji, oraz zdolność przyjmowania ofert (najlepiej z mechanizmem dopasowania zleceń w ramach umowy). Delegacja istniałaby również w stylu płynnej demokracji, generalizując koncepcję rady dyrektorów.
+Alternatywnym modelem jest zdecentralizowana korporacja, w której każde konto może mieć zero lub więcej udziałów, a do podjęcia decyzji wymagane jest poparcie dwóch trzecich udziałów. Kompletny szkielet obejmowałby funkcję zarządzania aktywami, możliwość składania ofert kupna lub sprzedaży udziałów oraz możliwość akceptowania ofert (najlepiej z mechanizmem wewnątrz kontraktu do dopasowywania zamówień). Delegowanie istniałoby również w stylu płynnej demokracji, uogólniając koncepcję „zarządu”.
### Dalsze zastosowania {#further-applications}
-**1. Portfele oszczędzające**. Załóżmy, że Alice chce zabezpieczyć swoje fundusze, ale obawia się, że straci lub ktoś zhakuje swój klucz prywatny. Wstawia ether w kontrakt z Bob, bankiem, w następujący sposób:
+**1. Portfele oszczędnościowe**. Załóżmy, że Alice chce zabezpieczyć swoje fundusze, ale obawia się, że zgubi lub ktoś zhakuje jej klucz prywatny. Wkłada ether do kontraktu z Bobem, bankiem, w następujący sposób:
-- Sama Alice może wypłacić maksymalnie 1% środków dziennie.
-- Tylko Bob może wypłacić maksymalnie 1% środków dziennie, ale Alice ma możliwość dokonania transakcji z jej kluczem wyłączającym tę zdolność.
-- Alice i Bob razem mogą wycofać wszystko.
+- Alice może sama wypłacić maksymalnie 1% środków dziennie.
+- Bob może sam wypłacić maksymalnie 1% środków dziennie, ale Alice ma możliwość dokonania transakcji swoim kluczem, która wyłącza tę możliwość.
+- Alice i Bob razem mogą wypłacić wszystko.
-Zwykle 1% dziennie jest wystarczające dla Alice i jeśli Alice chce wycofać więcej może skontaktować się z Bobem w celu uzyskania pomocy. Jeśli klucz Alice zostanie zhakowany, biegnie do Boba, aby przenieść środki do nowego kontraktu. Jeśli straci swój klucz, Bob otrzyma ostatecznie środki. Jeśli Bob okaże się złośliwy, Alice może utracić możliwość wypłacenia środków.
+Zwykle 1% dziennie wystarcza Alice, a jeśli Alice chce wypłacić więcej, może skontaktować się z Bobem, aby jej pomógł. Jeśli klucz Alice zostanie zhakowany, biegnie do Boba, aby przenieść środku do nowego kontraktu. Jeśli Alice zgubi swój klucz, Bob po pewnym czasie wypłaci wszystkie środki. Jeśli Bob okaże się nieuczciwy, Alice może wyłączyć jego możliwość wypłacania środków.
-**2. Ubezpieczenie upraw**. Można łatwo stworzyć kontrakt pochodny poprzez wykorzystanie źródła danych pogodowych zamiast indeksu ceny. Jeśli rolnik z Iowa kupi instrument pochodny, który się opłaca odwrotnie w oparciu o opady w stanie Iowa, to jeśli jest susza, rolnik automatycznie otrzyma pieniądze, a jeśli będzie wystarczająco dużo deszczu, rolnik będzie szczęśliwy, ponieważ ich plony będą dobrze sobie radzić. Można go rozszerzyć na ogólne ubezpieczenie od klęsk żywiołowych.
+**2. Ubezpieczenie upraw**. Można łatwo stworzyć kontrakt derywatu finansowego, wykorzystując kanał danych pogody zamiast jakiegokolwiek indeksu cenowego. Jeśli rolnik w stanie Iowa zakupi derywat, które wypłaca środki odwrotnie proporcjonalnie do ilości opadów w stanie Iowa, to w przypadku suszy rolnik automatycznie otrzyma pieniądze, a jeśli będzie wystarczająco dużo deszczu, rolnik będzie zadowolony, ponieważ jego plony będą się dobrze rozwijać. Można to rozszerzyć na ubezpieczenia od klęsk żywiołowych.
-**3. Zdecentralizowany kanał danych**. W przypadku umów finansowych na różnica, faktycznie może być możliwa decentralizacja strumienia danych za pośrednictwem protokołu o nazwie [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/). SchellingCoin działa zasadniczo w następujący sposób: N stron wstawionych do systemu wartości danego odniesienia (np. cena ETH/USD), wartości są sortowane, a każdy między 25. a 75. percentylem otrzymuje jeden token jako nagrodę. Każdy ma motywację do udzielenia odpowiedzi, która wszyscy inni zapewnią, i jedyną wartością, na którą wiele graczy może realistycznie się zgodzić, jest oczywisty domyślny: prawda. Tworzy to zdecentralizowany protokół, który teoretycznie może dostarczyć dowolną liczbę wartości, włączając w to cenę ETH/USD, temperaturę w Berlinie lub nawet wynik konkretnego twardego obliczenia.
+**3. Zdecentralizowany kanał danych**. W przypadku finansowych kontraktów różnic kursowych możliwe jest zdecentralizowanie kanału danych za pomocą protokołu o nazwie „[SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/)”. SchellingCoin zasadniczo działa w następujący sposób: N stron wprowadza do systemu wartość danego parametru (np. cenę ETH/USD), wartości te są sortowane, a każdy, kto znajduje się pomiędzy 25. a 75. percentylem, otrzymuje w nagrodę jeden token. Każdy ma motywację do udzielania odpowiedzi, której udzielą wszyscy inni, a jedyną wartością, co do której duża liczba graczy może realistycznie się zgodzić, jest oczywista wartość domyślna: prawda. Tworzy to zdecentralizowany protokół, który teoretycznie może dostarczyć dowolną liczbę wartości, wliczając w to cenę ETH/USD, temperaturę w Berlinie, a nawet wynik konkretnego trudnego obliczenia.
-**4. Inteligentna escrow z multipodpisem**. Bitcoin pozwala na podpisywanie umów transakcji, na które na przykład trzy z pięciu kluczy mogą wydać środki. Ethereum pozwala na bardziej szczegółowość; na przykład czterech na pięć może wydawać wszystko, trzy na pięć mogą wydać do 10% na dobę, a dwa na pięć mogą wydać do 0. % dziennie. Dodatkowo, Ethereum multisig jest asynchroniczny - dwie strony mogą zarejestrować swoje podpisy w blockchain w różnych momentach, a ostatni podpis automatycznie wyśle transakcję.
+**4. Inteligentny depozyt wielopodpisowy**. Bitcoin pozwala na wielopodpisowe kontrakty transakcyjne, w których na przykład trzy z pięciu kluczy mogą wydać środki. Ethereum pozwala na większą szczegółowość; na przykład cztery z pięciu kluczy mogą wydawać wszystko, trzy z pięciu mogą wydać do 10% dziennie, a dwa z pięciu mogą wydać do 0,5% dziennie. Co więcej, wielopodpis w Ethereum jest asynchroniczny — dwie strony mogą zarejestrować swoje podpisy na blockchainie w różnym czasie, a ostatni podpis automatycznie wyśle transakcję.
-**5. Chmura obliczeniowa**. Technologia EVM może być również używana do tworzenia weryfikowalnego środowiska obliczeniowego, pozwalając użytkownikom na zwrócenie się do innych o przeprowadzenie obliczeń, a następnie opcjonalnie poproś o dowody na to, że obliczenia w wybranych losowo punktach kontrolnych zostały wykonane poprawnie. Pozwala to na stworzenie rynku przetwarzania w chmurze, na którym każdy użytkownik może uczestniczyć za pomocą komputera stacjonarnego, laptopa lub specjalnego serwera, i kontrola punktowa wraz z depozytami zabezpieczającymi może być wykorzystana w celu upewnienia się, że system jest wiarygodny (tj. węzły nie mogą dochodowo oszukiwać). Chociaż taki system może nie być odpowiedni dla wszystkich zadań; zadań, które wymagają wysokiego poziomu komunikacji międzyprocesowej, na przykład nie można łatwo wykonać na dużej chmurze węzłów. Inne zadania są jednak znacznie łatwiejsze do równoległe; projekty takie jak SETI@home, folding@home i genetyczne algorytmy mogą być z łatwością zaimplementowane na tej platformie.
+**5. Chmura obliczeniowa**. Technologia EVM może być również wykorzystywana do tworzenia weryfikowalnego środowiska obliczeniowego, pozwalając użytkownikom zlecać innym wykonania obliczeń, a następnie opcjonalnie żądać dowodów, że obliczenia w niektórych losowo wybranych punktach kontrolnych zostały wykonane poprawnie. Pozwala to na stworzenie rynku chmur obliczeniowych, w którym każdy użytkownik może uczestniczyć, korzystając ze swojego komputera stacjonarnego, laptopa lub wyspecjalizowanego serwera, a wyrywkowa kontrola oraz depozyty zabezpieczające mogą zapewnić, że system jest godny zaufania (tj. węzły nie mogą oszukiwać z zyskiem). Chociaż taki system może nie być odpowiedni dla wszystkich zadań; na przykład zadania wymagające wysokiego poziomu komunikacji międzyprocesowej, nie mogą być łatwo realizowane na dużej chmurze węzłów. Inne zadania są jednak znacznie łatwiejsze do zrównoleglenia; projekty takie jak SETI@home, folding@home i algorytmy genetyczne mogą być z łatwością zaimplementowane na takiej platformie.
-**6. Gry typu peer-to-peer**. Dowolna liczba protokołów gier hazardowych typu peer-to-peer, takich jak Frank Stajano i Richard Clayton [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf), może być zaimplementowane w blockchainu Ethereum. Najprostszy protokół gier to po prostu kontrakt na różnicę w następnym bloku hash, i bardziej zaawansowane protokoły można z nich opracować, tworząc usługi w zakresie gier hazardowych z opłatami niemal zerowymi, które nie mają możliwości oszukania.
+**6.** Hazard peer-to-peer\*\*. Dowolna liczba protokołów hazardowych peer-to-peer, takich jak [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) Franka Stajano i Richarda Claytona, może zostać zaimplementowana na blockchainie Ethereum. Najprostszym protokołem hazardowym jest właściwie kontrakt różnicy kursowej oparty na hashu następnego bloku, a bardziej zaawansowane protokoły mogą być tworzone na tej podstawie, tworzą usługi hazardowe z niemal zerowymi opłatami, które nie mają możliwości oszukiwania.
-**7. Rynki prognostyczne**. Pod warunkiem, że wyścig lub SchellingCoin, rynki prognoz są również łatwe do wdrożenia, rynki prognozowania wraz z SchellingCoin mogą okazać się pierwszym głównym punktem zastosowania [futarchii](http://hanson.gmu.edu/futarchy.html) jako protokołu zarządzania zdecentralizowanymi organizacjami.
+**7.** Rynki prognostyczne\*\*. Przy zastosowaniu wyroczni lub SchellingCoin rynki prognostyczne są również łatwe do zaimplementowania, a rynki prognostyczne połączone z SchellingCoin mogą stać się pierwszym szeroko stosowanym zastosowaniem [futarchii](https://mason.gmu.edu/~rhanson/futarchy.html) jako protokołu zarządzania dla zdecentralizowanych organizacji.
-**8. Zdecentralizowane rynki**w łańcuchu przy użyciu systemu tożsamości i reputacji jako bazy.
+**8.** Zdecentralizowane rynki on-chain\*\*, wykorzystujące system tożsamości i reputacji jako podstawę.
-## Różne obszary i obawy {#miscellanea-and-concerns}
+## Różne i obawy {#miscellanea-and-concerns}
-### Zmodyfikowane wdrożenie GHOST {#modified-ghost-implementation}
+### Zmodyfikowana implementacja GHOST {#modified-ghost-implementation}
-Protokół GHOST to innowacja po raz pierwszy wprowadzony przez Yonatana Sompolinsky'ego i Aviva Zohara w [grudniu 2013](https://eprint.iacr.org/2013/881.pdf). Motywacja uzasadniająca wprowadzenie GHOST polega na tym, że blockchain z szybkim czasem potwierdzania cierpi z powodu zmniejszonego bezpieczeństwa ze względu na wysoką przeżywalność - ponieważ bloki potrzebują czasu pewien czas rozesłanie w sieci. Jeśli górnik A wydobywa blok, a następnie zdarzy się, że górnik B wydobędzie kolejny blok, zanim blok wydobycia A rozpropaguje się na B, blok górnika B zmarnuje się i nie przyczyni się do bezpieczeństwa sieci. Ponadto istnieje problem centralizacji: jeśli górnik A stanowi pulę wydobycia o 30% mocy hash, a B ma 10% mocy hash, Istnieje ryzyko wytworzenia przestarzałego bloku przez 70% czasu (ponieważ pozostałe 30% czasu A wyprodukował ostatni blok, a więc natychmiast uzyska dane kopalniane), podczas gdy B będzie ryzykował wytworzenia przestarzałego bloku przez 90% czasu. Zatem, jeśli interwał bloku jest wystarczająco krótki, aby przestarzała szybkość była wysoka, Będzie znacznie bardziej efektywny ze względu na jego wielkość. Z tymi dwoma objawami łącznie. blockchain, które szybko produkują bloki, bardzo prawdopodobne jest, że doprowadzi do jednej puli wydobywczej posiadającej wystarczająco dużo energii sieciowej, aby faktycznie sprawować kontrolę nad procesem wydobywania.
+Protokół „Greedy Heaviest Observed Subtree” (GHOST) to innowacja po raz pierwszy wprowadzona przez Yonatana Sompolinsky'ego i Aviva Zohara w [grudniu 2013 roku](https://eprint.iacr.org/2013/881.pdf). Motywacją do stworzenia GHOST jest to, że blockchainy z szybkim czasem potwierdzenia cierpią obecnie na zmniejszonego bezpieczeństwa spowodowanego wysokim wskaźnikiem nieaktualności — ponieważ bloki potrzebują pewnego czasu, aby rozprzestrzenić się w sieci, jeśli górnik A wykopie blok, a następnie górnik B wykopie inny blok, zanim blok górnika A rozprzestrzeni się do B, blok górnika B zmarnuje się i nie przyczyni do bezpieczeństwa sieci. Ponadto istnieje kwestia centralizacji: jeśli górnik A jest pulą wydobywczą z 30% mocy obliczeniowej (hashpower), a B ma 10% mocy obliczeniowej, A będzie miał ryzyko stworzenia bloku nieaktualnego w 70% przypadków (ponieważ w pozostałych 30% przypadków to A wyprodukował ostatni blok, a więc otrzyma dane wydobywcze natychmiast), podczas gdy B będzie miał ryzyko stworzenia bloku nieaktualnego w 90% przypadków. Zatem, jeśli interwał między blokami jest wystarczająco krótki, aby wskaźnik nieaktualnych bloków był wysoki, A będzie znacznie bardziej wydajny po prostu ze względu na swój rozmiar. W połączeniu z tymi dwoma efektami blockchainy, które szybko tworzą bloki, prawdopodobnie doprowadzą do sytuacji, w której jedna pula wydobywcza będzie miała wystarczająco dużą część mocy obliczeniowej sieci, aby de facto kontrolować proces wydobywania.
-Jak opisali Sompolinsky i Zohar, GHOST rozwiązuje pierwszy problem traty bezpieczeństwa sieci poprzez uwzględnienie przestarzałych bloków w obliczeniach , który łańcuch jest „najdłuższy”; to znaczy nie tylko rodzici kolejni przodkowie bloku, ale także starsi potomkowie bloku (w żargonie Ethereum „wujkowie”) zostają dodani do wyliczenia, który blok jest zabezpieczony nawiększą łączną liczbą proof of work. Aby rozwiązać drugą kwestię błędu centralizacji, wychodzimy poza protokół opisany przez Sompolinskiego i Zohara oraz zapewniamy nagrody za przestarzałe bloki: przestarzały blok otrzymuje 87,5 % nagrody bazowej nagród, a siostrzeniec, który zawiera przestarzały blok, otrzymuje pozostałe 12,5%. Opłaty transakcyjne nie są jednak przyznawane wujom.
+Jak opisali Sompolinsky i Zohar, GHOST rozwiązuje pierwszy kwestię utraty bezpieczeństwa sieci poprzez uwzględnianie nieaktualnych bloków do obliczeń, który łańcuch jest „najdłuższy”; znaczy to, że nie tylko rodzic i dalsi przodkowie bloku, ale także nieaktualni potomkowie przodka bloku (w żargonie Ethereum „wujkowie”) są dodawani do obliczeń, który blok ma największy całkowity proof-of-work. Aby rozwiązać drugą kwestię stronniczości centralizacji, wykraczamy poza protokół opisany przez Sompolinsky'ego i Zohara, i zapewniamy nagrody za blok dla bloków nieaktualnych: nieaktualny blok otrzymuje 87,5% swojej nagrody podstawowej, a siostrzeniec, który uwzględni nieaktualny blok, otrzyma pozostałe 12,5%. Opłaty transakcyjne nie są jednak przyznawane wujkom.
-Ethereum wdraża uproszczoną wersję GHOST, która obniża się tylko o 7 poziomów. W szczególności definiuje się je w następujący sposób:
+Ethereum implementuje uproszczoną wersję GHOST, która obejmuje tylko siedem poziomów. Konkretnie jest to zdefiniowane w następujący sposób:
-- Blok musi określać nadrzędny i musi określać 0 lub więcej wujków
-- Wujek zawarty w bloku `B` musi mieć następujące właściwości:
-- Musi być bezpośrednim dzieckiem `k`-th generator `B`, gdzie `2 <= k <= 7`.
-- Nie może być przodkiem `B`
-- Wujek musi być prawidłowym nagłówkiem bloku, ale nie musi być wcześniej zweryfikowanym lub nawet poprawnym blokiem
-- Wujek musi różnić się od wszystkich wujków zawartych w poprzednich blokach i wszystkich innych wujków zawartych w tym samym bloku (brak podwójnego włączenia)
-- Za każdego wujka `U` w bloku `B`, górnik `B` otrzymuje dodatkowe 3,125% dodanych do swojej nagrody z bazy monet, a górnik z U otrzymuje 93,75% standardowej nagrody z bazy monet.
+- Blok musi określać rodzica i musi określać 0 lub więcej wujków
+- Wujek uwzględniony w bloku B musi mieć następujące właściwości:
+ - Musi być bezpośrednim dzieckiem k-tego pokolenia przodka B, gdzie `2 <= k <= 7`.
+ - Nie może być przodkiem B
+ - Wujek musi być prawidłowym nagłówkiem bloku, ale nie musi być wcześniej zweryfikowanym ani nawet prawidłowym blokiem
+ - Wujek musi różnić się od wszystkich wujków uwzględnionych w poprzednich blokach praz od wszystkich innych wujków uwzględnionych w tym samym bloku (brak podwójnego uwzględnienia)
+- Za każdego wujka U w bloku B, górnik B otrzymuje dodatkowe 3,125% do swojej podstawowej nagrody, a górnik U otrzymuje 93,75% podstawowej nagrody.
-Ta ograniczona wersja GHOST, z wujkami włączanymi tylko do 7 generacji, była używana z dwóch powodów. Po pierwsze, nieograniczony GHOSTmógłby uwzględnić zbyt wiele komplikacji w obliczeniach, którzy wujkowie dla danego bloku są ważni. Po drugie, nieograniczony GHOST z rekompensatą używaną w Ethereum usuwa zachętę dla górnika do wydobywania w głównym łańcuchu, a nie w łańcuchu publicznego atakującego.
+Ta ograniczona wersja GHOST, z wujkami uwzględnianymi tylko do 7 pokoleń wstecz, została wykorzystana z dwóch powodów. Po pierwsze, nieograniczony GHOST wprowadziłby zbyt wiele komplikacji do obliczeń dotyczących tego, którzy wujkowie dla danego bloku są prawidłowi. Po drugie, nieograniczony GHOST z rekompensatą, jaką stosuje Ethereum, usuwa zachętę dla górnika do kopania w głównym łańcuchu, a nie w łańcuchu publicznego atakującego.
### Opłaty {#fees}
-Ponieważ każda transakcja publikowana w blockchain nakłada na sieć koszt pobrania i zweryfikowania, istnieje potrzeba mechanizmu regulacyjnego, zazwyczaj obejmującego opłaty transakcyjne, aby zapobiec nadużyciom. Domyślnym podejściem, stosowanym w Bitcoini, jest wprowadzenie czysto dobrowolnych opłat, polegając na tym, że górnicy będą działać jako strażnicy i ustalać dynamiczne minima. Ta metoda została przyjęta bardzo pozytywnie w społeczności Bitcoin, w szczególności dlatego, że jest ona „oparta na rynku”, umożliwiając, by podaż i popyu między górnikami a nadawcami transakcji określała ceny. Problem z tym rozumowaniem polega jednak na tym, że przetwarzanie transakcji nie jest rynkiem; chociaż intuicyjnie atrakcyjne jest konstruowanie przetwarzania transakcji jako usługi, którą górnik oferuje nadawcy, w rzeczywistości każda transakcja, którą górnik uwzględnia, będzie musiała być przetwarzana przez każdy węzeł w sieci, więc ogromną większość kosztów przetwarzania transakcji ponosi strona trzecia, a nie górnik, który podejmuje decyzję o uwzględnieniu. Dlatego bardzo prawdopodobne jest wystąpienie problemów typu „tragedia wspólnego pastwiska”.
+Ponieważ każda transakcja opublikowana w blockchainie nakłada na sieć koszt związany z koniecznością pobrania jej i zweryfikowania, konieczne jest zastosowanie jakiegoś mechanizmu regulacyjnego, zazwyczaj obejmującego opłaty transakcyjne, aby zapobiec nadużyciom. Domyślnym podejściem, stosowanym w Bitcoinie, jest posiadanie całkowicie dobrowolnych opłat, polegających na tym, że górnicy działają jako strażnicy i ustalają dynamiczne minima. Podejście to zostało bardzo przychylnie przyjęte w społeczności Bitcoina, szczególnie dlatego, że jest „oparte na rynku”, pozwalając, by podaż i popyt pomiędzy górnikami a nadawcami transakcji określały cenę. Problem z tym rozumowaniem polega jednak na tym, że przetwarzanie transakcji nie jest rynkiem; chociaż intuicyjnie atrakcyjne jest interpretowanie przetwarzania transakcji jako usługi, którą górnik oferuje nadawcy, w rzeczywistości każda transakcja uwzględniona przez górnika, będzie musiała zostać przetworzona przez każdy węzeł w sieci, więc zdecydowana większość kosztów przetwarzania transakcji jest ponoszona przez strony trzecie, a nie przez górnika, który podejmuje decyzję, czy ją uwzględnić czy nie. W związku z tym bardzo prawdopodobne jest wystąpienie problemów „tragedii wspólnego pastwiska”.
-Jak się jednak okazuje, ta wada mechanizmu rynkowego, po przyjęciu konkretnego, nieprecyzyjnego założenia upraszczającego, magicznie się usuwa. Argumentacja jest następująca. Załóżmy, że:
+Jednakże, jak się okazuje, ta wada w mechanizmie opartym na rynku, przy określonym niedokładnym założeniu upraszczającym, magicznie się niweluje. Argumentacja jest następująca. Załóżmy, że:
-1. Transakcja prowadzi do operacji `k`, oferującej nagrodę `kR` każdemu górnikowi, który tę transakcję uwzględnia, gdzie `R` jest ustawiony przez nadawcę, a `k` i `R` są (z grubsza) wcześniej widoczne dla górnika.
-2. Operacja ma koszt przetwarzania `C` dla każdego węzła (tj. wszystkie węzły mają taką samą wydajność)
-3. Jest `N` węzłów kopalnych, każdy z nich ma dokładnie taką samą moc przetwarzania (tj. `1/N` razem)
-4. Nie ma żadnych pełnych węzłów niekopalnych.
+1. Transakcja prowadzi do `k` operacji, oferując nagrodę `kR` każdemu górnikowi, który tę transakcję uwzględnia, gdzie `R` jest ustawiony przez nadawcę, a `k` i `R` są (z grubsza) wcześniej widoczne dla górnika.
+2. Operacja ma koszt przetwarzania `C` dla każdego węzła (tj. wszystkie węzły mają taką samą wydajność)
+3. Jest N węzłów wydobywczych, każdy z nich ma dokładnie taką samą moc przetwarzania (tj. `1/N` całości)
+4. Nie ma żadnych pełnych węzłów niekopalnych.
-Górnik byłby skłonny przetworzyć transakcję, jeśli oczekiwana nagroda jest wyższa niż koszt. Tak więc oczekiwana nagroda to `kR/N`, ponieważ górnik ma `1/N` szans na przetworzenie następnego bloku, a koszt przetwarzania dla górnika wynosi po prostu `kC`. A zatem górnicy będą uwzględniać transakcje, w których `kR/N > kC` lub `R > NC`. Zauważ, że `R` jest opłatą na operację dostarczoną przez nadawcę, a zatem jest niższą wartością korzyści, jakie nadawca uzyskuje transakcji, i `NC` to koszt dla całej sieci razem z przetwarzaniem operacji. W związku z tym górnicy mają motywację do uwzględniania tylko tych transakcji, dla których całkowita korzyść użytkowa przewyższa koszt.
+Górnik byłby skłonny przetworzyć transakcję, jeśli oczekiwana nagroda będzie większa niż koszt. Zatem oczekiwana nagroda to `kR/N`, ponieważ górnik ma `1/N` szansy na przetworzenie kolejnego bloku, a koszt przetwarzania dla górnika wynosi po prostu `kC`. W związku z tym górnicy będą uwzględniać transakcje, gdzie `kR/N > kC` lub `R > NC`. Należy zauważyć, że `R` jest opłatą za operację dostarczoną przez nadawcę, a zatem jest dolną granicą korzyści, jaką nadawca czerpie z transakcji, a `NC` jest kosztem przetwarzania operacji dla całej sieci. W związku z tym górnicy mają motywację do uwzględniania tylko tych transakcji, dla których całkowita korzyść użytkowa przewyższa koszt.
-Istnieje jednak kilka istotnych odstępstw od tych założeń w rzeczywistości:
+W rzeczywistości istnieje jednak kilka istotnych odstępstw od tych założeń:
-1. Górnik ponosi wyższe koszty przetwarzania transakcji niż innych weryfikujących węzłów, ponieważ dodatkowy czas weryfikacji opóźnia propagację bloku i tym samym zwiększa szansę, że blok stanie się przestarzały.
-2. Istnieją pełne węzły niekopalne.
-3. Dystrybucja energii wydobywczeh może w praktyce stać się radykalnie nieegalitarna.
-4. Spekulanci, wrogowie polityczni i maszyny, których funkcja użyteczności obejmuje wyrządzanie szkód w sieci, już istnieją, i mogą sprytnie tworzyć kontrakty, w których ich koszt jest znacznie niższy niż koszt zapłacony przez inne weryfikujące węzły.
+1. Górnik ponosi wyższe koszty przetwarzania transakcji niż innych weryfikujących węzłów, ponieważ dodatkowy czas weryfikacji opóźnia propagację bloku i tym samym zwiększa szansę, że blok stanie się przestarzały.
+2. Istnieją pełne węzły niewydobywające.
+3. Dystrybucja energii wydobywczeh może w praktyce stać się radykalnie nieegalitarna.
+4. Spekulanci, wrogowie polityczni i maszyny, których funkcja użyteczności obejmuje wyrządzanie szkód w sieci, już istnieją, i mogą sprytnie tworzyć kontrakty, w których ich koszt jest znacznie niższy niż koszt zapłacony przez inne weryfikujące węzły.
-(1) daje górnikowi tendencję do uwzględniania mniejszej liczby transakcji, a (2) wzrasta `NC`; w związku z tym te dwa efekty co najmniej częściowo znoszą się nawzajem [Jak?](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/issues/447#issuecomment-316972260#issuecomment-316972260) (3) i (4) są głównymi problemami; aby je rozwiązać, tworzymy zmienną pokrywę: żaden blok nie może mieć więcej operacji niż `BLK_LIMIT_FACTOR` razy długoterminowa wykładnicza średnia ruchoma. Konkretnie:
+(1) zapewnia tendencję górnika do włączania mniejszej liczby transakcji, oraz
+(2) zwiększa `NC`; stąd te dwa efekty przynajmniej częściowo
+się znoszą
+wzajemnie.[Jak?](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/issues/447#issuecomment-316972260#issuecomment-316972260)
+(3) i (4) to główne problemy; aby je rozwiązać, po prostu wprowadzamy
+pływający limit: żaden blok nie może mieć więcej operacji niż
+`BLK_LIMIT_FACTOR` razy długoterminowa wykładnicza średnia krocząca.
+Konkretnie:
- blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
- floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```js
+blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
+floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```
-`BLK_LIMIT_FACTOR` i `EMA_FACTOR` to stałe, które zostaną na razie ustawione na 65536 i 1,5, ale prawdopodobnie zostaną zmienione po dalszej analizie.
+`BLK_LIMIT_FACTOR` i `EMA_FACTOR` to stałe, które tymczasowo zostaną ustawione na 65536 i 1,5, ale prawdopodobnie zostaną one zmienione po dalszej analizie.
-Istnieje kolejny czynnik zniechęcający do dużych rozmiarów bloków w Bitcoin: propagacja dużych bloków trwa dłużej i dlatego występuje większe prawdopodobieństwo, że staną się przestarzałe. W Ethereum bloki o wysokim zużyciu gazu mogą również wymagać więcej czasu na propagację, zarówno dlatego, że są fizycznie większe, jak i dlatego, że przetwarzanie przejścia stanu transakcji do walidacji trwa dłużej. Ten czynnik zniechęcający do opóźnień jest istotnym czynnikiem w Bitcoinie, ale mniej istotnym w Ethereum ze względu na protokół GHOST; dlatego poleganie na regulowanych limitach bloków zapewnia bardziej stabilną podstawę.
+Istnieje jeszcze jeden czynnik zniechęcający do dużych rozmiarów bloków w Bitcoinie: propagacja dużych bloków trwa dłużej, a zatem istnieje większe prawdopodobieństwo, że staną się one nieaktualne. W Ethereum, bloki zużywające dużo gazu mogą również wymagać więcej czasu na propagację, zarówno dlatego, że są fizycznie większe, jak i dlatego, że wymagają więcej czasu na przetworzenie przejść stanu transakcji w celu ich walidacji. To zniechęcające opóźnienie jest istotnym czynnikiem w Bitcoinie, ale w mniejszym stopniu w Ethereum ze względu na protokół GHOST; dlatego też poleganie na regulowanych limitach bloków zapewnia bardziej stabilną podstawę.
-### Obliczanie i kompletność w sensie Turinga {#computation-and-turing-completeness}
+### Obliczenia i kompletność w sensie Turinga {#computation-and-turing-completeness}
-Ważną informacją jest to, że maszyna wirtualna Ethereum jest kompletna w sensie Turinga; oznacza to, że kod EVM może kodować każde obliczenie które może zostać przeprowadzone, w tym nieskończone pętle. Kod EVM umożliwia zapętlenie na dwa sposoby. Po pierwsze, istnieje instrukcja `JUMP`, która pozwala programowi wrócić do poprzedniego miejsca w kodzie, i instrukcje `JUMPI` przeskoku warunkowego, dopuszczanie wyrażeń takich jak `while x < 27: x = x * 2`. Po drugie, kontrakty mogą wywoływać inne kontrakty, potencjalnie umożliwiając zapętlenie poprzez rekurencję. To naturalnie prowadzi do problemu: czy złośliwi użytkownicy mogą zasadniczo wyłączyć górników i pełne węzły, zmuszając ich do wejścia w nieskończoną pętlę? Kwestia ta pojawia się z powodu problemu w informatyce znanego jako problem zatrzymania: nie ma sposobu, aby powiedzieć, w ogólnym przypadku, czy dany program kiedykolwiek się zatrzyma.
+Ważną informacją jest to, że maszyna wirtualna Ethereum jest kompletna w sensie Turinga; oznacza to, że kod EVM może kodować dowolne obliczenia, które można sobie wyobrazić, w tym nieskończone pętle. Kod EVM umożliwia wykonywanie pętli na dwa sposoby. Po pierwsze, istnieje instrukcja `JUMP`, która pozwala programowi przeskoczyć z powrotem do poprzedniego miejsca w kodzie, oraz instrukcja `JUMPI` do skoków warunkowych, pozwalająca na instrukcje takie jak `while x < 27: x = x * 2`. Po drugie, kontrakty mogą wywoływać inne kontrakty, co potencjalnie pozwala na zapętlenie poprzez rekurencję. To naturalnie prowadzi do problemu: czy złośliwi użytkownicy mogą zasadniczo wyłączyć górników i pełne węzły zmuszając je do wejścia w nieskończoną pętlę? Kwestia ta pojawia się z powodu problemu znanego w informatyce jako problem stopu: nie ma sposobu, aby powiedzieć, w ogólnym przypadku, czy dany program kiedykolwiek się zatrzyma.
-Jak opisano w sekcji dotyczącej zmiany stanu, nasze rozwiązanie działa w ten sposób, że wymagamy od transakcji określenia maksymalnej liczby kroków obliczeniowych, które może ona wykonać, a jeśli wykonanie trwa dłużej, obliczenia są przerywane, ale opłaty są nadal uiszczane. Komunikaty działają w ten sam sposób. Aby pokazać motywację uzasadniającą nasze rozwiązanie, weźmy pod uwagę następujące przykłady:
+Jak opisano w sekcji dotyczącej przejścia stanu, nasze rozwiązanie polega na wymaganiu, aby transakcja ustaliła maksymalną liczbę kroków obliczeniowych, które mogą zostać wykonane, a jeśli wykonanie przekroczy ten limit, obliczenia są cofane, ale opłaty są nadal uiszczane. Wiadomości działają w ten sam sposób. Aby pokazać motywację stojącą za naszym rozwiązaniem, rozważmy następujące przykłady:
-- Atakujący tworzy kontrakt, który uruchamia nieskończoną pętlę, a następnie wysyła transakcję aktywującą tę pętlę do górnika. Górnik przetwarza transakcję, uruchamia nieskończoną pętlę i czeka, aż skończy się gaz. Nawet jeśli w trakcie wykonywania transakcji zabraknie paliwa i zatrzyma się ona w połowie, transakcja jest nadal ważna, a górnik nadal żąda od atakującego opłaty za każdy krok obliczeniowy.
-- Atakujący tworzy bardzo długą nieskończoną pętlę z zamiarem zmuszenia górnika do kontynuowania obliczeń przez tak długi czas, że do czasu zakończenia obliczeń pojawi się jeszcze kilka bloków i nie będzie możliwe, aby górnik uwzględnił transakcję, aby zażądać opłaty. Niemniej jednak napastnik będzie musiał przesłać wartość `STARTGAS`, ograniczając liczbę kroków obliczeniowych wykonania, więc górnik dowie się wcześniej, że obliczenie będzie wymagać zbyt dużej liczby kroków.
-- Atakujący widzi kontrakt z kodem w jakiejś formie jak `send(A,contract.storage[A]); contract.storage[A] = 0`, i wysyła transakcję z wystarczającą ilością gazu, aby wykonać pierwszy krok, ale nie drugi (tzn. dokonać wypłaty, ale nie pozwolić na zmniejszenie salda). Autor kontraktu nie musi się martwić o ochronę przed takimi atakami, ponieważ jeśli wykonanie kontraktu zatrzyma się w połowie zmian, zostaną one cofnięte.
-- Kontrakt finansowy działa poprzez przyjęcie mediany dziewięciu zastrzeżonych kanałów danych w celu zminimalizowania ryzyka. Atakujący przejmuje jeden z kanałów danych, który jest zaprojektowany do modyfikowania za pomocą mechanizmu wywołania zmiennego adresu opisanego w sekcji dotyczącej DAO i konwertuje go do uruchomienia nieskończonej pętli, próbując w ten sposób wymusić wszelkie próby odzyskania środków z kontraktu finansowego do wyczerpania gazu. Jednak umowa finansowa może ustalić limit gazu na komunikacie, aby zapobiec temu problemowi.
+- Atakujący tworzy kontrakt, który uruchamia nieskończoną pętlę, a następnie wysyła transakcję aktywującą tę pętlę do górnika. Górnik przetworzy transakcję, uruchamiając nieskończoną pętlę i poczeka, aż skończy się jej gaz. Nawet jeśli w trakcie wykonywania transakcji zabraknie gazu i zatrzyma się ona w połowie, to transakcja nadal jest prawidłowa, a górnik nadal pobiera opłatę od atakującego za każdy krok obliczeniowy.
+- Atakujący tworzy bardzo długą nieskończoną pętlę z zamiarem zmuszenia górnika do obliczania przez tak długi czas, że zanim zakończy się obliczanie, wyjdzie kilka kolejnych bloków i górnik nie będzie mógł uwzględnić transakcji w celu pobrania opłaty. Atakujący będzie zobowiązany jednak do przesłania wartości dla `STARTGAS` ograniczającej liczbę kroków obliczeniowych, które może wykonać, więc górnik będzie wiedział z wyprzedzeniem, że obliczenia zajmą nadmiernie dużą liczbę kroków.
+- Atakujący widzi kontrakt z kodem w formie `send(A,contract.storage[A]); contract.storage[A] = 0` i wysyła transakcję z wystarczającą ilością gazu, aby wykonać krok pierwszy, ale nie drugi (tj. dokonuje wypłaty, ale nie pozwala, aby saldo się zmniejszyło). Autor kontraktu nie musi martwić się o ochronę przed takimi atakami, ponieważ jeśli wykonanie zatrzyma się w połowie, zmiany zostaną cofnięte.
+- Kontrakt finansowy działa, przyjmując medianę z dziewięciu zastrzeżonych kanałów danych w celu minimalizacji ryzyka. Atakujący przejmuje jeden z kanałów danych, który został zaprojektowany tak, aby można go było modyfikować za pomocą mechanizmu wywołania adresu zmiennej opisanego w sekcji o DAO, i przekształca go tak, aby działał w nieskończonej pętli, próbując w ten sposób zmusić wszelkie próby pobrania środków z kontraktu finansowego do wyczerpania gazu. Kontrakt finansowy może jednak ustawić limit gazu dla wiadomości, aby zapobiec temu problemowi.
-Alternatywą dla kompletności transakcji jest niekompletność, gdzie `JUMP` i `JUMPI` nie istnieją i tylko jedna kopia każdego kontraktu może istnieć w danym momencie. W tym systemie opisany system opłat i niepewność dotycząca skuteczności naszego rozwiązania mogą nie być konieczne, ponieważ koszt wykonania kontraktu byłby ograniczony wielkością kontraktu. Ponadto, niekompletność w sensie Turinga nie jest nawet tak dużym ograniczeniem; ze wszystkich przykładów kontraktów, które wymyśliliśmy wewnętrznie, jak dotąd tylko jeden wymagał pętli, a nawet ta pętla mogła być usunięta przez wykonanie 26 powtórzeń jednowierszowego fragmentu kodu. Biorąc pod uwagę poważne następstwa kompletności w sensie Turinga i ograniczone korzyści, dlaczego nie ma po prostu języka Turinga niekompletnego w sensie Turinga? W rzeczywistości jednak niekompletność jest daleka od czystego rozwiązania problemu. Aby zobaczyć dlaczego, zastanów się nad następującymi kontraktami:
+Alternatywą dla kompletności w sensie Turinga jest niekompletność w sensie Turinga, w której `JUMP` i `JUMPI` nie istnieją i tylko jedna kopia każdego kontraktu może istnieć w stosie wywołań w danym momencie. W tym systemie opisany system opłat i niepewność co do skuteczności naszego rozwiązania mogą nie być konieczne, ponieważ koszty wykonania kontraktu byłby ograniczony przez jego rozmiar. Co więcej, niekompletność Turinga nie jest nawet tak dużym ograniczeniem; spośród wszystkich przykładów kontraktów, które wewnętrznie wymyśliliśmy, tylko jeden wymagał pętli, a nawet tę pętlę można było usunąć, wykonując 26 powtórzeń jednej linii fragmentu kodu. Biorąc pod uwagę poważne implikacje kompletności Turinga i ograniczone korzyści, dlaczego po prostu nie mieć języka niekompletnego w sensie Turinga? W rzeczywistości jednak niekompletność Turinga daleka jest od prostszego rozwiązania problemu. Aby zobaczyć dlaczego, rozważmy następujące kontrakty:
- C0: call(C1); call(C1);
- C1: call(C2); call(C2);
- C2: call(C3); call(C3);
- ...
- C49: call(C50); call(C50);
- C50: (uruchom jeden krok programu i zapisz zmianę w pamięci)
+```sh
+C0: call(C1); call(C1);
+C1: call(C2); call(C2);
+C2: call(C3); call(C3);
+...
+C49: call(C50); call(C50);
+C50: (uruchom jeden krok programu i zapisz zmianę w pamięci)
+```
-Teraz wyślij transakcję do A. Zatem w 51 transakcjach mamy kontrakt, który zajmuje 250 kroków obliczeniowych. Górnicy mogliby spróbować wykryć takie bomby logiczne z wyprzedzeniem, utrzymując przy każdym kontrakcie wartość określającą maksymalną liczbę kroków obliczeniowych, jakie może on wykonać, i obliczając ją dla kontraktów wywołujących rekurencyjnie inne kontrakty, ale wymagałoby to od górników zakazania kontraktów, które tworzą inne kontrakty (ponieważ tworzenie i wykonywanie wszystkich 26 powyższych kontraktów można by łatwo połączyć w jeden kontrakt). Innym problematycznym punktem jest to, że pole adresowe komunikatu jest zmienne, więc w zasadzie nie można nawet powiedzieć, które inne kontrakty będą wywoływane przez dany kontrakt z wyprzedzeniem. W związku z tym mamy zaskakujący wniosek: kompletność w sensie Turinga jest zaskakująco łatwa do opanowania, a jej brak kompletności jest równie zaskakująco trudny do opanowania, chyba że zastosuje się dokładnie takie same kontrole – ale w takim przypadku dlaczego nie pozwolić, by protokół był kompletny w sensie Turinga?
+Wyślijmy teraz transakcję do A. W ten sposób, w 51 transakcjach, mamy kontrakt, który zajmuje 250 kroków obliczeniowych. Górnicy mogliby próbować wykrywać takie bomby logiczne z wyprzedzeniem, utrzymując wartość obok każdego kontraktu określającą maksymalną liczbę kroków, które może on wykonać i obliczając ją dla kontraktów wywołujących inne kontrakty rekurencyjnie, ale wymagałoby to od górników zakazywania kontraktów, które tworzą inne kontrakty (ponieważ tworzenie i wykonywanie wszystkich powyższych 26 kontraktów mogłoby łątwo zostać włączone do jednego kontraktu). Innym problematycznym punktem jest to, że pole adresu wiadomości jest zmienną, więc generalnie może nie być nawet możliwe ustalenie, które inne kontrakty dany kontrakt wywoła z wyprzedzeniem. W związku z tym mamy zaskakujący wniosek: kompletność Turinga jest zaskakująco łatwa zarządzania, a brak kompletności Turinga jest równie zaskakująco trudny do zarządzania, chyba że wprowadzone zostaną takie same kontrole — ale w takim przypadku dlaczego po prostu nie pozwolić, aby protokół był kompletny w sensie Turinga?
### Waluta i emisja {#currency-and-issuance}
-Sieć Ethereum zawiera własną, wbudowaną walutę, ether, która służy podwójnemu celowi: zapewnia podstawową warstwę płynności, umożliwiając efektywną wymianę między różnymi rodzajami aktywów cyfrowych oraz, co ważniejsze, zapewniając mechanizm uiszczania opłat za transakcje. Dla wygody i w celu uniknięcia przyszłych sporów (patrz obecna debata mBTC/uBTC/satoshi w Bitcoin), nominały będą wstępnie oznaczone:
+Sieć Ethereum zawiera własną, wbudowaną walutę, ether, która pełni podwójną funkcję: zapewnia podstawową warstwę płynności, aby umożliwić efektywną wymianę między różnymi rodzajami aktywów cyfrowych, oraz co ważniejsze, zapewnia mechanizm do uiszczania opłat transakcyjnych. Dla wygody i uniknięcia przyszłych sporów (jak w przypadku obecnych dyskusji na temat mBTC/uBTC/satoshi w Bitcoinie) nominały zostaną wstępnie oznaczone:
- 1: wei
- 1012: szabo
- 1015: finney
- 1018: ether
-Należy to traktować jako rozszerzoną wersję pojęcia „dolarów” i „centów” lub „BTC” i „satoshi”. W najbliższej przyszłości oczekujemy, że „ether” będzie używany do zwykłych transakcji, „finney” do mikrotransakcji, a „szabo” i „wei” do dyskusji technicznych na temat opłat i implementacji protokołu; pozostałe nominały mogą stać się użyteczne później i nie powinny być w tym momencie włączane do klientów.
+Należy to traktować jako rozszerzoną wersję koncepcji „dolarów” i „centów” lub „BTC” i „satoshi”. W najbliższej przyszłości spodziewamy się, że „ether” będzie używany do zwykłych transakcji, „finney” do mikrotransakcji, a „szabo” i „wei” do technicznych dyskusji na temat opłat i implementacji protokołu; pozostałe nominały mogą stać się przydatne później i na razie nie powinny być uwzględniane w klientach.
Model emisji będzie następujący:
-- Ether zostanie opublikowany w sprzedaży walutowej po cenie 1000-2000 etheru na BTC, mechanizm służący finansowaniu organizacji Ethereum i opłacie za rozwój, który został wykorzystany z powodzeniem przez inne platformy, takie jak Mastercoin i NXT. Wcześni nabywcy odniosą korzyści z większych rabatów. BTC otrzymany ze sprzedaży zostanie całkowicie wykorzystany do wypłacania wynagrodzenia programistom i zainwestowanyc w różne projekty for-profit i non-profit w ekosystemu Ethereum i kryptowaluty.
-- 0.099x całkowita kwota sprzedana (60102216 ETH) zostanie przeznaczona dla organizacji w celu wynagrodzenia wczesnych uczestników i zapłacenia wydatków denominowanych w ETH przed blokiem genezy.
-- 0,099x łączna ilość sprzedanych produktów będzie utrzymana jako długoterminowa rezerwa.
-- 0,26x łączna sprzedana ilość zostanie przydzielona górnikom na rok na zawsze po tym punkcie.
+- Ether zostanie wydany w sprzedaży waluty po cenie 1000-2000 etherów za BTC, czyli mechanizmu przeznaczonego do finansowania organizacji Ethereum i płacenia za rozwój, który był z powodzeniem wykorzystywany przez inne platformy, takie jak MasterCoin i NXT. Wcześni nabywcy skorzystają z większych rabatów. BTC otrzymane ze sprzedaży zostaną w całości przeznaczone na wypłatę wynagrodzeń i nagród dla deweloperów, oraz zainwestowane w różne projekty non-profit, jak i te nastawione na zysk w ekosystemie Ethereum i kryptowalut.
+- 0,099x całkowitej sprzedanej ilości (60102216 ETH) zostanie przydzielone organizacji w celu zrekompensowania wczesnych uczestników oraz na pokrycie wydatków denominowanych w ETH przed blokiem genezy.
+- 0,099x całkowitej sprzedanej ilości zostanie utrzymane jako rezerwa długoterminowa.
+- 0,26x całkowitej sprzedanej ilości będzie przydzielane górnikom każdego roku na zawsze od tego momentu.
| Grupa | Przy wprowadzeniu | Po 1 roku | Po 5 latach |
| --------------------------------- | ----------------- | --------- | ----------- |
@@ -431,77 +465,74 @@ Model emisji będzie następujący:
| Rezerwa wykorzystana po sprzedaży | 8,26% | 6,79% | 3,96% |
| Górnicy | 0% | 17,8% | 52,0% |
-**Długoterminowy wzrost podaży (w procentach)**
+#### Długoterminowa stopa wzrostu podaży (w procentach)
-
+
-_Pomimo liniowej emisji waluty, podobnie jak w przypadku Bitcoina z czasem stopa wzrostu podaży dąży jednak do zera_
+_Pomimo liniowej emisji waluty, podobnie jak w przypadku Bitcoina, stopa wzrostu podaży z czasem dąży do zera._
-Dwa główne wybory w powyższym modelu to (1) istnienie i wielkość puli zasobów oraz (2) istnienie stale rosnącej liniowej podaży, w przeciwieństwie do ograniczonej podaży, jak w przypadku Bitcoina. Uzasadnienie puli zasobów jest następujące. Jeśli by pula zasobów nie istniała, a liniowa emisja zmniejszyła się do 0. 17x dla zapewnienia tej samej stopy inflacji, a następnie całkowita ilość eteru wynosiłaby 16,5% mniej, więc każda jednostka byłaby warta o 19,8% więcej. Tak więc w równowadze 19,8% więcej etheru zostałoby zakupione w sprzedaży, więc każda jednostka byłaby znów tak samo cenna jak poprzednio. Organizacja miałaby wtedy również 1,198x więcej BTC, które można uznać za podzielone na dwie części: oryginalny BTC i dodatkowe 0,198x. W związku z tym ta sytuacja jest _dokładnie równoważna_ z zaopatrzeniem, ale przy jednej istotnej różnicy: organizacja posiada wyłącznie BTC, a więc nie jest zachęcana do wspierania wartości jednostki etheru.
+Dwa główne wybory w powyższym modelu to (1) istnienie i wielkość puli zasobów oraz (2) istnienie stale rosnącej liniowej podaży, w przeciwieństwie do ograniczonej podaży, jak w przypadku Bitcoina. Uzasadnienie puli zasobów jest następujące. Gdyby pula zasobów nie istniała, a liniowa emisja została zmniejszona do 0,217x, aby zapewnić taką samą stopę inflacji, całkowita ilość etheru byłaby o 16,5% mniejsza, a każda jednostka byłaby o 19,8% bardziej wartościowa. W związku z tym, w równowadze zakupiono by o 19,8% więcej etheru podczas sprzedaży, a więc każda jednostka byłaby znowu tak samo wartościowa jak wcześniej. Organizacja posiadałaby również 1,198x więcej BTC, które można podzielić na dwie części: oryginalny BTC i dodatkowe 0,198x. W związku z tym sytuacja ta jest _dokładnie równoważna_ z istnieniem puli zasobów, ale z jedną istotną różnicą: organizacja posiadałaby wyłącznie BTC, a zatem nie byłaby zachęcana do wspierania wartości jednostki etheru.
-Stały model liniowego wzrostu podaży zmniejsza ryzyko tego, co niektórzy postrzegają jako nadmierne stężenie bogactwa w Bitcoin, i daje osobom jednostek waluty, jednocześnie zachowując silną zachętę do uzyskania i wstrzymania eteru, ponieważ „stopa wzrostu podaży” wyrażona jako procent nadal wynosi w miarę upływu czasu. Teoretyzujemy również, że ponieważ monety są zawsze tracone z czasem z powodu nieostrożności, śmierci, itp., a utrata monet może być modelowana jako procent całkowitej podaży na rok, że całkowita podaż waluty w obiegu w rzeczywistości ostatecznie ustabilizuje się na wartości równej rocznej emisji podzielonej przez wskaźnik utraty (np. przy stopie strat 1%, gdy podaż osiągnie 26X, 0,26X będzie wydobywane i 0,26X tracone każdego roku, tworząc równowagę).
+Stały liniowy model wzrostu podaży zmniejsza ryzyko tego, co niektórzy postrzegają jako nadmierną koncentrację bogactwa w Bitcoinie, i daje osobom żyjącym obecnie i w przyszłości uczciwą szansę na nabycie jednostek waluty, jednocześnie zachowując silną zachętę do pozyskiwania i utrzymywania etheru, poniważ „stopa wzrostu podaży” jako procent z czasem nadal zmierza do zera. Teoretyzujemy również, że ponieważ monety są zawsze tracone z czasem z powodu nieostrożności, śmierci itp., a utrata monet może być modelowana jako procent całkowitej podaży rocznie, całkowita podaż waluty w obiegu ostatecznie ustabilizuje się na poziomie równym rocznej emisji podzielonej przez wskaźnik strat (np. przy wskaźniku strat wynoszącym 1%, gdy podaż osiągnie 26X, wówczasz 0,26X będzie wydobywane i 0,26X tracone każdego roku, tworząc równowagę).
-Zauważ, że w przyszłości Ethereum przełączy się na model proof-of-stake dla bezpieczeństwa, ograniczając wymaganie emisji do jakiejś wartości między zerem a 0,05X rocznie. W przypadku, gdy organizacja Ethereum straci fundusze lub z jakiegokolwiek innego powodu zniknie, pozostawiamy otwartą „umowę społeczną”: każdy ma prawo do stworzenia przyszłej wersji kandydata Ethereum, pod jedynym warunkiem, że ilość eteru musi być co najwyżej równa `60102216 * (1. 198 + 0.26 * n)` gdzie `n` jest liczbą lat po bloku genezy. Twórcy mogą swobodnie sprzedać lub w inny sposób przypisać część lub całość różnicy między zwiększeniem podaży napędzanym przez PoS a maksymalnym dopuszczalnym zwiększeniem podaży do zapłaty za rozwój. Aktualizacje kandydujące, które nie są zgodne z umową społeczną, mogą być w uzasadniony sposób rozwidlone na wersje zgodne.
+Należy pamiętać, ze w przyszłości prawdopodobne jest, że Ethereum przejdzie na model proof-of-stake dla bezpieczeństwa, zmniejszając wymóg emisji do wartości od zera do 0,05X rocznie. W przypadku, gdy organizacja Ethereum straci fundusze lub z jakiegokolwiek innego powodu zniknie, pozostawiamy otwartą „umowę społeczną”: każdy ma prawo stworzyć przyszłą kandydującą wersję Ethereum, pod warunkiem, że ilość etheru musi być co najwyżej równa `60102216 * (1.198 + 0.26 * n)`, gdzie `n` to liczba lat po bloku genezy. Twórcy mogą swobodnie sprzedawać lub w inny sposób przydzielać część lub całość różnicy między ekspansją podaży napędzaną przez PoS a maksymalną dopuszczalną ekspansją podaży, aby zapłacić za rozwój. Kandydujące aktualizacje, które nie są zgodne z umową społeczną, mogą zostać w uzasadniony sposób sforkowane na wersje zgodne.
### Centralizacja wydobycia {#mining-centralization}
-Algorytm wydobywczy Bitcoin działa w ten sposób, że górnicy obliczają SHA256 na lekko zmodyfikowanych wersjach nagłówka bloku miliony razy w kółko, aż w końcu jeden z węzłów znajdzie wersję, której hash jest mniejszy niż docelowy (obecnie około 2192). Ten algorytm wydobywania jest jednak podatny na dwie formy centralizacji. Po pierwsze, ekosystem górniczy został zdominowany przez ASIC (układy scalone specyficzne dla zastosowań), chipy komputerowe zaprojektowane dla konkretnego zadania wydobycia Bitcoina, a zatem tysiące razy bardziej wydajne. Oznacza to, że wydobycie bitcoinów nie jest już wysoce zdecentralizowanym i egalitarnym przedsięwzięciem, wymagającym milionów dolarów kapitału, aby efektywnie w nim uczestniczyć. Po drugie, większość górników Bitcoin nie wykonuje walidacji bloków lokalnie; zamiast tego polegają na scentralizowanej puli wydobywczej, która dostarcza nagłówki bloków. Ten problem jest prawdopodobnie poważniejszy: w czasie pisania tego tekstu trzy największe pule górnicze pośrednio kontrolują około 50% mocy obliczeniowej w sieci Bitcoin, chociaż jest to złagodzone przez fakt, że górnicy mogą przejść do innych pul górniczych, jeśli jakaś pula lub koalicja próbuje ataku 51%.
+Algorytm wydobywczy Bitcoina działa w ten sposób, że górnicy obliczają SHA256 na lekko zmodyfikowanych wersjach nagłówka bloku miliony razy w kółko, aż w końcu jeden węzeł znajdzie wersję, której hash jest mniejszy niż docelowy (obecnie około 2192). Ten algorytm wydobywczy jest jednak podatny na dwie formy centralizacji. Po pierwsze, ekosystem wydobywczy został zdominowany przez układy ASIC (specjalizowane układy scalone), czyli chipy komputerowe zaprojektowane specjalnie do wydobywania Bitcoinów, które są tysiące razy wydajniejsze w tym konkretnym zadaniu. Oznacza to, ze wydobywanie Bitcoinów nie jest już wysoce zdecentralizowanych i egalitarnym zajęciem, ponieważ wymaga milionów dolarów kapitału, aby efektywnie w tym uczestniczyć. Po drugie, większość górników Bitcoinów nie przeprowadza walidacji bloków lokalnie; zamiast tego polegają oni na scentralizowanych pulach wydobywczych, które dostarczają im nagłówki bloków. Ten problem jest prawdopodobnie poważniejszy: w chwili pisania tego tekstu, trzy największe pule wydobywcze pośrednio kontrolują około 50% mocy obliczeniowej w sieci Bitcoin, chociaż jest to łagodzone przez fakt, że górnicy mogą przełączyć się na inną pulę wydobywczą, jeśli dana pula lub koalicja spróbuje przeprowadzić atak 51%.
-Obecnym zamiarem w Ethereum jest wykorzystanie algorytmu wydobywczego, w którym górnicy są zobowiązani do pobierania losowych danych ze stanu, obliczania kilku losowo wybranych transakcji z ostatnich N bloków w blockchainie i zwracania skrótu wyniku. Ma to dwie ważne korzyści. Po pierwsze, kontrakty Ethereum mogą zawierać wszelkiego rodzaju obliczenia, więc Ethereum ASIC byłby zasadniczo ASIC do obliczeń ogólnych – np. lepszy CPU. Po drugie, wydobywanie wymaga dostępu do całego łańcucha bloków, co zmusza górników do przechowywania całego łańcucha bloków i przynajmniej weryfikowania każdej transakcji. Eliminuje to potrzebę istnienia scentralizowanych pul wydobywczych; chociaż pule wydobywcze mogą nadal pełnić uzasadnioną rolę wyrównywania losowości dystrybucji nagród, funkcja ta może być równie dobrze pełniona przez pule peer-to-peer bez centralnej kontroli.
+Obecnym zamiarem Ethereum jest wykorzystanie algorytmu wydobywczego, w którym górnicy są zobowiązani do pobierania losowanych danych ze stanu, obliczania losowo wybranych transakcji z ostatnich N bloków w blockchainie i zwracania hashu wyniku. Ma to dwie ważne korzyści. Po pierwsze, kontrakty Ethereum mogą zawierać dowolny rodzaj obliczeń, więc układ ASIC Ethereum byłby zasadniczo układem ASIC do ogólnych obliczeń — tj. lepszym procesorem. Po drugie, wydobywanie wymaga dostępu do całego blockchainu, co zmusza górników do przechowywania całego blockchainu i przynajmniej do zdolności weryfikacji każdej transakcji. Eliminuje to potrzebę scentralizowanych pul wydobywczych; chociaż pule wydobywcze mogą nadal pełnić uzasadnioną rolę wyrównywania losowości dystrybucji nagród, funkcja ta może być równie dobrze obsługiwana przez pule peer-to-peer bez centralnej kontroli.
-Niniejszy model nie jest testowany, i mogą pojawić się trudności w unikaniu pewnych inteligentnych optymalizacji podczas korzystania z wykonania kontraktu jako algorytmu górniczego. Jednak szczególnie interesującą cechą tego algorytmu jest to, że pozwala on każdemu na „zatrucie studni”, poprzez wprowadzenie do blockchainu dużej liczby kontraktów zaprojektowanych specjalnie po to, by powstrzymać pewne układy ASIC. Dla producentów ASIC istnieją zachęty ekonomiczne, aby używali tego rodzaju sztuczki do wzajemnego atakowania. Zatem rozwiązaniem, które opracowujemy, jest ostatecznie adaptacyjne rozwiązanie ekonomiczne, a nie czysto techniczne.
+Model ten nie został jeszcze przetestowany, a po drodze mogą pojawić się trudności z uniknięciem pewnych sprytnych optymalizacji podczas korzystania z wykonywania kontraktu jako algorytmu wydobywczego. Jednakże jedną znacząco interesującą funkcją tego algorytmu jest to, że pozwala on każdemu na "zatrucie studni" poprzez wprowadzenie dużej liczby kontraktów na blockchain zaprojektowanych specjalnie po to, aby zatkać niektóre ASIC. Istnieje zachęta ekonomiczna dla producentów ASIC, aby użyć takiego triku w celu zaatakowania siebie nawzajem. Zatem rozwiązanie, które tworzymy jest ostatecznie bardziej ludzkim rozwiązaniem ekonomicznym niż czysto technicznym.
### Skalowalność {#scalability}
-Jedną z powszechnych obaw związanych z Ethereum jest kwestia skalowalności. Podobnie jak w przypadku Bitcoina, wada Ethereum polega na tym, że każda transakcja musi być przetwarzana przez każdy węzeł w sieci. W przypadku Bitcoina, rozmiar obecnego łańcucha bloków wynosi około 15 GB, wzrastając o około 1 MB na godzinę. Jeśli sieć Bitcoin miała przetwarzać 2000 transakcji Visa na sekundę, rosłaby o 1 MB na trzy sekundy (1 GB na godzinę, 8 TB na rok). Ethereum prawdopodobnie doświadczy podobnego wzorca wzrostu, pogorszonego przez to, że na górze blockchainu Ethereum będzie wiele aplikacji zamiast tylko waluty, jak ma to miejsce w przypadku Bitcoina, ale złagodzi to fakt, że pełne węzły Ethereum muszą przechowywać tylko stan zamiast całej historii blockchainu.
+Jedną z powszechnych obaw związanych z Ethereum jest kwestia skalowalności. Podobnie do Bitcoina, Ethereum cierpi z powodu wady, która opiera się na konieczności przetwarzania każdej transakcji przez każdy węzeł sieci. W przypadku Bitcoina obecny rozmiar blockchaina wynosi około 15 GB i zwiększa się o ok. 1 MB na godzinę. Jeśli sieć Bitcoin miałaby przetwarzać 2000 transakcji na sekundę jak Visa, jej rozmiar rósłby o 1 MB co trzy sekundy (1 GB na godzinę, 8 TB rocznie). Ethereum prawdopodobnie będzie podlegać podobnemu schematowi wzrostu, pogorszonemu przez fakt, że na blockchainie Ethereum będzie wiele aplikacji, a nie tylko waluta, jak w przypadku Bitcoina. Sytuację tę złagodzi jednak fakt, że pełne węzły Ethereum będą musiały przechowywać tylko stan, a nie całą historię blockchaina.
-Problem z tak dużą wielkością blockchainu to ryzyko centralizacji. Jeśli rozmiar łańcucha bloków wzrasta na przykład do 100 TB, wtedy prawdopodobnym scenariuszem byłby fakt, że tylko bardzo mała liczba dużych przedsiębiorstw prowadziłaby pełnych węzłów, ze wszystkimi regularnymi użytkownikami używającymi lekkich węzłów SPV. W takiej sytuacji pojawia się potencjalna obawa, że wszystkie węzły mogłyby wspólnie i wszyscy zgadzają się na oszukiwanie w sposób przynoszący zyski (np. zmień nagrodę bloku, daj sobie BTC). Lekkie węzły nie miałyby sposobu na natychmiastowe wykrycie. Oczywiście przynajmniej jeden uczciwy pełny węzeł prawdopodobnie istniałby, a po kilku godzinach informacje o oszustwo wyciekłyby kanałami takimi jak Reddit, ale w tym momencie byłoby już za późno: zwykli użytkownicy zajmą się organizacją próby umieszczenia na czarnej liście podanych bloków, ogromnym i prawdopodobnie niewykonalnym problem koordynacji o podobnej skali, jak próba poderwania się na udany atak 51%. W przypadku Bitcoina, jest to obecnie problem, ale istnieje modyfikacja blockchain [zasugerowana przez Petera Todda](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/), która poprawi ten problem.
+Problem z tak dużą wielkością blockchainu to ryzyko centralizacji. Jeśli wielkość blockchaina wzrośnie do powiedzmy 100 TB, wówczas prawdopodobnym scenariuszem stanie się taki, w którym bardzo mała liczba wielkich przedsiębiorstw utrzymywałaby pełne węzły, a wszyscy normalni użytkownicy używaliby lekkich węzłów SPV. W takiej sytuacji powstaje potencjalne ryzyko, że pełne węzły zgrupują się i dogadają oszustwo w jakiś sposób zapewniający im zysk (np. zmieniając nagrodę za blok, przyznając sobie BTC). Lekkie węzły nie miałyby możliwości natychmiastowego wykrycia tej sytuacji. Oczywiście, prawdopodobnie istniałby co najmniej jeden uczciwy, pełny węzeł i po kilku godzinach informacja o oszustwie wyciekłaby przez kanały takie jak Reddit, ale wtedy byłoby już za późno: zwykli użytkownicy musieliby zorganizować akcję umieszczenia danych bloków na czarnej liście, co stanowiłoby ogromny i prawdopodobnie niewykonalny problem koordynacyjny na skalę porównywalną do przeprowadzenia udanego ataku 51%. W przypadku Bitcoina jest to obecnie problem, ale istnieje modyfikacja blockchainu [zaproponowana przez Petera Todda](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/), która złagodzi ten problem.
-W najbliższym czasie Ethereum wykorzysta dwie dodatkowe strategie w celu rozwiązania tego problemu. Po pierwsze, z powodu algorytmów kopania opartych na blockchain, co najmniej każdy górnik będzie zmuszony do bycia pełnym węzłem, tworząc dolną granicę liczby pełnych węzłów. Drugie i więcej ważne jest jednak, że po przetworzeniu każdej transakcji znajdziemy pośrednie drzewo stanowe w łańcuchu bloków. Nawet jeśli blok jest scentralizowany, dopóki istnieje jeden uczciwy węzeł, problem centralizacji można obejść za pomocą protokołu weryfikacji. Jeśli górnik publikuje nieprawidłowy blok, ten blok musi być albo źle sformatowany, albo stan `S[n]` jest nieprawidłowy. Skoro `S[0]` jest znany jako poprawny, musi być jakiś pierwszy stan `S[i]` niepoprawny gdzie `S[i-1]` jest poprawny. Serwer weryfikujący dostarczy indeks `i`, wraz z „dowodem inwalidztwa” składającym się z podzbioru węzłów drzew Patricia, które muszą przetworzyć `APPLY(S[i-1], X[i]) -> S[i]`. Węzły będą mogły używać węzłów Patricia do uruchomienia tej części obliczeń, i zobacz, że wygenerowany `S[i]` nie pasuje do podanego `S[i]`.
+W bliskiej przyszłości Ethereum zastosuje dwie dodatkowe strategie przeciwdziałania temu problemowi. Po pierwsze, z uwagi na mechanizmy kopania oparte na blockchainie, każdy górnik będzie zmuszony utrzymywać pełny węzeł, przez co wytworzy się dolna granica liczby pełnych węzłów. Po drugie, co istotniejsze, dołączony do blockchaina zostanie pośredni korzeń drzewa stanu po przetworzeniu każdej transakcji. Nawet jeśli walidacja bloków jest scentralizowana, problem centralizacji można obejść za pomocą protokołu weryfikacji, o ile istnieje jeden uczciwy węzeł weryfikujący. Jeśli górnik opublikuje nieprawidłowy blok, to blok ten musi być źle sformatowany lub stan `S[n]` jest niepoprawny. Ponieważ wiadomo, że `S[0]` jest poprawne, musi istnieć jakiś pierwszy stan `S[i]`, który jest niepoprawny, tam gdzie `S[i-1]` jest poprawne. Węzeł weryfikujący dostarczyłby indeks `i` wraz z „dowodem nieważności” składającym się z podzbioru węzłów drzewa Patricia, które muszą przetworzyć `APPLY(S[i-1],TX[i]) -> S[i]`. Węzły mogłyby używać tych węzłów do wykonywania tej części obliczeń i stwierdzać, że wygenerowany `S[i]` nie pasuje do podanego `S[i]`.
-Inny, bardziej zaawansowany atak obejmowałby złośliwych górników publikowania niekompletnych bloków, więc pełna informacja nawet nie istnieje, aby określić, czy bloki są poprawne. Rozwiązaniem tego jest protokół wyzwania-odpowiedzi: węzły weryfikacyjne problem "wyzwania" w postaci docelowych wskaźników transakcji, i po otrzymaniu węzła węzeł świetlny traktuje blok jako niezaufany do czasu, aż inny węzeł, czy górnik lub inny weryfikator dostarcza podzbiór węzłów Patricia jako dowód ważności.
+Inny, bardziej wyrafinowany atak polegałby na tym, że złośliwi górnicy publikowaliby niekompletne bloki, tak że nie istniałyby nawet pełne informacje pozwalające określić, czy bloki są prawidłowe. Rozwiązaniem tego problemu jest protokół typu wyzwanie-odpowiedź: węzły weryfikacyjne wystawiają „wyzwania” w formie docelowych indeksów transakcji, a po otrzymaniu węzła węzeł lekki traktuje blok jako niezaufany, dopóki inny węzeł, niezależnie od tego, czy jest to górnik, czy inny weryfikator, nie dostarczy podzbioru węzłów Patricia jako dowodu ważności.
-## Podsumowanie {#conclusion}
+## Wnioski {#conclusion}
-Protokół Ethereum został pierwotnie zaprojektowany jako zaktualizowana wersja kryptowaluty, zapewniająca zaawansowane funkcje, takie jak escrow- w blockchain, limity odstąpienia, umowy finansowe, rynki gier hazardowych i, np. poprzez wysoce uogólniony język programowania. Protokół Ethereum nie będzie "wspierał" żadnej aplikacji bezpośrednio, ale istnienie kompletnego języka programowania oznacza, że dowolny kontrakty można teoretycznie utworzyć dla każdego rodzaju transakcji lub aplikacji. Bardziej interesujące jest jednak to, że protokół Ethereum przesuwa się daleko poza samą walutę. Protokoły wokół zdecentralizowanego przechowywania plików, zdecentralizowanych obliczeń i zdecentralizowanych rynków przewidywania wśród dziesiątków innych takich koncepcji, mają potencjał znacznego zwiększenia wydajności przemysłu obliczeniowego, i stanowi ogromny bodziec dla innych protokołów peer-to-peer przez dodanie warstwy ekonomicznej. Wreszcie, istnieje również znaczna gama aplikacji, które w ogóle nie mają nic wspólnego z pieniędzmi.
+Protokół Ethereum został pierwotnie pomyślany jako ulepszona wersja kryptowaluty, zapewniająca zaawansowane funkcje, takie jak depozyt w ramach łańcucha bloków, limity wypłat, kontrakty finansowe, rynki hazardowe i tym podobne, za pośrednictwem wysoce uogólnionego języka programowania. Protokół Ethereum nie „obsługiwałby” bezpośrednio żadnej z aplikacji, ale istnienie języka programowania z kompletnością Turinga oznacza, że teoretycznie możliwe jest tworzenie dowolnych kontraktów dla dowolnego typu transakcji lub aplikacji. Co jednak ciekawsze w przypadku Ethereum, to fakt, że protokół Ethereum wykracza daleko poza samą walutę. Protokoły dotyczące zdecentralizowanego przechowywania plików, zdecentralizowanych obliczeń i zdecentralizowanych rynków predykcyjnych, a także dziesiątki innych podobnych koncepcji, mają potencjał znacznego zwiększenia wydajności branży obliczeniowej i zapewnienia dużego wsparcia innym protokołom peer-to-peer poprzez dodanie po raz pierwszy warstwy ekonomicznej. Wreszcie, istnieje również pokaźna gama aplikacji, które nie mają nic wspólnego z pieniędzmi.
-Koncepcja arbitralnej funkcji przejściowej państwa wdrożonej przez protokołu Ethereum zapewnia platformę o unikalnym potencjale; zamiast być zamkniętym, jednofunkcyjnym protokołem przeznaczonym do konkretnych zastosowań w przechowywaniu danych, gra hazardowa lub finansowa, Ethereum jest otwarte przez projekt, i uważamy, że w nadchodzących latach jest on niezwykle dobrze przygotowany do pełnienia funkcji podstawy dla bardzo dużej liczby protokołów finansowych i niefinansowych.
+Koncepcja dowolnej funkcji przejścia stanu, zaimplementowana w protokole Ethereum, zapewnia platformę o wyjątkowym potencjale. Zamiast być zamkniętym protokołem o jednym przeznaczeniu, przeznaczonym do określonej gamy zastosowań w zakresie przechowywania danych, hazardu lub finansów, Ethereum jest z założenia otwarte i wierzymy, że doskonale nadaje się do pełnienia funkcji warstwy bazowej dla bardzo dużej liczby protokołów finansowych i niefinansowych w nadchodzących latach.
## Uwagi i dalsze lektury {#notes-and-further-reading}
### Uwagi {#notes}
-1. Czytelnik może zauważyć, że w rzeczywistości adres Bitcoin jest skrótem klucza publicznego krzywej eliptycznej, a nie klucz publiczny. Jednak w rzeczywistości całkowicie uzasadniona jest terminologia kryptograficzna określająca hash pubkey jako sam klucz publiczny. , ponieważ kryptografię Bitcoina można uznać za niestandardową algorytm podpisu cyfrowego, w przypadku gdy klucz publiczny składa się z skrótu pubke'a ECC, podpis składa się z pubkey ECC połączony z podpisem ECC, i algorytm weryfikacji obejmuje sprawdzanie pubkey ECC w podpisze za pomocą skrótu pubkey ECC dostarczonego jako klucz publiczny, a następnie weryfikację podpisu ECC za pomocą pubkey ECC.
-2. Technicznie mediana 11 poprzednich bloków.
-3. Protokół Ethereum powinien być tak prosty, jak to możliwe, ale może być konieczne do uzyskania dość wysokiego stopnia złożoności, na przykład do skali, do internalizacji kosztów przechowywania, szerokości pasma i I/O, dla bezpieczeństwa, prywatności, przejrzystości itp. W przypadku gdy złożoność jest konieczna, dokumentacja powinna być możliwie jak najwyraźniejsza, zwięzła i aktualna, aby ktoś całkowicie nieszkolony w Ethereum mógł nauczyć się tego i stać się ekspertem.
-4. Zobacz [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) dla maszyny wirtualnej Ethereum (która jest przydatna jako specyfikacja i punkt odniesienia dla budowania klienta Ethereum od podstaw), podczas gdy jest również wiele tematów w [Ethereum wiki](https://github.com/ethereum/wiki/wiki), takich jak rozwój, Podstawowy rozwój, rozwój aplikacji, badania, Casper R&D i protokoły sieciowe. Do badań i możliwej przyszłości implementacja istnieje [ethresear.ch](https://ethresear.ch).
-5. Innym sposobem wyrażania tego jest abstrakcja. [najnowsza mapa drogowa](https://ethresear.ch/t/sharding-phase-1-spec/1407/67) planuje abstrakcję wykonania, zezwalanie na nie silnikom wykonującym musi być zgodne z jedną specyfikacją kanoniczną, ale na przykład może być dostosowany do konkretnej aplikacji, a do fragmentu. (Ta heterogeniczność silników egzekucyjnych nie jest wyraźnie podana w mapie drogowej. Istnieje również niejednorodny sharding, który Konceptualizuje Vlada Zamfira.)
-6. Wewnętrznie 2 i „CHARLIE” to liczby, przy czym ta ostatnia to w reprezentacji big-endian base 256. Liczby mogą wynosić co najmniej 0 i co najwyżej 2256-1.
-
-### Czytaj Dalej {#further-reading}
-
-1. [Wartość wewnętrzna](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
-2. [Inteligentna własność](https://en.bitcoin.it/wiki/Smart_Property)
-3. [Inteligentne kontrakty](https://en.bitcoin.it/wiki/Contracts)
-4. [B- pieniądze](http://www.weidai.com/bmoney.txt)
-5. [Dowody pracy wielokrotnego użytku](https://nakamotoinstitute.org/finney/rpow/)
-6. [Zabezpieczenie tytułów własności na podstawie uprawnień właściciela](https://nakamotoinstitute.org/secure-property-titles/)
-7. [Biała księga Bitcoin](http://bitcoin.org/bitcoin.pdf)
-8. [Namecoin](https://namecoin.org/)
-9. [Trójkąt Zooko's](https://wikipedia.org/wiki/Zooko's_triangle)
+1. Doświadczony czytelnik może zauważyć, że adres Bitcoin to tak naprawdę skrót klucza publicznego w postaci krzywej eliptycznej, a nie sam klucz publiczny. Jednak w rzeczywistości całkowicie uzasadniona jest terminologia kryptograficzna określająca hash pubkey jako sam klucz publiczny. Dzieje się tak, ponieważ kryptografię Bitcoina można uznać za niestandardowy algorytm podpisu cyfrowego, w którym klucz publiczny składa się z skrótu klucza publicznego ECC, podpis składa się z klucza publicznego ECC połączonego z podpisem ECC, a algorytm weryfikacji obejmuje sprawdzenie klucza publicznego ECC w podpisie względem skrótu klucza publicznego ECC podanego jako klucz publiczny, a następnie weryfikację podpisu ECC względem klucza publicznego ECC.
+2. Technicznie mediana 11 poprzednich bloków.
+3. Wewnętrznie zarówno 2, jak i „CHARLIE” są liczbami[fn3](#notes), przy czym ta druga jest zapisana w systemie big-endian o podstawie 256. Liczby mogą wynosić co najmniej 0 i co najwyżej 2256-1.
+
+### Dalsza lektura {#further-reading}
+
+1. [Wartość wewnętrzna](https://bitcoinmagazine.com/culture/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it)
+2. [Inteligentna własność](https://en.bitcoin.it/wiki/Smart_Property)
+3. [Inteligentne kontrakty](https://en.bitcoin.it/wiki/Contracts)
+4. [B-money](http://www.weidai.com/bmoney.txt)
+5. [Dowody pracy wielokrotnego użytku](https://nakamotoinstitute.org/finney/rpow/)
+6. [Bezpieczne tytuły własności z upoważnieniem właściciela](https://nakamotoinstitute.org/library/secure-property-titles/)
+7. [Biała księga Bitcoina](http://bitcoin.org/bitcoin.pdf)
+8. [Namecoin](https://namecoin.org/)
+9. [Trójkąt Zooko](https://wikipedia.org/wiki/Zooko's_triangle)
10. [Biała księga kolorowych monet](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
-11. [Biała księga Mastercoina](https://github.com/mastercoin-MSC/spec)
-12. [Zdecentralizowane autonomiczne korporacje, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
-13. [Uproszczona weryfikacja płatności](https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification)
+11. [Biała księga Mastercoin](https://github.com/mastercoin-MSC/spec)
+12. [Zdecentralizowane korporacje autonomiczne, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
+13. [Uproszczona weryfikacja płatności](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification)
14. [Drzewa Merkle](https://wikipedia.org/wiki/Merkle_tree)
15. [Drzewa Patricia](https://wikipedia.org/wiki/Patricia_tree)
16. [GHOST](https://eprint.iacr.org/2013/881.pdf)
-17. [StorJ i agenci autonomiczni, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
-18. [Mike Hearn na temat Inteligentnej Własności podczas Festiwalu Turinga](http://www.youtube.com/watch?v=Pu4PAMFPo5Y)
-19. [Ethereum RLP](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)
-20. [Drzewa Patricia Merkle w Ethereum](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
-21. [Peter Todd na temat sumy drzew Merkle](http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
+17. [StorJ i autonomiczni agenci, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
+18. [Mike Hearn o inteligentnej własności na Turing Festival](https://www.youtube.com/watch?v=MVyv4t0OKe4)
+19. [RLP Ethereum](/developers/docs/data-structures-and-encoding/rlp/)
+20. [Drzewa Merkle Patricia w Ethereum](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)
+21. [Peter Todd o drzewach sum Merkle](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
-_Historia białej księgi znajduje się na stronie https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md_
+_Historia białej księgi znajduje się na [tej stronie wiki](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._
-_Warto zauważyć, że Ethereum, podobnie jak wiele projektów oprogramowania opartych na społecznościach, rozwija się od czasu jego początkowego powstania. Aby dowiedzieć się o najnowszych zmianach w Ethereum i jak wprowadzone są zmiany w protokole, zalecamy [ten przewodnik](/learn/)._
+_Ethereum, podobnie jak wiele projektów oprogramowania open-source tworzonych przez społeczność, rozwija się od czasu jego początkowego powstania. _Aby dowiedzieć się o najnowszych zmianach w Ethereum i o tym, jak wprowadzane są zmiany w protokole, polecamy [ten przewodnik](/learn/)._
From 1620e81a6ccb069e2d8cc00c9469070d2ca81d69 Mon Sep 17 00:00:00 2001
From: Joshua <62268199+minimalsm@users.noreply.github.com>
Date: Sun, 15 Feb 2026 17:58:13 +0000
Subject: [PATCH 2/2] fix(i18n): repair broken bold markdown in pl whitepaper
Items 6-8 in the application list had split bold markers from Crowdin
(**N.** Title\*\* instead of **N. Title**). Restore to match English
source formatting.
---
public/content/translations/pl/whitepaper/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/pl/whitepaper/index.md b/public/content/translations/pl/whitepaper/index.md
index 2a698b81e5f..2619dc2cc24 100644
--- a/public/content/translations/pl/whitepaper/index.md
+++ b/public/content/translations/pl/whitepaper/index.md
@@ -351,11 +351,11 @@ Zwykle 1% dziennie wystarcza Alice, a jeśli Alice chce wypłacić więcej, moż
**5. Chmura obliczeniowa**. Technologia EVM może być również wykorzystywana do tworzenia weryfikowalnego środowiska obliczeniowego, pozwalając użytkownikom zlecać innym wykonania obliczeń, a następnie opcjonalnie żądać dowodów, że obliczenia w niektórych losowo wybranych punktach kontrolnych zostały wykonane poprawnie. Pozwala to na stworzenie rynku chmur obliczeniowych, w którym każdy użytkownik może uczestniczyć, korzystając ze swojego komputera stacjonarnego, laptopa lub wyspecjalizowanego serwera, a wyrywkowa kontrola oraz depozyty zabezpieczające mogą zapewnić, że system jest godny zaufania (tj. węzły nie mogą oszukiwać z zyskiem). Chociaż taki system może nie być odpowiedni dla wszystkich zadań; na przykład zadania wymagające wysokiego poziomu komunikacji międzyprocesowej, nie mogą być łatwo realizowane na dużej chmurze węzłów. Inne zadania są jednak znacznie łatwiejsze do zrównoleglenia; projekty takie jak SETI@home, folding@home i algorytmy genetyczne mogą być z łatwością zaimplementowane na takiej platformie.
-**6.** Hazard peer-to-peer\*\*. Dowolna liczba protokołów hazardowych peer-to-peer, takich jak [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) Franka Stajano i Richarda Claytona, może zostać zaimplementowana na blockchainie Ethereum. Najprostszym protokołem hazardowym jest właściwie kontrakt różnicy kursowej oparty na hashu następnego bloku, a bardziej zaawansowane protokoły mogą być tworzone na tej podstawie, tworzą usługi hazardowe z niemal zerowymi opłatami, które nie mają możliwości oszukiwania.
+**6. Hazard peer-to-peer**. Dowolna liczba protokołów hazardowych peer-to-peer, takich jak [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) Franka Stajano i Richarda Claytona, może zostać zaimplementowana na blockchainie Ethereum. Najprostszym protokołem hazardowym jest właściwie kontrakt różnicy kursowej oparty na hashu następnego bloku, a bardziej zaawansowane protokoły mogą być tworzone na tej podstawie, tworzą usługi hazardowe z niemal zerowymi opłatami, które nie mają możliwości oszukiwania.
-**7.** Rynki prognostyczne\*\*. Przy zastosowaniu wyroczni lub SchellingCoin rynki prognostyczne są również łatwe do zaimplementowania, a rynki prognostyczne połączone z SchellingCoin mogą stać się pierwszym szeroko stosowanym zastosowaniem [futarchii](https://mason.gmu.edu/~rhanson/futarchy.html) jako protokołu zarządzania dla zdecentralizowanych organizacji.
+**7. Rynki prognostyczne**. Przy zastosowaniu wyroczni lub SchellingCoin rynki prognostyczne są również łatwe do zaimplementowania, a rynki prognostyczne połączone z SchellingCoin mogą stać się pierwszym szeroko stosowanym zastosowaniem [futarchii](https://mason.gmu.edu/~rhanson/futarchy.html) jako protokołu zarządzania dla zdecentralizowanych organizacji.
-**8.** Zdecentralizowane rynki on-chain\*\*, wykorzystujące system tożsamości i reputacji jako podstawę.
+**8. Zdecentralizowane rynki on-chain**, wykorzystujące system tożsamości i reputacji jako podstawę.
## Różne i obawy {#miscellanea-and-concerns}