Welcome back to our discussion of IOTA and tip selection within the IOTA Tangle!  In the first two parts about Tip Selection, we discussed two methods that are…well, less than optimal for the network to operate effectively at scale.  The first method we looked at was the uniform random tip selection (which can also be referred to as the “random walk”).  Next, we looked at the unweighted random walk, taking another step (pun intended) closer to the optimal solution but not quite making it there.  This post is going to cover the weighted random walk and why it is the best way to perform tip selection within the tangle. 

What is IOTA Tip Selection

Let’s take a second to recap what we’ve learned so far.  If you haven’t read what we discussed on tip selection yet, feel free to pause and check out Part 1 and Part 2 to get up to speed with some of what’s going on.  Remember that a tip is simply an unapproved transaction on the tangle.  While IOTA is technically free to use, there’s still no free lunch here:  before a transaction can be finalized in the network, the node placing the transaction must approve two prior transactions (those which have occurred at some point in the past). 

But which transactions should the node approve? 

This has been the basis of our entire discussion as some methods of choosing tips within the network could lead to delays or instability.  Part 1 showed us that randomly choosing any tip on the network could be highly ineffective in allowing the tangle to converge and remain cohesive.  Part 2 introduced the concept of a walk along the tangle – this is quite necessary in producing an effective tangle.  Nevertheless, without a weighting in the paths taken by the node performing an approval, the tangle could become lop-sided with some transactions having many approvals and others having little to no approvals.  What would happen if we extended this concept to include weighting?

Weighted Random Walk

Excellent question!  We already learned about the concept of a random walk in the last post, but what does it mean to add weighting to a random walk?  Before we look at specifics about IOTA, let’s probe this question in a very generic sense.  Pretend that we have three bags of groceries that we need to carry a few blocks back to our apartment.  As the cashier rang up the items, we placed them in the bags we brought.  As one bag got more and more full, we switched to a different bag.  Near the end, we started finding empty spaces in each of the bags that we could stash the last remaining small items. 

As commonplace as it may seem, this is the same concept as performing a weighted selection of which bag to fill.  One bag fills up, so its weight (both logical and physical) increases.  We choose a different bag eventually until the two bags are similar in weight and then proceed to the third bag.  At the end, we examine the appropriateness of each bag for each item to properly store. 

Weighted Selection

While this demonstration wasn’t random in nature, it was weighted. We didn’t choose bag 1 and put our entire load of groceries in it, carrying the other two empty bags home. Instead, there was a rationale behind which bag we chose based on how much it already had within it. Applying this concept to IOTA, as a walk is performed from the genesis transaction out to the tips of the tangle, there is a weighted approach that can be taken.  As one path gets used more and more (i.e., more groceries in the bag), it will have more of a chance of being chosen (which is the reverse of the bag illustration but stick with us). 

It’s important to remember that a different path still can be chosen – this is, in fact, a random selection – but it’s likelihood of being chosen continues to decrease the fewer times it is traversed relative to other paths. 

Lazy Tip

Let’s step back for a second and take another look at why this is so important.  The concept of a lazy tip is of interest.  A lazy tip is one that, instead of choosing to approve transactions near in time to itself, decides to just choose any old transaction from the network at some point in the past.  It’s referred to as lazy because it doesn’t care about what’s going on right now in the network; it chooses the easy way out by quickly finding two transactions, approving them, and moving about its business.  This doesn’t help the network out as more transactions continually enter the tangle and don’t receive proper verification (the more nodes that approve a transaction lend more credence to the transaction and increase the robustness of the tangle). 

Since we want to discourage this behavior, it’s important to find a method to bias the random walk.  The network designers formulated a method to discourage lazy actors on the network by introducing a cumulative weight to each hop in the walk. 

Cumulative Weight

A transaction that has been approved by more nodes on the network is given a higher weight and will be (probabilistically speaking) more likely to be chosen as nodes traverse the network.  Each time another approval is given to the transaction, the higher its weight becomes and the more likely it will continue to be chosen.  What happens to the lazy tip that decided it didn’t have time to contribute properly?  It may take a while before (or if) it ever gets approved.  Because a major “selling point” of IOTA is the quick transaction speed for IoT devices, this is a real disincentive to actors on the network.

Figure 1:  A lazy tip may take a while to get approved.  Image from the official IOTA blog.

Take a look at Figure 1.  Block 16 decided to lazily select block 7 to approve rather than contributing more intelligently.  As a walker is looking for a transaction to approve, it may eventually reach block 7 and be given the choice:  do I want to proceed to block 9, which has a ton of approvals behind it, or do I want to go approve the lone wolf, block 17?  Again, because this choice is random, there still exists a probability that block 17 will be chosen. 

But because the choice is weighted there will be a much better chance that block 9 is chosen instead.  It pays to be a smart contributor!  This is how the network is able to maintain convergence and stability – no one wants their transaction to receive no approvals or take forever, so nodes wisely choose to be a good team member.

Randomness Generation

If that were the end of the story, it would seem that things have wrapped up neatly and effectively.  But…there’s another facet to look at, one that perplexes even the engineers that have built IOTA.  Just how random is random? 

It may seem strange, but there’s a lot to unpack here.  We won’t go too deep into the weeds (since it can get off-topic pretty quickly), but correctly selecting the value for weighted path choice (which is commonly designated by α or the Greek letter ‘alpha’) is highly important to maintaining an effective tangle.  The most effective method involves a value for α somewhere between 0 (which is the same thing as an unweighted random walk like we discussed in the last post) and 1 (which is the exact opposite where the heaviest path is always chosen). 

What would happen if we chose α = 1?  Take a look at Figure 2 below.

Figure 2:  A super-weighted random walk.  Image from the official IOTA blog.

There are a ton of tips leftover that may or may not ever get approved.  What’s more, they are present during the entire duration of the tangle depicted.  It’s common that some tips will exist at the end of the tangle, but for many to exist throughout the network is troublesome. 

With a value of α = 0, we get the same thing as in Part 2 of this series.  There’s no rhyme or reason as to what may happen in the network without a weighted approach to random walking, again leading to possible instabilities or a lack of convergence of transactions. 

Figure 3 is more of what we’re looking for.

Figure 3:  A weighted random walk.  Image from the official IOTA blog.

Tip Selection

Each time a tip needs to approve another transaction, a weighted random walk occurs.  As time goes on, each tip eventually gets folded into the tangle and the process continues ad infinitum.  And they all lived happily ever after.  The End.

Well hopefully you enjoyed our “walk” down the tangle and have gained a better understanding of tip selection.  While at first it may seem like a simple proposal (“just choose any two transactions” you may have thought), we hope that you’ve learned a lot and better appreciate the work that has gone into developing and maintaining a stable network.  Next week, we’re going to uncover more about transaction confirmation and consensus in the network.  Until then, happy reading!

While we are diving in on our IOTA series on the other side of the blog, I wanted to take a step into another digital asset as well. One asset I have strayed away from, but keep hearing about. That project is known as EOS. Besides the interesting marketing schemes we have seen from Brock Pierce one of the hype boys for EOS, the project has plenty of positive attributes. Because of these attributes and my overall lack of knowledge on the entire project, I took aim to learn more.

During my short journey into the EOS project, I found a lot of interesting things out that I had no idea about. In each part of the EOS series I am going to expand upon these topics and talk about the fundamentals of EOS, the history, the DPOS consensus algorithm, and more. Starting off the series, lets take a look at some of the basics of EOS, and discuss things that I found interesting while digging in. This will be the fun post just talking about the project and some interesting facts.

Nothing should be considered investment or financial advice. Enjoy the ride.

Interesting Things About EOS

I will be digging deep into EOS, but for this post I want to take it easy. By that I mean I want to just simply talk about the project in general. For this post we are going to talk about the sentiment around EOS, price movements, where I place the project in my mind, and top this off with some interesting things I found out about the project I did not know.

Taking it easy is the best way for readers and new investors to get a feel for the project. That is just what we aim to do on this series!

In full disclosure, I do not own any EOS. I think I bought 10 tokens at one point, but liquidated them as soon as the project went up to gain more Bitcoin. After this series and learning all there is to know about EOS though, I will be completely honest and let the community know if I decide buy EOS tokens or not! Stick around to find out.

