Site updated: 2020-06-18 12:41:30

This commit is contained in:
Jakub Sokołowski 2020-06-18 12:41:31 +02:00
parent 62d7923f13
commit 29bc873545
No known key found for this signature in database
GPG Key ID: 4EF064D0E6D63020
37 changed files with 264 additions and 264 deletions

File diff suppressed because one or more lines are too long

View File

@ -154,8 +154,8 @@ svg4everybody();
<meta property="og:site_name" content="Embark Blog"> <meta property="og:site_name" content="Embark Blog">
<meta property="og:description" content="Join us at gitter.im&#x2F;embark-framework&#x2F;Lobby"> <meta property="og:description" content="Join us at gitter.im&#x2F;embark-framework&#x2F;Lobby">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-06-15T08:04:44.417Z"> <meta property="article:published_time" content="2020-06-18T10:29:20.103Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.417Z"> <meta property="article:modified_time" content="2020-06-18T10:29:20.103Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -154,8 +154,8 @@ svg4everybody();
<meta property="og:site_name" content="Embark Blog"> <meta property="og:site_name" content="Embark Blog">
<meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications"> <meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-06-15T08:04:44.417Z"> <meta property="article:published_time" content="2020-06-18T10:29:20.103Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.417Z"> <meta property="article:modified_time" content="2020-06-18T10:29:20.103Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -154,8 +154,8 @@ svg4everybody();
<meta property="og:site_name" content="Embark Blog"> <meta property="og:site_name" content="Embark Blog">
<meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications"> <meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-06-15T08:04:44.418Z"> <meta property="article:published_time" content="2020-06-18T10:30:41.346Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.418Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.346Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="To Update to 2.5.0Embarks npm package has changed from embark-framework to embark, this sometimes can create conflicts. To update, first uninstall embark-framework 1 to avoid any conflicts with npm u"> <meta property="og:description" content="To Update to 2.5.0Embarks npm package has changed from embark-framework to embark, this sometimes can create conflicts. To update, first uninstall embark-framework 1 to avoid any conflicts with npm u">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2017-06-27T22:00:00.000Z"> <meta property="article:published_time" content="2017-06-27T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.199Z"> <meta property="article:modified_time" content="2020-06-18T10:29:19.853Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -158,7 +158,7 @@ svg4everybody();
<meta property="og:image" content="https://dappsforbeginners.files.wordpress.com/2015/02/ethereum-logo.jpg?w=200"> <meta property="og:image" content="https://dappsforbeginners.files.wordpress.com/2015/02/ethereum-logo.jpg?w=200">
<meta property="og:image" content="http://i.imgur.com/L1r6Ac5.png"> <meta property="og:image" content="http://i.imgur.com/L1r6Ac5.png">
<meta property="article:published_time" content="2017-10-24T22:00:00.000Z"> <meta property="article:published_time" content="2017-10-24T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.199Z"> <meta property="article:modified_time" content="2020-06-18T10:29:19.853Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://icons.iconarchive.com/icons/elegantthemes/beautiful-flat/128/plugin-icon.png"> <meta name="twitter:image" content="http://icons.iconarchive.com/icons/elegantthemes/beautiful-flat/128/plugin-icon.png">

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Embark is now part of Status and we are happy to announce Embark 3.0 by Status! New website and DocumentationEmbark has a new website and up to date documentation which can be found at https:&#x2F;&#x2F;framewo"> <meta property="og:description" content="Embark is now part of Status and we are happy to announce Embark 3.0 by Status! New website and DocumentationEmbark has a new website and up to date documentation which can be found at https:&#x2F;&#x2F;framewo">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2018-05-03T22:00:00.000Z"> <meta property="article:published_time" content="2018-05-03T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.199Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.345Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="More info can be found in the medium post"> <meta property="og:description" content="More info can be found in the medium post">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2018-06-19T22:00:00.000Z"> <meta property="article:published_time" content="2018-06-19T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:29:19.853Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -163,7 +163,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/page_4.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/page_4.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/page_5.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/page_5.png">
<meta property="article:published_time" content="2018-09-26T22:00:00.000Z"> <meta property="article:published_time" content="2018-09-26T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:30:36.148Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/dashboard.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/token_factory_1/dashboard.png">
@ -258,16 +258,16 @@ svg4everybody();
<p>In this tutorial series well create a Token Factory using Ethereum. In part 1 well start by creating a DApp to interact with a single token, on part 2 well adapt the application so it can deploy new tokens on the fly on the web side with user provided parameters.</p> <p>In this tutorial series well create a Token Factory using Ethereum. In part 1 well start by creating a DApp to interact with a single token, on part 2 well adapt the application so it can deploy new tokens on the fly on the web side with user provided parameters.</p>
<p>A Token is typically a unit used to represent a medium of exchange for some service or utility. They can represent a concert ticket, a membership, voting share, reputation points, etc…</p> <p>A Token is typically a unit used to represent a medium of exchange for some service or utility. They can represent a concert ticket, a membership, voting share, reputation points, etc…</p>
<h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><p>First of all, make sure you have <a href="https://geth.ethereum.org/">Go-Ethereum</a> and Embark installed.</p> <h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><p>First of all, make sure you have <a href="https://geth.ethereum.org/">Go-Ethereum</a> and Embark installed.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae62c430-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae62c430-b0bc-11ea-8e3d-a97ff14ee75d">$ npm -g install embark</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-85826730-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-85826730-b14f-11ea-a8c4-37fcefc7035f">$ npm -g install embark</code></pre>
<p>Now, lets create a new dapp</p> <p>Now, lets create a new dapp</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae67cd41-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae67cd41-b0bc-11ea-8e3d-a97ff14ee75d">$ embark new TokenFactory</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-85880c80-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-85880c80-b14f-11ea-a8c4-37fcefc7035f">$ embark new TokenFactory</code></pre>
<p>This will create a directory called TokenFactory, cd to it and run:</p> <p>This will create a directory called TokenFactory, cd to it and run:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6b0191-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6b0191-b0bc-11ea-8e3d-a97ff14ee75d">$ embark run</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858a2f60-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858a2f60-b14f-11ea-a8c4-37fcefc7035f">$ embark run</code></pre>
<p>In another console, in the same directory, run:</p> <p>In another console, in the same directory, run:</p>
@ -285,7 +285,7 @@ svg4everybody();
<p>Now open your browser at <a href="http://localhost:8000">http://localhost:8000</a> , start your favourite editor and lets get started!</p> <p>Now open your browser at <a href="http://localhost:8000">http://localhost:8000</a> , start your favourite editor and lets get started!</p>
<h2 id="Adding-the-Token-Contract"><a href="#Adding-the-Token-Contract" class="headerlink" title="Adding the Token Contract"></a>Adding the Token Contract</h2><p>Well add a typical ERC20 token contract to contracts/token.sol</p> <h2 id="Adding-the-Token-Contract"><a href="#Adding-the-Token-Contract" class="headerlink" title="Adding the Token Contract"></a>Adding the Token Contract</h2><p>Well add a typical ERC20 token contract to contracts/token.sol</p>
<p><em>warning: this contract is for educational purposes only, do not use it in production unless you know what you are doing</em></p> <p><em>warning: this contract is for educational purposes only, do not use it in production unless you know what you are doing</em></p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6bc4e1-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6bc4e1-b0bc-11ea-8e3d-a97ff14ee75d">pragma solidity ^0.4.23; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858aa491-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858aa491-b14f-11ea-a8c4-37fcefc7035f">pragma solidity ^0.4.23;
contract Token { contract Token {
@ -351,7 +351,7 @@ contract Token {
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">constructor(uint initial_balance) public &#123;</span><br><span class="line"> _balances[msg.sender] &#x3D; initial_balance;</span><br><span class="line"> _supply &#x3D; initial_balance;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">constructor(uint initial_balance) public &#123;</span><br><span class="line"> _balances[msg.sender] &#x3D; initial_balance;</span><br><span class="line"> _supply &#x3D; initial_balance;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>Lets rectify this by specifying the <em>initial_balance</em> value in <code>config/contracts.js</code></p> <p>Lets rectify this by specifying the <em>initial_balance</em> value in <code>config/contracts.js</code></p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6c8831-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6c8831-b0bc-11ea-8e3d-a97ff14ee75d">module.exports = { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858acba0-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858acba0-b14f-11ea-a8c4-37fcefc7035f">module.exports = {
default: { default: {
// ..... // .....
gas: &quot;auto&quot;, gas: &quot;auto&quot;,
@ -370,13 +370,13 @@ contract Token {
<p>Embark will detect the change and redeploy the contract with the new parameters.</p> <p>Embark will detect the change and redeploy the contract with the new parameters.</p>
<p>You can confirm that the token supply is 1000 by typing:</p> <p>You can confirm that the token supply is 1000 by typing:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6cfd61-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6cfd61-b0bc-11ea-8e3d-a97ff14ee75d">$ Token.methods._supply().call(console.log)</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858acba3-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858acba3-b14f-11ea-a8c4-37fcefc7035f">$ Token.methods._supply().call(console.log)</code></pre>
<p><img src="/assets/images/token_factory_1/console_2.png" alt="Console"></p> <p><img src="/assets/images/token_factory_1/console_2.png" alt="Console"></p>
<h2 id="Creating-the-UI"><a href="#Creating-the-UI" class="headerlink" title="Creating the UI"></a>Creating the UI</h2><p>For the sake of brevity, we wouldnt implement every single functionality in the contract. However, well implement two important features: Checking balance of an address and Transferring Tokens from one address to another.</p> <h2 id="Creating-the-UI"><a href="#Creating-the-UI" class="headerlink" title="Creating the UI"></a>Creating the UI</h2><p>For the sake of brevity, we wouldnt implement every single functionality in the contract. However, well implement two important features: Checking balance of an address and Transferring Tokens from one address to another.</p>
<h2 id="Checking-address-balance"><a href="#Checking-address-balance" class="headerlink" title="Checking address balance"></a>Checking address balance</h2><p>To input the address to query, well edit <em>app/index.html</em> and add a simple form.</p> <h2 id="Checking-address-balance"><a href="#Checking-address-balance" class="headerlink" title="Checking address balance"></a>Checking address balance</h2><p>To input the address to query, well edit <em>app/index.html</em> and add a simple form.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d2470-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d2470-b0bc-11ea-8e3d-a97ff14ee75d">&lt;html&gt; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858af2b1-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858af2b1-b14f-11ea-a8c4-37fcefc7035f">&lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Embark&lt;/title&gt; &lt;title&gt;Embark&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt;
@ -395,16 +395,16 @@ contract Token {
<p><strong>Adding jQuery</strong></p> <p><strong>Adding jQuery</strong></p>
<p>To simplify the code a bit in this tutorial, well add the jQuery library to our DApp.</p> <p>To simplify the code a bit in this tutorial, well add the jQuery library to our DApp.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d2472-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d2472-b0bc-11ea-8e3d-a97ff14ee75d">$ npm install jquery@3 --save</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858af2b3-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858af2b3-b14f-11ea-a8c4-37fcefc7035f">$ npm install jquery@3 --save</code></pre>
<p>Now edit the file <em>app/js/index.js</em> and add:</p> <p>Now edit the file <em>app/js/index.js</em> and add:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d4b80-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d4b80-b0bc-11ea-8e3d-a97ff14ee75d">import $ from &#39;jquery&#39;;</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b19c0-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b19c0-b14f-11ea-a8c4-37fcefc7035f">import $ from &#39;jquery&#39;;</code></pre>
<p><strong>Setting the default address</strong></p> <p><strong>Setting the default address</strong></p>
<p>Lets add to the input field field our own address as the default text so we can easily query our own balance. In the file <em>app/js/index.js</em> add:</p> <p>Lets add to the input field field our own address as the default text so we can easily query our own balance. In the file <em>app/js/index.js</em> add:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d4b82-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d4b82-b0bc-11ea-8e3d-a97ff14ee75d">import $ from &#39;jquery&#39;; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b19c2-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b19c2-b14f-11ea-a8c4-37fcefc7035f">import $ from &#39;jquery&#39;;
import EmbarkJS from &#39;Embark/EmbarkJS&#39;; import EmbarkJS from &#39;Embark/EmbarkJS&#39;;
$(document).ready(function() { $(document).ready(function() {
@ -428,14 +428,14 @@ $(document).ready(function() {
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">function balanceOf( address who ) constant returns (uint value) &#123;</span><br><span class="line"> return _balances[who];</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">function balanceOf( address who ) constant returns (uint value) &#123;</span><br><span class="line"> return _balances[who];</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>This method will be available in the JS code automatically as a promise, like:</p> <p>This method will be available in the JS code automatically as a promise, like:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d7291-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d7291-b0bc-11ea-8e3d-a97ff14ee75d">import Token from &#39;Embark/contracts/Token&#39;; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b19c4-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b19c4-b14f-11ea-a8c4-37fcefc7035f">import Token from &#39;Embark/contracts/Token&#39;;
Token.methods.balanceOf(address).call().then(function(balance) { });</code></pre> Token.methods.balanceOf(address).call().then(function(balance) { });</code></pre>
<p>So we can simply add a click event to the button, get the address, query the balance and set the result.</p> <p>So we can simply add a click event to the button, get the address, query the balance and set the result.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d7292-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d7292-b0bc-11ea-8e3d-a97ff14ee75d">import $ from &#39;jquery&#39;; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b40d0-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b40d0-b14f-11ea-a8c4-37fcefc7035f">import $ from &#39;jquery&#39;;
import EmbarkJS from &#39;Embark/EmbarkJS&#39;; import EmbarkJS from &#39;Embark/EmbarkJS&#39;;
import Token from &#39;Embark/contracts/Token&#39;; import Token from &#39;Embark/contracts/Token&#39;;
@ -466,7 +466,7 @@ $(document).ready(function() {
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">function transfer( address to, uint value) returns (bool ok)</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">function transfer( address to, uint value) returns (bool ok)</span><br></pre></td></tr></table></figure>
<p>The method will take two parameters, an address and a value. Like in the previous step, lets first add a simple form to the html page at <em>app/index.html</em>:</p> <p>The method will take two parameters, an address and a value. Like in the previous step, lets first add a simple form to the html page at <em>app/index.html</em>:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d99a0-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d99a0-b0bc-11ea-8e3d-a97ff14ee75d">&lt;html&gt; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b40d1-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b40d1-b14f-11ea-a8c4-37fcefc7035f">&lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Embark&lt;/title&gt; &lt;title&gt;Embark&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt;
@ -494,7 +494,7 @@ $(document).ready(function() {
<p>Then we will add the code to take the address and number of tokens from the inputs and call the contracts transfer method to <em>app/js/index.js</em>:</p> <p>Then we will add the code to take the address and number of tokens from the inputs and call the contracts transfer method to <em>app/js/index.js</em>:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d99a1-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d99a1-b0bc-11ea-8e3d-a97ff14ee75d">import $ from &#39;jquery&#39;; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b40d2-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b40d2-b14f-11ea-a8c4-37fcefc7035f">import $ from &#39;jquery&#39;;
import EmbarkJS from &#39;Embark/EmbarkJS&#39;; import EmbarkJS from &#39;Embark/EmbarkJS&#39;;
import Token from &#39;Embark/contracts/Token&#39;; import Token from &#39;Embark/contracts/Token&#39;;

View File

@ -164,7 +164,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/page_7.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/page_7.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/console_2.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/console_2.png">
<meta property="article:published_time" content="2018-10-26T22:00:00.000Z"> <meta property="article:published_time" content="2018-10-26T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:30:36.148Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/console_1.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/token_factory_2/console_1.png">
@ -260,13 +260,13 @@ svg4everybody();
<p>A Token is typically a unit used to represent a medium of exchange for some service or utility. They can represent a concert ticket, a membership, voting share, reputation points, etc…</p> <p>A Token is typically a unit used to represent a medium of exchange for some service or utility. They can represent a concert ticket, a membership, voting share, reputation points, etc…</p>
<h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><p>For the second part of the tutorial, Embark 3.0 or higher is required.</p> <h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><p>For the second part of the tutorial, Embark 3.0 or higher is required.</p>
<p>If you are using an older version you can update with:</p> <p>If you are using an older version you can update with:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6200e0-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6200e0-b0bc-11ea-8e3d-a97ff14ee75d">$ npm install -g embark@3</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-8582dc60-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-8582dc60-b14f-11ea-a8c4-37fcefc7035f">$ npm install -g embark@3</code></pre>
<p>Afterwards make sure that <code>embark version</code> returns 3.0 then restart embark with <code>embark run</code></p> <p>Afterwards make sure that <code>embark version</code> returns 3.0 then restart embark with <code>embark run</code></p>
<h2 id="Generalizing-Token-Interaction"><a href="#Generalizing-Token-Interaction" class="headerlink" title="Generalizing Token Interaction"></a>Generalizing Token Interaction</h2><p>Well start by generalizing the previous UI so we can input the address of a ERC20 Token and interact with it.</p> <h2 id="Generalizing-Token-Interaction"><a href="#Generalizing-Token-Interaction" class="headerlink" title="Generalizing Token Interaction"></a>Generalizing Token Interaction</h2><p>Well start by generalizing the previous UI so we can input the address of a ERC20 Token and interact with it.</p>
<p>First, well add a simple form to <em>app/index.html</em> to get address of the token we wish to interact with.</p> <p>First, well add a simple form to <em>app/index.html</em> to get address of the token we wish to interact with.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae67cd40-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae67cd40-b0bc-11ea-8e3d-a97ff14ee75d">&lt;html&gt; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-85880c81-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-85880c81-b14f-11ea-a8c4-37fcefc7035f">&lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Embark&lt;/title&gt; &lt;title&gt;Embark&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt;
@ -301,7 +301,7 @@ svg4everybody();
<p>In <em>app/js/index.js</em> well get the address given in the input, initialize a new contract object for that address and the Token ABI, and then assign it to a variable. Well also update the rest of code to use <em>currentToken</em> instead of <em>Token</em>. This way the existing code will work with the token we will be loading.</p> <p>In <em>app/js/index.js</em> well get the address given in the input, initialize a new contract object for that address and the Token ABI, and then assign it to a variable. Well also update the rest of code to use <em>currentToken</em> instead of <em>Token</em>. This way the existing code will work with the token we will be loading.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6b0190-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6b0190-b0bc-11ea-8e3d-a97ff14ee75d">import EmbarkJS from &#39;Embark/EmbarkJS&#39;; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858a2f61-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858a2f61-b14f-11ea-a8c4-37fcefc7035f">import EmbarkJS from &#39;Embark/EmbarkJS&#39;;
import $ from &#39;jquery&#39;; import $ from &#39;jquery&#39;;
import Token from &#39;Embark/contracts/Token&#39;; import Token from &#39;Embark/contracts/Token&#39;;
@ -354,7 +354,7 @@ $(document).ready(function() {
<p>Its <em>980</em> as expected (<em>1000</em> was the initial supply as configured in <em>config/contracts.json</em> and <em>20</em> was transferred out in <a href="/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/">part 1</a></p> <p>Its <em>980</em> as expected (<em>1000</em> was the initial supply as configured in <em>config/contracts.json</em> and <em>20</em> was transferred out in <a href="/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/">part 1</a></p>
<h2 id="Deploy-New-Tokens-on-the-fly"><a href="#Deploy-New-Tokens-on-the-fly" class="headerlink" title="Deploy New Tokens on the fly"></a>Deploy New Tokens on the fly</h2><p>Now that we have an UI to interact with an existing Token given its address, well add functionality to deploy tokens on the fly, each with their own initial supply.</p> <h2 id="Deploy-New-Tokens-on-the-fly"><a href="#Deploy-New-Tokens-on-the-fly" class="headerlink" title="Deploy New Tokens on the fly"></a>Deploy New Tokens on the fly</h2><p>Now that we have an UI to interact with an existing Token given its address, well add functionality to deploy tokens on the fly, each with their own initial supply.</p>
<p>First well add a simple form to <em>app/index.html</em> to get the desired supply of the new token to deploy.</p> <p>First well add a simple form to <em>app/index.html</em> to get the desired supply of the new token to deploy.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6bc4e0-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6bc4e0-b0bc-11ea-8e3d-a97ff14ee75d">&lt;html&gt; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858aa492-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858aa492-b14f-11ea-a8c4-37fcefc7035f">&lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Embark&lt;/title&gt; &lt;title&gt;Embark&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;css/app.css&quot;&gt;
@ -397,7 +397,7 @@ $(document).ready(function() {
<p>Embark makes the contract objects available in the js side, each contract object will have a method called <em>deploy</em> that can deploy new instances of the contract. This method can take parameters for the contract, and it will return a promise containing a contract object of the deployed contract.</p> <p>Embark makes the contract objects available in the js side, each contract object will have a method called <em>deploy</em> that can deploy new instances of the contract. This method can take parameters for the contract, and it will return a promise containing a contract object of the deployed contract.</p>
<p>In <em>app/js/index.js</em> well add the code to deploy new tokens client side using this functionality:</p> <p>In <em>app/js/index.js</em> well add the code to deploy new tokens client side using this functionality:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6c8830-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6c8830-b0bc-11ea-8e3d-a97ff14ee75d">$(document).ready(function() { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858acba1-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858acba1-b14f-11ea-a8c4-37fcefc7035f">$(document).ready(function() {
var currentToken; var currentToken;
$(&quot;#deployToken button&quot;).click(function() { $(&quot;#deployToken button&quot;).click(function() {
@ -451,7 +451,7 @@ $(document).ready(function() {
<p><img src="/assets/images/token_factory_2/page_7.png" alt="Screenshot"></p> <p><img src="/assets/images/token_factory_2/page_7.png" alt="Screenshot"></p>
<p>And its <em>500</em> as expected since thats the initial supply defined for the first token deployed.</p> <p>And its <em>500</em> as expected since thats the initial supply defined for the first token deployed.</p>
<h2 id="Disabling-the-Token-Deploy-from-Embarks-side"><a href="#Disabling-the-Token-Deploy-from-Embarks-side" class="headerlink" title="Disabling the Token Deploy from Embarks side"></a>Disabling the Token Deploy from Embarks side</h2><p>Now that your DApp can deploy Tokens on the fly, Its unnecessary for Embark to deploy the Token contract like it did in <a href="/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/">part 1</a>, however you still need Embark to make the Token contract available on the client side. To achieve this, go to config/contracts.js and set “deploy”: false for that contract</p> <h2 id="Disabling-the-Token-Deploy-from-Embarks-side"><a href="#Disabling-the-Token-Deploy-from-Embarks-side" class="headerlink" title="Disabling the Token Deploy from Embarks side"></a>Disabling the Token Deploy from Embarks side</h2><p>Now that your DApp can deploy Tokens on the fly, Its unnecessary for Embark to deploy the Token contract like it did in <a href="/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/">part 1</a>, however you still need Embark to make the Token contract available on the client side. To achieve this, go to config/contracts.js and set “deploy”: false for that contract</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6cfd60-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6cfd60-b0bc-11ea-8e3d-a97ff14ee75d">module.exports = { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858acba4-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858acba4-b14f-11ea-a8c4-37fcefc7035f">module.exports = {
&quot;default&quot;: { &quot;default&quot;: {
// ..... // .....
&quot;gas&quot;: &quot;auto&quot;, &quot;gas&quot;: &quot;auto&quot;,

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Building decentralized applications often involves many parts and components, such as Smart Contracts and a front-end, that have to play well together, in order to provide users the best experience po"> <meta property="og:description" content="Building decentralized applications often involves many parts and components, such as Smart Contracts and a front-end, that have to play well together, in order to provide users the best experience po">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-01-22T23:00:00.000Z"> <meta property="article:published_time" content="2019-01-22T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:29:19.853Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Part of developing a decentralized application is to also testing it thoroughly. Writing and executing tests locally is already much better than not doing anything on that regard, however, we can take"> <meta property="og:description" content="Part of developing a decentralized application is to also testing it thoroughly. Writing and executing tests locally is already much better than not doing anything on that regard, however, we can take">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-01-27T23:00:00.000Z"> <meta property="article:published_time" content="2019-01-27T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:29:19.853Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="In this tutorial we want to get very practical and build a decentralized Reddit application from scratch using Embark. The goal is to get a better idea of not only what parts and components are involv"> <meta property="og:description" content="In this tutorial we want to get very practical and build a decentralized Reddit application from scratch using Embark. The goal is to get a better idea of not only what parts and components are involv">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-02-03T23:00:00.000Z"> <meta property="article:published_time" content="2019-02-03T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:30:35.251Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>
@ -271,7 +271,7 @@ svg4everybody();
<p>If there are any issues in the “Available Services” section of the dashboard, go back to our <a href="/docs/installation.html">installation guide</a> and make sure all tools are available on your machine.</p> <p>If there are any issues in the “Available Services” section of the dashboard, go back to our <a href="/docs/installation.html">installation guide</a> and make sure all tools are available on your machine.</p>
<h2 id="Creating-the-Smart-Contract"><a href="#Creating-the-Smart-Contract" class="headerlink" title="Creating the Smart Contract"></a>Creating the Smart Contract</h2><p>Alright, next up we want to create the brain of our application, which is a Smart Contract written in <a href="https://solidity.readthedocs.io/en/v0.5.3/">Solidity</a>, that enables creating posts and votes. Were going to build it up step by step and afterwards well add some tests to ensure our code is actually working.</p> <h2 id="Creating-the-Smart-Contract"><a href="#Creating-the-Smart-Contract" class="headerlink" title="Creating the Smart Contract"></a>Creating the Smart Contract</h2><p>Alright, next up we want to create the brain of our application, which is a Smart Contract written in <a href="https://solidity.readthedocs.io/en/v0.5.3/">Solidity</a>, that enables creating posts and votes. Were going to build it up step by step and afterwards well add some tests to ensure our code is actually working.</p>
<p>First thing we do is creating a file <code>DReddit.sol</code> inside <code>contracts</code> with a Smart Contract like this:</p> <p>First thing we do is creating a file <code>DReddit.sol</code> inside <code>contracts</code> with a Smart Contract like this:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae631250-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae631250-b0bc-11ea-8e3d-a97ff14ee75d">pragma solidity ^0.5.0; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858378a0-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858378a0-b14f-11ea-a8c4-37fcefc7035f">pragma solidity ^0.5.0;
contract DReddit { contract DReddit {
@ -279,7 +279,7 @@ contract DReddit {
<p>Great! With that in place, lets introduce a couple of data structures for creating and storing topic posts. Lets say a post will have a creation date, a description and an address of the owner. Theres a few more things well have to add, but lets do it one step at a time. Heres what a <code>Post</code> struct could look like:</p> <p>Great! With that in place, lets introduce a couple of data structures for creating and storing topic posts. Lets say a post will have a creation date, a description and an address of the owner. Theres a few more things well have to add, but lets do it one step at a time. Heres what a <code>Post</code> struct could look like:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae67cd42-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae67cd42-b0bc-11ea-8e3d-a97ff14ee75d">struct Post { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-85880c82-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-85880c82-b14f-11ea-a8c4-37fcefc7035f">struct Post {
uint creationDate; uint creationDate;
bytes description; bytes description;
address owner; address owner;
@ -287,11 +287,11 @@ contract DReddit {
<p>Were also going to add an array to store all of our posts. Now that we have a <code>Post</code> struct, this is a simple as:</p> <p>Were also going to add an array to store all of our posts. Now that we have a <code>Post</code> struct, this is a simple as:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6b0192-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6b0192-b0bc-11ea-8e3d-a97ff14ee75d">Post [] public posts;</code></pre> <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858a2f62-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858a2f62-b14f-11ea-a8c4-37fcefc7035f">Post [] public posts;</code></pre>
<h3 id="Creating-posts"><a href="#Creating-posts" class="headerlink" title="Creating posts"></a>Creating posts</h3><p>Its time to add our first method which will enable users to add new posts to the platform. For that, well create the method <code>createPost(bytes _description)</code> where <code>_description</code> are the bytes that represent the posts text.</p> <h3 id="Creating-posts"><a href="#Creating-posts" class="headerlink" title="Creating posts"></a>Creating posts</h3><p>Its time to add our first method which will enable users to add new posts to the platform. For that, well create the method <code>createPost(bytes _description)</code> where <code>_description</code> are the bytes that represent the posts text.</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6b76c0-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6b76c0-b0bc-11ea-8e3d-a97ff14ee75d">function createPost(bytes _description) public { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858aa490-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858aa490-b14f-11ea-a8c4-37fcefc7035f">function createPost(bytes _description) public {
uint postId = posts.length++; uint postId = posts.length++;
posts[postId] = Post({ posts[postId] = Post({
creationDate: block.timestamp, creationDate: block.timestamp,
@ -303,7 +303,7 @@ contract DReddit {
<p>The first thing we do is creating an id for the post to be stored. We then use our <code>Post</code> struct to create a new post instance. Notice that we leverage the <code>postId</code> when storing the Post in our <code>posts</code> array. To set the owner, we take advantage of Soliditys global <code>msg</code> object which is available in every transaction.</p> <p>The first thing we do is creating an id for the post to be stored. We then use our <code>Post</code> struct to create a new post instance. Notice that we leverage the <code>postId</code> when storing the Post in our <code>posts</code> array. To set the owner, we take advantage of Soliditys global <code>msg</code> object which is available in every transaction.</p>
<h3 id="Emitting-events"><a href="#Emitting-events" class="headerlink" title="Emitting events"></a>Emitting events</h3><p>As were planning to build a front-end that reacts to posts being created, we need to emit an event so the front-end can subscribe to it accordingly. For that, we first introduce a new event type <code>NewPost</code> which will look something like this:</p> <h3 id="Emitting-events"><a href="#Emitting-events" class="headerlink" title="Emitting events"></a>Emitting events</h3><p>As were planning to build a front-end that reacts to posts being created, we need to emit an event so the front-end can subscribe to it accordingly. For that, we first introduce a new event type <code>NewPost</code> which will look something like this:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6bc4e2-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6bc4e2-b0bc-11ea-8e3d-a97ff14ee75d">event NewPost( <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858aa493-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858aa493-b14f-11ea-a8c4-37fcefc7035f">event NewPost(
uint indexed postId, uint indexed postId,
address owner, address owner,
bytes description bytes description
@ -311,7 +311,7 @@ contract DReddit {
<p>Once that is done, all we have to do is emit <code>NewPost</code> inside <code>createPost()</code> with the required data:</p> <p>Once that is done, all we have to do is emit <code>NewPost</code> inside <code>createPost()</code> with the required data:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6c8832-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6c8832-b0bc-11ea-8e3d-a97ff14ee75d">function createPost(bytes _description) public { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858acba2-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858acba2-b14f-11ea-a8c4-37fcefc7035f">function createPost(bytes _description) public {
... ...
emit NewPost(postId, msg.sender, _description); emit NewPost(postId, msg.sender, _description);
}</code></pre> }</code></pre>
@ -325,7 +325,7 @@ contract DReddit {
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">struct Post &#123;</span><br><span class="line"> ...</span><br><span class="line"> uint upvotes;</span><br><span class="line"> uint downvotes;</span><br><span class="line"> mapping(address &#x3D;&gt; Ballot) voters;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">struct Post &#123;</span><br><span class="line"> ...</span><br><span class="line"> uint upvotes;</span><br><span class="line"> uint downvotes;</span><br><span class="line"> mapping(address &#x3D;&gt; Ballot) voters;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>Heres the <code>NewPost</code> event which well use in a few moments:</p> <p>Heres the <code>NewPost</code> event which well use in a few moments:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6cfd62-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6cfd62-b0bc-11ea-8e3d-a97ff14ee75d">event NewVote( <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858af2b0-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858af2b0-b14f-11ea-a8c4-37fcefc7035f">event NewVote(
uint indexed postId, uint indexed postId,
address owner, address owner,
uint8 vote uint8 vote
@ -337,7 +337,7 @@ contract DReddit {
<p>With these building blocks at hand, lets implement a <code>vote(uint postId, uint8 _vote)</code> method. <code>_vote</code> is going to be one of our defined <code>Ballot</code> types and is represented as uint going from 0 - 2. Well use Soliditys <code>require()</code> statement to ensure we only vote on posts that actually exist, as well as nobody can actually vote multiple times on the same post.</p> <p>With these building blocks at hand, lets implement a <code>vote(uint postId, uint8 _vote)</code> method. <code>_vote</code> is going to be one of our defined <code>Ballot</code> types and is represented as uint going from 0 - 2. Well use Soliditys <code>require()</code> statement to ensure we only vote on posts that actually exist, as well as nobody can actually vote multiple times on the same post.</p>
<p>We then increment the up or down vote counter respectively, store the voter and emit a <code>NewVote</code> event:</p> <p>We then increment the up or down vote counter respectively, store the voter and emit a <code>NewVote</code> event:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d2471-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d2471-b0bc-11ea-8e3d-a97ff14ee75d">function vote(uint _postId, uint8 _vote) public { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858af2b2-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858af2b2-b14f-11ea-a8c4-37fcefc7035f">function vote(uint _postId, uint8 _vote) public {
Post storage post = posts[_postId]; Post storage post = posts[_postId];
require(post.creationDate != 0, &quot;Post does not exist&quot;); require(post.creationDate != 0, &quot;Post does not exist&quot;);
@ -357,7 +357,7 @@ contract DReddit {
<h3 id="Determine-if-users-can-vote"><a href="#Determine-if-users-can-vote" class="headerlink" title="Determine if users can vote"></a>Determine if users can vote</h3><p>We probably want to add an indication to the UI that a user has already voted on a certain post. For that itd be handy to have an API that actually tells us whether a user can vote on a post. Weve already discussed earlier that users cant vote multiple times on the same post, so figuring out if a user can vote is pretty straight forward. Heres what a <code>canVote(uint _postId)</code> method could look like:</p> <h3 id="Determine-if-users-can-vote"><a href="#Determine-if-users-can-vote" class="headerlink" title="Determine if users can vote"></a>Determine if users can vote</h3><p>We probably want to add an indication to the UI that a user has already voted on a certain post. For that itd be handy to have an API that actually tells us whether a user can vote on a post. Weve already discussed earlier that users cant vote multiple times on the same post, so figuring out if a user can vote is pretty straight forward. Heres what a <code>canVote(uint _postId)</code> method could look like:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d2473-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d2473-b0bc-11ea-8e3d-a97ff14ee75d">function canVote(uint _postId) public view returns (bool) { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858af2b4-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858af2b4-b14f-11ea-a8c4-37fcefc7035f">function canVote(uint _postId) public view returns (bool) {
if (_postId &gt; posts.length - 1) return false; if (_postId &gt; posts.length - 1) return false;
Post storage post = posts[_postId]; Post storage post = posts[_postId];
return (post.voters[msg.sender] == Ballot.NONE); return (post.voters[msg.sender] == Ballot.NONE);
@ -365,7 +365,7 @@ contract DReddit {
<h3 id="Fetching-votes"><a href="#Fetching-votes" class="headerlink" title="Fetching votes"></a>Fetching votes</h3><p>We also need a way to actually let users check what theyve voted for, in case they did. For that well add a simple <code>getVote()</code> method that looks something like this:</p> <h3 id="Fetching-votes"><a href="#Fetching-votes" class="headerlink" title="Fetching votes"></a>Fetching votes</h3><p>We also need a way to actually let users check what theyve voted for, in case they did. For that well add a simple <code>getVote()</code> method that looks something like this:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d4b81-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d4b81-b0bc-11ea-8e3d-a97ff14ee75d">function getVote(uint _postId) public view returns (uint8) { <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b19c1-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b19c1-b14f-11ea-a8c4-37fcefc7035f">function getVote(uint _postId) public view returns (uint8) {
Post storage post = posts[_postId]; Post storage post = posts[_postId];
return uint8(post.voters[msg.sender]); return uint8(post.voters[msg.sender]);
}</code></pre> }</code></pre>
@ -373,7 +373,7 @@ contract DReddit {
<p>And with that, our Smart Contract is pretty much done! Just to make sure that everything is compiling smoothly, we can execute <code>embark build --contracts</code> in case theres no existing Embark instance watching our work already.</p> <p>And with that, our Smart Contract is pretty much done! Just to make sure that everything is compiling smoothly, we can execute <code>embark build --contracts</code> in case theres no existing Embark instance watching our work already.</p>
<p>Heres the complete Smart Contract code (you can also find it in <a href="https://github.com/embarklabs/dreddit-tutorial">this repository</a>:</p> <p>Heres the complete Smart Contract code (you can also find it in <a href="https://github.com/embarklabs/dreddit-tutorial">this repository</a>:</p>
<pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-ae6d7290-b0bc-11ea-8e3d-a97ff14ee75d"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-ae6d7290-b0bc-11ea-8e3d-a97ff14ee75d">pragma solidity ^0.5.0; <pre class="highlight "><button class="c-button c-button--squared" data-clipboard-target="#code-858b19c3-b14f-11ea-a8c4-37fcefc7035f"><svg class="c-icon c-icon--xs"><use xlink:href="/assets/icons/symbols.svg#icon-copy-paste"></use></svg></button><code id="code-858b19c3-b14f-11ea-a8c4-37fcefc7035f">pragma solidity ^0.5.0;
contract DReddit { contract DReddit {

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="In the first part of this tutorial weve implemented a DReddit Smart Contract that comes with methods to create and vote on topic posts. In this part well continue right where weve left off and take"> <meta property="og:description" content="In the first part of this tutorial weve implemented a DReddit Smart Contract that comes with methods to create and vote on topic posts. In this part well continue right where weve left off and take">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-02-10T23:00:00.000Z"> <meta property="article:published_time" content="2019-02-10T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:30:35.251Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Hopefully youve read the first and second part of this tutorial on building a decentralized Reddit application using Embark. If not, we highly recommend you doing so, because in this part, well be f"> <meta property="og:description" content="Hopefully youve read the first and second part of this tutorial on building a decentralized Reddit application using Embark. If not, we highly recommend you doing so, because in this part, well be f">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-02-17T23:00:00.000Z"> <meta property="article:published_time" content="2019-02-17T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.200Z"> <meta property="article:modified_time" content="2020-06-18T10:30:35.251Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="The release of Embark 4.0 is close at hand and the release candidate, beta.1, will introduce some breaking changes. Lets see what it takes to update an Embark 3.x Dapp to Embark 4. Use any frontend b"> <meta property="og:description" content="The release of Embark 4.0 is close at hand and the release candidate, beta.1, will introduce some breaking changes. Lets see what it takes to update an Embark 3.x Dapp to Embark 4. Use any frontend b">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-03-17T23:00:00.000Z"> <meta property="article:published_time" content="2019-03-17T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.345Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -160,7 +160,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/cockpit_editor_release.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/cockpit_editor_release.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/website_release.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/website_release.png">
<meta property="article:published_time" content="2019-03-18T23:00:00.000Z"> <meta property="article:published_time" content="2019-03-18T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:30:35.251Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/EMBARK_HEADER_ALT_OPTIMIZED.jpg"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/EMBARK_HEADER_ALT_OPTIMIZED.jpg">

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="After four months of development were happy to tell you that weve released Embark 4.1 which comes with tons of bug fixes and a lot of new features. In this post well take a closer look at some of t"> <meta property="og:description" content="After four months of development were happy to tell you that weve released Embark 4.1 which comes with tons of bug fixes and a lot of new features. In this post well take a closer look at some of t">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2019-07-22T22:00:00.000Z"> <meta property="article:published_time" content="2019-07-22T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.345Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -156,7 +156,7 @@ svg4everybody();
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg">
<meta property="article:published_time" content="2019-11-17T23:00:00.000Z"> <meta property="article:published_time" content="2019-11-17T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:35:37.817Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg">

View File

@ -160,7 +160,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/crystal-thread-test.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/crystal-thread-test.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/nimble-creating-app.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/nimble-creating-app.png">
<meta property="article:published_time" content="2019-11-20T23:00:00.000Z"> <meta property="article:published_time" content="2019-11-20T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:35:37.817Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg">

View File

@ -156,7 +156,7 @@ svg4everybody();
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg">
<meta property="article:published_time" content="2019-11-27T23:00:00.000Z"> <meta property="article:published_time" content="2019-11-27T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:35:37.818Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/nim-crystal-header-img_NEW.jpg">

View File

@ -158,7 +158,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/web3-js-diagram.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/web3-js-diagram.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/ganache-cli.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/ganache-cli.png">
<meta property="article:published_time" content="2019-12-08T23:00:00.000Z"> <meta property="article:published_time" content="2019-12-08T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:33:51.644Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/web3-article-header.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/web3-article-header.png">

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="The Embark Project is proud to be working with Gitcoin and the Ethereum Community Fund to grow the Ethereum ecosystem. This January we are sponsoring a #Takebacktheweb Hackathon with bounties and ques"> <meta property="og:description" content="The Embark Project is proud to be working with Gitcoin and the Ethereum Community Fund to grow the Ethereum ecosystem. This January we are sponsoring a #Takebacktheweb Hackathon with bounties and ques">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-01-08T23:00:00.000Z"> <meta property="article:published_time" content="2020-01-08T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:30:35.252Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="If youve been following the development of Embark youre probably aware that we regularly put out alpha and beta releases for upcoming major or feature versions of Embark. In the past ~6 months since"> <meta property="og:description" content="If youve been following the development of Embark youre probably aware that we regularly put out alpha and beta releases for upcoming major or feature versions of Embark. In the past ~6 months since">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-01-12T23:00:00.000Z"> <meta property="article:published_time" content="2020-01-12T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.201Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.346Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Embark 5.1Interfaces &amp; Libraries ConfigurationEmbark 5.1 adds two new configuration settings for Smart Contract configuration: interfaces - Any Smart Contract that represent an interface or is use"> <meta property="og:description" content="Embark 5.1Interfaces &amp; Libraries ConfigurationEmbark 5.1 adds two new configuration settings for Smart Contract configuration: interfaces - Any Smart Contract that represent an interface or is use">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-01-27T23:00:00.000Z"> <meta property="article:published_time" content="2020-01-27T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:30:42.763Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Subspace 1.2New OrgSubspace is now under the @embarklabs Org. Versions under @status-im Org have been deprecated. # Using npmnpm install --save @embarklabs&#x2F;subspace# Using yarnyarn add @embarklabs&#x2F;sub"> <meta property="og:description" content="Subspace 1.2New OrgSubspace is now under the @embarklabs Org. Versions under @status-im Org have been deprecated. # Using npmnpm install --save @embarklabs&#x2F;subspace# Using yarnyarn add @embarklabs&#x2F;sub">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-01-28T23:00:00.000Z"> <meta property="article:published_time" content="2020-01-28T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:30:37.791Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -157,7 +157,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/web-security_banner.jpg"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/web-security_banner.jpg">
<meta property="og:image" content="https://cdn-media-1.freecodecamp.org/images/1*sd62aH6GGS1RoCR9t4QNyQ.png"> <meta property="og:image" content="https://cdn-media-1.freecodecamp.org/images/1*sd62aH6GGS1RoCR9t4QNyQ.png">
<meta property="article:published_time" content="2020-01-29T23:00:00.000Z"> <meta property="article:published_time" content="2020-01-29T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:35:34.485Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/web-security_banner.jpg"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/web-security_banner.jpg">

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Subspace 1.3New to subspace? Check out the website at http:&#x2F;&#x2F;subspace.embarklabs.io&#x2F; New methods available to track blocks, gas price and blocktimetrackBlock()Returns the block information for any new"> <meta property="og:description" content="Subspace 1.3New to subspace? Check out the website at http:&#x2F;&#x2F;subspace.embarklabs.io&#x2F; New methods available to track blocks, gas price and blocktimetrackBlock()Returns the block information for any new">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-02-10T23:00:00.000Z"> <meta property="article:published_time" content="2020-02-10T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:32:00.866Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Supporting Email Notifications in DAppsHaving notifications is important when the flow of your dapp is asynchronous, especially if funds are involved. As such, depending on having the user browse the"> <meta property="og:description" content="Supporting Email Notifications in DAppsHaving notifications is important when the flow of your dapp is asynchronous, especially if funds are involved. As such, depending on having the user browse the">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-02-16T23:00:00.000Z"> <meta property="article:published_time" content="2020-02-16T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:32:39.102Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -156,7 +156,7 @@ svg4everybody();
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/embark_logo.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/embark_logo.png">
<meta property="article:published_time" content="2020-02-18T23:00:00.000Z"> <meta property="article:published_time" content="2020-02-18T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:35:35.186Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/embark_logo.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/embark_logo.png">

View File

@ -158,7 +158,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/wasm_explorer_online_app.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/wasm_explorer_online_app.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/wasm-evm-benchmarks.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/wasm-evm-benchmarks.png">
<meta property="article:published_time" content="2020-02-23T23:00:00.000Z"> <meta property="article:published_time" content="2020-02-23T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:35:34.128Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/eWASM-header.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/eWASM-header.png">

View File

@ -163,7 +163,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/ETH2_perception.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/ETH2_perception.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/Who_are_you_building_for.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/Who_are_you_building_for.png">
<meta property="article:published_time" content="2020-03-03T23:00:00.000Z"> <meta property="article:published_time" content="2020-03-03T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:35:33.413Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/Header_Banner.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/Header_Banner.png">

View File

@ -155,7 +155,7 @@ svg4everybody();
<meta property="og:description" content="Subspace 2.0New to subspace? Check out the website at http:&#x2F;&#x2F;subspace.embarklabs.io&#x2F; Introducing Subspace Reacts componentsA new set of components were created to simplify the usage of Subspace withi"> <meta property="og:description" content="Subspace 2.0New to subspace? Check out the website at http:&#x2F;&#x2F;subspace.embarklabs.io&#x2F; Introducing Subspace Reacts componentsA new set of components were created to simplify the usage of Subspace withi">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-03-17T23:00:00.000Z"> <meta property="article:published_time" content="2020-03-17T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.202Z"> <meta property="article:modified_time" content="2020-06-18T10:35:40.667Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -160,7 +160,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/vyper_SimpleStorage-set-value-to-999.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/vyper_SimpleStorage-set-value-to-999.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/vyper_SimpleStorage-set-result.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/vyper_SimpleStorage-set-result.png">
<meta property="article:published_time" content="2020-03-23T23:00:00.000Z"> <meta property="article:published_time" content="2020-03-23T23:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.203Z"> <meta property="article:modified_time" content="2020-06-18T10:35:41.816Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/vyper_simple_storage_with_logo.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/vyper_simple_storage_with_logo.png">

View File

@ -162,7 +162,7 @@ svg4everybody();
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/mythx_dashboard_showing_submissions.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/mythx_dashboard_showing_submissions.png">
<meta property="og:image" content="https://blog.embarklabs.io/assets/images/mythx_analysis-detail.png"> <meta property="og:image" content="https://blog.embarklabs.io/assets/images/mythx_analysis-detail.png">
<meta property="article:published_time" content="2020-04-01T22:00:00.000Z"> <meta property="article:published_time" content="2020-04-01T22:00:00.000Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.203Z"> <meta property="article:modified_time" content="2020-06-18T10:35:45.392Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/mythx_dashboard.png"> <meta name="twitter:image" content="https://blog.embarklabs.io/assets/images/mythx_dashboard.png">

View File

@ -154,8 +154,8 @@ svg4everybody();
<meta property="og:site_name" content="Embark Blog"> <meta property="og:site_name" content="Embark Blog">
<meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications"> <meta property="og:description" content="Embark is a simple &amp; powerful framework for decentralized applications">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-06-15T08:04:44.418Z"> <meta property="article:published_time" content="2020-06-18T10:30:41.346Z">
<meta property="article:modified_time" content="2020-06-15T08:04:44.418Z"> <meta property="article:modified_time" content="2020-06-18T10:30:41.346Z">
<meta property="article:author" content="Embark"> <meta property="article:author" content="Embark">
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
</head> </head>

View File

@ -2,247 +2,247 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://blog.embarklabs.io/news/index.html</loc> <loc>https://blog.embarklabs.io/news/2020/04/02/2020-smart-contract-security-analysis-with-mythx/</loc>
<lastmod>2020-06-15T08:04:44.418Z</lastmod> <lastmod>2020-06-18T10:35:45.392Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/index.html</loc>
<lastmod>2020-06-15T08:04:44.418Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/community/index.html</loc>
<lastmod>2020-06-15T08:04:44.417Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/chat/index.html</loc>
<lastmod>2020-06-15T08:04:44.417Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2020/03/24/2020-using-vyper-with-embark/</loc> <loc>https://blog.embarklabs.io/news/2020/03/24/2020-using-vyper-with-embark/</loc>
<lastmod>2020-06-15T08:04:44.203Z</lastmod> <lastmod>2020-06-18T10:35:41.816Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/04/02/2020-smart-contract-security-analysis-with-mythx/</loc>
<lastmod>2020-06-15T08:04:44.203Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/02/17/decentralized-notifications/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2020/03/18/subspace-2.0/</loc> <loc>https://blog.embarklabs.io/news/2020/03/18/subspace-2.0/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod> <lastmod>2020-06-18T10:35:40.667Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/30/dapp-frontend-security/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/28/embark-5-1/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/02/19/embark-5-2-release/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/02/24/wasm-ewasm-what-and-why/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/02/11/subspace-1-3/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/29/subspace-1-2/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/03/04/2020-Blockchain-Developer-Survey/</loc>
<lastmod>2020-06-15T08:04:44.202Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/11/18/nim-vs-crystal-part-1-performance-interoperability/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/09/take-back-the-web-hackathon/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/03/18/upgrading-to-embark-4/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/03/19/introducing-embark-4/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/07/23/whats-new-in-embark-4.1/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/12/09/web3-what-are-your-options/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/11/28/nim-vs-crystal-part-3-cryto-dapps-p2p/</loc> <loc>https://blog.embarklabs.io/news/2019/11/28/nim-vs-crystal-part-3-cryto-dapps-p2p/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod> <lastmod>2020-06-18T10:35:37.818Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/13/announcing-embark-5/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/11/21/nim-vs-crystal-part-2-threading-tooling/</loc> <loc>https://blog.embarklabs.io/news/2019/11/21/nim-vs-crystal-part-2-threading-tooling/</loc>
<lastmod>2020-06-15T08:04:44.201Z</lastmod> <lastmod>2020-06-18T10:35:37.817Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/01/28/running-embark-tests-on-a-continuous-integration-server/</loc> <loc>https://blog.embarklabs.io/news/2019/11/18/nim-vs-crystal-part-1-performance-interoperability/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:35:37.817Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/02/11/building-a-decentralized-reddit-with-embark-part-2/</loc> <loc>https://blog.embarklabs.io/news/2020/02/19/embark-5-2-release/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:35:35.186Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2018/06/20/embark-3-1-released/</loc> <loc>https://blog.embarklabs.io/news/2020/01/30/dapp-frontend-security/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:35:34.485Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2018/10/27/how-to-create-a-token-factory-with-embark-part-2/</loc> <loc>https://blog.embarklabs.io/news/2020/02/24/wasm-ewasm-what-and-why/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:35:34.128Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/01/23/building-smart-contract-only-dapps/</loc> <loc>https://blog.embarklabs.io/news/2020/03/04/2020-Blockchain-Developer-Survey/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:35:33.413Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/</loc> <loc>https://blog.embarklabs.io/news/2019/12/09/web3-what-are-your-options/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:33:51.644Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/02/18/building-a-decentralized-reddit-with-embark-part-3/</loc> <loc>https://blog.embarklabs.io/news/2020/02/17/decentralized-notifications/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:32:39.102Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2019/02/04/building-a-decentralized-reddit-with-embark-part-1/</loc> <loc>https://blog.embarklabs.io/news/2020/02/11/subspace-1-3/</loc>
<lastmod>2020-06-15T08:04:44.200Z</lastmod> <lastmod>2020-06-18T10:32:00.866Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2017/10/25/embark-2-6-released/</loc> <loc>https://blog.embarklabs.io/news/2020/01/28/embark-5-1/</loc>
<lastmod>2020-06-15T08:04:44.199Z</lastmod> <lastmod>2020-06-18T10:30:42.763Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/13/announcing-embark-5/</loc>
<lastmod>2020-06-18T10:30:41.346Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/index.html</loc>
<lastmod>2020-06-18T10:30:41.346Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/index.html</loc>
<lastmod>2020-06-18T10:30:41.346Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/03/18/upgrading-to-embark-4/</loc>
<lastmod>2020-06-18T10:30:41.345Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/07/23/whats-new-in-embark-4.1/</loc>
<lastmod>2020-06-18T10:30:41.345Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2018/05/04/embark-3-0-released/</loc> <loc>https://blog.embarklabs.io/news/2018/05/04/embark-3-0-released/</loc>
<lastmod>2020-06-15T08:04:44.199Z</lastmod> <lastmod>2020-06-18T10:30:41.345Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/29/subspace-1-2/</loc>
<lastmod>2020-06-18T10:30:37.791Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2018/10/27/how-to-create-a-token-factory-with-embark-part-2/</loc>
<lastmod>2020-06-18T10:30:36.148Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2018/09/27/how-to-create-a-token-factory-with-embark-part-1/</loc>
<lastmod>2020-06-18T10:30:36.148Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2020/01/09/take-back-the-web-hackathon/</loc>
<lastmod>2020-06-18T10:30:35.252Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/02/04/building-a-decentralized-reddit-with-embark-part-1/</loc>
<lastmod>2020-06-18T10:30:35.251Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/02/18/building-a-decentralized-reddit-with-embark-part-3/</loc>
<lastmod>2020-06-18T10:30:35.251Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/03/19/introducing-embark-4/</loc>
<lastmod>2020-06-18T10:30:35.251Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/02/11/building-a-decentralized-reddit-with-embark-part-2/</loc>
<lastmod>2020-06-18T10:30:35.251Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/chat/index.html</loc>
<lastmod>2020-06-18T10:29:20.103Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/community/index.html</loc>
<lastmod>2020-06-18T10:29:20.103Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2018/06/20/embark-3-1-released/</loc>
<lastmod>2020-06-18T10:29:19.853Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/01/23/building-smart-contract-only-dapps/</loc>
<lastmod>2020-06-18T10:29:19.853Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2019/01/28/running-embark-tests-on-a-continuous-integration-server/</loc>
<lastmod>2020-06-18T10:29:19.853Z</lastmod>
</url>
<url>
<loc>https://blog.embarklabs.io/news/2017/10/25/embark-2-6-released/</loc>
<lastmod>2020-06-18T10:29:19.853Z</lastmod>
</url> </url>
<url> <url>
<loc>https://blog.embarklabs.io/news/2017/06/28/embark-2-5-released/</loc> <loc>https://blog.embarklabs.io/news/2017/06/28/embark-2-5-released/</loc>
<lastmod>2020-06-15T08:04:44.199Z</lastmod> <lastmod>2020-06-18T10:29:19.853Z</lastmod>
</url> </url>