<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Afri Schoedon</title>
    <description>The latest articles on Forem by Afri Schoedon (@5chdn).</description>
    <link>https://forem.com/5chdn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4719%2F76c44ac8-6a9d-473b-9280-495d4b693d9a.jpg</url>
      <title>Forem: Afri Schoedon</title>
      <link>https://forem.com/5chdn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/5chdn"/>
    <language>en</language>
    <item>
      <title>Ethereum node configuration modes cheat sheet</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Sat, 05 Jan 2019 22:33:32 +0000</pubDate>
      <link>https://forem.com/5chdn/ethereum-node-configuration-modes-cheat-sheet-25l8</link>
      <guid>https://forem.com/5chdn/ethereum-node-configuration-modes-cheat-sheet-25l8</guid>
      <description>&lt;p&gt;This document is a quick cheat sheet of most common &lt;code&gt;geth&lt;/code&gt; and &lt;code&gt;parity&lt;/code&gt; configurations explained — usually, everything you need to know running an Ethereum node.&lt;/p&gt;

&lt;h1&gt;
  
  
  Light nodes
&lt;/h1&gt;

&lt;p&gt;Light clients only store the header chain and request everything else on-demand from the network. They can verify the validity of the data against the state roots in the block headers.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ geth --syncmode light&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes block headers for a light client with the Ethereum network using the &lt;a href="https://wiki.parity.io/Light-Ethereum-Subprotocol-(LES)"&gt;Light Ethereum Subprotocol (LES)&lt;/a&gt; starting at a trusted checkpoint inserted by the developers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO [01-05|22:42:27.103] Added trusted checkpoint                 chain=mainnet block=6848511 hash=5e9f76…d9d6ac
WARN [01-05|22:42:27.123] Light client mode is an experimental feature 
INFO [01-05|22:43:13.912] Block synchronisation started 
INFO [01-05|22:43:40.953] Updated latest header based on CHT       number=6848511 hash=5e9f76…d9d6ac age=4w9h38m
INFO [01-05|22:44:01.569] Imported new block headers               count=192 elapsed=2.386s number=6848703 hash=2e78ec…851f48 age=4w8h54m
INFO [01-05|22:44:08.962] Imported new block headers               count=192 elapsed=341.059ms number=6848895 hash=4b8c89…d6b233 age=4w8h5m
INFO [01-05|22:44:12.912] Imported new block headers               count=192 elapsed=392.806ms number=6849087 hash=1b80b2…8515b4 age=4w7h15m
INFO [01-05|22:44:42.234] Imported new block headers               count=192 elapsed=379.507ms number=6849279 hash=ef9c20…605416 age=4w6h29m
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Note, how it inserts the trusted checkpoint and imports remaining headers afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ parity --light&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes block headers for a light client with the Ethereum network using the &lt;a href="https://wiki.parity.io/The-Parity-Light-Protocol-(PIP)"&gt;Parity Light Protocol (PIP)&lt;/a&gt; starting at a trusted checkpoint inserted by the developers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2019-01-05 22:46:08  Running in experimental Light Client mode.
2019-01-05 22:46:08  Inserting hardcoded block #6692865 in chain
2019-01-05 22:46:08  Debug API is not available in light client mode.
2019-01-05 22:46:23  Syncing #6692865 0xa988…8132     0.0 hdr/s      0+    0 Qed   2/50 peers   664 bytes cache 0 bytes queue  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 22:47:59  Syncing #6693604 0x10bc…90fd   147.8 hdr/s    535+    0 Qed   4/50 peers   480 KiB cache 404 KiB queue  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 22:48:09  Syncing #6698114 0x1b74…9c97   451.0 hdr/s    122+    0 Qed   3/50 peers   3 MiB cache 95 KiB queue  RPC:  0 conn,    0 req/s,    0 µs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Note, how it inserts a hardcoded block and synchronizes remaining headers subsequently.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ parity --light --no-hardcoded-sync&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes block headers for a light client with the Ethereum network using the Parity Light Protocol (PIP) starting at genesis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2019-01-05 22:48:17  Running in experimental Light Client mode.
2019-01-05 22:48:17  Debug API is not available in light client mode.
2019-01-05 22:48:17  Public node URL: enode://4959d0273c8b7410ce46a47907c52c64c32cd4fca4ce3bfbb62c1f9d2d52a64d37d94b5a9e00e61fc218af482b6e04ea2c5d21480a0a079e15077020e4870590@192.168.1.110:30303
2019-01-05 22:48:27  Syncing       #0 0xd4e5…8fa3     0.0 hdr/s      0+    0 Qed   1/50 peers   0 bytes cache 0 bytes queue  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 22:48:37  Syncing    #3356 0x4f82…dbf7   335.6 hdr/s    223+    0 Qed   2/50 peers   2 MiB cache 172 KiB queue  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 22:48:42  Syncing    #5977 0x8339…9045   524.2 hdr/s    160+    0 Qed   2/50 peers   4 MiB cache 126 KiB queue  RPC:  0 conn,    0 req/s,    0 µs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Note, how it synchronizes headers starting at &lt;code&gt;#0&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Full nodes
&lt;/h1&gt;

&lt;p&gt;Full nodes have the full blockchain data available on disk and can serve the network with any data on request.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ geth&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The default mode.&lt;/strong&gt; Synchronizes a full node doing a &lt;a href="https://ethereum.stackexchange.com/questions/1161/what-is-geths-fast-sync-and-why-is-it-faster"&gt;&lt;em&gt;fast&lt;/em&gt; synchronization&lt;/a&gt; by downloading the entire state database, requesting the headers first, and filling in block bodies and receipts afterward.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO [01-05|22:56:41.759] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184 age=49y8mo3w
INFO [01-05|22:56:41.759] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184 age=49y8mo3w
INFO [01-05|22:56:41.759] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184 age=49y8mo3w
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Once the fast sync reached the best block of the Ethereum network, it switches to a full sync mode (see below).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ geth --syncmode full&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes a full node starting at genesis verifying all blocks and executing all transactions. This mode is a bit slower than the &lt;em&gt;fast&lt;/em&gt; sync mode but comes with increased security.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ parity&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The default mode.&lt;/strong&gt; Synchronizes a full Ethereum node using &lt;a href="https://ethereum.stackexchange.com/questions/9991/what-is-paritys-warp-sync-and-why-is-it-faster-than-geth-fast"&gt;&lt;em&gt;warp&lt;/em&gt; synchronization&lt;/a&gt; mode by downloading a snapshot of the &lt;code&gt;30_000&lt;/code&gt; best blocks and the latest state database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2019-01-05 23:00:33  Syncing snapshot 0/2577        #0    4/25 peers   8 KiB chain 3 MiB db 0 bytes queue 11 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 23:00:43  Syncing snapshot 2/2577        #0    7/25 peers   8 KiB chain 3 MiB db 0 bytes queue 11 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 23:00:48  Syncing snapshot 3/2577        #0    9/25 peers   8 KiB chain 3 MiB db 0 bytes queue 11 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Once the snapshot is restored, the client switches to full sync and ancient blocks are synchronized from the network in background, denoted by yellow block numbers in the logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ parity --no-warp&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes a full node starting at genesis verifying all blocks and executing all transactions. This mode is a bit slower than the &lt;em&gt;warp&lt;/em&gt; sync mode but comes with increased security.&lt;/p&gt;