I am always looking to add new amazing projects to my portfolio, but they have to fit into my portfolio. For instance, I probably will not invest in two projects that are aiming to accomplish the same task on the market. That would be like investing in Bitcoin and Bitcoin Cash or investing in Ethereum and NEO back in the day. You really need to choose one project per purpose in my book.

Moving forward, lets start with where I picture EOS to sit in the market. What is EOS purpose?

What Is The Purpose Of EOS

Now this is going to be a mix of my view so far and the view of the creators. The way I see it, EOS is a platform that is being built to be self governed, scalable, and offer smart applications to be built upon it. They goal of EOS is to be able to host all of the worlds transactions, interactions, social media interactions, and trades all on one blockchain solution!

While this sounds great – I see EOS a little bit differently.

All of those things are obtainable goals that the CTO of Block.one, Dan Larimier, is aiming for. He is a brilliant guy. Although, where EOS really shines currently is in the game development category. On top of that, EOS hosts some of the most widely used and adopted decentralized applications across the market, and it has gained the attention of some of the largest game development companies in the world.

With that being said, I clearly see EOS as the future of gaming development, virtual interactions, and VR. Think about it, games are constantly coming out and players have to lose their skills or levels from jumping from game to game starting fresh. What if all of the games were interlinked at a minimum through a general account hosted on the blockchain. On top of that, developers could build upon previous games and set up the current games for futures ones as well. Users could eventually have a virtual reality world hosted on a decentralized platform for security, anonymity, and enhanced features. The possibilities are endless, and with VR right around the corner EOS is primed to take over the gaming industry in terms of processing, storage, and hosting.

EOS Foundation

Besides my bias opinion on EOS being a gaming blockchain, there were a few things I found out about EOS during my research that surprised me. You see EOS has been mostly constructed by experienced blockchain developers from the start. That means before this project even saw the light of day, the founders and creators had an advantage over other projects from their experience on previous decentralized projects.

Most notably, EOS stems directly out of two projects that are huge in the decentralized world. Those two projects are the successful BitShares which is a decentralized type of exchange and formidable Steam network which is a social platform. Both platforms boast daily usage in the tens of thousands and give EOS an impressive foundation to be built upon. Clearly the founders understand a thing or two about building successful applications and platforms.

In addition to the history of EOS, the project itself hosts a few impressive implementations. For one, there are no fees across EOS. Personally, I did not know this and realized it only after doing some digging. The platform is also run off of a delegated proof of stake system (DPOS) and it works in a few interesting ways. For example, anyone can stake their tokens and in return receive an equal ratio of the networks processing and storage. Although, if the staker wants to relinquish their staked tokens to move or sell them on the market, they must also forgo their storage capacity and processing power.

EOS Market Position

This really give the economics behind the EOS tokens a new light. This means that as companies or gaming developers start to build upon the network and utilize the blockchain storage and processing to build upon, they will actually have to remove tokens from the network. In doing so, they actually help protect the value of their investment in the EOS chain.

Those are just a few of the realizations I came to during my initial research sessions. Other than that, the project itself and the team behind it are quite renown. The EOS crowdsale or ICO raised billions of dollars itself which means this project has a pretty good lifetime behind it. While there has been a prolonged crypto winter, the project raised plenty of money to survive for years and years without being profitable.

On top of that, the EOS token has maintained a top spot in the market despite the constant turmoil and shifting scene in the top 20. That is impressive for any token and speaks to the consistency of the project sentiment and investors supporting it.

Not to mention the volume for EOS tokens traded daily is fairly high considering its purpose and reactivity to other top projects. In addition, the EOS token also managed to make its way directly to Coinbase also further cementing itself in the market long-term. Coinbase is the number one retail provider on the market right now.

All of these factors mixed together spell out a very good situation for a project to become successful in the crypto space. Although, there is still plenty of work and development to be done before that becomes reality.

EOS Educational Series

I hope you enjoyed this short post on some of the things I found interesting about EOS. The project has a lot going for it, and a very good foundation. As we continue to dig in, we will see if any of it matters once we look under the rug and dig around the trenches.

For now, thanks for reading and make sure to follow up on the EOS educational series Part 2 coming soon which will discuss the history and ICO in more detail.

Welcome back to our discussion of IOTA and tip selection within the IOTA Tangle!  So far in this series we have looked at what IOTA is and how its revolutionary tangle is such a paradigm shift from the ordinary blockchain we are used to seeing in so many crypto networks.  In this post, we’re going to try to better understand the unweighted random walk method for tip selection.  It’s a great method, but it merely lays the foundation for a more intelligent algorithm that will provide the best possible way of approving tips and linking branches on the tangle. 

In case you missed the first post on tip selection, let’s take a step back and get on the same page.  We’ll just briefly mention here what we discovered last time (feel free to pause and read Tip Selection Part 1 before venturing on).  Although the nomenclature may seem a bit funny, a tip in the IOTA world simply refers to an unapproved transaction.  Every time a node wants to perform a transaction on the network, the node must first approve two other transactions that have occurred at some point in the past. 

This is how IOTA is “free” to use (as in there is no exchange of currency, or MIOTA, in transactions but rather an exchange of work).  Although approving other transactions in the tangle is a requirement, pay attention to what’s not required here.  Give up?  Choosing which transactions a node approves can play a great role in determining the robustness, scalability, and eventual convergence of the tangle.  It’s not enough to approve transactions at random; there has to be an intelligent method of offering the best two transactions to approve.

Scaling the IOTA Network

This is where we left off last week.  Randomly choosing two transactions to approve was shown to be not so great, at best.  When we begin scaling a network operating for extended durations to many thousands of transactions all occurring quickly, IOTA could potentially become unstable or slow way down. Instead of randomly choosing tips, what if there was a way to more intelligently choose our path to the best tip for the current tangle state?

Unweighted Random Walk

Alright, that was our setup for the unweighted random walk, the next step (pun intended) in achieving tip selection in an intelligent and effective manner.  Before we describe the unweighted random walk, let’s set a clear delineation between it and the last algorithm we studied, the uniform random tip selection.  Our topic of interest in this post is not simply choosing whichever transaction happens to pop up first as we traverse the tangle. 

The last post attempted to clearly spell out the weakness in this pattern.  Instead, what if we started at the genesis block and started walking to the next tip needing approval?  We could incorporate a probabilistic approach that evenly splits up the “playing field” and attempts to balance the tips remaining on the tangle – hence the “random walk”.  (We’ll discuss why it’s unweighted in a minute.)

Rather than sitting here rattling off facts that may have no bearing on your life, let’s try the hands-on approach again this post.  We’ll start with a simple figure that will help illustrate the points we need to grasp; then we can move on to actually playing with a live simulation to further cement our newly acquired knowledge.  Take a look at the figure below.

Probabilistic Approach

GIF of Tip Selection Part 2

GIF of Tip Selection Part 2

Figure 1:  An example of an unweighted random walk.  Image from the IOTA Foundation blog.

            The GIF above shows a very basic tangle that utilizes the unweighted random walk.  Notice the outlines around block 12 above – this is the transaction that has just been added to the network and needs to approve two other transactions.  Starting on the left with block 0 (the genesis block), the transaction path first follows (or “walks”) to block 1.  Notice that the block appears in blue with the text “100%”.  This means that there is a 100% chance that this path will be taken between block 0 and block 1.  This is a rather silly example but clearly shows path traversal and its probabilities. The same thing occurs between block 1 and block 2.

            After block 2, though, things start to get a little more interesting.  Block 2 has three different paths that it can traverse to get one step closer to block 12.  It can either take the path to block 3 or block 4 or block 5.  You’ll notice that those three blocks all turn blue and display “1/3” when it’s time to choose one – this is because there is a 1 in 3 chance that each of them could be chosen.  In this illustration, the path chosen leads to block 4.  Since the only predecessor to block 4 is block 8, there is next a 100% chance that block 12 approves block 8.

