Mattock 区块链技术文档

Mattock希望构建一套能够对接实体世界资产的桥梁式的应用平台

基础设施

Mattock Core中的文档是开发人员完成设置开发环境过程的理想方式。我们建议将Linux(基于* .deb)操作系统作为默认环境。我们正式推荐并支持Ubuntu 18.04操作系统。您还可以在macOS / Linux Docker上使用Docker或在Windows上使用Docker来设置开发环境.

Mattock Core应用程序可用于通道。一个地址可以包含任意数量的参与者。用户创建新地址时,将生成新的地址ID和密码。然后可以与其他用户共享密码,以便他们可以加入地址并发送消息。使用该通道的密码作为种子,对发送到该通道的消息进行加密和解密。所有敏感数据均由用户的本地客户端处理,并且从未广播过未加密的数据。

技术栈

作为一个使用技术来制造DLT产品的团队,至关重要的是要明确我们使用的技术/工具,以便每个人都清楚我们都需要学习/使用什么才能制造出功能,快速,美观,可用且可靠!

Mattock Core是用TypeScript编写的,它一直在使用Lerna来管理其程序包的开发和发布,并使用Node.js作为执行环境。

开发工具

要使用Mattock Core开发应用程序,需要在计算机上安装以下开发工具:

1.NodeJS-由于Mattock Core是专门用NodeJS(JavaScript的服务器端框架)编写的,因此安装Node是核心开发的必要条件。

2.Hapi.js-用于构建应用程序和服务的丰富Web框架。我们的公共REST API的基础。

3.SocketCluster.io -SocketCluster是Node.js的开源实时框架。它支持直接的客户端-服务器通信和通过pub / sub通道的组通信。它旨在轻松扩展到任意数量的进程/主机。我们使用SocketCluster进行点对点通信,从而启用区块链协议。

4.PostgreSQL-我们的“标准”数据库是Postgres。Postgres是最“成熟”的开源关系数据库。它是100%免费的(包括所有“高级”功能)。

5.Lerna.js-用于管理具有多个程序包的JavaScript项目的工具。

6.TypeScript-一种用于JavaScript的应用程序规模的语言。TypeScript为JavaScript添加了可选类型,这些类型支持针对任何OS上的任何浏览器,任何主机的大规模JavaScript应用程序的工具。TypeScript编译为基于标准的可读JavaScript。

应用生命周期

为了成为使用任何应用程序的高效开发人员,您需要对自己如何引导及其内部工作方式充满信心,以避免常见的陷阱。如果您对使用的工具没有信心,将无法高效工作。为了使您有足够的信心,本文档将为您提供有关如何引导Core以及启动Core时执行的任务的高级概述。

1.我们注册了一个错误处理程序,这将有助于我们输出比node.js提供的更好的错误。

2.我们注册了配置服务,该服务将保存整个应用程序中使用的所有配置。

3.我们注册所有基本配置,例如令牌和网络名称。

4.我们注册了一个命名空间,该命名空间将用于路径和环境变量,以避免命名冲突。

5.我们注册用于日志,数据库存储或临时文件之类的所有系统路径。

6.我们加载环境变量以准备加载应用程序配置。

7.我们从先前指定的目录加载应用程序配置。

8.我们加载与应用程序启动期间指定的网络匹配的密码配置。

9.我们启动一个观察程序,如果配置有任何更改,它将重新加载Core。(可以配置为不启动)

10.我们注册所有基本服务,例如缓存,队列和验证。

11.我们加载所有已注册插件的服务提供商,验证其配置并将其存储以备后用。

文件系统

Mattock Core附带了一个文件系统抽象,可以轻松地从本地文件系统切换到远程文件系统。附带的默认驱动程序提供对本地文件系统的访问,但是使用您自己的文件系统驱动程序也很容易。

服务容器

Mattock Core服务容器负责管理绑定,依赖项和依赖项注入。我们选择的容器是InversifyJS,该容器将自己描述为A powerful and lightweight inversion of control container for JavaScript & Node.js apps powered by TypeScript。

IoC容器使用类构造函数来识别和注入其依赖项。InversifyJS具有友好的API,并鼓励使用最佳的OOP和IoC做法。它提供的多种功能以及严格的性能使其成为Mattock Core中类型安全至关重要的理想选择。

您可以在区块链浏览器存储库中找到完整的API文档,其中包含有关如何使用容器以及如何避免常见陷阱的数十种指南和最佳实践。