<div dir="ltr">Hi,<br><br>Before exploring Cardano's virtual machine, I explored Ethereum virtual machine (EVM).<br>I'm sharing some figures I wrote for my self-study.<br><br>  Ethereum EVM illustrated<br>  <a href="http://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf">http://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf</a><br>  <a href="https://github.com/takenobu-hs/ethereum-evm-illustrated">https://github.com/takenobu-hs/ethereum-evm-illustrated</a><br><br>Haskell fits very well to DApps/Smart contracts :)<br><br>Regards,<br>Takenobu<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">2018-01-27 11:27 GMT+09:00 Takenobu Tani <span dir="ltr"><<a href="mailto:takenobu.hs@gmail.com" target="_blank">takenobu.hs@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Gregory,<br><br>Thank you for much information.<br>I have heard Cardano, but I did not know the details.<br><br>It's amazing!<br><br>Although Ethereum VM is stack based virtual machine, <br>Cardano's IELE(VM) is register based VM!, it's powerfull and beautiful!<br>In addition, it is protected by semantics.<br><br>Umm, High-level safety abstructed language (Haskell based) + register based VM (IELE) !<br>It's amazing.<br><br>Thank you for telling me details.<br>I will explore this.<span class=""><br><br>Thank you very much,<br>Takenobu<br><br></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2018-01-27 10:22 GMT+09:00 Gregory Popovitch <span dir="ltr"><<a href="mailto:greg7mdp@gmail.com" target="_blank">greg7mdp@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>