Random Walk Weakness

            There it is, the basics of the unweighted random walk.  Let’s take a second now to discuss why this approach has been deemed “unweighted”.  Did you notice that every time a new path could be taken all nodes had the same probability of being chosen?  In other words, when we went from block 2 to the next hop in the random walk, we had an equally likely chance of getting 3 or 4 or 5.  But… what’s wrong with that?  Nothing, technically.

            Here’s where the weakness lies though.  While this is a totally feasible solution to this problem, it’s not the best solution to this problem.  Remember that we had a 1/3 chance of choosing block 4.  What if, for some reason, we happened to randomly choose block 4 90% of the time?  This get less and less feasible the more approvals that take place, but the math can work out without a hitch.  That could mean that, say, block 5 almost never got picked…which means that its downstream branch would rarely ever be touched. 

After a while, all of these random branches could become somewhat “lazy” and lead to a massive, disparate mess rather than a properly functioning tangle.  We’re not going to tackle this problem until next week, but this method gets us one step closer (another walk pun) to understanding how the best method works and why we would end up choosing it over another algorithm.

Tangle and Transactions

            Alright, we promised some hands-on action to better understand this method.  First, let’s go ahead and open the visualization developed by the nice folks over at the IOTA Foundation.  To tame the model and make it a bit easier to digest at first, let’s start with settings at 10 transactions, a transaction rate (or λ, the Greek letter lambda) of 2, and an animation speed of 0.7.  (These don’t have to be exact, just try to get them close.)  Obviously, this process is random, but we’ll try to explain in general terms what’s happening as the visualization progresses.  At first, we see a genesis block created and then block 1 shortly thereafter.  Block 1 obviously has no one else to approve, so it must approve block 0.  However, after we get to blocks 6 and 7, a real hierarchy begins to emerge. 

New Transactions

            New transactions that come online start to approve the second layer of transactions (most likely blocks 1 and 2 or so in your random visualization).  Each time a new transaction comes online, it’s easy to see that the probability of choosing a specific path to walk drops from 100% to 1/2 or 1/3 or so on.  What happens if the transaction rate in the network increases dramatically?  Try setting a rate of about 10-15.  You may or may not get a second tier of approvals; more than likely all of these transactions will approve the genesis block.  This is a by-product of a very active network – a web of transactions is hard to build because there is no settling time to build a tiered network and a flat tangle results.

            Since we’ve looked at simple examples, let’s take a look at a more complicated tangle that highlights the weakness inherent in the unweighted random walk.  Let’s put settings at about 150, 5, and 0.99.  The demonstration moves quickly, but can you see what’s happening to some of the gray blocks as they appear?  It takes a while for some of them to ever get involved in the tangle, and when they do, they might not have much affiliation other than a few approvals.  This isn’t an optimal configuration as we want the tangle to remain diverse yet compact.  We’ll remedy this situation in the next post.

IOTA Tip Selection

            As you can see, tip selection had to be carefully considered by the IOTA researchers in order to build a working and robust tangle that could scale to many thousands (or eventually millions) of transactions during a short period of time.  Interested in reading more?  Check out this blog post by the IOTA Foundation; it’s a great primer with pertinent information to understanding how this process works and why it’s been designed as such.  We know you’ve been waiting in eager anticipation, so next week we’re going to finally uncover the best algorithm for tip selection. 

Although the methods covered this week and last aren’t the final answers to the question, it was important to build a foundation and better appreciate their limitations and the chosen method’s strengths.

Until next time, happy reading!

IOTA (or the Internet of Things Application) is both an open-source distributed ledger and cryptocurrency that entered the crypto market back in 2016.  At first glance, it may seem like IOTA is just another token on the market or yet another attempt at creating an open-source distributed ledger (just like Bitcoin, Ethereum, etc.).  However, taking a closer look reveals the truly revolutionary abilities that IOTA brings to the crypto world. 

IOTA Tangle Series

In this series, we plan to roll up our sleeves and dive into the details of how IOTA works and why it’s presented such a revolutionary design to the crypto world.  We’ll start with the fundamental building blocks in this post and move onto some of the practical applications in those that follow.  If you really want to understand how IOTA works from a mathematical and functional perspective, the Whitepaper is an indispensable resource to read and study.  The math behind the Tangle is quite impressive and complex…and it’s also very complicated.  I’ll include some links at the bottom of the post that you can use to further increase your knowledge.

Okay, enough introducing, let’s get to it!

While not the only novel facet of IOTA, the Tangle is such a radical distinction from the standard cryptocurrency / ledger currently in use by most tokens that it only makes sense to start here and continue to build.  Great, so…what’s the Tangle?  Simply put, the whitepaper defines the Tangle as “a directed acyclic graph (DAG) for storing transactions”.  Duh, it’s just a DAG!  Just kidding, let’s take a look at what DAG’s are and then try to understand why IOTA decided to use them. 

Tangle Graph Theory

There are several steps to get us to a DAG, so keep your geek hat on for a second and we’ll be back to planet Earth in just a minute.  To get started, mathematics has many different facets (more than just the algrebra, geometry, and maybe calculus that you took in high school or college); graph theory makes up a part of mathematics as a whole.  No, graph theory isn’t about studying graphs like y=x2 or cos(x); instead it’s about modeling pairwise relationships between child objects and their relationships to parent object(s).  Below is a simple picture of a graph:

Undirected graph

Figure 1:  A simple, undirected graph.

            This type of graph is referred to as an undirected graph.  There are no directional relationships between the points in the graph – instead they just exist together and link to form an entire structure.  This is different than what’s used in the Tangle; see below:

Directed Graph

Figure 2:  A simple, directed graph.

Notice the difference with this type of a graph – there’s a direction between the points (i.e., they are an ordered set of points).  The top left point connects to the top right point in a specific direction, whereas the top right point connects bidirectionally with the bottom point.  This forms the first foundation in understanding a directed acyclic graph.

            Alright, so we understand the first part of the DAG; what about the second part?  What does it mean for a graph to be acyclic?  Let’s take the strategy we used above and first define a cyclic graph.

Directed Cyclic Graph

Figure 3:  A simple, directed cyclic graph.

In this graph, we see that there is a logical ordering that produces a single cycle.  In other words, we can start at the top point and proceed around the structure, ending again at the starting point.  This can continue on and on as necessary; hence, the term “cycle” is fitting.

Directed Acyclic Graph

Figure 4:  A simple, directed acyclic graph.

There’s a difference with this graph.  Can you spot it?  There are no directed cycles such that one could start at a given point, loop around the graph, and end back up from where they started.  Another important distinction in a DAG – it always follows a topological ordering.  This means every time a new path is formed between nodes, it always goes from earlier to later in the sequence (or simply it doesn’t go “backwards” in time).  This helps us finish out our basic understanding of a directed cyclic graph.  Let’s put it all together.

  • A graph is an abstract concept that structures a set of objects together with some relationship among the objects.
  • A graph can be directed if the order between any two successive nodes in the graph matters.  In other words, A à B matters and doesn’t necessarily equal A ß B. 
  • Finally, a directed graph can be acyclic if there is no succession of hops along the graph that forms a cycle (which would allow one to start and end at the same node).
  • A directed acyclic graph always follows a topological order (such that it only ever makes connections “forward” in time and never “backward”). 

Tangle Vertex

It’s important to note that each time a transaction enters the network, a new “vertex” is added to the Tangle (where a vertex is a blue circular node above in Figure 4).  The edges that connect any two transactions are the approvals on the ledger.  Putting these two ideas together, a graph can be formed that relates transactions (vertices) with their corresponding approvals (edges). 

Phew, you might need to take a break after that one.  All that being said, this is the structure IOTA uses in its ledger to record and validate transactions.  This is obviously much different than a standard blockchain, but how?  A blockchain is a synchronous approval mechanism; this means that the longest (most trusted or most often validated) line of blocks stays on the blockchain and each block is added one after the other after the other.  Any forks or side branches eventually get orphaned and are discarded, no longer of any use even though work was done to validate the transactions they held.

Concept of the Tangle

While the blockchain is a synchronous set of blocks stacked one after the other, the Tangle has no concept of this rigid synchronicity.  Instead, the system acts asynchronously and can have many forks and branches that all converge over time.  The main impetus for this decision was scalability of the distributed ledger.  Because each node participates in the validation process during the performance of a transaction, the network of validated transactions continues to strengthen while staying nimble.  This allows computationally bounded devices (such as IoT devices) to participate in the network (no need for racks and racks of custom ASICs to validate transactions by calculating terahashes of computations). 

