蚊章汇 - 张开翔
type: channel
link: https://linuxcn.bwsl.wang/author/1339/
description: 张开翔
items: 新人必读：区块链实用型技能树

新人必读：区块链实用型技能树
type: item
date: 2019-12-19T17:38:00+08:00
description: 随着新一波的区块链热潮，许多同学怀着巨大的热情进入了这个领域，同时也会遇到不少疑惑，区块链开发需要哪些知识？怎么学习？从哪里学习？遇到问题怎么办？本文将试图给区块链领域新人一个快速实用的指引。一、基本 IT 技能区块链堪称“黑科技”，本身具有大量的技术元素，有志于从技术角度切入区块链的人，应该具备或掌握基本的 IT 技能，达到至少是常规级别“程序员”或“系统管理员”的技能水平。 首先需要熟练的 Linux 操作系统知识大多数区块链系统是可以跑在 Linux 上的，包括 CentOS 和 Ubuntu 等，你至少要会一些基本的 Linux 操作指令，比如 ls 查看目录、ps 或 top 查看进程、find 查找文件、netstat 查看网络、ulimit 检查系统参数限制、df/du 查看磁盘空间、用 apt/yum 安装软件等等，如果这些基本命令都不掌握，在 Linux 上操作肯定是举步维艰的。这方面的书和资料都很多，相信一星期就能上手。另外，善于 Linux 的 man 指令，可以获得每个命令的详细帮助。如果学会写 shell 脚本，那更如虎添翼，可以把大量的繁琐操作给自动化了。要有清晰的网络概念区块链本来是分布式系统，节点之间一定是通过网络相连的，只是跑起来的话，不需要多高深的网络知识，只需要了解什么是 TCP/IP；公网、内网、本地地址的区别；端口如何配置；节点和节点、SDK 和节点之间的互联是否会被防火墙和网络策略挡住；采用 ifconfig、telnet、ping、netstat 等命令检查网络信息和进行探测、定位网络问题。一般来说，Linux 书籍也都会介绍这部分内容。区块链周边的支持，如浏览器、中间件、业务应用，会依赖一些第三方基础软件，如 MySQL/MariaDB 数据库、Nginx 服务、Tomcat 服务等，至少懂得怎么去安装指定版本的软件，掌握修改这些软件的配置文件并使之生效的基本操作，了解各款软件的密码、权限配置和网络安全策略，以保护自身安全。 如果是基于云、Docker 或者 k8s 等容器环境构建，需要了解使用的服务商或容器的功能、性能、配置方式，包括对资源的分配：CPU、内存、带宽、存储等，以及安全和权限的配置、网络策略配置、运维方式，达到轻松分发构建的同时，还能保持其稳定性和可用性。 各种云服务商和容器解决方案都有周全的文档和客服服务渠道，可以帮助用户顺畅地使用。到编程语言阶段，可以根据自己的学习路径，选择不同的语言如果是使用 Java 语言，那就应该熟练掌握 Eclipse、IntelliJ IDEA 等集成 IDE，熟悉 Gradle 为主的工程管理软件，熟悉 Spring、Springboot 等 Java 的基础开发组件，熟悉在 IDE 或命令行下对资源路径如 ApplicationContext 等路径的定义，或许还有 myBatis 等流行的组件，这些都可以在 Java 相关的社区和网站找到资料和书籍。在熟练使用 Java 语言的情况下，采用 Java SDK 接入到区块链，跑起一个演示示例，将是非常轻松写意的事情。如果是采用其他语言，我们也提供了 Python、Node.js、Golang 等语言的区块链 SDK。 不同的语言，其安装包有不同的稳定版本，会采用不同的环境和依赖安装配置方法，会有不同的 IDE 和调试方法，就不在本文一一罗列，相信学习和使用语言这件事本身，于程序员已经是最基本的技能了。最后，作为在开源世界里冲浪的玩家，“全球最大同性交友网站”——GitHub 一定是要上的了注册 GitHub 账号，掌握 Git 版本管理工具的基本操作，克隆和拉取开源软件代码，提交议题，提交自己的修改，给开源项目提交拉取请求，再顺手点个星标，激情而有范儿，在开源世界里留下你的姓名。二、区块链领域的基础知识栈以下部分的知识和区块链或区块链某一个平台更加相关，从底到上依次是： HASH（哈希算法）、签名、证书严格来说，这并不是区块链领域的专有知识，只是必须具备的基础知识，包括 SHA3/SHA256/RIPEMD160 等摘要算法，以及这些算法和“区块链地址”的关系，基于公私钥的数字签名和验证方法，数字证书的概念和格式，比如 X.509 证书，以及保存证书/公私钥的文件格式，如 PEM 文件、keystore文件等。基础应用密码学基础应用密码学其实范围很广，作为入门者，至少要了解对称和非对称加密的常见算法，如 AES 对称加密，RSA、ECDSA 椭圆曲线等非对称加密算法，以及这些算法在签名验签、数据加密、通信协商和保护方面的作用。如果要使用国密，那么需要了解 SM2~SM9 一系列算法的概念和使用。分布式网络结构区块链是先天的“分布式网络系统”，节点和节点通过网络的 P2P 端口互连…