<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Erwann</title>
    <description>The latest articles on DEV Community by Erwann (@erwann).</description>
    <link>https://dev.to/erwann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F80888%2F634b9d8a-c5ca-4f6a-a110-a26181f6f84b.jpg</url>
      <title>DEV Community: Erwann</title>
      <link>https://dev.to/erwann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/erwann"/>
    <language>en</language>
    <item>
      <title>Digital signatures : a gentle introduction</title>
      <dc:creator>Erwann</dc:creator>
      <pubDate>Mon, 09 Jul 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/erwann/digital-signatures--a-gentle-introduction-4j12</link>
      <guid>https://dev.to/erwann/digital-signatures--a-gentle-introduction-4j12</guid>
      <description>&lt;p&gt;Struggling with digital signatures ? Great, this article is for you. I promise I will not use complicated terminology, yet you will understand perfectly the logic behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is the situation
&lt;/h2&gt;

&lt;p&gt;You and your friend Diane were victim of identity usurpation : you received messages from someone claiming to be her, and you had no way to verify it directly without grabbing your phone and calling her.&lt;/p&gt;

&lt;h3&gt;
  
  
  The system
&lt;/h3&gt;

&lt;p&gt;So you both decided it was time to set up a system so that neither of you gets scammed again. Here is what you imagined :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From now on when she’ll send you a message, it will be encrypted in a very particular way : she’ll substitute each letter with the 4th letter following it in the alphabet. A becomes E, B =&amp;gt; F, etc.&lt;/li&gt;
&lt;li&gt;People have no way to know your encryption method ! So when you receive a message encrypted this way, you’ll be sure it comes from her.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Actually, this encryption method is very weak and people could know about it. But today we’ll just believe that you designed an encryption method that nobody but you can know about.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  First message
&lt;/h3&gt;

&lt;p&gt;You tell Diane to send you a message to test it right away. You receive this :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lipps mxw Hmeri&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You decrypt it :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hello its Diane&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great ! This was really sent by Diane.&lt;/p&gt;

&lt;p&gt;Now for the next messages you decide to make a small adjustment : she’ll send you the message encrypted &lt;strong&gt;and&lt;/strong&gt; the message in clear. It’s more convenient for you to see right away the content of the message and then verify it by decrypting the encrypted part. This way the first message would look like this :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lipps mxw Hmeri / Hello its Diane&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Usurpator is back
&lt;/h3&gt;

&lt;p&gt;A few days pass. Then you receive a new message :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lipps mxw Hmeri / Hi its Diane plz call me 132-433-459&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s looking suspicious. You decrypt the encrypted part :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hello its Diane&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Uh oh. It is encrypted correctly, but it does not correspond at all to the message in clear ! And you know &lt;strong&gt;you should only trust the encrypted message&lt;/strong&gt; , as only Diane could have generated it.&lt;/p&gt;

&lt;p&gt;You understand what happened : the usurpator intercepted your first test message, and tried to send another one looking like it. But as he doesn’t know how to encrypt, he couldn’t do anything but send the same encrypted part as the first message, which did not fool you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Encryption for identity verification
&lt;/h3&gt;

&lt;p&gt;If you manage to set up a system where one person can encrypt a message in her own way (she’s the only one who can encrypt it this special way), and everyone can verify that indeed she encrypted it, then you have an identity verification system. This is what digital signatures are all about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trust the encrypted message
&lt;/h3&gt;

&lt;p&gt;Here we sent the message in clear along with the encrypted message. In the next article about digital signatures you will understand why.&lt;/p&gt;

&lt;p&gt;But for now, remember : it’s only the encrypted message which allows us to verify the identity of the sender.&lt;/p&gt;

&lt;p&gt;_ &lt;strong&gt;Clear enough ?&lt;/strong&gt; Don’t miss my next article where I’ll get into more details about digital signatures._&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://twitter.com/Air1Ark"&gt;Follow me on Twitter&lt;/a&gt;&lt;/strong&gt; to be informed about new articles !&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cryptography</category>
      <category>signatures</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Blockchain Developer - How to get started</title>
      <dc:creator>Erwann</dc:creator>
      <pubDate>Wed, 04 Jul 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/erwann/blockchain-developer---how-to-get-started-ai2</link>
      <guid>https://dev.to/erwann/blockchain-developer---how-to-get-started-ai2</guid>
      <description>&lt;p&gt;I see a lot of people on the internet asking “How can I get from “regular” developer to blockchain developer ?”.&lt;/p&gt;

&lt;p&gt;I was exactly in this situation. I didn’t know much about blockchain or cryptography, but I was motivated so I started to learn by myself. Here are some recommendations based on my experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s a blockchain developer anyway?
&lt;/h2&gt;

&lt;p&gt;That’s a good question right ? The term “blockchain developer” is so generic that we don’t really know what’s behind it. Let’s quickly review what makes &lt;em&gt;you&lt;/em&gt; a blockchain developer.&lt;/p&gt;

