avatarCinto

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

3786

Abstract

arison operators, and bitwise operators on this type too.</p><p id="c4da">It’s important to note that there is another type, called <code>bytes</code> which is different from the above in that it is a dynamically sized array, and not a value type but a reference type. It is basically shorthand for <code>byte[]</code>.</p><p id="ad39">When you can limit the length of your data to a predefined amount of bytes, it is always good practice to use some of <code>bytes1</code> to <code>bytes32</code> because it is much cheaper.</p><h2 id="0118">Enums</h2><p id="aea7"><b>Enums</b> in Solidity are a way to create user-defined types. Enums are explicitly convertible to integer types, but not implicitly. Enum values are numbered in the order they are defined, starting from 0.</p><p id="ed00">Enums are not part of the ABI (Application Binary Interface — more on this in a later lesson, but it’s basically how you encode Solidity code for the Ethereum Virtual Machine, and how you get data back). This means that if your function returns an <code>enum</code> for example, it will be automatically converted to a <code>uint8</code> behind the scenes. The integer returned is just large enough to hold all enum values. With more values, the size gets increased too (<code>uint16</code> and up).</p><p id="cdb6">The below code, taken from the <a href="https://docs.soliditylang.org/en/v0.4.24/index.html">Solidity docs</a>, defines an enum with four possible values, creates a variable of that enum named <code>choice</code> and a constant called <code>defaultChoice</code>that will hold a default value.</p><div id="cf29"><pre><span class="hljs-keyword">enum</span> <span class="hljs-title class_">ActionChoices</span> { GoLeft, GoRight, GoStraight, SitStill } ActionChoices choice; ActionChoices <span class="hljs-type">constant</span> <span class="hljs-variable">defaultChoice</span> <span class="hljs-operator">=</span> ActionChoices.GoStraight;</pre></div><p id="66a9">Now we can define some functions to interact with our <code>enum</code>.</p><div id="c0bb"><pre><span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">setGoStraight</span></span>() <span class="hljs-keyword">public</span> { choice = ActionChoices.GoStraight; }

<span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">setChoice</span></span>(ActionChoices <span class="hljs-keyword">new</span><span class="hljs-type">Choice</span>) <span class="hljs-keyword">public</span> { choice = <span class="hljs-keyword">new</span><span class="hljs-type">Choice</span>; }</pre></div><p id="6bc2">The first one simply sets the <code>choice</code> to <code>GoStraight</code> while the second one sets it to the choice that the caller passes into the function. As we can see after deployment, the <code>setChoice</code> function expects a <code>uint8</code> value, which corresponds to the <code>enum</code> value declared at that number.</p><figure id="e997"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*1pKNPVy4UUBCSLi2-SIckg.png"><figcaption>Testing enums in Remix</figcaption></figure><p id="7917">If we want to get the value of <code>choice</code> and <code>defaultChoice</code>, we can define the following functions:</p><div id="1f02"><pre><span class="hljs-keyword">function</span> <span class="hljs-title">getChoice</span>() public view returns (ActionChoices) { <span class="hljs-keyword">return</span> <span class="hljs-type">choice</span>; }</pre></div><div id="43e7"><pre><span class="hljs-function">function <span class="hljs-title">getDefaultChoice</span>() <span class="hljs-keyword">public</span> pure <span class="hljs-title">returns</span> (<span class="hljs-params"><span class=

Options

"hljs-built_in">uint</span></span>)</span> { <span class="hljs-keyword">return</span> <span class="hljs-built_in">uint</span>(defaultChoice); }</pre></div><p id="c2f2">As we can see if we try this out in Remix, the first function returns a <code>uint8</code> while the second returns a <code>uint256</code>.</p><figure id="e514"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*jmaOFb9GhXz7FWC4ONMa_A.png"><figcaption>Testing enums in Remix</figcaption></figure><h2 id="3c7c">Fixed point numbers</h2><p id="2ecc"><b>Fixed point numbers </b>represent fractional numbers by storing a fixed number of digits of their fractional part. No matter how large or small the fractional part is, it will always use the same number of bits.</p><p id="cdcd" type="7">Fixed point numbers are not fully supported by Solidity yet. They can be declared, but cannot be assigned to or from.</p><p id="f872">We can differentiate between signed fixed point numbers, declared with the <code>fixed</code> keyword, and unsigned fixed point numbers, declared with the <code>ufixed</code> keyword.</p><p id="3c1c">It can also be declared as <code>fixedMxN</code> or <code>ufixedMxN</code> where <code>M</code> represents the number of bits the type takes, and <code>N</code> represents the number of decimal points. <code>M</code> has to be divisible by 8 and a number between 8 and 256. <code>N</code> has to be a number between 0 and 80.</p><p id="96e1">They function with the following operators:</p><ul><li>Comparisons: <code><=</code>, <code><</code>, <code>==</code>, <code>!=</code>, <code>>=</code>, <code>></code> (evaluate to <code>bool</code>)</li><li>Arithmetic operators: <code>+</code>, <code>-</code>, unary <code>-</code>, unary <code>+</code>, <code>*</code>, <code>/</code>, <code>%</code> (remainder)</li></ul><h2 id="09b7">Conclusion</h2><p id="bd3a">In this lesson, we looked at what value types are available in Solidity and how each one works.</p><p id="28de">Thank you for staying with us till the end. If you enjoyed reading this piece please keep in touch and follow Solidify to keep up with our lessons on Solidity. In the upcoming articles, we will deep dive into the intricacies of the language, progressing from beginner to advanced level.</p><p id="067c">If you are new to Solidity, check out the previous lessons about setting up a local development environment and writing your first smart contract.</p><div id="6b76" class="link-block"> <a href="https://readmedium.com/how-to-setup-your-local-solidity-development-environment-c4c8195810f3"> <div> <div> <h2>How to Setup Your Local Solidity Development Environment</h2> <div><h3>Get started with smart contract development</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*HHko-o9m1sVngmTeRVYgKA.jpeg)"></div> </div> </div> </a> </div><div id="3ad1" class="link-block"> <a href="https://readmedium.com/lesson-1-your-first-solidity-smart-contract-1ba7e641f9a3"> <div> <div> <h2>Lesson 1: Your First Solidity Smart Contract</h2> <div><h3>In the previous lesson, we looked at how to set up your local Solidity development environment. Here we will continue…</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*7r7HSYkbn73NrmR_skvh5w.jpeg)"></div> </div> </div> </a> </div></article></body>

