如何成为区块链编程高手:从入门到精通
作者:John Sonmez
进入未来最热门的开发者职业:区块链编程。现在正是入行的绝佳时机。
为什么选择区块链开发?
作为区块链开发者,未来几十年你都将处于高需求状态。
过去,区块链开发者主要服务于想要创建自己加密货币的人群,这类需求并不大。但现在,随着各方认识到其优势,区块链应用正飞速增长。政府和财富500强公司开始涉足区块链,它正在走向主流——对合格区块链程序员的需求呈爆炸式增长。
通过区块链编程致富
Simple Programmer的宗旨是帮助你取得成功并作为开发者赚取最多收入。区块链开发者的平均年薪为10.9万美元,自由职业者时薪为81-100美元。如果你想成为富有且成功的程序员,我们强烈推荐这条职业道路。
竞争仍然很小
在全球2000万软件开发者中,只有0.6%的人懂区块链编程。而且并非所有人都能达到按需交付高质量代码的水平。
学习区块链编程:这个3步教程将带你入门
作为初学者,学习区块链编程可能令人望而生畏。该从哪里开始?不用再担心了。本教程将指导你了解各个主题,让你可以逐一深入。
按部就班地学习!从基础开始掌握一切。你将克服 overwhelm,开始获得更深入的理解,并顺利掌握区块链编程——即使你现在还是个初学者。
1. 区块链编程基础
你将学习区块链编程基础知识,例如:
- 了解区块链技术
- 区块链如何改变软件开发行业
- 作为区块链开发者具体做什么
- 其用例有哪些
2. 为区块链编码
- 如何操作
- 哪些语言最好
- 需要什么软件和硬件
3. 如何在你作为区块链程序员的职业生涯中获胜
- 需要培养的技能
- 你的开发者路线图
- 你能赚多少钱
准备好了吗?让我们开始吧!
了解技术
区块链是由计算机集群(而非单一实体)管理的时间戳序列不可变记录数据。它是一种去中心化且不可破坏的电子账本,用于记录经济交易,是透明数据传输的高度可靠技术。
它遵循链的基本原理,每个区块都紧密安全。例如,当使用区块链技术开发应用程序时,用户有权查看并向软件数据库添加记录。他们无法修改或删除任何数据记录,这提高了整个过程的完整性。
什么是智能合约?
智能合约是一种软件协议,无需第三方即可执行合同,如可信交易。智能合约存储在区块链上,当某些预定条件满足时自动执行。
区块链如何改变软件开发行业
软件开发行业已经见证了向云产品的重大转变。云技术促进了数字资产的去中心化,这构成了区块链的支柱。
区块链技术正在飞跃发展,解决了软件行业面临的各种挑战。其目的是确保生产性测试活动,增强团队内部协作,并增加智能合约在软件开发中的使用。
为什么在软件开发中使用区块链?
正如我所说,区块链软件高度安全。它用于在透明账本中存储数据以及在点对点网络中传输数据。具有增强安全性和更高质量的移动应用程序的增加导致了面向区块链的应用程序的兴起。
面向区块链的软件(BOS)系统的主要特点如下:
- 数据复制:数据被复制并存储在数千个系统中,确保数据安全。每个节点都有区块链代码的副本。
- 需求检查:BOS在处理验证前检查交易要求。
- 交易记录:BOS在由共识算法创建的互连块的顺序日志中记录交易。
- 公钥密码学:交易基于公钥密码学。
这些特性使区块链软件在确保数据安全方面具有巨大优势。
在软件行业中的应用
区块链技术作为软件质量保证的推动力,确保安全,这在金融行业至关重要。许多知名公司正在探索将区块链技术集成到其数据库中以获得最大安全性的机会。
例如,通用电气计划在其航空部门计划中实施区块链开发的数据库。他们还在开发可以管理销售、跟踪、记录保存、库存细节的软件,具有高端安全性、透明度和完整性。
在传统开发方法中,透明度与完整性相冲突,因为数据的透明度增加了有人篡改的机会。但借助区块链技术,它们共存并作为公司的附加优势提供。
什么是区块链编程?
区块链编程是编写完全按程序运行且无任何欺诈机会的智能合约,并为区块链构建端到端应用程序。
因此,区块链编码要么是:
- 设计区块链点对点技术及其过程
- 开发使用该技术的应用程序
究竟什么是区块链开发者?
作为区块链开发者,你要么在区块链本身上工作——这将使你成为核心开发者。要么,你是区块链软件开发者——设计智能合约并创建去中心化应用程序(dApps)。
成为核心开发者比成为区块链软件开发者更难。
区块链最佳编程语言
以下是几种区块链编程语言、它们的用途以及一些进一步学习的资源。每个部分都将是纯介绍性的,因为该主题可能非常广泛且充满代码。
1. C++
让我们从最古老的C++开始。该语言于1985年通过Bjarne Stroustrup的努力诞生。那时,基本的C语言存在,但它是面向过程的;C++作为面向对象的升级扩展出现(其中数据和函数捆绑到一个称为“对象”的包中)。对于完全的新手,面向对象的产品可以在其他平台上重用,无需重新编码。
C++保留了C的效率、安全性和灵活性。其常青性质使其成为区块链编码的核心语言,包括比特币区块链。但对新手的警告是:作为一种类型唯一且语法相当过时的语言,学习曲线有点陡峭。然而,由于大多数区块链技术都是用这种语言编写的,你为学习这种语言付出的任何努力都将获得丰厚的回报。
以下是C++更适合区块链编码的更多原因:
- 更好的内存控制:区块链生态系统中有很多需求。例如,平台需要是一个安全的堡垒,但同时以更快的速度执行交易并与所有节点交互。为了实现所有这些,你需要更好地控制内存和CPU使用。C++可以为你提供这一点。
- 出色的多线程:线程是要同时执行的指令束。在区块链开发期间,你会遇到可以并行化和不能并行化的任务。大多数语言只能处理其中一项任务,而不能同时处理两者。猜猜看,C++允许你同时处理两者。
- 编译时多态:如前所述,C++是一种面向对象编程(OOP)语言。多态(以多种方式使用某个特性)恰好是OOP的一个属性。现在,通过C++编码你的区块链,你将能够单独执行某些任务,从而增强整个数字账本的性能。
- 代码隔离:这种古老但革命性的编码语言具有命名空间特性,可以从一个地方运送到另一个地方。但有时会发生冲突并扭曲整个系统。然而,由于语言的分段能力将各种API分组不同,代码隔离/分离可以变得更容易一些。
- 成熟度:作为最古老的编码语言之一,C++很成熟并定期更新。除此之外,该语言还具有调试器和特殊分析工具等实用功能,可以检测或优化各种功能。这种语言的复杂性和最新性可能是中本聪将其用于比特币源代码的一些原因。
2. Python
Python是另一种简单的编码语言,适合害怕C++复杂性的初学者程序员。它由一位名叫Guido van Rossum的荷兰程序员于1991年开发。该语言的结构基于一个简单的前提:简单性、可读性和极简主义。
这种语言的简单性使其得到了大量新老开发者的支持。Python使用简单且不那么可怕的空白,而不是C++中用于表示代码块的花括号和关键字。
简单性很容易被理解为低效。然而,Python足够好,可以构建稳定可靠的复杂数字账本。最棒的部分是:这种语言是脚本化的,可以编译和解编译。例如,当你在代码中发现错误时,你只需修复它并重新加载应用程序。
对于其他语言如C++,你需要停止应用程序,在源代码中修复错误,重新编译,然后重新启动应用程序。这是相当多的工作,可以通过选择Python来避免。此外,该语言为开发者提供了一个庞大的免费资源中心,他们可以用来编写区块链代码。
3. JavaScript
JavaScript是万维网上最常用的语言之一。如果你想要一个具有漂亮UI的交互式站点,这就是要使用的语言。所有主要浏览器如Google Chrome和Firefox都支持它。
我们已经说过,区块链大致上是一个一个接一个放置的块系统。然而,这个账本有一些特别之处——它是不可变的,意味着一旦数据被写入,就无法撤销。JavaScript是制作简单但防篡改的区块链的首选语言之一,黑客和其他欺诈者无法更改。只是有一个挫折:该语言缺乏SHA256哈希函数。
4. Solidity
这是最复杂的高级语言,应用了JavaScript的脚本和函数以及C++的类。该语言不仅对初学者友好,还提供了关于如何使用其代码的提示和说明。虽然该语言不是很复杂,但那些对现代编程语言有相当掌握的人有优势。
尽管Solidity仍在努力在编码世界中立足,但以太坊(比特币之后的第二大加密货币)已经在使用它。嗯,他们创造了这种语言,所以他们成为第一个使用它的人是有道理的。然而,以太坊区块链在速度和创建智能合约的便利性方面是最有效的之一。
因此,如果你想创建去中心化应用程序、举行首次代币发行或构建安全、不可变和多用途的区块链,Solidity是要使用的语言。对于任何希望将智能合约集成到其数字账本中的人来说,这是一门必须知道的语言。关于Solidity的教程,你可以查看ConsenSys Academy或readthedocs.io的语言文档。
5. GO
GO是GOLang的缩写,一种相对现代的编码语言,于2007年在Google开发,并于2012年正式发布供公众使用。这种强大且多用途的编码语言是为了结合其他常见语言(如JavaScript)的语法和用户友好性,同时保留较旧语言(如C和C++)的可靠安全方面而创建的。
GO本质上在操作系统中运行,这意味着最大的灵活性,尤其是在同时处理区块链的几个部分时。以太坊的SDK协议是用GO编写的,并且这种语言还有许多其他区块链应用。
作为开发者可以工作的9个区块链用例
每年都有更多的区块链用例。正在为不同行业开发应用程序:
- 网络安全
- 医疗保健
- 制造业
- 法律和政府
- 慈善
- 零售
- 房地产
- 旅游业
- 媒体 以及许多其他行业。
如果你成为区块链开发者,你可以选择所有这些行业中你想从事的用例。
如何编码区块链——简化为5个简单步骤
当你还是初学者时,你可能不知道为你编码区块链的过程会是什么样子。让我们给你最简单的例子来说明如何编码区块链。
简而言之,它是这样工作的:
- 在IDE中编码你的智能合约或dApp
- 在本地区块链上测试它
- 运行或连接到节点
- 在测试网上测试它
- 部署它
区块链编程需要什么?
软件
- 一个IDE(集成开发环境)来编译、测试和运行你的区块链软件。例如Hardhat、Truffle和Remix,其中Remix是最容易使用的。
- 前端环境,如Node.JS,用于编程dApp的用户界面部分
- 一个API来探索区块链数据和交易(例如:blockchain.com的开发人员API)
- 区块链核心,如比特币,或以太坊的客户端,例如,在你的计算机上编译以运行你自己的节点
- 或者像NOWNodes这样的服务,将你连接到节点。他们还提供一个区块浏览器。
硬件 硬件要求与我们概述的编程所需类似。请考虑运行自己的节点带来的额外压力。
开始时,在自己的PC上运行节点是可以的。从长远来看,你可能会考虑用另一台计算机专门运行节点。这样你将获得更好的性能和安全性,并且不会给主PC增加额外压力。
硬件的最大瓶颈是硬盘大小。例如,以太坊需要大量的来回通信,并占用大量硬盘空间。你需要一个像SSD这样的快速硬盘——以及一堆空余空间:虽然整个比特币区块链大小只有几千兆字节,但以太坊大约有1太字节大小。
区块链编程需要什么?
- CPU:2-4核
- RAM:8-16 GB RAM
- 硬盘:500-1000+GB空闲空间(最好是SSD)
- 带宽:10 MBit/s – 25+ Mbit/s
你需要掌握的顶级7项区块链开发者技能
这个问题没有明确的答案,因为区块链技术仍处于发展的早期阶段。然而,2022年成为区块链开发者可能需要的一些技能包括:
1. 掌握基本密码学概念
密码学对程序员来说可能很可怕。但基本的密码学概念将支撑你作为区块链开发者的工作——因此请确保你熟悉基础知识:
- 哈希函数
- 加密
- 公钥和私钥
- 签名
如果你要编码去中心化应用程序,你将使用这些概念。首先在这个领域提升技能是有意义的!
2. 理解区块链和分布式账本的工作原理
什么是区块链?什么是分布式账本?如果你想成为一个好的区块链编码员,你需要能够回答这些问题。
因为你的工作要么是直接设计这些东西(作为核心开发者),要么是在它们之上构建应用程序(作为区块链软件开发者)。
要获得这种理解,你可以从一本关于区块链的初级书籍开始。
3. 了解流行的区块链平台
熟悉最流行的区块链平台及其工作原理,例如:
- 以太坊
- Hyperledger
- Stellar
一旦你知道每个区块链平台的专业特性,你就可以接手运行在它们上的项目。
4. 具备用于Web开发、智能合约和Web3的语言编码技能
作为有抱负的区块链开发者,要具体说明你正在学习哪些编码技能——在你的职业生涯中的某个时刻,你需要使用以下语言。
但要聪明地利用你的时间和精力。始终学习你当前项目所需的内容。不要花六个月的时间提前学习书籍和孤立地学习语言,然后再开始你的第一个动手区块链编码项目。
如果你使用“边做边学”的方法,你将缩短学习曲线。
Solidity
使用Solidity,你可以在大多数区块链平台中编程智能合约。作为区块链开发者,这是一项很好的技能。它也是最容易掌握的!
HTML & CSS
如果你想成为去中心化应用程序的前端开发者,你需要熟练掌握HTML和CSS这些Web开发语言。
JavaScript / node.JS
学习Web3.js,这是一个JavaScript库,让Web应用程序与区块链节点交互。
GO & Python
这些通常用于Web3应用程序,因此它们是添加到你的工具箱中的伟大技能。
C++
C++被比特币的创始人用来创建其原始区块链。如果你将从事比特币区块链的工作,学习C++是个好主意。
5. 擅长面向对象编程概念
擅长面向对象编程(OOP)意味着你必须理解继承、多态和类,以及如何在代码中使用它们。
像Solidity这样的区块链编码语言基于面向对象编程。这些“传统开发概念将在你必须将应用程序与现有区块链技术集成时出现。
你不需要学习全栈开发就可以开始作为区块链开发者。但在许多情况下,你将在区块链项目中需要传统全栈编码的某些方面。因此,请继续学习它。
6. 了解数据库、数据结构和网络概念
作为区块链开发者,你需要了解数据库、数据结构和网络:
- 平面和关系数据库
- 栈、链表、队列
- LAN/WAN、交换机和路由器
所有这些将在你处理区块链时发挥作用。区块链是数据库的一种形式,你的应用程序将依赖栈、链表和队列来回忆信息,并且你需要良好的网络知识来理解区块链上的通信如何工作。
7. 保持饥饿
始终努力提升你的开发者技能。愿意学习并跟上新的区块链技术。
去加入Reddit论坛、Github页面和StackExchange。要成为顶级区块链编码员,始终保持对更多知识和技能的渴望。
区块链开发者路线图——从零开始的13个里程碑
成为区块链开发者不仅仅是获得认证。它是成为区块链编码所需技能的专业人士。
参加课程有助于你的学习之旅。获得认证确实能提升你的可信度。但公司最看重的(至少聪明的公司)是你执行相关区块链编程任务的能力——这样他们才能在业务中获得结果。
通过实践学习,能够用你自己完成的项目证明你的熟练程度,你将比你想象的更快获得高薪工作或自由职业合同!
这是你尽快到达那里的路线图:
1. 学习编程基础
如果你还不是开发者,从学习第一种语言的基础开始。对于不同的区块链项目,你可能需要学习不同的语言。但总是从一种开始。你必须从某个地方开始,对吧?
那么,你应该先学什么语言?例如,你可以从学习使用node.JS平台(基于JavaScript)编码开始。JavaScript和Node.js足以构建与加密货币API实时交互的程序。JavaScript是区块链编程最流行的语言,而Solidity是最容易学习的。建议你两者都学。
2. 学习区块链过程如何工作
以下是你应该学习以理解区块链过程的基本概念:
区块链的基础部分
确保你掌握以下内容:
- 什么是点对点网络?
- 什么是密码哈希?
- 什么是不对称密钥密码学?
账本
理解账本的概念,以及交易如何记录在账本中。
技术区块链术语
熟悉以下术语:
- 认证
- 授权
- 挖矿
- 随机数
- 工作量证明
- 验证交易
- 共识
- 创建和添加块
白皮书
阅读白皮书并逐一研究其不同部分。
关于区块链以及如何为其编程的书籍
阅读:Josh Thompsons的《Blockchain》、Henning Diedrich的《Ethereum》、Chris Dannen的《Introducing Ethereum and Solidity》和Melanie Swan的《Blockchain》。
加密钱包和dApps
开始使用加密钱包和dApps。
3. 开始区块链编码教程
最好的选择是分成你必须自己完成的小项目的教程。这样你不仅仅是在吸收一堆新信息——而且你总是在实践中学习。这就是你让知识扎根的方式!
- 学习Solidity。这是一种对初学者友好的语言,并在许多应用中使用。你可以从免费教程和游戏化课程开始,如Space Doggos和CryptoZombies。
- 参加高级课程。一旦你掌握了基础知识,考虑投资一个更高级的课程,可以带你一路成为专业区块链开发者。
确保选择一个以指导方式让你完成专业级项目的课程。一旦你完成了其中一个,你就为现实世界的工作、自由职业生涯或你自己的区块链项目做好了准备。
4. 实践:设置你自己的节点
虽然运行你自己的节点不是100%必要——但如果你想成为一个严肃的区块链开发者,建议这样做。它让你监控你的编码努力并给你完全控制。
5. 理解共识算法
共识机制:去中心化系统就特定问题达成一致的仪器。例如,白皮书中提出的原始共识机制,工作量证明。
6. 学习分叉现有的区块链,如比特币或ETH
为此,你必须在计算机上下载并编译核心代码。然后重新编程代码以包含你个人区块链分叉中想要的更改。