首页 区块链 链视界-给Web开发人员的以太坊入坑指南

链视界-给Web开发人员的以太坊入坑指南

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

对于 web 开发人员来说,webapp 的客户端服务器架构很清晰。

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

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

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

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

以太坊 Dapp 的架构如下所示:

如果仔细观察,你会发现所有客户端(浏览器)都是跟自己的程序实例通讯的,不再连到一个中心服务器上。这就是说每个想要跟 Dapp 交互的人都要在自己的电脑 / 手机上跑一份完整的区块链,也就是说想用这个程序,你必须先把整条区块链全都下载到本地。乍一看你可能会觉得这很搞笑,但这样确实能解决对中心服务器的依赖问题。

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

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

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

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

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

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

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

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

本文没有介绍区块链的内部工作机制,因为我想一篇文章能完成一件事情就够了,这里的重点是让你了解基于区块链的 dapp 跟中心化的 webapp 有什么不同。希望你现在对以太坊是什么,以及怎么用它搭建去中心化应用程序有了一个清晰的总体认识。

关于作者: 链视界

热门文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注