<?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>0ri@N</title>
        <link>https://paragraph.com/@oritwoen</link>
        <description>undefined</description>
        <lastBuildDate>Mon, 22 Jun 2026 22:06:08 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0ri@N</title>
            <url>https://storage.googleapis.com/papyrus_images/ea073e962e84db31ba1b5cfa32cd93cffc6b6819744353849b0228a8a531b478.png</url>
            <link>https://paragraph.com/@oritwoen</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Automation of EGLD hunting in Guarda!]]></title>
            <link>https://paragraph.com/@oritwoen/automation-of-egld-hunting-in-guarda</link>
            <guid>lTbjFXnnhsyayldOW2TK</guid>
            <pubDate>Fri, 12 Aug 2022 23:59:53 GMT</pubDate>
            <description><![CDATA[Literally a few hours ago I came across a very nice action organized by Guarda. On their platform, they added support for a new blockchain, which is Elrond, and decided to give away 3 ELGDs for simply finding boxes and solving puzzles. So I took action of course. I have a problem solving puzzles so I started to wonder how I can automate the process so that everything is done for me. Many people will think that this is quite a complication and exaggerated. However, I saw an opportunity to lear...]]></description>
            <content:encoded><![CDATA[<p>Literally a few hours ago I came across a very nice action organized by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://grd.to/ref/eo4b">Guarda</a>.</p><p>On their platform, they added support for a new blockchain, which is Elrond, and decided to give away 3 ELGDs for simply finding boxes and solving puzzles.</p><p>So I took action of course. I have a problem solving puzzles so I started to wonder how I can automate the process so that everything is done for me.</p><p>Many people will think that this is quite a complication and exaggerated. However, I saw an opportunity to learn and find a solution that is unique.</p><p><em>If you want, you can look directly at the repository. However, I recommend reading my adventure!</em></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/0ri2N/egldHunter">https://github.com/0ri2N/egldHunter</a></p><h2 id="h-a-small-plan-was-created" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A small plan was created:</h2><ul><li><p>Finding all the puzzles on the website.</p></li><li><p>Checking all possible combinations of a given mnemonic.</p></li><li><p>Generate a private key for each combination.</p></li><li><p>Generating a private address from the key.</p></li><li><p>Checking the address on the blockchain.</p></li></ul><h2 id="h-riddles" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Riddles</h2><h3 id="h-from-that-which-comes-within-itself-it-builds-its-table-on-my-shelf" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">From that which comes within itself, it builds its table on my shelf</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a0d6565be2df7a9440d7fb5d9ff097475884184bd112e8753108a2637c271661.png" alt="know family culture begin bring human foam enter $xxx switch change mirror" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">know family culture begin bring human foam enter $xxx switch change mirror</figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://guarda.com/coins/elrond-wallet/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt">https://guarda.com/coins/elrond-wallet/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt</a></p><h3 id="h-for-the-dwarf-lords-in-their-halls-of-stone" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">_ _ _ _ _ for the Dwarf-lords in their halls of stone</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fba2201fdaa7964a03dd4b52af533ecc35d3ce181b68a58d5d76b1bb33ee8da6.png" alt="purity wire please better mixture antenna betray $xxx dutch hen traffic glow" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">purity wire please better mixture antenna betray $xxx dutch hen traffic glow</figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://guarda.com/buy-elrond/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt">https://guarda.com/buy-elrond/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt</a></p><h3 id="h-shes-a-10-but-needs-a-crypto-top-up-first" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">She&apos;s a 10 but needs a crypto top up first</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ec2b84f909c7e5a4309577c6b1c8fc318c2536a55c6265596e31cb3d17698229.png" alt="battle brave come phone bachelor subway unknown media claw venture check $xxx" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">battle brave come phone bachelor subway unknown media claw venture check $xxx</figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://guarda.com/coins/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt">https://guarda.com/coins/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=egld-hunt</a></p><h2 id="h-coding" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Coding</h2><p>The time has come for coding and automation. It&apos;s 1am but that&apos;s okay. I feel like I have to finish this.</p><h3 id="h-permutations" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Permutations</h3><p>I did some research on GitHub and decided that the <code>bip39</code> library from <code>bitcoinjs</code> was perfect for checking all combinations.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/bitcoinjs/bip39">https://github.com/bitcoinjs/bip39</a></p><pre data-type="codeBlock" text="import bip from &apos;bip39&apos;;

const riddleSolver = (mnemonic) =&gt; {
  bip.wordlists.english.forEach(async (word) =&gt; {
    const mnemonicTest = mnemonic.replace(&apos;$word&apos;, word)
    const mnemonicValid = bip.validateMnemonic(mnemonicTest);
    
    if (mnemonicValid) { 
      ...
    }
  })
}
"><code><span class="hljs-keyword">import</span> <span class="hljs-title">bip</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">'bip39'</span>;

const riddleSolver <span class="hljs-operator">=</span> (mnemonic) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
  bip.wordlists.english.forEach(async (word) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const mnemonicTest <span class="hljs-operator">=</span> mnemonic.replace(<span class="hljs-string">'$word'</span>, word)
    const mnemonicValid <span class="hljs-operator">=</span> bip.validateMnemonic(mnemonicTest);
    
    <span class="hljs-keyword">if</span> (mnemonicValid) { 
      ...
    }
  })
}
</code></pre><p><em>So I created the prototype for the code.</em></p><h3 id="h-keys" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Keys</h3><p>Typically, each blockchain has an <code>SDK</code> in various forms. So I searched the <code>Elrond</code> documentation and found some snippets and a library that I need.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ElrondNetwork/elrond-core-js">https://github.com/ElrondNetwork/elrond-core-js</a></p><p>And then I updated the code to create private keys.</p><pre data-type="codeBlock" text="import bip from &apos;bip39&apos;;
import core from &quot;@elrondnetwork/elrond-core-js&quot;;

