学习区块链发展的完整路线图

375 阅读13分钟

区块链开发的完整路线图

在主流媒体上,关于加密货币和人们如何成为百万富翁的讨论越来越热闹。我们经常听到,加密货币不仅会让银行失去作用,而且还能确保金融交易的匿名性和安全性。然而,这仅仅是表面现象。加密货币是一种叫做区块链的底层技术的一个使用案例。

没有那么多人能够解释什么是区块链,更不用说该技术如何应用于加密货币了。根据投资者投入其研究的资金量,区块链并不是一种时尚。除此之外,新的用例经常出现,最近的一次是应用区块链创建不可替代的代币(NFTs)。

区块链的其他用例包括医疗数据的安全共享,反洗钱系统,以及音乐版税追踪。很明显,区块链技术将影响我们生活的关键方面,从而在不久的将来为区块链开发者创造无数的机会。

本文将给你一个路线图,告诉你如何成为一名区块链开发者,并为未来做好准备。古语有云:"机会偏爱有准备的人"。没有技术背景的人可以跟着这篇文章一起学习。

区块链开发介绍

区块链是一个以某种方式连接的计算机网络,它们共同运行所谓的区块链客户端。比特币区块链、Binance智能链和以太坊区块链是区块链客户端的例子。

在这项技术中,主要有两种类型的开发者。

  1. 核心开发者
  2. 应用开发者

核心开发者

核心开发者参与的是所谓的核心开发,这是一个老生常谈的问题吧。在核心开发中,开发者为区块链客户端编写代码。编写区块链客户端时使用低级别的编程语言。

这些语言包括C、C++、Golang和Rust。在核心开发中,你需要了解计算机的操作系统、文件系统和网络。然而,核心开发不适合胆小的人。

它需要时间、实践和承诺。区块链核心开发人员很少见,通常喜欢保持匿名,就像比特币的创始人以假名中本聪一样。

应用程序开发人员

区块链应用开发是大多数区块链开发者所做的事情,也是大多数人提到区块链开发时通常所指的。在区块链应用开发中,我们在区块链客户端之上构建应用,而不是从头开始创建整个区块链。

这类似于网络开发,网络开发人员通常在网络浏览器之上构建网络应用。他们不会在每次构建应用程序时都构建网络浏览器。一个问题出现了。你应该考虑学习哪个区块链客户端来成为区块链应用开发者?

在选择区块链客户端时要考虑很多因素,如可扩展性、交易费用和你的应用程序需要的隐私水平。以太坊区块链曾经是最顶级的区块链,提供了上述所有的功能,还有更多。

在写这篇文章的时候,它正受到其他区块链的挑战,如Binance智能链,它的可扩展性更强,交易费用大大降低。然而,这并不是要否定以太坊区块链,因为其他区块链,如Tron区块链和Binance智能链采用了以太坊区块链的底层技术。

它们使用EVM(以太坊虚拟机)运行。这意味着,如果你学习了以太坊区块链,你将能够更容易地在这些其他区块链中开发。这就是以太坊区块链的网络效应。

以太坊区块链已经达到了 "临界质量",用通俗的话说就是它是不可或缺的。一项技术的临界质量是由该技术的用户数量、参与的开发者数量以及投资者投入的资金数量决定的,其中以太坊区块链的统计数据非常好。

你需要知道的是

1.以太坊区块链

正如上一节所讨论的,建议你从以太坊区块链开始,因为它非常受欢迎,其他有前途的区块链,如Binance智能链和Tron区块链都是基于以太坊技术的。技术栈是相同的。

对于一个受欢迎的区块链,如以太坊区块链,这将意味着有很多来自其开发者团队的技术支持,加上社交媒体平台上的用户社区。对于以太坊区块链,你需要了解它的一些重要和核心概念,如:。

  • 使用的是什么数据结构?
  • 它的工作证明(POW)算法是什么?
  • 什么是公钥和私钥,地址是如何产生的?
  • 什么是交易?
  • 什么是智能合约?
  • 钱包是如何工作的?

2.网络开发

大多数新手犯的一个错误是在没有网络开发技术背景的情况下直接进入智能合约。区块链技术是建立在网络技术之上的,因此在你深入到区块链开发之前,你需要了解网络开发的基本概念。

