第二章:区块链与智能合约基础
说实话,很多做量化的人一听到「区块链底层」就头疼。我刚开始也这样——心想我写策略就完了,管它区块怎么连的?
但后来我踩了个大坑。写了个套利合约,上线就亏钱。查了半天,原来是没搞懂Gas机制,交易被矿工卡住了。嗯,从那以后,我再也不敢跳过这部分了。
2.1 区块链工作原理:别把它想得太玄
区块链说白了就是一个分布式账本。你想想看,传统账本放在银行服务器里,银行说了算。区块链呢?每个节点都有一份完整账本,谁也别想篡改。
核心机制就三点:
- 区块:每10-15秒打包一批交易,形成一个区块
- 链:每个区块都包含上一个区块的哈希值,连起来就是链
- 共识:大家通过PoW或PoS机制,决定谁有权打包下一个区块
我在项目中遇到过一个问题:有次写跨链桥,发现两条链的区块时间不一样。以太坊15秒一个块,Solana只要400毫秒。这个差异直接影响了我的套利策略参数。所以,理解区块时间很重要。
核心要点:区块链不是「存数据」的,而是「对状态变化达成共识」的。每次交易,都是在改变全局状态。
2.2 以太坊与EVM:DeFi的主战场
以太坊为什么能跑DeFi?因为它有个以太坊虚拟机(EVM)。你可以把EVM理解成一个全球统一的「计算环境」。不管你在哪里运行合约,结果都一样。
我个人习惯把EVM比作「Java虚拟机」。你写好的Solidity代码,编译成字节码,部署到任何EVM兼容链上都能跑。这就是为什么Uniswap能同时部署在以太坊、Polygon、BSC上——代码几乎不用改。
| 特性 | 以太坊 | 其他EVM链(如BSC) |
|---|---|---|
| 区块时间 | ~15秒 | ~3秒 |
| Gas模型 | EIP-1559(基础费+小费) | 类似,但更便宜 |
| 生态成熟度 | 最高 | 中等 |
我的建议:刚开始学DeFi量化,先在以太坊测试网(Goerli/Sepolia)上跑。等逻辑通了,再考虑部署到其他链。别一上来就冲多链,容易乱。
2.3 Solidity入门:写你的第一个合约
Solidity是EVM上的主流语言。语法跟JavaScript有点像,但有几个关键区别。
先看一个最简单的合约:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private data;
function set(uint256 _data) public {
data = _data;
}
function get() public view returns (uint256) {
return data;
}
}
这里有几个坑,我刚开始全踩过:
- public vs private:public变量会自动生成getter函数,但别以为别人看不到private数据——链上一切都是公开的
- view/pure:不修改状态的函数用view,不读也不改的用pure。用错了会多花Gas
- uint256:Solidity没有浮点数,所有计算都得用整数。做量化时,价格通常用18位小数表示(1 ETH = 1e18 wei)
避坑指南:我曾经写过一个流动性池合约,忘记加onlyOwner修饰符。结果部署后,任何人都能调用提现函数。嗯,那次损失了0.5个ETH。记住:合约默认是公开的,权限控制必须显式写出来。
2.4 Gas与交易机制:量化交易的成本命脉
做DeFi量化,Gas是你最大的敌人之一。我见过有人套利赚了0.1 ETH,结果Gas花了0.15 ETH——白忙活。
Gas机制其实不复杂:
- Gas Limit:你愿意为这笔交易消耗的最大Gas量。简单转账21000,复杂合约调用可能几十万
- Gas Price:每个Gas单位你愿意付多少钱(单位:gwei,1 gwei = 1e-9 ETH)
- 总费用 = Gas Used × Gas Price
EIP-1559之后,Gas Price分成了两部分:
- Base Fee:系统定的基础费,会被销毁
- Priority Fee(小费):你给矿工的,越高越快被打包
我常用的策略是:
- 普通交易:Priority Fee设2-5 gwei
- 抢跑套利:Priority Fee设50-100 gwei,甚至更高
- 监控Gas价格:用Etherscan的Gas Tracker,或者自己写脚本调API
量化视角:Gas费用直接决定你的策略盈亏比。我一般会在策略里加一个「Gas阈值检查」——如果当前Gas高于某个值,就跳过这笔交易。别小看这个逻辑,它能帮你省下至少30%的手续费。
知识体系总览
下面这张图,是我自己整理的知识结构。每次带新人,我都会先让他们看这个:
学习路径建议:先搞懂Gas机制(直接影响你的钱),再学Solidity(写策略工具),最后理解EVM(知道你的代码跑在什么环境里)。别反着来,否则容易学懵。
好了,这一章就到这里。记住:区块链不是魔法,它只是一套「谁也别想作弊」的规则。你理解了规则,就能利用它赚钱。
公众号:蓝海资料掘金营,微信deep3321