&lt;p&gt;First and obvious point, you have a good understanding of the technology : you know what’s a blockchain, what are the technologies involved, and have some kind of a culture in the area (knowing different examples of how it’s applied on real projects).&lt;/p&gt;

&lt;p&gt;You might think you need to be a cryptography expert : &lt;strong&gt;wrong&lt;/strong&gt;. The best thing in software development is abstraction : you can use crypto libraries understanding what it does at a higher level, without getting into the nitty-gritty of its implementation.&lt;/p&gt;

&lt;p&gt;So what are the kind of things you can develop ?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications using APIs : you’re probably already doing that as a “regular” developer, the only difference here is the API you’re querying would be the one of a blockchain project.&lt;/li&gt;
&lt;li&gt;Blockchain library or core code : here you’re inside the box and are implementing the blockchain features. You need a bit more knowledge but again, libraries are here to help you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds clearer ? Good, now let’s get you started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read, read, read
&lt;/h2&gt;

&lt;p&gt;Yeah, start by reading a lot.&lt;/p&gt;

&lt;p&gt;I can’t recommend enough reading &lt;a href="https://bitcoinbook.info/"&gt;Mastering Bitcoin&lt;/a&gt; by Andreas Antonopoulos. By understanding how Bitcoin works, you are already half-way to your blockchain developer goal.&lt;/p&gt;

&lt;p&gt;Also, explore how other projects leverage the technology to provide real-world value. From decentralized file sharing to logistic management, there are a lot of applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical exercises
&lt;/h2&gt;

&lt;p&gt;Time to interact with the network ! Based on what you read before you can pick a project you like to continue on with the “exercises”. If in doubt, I’m suggesting you to check out my favorite project &lt;a href="https://ark.io"&gt;Ark.io&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a wallet
&lt;/h3&gt;

&lt;p&gt;This is the best way to start interacting with the network. Create your own wallet using one of the app from your project.&lt;/p&gt;

&lt;p&gt;You don’t have to put real money to do that : every cryptocurrency has a Devnet / Testnet. Just check how you can access it, generate your wallet, and get some coins in it (you might need to ask people to send you some).&lt;/p&gt;

&lt;p&gt;Once you have a wallet with coins in it, you can play and send transactions to a new wallet of yours for example. See how it propagates to the network and gets recorded on the blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up your node
&lt;/h3&gt;

&lt;p&gt;The next logical step is to set up your own node ! Just follow the instructions from your project to get it done.&lt;/p&gt;

&lt;p&gt;Then play with your node to see what it is to be part of the network :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check that you are in sync and receiving the last blocks&lt;/li&gt;
&lt;li&gt;Explore the last transactions (you should be able to do that with a Command Line Interface)&lt;/li&gt;
&lt;li&gt;Query your own API with a http client (if your node comes with API included)&lt;/li&gt;
&lt;li&gt;… go on and test any other thing your node is providing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contribute to a project
&lt;/h2&gt;

&lt;p&gt;Finally some coding ! Great thing about blockchain projects is that they are for the most part opensource.&lt;/p&gt;

&lt;p&gt;I chose to go with &lt;a href="https://ark.io"&gt;Ark.io&lt;/a&gt; because among other things, they are really welcoming external contributors. I recommend you to check it out if you haven’t already.&lt;/p&gt;

&lt;p&gt;Usually, for one project you have different kind of repositories you can contribute to :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node implementations in different languages&lt;/li&gt;
&lt;li&gt;Client libraries in different languages&lt;/li&gt;
&lt;li&gt;Wallet applications for desktop / mobile / web / …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a newcomer, I find wallets are the best way to get started :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s visual : you can see your changes in the user interface&lt;/li&gt;
&lt;li&gt;You can start fixing bugs or coding features without getting into the “blockchain stuff”&lt;/li&gt;
&lt;li&gt;You will understand and get comfortable with this first layer, it will give you confidence to go “down” to the other layers 😉&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now go and start coding ! Check the open issues and see if you can help resolve them. Talk with the team, they might have some suggestions for you.&lt;/p&gt;

&lt;p&gt;You can also go by yourself and test things, see what you can improve. Don’t worry there is always something you can do 😀&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep it going and always keep learning
&lt;/h2&gt;

&lt;p&gt;You’re on track, now keep contributing to opensource blockchain projects as you will gain experience and start mastering the technology. Remember, by doing this you are also building your “blockchain portfolio” as your opensource developments can be seen by everyone.&lt;/p&gt;

&lt;p&gt;My last advice would be : always keep learning. Things are moving fast in this space and you want to keep an eye on what’s happening. Not only you will “step up your game” but you might also find great opportunities or projects to work for.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading ! Now what would you recommend to a newcomer ? Leave a comment !&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://twitter.com/Air1Ark"&gt;Follow me on Twitter&lt;/a&gt;&lt;/strong&gt; to be informed about new articles !&lt;/em&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>tutorial</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
