avatarGutbloom

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>

You’re Invited

Tradition dictates that we have one post where I invite you, the writer-readers, to the end-of-the-season metafictional solstice celebration. I thought that this was going to be our fourth party. It turns out that it is only our 3rd, so from here on out we will refer to it as the “5th Annual Septemberfest”. Here are the order of events for the previous four:

If you had clicked on either of those links, which I know you didn’t, you would see that the first Septemberfest was held in August. This year, the date for Septemberfest has been set for October 21st. You may be wondering why, if it is being held in October, don’t we call it “Octoberfest”? Excellent question!

The problem is that if we call it “Octoberfest” a lot of midwesterners will show up in lederhosen and dirndl dresses looking to eat bratwurst and sing Roll Out the Barrels. Sounds good, right? But, if those people show up and you run out of schnitzel, it is a big problem. They get really, really mean. In a second, the party goes from smiles and sunshine and rudy cheeks, to a bunch of drunk blond people screaming at you. If they grab the tiki torches and start demanding justice, many among you will see a metaphor for Charlottesville when, really, the sight of blond people in lederhosen and dirndl dresses carrying torches should invoke Frankenstein. See how politics ruins EVERYTHING????

Here’s Your Ticket

Yes, this year we are going to have a football game. Not football like the “kicking a ball with your foot” game (sorry if you got excited, Tom Mitchell). Grid-Iron football. The kind where one guy lines up behind the center, puts his hands against ass of the bent-over guy, and then grunts audibly until the action starts. That game!

OH, NO. I HATE FOOTBALL. What Kind of Party is This?

Relax. You don’t even have to watch the game. Here is the order of events. There is plenty for everyone:

10:00 PM: Saturday Night. Bonfire and pep-rally in front of the Old Building. Singing the “fight songs” of the Mill. ie:

O positive B negative Blood, blood, blood, blood!

and

We eat red meat! You eat straw. We are the chickadees Caw, Caw, Caw!

Don’t try to think about it We will hurt your brain Post-modern Metafiction Refrain, Refrain, Refrain!

10:00 AM: Coffee, donuts, and xanax. South Lawn.

11:00 AM: Start of the men and women’s soccer games. Both teams are playing the 30+ squads from Port St. Debbie. Europeans and other “elites” should report to the sheep’s meadow to watch the nil-nil bore-a-thons.

11:15: Co-Ed Field hockey game. The Mill’s field hockey team is 27–0 this season thanks to Gretchen “hookie” Mendelssohn and Ed “Bone Breaker” Ostrosky.

11:30: Start of Tailgating. See below for a proper understanding of the word “tailgating”.

12:30: Marching bands and Mascots sing show tunes in the Dell.

1:00: Kickoff, Mushamaguntic Chicadees vs. Port St. Debbie Database Administrators

1:35: Giant piss break. It’s best if we all go at the same time. It’s a good way to get to know the other people at the game.

1:40: Streaking on the field. Participants who write “Golden Quohog Bingo Palace” on their bodies with grease paint will receive a coupon for wet wipes that can be used at the post-game pig roast.

2:15?: Half-time show. The Rockettes! Well, not really the Rockettes. Rather Ms. Dee’s tap dancing classes reprising their “Radio City Tribute Extravaganza!” from the Christmas recital last year. It will be great. The little kids are really cute and the 60+ class can move much better than you think!

3:00: If the Chickadees are winning, this is when we start to taunt the fans from the other side. If our team is losing, we just keep drinking until the question, “Did we win??” seems genuine.

4:00: Post-game pig roast at the boat house.

8:00 PM: Everyone should be passed out or at home out by eight.

Anthems and Knees

We will all take a knee during the singing of the national anthem. Remember, the Mill is in the “Upper United States,” an area geographically and spiritually far above Maine but somehow below Canada. It’s TRADITIONAL for us to take a knee to protest racial injustice whenever our anthem, “Violence Rules the World,” is played. That said, anyone who wants to walk out after the anthem is welcome to, because we wouldn’t want you to get upset while we continue to kneel during the singing of “Colonialism Was Good for the World” and “Take Your Heathen Hands Off My Cross You Damn, Dirty Pagan” which make up the triptych of patriotic songs we sing before every sporting event.

Tailgating

Nothing dirty. Look, we are aware that Harvey Weinstein’s “Gentleman’s Guide to Personal Care and Hotel Business Meetings” is no longer in favor. When we say “tailgating”, we are talking about the tail of your car. But to tailgate, you have to have a car. Like this:

Yes, my friends. That is a 1977 Ford LTD-II. Eight cylinders of suburban pwnership! With that, you can do this:

Holy shit. That looks like fun. Our tailgate party isn’t going to be bratwursts on the grill beneath one of those pop-up tents that people set up in parking lots nowadays. Our tailgate party is going to be whiskey sours, Russian meat pies, and blackbean soup with sherry in it!

Don’t worry about the fact that there are no people of color in the picture or that those cars get 12 miles to the gallon, #MAGA. Let’s go back to drinking cocktails at midday, hiding our homosexuality, and complaining about Communists, shall we? At least for a day?

The Game Itself

Here is a picture of the 2017 Mushamaguntic Chickadees. The kid in the front with his hands on the pigskin is wearing his sweater upside down… that should be an “M” for Mushamaguntic.

I know some of you are worried about CTE. Don’t. Most of these boys are off to get gassed on the fields of France later this year. Those that make it through will return to the states to work in asbestos factories and smoke cigarettes while they clean their tools with Naptha.

Hope to see you there!

Humor
Dreck
The Mill
Recommended from ReadMedium