In addition, transactions on the network are “free” in that they require neither the sender nor the receiver to pay any MIOTA (IOTA’s token).  Instead, each transaction requires the node to perform two validations of other transactions within the network.  The choice of these transactions is outside the scope of this article, but feel free to look at the Whitepaper if you really want to know what’s going on here (especially starting at section 2).

Tangle Versus Blockchain

There are few more important distinctions to make with the Tangle and how it relates to a standard blockchain:

  • The Tangle provides virtually unlimited throughput (as opposed to, say, Bitcoin with about a 10-minute block production schedule or Ethereum which produces about 10-12 blocks per second).  Because of its asynchronous nature, the Tangle can proceed extremely quickly and has no programmed block schedule.
  • There are no mining fees in IOTA as there are no miners.  Each node must verify two transactions every time it produces a new transaction.  This allows the system to send all of the MIOTA specified in the transaction payload without having to worry about miners’ fees or higher fee payment if a quicker verification of the transaction is desired.
  • Because there are no miners in IOTA, there are no incentives (other than perhaps malicious intent) to slow the network down.  Typically, this is done to raise fees, which really goes against the decentralized nature of most cryptocurrencies.  Rather, nodes are incentivized to perform quickly as their transaction can be further validated after being added to the Tangle.

IOTA Education

If you made it this far, you deserve a medal of bravery.  IOTA is a complex concept to understand, but you find more and more nuggets of information each time you delve into the topic.  Still want to learn more?  Check out a few of these articles:

  • Here’s an extremely thorough look at directed acyclic graphs
  • We referenced it above earlier, but in case you missed it the IOTA Whitepaper is a great, thorough read on the topic.  While it mainly focuses on the Tangle itself, there are quite a few ancillary details that can be gleaned during a focused read.
  • Here’s a bit more information on IOTA from a high-level perspective.
  • Meet the Tangle.  We promise it doesn’t bite (yet).

This is only the beginning of our detailed exploration of IOTA.  We plan to visit more of the specific core concepts and applications in the future.  In the next article, we’ll take a look at IOTA’s overall place in the IoT world and how it plans to become the de facto token / ledger for transactions among these devices.  Until then, happy reading!

When we create transactions on the Bitcoin network, it might be tempting to assume that since we’re using a cryptocurrency, we are totally secure in transferring money to another party. 

            In the world of cybersecurity, there is a token acronym to express security – CIA.  No, this isn’t referring to the federal agency in the USA – instead CIA refers to confidentiality, integrity, and availability.

  • Confidentiality expresses the “typical” definition of security – what you send to another party or store on your computer can only be revealed to those whom you choose and no one else.
  • Integrity expresses the idea that any message you send should end up exactly same wherever it goes – it shouldn’t be altered en route.
  • Availability expresses a definition of security meaning that a system/user should be able to access or contact another system/user when desired (i.e., a distributed denial of service (DDoS) attack would threaten availability). 

So, from a cryptocurrency perspective, we are secure using Bitcoin, right?  Our transactions are encrypted and protected against modification, and the network can’t possibly go down since it’s so decentralized – we must be completely secure!

Using only the three factors above, it’s pretty clear that our use of the Bitcoin network is pretty secure.  But let’s expand our meaning of confidentiality by taking a look from a tangential perspective – are you confidential using Bitcoin?

Huh?

Confidential Transactions

Let’s rephrase it – are you as a person, not the data you’re sending, confidential?  Can someone find out more information about you, such as where you live, how much bitcoin you’ve sent, how often you use the network, who you’ve paid in the past…  The answer might seem counter intuitive, but these are definitely not outside the realm of discovery.  (Quick aside:  from a legal standpoint, privacy and confidentiality are technically different; however, they cover very similar notions in “common speak”, so we will use the terms interchangeably here and provide a link below if you want to know how lawyers use the terms).

Time to dive into the details.  First, when you use a computer on a network (i.e., the Internet in this case), your computer has an IP address.  It’s either a 32-bit or 128-bit identifier that tells the receive to whom they should respond.  For example, let’s say your computer is located at 17.xx.yy.zz and you’re trying to talk to 20.xx.yy.zz (fake addresses used for privacy).  Did you know that from this simple information above you can find out that a corporate device owned by Apple is attempting to make a call to a device at Microsoft? (Check this out for a reason why). 

IP Address Gives You Away

Why this matters – your computer has an IP address, and when you “talk” to someone on the Bitcoin network, it is possible to find out your IP and even log every time your IP address has attempted a connection.  Your telco (Verizon, Cox, Charter, CenturyLink…) is assigned specific addresses and divvies those out to its customers.  Given a date and an address, the telco could discover who (at least which router in a household or business) attempted a specific connection.  Can you possibly get around this?  Sure, there are potential ways (VPNs, proxies, and Tor among others), but there is no way to not have an IP address associated with your connection.  Short answer:  it can increase anonymity but is not bulletproof.

What about your wallet address?  Let’s say you try to send someone BTC this week, and in a few weeks from now, you send both them and someone else BTC again.  These transactions will be forever placed on the blockchain and can be searched.  Someone looking for your address can tell how much you sent, when you sent it, and to whom you sent it.  Another potential for disclosing your address – asking for donations or payments on your website.  Lots of small websites run on donations – if you post your wallet address to ask for help running the site, your identity (or at least the site owner’s) can be forever traced back to you through the address.  All of this is encoded and forever encapsulated – but can this be mitigated?  In order to reach a higher level of anonymity, you could attempt to use a new wallet address with every transaction.  This is, in fact, the recommendation of Bitcoin.org.  

Break The Identity Tie

Can’t Bitcoin mixers aid in breaking the tie to your identity?  They can help – it does make an investigation into your identity more difficult to trace – but as amounts get larger and larger even these services are limited in their usefulness.  You also have to inherently trust the operator of the mixer – they can easily lose, steal, or mismanage your input BTC.  There are other options, such as CoinJoin, to anonymize payments.  CoinJoin takes multiple transactions from multiple spenders and combines these into a single transaction, effectively hiding raw details about who spent how much bitcoin.  This doesn’t require any modification to the Bitcoin network protocols and can be used now but is vague and can be difficult to employ – and again, still not bulletproof.

Is there any hope?  Of course, this isn’t a doomsday approach to cryptocurrency but rather a reminder to be careful while on the Internet.  If you choose to deal with trustworthy vendors and other users, you have very little to worry about in your online activities.  This just serves to reinforce that pseudonymity (using a name or identity other than your own) is possible but anonymity (completely unknown identity) is pretty much not.  It’s hard to say that there’s a 0% chance of someone finding out who you are given a specific transaction or other interaction on the Bitcoin network.

Learn More About How Anonymous Bitcoin Really Is

Even though we looked at a good bit of detail above, there’s so much more you can read about if you desire to understand the more technical facets of pseudonymity in the online world.  Take a look at a few of these resources for more:

We hope this was insightful for you and look forward to seeing you next time!

Welcome to our series Ethereum from the Ground Up.  Throughout the course of this series, our desire is to explore the underpinnings of the 2nd largest cryptocurrency on the market. 

Ethereum learned a few important lessons from Bitcoin and was the first revolutionary cryptocurrency to feature a Turing-complete blockchain.  We’ll get into more of the application-level details in later weeks. But for now we first need to establish a solid foundation in the basic elements of Ethereum.  After discussing the atomic elements, we will be able to build our understanding and fully appreciate the system as a whole, including the facets Ethereum users encounter on a daily basis.

            Last week, we took the time to focus on two important facets dealing with how elements interact in Ethereum.  We began with state transition functions, which deal with how both world and account states change as a result of transactions taking place.  We also looked at code execution related to smart contracts.  This EVM code is similar in many ways to a standard machine language and allows extensible instructions to be written and executed on the blockchain.

Ethereum Core Elements

            To finish up with the core elements of Ethereum, it’s time to discuss the blockchain and how mining works.  Let’s start with the blockchain itself.  Note that Ethereum has been planning for a couple of years to release ETH 2.0. ETH 2.0 is the second generation of their blockchain which incorporates a proof-of-stake (PoS) algorithm instead of one related to proof-of-work (PoW).  The deadline has been pushed back but is planned for release in July 2020.  As of now, this doesn’t mean that ETH 1.x will be dead anytime soon – and who knows, there may be a fork and another Ethereum-based token will enter the network.  We’ll discuss ETH 2.0 closer to the end of this series, but for now just keep its eventual launch on your radar.

