<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blockchain on Time Friend</title><link>https://time-friend.com/en/categories/blockchain/</link><description>Recent content in Blockchain on Time Friend</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Wed, 29 Jul 2026 15:15:07 +0800</lastBuildDate><atom:link href="https://time-friend.com/en/categories/blockchain/index.xml" rel="self" type="application/rss+xml"/><item><title>Develop Your Ethereum Dapp with Eggjs(koa) &amp; web3.js</title><link>https://time-friend.com/en/archive/develop-ethereum-dapp-with-eggjs-koa-web3js/</link><pubDate>Wed, 10 Oct 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/en/archive/develop-ethereum-dapp-with-eggjs-koa-web3js/</guid><description>&lt;h1 id="eggjs"&gt;Eggjs&lt;/h1&gt;
&lt;p&gt;Eggjs is Alibaba&amp;rsquo;s open source enterprise-level Node.js framework based on Koa2.
eggjs is basically out-of-the-box, follows &amp;ldquo;Convention over Configuration&amp;rdquo;. In daily development, very smooth to use.
And ecosystem is also relatively complete, koa2 plugins can all be integrated into framework.&lt;/p&gt;
&lt;h2 id="eggjs-directory-structure"&gt;Egg.js Directory Structure&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;egg-project
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── package.json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── app.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── agent.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── app
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; ├── router.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── home.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── service &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── user.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── middleware &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── response_time.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── schedule &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── my_task.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── public &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── reset.css
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── view &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ | └── home.tpl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── extend &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── helper.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── request.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── response.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── context.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── application.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── agent.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; ├── plugin.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; ├── config.default.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── config.prod.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; ├── config.test.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; ├── config.local.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;||&lt;/span&gt; └── config.unittest.js &lt;span style="color:#f92672"&gt;(&lt;/span&gt;optional&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── test
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── middleware
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | └── response_time.test.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── home.test.js
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As above, directories agreed by framework:&lt;/p&gt;</description></item><item><title>Ethereum Development - Build Pet Shop</title><link>https://time-friend.com/en/archive/ethereum-development-build-pet-shop/</link><pubDate>Sat, 21 Apr 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/en/archive/ethereum-development-build-pet-shop/</guid><description>&lt;p&gt;Truffle&amp;rsquo;s pet shop is a very good example to understand Ethereum development.
Following official provided demo and tutorial, can completely experience entire development process.&lt;/p&gt;
&lt;h2 id="ganache"&gt;Ganache&lt;/h2&gt;
&lt;p&gt;For environment needs, and quickly set up a private chain environment locally.
truffle launched a visual private chain client:
&lt;a href="http://truffleframework.com/ganache/"&gt;Ganache Download Address&lt;/a&gt;
After downloading and running, you&amp;rsquo;ll see an interface like this:
&lt;img src="https://static.alili.tech/images/Jietu20180421-213717.jpg" alt=""&gt;&lt;/p&gt;
&lt;h2 id="initialize-your-project"&gt;Initialize Your Project&lt;/h2&gt;
&lt;p&gt;First we create a new directory, and initialize the project&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mkdir pet-shop
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd pet-shop
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ truffle unbox pet-shop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="project-directory-structure"&gt;Project Directory Structure&lt;/h2&gt;
&lt;p&gt;Here only lists important directories and files&lt;/p&gt;</description></item><item><title>Ethereum Development - Solidity Beginner Editor -- remix-ide</title><link>https://time-friend.com/en/archive/ethereum-development-solidity-beginner-editor-remix-ide/</link><pubDate>Fri, 20 Apr 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/en/archive/ethereum-development-solidity-beginner-editor-remix-ide/</guid><description>&lt;p&gt;In Ethereum application development, smart contract development is unavoidable.
Currently, remix-ide I found is the most beginner-friendly development tool.
Doesn&amp;rsquo;t need any other environment, can directly deploy and debug.
If I find more friendly ones, I&amp;rsquo;ll recommend in future blogs.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;remix is just an ordinary npm package&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ npm i remix-ide -g
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="startup"&gt;Startup&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ remix-ide
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Default will start local port 8080, open browser &lt;code&gt;http://localhost:8080&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.alili.tech/images/localhost_8080_.png" alt=""&gt;&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First we need to check auto compile
&lt;img src="https://static.alili.tech/images/Jietu20180421-180045.jpg" alt=""&gt;&lt;/p&gt;</description></item><item><title>Ethereum Development - Starting with the Truffle Scaffold</title><link>https://time-friend.com/en/archive/ethereum-truffle-setup/</link><pubDate>Thu, 19 Apr 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/en/archive/ethereum-truffle-setup/</guid><description>&lt;p&gt;I started learning blockchain development this week to build up some knowledge before the company&amp;rsquo;s blockchain project begins.
This blog post is a review of what I&amp;rsquo;ve learned.&lt;/p&gt;
&lt;h2 id="what-is-truffle"&gt;What is Truffle&lt;/h2&gt;
&lt;p&gt;Truffle is a development framework for the Solidity language on Ethereum. It is implemented in JavaScript.
Although it&amp;rsquo;s built with JavaScript, which we&amp;rsquo;re familiar with,
Truffle is mainly a tool for compiling and deploying &lt;code&gt;smart contracts&lt;/code&gt; (though it does have other features).&lt;/p&gt;</description></item></channel></rss>