在网络开发中,我们有两个部分。

  1. 前端
  2. 后端
前端

前端是用户与我们的应用程序进行互动的部分。所涉及的语言是用于页面结构的HTML,用于页面造型的CSS,以及使用户能够连接到区块链并向用户显示数据的JavaScript。

学习一个框架将使你能够相当迅速地建立一个动态的用户界面,尽管这是可选的,如果你有耐心从头开始建立一切。对于一个合适的框架,建议你学习 "react",它是一个基于JavaScript的框架。

后端

对于后端,学习Node.js是很有优势的,它是JavaScript,但在服务器端。Node.js适合的原因是NPM包管理器。它使你能够为区块链开发安装依赖性和工具。

3.智能合约开发

现在我们达到了热门词汇(智能合约)。更简单地说,智能合约是一个生活在区块链之上的程序,并构成一组由参与各方商定的规则。

执行后,如果这些规则集得到满足,智能合约就会自己执行,给出一个输出。该程序通过促进、验证和执行基础协议的条件来实现去中心化的自动化。智能合约的自我执行功能是使其非常重要的原因。

智能合约使你能够交换任何有价值的东西,同时也消除了中间人,从而使你得到一个公平的交易。在物理世界中,购买土地的过程中,你需要一个律师,你先为他们的服务付费,以获得和公证土地转让文件。

在整个过程完成之前,你还可能向地方当局支付小额款项。但是,有了智能合约,你只需为土地付款,而且只是付款。反过来,业主将把所有权转让给你,改变土地所有权上的名字,宣布你是新的业主。所有权的转让被保存在一个公共账簿中,因此你不需要律师等中间人。

智能合约的代码不能被改变,在技术上我们说它是不可改变的。然而,数据是可变的(它可以被改变)。与普通代码相反,改变智能合约的数据通常需要花费金钱,这取决于代码的复杂性。这是因为执行需要大量的计算能力,这与代码的复杂性呈线性变化。

因此,在设计智能合约时,我们尽可能地编写简单的代码,以减少当你改变智能合约的数据时产生的执行成本。这就是所谓的 "气体优化"。气体优化是使不同的区块链在用户采用方面与众不同的关键方面之一。正是为了这种计算能力,你在使用智能合约时要支付少量费用。

智能合约的好处是,你可以在其内部移动资金。为了更好地理解这一点,让我们说,你有正常的代码,需要计算能力,而用户需要为此支付少量的费用。

你首先需要将其与Skrill、Neteller或Paypal等支付服务整合,但首先,你需要获得许可。在这种情况下,你也会受到API的限制。

然而,在智能合约中,你可以编写任何逻辑来移动资金,并将收取的费用分配给那些专门用电脑进行复杂计算的业主,以改变智能合约的数据。

稳固性

知道如何编写智能合约是区块链应用开发中最重要的事情。不仅仅是金融领域,多个领域对智能合约的需求导致开发人员的工资增加,达到每年25万美元的高位。

有几种编程语言用于编写智能合约,但最流行的是Solidity。语法与JavaScript相似,但这可能会产生很大的误导,因为它的工作方式与Javascript非常不同。与Javascript相比,Solidity也很有限,因此你应该避免做非常复杂的事情。

例如,你可以在 solidity 中这样写Hello World

 // My First Smart Contract 
pragma solidity >=0.5.0 <0.7.0;
contract HelloWorld {
    function get()public pure returns (string memory){
        return 'Hello Contracts';
    }
}

注意在函数、方法和大括号方面与Javascript的相似之处。

实验solidity的一个好方法是使用一个叫做Remix的在线IDE。使用Remix,你只需加载网站,开始编码,并运行你的第一个智能合约。

然而,在现实生活中的项目,我们需要更强大的东西,因此大多数开发人员使用Truffle,这是一个流行的智能合约框架。Truffle是一个用Node.js编写的命令行工具,它可以使用包管理器(NPM)轻松地安装在Windows、Mac OS和Linux上。

