<?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>Ian / k0rean_rand0m.eth</title>
        <link>https://paragraph.com/@k0rean-rand0m</link>
        <description>Founder 
@0xOuterCircle

Builder
@WeAreHexHeads, @SafeSouleth

Jedi
@Web3Jedis</description>
        <lastBuildDate>Thu, 30 Jul 2026 23:53: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>Ian / k0rean_rand0m.eth</title>
            <url>https://storage.googleapis.com/papyrus_images/3d05fcc3acb11e789a0089795a4c39223edb2133d22bbba94ab98882e50b05ac.png</url>
            <link>https://paragraph.com/@k0rean-rand0m</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[We Are HexHeads; The idea. The community. The tech.]]></title>
            <link>https://paragraph.com/@k0rean-rand0m/we-are-hexheads-the-idea-the-community-the-tech</link>
            <guid>DXRUxRU2r0y1dBllUoqr</guid>
            <pubDate>Tue, 30 May 2023 17:38:37 GMT</pubDate>
            <description><![CDATA[Links hexheads.io twitter.com/WeAreHexHeads discord.gg/vb2Hs9t2uh opensea.io/collection/we-are-hexheads By k0rean_rand0mThe idea.It all started in the winter of 2023 when I found myself confused with OuterCircle.io design materials. There were user avatars in OuterCircle App, but the question was how to retrieve them for wallets that don’t have ENS Profiles. The simplest solution seems to generate default profile pictures randomly for each address as MetaMask, Zerion, and other services do. T...]]></description>
            <content:encoded><![CDATA[<p><strong>Links</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hexheads.io">hexheads.io</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://twitter.com/WeAreHexHeads">twitter.com/WeAreHexHeads</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://discord.gg/vb2Hs9t2uh">discord.gg/vb2Hs9t2uh</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://opensea.io/collection/we-are-hexheads">opensea.io/collection/we-are-hexheads</a></p><p>By <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://twitter.com/k0rean_rand0m">k0rean_rand0m</a></p><h2 id="h-the-idea" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The idea.</h2><p>It all started in the winter of 2023 when I found myself confused with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://OuterCircle.io">OuterCircle.io</a> design materials. There were user avatars in OuterCircle App, but the question was how to retrieve them for wallets that don’t have ENS Profiles. The simplest solution seems to generate default profile pictures randomly for each address as MetaMask, Zerion, and other services do. The thing is these avatars look like a mess of random pixels which make users identification not so easy. And the ease of identification of wallets without ENS profiles might be crucial in projects built for and around communities.</p><p>That’s how the idea of HexHeads was born. What if we can create a service that will provide nice-looking and recognizable default PFPs for each EVM wallet? Since we’re in Web3 space I also found it pretty fun to add an ability to claim these identicons as NFTs. This initial idea became a foundation for everything else. This article sheds some light on the technical aspect of its implementation and further steps of HexHeads evolution as the hugest Ethereum community ever made.</p><h2 id="h-the-community" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The community.</h2><p><strong>Unifying Web3</strong></p><p>HexHeads aren’t just useless PFPs, first of all, HexHeads is the hugest Web3 community. It unifies everyone who has a wallet: developers, traders, and all the new-world enthusiasts. The community is made to support good-quality Web3 projects bringing them all together in one space. These projects will have an access to a wide and engaged audience and HexHeads NFT holders will receive unique perks from each of them.</p><p><strong>Prime HexHeads</strong></p><p>By default, all HexHeads have an “Observer“ role, but soon mysterious “Upgrade“ packs will be deployed. This NFT has an interesting idea behind it. First of all, “Upgrades“ might be burnt to receive “Prime“ HexHeads. 1 Upgrade = 1 Level. The burner will also receive a new NFT with the same traits, but in the separate “Prime“ collection in exchange for the “Observer“ one which will be burnt during the first upgrade.</p><p>“Upgrades” has a pretty interesting minting mechanism. These NFTs are paid, but the price will constantly grow with each mint. The largest amount will go to HexHeads treasury, and the rest will be used to continue maintaining the project by the core team. “Upgrades“ might not be used straight away - anyone will be able to trade them on secondary markets, so there will be a lot of opportunities for those who prefers flipping NFTs and trading.</p><p><strong>HexHeads DAO</strong></p><p>Those who will upgrade their HexHeads to “Prime“ will become HexHeads DAO members with voting power equals to their “Prime“ level. The DAO will manage everything including which projects to invite to our fam and what the perks should be for HH holders. At some point in time, the DAO might even invest in promising startups, earn from advertisements, produce merchandise and host events. That’s when HexHeads will become a brand. The DAO will be structured and well-managed in the way organizations should operate. It won’t present a random gathering and everyone will be heard, so get ready to be engaged.</p><p><strong>How to be prepared?</strong></p><p>Currently, everyone joining our Discord gets an “Early Bird“ role. This role will give you a chance to mint a free “Upgrade“. Also, the owners of extremely rare “Foil“ HexHeads which might be minted by each 5’000’000’000th address will get that chance too. Other activities will be handled, so don’t miss the news.</p><p><strong>Further steps</strong></p><p>For now, we’ve discussed partnerships with several really cool projects and we’ll present them really soon. The team is working on “Upgrades“ and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://outercircle.io">OuterCircle.io</a> which will become HexHeads’ DAO engine. Also, we’re preparing a lot of fun stuff for the holders: soon you’ll be able to rename your HexHead, change some items, choose your PFP if you own several HexHeads, play with a truly unique skin in Worldwide Webb, and much more. Stay tuned, propose your ideas and become unique!</p><h2 id="h-the-tech" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The tech.</h2><p>First of all, PiiiXL prepared 7 layers of hand-drawn 32x32 pixelated traits, 1398 in total, which allowed us to generate 824’171’925’948’334’080 of unique NFTs. More than enough since currently there are around 230’000’000 unique (active at some point in time) addresses in the network.</p><p>The next step is generation. It’s obvious that this process should occur in real-time because pre-rendering and storing 824 quadrillions of images are almost impossible technically. We wanted to provide an open API endpoint for any project to display HexHeads PFPs for wallets, so we deployed a service that is accessible by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://api.hexheads.io">api.hexheads.io</a>. It will also play its role in the next chapters of HexHeads history later.</p><p>The algorithm is pretty simple at a glance: 40-symbol EVM address is separated into 10 parts and each of them represents a trait. The last 4 symbols of the address stand for “seed“ which is used to mix traits.</p><p>Each trait (including colors) is calculated in this way:</p><pre data-type="codeBlock" text="seed, _ := strconv.ParseUint(hexId[36:40], 16, 64)
for i := 0; i &lt; 9; i++ {
  value, err := strconv.ParseUint(address[i*4:i*4+4], 16, 64)
  traits[i] = int64((value + seed) % traitsCount[i])
}
"><code>seed, <span class="hljs-keyword">_</span> :<span class="hljs-operator">=</span> strconv.ParseUint(hexId[<span class="hljs-number">36</span>:<span class="hljs-number">40</span>], <span class="hljs-number">16</span>, <span class="hljs-number">64</span>)
<span class="hljs-keyword">for</span> i :<span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">9</span>; i<span class="hljs-operator">+</span><span class="hljs-operator">+</span> {
  value, err :<span class="hljs-operator">=</span> strconv.ParseUint(<span class="hljs-keyword">address</span>[i<span class="hljs-operator">*</span><span class="hljs-number">4</span>:i<span class="hljs-operator">*</span><span class="hljs-number">4</span><span class="hljs-operator">+</span><span class="hljs-number">4</span>], <span class="hljs-number">16</span>, <span class="hljs-number">64</span>)
  traits[i] <span class="hljs-operator">=</span> <span class="hljs-keyword">int64</span>((value <span class="hljs-operator">+</span> seed) <span class="hljs-operator">%</span> traitsCount[i])
}
</code></pre><p>Some of the traits are excluded from the resulting set following these rules:</p><pre data-type="codeBlock" text="// 11% without hair
if seed%9 == 0 {
  traits[6] = -1
}

// 25% without hat
if seed%4 == 0 {
  traits[7] = -1
}

// 90% without extra
if seed%10 != 0 {
  traits[8] = -1
}
"><code><span class="hljs-comment">// 11% without hair</span>
<span class="hljs-keyword">if</span> seed<span class="hljs-operator">%</span><span class="hljs-number">9</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> {
  traits[<span class="hljs-number">6</span>] <span class="hljs-operator">=</span> <span class="hljs-number">-1</span>
}

<span class="hljs-comment">// 25% without hat</span>
<span class="hljs-keyword">if</span> seed<span class="hljs-operator">%</span><span class="hljs-number">4</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> {
  traits[<span class="hljs-number">7</span>] <span class="hljs-operator">=</span> <span class="hljs-number">-1</span>
}

<span class="hljs-comment">// 90% without extra</span>
<span class="hljs-keyword">if</span> seed<span class="hljs-operator">%</span><span class="hljs-number">10</span> <span class="hljs-operator">!</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> {
  traits[<span class="hljs-number">8</span>] <span class="hljs-operator">=</span> <span class="hljs-number">-1</span>
}
</code></pre><p>”Foil” HexHeads are the rarest ones and occur 1 for every 5’000’000’000th address. So 0x0000000000000000000000000000000000000000 has “Foil” HexHead and the next one is owned by 0x000000000000000000000000000000012a05f200.</p><pre data-type="codeBlock" text="id, _ := (&amp;big.Int{}).SetString(hexId, 16)
if id.Rem(id, big.NewInt(5000000000)).Cmp(big.NewInt(0)) == 0 {
  traits[9] = 1
} else {
  traits[9] = 0
}
"><code>id, <span class="hljs-keyword">_</span> :<span class="hljs-operator">=</span> (<span class="hljs-operator">&#x26;</span>big.Int{}).SetString(hexId, <span class="hljs-number">16</span>)
<span class="hljs-keyword">if</span> id.Rem(id, big.NewInt(<span class="hljs-number">5000000000</span>)).Cmp(big.NewInt(<span class="hljs-number">0</span>)) <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> {
  traits[<span class="hljs-number">9</span>] <span class="hljs-operator">=</span> <span class="hljs-number">1</span>
} <span class="hljs-keyword">else</span> {
  traits[<span class="hljs-number">9</span>] <span class="hljs-operator">=</span> <span class="hljs-number">0</span>
}
</code></pre><p>The last piece of this puzzle is an ERC-721 smart contract which is pretty simple and allows one to claim one HexHead NFT which is related to the address of a claimer. It also has a burn(uint256 id) function which might be called by an operator. This mechanism will be used in the future with the occurrence of HexHeads Prime collection.</p><p>The contract is deployed in Ethereum Mainnet <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://etherscan.io/token/0xdbe2c24981881ce94dbdf92e035d0f0c40033061">etherscan.io/token/0xdbe2c24981881ce94dbdf92e035d0f0c40033061</a></p>]]></content:encoded>
            <author>k0rean-rand0m@newsletter.paragraph.com (Ian / k0rean_rand0m.eth)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/5ddec7410e3e72f2ddbdba33ec25fd5d58560262ace0c4d6d6c65d66885d7c73.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[CrowdApp Milestone II]]></title>
            <link>https://paragraph.com/@k0rean-rand0m/crowdapp-milestone-ii</link>
            <guid>7NQq6OEwDThQxEuKGL7W</guid>
            <pubDate>Wed, 15 Jun 2022 14:01:13 GMT</pubDate>
            <description><![CDATA[CrowdApp - an application for a collective purchase and managing of NFTsFind updates in Twitter: twitter.com/0xCrowd Some backstage: twitter.com/k0rean_rand0m Check out dev-build at: rinkeby.crowd.ooo Note: it works "as it is" cuz it&apos;s a DEV build for internal testing now So, during the last intense milestone we…Made a full backend refactoring to micro-service architecture and moved it to Golang 💙 which allows us to test it better and expect better speed, scalability and reliability. Th...]]></description>
            <content:encoded><![CDATA[<h3 id="h-crowdapp-an-application-for-a-collective-purchase-and-managing-of-nfts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">CrowdApp - an application for a collective purchase and managing of NFTs</h3><p>Find updates in Twitter: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xCrowd">twitter.com/0xCrowd</a> Some backstage: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://twitter.com/k0rean_rand0m">twitter.com/k0rean_rand0m</a> Check out dev-build at: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rinkeby.crowd.ooo">rinkeby.crowd.ooo</a> <em>Note:</em> <em>it works &quot;as it is&quot; cuz it&apos;s a </em><strong><em>DEV</em></strong><em> build for internal testing now</em></p><p><strong>So, during the last intense milestone we…</strong></p><ol><li><p>Made a full backend refactoring to micro-service architecture and moved it to Golang 💙 which allows us to test it better and expect better speed, scalability and reliability. That&apos;s what allows us now to run the service in Mainnet and sleep calm.</p></li><li><p>Finished all Crowds (crowd-investing) functionality. Users can now crowdinvest in NFTs, buyout them, vote for resale and perform it. Everything is automated and works with Rarible Protocol.(if you wondering, you can find my backend Rarible listing code sample here: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/k0rean-rand0m/rarible-serverside">github.com/k0rean-rand0m/rarible-serverside</a>)</p></li></ol><p>During the next milestone we finally going to deploy in Mainnets 💥 First of all, a Polygon release will be delivered. We&apos;re already working on it. Then - the grand launch in Ethereum Mainnet. Also we plan to start integrations with lending protocols, such is ReNFT to provide users more options on how they can get profit from NFT owning.</p><p><em>Stay tuned #WAGMI Ian a.k.a </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/k0rean_rand0m"><em>@k0rean_rand0m</em></a></p>]]></content:encoded>
            <author>k0rean-rand0m@newsletter.paragraph.com (Ian / k0rean_rand0m.eth)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/77576e72e185f77995dbbcca092a63a73283f19e662e68a5f314e8afb32ba871.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>