区块链应用开发实用型技能树

随着区块链和数字货币的热潮,许多朋友怀着巨大的热情进入了这个领域。有些人单纯的投资希望获利,有些人希望开发应用金额日运营获利。后面的文章中我们也会陆续给大家讲解投资的一些技巧,这片文章试图给区块链领域希望开发生态应用的新人一个快速实用的指引,包括区块链开发需要哪些知识?怎么学习?从哪里学习?遇到问题怎么办?

为什么分享这个区块链开发应用的实用指引呢?

因为随着Ai技术的大力发展,很多代码、调试等其实不需要我们自己去写了,甚至autogpt、agentgpt的开发,可以自动实现我们普通小白需要的任何产品,尽管这很简陋,但是已经有一个雏形了。而且GitHub上很多开源的项目可以直接拿过来修改,或者把代码直接丢给Ai,让他帮你分析,提出你的要求,让Ai给你提出修改的建议,让你能快速构建自己的应用,有了应用后可以通过FAB的开发者文档,快速接入FAB公链,例如社交、链游、Ai应用、聊天机器人、绘画等等。现在是一个科技大爆发的时代,不要把自己完全局限在一个领域,借助Ai你也可以很厉害。

所以我们分享出来这些基本的信息,希望有想法有能力的朋友,可以在FAB公链上开发有趣的生态,包括链游、智能合约、各种协议等等,FAB公链的所有东西代码都是完全公开的,开发者文档也已经完全开放。

就像我们之前一直强调的,FAB公链是一个开放开源的公链,欢迎大家加入进来,共同构建,而且随着FAB公链在萨尔瓦多签署各种协议的启动,FAB公链在整个国家的应用,相信这里面会有很多很多的机会,我们也欢迎有想法有能力的朋友加入进来,共同打造FAB大生态。

基本IT技能

区块链本身具有大量的技术元素,有志于从技术角度切入区块链的人,应该具备或掌握基本的IT技能,达到至少是常规级别“程序员”或“系统管理员”的技能水平。

但是随着Ai的发展,其实很多专业的技术不需要那么专业,完全可以交给Ai来做。这就极大的方便了新人。但是,专业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接入到区块链,跑起一个Demo Sample,将是非常轻松写意的事情。

还有其他语言,包括Python、Node.js、Golang等等。

不同的语言,其安装包有不同的稳定版本,会采用不同的环境和依赖安装配置方法,会有不同的IDE和调试方法,就不在本文一一罗列,相信学习和使用语言这件事本身,于程序员已经是最基本的技能了。

最后,作为在开源世界里冲浪的玩家,——github一定是要上的了。

注册github账号,掌握git版本管理工具的基本操作,clone和pull开源软件代码,提交issue,commit自己的修改,给开源项目提交pull request,再顺手点个star,激情而有范儿,在开源世界里留下你的姓名。

以上这些可能看着很难,也确实很难,但是,我们又要说但是了,随着Ai,以ChatGPT、notion ai、cloud、bond等ai的发展,很多都可以直接通过这些实现。

区块链领域的基础知识栈

以下部分的知识和区块链或区块链某一个平台更加相关,从底到上依次如下:

HASH(哈希算法)、签名、证书

严格来说,这并不是区块链领域的专有知识,只是必须具备的基础知识,包括SHA3 / SHA256 / RIPEMD160 等摘要算法,以及这些算法和“区块链地址”的关系,基于公私钥的数字签名和验证方法,数字证书的概念和格式,比如X.509证书,以及保存证书/公私钥的文件格式,如PEM文件、keystore文件等。

基础应用密码学

基础应用密码学其实范围很广,作为入门者,至少要了解对称和非对称加密的常见算法,如AES对称加密,RSA、ECDSA椭圆曲线等非对称加密算法,以及这些算法在签名验签、数据加密、通信协商和保护方面的作用。如果要使用国密,那么需要了解SM2~SM9一系列算法的概念和使用。

分布式网络结构

区块链是先天的“分布式网络系统”,节点和节点通过网络的P2P端口互连,客户端、SDK通过RPC/Channel端口互连,首先要保证网络之间是互通的,监听的地址和端口是对的,端口是开放的,防火墙和网络策略是正确的,用于安全连接的证书已经到位,才能保证区块链的“通则不痛”。

这也要求使用者具备基本的网络知识、网络工具,同时了解区块链特有的节点类型(共识节点、观察节点、轻节点等)、互连方式(点对点双向连接、JSON RPC的HTTP短连接、Channel长连接等)。

智能合约

智能合约可说是应用开发者直面区块链的一道大门,入得此门,精彩无穷。流行的智能合约语言是Solidity语言,这门源自以太坊,从诞生开始就是为区块链而来的。

Solidity语言更新活跃、文档完备,具有良好的一致性和事务性,功能足够实现中型的商业应用。

当然,它在实时调试、第三库支持、运行速度等方面还比不上成熟的语言,如果开发者想要用C++等语言编写智能合约,那就要对区块链上的计算范式进行深入了解,避免写出无法共识的智能合约来,一般是建议有深入的了解后再采用Solidity之外的其他语言编写合约。

要掌握Solidity合约,当然是通读文档,并动手尝试。

ABI接口原理

在采用EVM作为虚拟机的区块链上,EVM执行的是Solidity语言的合约。合约编译会生成后缀名为ABI的文件,其实里面就是该合约接口定义的JSON文本,可以用文本查看器查阅,了解你写的合约如何翻译成ABI里的接口,接口返回类型,参数列表,参数类型等,只要有合约的ABI文件,就可以调用区块链SDK的接口,解析这个合约相关的交易、返回值、回执等。