Truffle自带一个名为Ganache的本地以太坊网络,我们在开发过程中使用它来测试我们的智能合约。通过Ganache,你可以将你的智能合约部署到一个与真正的以太坊网络完全分离的以太坊网络,称为mainnet

在这个假的网络中,你可以拥有无限大的假的以太坊,这意味着你可以做任何你想做的交易,并失去所有的以太坊而不会对你的财务产生真正的影响。这是为了帮助你在将你的智能合约部署到真正的以太坊网络之前测试它。

你也可以决定使用 "以太坊的公共测试网",与Ganache相比,这些以太坊网络与主网网络更加真实。这些公共测试网使用起来有点困难,因为你不能自己控制网络。在这里,你不能像Ganache那样产生无限的以太坊,因此你必须谨慎地使用你所拥有的以太坊。

要在公共测试网络上产生乙醚,你需要使用称为Faucets的工具,而这些工具通常有时会失败。然而,公共测试网是一个接近真实世界经验的好方法,可以让你的智能合约接受测试。在公共测试网和主网中,你需要使用一个叫做Infura的服务。

Infura是一个为你运行Ethereum客户端的API,因为你自己运行客户端并不容易。除此之外,与公共测试网和主网的交易方式相比,你在Ganache中发送交易的方式是相当不同的。学习曲线会随着实践而成倍增加。

然后你需要在部署你的智能合约之前对其进行适当的测试,因为如前所述,代码是不可改变的。使用truffle框架可以轻松实现测试。智能合约涵盖了区块链开发的很大一部分。然而,孤立地学习智能合约是不明智的。

4.前端开发

现在你已经成功地在区块链上部署了你的智能合约。问题是,与它互动的唯一方法是使用命令行。即使是有技术背景的人,命令行也会让大多数人不寒而栗。你也不希望你的用户这样,对吗?这就是为什么你需要在前端创建一个友好的用户界面。

在前端界面中,你要创建一个所谓的DAPP(分散式应用)。DAPP可以是一个移动应用或一个网络应用,但在大多数情况下,它通常是一个网络应用。网络应用通常就像你的普通网络应用一样,有HTML、CSS和JavaScript。这进一步强调了一点,即在开始区块链应用开发之前,你需要了解网络开发。

在DAPP的设计中,将有两个主要的挑战;首先是与区块链的整合,其次是与钱包的整合。对于与区块链的整合,我们将利用一个名为Web3.js的JavaScript库,这很容易,而且可以在网上找到帮助。

与钱包的集成要复杂一些,因为在DAPPs中,用户管理是分散的,用户自己存储 "密码"。在DAPPs中,我们通常不使用密码,但最接近的是我们所说的私钥。通过私钥,用户可以签署一个交易,这是一个数据包,描述了一个用户想要做的行动。

他们可以用可验证的签名来做这件事,证明用户想做那个交易。推荐用于与以太坊区块链整合的钱包是Metamask,尽管有很多加密货币钱包。你应该首先学习如何将你的智能合约与Metamask钱包整合,然后再了解其他钱包。

结论

成为一名区块链开发者需要大量的实践和承诺。它需要创造力来实现代码中的概念。在熟练掌握区块链的基本概念后,你可以选择专攻某个特定领域。你可以选择成为智能合约专家,设计更多的气体优化方法,以及如何加强智能合约的安全性。

或者,你可以选择专攻Defi(去中心化金融),这是区块链最常见的用例。Defi的主要项目是像UNISWAP这样的去中心化交易所,借贷协议,收益率聚合器等等。这本身就是一个完整的有趣的领域。

你可以用你新获得的技能尝试的一些项目,按照复杂程度的增加顺序列在下面。然而,这些项目并不局限于下面显示的项目。

  1. 你好,世界。
  2. 简单存储,据此你现在可以修改你的智能合约的数据,它不再是一个只读的智能合约。
  3. 一个投票的智能合约,人们可以创建一个有不同选择的投票,并有一个投票期,再加上你可能觉得需要添加的任何功能。
  4. 创建一个以太坊钱包,用户可以存储他们的加密货币。
  5. 创建一个时间锁钱包,将资金锁定在某一时期。
  6. Airdrops,这是一个基本上免费分发你的代币的机制。