以Synthetix为例,MEV策略剖析
本文翻译自Robert Miller的Anatomy of an MEV Strategy: Synthetix 几个月前臭名昭著的alpha泄露者KALEB在Flashbots公开的searchers频道发表了下列消息KALBE泄露了关于Synthetix变动的数千万美金的alpha消息。在这个机器人运营商的小房间里分享alpha就像丢给狮子一块红肉一样,在快速看了合约之后可以确认有笔另人晕眩的钱处在危机中。 在接下来的几周,我计划并且尝试去执行策略来捕获KALEB分享的MEV。我会开源我用的代码并一步一步展示整个过程和策略。你将不能运行我的代码去赚钱,但是这篇文章将会教你我是如何设计这个新的搜索者并会包含许多alpha。很自然的,这将会有点技术性,但我会尽量让本文对于非技术读者来说好理解。第一步,识别机会我不是一个Synthetix专家,因此第一步是去学习我将要涉及的操作。具体如下:我找出了相关合约我在Synthetix博客里读了它们的高级别功能并且搜索了相关文档我确保理解了将要实行的治理变动我查找了相关函数总结一下这阶段的工作,Synthetix已经试验了以ETH为抵押去铸...
Bitmap结构在ENSToken里的应用
在ENSToken的合约里看到了Bitmaps的应用,在地址认领空投时用了Merkle树证明来check用户地址和认领数量,进而会对应一个Merkle的index,为了防止重复认领空投,合约里用了OpenZeppelin的Bitmaps库来做位图存储,地址认领成功后,就将对应的index在位图里存true,下次如果再来认领就会判断这个位图,如果为true时就返回错误,以此来防止重复认领空投。BitMaps.BitMap private claimed; /** * @dev Claims airdropped tokens. * @param amount The amount of the claim being made. * @param delegate The address the tokenholder wants to delegate their votes to. * @param merkleProof A merkle proof proving the claim is valid. */ function claimTokens(uint256 amo...
<100 subscribers
以Synthetix为例,MEV策略剖析
本文翻译自Robert Miller的Anatomy of an MEV Strategy: Synthetix 几个月前臭名昭著的alpha泄露者KALEB在Flashbots公开的searchers频道发表了下列消息KALBE泄露了关于Synthetix变动的数千万美金的alpha消息。在这个机器人运营商的小房间里分享alpha就像丢给狮子一块红肉一样,在快速看了合约之后可以确认有笔另人晕眩的钱处在危机中。 在接下来的几周,我计划并且尝试去执行策略来捕获KALEB分享的MEV。我会开源我用的代码并一步一步展示整个过程和策略。你将不能运行我的代码去赚钱,但是这篇文章将会教你我是如何设计这个新的搜索者并会包含许多alpha。很自然的,这将会有点技术性,但我会尽量让本文对于非技术读者来说好理解。第一步,识别机会我不是一个Synthetix专家,因此第一步是去学习我将要涉及的操作。具体如下:我找出了相关合约我在Synthetix博客里读了它们的高级别功能并且搜索了相关文档我确保理解了将要实行的治理变动我查找了相关函数总结一下这阶段的工作,Synthetix已经试验了以ETH为抵押去铸...
Bitmap结构在ENSToken里的应用
在ENSToken的合约里看到了Bitmaps的应用,在地址认领空投时用了Merkle树证明来check用户地址和认领数量,进而会对应一个Merkle的index,为了防止重复认领空投,合约里用了OpenZeppelin的Bitmaps库来做位图存储,地址认领成功后,就将对应的index在位图里存true,下次如果再来认领就会判断这个位图,如果为true时就返回错误,以此来防止重复认领空投。BitMaps.BitMap private claimed; /** * @dev Claims airdropped tokens. * @param amount The amount of the claim being made. * @param delegate The address the tokenholder wants to delegate their votes to. * @param merkleProof A merkle proof proving the claim is valid. */ function claimTokens(uint256 amo...
Share Dialog
Share Dialog
要运行BSC全节点,首先需要有服务器,币安官方推荐服务器配置
VPS running recent versions of Mac OS X or Linux.
IMPORTANT 2T GB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms. (if start with snap/fast sync, it will need NVMe SSD)
16 cores of CPU and 64 gigabytes of memory (RAM).
Suggest m5zn.3xlarge instance type on AWS, c2-standard-16 on Google cloud.
A broadband Internet connection with upload/download speeds of 5 megabyte per second
我是在aliyun买的VPS,配置是16核64G,系统盘40G,数据盘3000G ESSD云盘 PL1,带宽20M,VPS实例启动后,需要先挂载数据盘
fdisk -l
查看系统磁盘,可以看到有一块硬盘还未使用
fdisk /dev/vdb
进行硬盘分区,根据提示输入参数进行下一步
mkfs.ext3 /dev/vdb
格式化分区,接着vim打开/etc/fstab,在末尾添加下面一行,开机自动将/dev/vdb1挂载到/home目录
/dev/vdb1 /home ext4 defaults 0 2
重启系统后,运行df -h,可以看到已经挂载成功

接着开始进行部署环节,我采用Sync From Snapshot方式。目前BSC的geth是v1.1.7版本,先下载到本地
wget https://github.com/binance-chain/bsc/releases/download/v1.1.7/geth_linux
同时下载配置文件,并解压
wget https://github.com/binance-chain/bsc/releases/download/v1.1.7/mainnet.zip
unzip mainnet.zip
然后下载快照文件,这个快照文件有几百G,因此采用后台运行下载,下载速度根据网速而不同,我自己大概下载了22小时
nohup wget -O geth.tar.gz "https://tf-dex-prod-public-snapshot-site3.s3-accelerate.amazonaws.com/geth-20220103.tar.lz4?AWSAccessKeyId=AKIAYINE6SBQPUZDDRRO&Signature=fRDVa8tXBuGbw5NCe32V92LXuf4%3D&Expires=1643809389" &
下载完成后,解压快照,如果没有lz4,需要先安装lz4
lz4 -d geth.tar.lz4 | tar -xv
至此,geth和快照都已准备好,下一步开始运行节点,运行前需要给geth_linux执行权限
chmod +x geth_linux
运行geth_linux
./geth_linux --config ./config.toml --datadir ./server/data-seed --diffsync --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --ws --ws.origins localhost
config.toml是配置文件,server/data-seed是下载下来的快照目录,同时打开了服务,方便连接。刚开始运行时,会继续同步新增加的块,需要一段时间后才会跟bsc完全同步。
可以调用RPC查看最新同步情况
./geth_linux --config ./config.toml --datadir ./server/data-seed --diffsync --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --ws --ws.origins localhost
上述命令会返回本地最新块高度,跟bscscan上对比一下就知道同步到哪里了。
要运行BSC全节点,首先需要有服务器,币安官方推荐服务器配置
VPS running recent versions of Mac OS X or Linux.
IMPORTANT 2T GB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms. (if start with snap/fast sync, it will need NVMe SSD)
16 cores of CPU and 64 gigabytes of memory (RAM).
Suggest m5zn.3xlarge instance type on AWS, c2-standard-16 on Google cloud.
A broadband Internet connection with upload/download speeds of 5 megabyte per second
我是在aliyun买的VPS,配置是16核64G,系统盘40G,数据盘3000G ESSD云盘 PL1,带宽20M,VPS实例启动后,需要先挂载数据盘
fdisk -l
查看系统磁盘,可以看到有一块硬盘还未使用
fdisk /dev/vdb
进行硬盘分区,根据提示输入参数进行下一步
mkfs.ext3 /dev/vdb
格式化分区,接着vim打开/etc/fstab,在末尾添加下面一行,开机自动将/dev/vdb1挂载到/home目录
/dev/vdb1 /home ext4 defaults 0 2
重启系统后,运行df -h,可以看到已经挂载成功

接着开始进行部署环节,我采用Sync From Snapshot方式。目前BSC的geth是v1.1.7版本,先下载到本地
wget https://github.com/binance-chain/bsc/releases/download/v1.1.7/geth_linux
同时下载配置文件,并解压
wget https://github.com/binance-chain/bsc/releases/download/v1.1.7/mainnet.zip
unzip mainnet.zip
然后下载快照文件,这个快照文件有几百G,因此采用后台运行下载,下载速度根据网速而不同,我自己大概下载了22小时
nohup wget -O geth.tar.gz "https://tf-dex-prod-public-snapshot-site3.s3-accelerate.amazonaws.com/geth-20220103.tar.lz4?AWSAccessKeyId=AKIAYINE6SBQPUZDDRRO&Signature=fRDVa8tXBuGbw5NCe32V92LXuf4%3D&Expires=1643809389" &
下载完成后,解压快照,如果没有lz4,需要先安装lz4
lz4 -d geth.tar.lz4 | tar -xv
至此,geth和快照都已准备好,下一步开始运行节点,运行前需要给geth_linux执行权限
chmod +x geth_linux
运行geth_linux
./geth_linux --config ./config.toml --datadir ./server/data-seed --diffsync --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --ws --ws.origins localhost
config.toml是配置文件,server/data-seed是下载下来的快照目录,同时打开了服务,方便连接。刚开始运行时,会继续同步新增加的块,需要一段时间后才会跟bsc完全同步。
可以调用RPC查看最新同步情况
./geth_linux --config ./config.toml --datadir ./server/data-seed --diffsync --cache 8000 --rpc.allow-unprotected-txs --txlookuplimit 0 --ws --ws.origins localhost
上述命令会返回本地最新块高度,跟bscscan上对比一下就知道同步到哪里了。
No comments yet