What is Blockchain

            Alright, back to the blockchain.  For those who may not be familiar with this concept, a blockchain is basically just what its name implies – a chain of blocks.  Generally speaking, a block is a collection of data that is chained together in some fashion to the block both before and after itself (usually through the use of cryptographic signatures).  This chaining is a critical part of ensuring the reliability of the blockchain – if a malicious actor could insert itself and modify a random block in the middle of a large chain, there would be no way to validate all data transfers that have occurred up to the present block.  These structures are rarely relied upon for data secrecy but are more often trusted for data authenticity and integrity.

            The Ethereum blockchain mimics that of Bitcoin in some regards but provides several key improvements that greatly enhance both ease of use and efficiency.  As a matter of fact, if Bitcoin were able to employ the methods that Ethereum uses, a node could realize between a 5x – 20x savings in storage space.  Why?  Ethereum doesn’t require a node to store the entire blockchain history.

            But how can you validate a transaction if you can’t validate that everything that preceded the transaction was correct?  Herein lies the genius of Ethereum:  the blockchain itself isn’t used exclusively as the means by which the correctness of previous transactions is proven.  Ethereum uses a separate structure (a modified Merkle Patricia tree) that maintains the world state at any point in Ethereum’s existence.  When Ethereum stores a block on the blockchain, more than just a list of transactions is stored within the block.  The block number, the difficulty, and the most recent state (from the aforementioned tree) are included within the block itself. 

Modified Merkle Patricia Tree

            It seems like this would be really inefficient…the entire state is stored in each block?  Here’s the beauty of the modified Merkle Patricia tree – only a very small part of the tree itself changes as a new block is added to the tree (for most blocks, there are occasional exceptions).  This means that only a very small fraction of data needs to be included in the block in order to capture a seemingly large amount of data. 

This is where the space savings of Ethereum’s blockchain vs. Bitcoin’s comes in – you don’t necessarily have to store the entire blockchain on a computer to validate future blocks.  Data is stored on the tree only once and can be referenced twice using hashes of the subtrees (children to the current position on the tree). 

            Before we get to mining, another perplexing matter arises with smart contracts – “where” exactly is this code executed?  Obviously, the contracts themselves live on the blockchain (and not on the Merkle Patricia tree), so it would make sense that they would have to execute on the blockchain – but how? 

Remember state transition functions from the last article in this series?  The actual execution of contract code is part of the state transition function (which itself is a part of the algorithm used to validate blocks).  This means that if a transaction is placed into a given a block, any node that downloads and validate the block will execute the code.  And it’s not just a one-time thing – the same code can be redownloaded and revalidated at any point, allowing for the execution of contract code in the future.  Pretty cool!

Ethereum Mining Difficulty

Alright, on to everyone’s favorite topic – mining.  How does mining actually work in Ethereum?  Let’s start with mining as a basic, generic concept first.  For a node to “mine” a cryptocurrency, the node basically needs to form a block of transactions, validate them, and add them to the blockchain.  It might sound pretty simple, but there’s quite a bit going on here.  Anyone can join in the action and mine Ethereum, but to actually profit from the work (i.e., the amount of Ether you own is more than the amount of energy you consume to solve the PoW problem) requires very calculated steps.

Just like Bitcoin, the difficulty in solving for the next block on the blockchain is related to how much total computational power (or the total hashrate) is currently on the network.  This means that as more and more nodes enter the network and increase the total hashrate, the difficulty goes up to keep the output block rate at a near constant. (The Ethereum network puts out a new block every 12 seconds or so)

Miners have the option of choosing which transactions to put into the next block they are attempting to solve (which means that most miners will attempt to include transactions with the highest transaction fee).  Remember that the goal here is for miners to solve a very difficult problem (hence providing a proof of their work as the name implies) that is easy for others to validate afterwards to prove that the mining was indeed correct.

Ethash Algorithm

While Bitcoin uses the hashcash algorithm for miners to prove that they have provided a proper hash for a block, the Ethereum network instead opts for the ethash algorithm.  There’s a method to this madness – the Bitcoin is nearly dominated by miners with super powerful rigs and purpose-built computing platforms (which incorporate Application Specific Integrated Circuits or ASICs). 

This essentially breaks the entire “decentralized” paradigm by allowing a few large miners to take over almost all of the mining.  They have the most power available with purpose-built hardware (i.e., ASICs) not easily available to “normal” users of the network.  For this reason, ethash uses an algorithm that makes it nearly impossible for dedicated ASICs to mine new blocks.  And, as we mentioned at the top of this article, companies have little incentive to begin designing Ethereum-specific mining hardware since Ethereum 2.0 plans to move the entire mining process from a PoW to a PoS paradigm. 

POS Paradigm

It may some time before the new PoS paradigm comes about in full force, but let’s take a brief glance into the future to see how this would work and how it compares to Ethereum’s current mining architecture.  Currently, anyone in the network can deploy hefty mining hardware and proceed to validate more blocks due to the shear heft of their hash rate. 

The energy consumption in this setup increases quite drastically as more and more CPUs and GPUs are utilized to mine blocks.  In a PoS system, your effective “hash rate” comes from the amount of stake you have in the network (in other words, how much Ether you own).  Different block validators take turns on voting which blocks belong on the blockchain; validators with more Ether get more of a say as to which blocks are added. In addition to significantly reducing the amount of power needed in the network overall, there will be fewer concerns for centralization and an increase in security. 

Learn More On Eth Blockchain

Curious to learn more about the topics we’ve discussed above?  Take a look at a few of these articles for more information:

Well, that’s all folks!  Thanks again for taking the time to learn more about Ethereum; we’ll see you in the next article!

Welcome to our series Ethereum from the Ground Up.  Throughout the course of this series, our desire is to explore the underpinnings of the 2nd largest cryptocurrency on the market.  Ethereum learned a few important lessons from Bitcoin and was the first revolutionary cryptocurrency to feature a Turing-complete blockchain.  We’ll get into more the application-level details in later weeks, but for now we first need to establish a solid foundation in the basic elements of Ethereum.  After discussing the atomic elements, we will be able to build our understanding and fully appreciate the system as a whole, including the facets Ethereum users encounter on a daily basis.

            Last week, we took the time to focus on what Ethereum is.  This included accounts, transactions, and messages among a few smaller items.  This week, we will take a look at how the elements interact.  There are three major areas to tackle in this sphere – Ethereum state transition functions, actual execution of code in contracts, and the blockchain coupled with how mining works.  We’ll take a look at the first two this week and discuss the blockchain / mining topic next week.

State Transition Function

            Alright, what is an Ethereum state transition function?  Let’s take each word individually and then try to understand what they mean together:

  • State – this represents the current condition or status of the network.  Ethereum has two major states, including world states and account states (which we’ll discuss below).
  • Transition – the easiest way to think about this is the state x converting or changing state to x’ such that .  The element x stays the same, but its current condition has been altered.
  • Function – a function performs the operation of altering the state’s current condition.

So, putting these all together, a state transition function is an operation that transforms the current condition of an entity in Ethereum (in our case either an account state and/or the world state).

            No problem, that makes sense.  But what about the two different states that were mentioned above?  Let’s start with the world state.  The world state of Ethereum is the current mapping between accounts and their account states.  Note that this is not stored on the blockchain but rather is stored in a state tree.  There’s an endless rabbit hole to enter here, but suffice it so say, 1) the world state of Ethereum is always changing when accounts perform transactions, and 2) this ever-changing state is always accounted for in the state tree.  It’s also interesting to realize that anyone can discover the current balance of an account or state of a smart contract by querying the world state tree.  If you really want to know more about this, the Ethereum Yellow Paper has all the details (in excruciating detail, no less 😊). 

Account State

            Now for the account state.  There’s not too much more to say about this than what we previously discussed in the last article.  We mentioned the two types of accounts, externally owned accounts and contract accounts, and essentially their state is just the current data held within the account.  In summary, the world state is based on accounts and their transitions while an account state is only concerned with its own data in flux via some modification.

            We are now ready to discuss the state transition function since we understand both of the aforementioned states.  See Figure 1 below for a depiction of such a function (taken from the Ethereum White Paper):