const riddleSolver = (mnemonic) =&gt; {
  bip.wordlists.english.forEach(async (word) =&gt; {
    const mnemonicTest = mnemonic.replace(&apos;$word&apos;, word)
    const mnemonicValid = bip.validateMnemonic(mnemonicTest);
    
    if (mnemonicValid) { 
      let account = new core.account();

      await account.loadFromMnemonic(mnemonicTest)

      console.log(word, account.address())
    }
  })
}
"><code><span class="hljs-keyword">import</span> <span class="hljs-title">bip</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">'bip39'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title">core</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"@elrondnetwork/elrond-core-js"</span>;

const riddleSolver <span class="hljs-operator">=</span> (mnemonic) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
  bip.wordlists.english.forEach(async (word) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const mnemonicTest <span class="hljs-operator">=</span> mnemonic.replace(<span class="hljs-string">'$word'</span>, word)
    const mnemonicValid <span class="hljs-operator">=</span> bip.validateMnemonic(mnemonicTest);
    
    <span class="hljs-keyword">if</span> (mnemonicValid) { 
      let account <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> core.account();

      await account.loadFromMnemonic(mnemonicTest)

      console.log(word, account.<span class="hljs-built_in">address</span>())
    }
  })
}
</code></pre><h3 id="h-balance" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Balance</h3><p>The last thing left to do is check if any transactions were made on the given private key. I searched the documentation again and used the available explorer API.</p><p>Of course, I also installed the required library for requests</p><pre data-type="codeBlock" text="import bip from &apos;bip39&apos;;
import core from &quot;@elrondnetwork/elrond-core-js&quot;;

