前言
在过去的十几年中,传统互联网迎来了飞速的发展,随着巨头们的兴起,互联网更是渗透到人们日常生活中的方方面面,互联网的发展速度和高额回报开始吸引优秀的年轻人们扎堆涌入互联网行业。但是随着人口红利消失,用户增长放缓,市场慢慢趋于饱和。和过去几年相比,这个行业的机会变少、成长速度变慢、竞争更激烈;18年开始行业整体进入瓶颈期,新的大机会变少,用人缺口也从「拼数量的基础人力」转为「要质量的高阶人才」。伴随着经济环境与投资环境的变化和受全球经济增速放缓的宏观经济影响,互联网开始进入存量优化阶段,增长依赖精细化运营(如AI提效、垂直领域深耕),长期则需等待下一代技术突破(如人工智能、Web3)带来新增长周期。
为什么转型Web3
相比于人工智能,普通程序员转型 Web3(区块链/去中心化应用开发) 相对更容易,主要是因为 技术栈高度重叠,同时 Web3 的生态特性降低了部分转型门槛。Solidity(主流智能合约语言) 的语法类似 JavaScript/TypeScript,有编程基础的人能快速上手。Rust(用于Solana、Polkadot等链) 和 Go(用于以太坊客户端、Cosmos) 也是传统程序员熟悉的语言。前端开发完全一致:Web3 的 DApp(去中心化应用)前端仍用 React/Vue + JavaScript/TypeScript,仅需接入钱包(如 MetaMask)和区块链节点(如 ethers.js/web3.js)。
核心逻辑与传统开发相通
智能合约 ≈ 服务端逻辑:合约的“状态变量”类似数据库,函数类似 API 接口。例如:ERC-20 代币合约的 transfer()
函数,本质是更新数据库中的余额记录。
事件(Event) ≈ 日志系统:
开发工具链成熟,生态支持完善
开发框架友好:Hardhat、Foundry(类似 Truffle,但更现代)用于智能合约开发。Remix IDE 提供浏览器内一键编译部署,降低环境配置难度。
测试与部署简化:本地测试链(如 Ganache)和测试网(如 Goerli)可免费使用,无需复杂基础设施。合约部署通过脚本(如 Hardhat 脚本)或平台(Alchemy/Infura)即可完成。
试错成本低:测试网可免费实验,主网部署成本也较低(相比传统云服务)。即使合约有漏洞(如重入攻击),也可通过测试和学习快速改进。
Web3 的“开放协作”特性降低门槛
开源主导:几乎所有协议(如 Uniswap、Compound)的代码公开,可直接参考甚至分叉。
模块化开发:无需从零造轮子,可复用 OpenZeppelin 的标准合约(如 ERC-20、ERC-721)。例如,10 行代码即可创建一个代币
需求旺盛
人才缺口大:Web3 仍处于早期,合格开发者供不应求,企业更愿意接受转型者。因为 Web3 开发者社区规模很小,即使是最为火热的以太坊,每月也只有不到 8000 名活跃开发者,远低于传统科技公司以万计的开发岗数量。与之相对,超过 75% 的开发者增速仍然难以满足 Web3 有成千上万个活跃项目的需求,头部玩家持续扩张,初创企业层出不穷,传统机构也想分一杯羹,所以,Web3 的就业空间巨大。
另外,在 Web3 领域,真正了解技术细节的交易员、投资者很少,他们大多以投资的心态参与。而 Web3 项目大多都是基于技术的商业模式,那么,通过学习 Web3 开发,能更好地理解和评估 Web3 项目的价值,有助于开发者成为市场上更好的投资者或交易者,也就是说可以指导投资交易。行业井喷前期,开发者会成为众多公司争抢的对象,但领域内专家数量较少。在供不应求的现状下,Web3 开发就会很吃香。
创业空间大
因为区块链技术的开源性质,使得开发者能够成为 100% 个人创业者,通过实战测试和验证既定程序积累技能,通过设计、开发、测试和部署解决方案,开发新的应用程序。同时,这也保证了集中式的科技巨头与全球开发者处于同一起跑线,进行较为公平的竞争。
技术优势
Web3是一个术语,指的是下一代互联网技术。它是Web2.0的进一步发展和进化,涵盖了多种技术,包括分布式账本技术(如区块链)、智能合约、去中心化应用程序(DApps)、分布式存储和身份验证等。Web3的目标是创建一个开放、共享、透明和去中心化的互联网生态系统,带来更多的公平、隐私和安全。Web3是一个新的技术生态系统,它崇尚去中心化、透明、公开、安全,并以社区驱动的方式进行开发和应用。
相较于传统的Web2.0,Web3 的最大不同之处在于它是基于区块链技术构建的。通过使用智能合约和分布式账本技术,Web3可以实现去中心化,这将彻底改变传统的商业模式和知识产权。此外,Web3也将使用加密货币来实现价值传递和生态激励,这将为互联网的经济体系带来新的变革和机会。
路线
Web3是诸多技术的集合和融合,包括区块链基础、智能合约、去中心化应用(DApps)、去中心化金融(DeFi)、NFT、DAO等等。所以路线图需要分阶段,从基础到高级,逐步深入。下面的思维导图从基础到高级,列举了整个学习路线中涉及的知识点,帮助我们一步步成功地转型成一名优秀的web3工程师。
暂时无法在Lark文档外展示此内容
首先我们先带领大家学习区块链的基础知识,让大家对区块链有个大致的了解:
区块链如何工作?
想象一群人共同维护一本公开的账本,每页记录10分钟内的交易,且每页都贴着前一页的指纹。如果有人想偷偷改账本,必须把后面所有页的指纹都重做一遍,几乎不可能。这就是区块链的核心逻辑:
- 交易发生:比如小明转1个比特币给小红。
- 广播交易:这笔交易被发送到全网的计算机(节点)。
- 验证打包:节点验证交易合法后,把多个交易打包成一个“区块”。
- 链接成链:新区块通过加密指纹(哈希值)连接到上一个区块,形成链条。
- 共识确认:所有节点通过共识机制(如工作量证明)确认新区块有效,账本更新。
基础概念
区块(Block)
区块是存储一批交易的“数据包”,类似账本的一页。一个区块通常由区块头和交易列表组成,区块头包含本区块的指纹(哈希值)、前一区块的指纹、时间戳等,交易列表记录这个区块打包的所有交易。每个区块都包含前一个区块的指纹,形成不可篡改的链条。
交易(Transaction)
区块链上的操作记录,比如转账、执行智能合约等都被叫做交易。交易通常包含发送方、接收方、金额、手续费、数字签名等。交易的整个生命周期包括:交易被创建 → 广播到网络 → 验证 → 打包进区块 → 永久记录。
哈希值(Hash)
Hash是区块的“数字指纹”,用来唯一标识区块内容。任何微小改动都会彻底改变哈希值,确保数据无法被篡改。通过Hash结合非对称加密可以进行数字身份的验证。
去中心化(Decentralization)
区块链账本由全球成千上万的节点共同维护,没有单一控制点。通过加密技术,交易用密码学签名验证身份,哈希值链接区块防止篡改。结合共识算法,比如比特币用“工作量证明”(挖矿),节点必须解决数学难题才能添加区块,攻击成本极高。
共识算法
区块链的 共识机制 是确保所有节点(参与者)对账本状态达成一致的核心规则。它解决了分布式系统中「如何在不可信环境下实现可信协作」的问题,是区块链去中心化和防篡改的关键技术。那么为什么需要共识机制呢:
- 无中心权威:区块链没有银行或政府这样的中心机构来验证交易,必须依赖所有节点共同决策。
- 防止作恶:防止恶意节点伪造交易或篡改数据。
- 数据一致性:确保所有节点存储的账本完全相同。
通过特定规则,让网络中大多数节点对「哪些交易有效」「区块如何添加」达成一致。只有达成共识的区块才会被添加到链上。
账户模型
比特币和以太坊的账户模型在设计理念和实现方式上有显著差异,主要体现在数据存储方式、交易逻辑和可编程性等方面。比特币专注于去中心化支付和价值存储,UTXO 模型简化交易验证,牺牲灵活性以提升安全性。以太坊定位为去中心化计算平台,账户模型支持复杂状态管理和智能合约,但需权衡可扩展性。以下是两者的核心区别:
- 比特币的 UTXO 模型(未花费交易输出模型)
UTXO(Unspent Transaction Output):比特币的账户并非传统意义上的“余额”,而是由一系列分散的 UTXO 组成。每个 UTXO 代表一个未被使用过的交易输出。每笔交易需要引用之前收到的 UTXO 作为输入,并生成新的 UTXO 作为输出。例如:Alice 向 Bob 转账 1 BTC,交易会消耗 Alice 的某个 UTXO(如 2 BTC 的输入),生成两个新的 UTXO:1 BTC 给 Bob,0.99 BTC 作为找零返回给 Alice(0.01 BTC 是手续费)。UTXO 模型天然支持多输入和多输出交易,可通过合并或拆分 UTXO 增强隐私性。比特币没有全局“账户余额”,余额需通过扫描链上所有 UTXO 计算得出。这种设计的优点是UTXO 相互独立,交易可并行验证,适合高频支付场景。交易逻辑简单,避免复杂状态管理漏洞。但也存在在一些缺点:复杂的状态管理:难以支持智能合约等需要长期存储状态的功能。开发门槛高:需要手动管理 UTXO 的输入输出,对开发者不够友好。
- 以太坊的账户模型(Account-Based Model)
以太坊存在两种账号类型:外部账户和合约账户,外部账户(EOA):由私钥控制,用于发起交易和支付 Gas 费;合约账户(CA):由代码控制,存储智能合约的状态和逻辑。每个账户包含 余额(ETH)、Nonce(交易计数器)和 存储空间(合约账户特有)。交易直接修改账户的余额或合约状态。例如:转账 ETH 时,发送方余额减少,接收方余额增加。全局状态树:以太坊维护一棵全局的 Merkle Patricia Trie,记录所有账户的当前状态。这种设计的优点是:状态管理便捷:直接通过账户地址查询余额和合约状态,适合复杂应用(如 DeFi、NFT)。智能合约支持:合约账户可存储数据和代码,支持图灵完备的编程逻辑。开发友好:开发者无需处理 UTXO 的输入输出,逻辑更接近传统编程。但是也同样伴随着一些缺点:状态膨胀:全局状态树随合约数量增长而膨胀,影响节点同步速度。交易依赖:同一账户的多笔交易需按顺序执行(依赖 Nonce),限制并行性。
比特币的 UTXO 模型 像现金交易,每次支付需组合零钱并生成新零钱,适合简单转账场景。以太坊的账户模型 像银行账户,直接增减余额并存储状态,为智能合约提供基础设施。两者差异体现了区块链在安全性与灵活性之间的权衡,也决定了它们在不同应用场景中的适用性。
密码学
首先,区块链中的用户需要有一个身份标识,通常是通过公钥和私钥对来实现的。用户的地址通常由公钥生成,比如比特币地址就是通过公钥进行哈希处理后得到的。私钥用于签名交易,证明所有权,这是非对称加密常见的应用场景。其次,交易签名过程。当用户发起一笔交易时,需要用私钥对交易信息进行签名,其他节点使用对应的公钥来验证签名的有效性,确保交易确实由私钥持有者发起,没有被篡改。这也是非对称加密的典型应用,数字签名。
再者,可能涉及到加密通信的部分。比如,节点之间的信息传输是否需要加密?虽然区块链数据本身是公开的,但某些情况下,比如私有链或联盟链,节点间的通信可能会使用非对称加密来保证安全。
还有钱包的生成和管理,用户生成钱包时会创建公私钥对,这也是非对称加密的应用。用户备份助记词或私钥的过程,其实就是在保护非对称加密中的私钥部分。可能还需要考虑多重签名的情况,多个私钥共同签名一个交易,这同样依赖于非对称加密机制。
通过以上分析不难看出,密码学在区块链的所有技术组件中有着举足轻重的左右,区块链中使用非对称加密的地方主要包括:
地址生成:公钥生成地址,私钥用于控制地址。
交易签名:私钥签名,公钥验证。
身份验证:节点或用户通过密钥对证明身份。
智能合约的权限控制:部署和调用时的签名验证。
加密通信:节点间数据传输的加密。
合约开发
智能合约是一种运行在区块链上的自执行协议,它能够在满足预定条件时自动执行合约条款。智能合约是区块链的核心创新之一,它通过代码取代传统合同,实现自动化、去信任化的交易和协作。学习智能合约开发(如Solidity)是进入Web3领域的重要技能,适合有编程基础(如JS/Python)的开发者快速转型。智能合约的特点包括:
去中心化:部署在区块链上,无需第三方中介
不可篡改:一旦部署,代码无法更改
自动执行:满足条件时自动触发
透明公开:所有交易和规则都公开可查
以solidity语言为例,下面是一个简单的代币合约示例,展示了智能合约的基本结构和功能:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// 定义一个简单的ERC-20代币合约
contract SimpleToken {
// 状态变量
string public name; // 代币名称
string public symbol; // 代币符号
uint8 public decimals = 18; // 小数位数
uint256 public totalSupply; // 总供应量
// 余额映射
mapping(address => uint256) public balanceOf;
// 转账事件
event Transfer(address indexed from, address indexed to, uint256 value);
// 构造函数 - 只在部署时执行一次
constructor(
uint256 initialSupply,
string memory tokenName,
string memory tokenSymbol
) {
totalSupply = initialSupply * 10 ** uint256(decimals); // 计算总供应量
balanceOf[msg.sender] = totalSupply; // 将所有代币分配给合约创建者
name = tokenName;
symbol = tokenSymbol;
}
// 转账函数
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value, "Insufficient balance"); // 检查发送者余额
balanceOf[msg.sender] -= _value; // 扣除发送者余额
balanceOf[_to] += _value; // 增加接收者余额
emit Transfer(msg.sender, _to, _value); // 触发转账事件
return true;
}
}
那么怎么能读懂这份合约代码吗,我们一行一行进行合约代码的解释说明:
- 版本声明:
pragma solidity ^0.8.0;
指定编译器版本为0.8.0或更高
- 合约结构:
contract SimpleToken { … }
定义了一个名为SimpleToken的合约
- 状态变量:
string public name;uint256 public totalSupply;
- 存储合约状态的变量,会永久记录在区块链上
- 映射:
mapping(address => uint256) public balanceOf;
- 建立地址到余额的键值对映射
- 事件:
event Transfer(address indexed from, address indexed to, uint256 value);
- 用于记录区块链上发生的重要操作
- 构造函数:
constructor(uint256 initialSupply, string memory tokenName, string memory tokenSymbol)
只在合约部署时执行一次,用于初始化合约
- 函数:
function transfer(address _to, uint256 _value) public returns (bool success)
定义了一个公开的转账函数,任何人都可以调用
- require语句:
require(balanceOf[msg.sender] >= _value, “Insufficient balance”);
条件检查,不满足条件时会回滚交易并显示错误信息
这个简单的代币合约展示了智能合约如何管理代币的发行和转账,所有操作都在区块链上透明执行,无需信任第三方。
结束语
掌握以上知识,就算一个入门的web3开发人员了,要想成名一名更资深的web3专家,则需要更深入地了解区块链更多的知识和拥有更丰富的项目经验,我们将在后面的文章中带领大家一步步深入学习。
CPBOX 原创内容
未经许可禁止转载,转载需注明出处
可以通过CPBOX官网:https://www.cpbox.io/ 下方联系我们