区块数据结构

区块(Block)有区块头和区块体。区块体有交易列表,交易列表里的每个交易(Transaction或Tx)有发起方、目标地址、调用方法和参数,以及发送者签名。交易的结果会生成一个“回执(Receipt)”,回执里包含被调用方法的返回值、运行过程生成的EventLog等……

了解这些,基本上就掌握了区块链数据的脉络,还可以继续深究数据结构里的merkle root以及对应的merkle tree是如何生成的,有什么作用(如用于SPV:Simplified Payment Verification)。

RPC接口

区块链节点暴露的功能接口统称为“RPC接口”。查看链上数据,包括区块、交易、回执、系统信息、配置信息,向链上发起交易,以调用智能合约、修改系统配置等,或者通过AMOP协议发送消息、监听事件,都是通过RPC接口。

几十个RPC接口建议一一走读,或善用搜索,以发现自己想要的接口。

准入和权限模型

节点准入是第一步,在链初始化后,其他节点或者SDK配置了相应的证书,才能接入到区块链上。

链上的角色用权限模型控制,包括管理员权限、发布合约的权限、创建表的权限、参数配置权限等,以避免角色之间操作混淆,某些角色既当运动员又当裁判员。

初学者需要仔细阅读区块链平台提供的技术文档了解原理,遵循操作手册的步骤进行操作。

数据存储模型

区块链节点会采用文件数据库(LevelDB或RocksDB),或者关系型数据库如MySQL保存数据,所以,链上是真的有“数据库”的。

写入数据库的数据包括区块、交易、回执、合约产生的状态数据等,是否写入“调用合约产生的历史数据”根据不同的平台而定。

共识机制原理

共识机制是区块链的灵魂,对共识机制进行深入学习,才可以深入理解区块链通过多方协作、达成高度一致性、支持交易事务性、防篡改防作恶的功效。

区块链的知识包罗万象,更深层次的知识还有分布式系统理论、博弈论、前沿密码学、经济学、社会学等,掌握以上的基础知识,再深入学习,举一反三,用场景去验证和探索创新式应用,方可发挥技术的潜力,感受分布式商业的魅力。

做一个怎样的学习者

在这个过程中,希望学习者做到:

读文档的耐心

很多开源项目文档篇幅很长,包括大量的技术解析和科普文章,这些海量的文字,是一笔巨大的技术财富,涵盖了项目的方方面面。如果能通读,足以解惑且深入。

排查环境和依赖问题的能力

软件牵涉的系统环境、第三方软件、软件的版本等常常有错综复杂的依赖关系,太高或太低的版本都可能会有一些问题,请注意阅读项目文档对软硬件环境和依赖的描述,保证自己的环境符合要求,并善用配置管理工具、软件安装工具获取和设置合适的版本。

调试能力

Solidity语言的调试工具完善程度尚未达到完美,但可以善用合约的返回值、EventLog等方式,通过WeBASE、控制台等趁手的工具进行调试,并查阅Solidity文档,了解问题可能出在哪里。

区块链节点的日志开启debug级别后,也会打印详细的信息,可以查阅运行日志,获取运行信息和可能的错误信息,将这些信息与自己所做的操作比如发交易的流程结合起来进行分析,提高调试效率。

同时,目前的开源软件通常会在屏幕上打印错误原因和解决问题的提示,仔细查看操作反馈,大概率能了解错误原因和解决方案。

代码阅读能力

开源软件的最大效能是把代码毫无遗漏的摊到了开发者和学习者面前,了解代码结构,查阅代码里的关键流程,用关键字去搜索代码里的对应实现,都可以深入系统细节,挖掘设计思想,定位问题,寻找优化方法。一个好学且硬核的程序员,足可通过代码,和世界对话。

问问题的方式方法

“一个好问题,比答案还重要”。

这篇文章是其他开发者社区的分享,我们也在这里分享给大家,希望大家借助Ai的爆发逐步构建自己团队的生态,就像我们上面讲的,欢迎大家共同构建FAB大生态。而且主动联系FAB公链,提交自己的想法,并有实际的生态应用的团队,都会得到FAB团队的辅助,就像我们之前介绍的摩天轮生态一样。

FAB公链大生态

FAB公链已经有多个生态正式开始运行,包括各种链游、商城等等,再加上我们之前介绍的基于FAB打造的各种生态,未来也会有更多基于FAB公链开发的生态上线,我们社区也将继续给大家分享讲解,助力大家在区块链web3.0的时代,打造属于自己的商业版图。

1、去中心化钱包+去中心化交易所(exchangily.com 所有交易手续费100%分红给亿币交易所代币EXG的持有人)

2、去中心化数字货币支付工具— Pay.cool支付,基于区块链的Web3.0时代的支付宝。

3、去中心化电商(madearn.com

4、NFT交易平台(collectiongala.com

5、去中心化溯源系统ID Dock(身份验证系统)

6、DeFi生态应用(Biswap.com

7、链游平台(gamearm.com

8、去中心化供应链DSCmap(Dex供应链)

如果您觉得好,请推荐给您身边的朋友并关注,谢谢您的支持!

也欢迎大家关注或收藏咱们频道,未来也将呈现更多的知识、教程。

Subscribe to FAB公链讲解员小K
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.