4 Types of People You Encounter on Facebook Medium Groups

If you laugh while reading this, you are not paying them respect

Photo by Glen Carrie on Unsplash

After a few flop articles, I joined a lot of Facebook groups. Special thanks to the influencers who said these wonderful words to me

Join Medium groups on Facebook

in their top 5 things to do to earn triple-digit every month.

But it was an eye-opener for me. I rate my enlightenment only second to Gautam Buddha’s. Although my articles still flop, I met a lot of different folks and personalities. And I have nothing but respect and admiration for them. I classified these talented folks into the following categories.

The Link Bearers

We all know that The Holy Spirit is the giver of life, but do we know the giver of links. I had the chance to encounter them. I call them “The Link Bearers”

Photo by Andreea Popa on Unsplash

The Link Bearers carry a large heart and are always ready to share their links with you. You can say no, you can run away, but they will share their links with you.

They are always watching you, they always keep an eye on you. And the moment you post anything on Medium groups, they will share their precious possessions with you-their links

A Gentlemen one day posted a question to one of these groups on the new Medium curation logic. He did not even have to wait a second for an answer. But the reply was so much more than he asked for. It was a link. A solitary and charming link. A link on “How to lose weight in 5 days”.

He came with a question, went back with two. Lucky fella.

The New-Gen Barters

The barter system was long gone from our Planet Earth. But these people have brought it right back to you. In the old Barter system, you would barter rice for cotton, or silver for clothes, etc.

But the new-gen barters found a problem with that. What if the barter is not fair. There is no way to figure out if X amount of cotton= Y amount of Rice. Ethical as they are, they could not live with that.

So, they started bartering the same things… WOWZA, The Eureka Moment.

Their taglines are now like

Follow for Follow

Highlight for Highlight

50 claps for 50 claps

They won't post anything else. Just ethical stuff. Moral and ethics are more important to them.

These people are not as generous as the Link Bearer. But they are one damn ethical creation of GOD.

The Super Fast Express

Recently, while reading the latest news, I learned that a supercomputer named Fugaku is the world’s most powerful supercomputer. It had nabbed the number one spot in the Top 500 supercomputers, surpassing Summit, the reigning champion for the past few years.

Any idea why I mentioned this here?

Because there is a new champion now. These are our own “Super Fast Express”. They can read 715 articles at the same time and comment on each one of them. And their comments are short and sweet, and won't exceed three words. That's a rule.

Wonderful article

Nice Read

Keep sharing

Some of them also highlight every 200 words. Not more, not less. Remember, it’s a process.

They impart so much love. Imagine spending the full day, researching, and writing a 1000 word article. Then you go to sleep. And you wake up in the morning to this delightful masterpiece of a comment

Nice Read

It just makes my day. I say to myself — “Now I can die happy. I have lived my life”.

The Good For Nothing

Then, we have the least talented of the folks. They read all the articles, provide a meaningful response. They clap if they liked the article, and follow if they appreciate the thought process.

The above 3 groups of talented people make fun of them. I hear them saying

“Look at these guys. We are so much smarter than them”

“They have nothing better to do, they spend so much time reading”

But these people do not change. They just love to read. Sometimes they forget to clap, sometimes they forget to highlight. But they read, they connect.

This is a serious story. Any resemblance to actual persons, living or dead, or actual events is completely intentional. If you are one of the top 3, chances are that you have missed this part. If you are one of the #4, keep reading.

Social Media
Humor
Reading
Fun
Self-awareness
Recommended from ReadMedium