const riddleSolver = (mnemonic) =&gt; {
  bip.wordlists.english.forEach(async (word) =&gt; {
    const mnemonicTest = mnemonic.replace(&apos;$word&apos;, word)
    const mnemonicValid = bip.validateMnemonic(mnemonicTest);
    
    if (mnemonicValid) { 
      let account = new core.account();

      await account.loadFromMnemonic(mnemonicTest)

      const { data } = await $fetch(`https://gateway.elrond.com/address/${account.address()}/transactions`);
  
      console.log(word, account.address(), data.transactions)

      if (data.transactions.length &gt; 0) {
        console.log(`${word} is the answer!`)

        return;
      }
    }
  })
}
"><code><span class="hljs-keyword">import</span> <span class="hljs-title">bip</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">'bip39'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title">core</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"@elrondnetwork/elrond-core-js"</span>;

const riddleSolver <span class="hljs-operator">=</span> (mnemonic) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
  bip.wordlists.english.forEach(async (word) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const mnemonicTest <span class="hljs-operator">=</span> mnemonic.replace(<span class="hljs-string">'$word'</span>, word)
    const mnemonicValid <span class="hljs-operator">=</span> bip.validateMnemonic(mnemonicTest);
    
    <span class="hljs-keyword">if</span> (mnemonicValid) { 
      let account <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> core.account();

      await account.loadFromMnemonic(mnemonicTest)

      const { data } <span class="hljs-operator">=</span> await $fetch(`https:<span class="hljs-comment">//gateway.elrond.com/address/${account.address()}/transactions`);</span>
  
      console.log(word, account.<span class="hljs-built_in">address</span>(), data.transactions)

      <span class="hljs-keyword">if</span> (data.transactions.<span class="hljs-built_in">length</span> <span class="hljs-operator">></span> <span class="hljs-number">0</span>) {
        console.log(`${word} <span class="hljs-keyword">is</span> the answer<span class="hljs-operator">!</span>`)

        <span class="hljs-keyword">return</span>;
      }
    }
  })
}
</code></pre><p>And calling functions</p><pre data-type="codeBlock" text="riddleSolver(&apos;know family culture begin bring human foam enter $word switch change mirror&apos;) // From that which comes within itself, it builds its table on my shelf
"><code><span class="hljs-built_in">riddleSolver</span>('know family culture begin bring human foam enter $word switch change mirror') <span class="hljs-comment">// From that which comes within itself, it builds its table on my shelf</span>
</code></pre><pre data-type="codeBlock" text="riddleSolver(&apos;purity wire please better mixture antenna betray $word dutch hen traffic glow&apos;) // _ _ _ _ _ for the Dwarf-lords in their halls of stone
"><code><span class="hljs-built_in">riddleSolver</span>('purity wire please better mixture antenna betray $word dutch hen traffic glow') <span class="hljs-comment">// _ _ _ _ _ for the Dwarf-lords in their halls of stone</span>
</code></pre><pre data-type="codeBlock" text="riddleSolver(&apos;battle brave come phone bachelor subway unknown media claw venture check $word&apos;) // She&apos;s a 10 but needs a crypto top up first
"><code><span class="hljs-built_in">riddleSolver</span>('battle brave come phone bachelor subway unknown media claw venture check $word') <span class="hljs-comment">// She's a 10 but needs a crypto top up first</span>
</code></pre><h2 id="h-final" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Final</h2><p>The script works beautifully. Everything is as it should be. All the riddles were answered in seconds.</p><p>Unfortunately, someone beat me, and although I solved the puzzles in a quite unique way, at the time of getting the answer the balances on each account were zero.</p><p>Nevertheless, I had a lot of fun doing it and learned some new things.</p><p>Final code 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/b45cea01d435cdefb1fa84dbfe9bfc2864c9e9a4c500f417218a87b26e63ed94.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>And of course it&apos;s also available on GitHub:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/0ri2N/egldHunter">https://github.com/0ri2N/egldHunter</a></p><p><strong><em>Thanks for reading!</em></strong></p>]]></content:encoded>
            <author>oritwoen@newsletter.paragraph.com (0ri@N)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4250dd519b8e0e524d921c9c51d79e61ce9643dbd1f0da58145bd56c499dc1c6.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>