Figure 1:  Ethereum State Transition Function

Below is a condensed version of the state transition function.  Nerd alert:  the technical depiction of this function is  (similar to our example with x and x’ from earlier).

Function Layout

  1. Check the transaction…
    1. Is it well-formed (i.e., does it have all the values it should)?
    1. Is the signature valid?
    1. Does the nonce match the nonce in the sender’s account?
    1. If these are true, continue.  If not, throw an error.
  2. Calculate the transaction fee (STARTGAS * GASPRICE).  Deduct this amount from the sender’s account while incrementing the sender’s nonce. 
    1. If the sender doesn’t have enough gas, stop and throw an error.
  3. For all of the bytes in the transaction, deduct a certain amount of gas to pay for the transaction.
  4. Transfer the value to the receiver’s account.  There’s a little logic that goes on here:
    1. If the receiving account exists, everything is good to go.
    1. If the receiving account does not exist, create the account (remember, this would be an externally owned account type).
    1. If the receiving account type is a contract, run the contract’s code until it finishes or the transaction runs out of gas.
  5. If something went wrong trying to run this, put everything back the way it was originally (except the miner still gets mining fees). 
  6. And finally, if everything was okay, return unused gas to the sender and send the miner any mining fees accrued. 

That’s basically it.  It’s pretty simple if you look at it in total:  send an amount or run some code, deduct gas as needed, and pay the miner.  Of course, there are always slight nuances to everything, but this sums it up from a high-level point of view.

            But wait, it makes sense to transfer Ether from one account to another, but what does it mean to run code in a contract?  Great question and great timing!  You must have known that our next section is going to discuss code execution!

Virtual Machine Code

            “Ethereum virtual machine code” or “EVM code” is the language that powers contracts on Ethereum’s blockchain.  (For those of you computer scientists reading, EVM code is a low-level, stack-based bytecode language similar to machine code used in standard operating systems).  This code essentially runs a while loop (in software parlance) that continues executing the same operations over and over until commanded to stop or return to some calling parent function.  During the performance of operations, the code has access to three locations for storage:

  1. Ethereum incorporates a stack for calling functions just like most programming languages; the stack operates as a LIFO (last-in-first-out) buffer with push and pop functionality.
  2. An infinitely expandable memory base storing data in a byte array.
  3. The contract’s long-term storage (similar to a computer’s hard drive).  These key/value pairs retain information in the contract while the stack and memory are reset after all computations have been performed.

EVM Code Operations

EVM code operations are capable of achieving highly complex functionality but are themselves actually quite simple (if you are at all familiar with standard machine code, you’ll recognize many of the same operations in EVM code as you might writing low-level code for Windows or Linux).  Let’s break this down a little:  a tuple of information (or cluster or structure depending on your programming background) exists in the Ethereum virtual machine.  As each computation progresses, a new index is passed to the virtual machine stating which command must be executed. 

For example, if an ADD is performed, two items are popped off the stack, summed together, and pushed back onto the stack.  For each byte of information processed, the total amount of gas in the transaction is reduced by 1.  As we discussed in the last post, this is a key component in mitigating denial-of-service attacks.  If anyone desired to launch such an attack, it would be extremely expensive from a monetary standpoint and would greatly deplete the resources of the attacker.

What Can EVM Code Do?

Due to its Turing-completeness, the EVM code on Ethereum’s blockchain can basically perform any computation that you could imagine (again, just like the parallels with machine code that we have mentioned).   This means that we can add, subtract, multiply, divide, process complex functions, and even loop over code using jump instructions or references to other contracts.  Luckily, Ethereum’s creators have already answered the question about infinite loops – senders have to set a maximum number of transactions to be performed before a miner ever gets the transaction.  This allows for miners to understand that a process may be excessively long and take steps to fend off what might become an attack on the network.

Learn More About Ethereum’s Functions

            Alright, well there you have it – Ethereum’s state transition functions and code execution, while complex, make sense and enable a very powerful blockchain to perform a host of tasks.  Want to learn more about the topics we’ve discussed?  Take a look at a few of these posts:

In the next article, we’re going to take a look at Ethereum’s blockchain and how mining operations actually take place.  These entities may look similar to Bitcoin’s but have incorporated some changes that make for enormous efficiency gains.  We’ll see you in the next article!

Welcome to our next series on cryptocurrency topics.  As the 2nd largest coin in terms of market capitalization, Ether (the coin, and by association the Ethereum organization behind Ether) is a fascinating development in the crypto landscape.  After having learned lessons from both the strengths and weaknesses of Bitcoin, Ethereum’s main goal is not the provision of another cryptocurrency for exchanging funds in a decentralized fashion. 

Instead, Ethereum’s expressed intent is to “create an alternative protocol for building decentralized applications” upon which Ether is used for completing transactions.  While this may not be quite as jaw-dropping now since Ethereum has been around for close to 5 years, at the time it was a total paradigm shift in view of Bitcoin’s cryptocurrency semantic dominance – crypto is used for monetary exchange, and that’s about it (or is it?).

History of Ethereum

            Vitalik Buterin, the founder of Ethereum, was a programmer who co-founded Bitcoin Magazine.  He kept insisting that Bitcoin needed to have some sort of scripting language included so that he could use the blockchain to develop applications.  He didn’t seem to be gaining any ground with his proposals, so he decided to build his own system.  With a team of developers and many supporters who bought Ether tokens in a crowdfunding campaign, Vitalik’s dream finally came true with the full release of Ethereum in July 2015.

            Alright, that’s some of the history and purpose of Ethereum to provide a background to what we’re going to talk about for the rest of this journey.  In this article and those to follow, we plan to explore the fundamental concepts behind the cryptocurrencies we know and use (or invest in) on a daily basis.  Ethereum is rich with information to provide for plenty of such research.

Building Blocks of Ethereum

Let’s begin with the building blocks of Ethereum.  The very foundational state of Ethereum is made up of objects referred to as “accounts”.  Accounts are referred to by their 20-byte address.  For transitions in the state of Ethereum to change, there must either be a direct transfer of either value or information between accounts.

            Accounts themselves contain four distinct fields:

  1. A nonce is a mashup of “a numberused once”.  This is a counter to ensure each transaction will only be processed one time.
  2. The account contains an arbitrary balance of Ether (discussed below) at any given time.
  3. If this is a contract account (one of two types of accounts also discussed below), the account will have contract code that performs some sort of action when activated.
  4. The account defaults to containing an empty amount of storage but can be filled in as necessary.

If you have any prior knowledge to the cryptocurrency world, I’m sure that you’re aware of Ether – the digital fuel of Ethereum.  Ether is responsible for paying transaction fees in the Ethereum ecosystem.  However, you may not be aware that Ethereum actually contains two separate account types:

  1. Externally owned accounts – these don’t contain any code.  Rather they are simply used to send messages by creating and signing transactions. 
  2. Contract accounts – these accounts contain code that may interact with internal storage, send messages, or even create other contracts.

Contracts

Before we move on, it’s quite essential to realize the way that Ethereum uses the term “contract”.  In this sense, a “contract” isn’t referring to a binding agreement between two parties; rather, Ethereum recommends viewing these contracts as “autonomous agents” that execute code when prodded by messages or transactions and keep track of their own internal information.  If you have ever written software, you may have run across event-based programming or callback functions – this is basically analogous to the way contracts behave.

Accounts

Alright, quick recap since this information can be dense (but so valuable to learn!).  Ethereum is a crypto platform primarily focused on building decentralized applications (dapps).  There are many accounts in Ethereum that contain information and interact with each other using Ether, the crypto token of Ethereum.  Great, so we know what Ethereum is, what it’s composed of, and how payments are made – but how do accounts interact with other accounts?  Sure, Ether is used to pay for transactions, but what is a transaction in Ethereum parlance?

Let’s get our terms straight from the start – Ethereum has both transactions and messages that can be sent between accounts.  Specifically, a transaction is sent from an externally owned account while messages are transmitted between contracts. 

A transaction consists of the fields shown in the diagram above.

  • Each transaction has a recipient.
  • It also includes a signature to identify the sender.
  • The sender includes the specific amount of Ether to send to the receiver.
  • It includes an optional data field just in case (but doesn’t have use it).
  • A value for STARTGAS (discussed in the next paragraph)
  • A value for GASPRICE (also discussed in the next paragraph)