&lt;h1&gt;
  
  
  Archive nodes
&lt;/h1&gt;

&lt;p&gt;In addition to the chain data which is kept by all full nodes, it is possible to build an archive of historical states.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ geth --syncmode full --gcmode archive&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes an archive node starting at genesis, thoroughly verifying all blocks, executing all transactions, and writing all intermediate states to disk ("archive").&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO [01-05|23:04:54.981] Imported new chain segment               blocks=2 txs=0 mgas=0.000 elapsed=741.138ms mgasps=0.000 number=2 hash=b495a1…4698c9 age=3y5mo3w  cache=0.00B
INFO [01-05|23:04:56.475] Imported new chain segment               blocks=4 txs=0 mgas=0.000 elapsed=27.599ms  mgasps=0.000 number=6 hash=1f1aed…6b326e age=3y5mo3w  cache=0.00B
INFO [01-05|23:05:03.616] Imported new chain segment               blocks=86 txs=0 mgas=0.000 elapsed=206.526ms mgasps=0.000 number=92 hash=c86dcb…f8b64c age=3y5mo3w  cache=0.00B
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In Geth, this is called &lt;code&gt;gcmode&lt;/code&gt; which refers to the concept of &lt;a href="https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)"&gt;garbage collection&lt;/a&gt;. Setting it to &lt;code&gt;archive&lt;/code&gt; basically turns it off.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;❯ parity --no-warp --pruning archive&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Synchronizes an archive node starting at genesis, thoroughly verifying all blocks, executing all transactions, and writing all intermediate states to disk ("archive").&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2019-01-05 23:03:21  State DB configuration: archive
2019-01-05 23:03:21  Warning: Warp Sync is disabled because of non-default pruning mode.
2019-01-05 23:03:31  Syncing    #1689 0x3c91…2cea   169.80 blk/s    0.0 tx/s    0 Mgas/s   4019+    0 Qed     #5715    9/25 peers   2 MiB chain 51 KiB db 7 MiB queue 7 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 23:03:41  Syncing    #6422 0x750c…dc88   473.30 blk/s    0.0 tx/s    0 Mgas/s   6270+    0 Qed    #12700   12/25 peers   5 MiB chain 120 KiB db 10 MiB queue 12 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-01-05 23:03:51  Syncing   #11293 0x576c…7163   487.20 blk/s    0.0 tx/s    0 Mgas/s  13332+    0 Qed    #24638   19/25 peers   7 MiB chain 166 KiB db 20 MiB queue 8 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In Parity, this is called &lt;code&gt;pruning&lt;/code&gt; which refers to the concept of &lt;a href="https://ethereum.stackexchange.com/questions/174/what-is-state-trie-pruning-and-how-does-it-work"&gt;state trie pruning&lt;/a&gt;. Setting it to &lt;code&gt;archive&lt;/code&gt; basically turns it off.&lt;/p&gt;




