给 Web 开发人员的以太坊入坑指南

Posted by

给 Web 开发人员的以太坊入坑指南

内容来源:infoq

原文作者:Murthy

翻译:海兴

给 Web 开发人员的以太坊入坑指南

以太坊现在各种学习资料数不胜数,但由于以太坊正处于飞速发展阶段,有些学习资料很快就过时了。所以想找到有价值的资料无异于大海捞针。我费了很大功夫,才建立起对以太坊的整体认识,搞清楚它的工作机制。我相信很多跃跃欲试的开发人员正面临着跟我一样的问题,所以我把自己的认识整理出来,希望能对大家有所帮助。

给 Web 开发人员的以太坊入坑指南

我们一般会把 web 程序部署在 AWS、Heroku 或某个云平台提供的云主机上,所有客户端都跟这个中心程序交互。这些客户端可能是浏览器,也可能是使用 API 的其它程序,不管怎样,总是客户端发起请求给服务器,服务器再跟数据库或缓存交互,读 / 写 / 更新数据库中的数据,然后给客户端发送一个响应。

大部分情况下,这个架构很好用。但有时候,如果数据库是公开的,所有人都可以安全地访问,不用把数据全权交给 webapp 的控制者,对你来说真的非常重要。

比如说你是 eBay 上的明星卖家,已经赚了上千个好评了。但不知为什么 eBay 忽然把你的账号给封了,这可能会让你损失惨重,甚至给你的生意带来毁灭性的打击。如果能把顾客对你的评论和打分都挪到另外一个平台上,比如到 eBay 的竞争对手那里,你是不是马上就会有种绝处逢生的感觉?

虽然 eBay 还充当着买卖双方的担保人,但每一笔生意他都是要抽取佣金的。如果不需要担保人,买卖双方不仅能降低交易成本,并且还能访问到自己的所有数据,你是不是会觉得特别理想?去中心化应用就是要帮你实现这个理想,而以太坊会让 Dapp(去中心化应用)的搭建变得非常轻松。

给 Web 开发人员的以太坊入坑指南

实际上也并不需要真的把整条区块链都下载下来,有几种两全其美的办法,既能得到去中心化的好处,又可以快捷地完成交互。

那么区块链究竟是什么呢?

数据库:以太坊网络中每出现几笔交易,就会打包成一个区块,并且每个新的区块都会连到区块链的最后一个区块上。所有的交易数据都放在这些连在一起的区块里,这就是区块链。

如果 eBay 用区块链做数据库,那么买卖双方之间发生的所有交易,不管是销售、退款,还是纠纷,都被记录在区块链上,并且所有人都能看到。为了确保网络中所有节点都有相同的数据副本,同时也为了确保写到这个数据库中的数据都是有效的,以太坊用了一种被称为工作证明的算法。

代码:刚才只是介绍了区块链作为数据库存储数据的一面。但购买、销售、取消订单、退款等诸如此类的业务逻辑要放在哪里呢?在以太坊上,我们用一种被称为 Solidity 的语言编写程序代码(被称为合约)。然后再用 Solidity 编译器将这些合约编译成以太坊字节码,部署到区块链上。虽然目前能够编写合约的不止 Solidity 一种语言,但其他语言相对来说要小众得多。

所以我们基本上可以说,区块链存储你的数据,存储你的代码,还在 EVM(以太坊虚拟机)上运行这些代码。

为了搭建在 web 上运行的 dapp,以太坊推出了一个 Javascript 库,web3.js,它可以连接区块链节点。所以我们只要把这个库加到自己熟悉的框架中就可以了,比如 reactjs、angularjs 或 vuejs。

这个平台的另一个重要特性是它的金融功能。如果我告诉你,只要用上 dapp,就会给你一个银行账户,你会不会觉得很吃惊?实际上不是一个银行账户,而是随便你创建多少个账户都行。这些账户被称为钱包,用来存放你的以太币(以太坊体系内所用的货币)和交易。

给 Web 开发人员的以太坊入坑指南

给 Web 开发人员的以太坊入坑指南

原文始发于微信公众号( 区块链社区HiBlock ):给 Web 开发人员的以太坊入坑指南