创建你的第一个去中心化应用(dapp)

创建去中心化应用(dapp)并不比创建常规的应用程序困难多少,只是创建去中心化应用要用去中心化的方式去思考,并且没有那么多成熟的类库可用。

本章会带你创建一个去中心化Twitter,我们将会介绍:

  • Go语言

  • 去中心化架构和IPFS分布式数据存储

  • Kerala,一个IPFS接口

  • Coinprism,一种管理彩币的钱包服务

  • Mikro,一个带有内部经济体系的去中心化消息应用程序

Go语言

我们将使用Go语言来创建去中心化应用。后端开发人员对Go语言表现出了浓厚的兴趣,因为它没有“回调地狱”式的语法,计算速度快,还有对并发友善的“go例程”。Erlang和Rust都号称比Go厉害;在某些方面可能确实如此,但跟Go语言比,它们的类库都还非常不成熟。

JavaScript最近也很流行。在Node.js问世后,JavaScript不再是只能用在前端的语言。开发人员能用这一种语言创建并维护整个网站(当然,还要有HTML/CSS)。JavaScript是Web语言,并且JavaScript开发人员可以用各种各样的框架来搭建他们的Web应用。尽管JavaScript很棒,但也有它的弱点。用JavaScript实现并发很难,它的值构造器也不好懂。Go弥补了这些不足,是专为分布式系统设计的编程语言。

我开发的Web应用既有用Go语言写的,也有用JavaScript写的。两种语言都各有优缺点,但我必须承认,用Go来做去中心化应用的效率更高。Google创建Go语言的目的就是为了满足自己在大型数据集上进行快速高效的大规模并发计算的需要,Go很好地解决了这个问题。自从第一版发布以来,Google内部使用Go语言的人数增长非常迅速。

Go既有C的编译速度和能力,又有Ruby的简洁优雅。Go是专为开发分布式系统打造的,所以我才想到用它来开发去中心化应用。另外,IPFS也是用Go开发的,这也是一个加分项,因为我们将分布式文件存储集成到系统中时不会有兼容性障碍。基于Go的Web框架很多,我们的选择包括Martini、Goji、Gorilla,甚至Go的标准net/http包。我一般会尽可能保持依赖栈的轻便性,所以选net/http,我的go-to,以及其他非用不可的Web应用库。

集中式架构

在构建基于服务器-客户端的标准Web应用时,有三种常用的范式,下面稍微介绍一下。

REST

服务器-客户端模型相当简单,并且已经成为在Web上交换数据的主要方式了。REST指的是表述性状态转移(RepresentationalStateTransfer),是一组指南和最佳实践,用于创建基于服务器-客户端模型的可伸缩Web应用。REST本身不是一项技术,它跟AJAX一样,是一种实践。这种实践鼓励大家使用HTTP协议中早已存在但极少使用的各种能力。用户只是将浏览器指向一个URL(统一资源定位器)就会发送一个HTTP请求。每个HTTP请求中都会包含一些参数,服务器可以根据这些信息来决定给发起请求的客户端什么样的响应。

CRUD

CRUD指的是创建-读取-更新-删除(Create-Read-Update-Delete)。这些都是数据存储库上的基本操作,用来直接处理记录或数据对象。离开了这些操作,记录就仅仅是被动的实体。通常情况下,它们就只是数据库表和记录。REST跟运行着的系统进行交互,而CRUD处理系统中的数据。开发人员一般会使用MongoDB或MySQL之类的数据库在他们的数据上执行CRUD动作。

MVC

MVC指的是模型-视图-控制器(Model-View-Controller),是目前最流行的软件编程范式。模型管理着应用程序的核心行为和数据。视图渲染应用程序的用户界面。控制器接收用户输入,根据需要来调用模型对象和视图,从而执行特定的动作。

原文地址:https://www.cnblogs.com/hzcya1995/p/13312774.html