&lt;p&gt;Thanks for reading thus far. That's it basically.&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>pruning</category>
      <category>synchronization</category>
    </item>
    <item>
      <title>The Görli Testnet Initiative Bounties Announcement</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Thu, 22 Nov 2018 18:48:32 +0000</pubDate>
      <link>https://forem.com/5chdn/the-grli-testnet-initiative-bounties-announcement-3gp</link>
      <guid>https://forem.com/5chdn/the-grli-testnet-initiative-bounties-announcement-3gp</guid>
      <description>&lt;p&gt;&lt;em&gt;Update: The bounties have been paid.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The Görli testnet initiative is a development campaign to create the first cross-client proof-of-authority network for Ethereum. There are various testnets available for experimenting with contracts and d-apps before going live on the public chain. However, there is no testnet available that is both widely usable across all clients, and robust enough to guarantee consistent availability and high reliability. This is what Görli tries to be. Read more on the motivation in the previously published &lt;a href="https://dev.to/5chdn/the-grli-testnet-proposal---a-call-for-participation-58pf"&gt;Görli Testnet Proposal&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since the ETHBerlin hackathon, where the idea was born and &lt;a href="https://medium.com/ethberlin/proof-of-transparency-ff31c4911462" rel="noopener noreferrer"&gt;we were disqualified&lt;/a&gt;, we've &lt;a href="https://www.ethnews.com/the-goerli-testnet-has-arrived" rel="noopener noreferrer"&gt;come a long way&lt;/a&gt;, and the current &lt;em&gt;test-testnet&lt;/em&gt; is already supported by four different clients, namely Geth, Pantheon, Nethermind, and Parity Ethereum. Even though the code is not final and not all of these clients are feature-complete yet, they are happily syncing the Görli chain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://asciinema.org/a/212949" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhlikyyi6thhxh3yfc2b.png" alt="Demo" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of members from the Ethereum community are convinced this project is badly needed and &lt;a href="https://gitter.im/goerli/testnet" rel="noopener noreferrer"&gt;joined our Gitter&lt;/a&gt; to help running nodes, &lt;a href="https://blockscout.com/eth/goerli" rel="noopener noreferrer"&gt;block explorers&lt;/a&gt;, and volunteering in many other ways. Look at this; people even Tweet about the project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;These folks are neat!&lt;/em&gt;" --- &lt;a href="https://twitter.com/austingriffith/status/1063898676240748547" rel="noopener noreferrer"&gt;Austin Griffith&lt;/a&gt;, hacker&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;More than being just another testnet, Goerli is proving to be a great environment for collaborative development and cross-team communication and coordination.&lt;/em&gt;" --- &lt;a href="https://twitter.com/egalano/status/1064034649679118336" rel="noopener noreferrer"&gt;E.G. Galano&lt;/a&gt;, infrastructure&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;Is it too early to say I’m a #Goerli testnet maximalist?&lt;/em&gt;" --- &lt;a href="https://twitter.com/MPtherealMVP/status/1064877800413261824" rel="noopener noreferrer"&gt;Maria Paula Fernandez&lt;/a&gt;, mvp&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The feedback we received so far is encouraging, but it does not pay anyone's bills. Therefore, we are thrilled to announce that the Görli initiative received the first &lt;a href="https://medium.com/@pyskell/building-a-better-unified-testnet-3f48490cd4e1" rel="noopener noreferrer"&gt;$DAI 52_200 grant from the ETC Cooperative&lt;/a&gt; and an anonymous &lt;a href="https://etherscan.io/address/0x6974df01bf293ab9af66127c03aac79b81d494c7" rel="noopener noreferrer"&gt;donation of $DAI 10_000&lt;/a&gt; (&lt;a href="https://twitter.com/5chdn/status/1063851317028954112" rel="noopener noreferrer"&gt;who's on the multi-sig?&lt;/a&gt;). The funds available now can be used to help to develop this project with all the tools and infrastructure required.&lt;/p&gt;

&lt;p&gt;The roadmap ahead will include launching two testnets, a fully Constantinople-enabled Görli testnet for Geth, Parity Ethereum, Pantheon, and all the other Ethereum clients; and a Görli Classic testnet for Geth Classic, Parity Ethereum, and Mantis mimicking Ethereum Classic mainnet conditions.&lt;/p&gt;

&lt;p&gt;The first batch of bounties will be announced today, sorted by priority for the cause:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A specification for the Clique POA engine as &lt;a href="https://github.com/ethereum/EIPs/pull/1570" rel="noopener noreferrer"&gt;EIP-225&lt;/a&gt;/&lt;a href="https://github.com/ethereumclassic/ECIPs/pull/7" rel="noopener noreferrer"&gt;ECIP-1048&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 5_000&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xab7327d2096788e01fa42b98b05d2583d2512a178f218f70e252aba68e2014dd" rel="noopener noreferrer"&gt;claimed by @karalabe&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Clique engine written in Rust for &lt;a href="https://github.com/paritytech/parity-ethereum/pull/9981" rel="noopener noreferrer"&gt;Parity Ethereum #9981&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 30_000&lt;/strong&gt; claimable by &lt;a class="mentioned-user" href="https://dev.to/thefallentree"&gt;@thefallentree&lt;/a&gt; and @jwasinger (chunks &lt;a href="https://etherscan.io/tx/0xa3424fbc2eb472a89700b7f276d847fc093a84f199e13f75ffb7bb41152c76ba" rel="noopener noreferrer"&gt;A&lt;/a&gt;, &lt;a href="https://etherscan.io/tx/0x5244da2a481cc43c4816941e91acce6000c4d04cfa98b53d04e6d07b5a007f18" rel="noopener noreferrer"&gt;B&lt;/a&gt;, &lt;a href="https://gitcoin.co/profile/goerli" rel="noopener noreferrer"&gt;Gitcoin&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/goerli/testnet/commit/92383483481d541e90adfb58ea43ea55e5bc4ea3" rel="noopener noreferrer"&gt;Genesis&lt;/a&gt; and &lt;a href="https://github.com/goerli/testnet/commit/f10cee16d46a8db8272f8d4ca46703a949ba110c" rel="noopener noreferrer"&gt;chain specs&lt;/a&gt; for Görli&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0x227e9bb276ef77f0ecd0bace60932bdf3adad4aced80c5a50d1fdff99fbfab3f" rel="noopener noreferrer"&gt;claimed by @5chdn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/goerli/testnet/commit/5fb2226121516baf398b275f01d466cde476915a" rel="noopener noreferrer"&gt;Genesis&lt;/a&gt; and &lt;a href="https://github.com/goerli/testnet/commit/be2b82362103b38c841056954b02f7e737cbdd33" rel="noopener noreferrer"&gt;chain specs&lt;/a&gt; for Kotti (Classic)&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xed6f9fa97e2b6a24efadc1a120fadee9172a3c0efb6683209f03bf6f8a589af6" rel="noopener noreferrer"&gt;claimed by @5chdn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Görli in &lt;a href="https://github.com/ethereum/go-ethereum/pull/18121" rel="noopener noreferrer"&gt;Geth #18121&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0x3026a899de41c5de9dcec7584bba23bc62c01bade3da5b57db9df047cfad5ee5" rel="noopener noreferrer"&gt;claimed by @karalabe&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Kotti (Classic) in &lt;a href="https://github.com/ethoxy/multi-geth/pull/17" rel="noopener noreferrer"&gt;Multi Geth #17&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xe99cd5ee49ffaad0eadee7da77da1d3562b0e9e76cf2cb59a1e8ac31aaaefa13" rel="noopener noreferrer"&gt;claimed by @5chdn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Görli in &lt;a href="https://github.com/goerli/parity-goerli/pull/10" rel="noopener noreferrer"&gt;Parity Clique #10&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xcf7b4639be806dd14d105f8ef9b462578274478f3afb9a358940b2f82e5200c2" rel="noopener noreferrer"&gt;claimed by @5chdn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Kotti (Classic) in &lt;a href="https://github.com/goerli/parity-goerli/pull/45" rel="noopener noreferrer"&gt;Parity Clique #45&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xa7baa4840c1eea897d4e9535ceffe0cca7d58598ecd1f5526edd8548d706f09c" rel="noopener noreferrer"&gt;claimed by @5chdn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Görli in &lt;a href="https://github.com/PegaSysEng/pantheon/pull/370" rel="noopener noreferrer"&gt;Pantheon #370&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0xd756941ee9e3f0068ce6a859568e02eeb2fb0236e2a5f5df534d1c914ae95bb6" rel="noopener noreferrer"&gt;claimed by @Nashatyrev&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native support for Görli in &lt;a href="https://github.com/NethermindEth/nethermind/pull/234" rel="noopener noreferrer"&gt;Nethermind #234&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 2_500&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0x70db693e6bcb7d84397c60599eb62e661baa1d07e34566bcd1c03f93839c37e2" rel="noopener noreferrer"&gt;claimed by @tkstanczak&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A one-way throttled bridge faucet from &lt;a href="https://bridge.goerli.com/" rel="noopener noreferrer"&gt;Ropsten, Kovan, and Rinkeby&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;$DAI 5_000&lt;/strong&gt; &lt;a href="https://etherscan.io/tx/0x70804ddbdc678525258fe52159c0c0456fe82f0b53f434d3fd63cfa2c31a5c38" rel="noopener noreferrer"&gt;claimed by @ChainSafe&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But why are some bounties already assigned to developers before this announcement was published, you might be wondering? It's simply because people were so excited about the Görli testnet initiative that they started working on it without asking for permission; without knowing we already planned to have these bounties available in future. This is the rare instance where we have more developers than funding available.&lt;/p&gt;

&lt;p&gt;Hopefully, more bounties will be available and announced as soon as more grants are available. Our &lt;a href="https://github.com/goerli/testnet/issues" rel="noopener noreferrer"&gt;wishlist of projects and tools is sheer endless&lt;/a&gt;. Open tasks that are claimable will be available on Gitcoin once the Parity Ethereum Clique engine is merged upstream, which is the primary blocker for all other tasks, and the Görli testnet is ready to relaunch with network ID &lt;code&gt;0x5&lt;/code&gt; to replace Ropsten.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>testnet</category>
      <category>bounties</category>
    </item>
    <item>
      <title>The Görli Testnet Proposal - A Call for Participation.</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Thu, 13 Sep 2018 09:38:22 +0000</pubDate>
      <link>https://forem.com/5chdn/the-grli-testnet-proposal---a-call-for-participation-58pf</link>
      <guid>https://forem.com/5chdn/the-grli-testnet-proposal---a-call-for-participation-58pf</guid>
      <description>&lt;p&gt;There are many Ethereum testnets available for experimenting with smart contracts and deploying decentralised applications before going live on the main Ethereum network. However, there is no testnet available that is both widely usable across all client implementations, and robust enough to guarantee consistent availability and high reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Existing Public Testnets
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Olympic&lt;/strong&gt; used to be the chain "&lt;code&gt;0&lt;/code&gt;", the public Ethereum testnet prior to the public Frontier launch of the Ethereum main network. The Ethereum genesis block was templated &lt;a href="https://blog.ethereum.org/2015/07/27/final-steps/"&gt;based on block #1028201&lt;/a&gt; of the Olympic network. This network was retired soon after the Frontier launch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Morden&lt;/strong&gt; was introduced as the new public proof-of-work testnet which was launched with the Frontier release of the Ethereum public main network. The Ethereum community abandoned it due to &lt;a href="https://blog.ethereum.org/2016/11/20/from-morden-to-ropsten/"&gt;issues with the Spurious Dragon testing&lt;/a&gt; efforts. However, it is still used by the Ethereum Classic community, also known as &lt;em&gt;Morden Classic&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ropsten&lt;/strong&gt; was the last public proof-of-work testnet and as of today, the last testnet that is available across different client implementations. It's the network with specifications closest to the Ethereum main network. It is mostly abandoned due to stability issues but still kept alive as this is the only way to test contracts and dapps on both Geth and Parity Ethereum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kovan&lt;/strong&gt; is the first proof-of-authority testnet launched as a response to the &lt;a href="https://ethereum.stackexchange.com/questions/12477/ropsten-testnet-is-under-kind-of-attack-what-can-we-do"&gt;Ropsten spam attacks&lt;/a&gt;. A consortium of &lt;a href="https://medium.com/@Digix/announcing-kovan-a-stable-ethereum-public-testnet-10ac7cb6c85f"&gt;developers and service providers stepped up&lt;/a&gt; to utilise Parity's &lt;em&gt;Aura&lt;/em&gt; proof-of-authority engine to run a testnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rinkeby&lt;/strong&gt; was the second proof-of-authority network, also launched in response to the Ropsten spam attacks. However, instead of Aura, it's using Geth's &lt;em&gt;Clique&lt;/em&gt; proof-of-authority engine &lt;a href="https://github.com/ethereum/EIPs/issues/225"&gt;which differs in its specification&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many other public Ethereum testnets with various specifications are available, i.e., the &lt;strong&gt;Sokol&lt;/strong&gt; testnet, however, none of them are available across different clients while also being highly available and robust.&lt;/p&gt;

&lt;p&gt;As of today, only Geth implemented Clique and only Parity Ethereum implemented Aura. To run a cross-client testnet, users have to rely on the Ropsten proof-of-work network. However, proof-of-work mining on networks bearing no value is hard to be incentivised and the resulting low hash rates enable potential attackers to take over the network easily.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Görli Testnet Proposal
&lt;/h3&gt;

&lt;p&gt;Now, that EIP-1011, the &lt;em&gt;hybrid Casper&lt;/em&gt; proof-of-work/proof-of-stake testnet idea &lt;a href="https://medium.com/@VidrihMarko/roadmap-change-at-ethereum-sharding-and-casper-at-the-same-time-745f0587ae10"&gt;has been abandoned&lt;/a&gt; by latest Ethereum research, &lt;strong&gt;Görli&lt;/strong&gt; could be the next-generation public Ethereum test network.&lt;/p&gt;

&lt;p&gt;We hereby propose,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;sufficiently specifying a proof-of-authority engine, such as Aura or Clique, in an EIP,&lt;/li&gt;
&lt;li&gt;to implement one or multiple of these engines across different clients, such as Geth and Parity Ethereum,&lt;/li&gt;
&lt;li&gt;and to bootstrap a new simplistic &lt;strong&gt;Görli&lt;/strong&gt; proof-of-authority testnet based on the available implementations that mimics main network conditions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Outlook and Roadmap
&lt;/h3&gt;

&lt;p&gt;The &lt;em&gt;ChainSafe&lt;/em&gt; team started working on an Aura port to Geth &lt;a href="https://twitter.com/ETHBerlin/status/1038803516511473664"&gt;at the #ETHBerlin hackathon&lt;/a&gt; and &lt;a href="https://medium.com/@aidanhyman/chainsafe-systems-g%C3%B6rlitestnet-2583fa13107e"&gt;suggests also porting Clique to Parity Ethereum&lt;/a&gt;. This is not a political proposal to favour one technology over another; it's rather the desire to enable developers with as many diverse tools as possible.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/goerli/eips-aura-spec/blob/master/EIPS/eip-aura.md"&gt;Aura EIP&lt;/a&gt; is being drafted on Github. What's missing is details on the Aura chain-score rules, how the seals are composed, and how finality works. Currently, Aidan and myself are working on the EIP with the help of the Parity Ethereum team.&lt;/p&gt;

&lt;p&gt;A basic Aura engine is prepared in &lt;a href="https://github.com/goerli/go-ethereum-aura"&gt;this repository on Github&lt;/a&gt;. While the work on the integration of the engine and the testnet configuration is done, significant amounts of work still have to be done in the actual implementation of the Aura consensus mechanism. Currently, Elizabeth, David, Dustin, and Tim are working on this but would appreciate help from engineers more confident with writing consensus-critical code in the Go-Ethereum code-base.&lt;/p&gt;

&lt;p&gt;Parity Ethereum supports Aura by default, a &lt;a href="https://github.com/goerli/testnet/blob/master/parity/goerli.json"&gt;working chain-spec for a pre-testnet is available here&lt;/a&gt;. Two &lt;a href="http://ethstats.goerli.ethberl.in:3000"&gt;validator nodes and bootnodes are prepared&lt;/a&gt; to enable seamless integration with Geth nodes.&lt;/p&gt;

&lt;h3&gt;
  
  
  All hands on deck!
&lt;/h3&gt;

&lt;p&gt;There's still a lot to be done. Here's how you can help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Join the chat on Gitter: &lt;a href="https://gitter.im/goerli/testnet"&gt;gitter.im/goerli/testnet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Run a node: &lt;a href="https://github.com/goerli/testnet"&gt;github.com/goerli/testnet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Report to the dashboard: &lt;a href="http://ethstats.goerli.ethberl.in:3000"&gt;ethstats.goerli.ethberl.in&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Help with the Aura spec: &lt;a href="https://github.com/goerli/eips-aura-spec/blob/master/EIPS/eip-aura.md"&gt;eip-aura.md&lt;/a&gt;, &lt;a href="https://gitter.im/goerli/eip-aura"&gt;gitter.im/goerli/eip-aura&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Help with the Go implementation: &lt;a href="https://github.com/goerli/go-ethereum-aura/tree/aura-dev"&gt;go-ethereum-aura/tree/aura-dev&lt;/a&gt;, &lt;a href="https://gitter.im/goerli/geth-aura"&gt;gitter.im/goerli/geth-aura&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Acknowledgements
&lt;/h3&gt;

&lt;p&gt;Thanks to MP and the &lt;a href="https://ethberlin.com"&gt;#ETHBerlin&lt;/a&gt; team for hosting us at the most amazing hackathon in the world.&lt;/p&gt;

&lt;p&gt;Thanks to Tomasz, André, and Thibaut from &lt;a href="https://paritytech.io/ethereum/"&gt;Parity Ethereum&lt;/a&gt; helping with analysing the Authority Round specification.&lt;/p&gt;

&lt;p&gt;Thanks to Martin from the &lt;a href="https://ethereum.org/"&gt;Ethereum Foundation&lt;/a&gt; for helping us with the Golang implementation and debugging our code all night.&lt;/p&gt;

&lt;p&gt;Thanks to Kirill and Parity Ethereum to provide us with a node Dashboard.&lt;/p&gt;

&lt;p&gt;Thanks to Aidan and the &lt;a href="https://chainsafe.io/"&gt;ChainSafe&lt;/a&gt; team to kick this off.&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>testnet</category>
      <category>blockchain</category>
      <category>proposal</category>
    </item>
    <item>
      <title>The Ethereum-blockchain size will not exceed 1TB anytime soon.</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Wed, 29 Nov 2017 11:08:11 +0000</pubDate>
      <link>https://forem.com/5chdn/the-ethereum-blockchain-size-will-not-exceed-1tb-anytime-soon-58a</link>
      <guid>https://forem.com/5chdn/the-ethereum-blockchain-size-will-not-exceed-1tb-anytime-soon-58a</guid>
      <description>&lt;p&gt;&lt;em&gt;Before diving into this article, please read the two disclosures about my involvement (1,2) and the one on data accuracy (3) at the bottom of the article.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At least once a month someone posts a &lt;a href="http://bc.daniel.net.nz/" rel="noopener noreferrer"&gt;chart&lt;/a&gt; on &lt;a href="https://reddit.com/r/ethereum" rel="noopener noreferrer"&gt;r/ethereum&lt;/a&gt; predicting the blockchain size of Ethereum will soon exceed 1 TB. I want to take that chance to clean up with some stories around the Ethereum-blockchain size in this article and try to explain why this chart is technically correct, but not the full picture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0inh7iggt4igyeqg02t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0inh7iggt4igyeqg02t.png" alt="Some chart" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's have a look at this chart first. It shows the complete data directory size of an Ethereum node (red), &lt;a href="https://github.com/ethereum/go-ethereum/" rel="noopener noreferrer"&gt;Geth&lt;/a&gt; in this case, and a Bitcoin node (blue), probably &lt;a href="https://github.com/bitcoin/bitcoin" rel="noopener noreferrer"&gt;Bitcoin-Core&lt;/a&gt;, plotted over time. While the Bitcoin graph is moving slightly upwards in a seemingly linear inclination, the Ethereum graph reminds the reader of an exponential growing slope.&lt;/p&gt;

&lt;h3&gt;
  
  
  On Blocks, Block-History, States, and State-History
&lt;/h3&gt;

&lt;p&gt;Users accusing Ethereum of &lt;em&gt;blockchain-bloat&lt;/em&gt; are not far off with their assumptions. But actually, not the chain is bloated but the Ethereum &lt;em&gt;state&lt;/em&gt;. I want to examine some terminology from the &lt;a href="https://github.com/ethereum/wiki/wiki/White-Paper" rel="noopener noreferrer"&gt;Whitepaper&lt;/a&gt; before proceeding. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block&lt;/strong&gt;. A bundle of transactions which, after proper execution, update the state. Each transaction-bundling block gets a number, has some difficulty, and contains the most recent state. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;. The state is made up of all initialized Ethereum accounts. At the time of writing, there are around 12 million known accounts and contracts growing at a rate of &lt;a href="https://etherscan.io/chart/address" rel="noopener noreferrer"&gt;roughly 100k new accounts per day&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block-History&lt;/strong&gt;. A chain of all historical blocks, starting at the &lt;em&gt;genesis&lt;/em&gt; block up to the latest best block, also known as the &lt;em&gt;blockchain&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State-History&lt;/strong&gt;. The state of each historical block makes up the state history. I will get into the details on this later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this already bores you, now please, read on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Pruning-Modes and Sync-Modes
&lt;/h3&gt;

&lt;p&gt;Early 2016, the Go-Ethereum team introduced a so-called &lt;em&gt;&lt;a href="https://ethereum.stackexchange.com/q/1161/87" rel="noopener noreferrer"&gt;fast&lt;/a&gt;&lt;/em&gt; synchronization mode. Since then, it was pretty famous to run &lt;code&gt;geth --fast&lt;/code&gt;, especially after the &lt;a href="https://blog.ethereum.org/2016/09/22/transaction-spam-attack-next-steps/" rel="noopener noreferrer"&gt;spam-attacks&lt;/a&gt; on Ethereum later the same year making a &lt;em&gt;full&lt;/em&gt; synchronization mode painful. I'm writing these modes &lt;em&gt;italic&lt;/em&gt; because I will come back to an essential disambiguation at a later point in this article. Just keep them in mind for now.&lt;/p&gt;

&lt;p&gt;The Parity team (formerly Ethcore) reacted to the on-chain spam by offering a &lt;em&gt;&lt;a href="https://ethereum.stackexchange.com/q/9991/87" rel="noopener noreferrer"&gt;warp&lt;/a&gt;&lt;/em&gt; synchronization mode at the end of 2016 to ease the chain synchronization for new users. Much as the same as Geth's &lt;em&gt;fast&lt;/em&gt;, &lt;code&gt;parity --warp&lt;/code&gt; soon became the de-facto standard mode for users trying to synchronize the Ethereum chain. As of today, both these options are adapted as default in both clients.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;what does it mean to &lt;em&gt;fast&lt;/em&gt;-sync&lt;/strong&gt; versus &lt;em&gt;full&lt;/em&gt;-sync a Geth node? &lt;strong&gt;What does it actually mean to &lt;em&gt;warp&lt;/em&gt;-sync&lt;/strong&gt; a Parity node rather than &lt;em&gt;no-warp&lt;/em&gt;-syncing it?&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;full&lt;/em&gt; Geth node processes the entire blockchain and replays all transactions that ever happened. A &lt;em&gt;fast&lt;/em&gt; Geth node downloads all transaction receipts in parallel to all blocks, and the most recent state database. It switches to a &lt;em&gt;full&lt;/em&gt; synchronization mode once done with that. Note, that this results not only in a &lt;em&gt;fast&lt;/em&gt; sync but also in a &lt;em&gt;pruned&lt;/em&gt; state-database because the historical states are not available for blocks smaller than best block minus 1024. That's not an issue, but before reading on, please keep in mind that Geth synchronization modes are also pruning modes. &lt;/p&gt;

&lt;p&gt;Looking at Parity configuration options, this gets more complex. In addition to the previously mentioned synchronization modes, Parity also offers separate &lt;em&gt;pruning&lt;/em&gt; modes, namely &lt;em&gt;fast&lt;/em&gt; and &lt;em&gt;archive&lt;/em&gt;... Right, Geth &lt;em&gt;fast&lt;/em&gt; is a sync-mode, we learned, that even prunes, however, Parity &lt;em&gt;fast&lt;/em&gt; is pruning mode not heavily coupled to the sync mode. At this point, I have to admit, the terminology is confusing, and I might have lost you already. Let's draw something with pen and paper.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte2u6ldxibvsvxc8xxjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte2u6ldxibvsvxc8xxjw.png" alt="Pen and paper." width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Geth's &lt;em&gt;fast&lt;/em&gt; enables a quicker synchronization and database pruning. Geth &lt;em&gt;full&lt;/em&gt; disables both. &lt;strong&gt;Parity &lt;em&gt;warp&lt;/em&gt;, however, can be disabled without disabling the state-trie pruning!&lt;/strong&gt; This is a significant sentence. Thus I &lt;strong&gt;bolded&lt;/strong&gt; it. And I am not comparing Ethereum clients here, that's not my intention at least. &lt;strong&gt;I want to show you that it is possible to run a full-verifying Ethereum node with a small database.&lt;/strong&gt; Parity just provides the proof-of-concept for this.&lt;/p&gt;

&lt;p&gt;But why is this? Because as long as you have all historic blocks on your disk, you can compute any historical state from it by reprocessing the entire chain again. But in most use-cases, you don't need historical states at all! Therefore it is smart just to delete outdated entries from the state history and to reduce your required disk space by 95%.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what's the minimum Size of a full-verified Node?
&lt;/h3&gt;

&lt;p&gt;Some 10's of GB by just running &lt;code&gt;parity --no-warp&lt;/code&gt;. Earlier this fall it was less than &lt;strong&gt;20 GB&lt;/strong&gt;, but the state is growing very fast. Currently, the raw historical block data containing the blocks and transactions is approximately 12-15GB in size and the latest state around 1-2GB. &lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;is this to be considered a &lt;em&gt;full&lt;/em&gt; Ethereum node&lt;/strong&gt;? Yes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It runs a full blockchain synchronization starting at &lt;em&gt;genesis&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;It replays all transactions and executes all contracts.&lt;/li&gt;
&lt;li&gt;It recomputes the state for each block.&lt;/li&gt;
&lt;li&gt;It keeps all historical blocks on the disk.&lt;/li&gt;
&lt;li&gt;It keeps the most recent states on the disk and prunes ancient states.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Something an Ethereum client never does is deleting old blocks. This is a significant difference between Bitcoin and Ethereum because &lt;em&gt;pruning&lt;/em&gt; a Bitcoin node does not leave any choice but &lt;a href="https://bitcoin.stackexchange.com/a/37497/6441" rel="noopener noreferrer"&gt;removing old blocks&lt;/a&gt;. With this context available, it's easier to understand why users often think a pruned Ethereum node is not a full node. But now, dear reader, you know the opposite is &lt;code&gt;true&lt;/code&gt;. :)&lt;/p&gt;

&lt;p&gt;And on top of this, even a &lt;em&gt;warp&lt;/em&gt;-synced Parity node is downloading the whole history of blocks after the initial synchronization allowing it to serve the network as a &lt;em&gt;full&lt;/em&gt; node once completed the ancient-block synchronization.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Full Picture: 9 Parity Configurations compared
&lt;/h3&gt;

&lt;p&gt;Below is a screenshot of my nicely-colored spreadsheet trying to distinguish between node-security of different Parity operation modes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsmo90x65eepq31fbfda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsmo90x65eepq31fbfda.png" alt="The full picture." width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The configurations &lt;code&gt;00&lt;/code&gt; through &lt;code&gt;05&lt;/code&gt; are all to be considered &lt;em&gt;full&lt;/em&gt; nodes. Configuration &lt;code&gt;06&lt;/code&gt; is a default-configuration &lt;em&gt;warp&lt;/em&gt;-node which can be regarded as &lt;em&gt;full&lt;/em&gt; once the ancient block download is finished. However, it does not replay all transactions; it only checks the Proof-of-Work of the historical blocks.&lt;/p&gt;




&lt;p&gt;The configuration &lt;code&gt;07&lt;/code&gt; is something &lt;a href="https://ethereum.stackexchange.com/a/31848/87" rel="noopener noreferrer"&gt;users often ask for&lt;/a&gt; but should be highly discouraged in production use. This setting is comparable to a pruned bitcoin node as historical blocks are partially not available. This is &lt;em&gt;not&lt;/em&gt; a full node anymore. Note, how I added a separator above this paragraph. You get the idea.&lt;/p&gt;

&lt;p&gt;Configuration &lt;code&gt;08&lt;/code&gt; is a light client, but that's worth another blog article. Thanks for scrolling this far down, here is your conclusion: An Ethereum full node does not require more than 20-30 GB disk space by default. :)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Noteworthy disclosures and bottom-line comments.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(1) I work for Parity. I'm comparing different Parity configurations not only because I sincerely know and understand them, but also because Parity allows users to configure pruning mode and synchronization mode separately.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(2) I hold some Bitcoin and some Ether. I hope this does not have any influence on the technical aspects I'm outlining in this article. Also, I'm trying not to become overly political about this.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(2) I have been running Parity in 36 different configurations over six weeks to gather the numbers. This is time- and resource-consuming, and still, it bears the issue that I can not keep all configurations running at the same time, and therefore, the accuracy of the numbers presented in this article have to be consumed with caution. I expect the results to differ up to plus/minus 20% from other nodes running the same configuration. But you &lt;a href="https://ethereum.stackexchange.com/a/31195" rel="noopener noreferrer"&gt;get the idea&lt;/a&gt;:&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| ID | Pruning / DB Config | Verification    | Available History          | ETH        | ETC        | MSC        | EXP        | Parity CLI Options                         |
|====|=====================|=================|============================|============|============|============|============|============================================|
| 00 | archive +Fat +Trace | Full/No-Warp    | All Blocks + States        | 385     GB |  90     GB |  25     GB |   5.6   GB | --pruning archive --tracing on --fat-db on |
| 01 | archive +Trace      | Full/No-Warp    | All Blocks + States        | 334     GB |  90     GB |  21     GB |   5.8   GB | --pruning archive --tracing on             |
| 02 | archive             | Full/No-Warp    | All Blocks + States        | 326     GB |  91     GB |  30     GB |   5.5   GB | --pruning archive                          |
| 03 | fast +Fat +Trace    | Full/No-Warp    | All Blocks + Recent States |  37     GB |  13     GB |   3.5   GB |   1.3   GB | --tracing on --fat-db on                   |
| 04 | fast +Trace         | Full/No-Warp    | All Blocks + Recent States |  34     GB |  13     GB |   3.5   GB |   1.2   GB | --tracing on                               |
| 05 | fast                | Full/No-Warp    | All Blocks + Recent States |  26     GB |   9.7   GB |   3.0   GB |   1.1   GB | --no-warp                                  |
| 06 | fast +Warp          | PoW-Only/Warp   | All Blocks + Recent States |  25     GB |   9.6   GB |   2.6   GB |   0.96  GB |                                            |
| 07 | fast +Warp -Ancient | No-Ancient/Warp | Recent Blocks + States     |   5.3   GB |   2.9   GB |   0.19  GB |   0.13  GB | --no-ancient-blocks                        |
| 08 | light               | Headers/Light   | No Blocks + No State       |       5 MB |       3 MB |       4 MB |       5 MB | --light                                    |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Meta-data:&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Version: Parity/v1.8.0-unstable-7940bf6ec-20170921/x86_64-linux-gnu/rustc1.19.0 from source w/ musicoin support
Ubuntu: 17.04 Kernel 4.10.0-35-generic / September 2017 / Lenovo Thinkpad X270, Core i7-7600U, 1TB SSD, 16GB RAM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Thanks for scrolling to the bottom.&lt;/em&gt; &amp;lt;3&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: Thanks for featuring me on &lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt; and &lt;a href="https://twitter.com/ThePracticalDev/status/935967812987817984" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;. Users who enjoyed reading this article, might also find the following &lt;a href="https://www.reddit.com/r/ethereum/comments/7gcheo/the_ethereumblockchain_size_will_not_exceed_1tb/" rel="noopener noreferrer"&gt;reddit discussion&lt;/a&gt; interesting.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fun fact&lt;/em&gt;: While publishing this article, the price of Bitcoin broke 10_000 USD and Ethereum 500 USD. I think I will add current market prices to my articles in future, just for fun.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: Thanks for rating this &lt;a href="https://dev.to/thepracticaldev/the-7-most-popular-dev-posts-from-the-past-week-egg-6e71"&gt;top-1 post&lt;/a&gt;, dear dev.to team &amp;lt;3 &amp;lt;3 &amp;lt;3&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: Here is a more controversial discussion on &lt;a href="https://news.ycombinator.com/item?id=15935342" rel="noopener noreferrer"&gt;Hackernews&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>parity</category>
      <category>blockchain</category>
      <category>bitcoin</category>
    </item>
    <item>
      <title>Solving the problem with Ethereum cross-client private networks</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Fri, 01 Sep 2017 13:05:34 +0000</pubDate>
      <link>https://forem.com/5chdn/solving-the-problem-with-ethereum-cross-client-private-networks</link>
      <guid>https://forem.com/5chdn/solving-the-problem-with-ethereum-cross-client-private-networks</guid>
      <description>&lt;p&gt;This post was initially an answer on &lt;a href="https://ethereum.stackexchange.com/a/25640"&gt;Ethereum Stack Exchange&lt;/a&gt;, but it was worth more exposure as I keep talking to people running into this problem again and again. And, it's a very time-consuming issue to get a &lt;a href="https://github.com/ethereum/go-ethereum/wiki/geth"&gt;Geth&lt;/a&gt; node talking to a custom &lt;a href="https://github.com/paritytech/parity/wiki"&gt;Parity&lt;/a&gt; network, and often also vice-versa. &lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-client private networks: The problem
&lt;/h3&gt;

&lt;p&gt;Geth is a client written &lt;em&gt;for&lt;/em&gt; &lt;a href="https://ethereum.org/"&gt;Ethereum&lt;/a&gt;. It was one of the first official reference implementations and was never meant to run anything else but Ethereum. If you want to configure Geth for any other chain configuration, you would have to fork the source-code and create your own client implementation based on your desired rule-set. This happened for instance for Expanse (&lt;a href="https://github.com/expanse-org/go-expanse"&gt;Gexp&lt;/a&gt;) and Ethereum Classic (&lt;a href="https://github.com/ethereumproject/go-ethereum"&gt;Getc&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Parity, however, was created much later than Ethereum itself, by a team that was initially involved with the C++ Ethereum client (&lt;a href="https://github.com/ethereum/cpp-ethereum"&gt;Eth&lt;/a&gt;). After they (Gavin Wood, et al.) founded Ethcore (now &lt;a href="https://parity.io/"&gt;Parity Technologies&lt;/a&gt;), they created a client with a much broader vision; a client that is not supposed to only run Ethereum. &lt;/p&gt;

&lt;p&gt;Parity allows more abstraction in the core and therefore, all you need to start a new chain is a so called &lt;em&gt;Chain Specification&lt;/em&gt; file which describes the whole chain parameters, including consensus rules, validator engines, and so on. The most visible consequence is that Ethereum, Ethereum Classic, and Expanse (just to pick up the examples form above) do not need to maintain their own copy of the Parity source-code in order to support their project and their consensus rules. Parity just works out of the box with the &lt;code&gt;--chain&lt;/code&gt; parameters &lt;code&gt;foundation&lt;/code&gt;, &lt;code&gt;classic&lt;/code&gt;, or &lt;code&gt;expanse&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In addition, the &lt;code&gt;--chain&lt;/code&gt; parameter allows configuring an &lt;a href="https://github.com/paritytech/parity/wiki/Chain-specification"&gt;entirely custom chain&lt;/a&gt; with pluggable consenus, custom transitions, and the validator engine you prefer.&lt;/p&gt;

&lt;p&gt;In contrast, Geth only allows to specify a &lt;em&gt;custom Genesis&lt;/em&gt; which is only one piece of the puzzle for a complete chain specification. And therefore you will have trouble to connect a Geth node to a custom network of Parity nodes. However, you basically have two options to run a custom cross-client network with both Geth and Parity nodes, explained below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best-practice: "Geth First"
&lt;/h3&gt;

&lt;p&gt;Now, since you have less chain configuration options in Geth than in Parity, I'll call the most obvious idea "Geth First". You chose a network ID and create a &lt;a href="https://github.com/ethereum/go-ethereum/wiki/Private-network#creating-the-genesis-block"&gt;custom Genesis&lt;/a&gt;, and initialize your new network with:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;geth init geth-genesis.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can fire up a miner thread and a couple more Geth nodes at this point to verify the network is doing exactly what you need. &lt;/p&gt;

&lt;p&gt;Now, you can start integrating Parity nodes. There is a tiny rust tool &lt;a href="https://github.com/keorn/parity-spec"&gt;keorn/parity-spec&lt;/a&gt; that converts your custom Geth genesis file into a full Parity chain specification file.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo run -- geth-genesis.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can pass the output &lt;code&gt;parity-spec.json&lt;/code&gt; directly to your Parity node with the &lt;code&gt;--chain&lt;/code&gt; parameter. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;parity --chain parity-spec.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;For discovery, you can use &lt;a href="https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network#static-nodes"&gt;Geth's &lt;code&gt;admin.addPeer()&lt;/code&gt; commands&lt;/a&gt; or &lt;a href="https://ethereum.stackexchange.com/q/12928"&gt;Parity's &lt;code&gt;--reserved-peers&lt;/code&gt; functionality&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, both Geth and Parity are actively developed code-bases and the converter tool is prone to bugs and often users report generated chain-specification files are still leading to consensus issues. If this happens to you frequently, check out the other option below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best-practice: "Ropsten Revived - Revived"
&lt;/h3&gt;

&lt;p&gt;The probably most stable and most obvious option to run a private network compatible with Geth, Parity, and all the other clients out there, is something I would call "Ropsten Revived - Revived".&lt;/p&gt;

&lt;p&gt;Just take a known, working network that is supported by all clients, like the &lt;a href="https://github.com/ethereum/ropsten/blob/master/revival.md"&gt;Ropsten public testnet&lt;/a&gt;, and slightly modify it. To ease this process, I created presets for both the Geth Genesis and the Parity Chain Specification at &lt;a href="https://github.com/5chdn/crossclient-chainspec"&gt;5chdn/crossclient-chainsepc&lt;/a&gt;. It contains a &lt;code&gt;geth.json&lt;/code&gt; and a &lt;code&gt;parity.json&lt;/code&gt; mimicking a Ropsten revival with different network ID 1337 (&lt;code&gt;0x539&lt;/code&gt;).&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Geth

geth init --datadir ~/.ethereum/crossclient geth.json
geth --datadir ~/.ethereum/crossclient --networkid 1337 --port 31333 --rpcport 8538

# Parity

parity --chain parity.json --port 31337 --jsonrpc-port 8539
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The downside of this is probably the unsatisfied desire to add more complex modifications to your custom private development network. However, the predefined genesis and chain-spec offer a good starting point to get you bootstrapped with whatever network you have in mind.&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>geth</category>
      <category>parity</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>AAWWWGS! Android Apps Which Work Without Google Services!</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Thu, 16 Mar 2017 21:50:05 +0000</pubDate>
      <link>https://forem.com/5chdn/aawwwgs-android-apps-which-work-without-google-services</link>
      <guid>https://forem.com/5chdn/aawwwgs-android-apps-which-work-without-google-services</guid>
      <description>&lt;p&gt;I try to keep my device disconnected from Google by running a custom ROM without any Google services. Here is my experience and a list with apps which work great without Google.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set and Setting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Device: LG Google (sic!) Nexus 5 (hammerhead)&lt;/li&gt;
&lt;li&gt;System: LineageOS 14.1 (Android N 7.1.1)&lt;/li&gt;
&lt;li&gt;Bootloader: factory-m4b30z (HHZ20h), latest, &lt;em&gt;locked&lt;/em&gt;, and safe boot enabled &lt;/li&gt;
&lt;li&gt;Recovery: factory-m4b30z, latest, and (un)fortunately dysfunctional in this setup&lt;/li&gt;
&lt;li&gt;Miscellaneous: rooted with addonsu-arm from LineageOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Nexus 5 is a widely used smartphone from 2013. It has a huge community and one could say, &lt;em&gt;a lot of fans&lt;/em&gt;. That are very fortunate circumstances, paired with the fact that the Google Nexus devices used to be very good in quality, security, and software support.&lt;/p&gt;

&lt;p&gt;However, the official support ended in October 2016, and the last factory image was Android 6.0.1 in December 2016. Thus, I use a custom ROM and was always very satisfied with CyanogenMod (now LineageOS) both in terms of stability and functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  App store(s)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Primary app store: F-Droid&lt;/li&gt;
&lt;li&gt;Secondary app store: Yalp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due to the fact that I don't flash any Google services, I also end up without the Google Play app store. That's very &lt;em&gt;inconvenient&lt;/em&gt; for most users, and I will not exclude myself here, because a liberated phone is &lt;em&gt;nice&lt;/em&gt; but it's really annoying if you can not even use some of the standard apps you are usually used to.&lt;/p&gt;

&lt;p&gt;Now, I use F-Droid, the open source Android app store. It contains basically everything you need to stuff your phone with apps for everything one could desire. But that's not enough for me, because I need some apps which are (unfortunately) only available in Google play with much better experience than the open source equivalents.&lt;/p&gt;

&lt;p&gt;Thus, it happened that I use F-Droid for only one single application: The Yalp store! Yalp is a Google Play wrapper, which allows you to search apps, download and install them, and keep track of available updates... directly from Google Play! This is the end of problematic APK-mirror sites which do not offer any evidence that the downloaded Android Packages are full of mal-, spy- or phishware.&lt;/p&gt;

&lt;h3&gt;
  
  
  AAWWWGS! Here's the actual list:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Adobe, everything I tried so far&lt;/li&gt;
&lt;li&gt;Firefox, of course&lt;/li&gt;
&lt;li&gt;Lastpass&lt;/li&gt;
&lt;li&gt;Periscope&lt;/li&gt;
&lt;li&gt;Signal, &lt;em&gt;new&lt;/em&gt; on that list, now works without GCM!&lt;/li&gt;
&lt;li&gt;Syncthing&lt;/li&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Twitter, can't live without the official app&lt;/li&gt;
&lt;li&gt;VLC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's worth to maintain such a list because a lot of apps rely on Google Services which really shouldn't need to (e.g., Snapchat, Facebook, Instagram, Pinterest). Anything important missing? Please, let me know!&lt;/p&gt;

</description>
      <category>android</category>
      <category>lineageos</category>
      <category>fdroid</category>
      <category>yalp</category>
    </item>
    <item>
      <title>Hi, this is 5chdn</title>
      <dc:creator>Afri Schoedon</dc:creator>
      <pubDate>Wed, 22 Feb 2017 20:25:30 +0000</pubDate>
      <link>https://forem.com/5chdn/hi-this-is-5chdn</link>
      <guid>https://forem.com/5chdn/hi-this-is-5chdn</guid>
      <description>&lt;p&gt;I have been coding for 1337 years.&lt;/p&gt;

&lt;p&gt;You can find me on Twitter as &lt;a href="https://twitter.com/5chdn" rel="noopener noreferrer"&gt;@5chdn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in Berlin.&lt;/p&gt;

&lt;p&gt;I work for my family.&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: Ruby, Shell.&lt;/p&gt;

&lt;p&gt;I am currently learning more about myself.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
      <category>hello</category>
      <category>world</category>
    </item>
  </channel>
</rss>