The first three fields are pretty understandable from any type of normal monetary transfer – one identified party sends a specific amount of currency to another specified party.  The optional data field can be used but normally is blank. 

Transaction Fees

STARTGAS and GASPRICE are very unique terms to Ethereum.  Any system of this magnitude on the Internet has to be prepared for a denial-of-service attack of some sort.  These values are used as mitigations to this threat.  A single computational step in Ethereum costs 1 gas (where gas is a fundamental unit of computation).  The STARTGAS value limits the total number of computational steps that a transaction is allowed to take. 

In essence, this helps limit a denial-of-service attack in that a miner knows beforehand how long a specific round of verifications will take and gives a warning in advance if an excessive number of steps has been requested.  The GASPRICE represents the fee that the sender pays for every computation step.  Every byte of transaction data usually requires 5 gas for every byte transferred.  Combining these together, the total transaction fee is STARTGAS * GASPRICE, which is subtracted from the account balance before a transaction ever takes place.  These together limit the damage a potential attacker could incur by taking an ever-increasing amount of Ether for every transaction on the network. 

In essence, an attacker could mount a large attack, but it would be very expensive and naturally limiting.

So, there’s a transaction.  That’s one of the two types of intra-network communications within Ethereum.  How about messages? 

Messages

A message consists of the fields shown in the diagram above.

  • Each message has an implicit sender and receiver.
  • The amount of Ether to send along with the message.
  • The optional data field is just in case (but doesn’t have to use it.
  • A value for STARTGAS (used in the same context as just explained above).

Obviously the fields above vary slightly from those within a transaction, but basically messages and transactions as objects are the same.  The big difference?  The communicating parties – messages are produced by a contract while transactions are produced by an external actor.  During the execution of a contract’s code, the CALL opcode is used to produce a message.  This information is relayed to the recipient in much the same way that a transaction leads to a recipient from an external actor’s initiation.  

What is Gas

Let’s discuss a little more about how gas works.  The idea here is somewhat similar to the transaction market in Bitcoin. If you want to get your specific block validated first, you’ll need to pay a higher price.  The miners within the Ethereum network are incentivized like those in Bitcoin – pay a bit more gas for a specific operation and you’ll likely get your transaction pushed through much more quickly. 

If you’re not in a rush, you can pay a nominal amount of gas and wait until the miners are willing to take up your transaction.  For every block of transactions that is validated by the miners, there is a gas block limit such that a specific block can only contain but so many computations (equivalent to an upper limit on gas within a block).  Miners elicit a fast gas price that will ensure your transaction is pushed to the front on the queue on the network for an increased price; you can also pay a safe low if you have the time.  The standard gas price indicates the average gas price currently on the network.

Ethereum Overview

Phew, we made it through.  Those are the basic elements of what Ethereum is.  In the next article, we’re going to discuss more about what Ethereum does, namely the state transition function and the execution of code in smart contracts.  There’s a ton to dive into, so stay tuned as we continue looking at Ethereum from the ground up.  Want to learn more?  Take a look at a few of these articles:

You made it!  Go take a break, get a drink, and come back to start on the next article – see you then!

Welcome back to our tour of the cryptocurrency landscape.  In the last post, we discovered Cardano, a self-described “third-generation” cryptocurrency touting robust development practices and a three-fold goal of implementing scalability, interoperability, and sustainability into the current crypto world.  Cardano is quite unique in that it uses a proof-of-stake algorithm (Ouroboros) as opposed to the more well-known proof-of-work algorithms for verification and validation of transactions on the network.  Because of this, there’s no need for energy-gulping machine monsters spitting out hashes faster than a miscreant kid with soap in his mouth.  Instead, Cardano has organized a well-oiled machine of nodes, slot leaders, and methods to govern a sustainable blockchain implementation.  Cardano hopes to implement its own network architecture – RINA – into the space to allow for smarter notification of activities to only necessary recipients.

What is IOTA

            In this final leg of the journey across the cryptocurrency landscape, we’re going to take a look at IOTA.  While the coins we’ve looked at so far have dealt with businesses or personal payments or exchanging money with a friend, IOTA is actually built for…machines to use? 

            Yep, you heard me right.  Ever heard of the Internet of Things (IoT)?  This is a world unto itself filled with microprocessors and Internet-connected devices ranging from thermometers to refrigerators to industrial control systems and beyond.  Machines are becoming more and more autonomous, and as they advance, IOTA hopes to fill the void in microtransactions on a machine-to-machine basis in seeking to enable and enhance a niche, but ever expanding, market.

IOTA is a fascinating cryptocurrency and has so many features to explore that it’s hard to know where to start.  Let’s begin by talking about IOTA’s blockchain. 

Oh, wait, it doesn’t have a blockchain? 

Nope, IOTA actually uses a distributed ledger based on a stream of individual transactions that have been “tangled” together.  And, as luck would have it, this mesh of transactions is known as Tangle.  Take a look:

Figure 1:  A standard blockchain’s bottleneck vs. the IOTA Tangle.
Image taken from IOTA’s FAQs.

Before we dive into the details, let’s talk about Figure 1. 

IOTA Tangle

As can be seen in the first image, a standard blockchain requires a single stream of blocks to be output from a single validation point.  This means that a network under heavy load may experience excessive latency in confirming transactions (and with Bitcoin’s average of 6 transactions per second, it’s easy to see why some validations can take many hours). 

Take a look at how the Tangle differs – there’s no single, synchronous output of blocks.  Instead a mesh of blocks that all refer to each other pass the same validation point but can do so much more quickly.  It’s almost like trying to fit all traffic flowing into New York City into a single lane on the highway – you’ll never get to Times Square (at least not within the next week).  Imagine all of the same traffic on a 27-lane highway though; you could really move a lot of cars at once on a road system that big!

            This is the beauty of the Tangle.  Because it’s distributed and permissionless, the web of transactions (technically referred to as a Directed Acyclic Graph or DAG) can increase tremendously to support a seemingly boundless flow of traffic. 

Tangle Fees For Transactions

In addition speaking of transactions, there’s no fees of any sort to exchange MIOTA (the official name of IOTA’s token).  This means that you could send your friend something as small as $0.01 (a penny in the USA), and your friend would receive $0.01.  Nothing taken out.  No fees removed or retained.  Just money exchanging wallets. 

            But how can this be?  The whole point of miners is to validate transaction on the blockchain – if there are no fees, there is no incentive to validate transactions…?  Yet again, the beauty of the Tangle and IOTA’s methodology at work.  When you make a transaction, you must validate two other transactions that get attached to your transaction.  These in turn get re-validated over and over again leading to a trustworthy exchange of MIOTA among various nodes in the network.  And, counterintuitively, the more transactions that are occurring on the network, the faster the transactions are validated.  This is because there are more symbiotic relationships formed each second that allow for the mutual validation of transactions. 

Tokens on IOTA

            One more thing about the currency itself – all IOTA tokens that will ever exist were already created in the genesis block.  For instance, at the very outset, 2.779 x 10^15 (yes, that’s peta-IOTA) tokens were created and will never be replenished.  IOTA has no native method for “burning” tokens.  Sure, you could send them to an address and never let them see the light of day again, but from a practical standpoint, all tokens that exist currently will forever exist in some fashion within the network. 

            What kind of cryptography is incorporated within IOTA?  A new kind of cryptographic hash function known as Curl forms the basis of block signing.  Curl is specifically optimized for utilization by low-power devices and as such is small and quite efficient.  From a transaction validation standpoint, both computational power and Internet-facing bandwidth constrain the abuse that could be inflicted by malicious actors.  Computational power is constrained by the solving of a random nonce (similar to the way Bitcoin nodes validate transactions).  As more computational capability enters the network, the nonce values can fluctuate to ensure the honest capability far exceeds that of the malicious actor.  Although it continues to grow exponentially each year, bandwidth is a limited resource – it would be next to impossible for a malicious actor to employ more bandwidth than the entire network of honest transactions.

Curl Signatures on the Tangle

            Another important aspect about the cryptography of IOTA is how Curl differs from other signing approaches.  Instead of utilizing elliptic curve cryptography, IOTA instead uses hash-based signatures that claim to be quantum-proof.  The cryptography behind this will be discussed in a future post, but for now, check out this article for a very in-depth look at what this claim means. 

Ultimately, it’s a moot point to claim with 100% certainty that no future quantum computing methodology could break Tangle, sure.  But there are very strong proofs that can be used to show that, at least with the current technology, Curl will be resistant to brute-force attack by quantum computers.  Final answer:  we’ll see.  Check out some of the whitepapers on IOTA’s site – these are semi-scholarly articles that will provide all the details you could want (and hopefully at least most of the answers you’re looking for). 

Vulnerabilities in Curl

One thing to mention before we move on:  researchers at MIT discovered a vulnerability in Curl in 2017 that led to the modification of the signing algorithm.  The hashing algorithm Curl had previously used was found to produce collisions.  In other words, multiple values could be found to produce the same output values such that an attacker could craft a message that would be interpreted as valid after hashing.  Luckily, this problem was responsibly disclosed, fixed, and later updated with no known attacks in the wild. 

            From an investment perspective, what has IOTA looked like in the past few years?  Eh, it’s not been everything that was originally hoped and dreamed.  After a hack of the Trinity wallet used by IOTA and missteps in the overall governance of the network, MIOTA has not seen the rise in market performance other coins have seen.  It’s a bit unfortunate that this is the case as there is no clear-cut contender for the space that IOTA possesses (that of being involved in the Internet of Things and the impressive scalability / unique Tangle design).  Nevertheless, the IOTA team continues development and further enhancements to the system.  With the world of Internet-connected devices growing leaps and bounds every year, it seems like the markets shouldn’t count IOTA out (here’s hoping they don’t experience any more major hacks or blunders).

Learn More About IOTA

            Well, we really hope you’ve enjoyed this 5-part tour of the world of cryptocurrencies.  There are so many other coins out there to explore, but hopefully this laid a foundation to understand a few major players in the space and some of the technological aspects behind how all of this crypto world operates.  Still interested in learning more about IOTA?  In particular, check out a few of these articles:

Now you know everything there is to know about cryptocurrencies, so it all ends here.  Haha, just kidding.  There are so many avenues to explore and details to uncover.  Coming up, we’re going to really dive into the cryptocurrencies we mentioned in this past series starting with Ethereum.  Thanks for reading, and we look forward to seeing you again soon!

Nothing should be considered investment or financial advice. Enjoy the ride.

This post is mainly going to be an educational piece on getting people started in Crypto! As Bitcoin and other digital assets increasingly gain popularity with investment firms, hedge funds, retirement portfolios, and traders, more and more people you know will start to take it seriously.

That means they may come to you at some point and ask you to explain things, help them get started, or possibly to invest. It is important you have a game plan ready to go for people that come to you.

You need to consider a few things in particular:

  • Who should invest in crypto versus who should not
  • What level of knowledge should they have before they invest
  • What is the best way to get them started

Therefore, lets move into the first part of weeding out who should invest versus who should not invest.

Who Should Invest in Cryptocurrency

The target audience for people who should seriously look into investing in cryptocurrency are individuals with a healthy risk appetite level, comfortable financial situation, passion & understanding for technology, and long-term investment mindset.

These people in addition should probably be of a reasonable age and not bet on turning a quick profit but jump on board with the decentralized movement, and support the idea of alternative currencies to traditional fiat.

Who Should Not Invest in Cryptocurrency

The people who should not invest in cryptocurrency are people who are in a weak financial situation, strong crowd followers, lack simple understanding for technology, or people close to retirement.

Sorry guys and girls, that means grandma and grandpa should most definitely not be investing their retirement in an extremely volatile market. The simple reason is because they cannot afford to lose that money.

In addition, people who do not strongly agree with the beliefs surrounding the decentralized movement or understand the progress structure for the digital world, should stray away from this market as well. This market is not for the impatient or for those looking to simply make a quick buck. You will inevitably lose all your money with those mindsets.  

What Level Knowledge Should People Have Before Investing in Crypto

Once you figure out who should and should not invest in crypto, the next step is figuring out the proper level of understanding investors should have in the market, digital assets, and trends.

I would highly advise people who are new to the market to do a few things.

  • Watch the market closely
  • Learn the basics
  • Study the top assets

Watch the Crypto Market Closely

Before investing in crypto, I personally watched the market, price movements, and development patterns for years. This gave me a huge advantage when I finally decided to invest.

With new investors, I would advise watching the price movements of the market for a couple of months before entering. That will give them a better idea of the extreme volatility and prepare them for what to expect after they put their own money into the market.

Ideally, they should watch and become active in chat groups for much longer before entering, but usually excitement will get the better of them before then. At a minimum a few months should be enough to give them a taste of the market.

Learn a Few Crypto Assets Very Well

While there are thousands of digital assets on the market, it is extremely important to learn a few of them very well.

More specifically, any and all new investors need to learn about the most well known assets on the market in order to give them a strong basis to understand other lesser known assets. Without this foundation of understanding, a newer investor could easily get wrapped up on FOMO which is a very bad thing and a great way to lose all your money.

Therefore, the top assets all newer investors need to dig into are:

Bitcoin

The grandfather of all cryptocurrency, Bitcoin is an absolute necessity for investors to not only understand but to be able to explain. Likewise, newer investors need to understand the differences between Bitcoin, Bitcoin Cash, and Bitcoin Satoshi’s vision. This foundational understanding of blockchain, forks, and market manipulation, will save them time, money, and heartache later on.

Ethereum

The first true second-generation cryptocurrency that opened the door to decentralized applications, turing complete code bases, and sent the bull market of 2017 to the moon, Ethereum is another asset to study up on.

Knowledge about Ethereum’s base applications, long-term vision, capabilities, differences from Bitcoin, and history will give newer investors a huge advantage when they read about capabilities of lesser know assets. This will give them the knowledge to keep from getting roped into a project they really do not want to be in and be able to differentiate between lies and truths across the market.

Ripple

One of the most controversial cryptos on the market, Ripple or XRP, is the first example to a newer investor of a digital asset that is not exactly “decentralized” but still a digital asset. In addition, Ripple is the first asset not looking to replace the traditional financial world but optimize it to a more efficient model. Most people in the crypto market are either strongly against this asset or strongly for it thanks to the XRP army. Although, I still strongly advocate learning about it, the company behind it, it’s history, the purpose of XRP, and what it is replacing in the traditional market.

Foundational Knowledge Of Digital Assets

Once a newer investor has knowledge of Bitcoin, Ethereum, and Ripple, they will have a strong foundational understanding of cryptocurrencies on the market. This will keep them from losing a lot of money by avoiding investing in other forked assets that are copycats to the originals, be able to ignore the buzzwords people use hype up projects, and have an increase in confidence for their investments.

The Best Way to Get Started in Crypto

With the proper knowledge, and the right situation, it may be time for someone to invest into cryptocurrency! While that is an extremely exciting time, it is important to understand the simplest way to get started.

Even though you may know about the market, trends, and the under lying technology, there is still more to learn about trading, placing orders, and the platforms once they get their feet wet.

Start Simple – Use Coinbase

 For most people, I would highly recommend using Coinbase to start off your crypto adventure. A few reasons are:

  • Easy to connect your bank account
  • Insured in case of hacks
  • Well known and respected across the market
  • Easy to purchase and sell digital assets
  • User friendly backend platform and downloadable app for on the go use
  • Friendly and supportive customer service

Coinbase has been my go to for purchasing crypto and selling crypto seamlessly. While there are some alternatives to Coinbase, I highly recommend new traders and users stick with the simplest and most trusted platform, Coinbase.

Storing Your Digital Assets

While there are many ways to story your digital assets, my favorite is in an interest account with Blockfi. I wrote a post on this platform I use to store my BTC and ETH in.

The platform regularly pays me out interest at the end of every single month. So far this year alone, I have made an extra $200 just from storing some of my BTC and ETH in an account with them. It is sort of like a high interest savings account. BlockFI, does it right. It pays out it’s users at the end of every month, and account holders can deposit or withdraw anytime they would like.

Personally, this is a great idea to make money work while you sleep while you wait for BTC to go to the moon.