<div>
<div dir="ltr" align="left"><span class="m_7950651640952882076m_-1728815040249541742776561701-27012018"><font color="#000080" face="Calibri">Probably you are aware of Cardano (<a href="https://www.cardanohub.org/en/home/" target="_blank">https://www.cardanohub.org/en<wbr>/home/</a>), 
a new generation blockchain platform which uses languages inspired from Haskell. 
>From the whitepaper at <a href="https://whycardano.com/" target="_blank">https://whycardano.com/</a>:</font></span></div>
<div dir="ltr" align="left"><span class="m_7950651640952882076m_-1728815040249541742776561701-27012018"><font color="#000080" face="Calibri"></font></span> </div>
<div dir="ltr" align="left"><span class="m_7950651640952882076m_-1728815040249541742776561701-27012018"><font color="#000080" face="Calibri">"Systems such as Bitcoin provide an extremely inflexible and 
draconian scripting language that is difficult to program bespoke transactions 
in, and to read and understand. Yet the general programmability of languages 
such as Solidity introduce an extraordinary amount of complexity into the system 
and are useful to only a much smaller set of actors.
<p style="BOX-SIZING:border-box;FONT-SIZE:13px;FONT-FAMILY:"Open Sans",sans-serif;WHITE-SPACE:normal;WORD-SPACING:0px;TEXT-TRANSFORM:none;FONT-WEIGHT:400;COLOR:rgb(85,85,85);FONT-STYLE:normal;MARGIN:0px 0px 10px;LETTER-SPACING:normal;BACKGROUND-COLOR:rgb(250,251,252);TEXT-INDENT:0px;font-variant-ligatures:normal;font-variant-caps:normal;text-decoration-style:initial;text-decoration-color:initial">Therefore, 
we have chosen to design a new language called Simon<sup style="BOX-SIZING:border-box;FONT-SIZE:10px;VERTICAL-ALIGN:baseline;LINE-HEIGHT:0"><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://whycardano.com/#footnote6" target="_blank">6</a></sup><span> </span>in honor 
of its creator Simon Thompson and the creator of the concepts that inspired it, 
Simon Peyton Jones. Simon is a domain-specific language that is based 
upon<span> </span><em style="BOX-SIZING:border-box"><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://www.lexifi.com/files/resources/MLFiPaper.pdf" target="_blank">Composing contracts: 
an adventure in financial engineering</a></em>.</p>
<p style="BOX-SIZING:border-box;FONT-SIZE:13px;FONT-FAMILY:"Open Sans",sans-serif;WHITE-SPACE:normal;WORD-SPACING:0px;TEXT-TRANSFORM:none;FONT-WEIGHT:400;COLOR:rgb(85,85,85);FONT-STYLE:normal;MARGIN:0px 0px 10px;LETTER-SPACING:normal;BACKGROUND-COLOR:rgb(250,251,252);TEXT-INDENT:0px;font-variant-ligatures:normal;font-variant-caps:normal;text-decoration-style:initial;text-decoration-color:initial">The 
principal idea is that financial transactions are generally composed from a 
collection of foundational elements<sup style="BOX-SIZING:border-box;FONT-SIZE:10px;VERTICAL-ALIGN:baseline;LINE-HEIGHT:0"><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://whycardano.com/#footnote7" target="_blank">7</a></sup>. If one assembles a 
financial periodic table of elements, then one can provide support for an 
arbitrarily large set of compound transactions that will cover most, if not all, 
common transaction types without requiring general programmability.</p>
<p style="BOX-SIZING:border-box;FONT-SIZE:13px;FONT-FAMILY:"Open Sans",sans-serif;WHITE-SPACE:normal;WORD-SPACING:0px;TEXT-TRANSFORM:none;FONT-WEIGHT:400;COLOR:rgb(85,85,85);FONT-STYLE:normal;MARGIN:0px 0px 10px;LETTER-SPACING:normal;BACKGROUND-COLOR:rgb(250,251,252);TEXT-INDENT:0px;font-variant-ligatures:normal;font-variant-caps:normal;text-decoration-style:initial;text-decoration-color:initial">The 
primary advantage is that security and execution can be extremely well 
understood. Proofs can be written to show correctness of templates and exhaust 
the execution space of problematic transaction events, such as the creation 
of<span> </span><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://en.bitcoin.it/wiki/Value_overflow_incident" target="_blank">new money out of thin 
air</a><span> </span>or<span> </span><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://en.bitcoin.it/wiki/Transaction_Malleability" target="_blank">transaction 
malleability</a>. Second, one can leave in extensions to add more elements by 
way of soft forks if new functionality is required.</p>
<p style="BOX-SIZING:border-box;FONT-SIZE:13px;FONT-FAMILY:"Open Sans",sans-serif;WHITE-SPACE:normal;WORD-SPACING:0px;TEXT-TRANSFORM:none;FONT-WEIGHT:400;COLOR:rgb(85,85,85);FONT-STYLE:normal;MARGIN:0px 0px 10px;LETTER-SPACING:normal;BACKGROUND-COLOR:rgb(250,251,252);TEXT-INDENT:0px;font-variant-ligatures:normal;font-variant-caps:normal;text-decoration-style:initial;text-decoration-color:initial">That 
said, there will always be a need to connect CSL to overlay protocols, legacy 
financial systems, and special purpose servers. Thus we have 
developed<span> </span><a style="BOX-SIZING:border-box;TEXT-DECORATION:none;COLOR:rgb(31,107,206);OUTLINE-WIDTH:0px!important;OUTLINE-STYLE:none!important;OUTLINE-COLOR:invert!important" href="https://github.com/input-output-hk/plutus-prototype" target="_blank">Plutus</a><span> </span>as 
both a general purpose smart contract language and also a special purpose DSL 
for interoperability.</p>
<p style="BOX-SIZING:border-box;FONT-SIZE:13px;FONT-FAMILY:"Open Sans",sans-serif;WHITE-SPACE:normal;WORD-SPACING:0px;TEXT-TRANSFORM:none;FONT-WEIGHT:400;COLOR:rgb(85,85,85);FONT-STYLE:normal;MARGIN:0px 0px 10px;LETTER-SPACING:normal;BACKGROUND-COLOR:rgb(250,251,252);TEXT-INDENT:0px;font-variant-ligatures:normal;font-variant-caps:normal;text-decoration-style:initial;text-decoration-color:initial">Plutus 
is a typed functional language based on concepts from Haskell, which can be used 
to write custom transaction scripts. For CSL, it will be used for complex 
transactions required to add support for other layers we need to connect, such 
as our sidechains scheme.<span class="m_7950651640952882076m_-1728815040249541742776561701-27012018">"</span></p></font></span></div><br>
<div class="m_7950651640952882076m_-1728815040249541742OutlookMessageHeader" dir="ltr" lang="en-us" align="left">
<hr>
<font size="2" face="Tahoma"><b>From:</b> Haskell-Cafe 
[mailto:<a href="mailto:haskell-cafe-bounces@haskell.org" target="_blank">haskell-cafe-bounces@h<wbr>askell.org</a>] <b>On Behalf Of </b>Takenobu 
Tani<br><b>Sent:</b> Friday, January 26, 2018 8:05 PM<br><b>To:</b> Patrick 
Mylund Nielsen<br><b>Cc:</b> haskell-cafe<br><b>Subject:</b> Re: [Haskell-cafe] 
Haskell to Ethereum VM ?<br></font><br></div><div><div class="m_7950651640952882076h5">
<div></div>
<div dir="ltr">Hi Carter, Patrick,<br><br>Thank you for reply.<br>Quorum is 
interesting!<br>It would be very nice to be able to describe Ethereum's contract 
with Haskell DSL.<br>The characteristics about immutable and type will fit 
DApps.<br><br>Thank you very much,<br>Takenobu<br><br><br></div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2018-01-27 2:55 GMT+09:00 Patrick Mylund Nielsen <span dir="ltr"><<a href="mailto:haskell@patrickmn.com" target="_blank">haskell@patrickmn.com</a>></span>:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT:1ex;BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex">The 
  Quorum[1] team has been dreaming about such a<br>Haskell-beginner-friendly 
  bytecode-generating DSL for a very long time.<br>The user experience of 
  writing applications in a language where pitfalls<br>are so non-obvious is one 
  of the biggest pain points of Ethereum in general.<br><br>We would warmly 
  welcome something like this, and would definitely look<br>to use it in Quorum. 
  (Our EVM is the same as public Ethereum.)<br><br>[1]: A permissioned/non-PoW 
  version of Ethereum with high throughput and<br>privacy - <a href="https://github.com/jpmorganchase/quorum/" rel="noreferrer" target="_blank">https://github.com/jpmorgancha<wbr>se/quorum/</a><br><span class="m_7950651640952882076m_-1728815040249541742im m_7950651640952882076m_-1728815040249541742HOEnZb"><br>On 1/26/2018 11:43 AM, Carter Schonwald wrote:<br>> 
  Hello Takenobu, <br>> while theres definitely a lot of haskell code 
  out there that deals with<br>> ethereum (or implementing it!), i'm not 
  aware of anything targeting the<br>> evm isa from haskell or any other 
  mature functional programming language<br>><br>> On Fri, Jan 26, 2018 at 
  8:09 AM, Takenobu Tani <<a href="mailto:takenobu.hs@gmail.com" target="_blank">takenobu.hs@gmail.com</a><br></span>
  <div class="m_7950651640952882076m_-1728815040249541742HOEnZb">
  <div class="m_7950651640952882076m_-1728815040249541742h5">> <mailto:<a href="mailto:takenobu.hs@gmail.com" target="_blank">takenobu.hs@gmail.com</a>><wbr>> 
  wrote:<br>><br>>     Hi cafe,<br>><br>>  
     Does anyone know about the code generator from Haskell's syntax 
  to<br>>     Ethereum VM language (bytecode)?<br>>  
     That is, what corresponds to Solidity in 
  Haskell.<br>><br>>     Although Solidity is interesting, 
  it's difficult for me to achieve<br>>     quality and 
  safety.<br>>     Does such a project already 
  exist?<br>><br>>     Regards,<br>>    
   Takenobu<br>><br>><br>><br>>    
   _____________________________<wbr>__________________<br>>  
     Haskell-Cafe mailing list<br>>     To 
  (un)subscribe, modify options or view archives go to:<br>>    
   <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-b<wbr>in/mailman/listinfo/haskell-ca<wbr>fe</a><br>>  
     <<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-c<wbr>afe</a>><br>>  
     Only members subscribed via the mailman list are allowed to 
  post.<br>><br>><br>><br>><br>> 
  ______________________________<wbr>_________________<br>> Haskell-Cafe 
  mailing list<br>> To (un)subscribe, modify options or view archives go 
  to:<br>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/haskell-caf<wbr>e</a><br>> 
  Only members subscribed via the mailman list are allowed to 
  post.<br>><br></div></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>