<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>ETHKL</title>
        <link>https://paragraph.com/@ethkl</link>
        <description>Participate in physical and online [meetups](https://www.meetup.com/ethmalaysia/)!</description>
        <lastBuildDate>Thu, 09 Apr 2026 00:48:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>ETHKL</title>
            <url>https://storage.googleapis.com/papyrus_images/b58ae012a7bf7c00d018b879ab97b23780b961d17ecc5982fb456afb6316bdd7.jpg</url>
            <link>https://paragraph.com/@ethkl</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[How to Run a Full ETH Node on Windows]]></title>
            <link>https://paragraph.com/@ethkl/how-to-run-a-full-eth-node-on-windows</link>
            <guid>Qil970zoQ1XBnXFRTets</guid>
            <pubDate>Wed, 07 Sep 2022 15:52:42 GMT</pubDate>
            <description><![CDATA[From soon 🔜, to very soon to now, the Ethereum Merge has finally been estimated to happen on September 16th, a coming-of-age upgrade to transition to Proof of Stake, reducing Ethereum’s energy consumption by ~99%. Running a node now consists of 2 separate software for the execution layer and consensus layer, hence the adorable panda meme.This is a Windows aimed guide, using Geth for execution and Lighthouse as consensus.The Fine PrintAt least according to Ethereum.org : Recommended specifica...]]></description>
            <content:encoded><![CDATA[<p>From soon 🔜, to very soon to <strong>now</strong>, the Ethereum Merge has finally been estimated to happen on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bordel.wtf/">September 16th</a>, a coming-of-age upgrade to transition to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/upgrades/merge/">Proof of Stake</a>, reducing Ethereum’s energy consumption by ~99%.</p><p>Running a node now consists of 2 separate software for the <strong>execution layer</strong> and <strong>consensus layer</strong>, hence the adorable <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/icebearhww/status/1431970802040127498">panda meme.</a></p><blockquote><p>This is a <strong>Windows</strong> aimed guide, using <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/">Geth</a> for execution and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sigp/lighthouse">Lighthouse</a> as consensus.</p></blockquote><h2 id="h-the-fine-print" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Fine Print</h2><p>At least according to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/#requirements">Ethereum.org</a> :</p><p>Recommended specifications</p><ul><li><p>Fast CPU with 4+ cores</p></li><li><p>16 GB+ RAM</p></li><li><p>Fast SSD with 1+TB</p></li><li><p>25+ MBit/s bandwidth</p></li></ul><p>It also goes without saying that there will be some command line involved, so being technical as in having written “<em>hello world</em>” in any language is a nice-have.</p><h2 id="h-housekeeping" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Housekeeping</h2><p>To keep layers and data locations organized, we’ll create a folder named <code>ethereum</code> in any directory such as the C:// drive.</p><p>Inside of it, create 2 folders namely <code>execution</code> and <code>consensus</code>, your final folder structure looks like this.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/241ac3c38b8d2ed6054eccdc0f75d0bfbc1203a6faf03d959f27eb90dc429ae5.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-execution-layer" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Execution Layer</h2><p>Good ol’ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/">Go Ethereum</a> ( Geth ) remains a popular choice, due to extensive documentation and community support.</p><p>Head over to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/downloads/">downloads</a> page, and get the <code>64-bit archive</code> which you can then paste into your <code>execution</code> folder.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c2e98a5c3f0535faa60957b2a1344179856844697648204072d9e1e8453210ac.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Start Geth on mainnet using the following command.</p><pre data-type="codeBlock" text="geth --datadir &quot;C:\ethereum\execution\mainnet&quot; --http --authrpc.jwtsecret jwtsecret
"><code>geth <span class="hljs-operator">-</span><span class="hljs-operator">-</span>datadir <span class="hljs-string">"C:\ethereum\execution\mainnet"</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>http <span class="hljs-operator">-</span><span class="hljs-operator">-</span>authrpc.jwtsecret jwtsecret
</code></pre><p>The flags used are as follows, there is definitely <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/docs/">much more</a> you can nitpick on performance :</p><ul><li><p>--datadir : the location to store chain data, placed in the same folder for easy tracking</p></li><li><p>--http : enable the HTTP server, which can be used for connections to apps such as Metamask</p></li><li><p>--authrpc.jwtsecret : generates a new password file called <code>jwtsecret</code> for connecting with the consensus client later</p></li></ul><p>A <em>green hacker matrix</em> starts to fill the command prompt, and as long as you see that you’ve started on <em>“mainnet”</em> and you’re <em>“importing new chain segments”</em>, your node is starting to sync.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d44b324f2335e4c7288fe4a8fee6ec89c462f528893e0530122a77ae0940e5aa.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>You can periodically check its sync status by opening another command prompt and connecting to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/docs/interface/javascript-console">Geth JavaScript</a> console.</p><pre data-type="codeBlock" text="geth attach http://localhost:8545
"><code>geth attach http:<span class="hljs-comment">//localhost:8545</span>
</code></pre><p>You can then run any of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.github.io/execution-apis/api-documentation/">JSON-RPC</a> commands such as to check an address’s ETH balance, get the current block number, or in this case check if your node has synced.</p><pre data-type="codeBlock" text="eth.syncing
"><code>eth.syncing
</code></pre><p>A response of <code>false</code> indicates that your node is in sync, and any other response indicates that you’re still syncing, and how many blocks you have to go.</p><p>In this case, we’re 53,292 blocks away with the <code>currentBlock</code> being 15399219 and the <code>highestBlock</code> being 15452511, referencing <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/">Etherscan</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e826d7e48fb0e42e7bf7c524cc53ed826dd4f5771c1ae51764585d539214b3e2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-consensus-layer" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Consensus Layer</h2><p>The pairing we’ve chosen for consensus would be <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://lighthouse-book.sigmaprime.io/intro.html">Lighthouse</a>, which you can <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sigp/lighthouse/releases">download</a> the <code>x86_64-windows.tar.gz</code> and paste it into your <code>consensus</code> folder.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/52ac9045b2e7736b2a9ec17e93919f788f2b425dff40bc55d8260ecb5cd678eb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Extract the zipped executable using any tool such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.7-zip.org/">7zip</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.win-rar.com">Winrar</a>.</p><p>The connection between the execution and consensus layer nodes are password protected by something called a <code>jwtsecret</code>, which we’ve generated from Geth earlier.</p><p>Copy that file over into your <code>consensus</code> folder, which should leave you with the <code>lighouse.exe</code> application and the <code>jwtsecret</code> file.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7a1668f265c4ebdded4f6d6f734979b30f7a97294b4bca951050d2e3f7d49ca6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Begin syncing your consensus node with the following command.</p><pre data-type="codeBlock" text="lighthouse beacon_node --datadir &quot;C:\ethereum\consensus\mainnet&quot; --http --execution-endpoint http://localhost:8551 --execution-jwt jwtsecret --checkpoint-sync-url &quot;https://beaconstate.ethstaker.cc&quot;
"><code>lighthouse beacon_node <span class="hljs-operator">-</span><span class="hljs-operator">-</span>datadir <span class="hljs-string">"C:\ethereum\consensus\mainnet"</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>http <span class="hljs-operator">-</span><span class="hljs-operator">-</span>execution<span class="hljs-operator">-</span>endpoint http:<span class="hljs-comment">//localhost:8551 --execution-jwt jwtsecret --checkpoint-sync-url "https://beaconstate.ethstaker.cc"</span>
</code></pre><p>An explanation of the flags used :</p><ul><li><p>--datadir : the location to store chain data, similar concept as above</p></li><li><p>--http : enable the HTTP server</p></li><li><p>--execution-endpoint : the password-protected endpoint for your consensus node to connect to the execution node</p></li><li><p>--execution-jwt : the password for the endpoint, it has to be the same across both nodes</p></li><li><p>--checkpoint-sync-url : optionally, perform the initial sync using <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://lighthouse-book.sigmaprime.io/checkpoint-sync.html">checkpoint-sync</a> to a fully synced consensus node such as from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eth-clients.github.io/checkpoint-sync-endpoints/">EthStaker</a>.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dc05c2077c0dd2181af22242019eba1b6714152db6dae09fe678f75c3434b25f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>You can check if your consensus node has synced and all other <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.github.io/beacon-APIs/#/">API methods</a> by opening a new command prompt and using this command.</p><pre data-type="codeBlock" text="curl &quot;http://localhost:5052/lighthouse/syncing&quot;
"><code>curl <span class="hljs-string">"http://localhost:5052/lighthouse/syncing"</span>
</code></pre><p>A message of <code>false</code> indicates that your node has synced, anything other than that such as <code>BackFillSyncing</code> indicates that you are still syncing.</p><p>In this case, using <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@launchpad/checkpoint-sync">checkpoint sync</a> we have the latest block information, and currently backfilling historical blocks, referencing <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://beaconscan.com/">Beaconscan</a>.</p><pre data-type="codeBlock" text="{
   &quot;data&quot;:{
      &quot;BackFillSyncing&quot;:{
         &quot;completed&quot;:2237056,
         &quot;remaining&quot;:2404672
      }
   }
}
"><code><span class="hljs-punctuation">{</span>
   <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span><span class="hljs-punctuation">{</span>
      <span class="hljs-attr">"BackFillSyncing"</span><span class="hljs-punctuation">:</span><span class="hljs-punctuation">{</span>
         <span class="hljs-attr">"completed"</span><span class="hljs-punctuation">:</span><span class="hljs-number">2237056</span><span class="hljs-punctuation">,</span>
         <span class="hljs-attr">"remaining"</span><span class="hljs-punctuation">:</span><span class="hljs-number">2404672</span>
      <span class="hljs-punctuation">}</span>
   <span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre><h2 id="h-wrapping-up" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Wrapping Up</h2><p>Treat yourself to a collection of this post’s NFT if you’ve made it this far!</p><p>Though it may seem daunting to have to manage 2 different clients now, running your own node is the best way to safeguard against <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/TornadoCash/status/1557048526986780677">censorship</a>, protect your <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ethstatus/status/1362439368934359042">privacy</a> and contribute to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/nodetracker">network’s decentralisation</a>.</p><p>As for what comes next you might want to look at ways of using and interacting with your node!</p>]]></content:encoded>
            <author>ethkl@newsletter.paragraph.com (ETHKL)</author>
        </item>
    </channel>
</rss>