由于Dex的深度会有差异,两个token的直接汇率可能与市场上的交叉汇率不一致。而这种价格差异 通过不同的加密货币循环交易,开启了套利的可能性。由于实在对这个很感兴趣,利用了业余时间我熬夜了好几天以conflux swappi上的循环套利为例,开展这以类别的研究。(注意是业余时间,我没有耽误正事!!)

(https://evm.confluxscan.net/tx/0x55fee13835c115f7936e9a1ced897fd7a8ff7a15e0e60e8ed570aa768b5683e4) 上面是套利者在swappi上进行的套利行为:他设计path为:USDT =》WBTC => WCFX => USDT,利用深度差的特点,AmountIn是710USDT,AmountOut是712USDT。完成了2USDT的套利利润。
我们不妨先定义套利行为涉及到n种token的转换的成立条件:
Trade 1: Exchange 𝛿1 of 𝐴1 with 𝛿2 of 𝐴2. Trade 2: Exchange 𝛿2 of 𝐴2 with 𝛿3 of 𝐴3. . . . Trade 𝑛: Exchange 𝛿𝑛 of 𝐴𝑛 with 𝛿′1 of 𝐴1.
当且仅当 𝛿′1 - 𝛿1 > 0时,套利成立。
给定一个循环套利的路径:A1 -> A2 -> A3 -> ... An -> A1。当满足下面条件时,套利条件满足。

其中,Aij 代表Token I和Token J上的流动性。
利用xy=k的公式算法,我们可以得到最佳的兑换数值为:

代码实现如下:
async function CycleArbitrage(Path, MappingReserve) {
const A = new Array();
// A
for (var i = 0; i < Path.length; i++ ) {
A[i] = new Array();
for (var j = 0; j < Path.length; j++) {
A[i][j] = MappingReserve.get(Path[i]+Path[j]);
}
}
// console.log(A);
// console.log( A[0][1], A[1][0]);
var a = A ;
// Compute the equivalent liquidity of the cycle
for (var i = 0; i< Path.length; i++ ) {
a[0][Path.length - 1] = A[0][1];
a[Path.length-1][0] = A[1][0];
for (var j = 1; j < Path.length - 1; j++ ) {
a[0][Path.length - 1] = (a[0][Path.length - 1] * A[j-1][j]) / (a[j-1][j] + r1*r2*A[Path.length-1][0]) ;
a[Path.length - 1][0] = ( r1 * r2 * a[Path.length- 1 ][0] * A[j][j-1]) / (A[j-1][j] + r1*r2*a[Path.length-1][0]) ;
}
}
// 0.0007746540591768103 0.0007669365197266427
// 0.0007849891438126567 0.0007771686404362653
// console.log(a[0][Path.length - 1], a[Path.length-1][0]);
BestAmount = 0;
_a1 = (a[0][Path.length - 1] * A[Path.length-1][0]) / (A[Path.length-1][0] + r1 * r2 * a[Path.length-1][0]);
_a2 = (A[0][Path.length - 1] * a[Path.length - 1][0]) /(A[Path.length-1][0] + r1 * r2 * a[Path.length-1][0]);;
BestAmount = (Math.sqrt(r1*r2*_a1*_a2) - _a1) / r1 ;
return BestAmount;
}
由于Dex的深度会有差异,两个token的直接汇率可能与市场上的交叉汇率不一致。而这种价格差异 通过不同的加密货币循环交易,开启了套利的可能性。由于实在对这个很感兴趣,利用了业余时间我熬夜了好几天以conflux swappi上的循环套利为例,开展这以类别的研究。(注意是业余时间,我没有耽误正事!!)

(https://evm.confluxscan.net/tx/0x55fee13835c115f7936e9a1ced897fd7a8ff7a15e0e60e8ed570aa768b5683e4) 上面是套利者在swappi上进行的套利行为:他设计path为:USDT =》WBTC => WCFX => USDT,利用深度差的特点,AmountIn是710USDT,AmountOut是712USDT。完成了2USDT的套利利润。
我们不妨先定义套利行为涉及到n种token的转换的成立条件:
Trade 1: Exchange 𝛿1 of 𝐴1 with 𝛿2 of 𝐴2. Trade 2: Exchange 𝛿2 of 𝐴2 with 𝛿3 of 𝐴3. . . . Trade 𝑛: Exchange 𝛿𝑛 of 𝐴𝑛 with 𝛿′1 of 𝐴1.
当且仅当 𝛿′1 - 𝛿1 > 0时,套利成立。
给定一个循环套利的路径:A1 -> A2 -> A3 -> ... An -> A1。当满足下面条件时,套利条件满足。

其中,Aij 代表Token I和Token J上的流动性。
利用xy=k的公式算法,我们可以得到最佳的兑换数值为:

代码实现如下:
async function CycleArbitrage(Path, MappingReserve) {
const A = new Array();
// A
for (var i = 0; i < Path.length; i++ ) {
A[i] = new Array();
for (var j = 0; j < Path.length; j++) {
A[i][j] = MappingReserve.get(Path[i]+Path[j]);
}
}
// console.log(A);
// console.log( A[0][1], A[1][0]);
var a = A ;
// Compute the equivalent liquidity of the cycle
for (var i = 0; i< Path.length; i++ ) {
a[0][Path.length - 1] = A[0][1];
a[Path.length-1][0] = A[1][0];
for (var j = 1; j < Path.length - 1; j++ ) {
a[0][Path.length - 1] = (a[0][Path.length - 1] * A[j-1][j]) / (a[j-1][j] + r1*r2*A[Path.length-1][0]) ;
a[Path.length - 1][0] = ( r1 * r2 * a[Path.length- 1 ][0] * A[j][j-1]) / (A[j-1][j] + r1*r2*a[Path.length-1][0]) ;
}
}
// 0.0007746540591768103 0.0007669365197266427
// 0.0007849891438126567 0.0007771686404362653
// console.log(a[0][Path.length - 1], a[Path.length-1][0]);
BestAmount = 0;
_a1 = (a[0][Path.length - 1] * A[Path.length-1][0]) / (A[Path.length-1][0] + r1 * r2 * a[Path.length-1][0]);
_a2 = (A[0][Path.length - 1] * a[Path.length - 1][0]) /(A[Path.length-1][0] + r1 * r2 * a[Path.length-1][0]);;
BestAmount = (Math.sqrt(r1*r2*_a1*_a2) - _a1) / r1 ;
return BestAmount;
}
0xmonaco CTF 体验心得
由开发人员、艺术家和设计师组成的集体 MatchBoxDAO 宣布推出 MatchBox Arena。该团队将其称为“Web3 公司的世界杯”,并表示游戏锦标赛旨在找出哪家公司拥有最好的技术团队。首先,可以代表公司和世界顶级的crypto公司(uniswap,polygon,ledger,chainlink。。。)同台竞技真的是一个非常荣幸的事情。所以我牺牲了宝贵的春节假期,就一直在打这个比赛。 这次CTF是一个用solidity操控汽车的算法比赛(终于遇到我非常感兴趣的地方了)介绍这本质上来说是一次博弈实验,而不是一次简单的代码hackthon。更像是一个社会实验,涉及纯技术方面、经济激励、效用优化模式和理性的压力测试。对于每一个参赛者,你需要实现自己的Car合约,特别是takeyourturn这个函数。对于每一轮你都需要做出决策,具体有五种决策: 1)加速(ACCELERATE) 2)炮弹(SHELL) 3)超级炮弹(SUPER_SHELL) 4)香蕉(BANANA) 5)盾(SHIELD) 有点像跑跑卡丁车?是的。。每一种决策都会耗费掉你的金额,你的金额总量是17500。而...

成长 -- 随笔(2)
深夜陷入了沉思,回顾了一下自己的成长历程。距离上一次的成长随笔已经过去7个月了~~ https://mirror.xyz/0xaaE7a1AD2764626d09a233a9bC06C38b413637cf/By3P_3NiIriKGObdbWlFo0mDdwFDY1v9VFbjaUMmObU 既然是随笔,我觉得格式什么的,就随意了~~ 这段时间我学了啥呢~~ Uniswap V2, V3; 精通Curve ( 3 Pool, Meta Pool, Compond Pool, AAVE Pool) ~~~ Balancer V2, Kyber, Bancor ; AAVE, Clipper, DODO, Mstable, Saddle, Shell, Wombat ~~~ DODO, DODO V2, Fraxswap ~~ 对我来说,能力提升最大的是打CTF。比赛的过程,纠错发现bug的攻防真的很能提升一个人的合约能力~~~ 最开心的是,认识了组内Andrew和Jimmy两位Crypto科学家~~ 最感激的是,Melvin带着我做项目,耐心和孜孜不倦地引导我去激发自己的潜能~~...
成长 -- 随笔
我完全不敢想象自己的成长速度。 1个月前,我还在和慢雾的群上问curve的合约代码的语言是的时候。余弦大佬回了我是vyper。我现在已经可以把vyper语言看懂了, 并且对于原理也掌握了。 把curve代码看了一下一遍,其实也发现不过如此。白皮书,其实也没这么深奥。跟当年打ACM的那种级别比,还是差得有点远。 Hardhat也越来越熟悉了。当时那个编写测试用例还要问XD的那个毛头小子,已经成长了好多。 我觉得我现在完全可以独立撑起一个商业项目,唯一卡住的地方可能是JS还是不太熟悉。基本功能是OK的,但是遇到一些比较少见的bug。估计,要问人。 对于以前的我来说,3,4天吃透一个主流Defi协议,我真的想都不敢想。如果只是调研,我觉得我还是勉强可以一试。 这种成长的速度我只能用指数级别来形容。我看了一下一个月前的自己,觉得好菜。 我很希望我一个月之后,再回头看现在的我,也是觉得现在的我很菜~~ end
0xmonaco CTF 体验心得
由开发人员、艺术家和设计师组成的集体 MatchBoxDAO 宣布推出 MatchBox Arena。该团队将其称为“Web3 公司的世界杯”,并表示游戏锦标赛旨在找出哪家公司拥有最好的技术团队。首先,可以代表公司和世界顶级的crypto公司(uniswap,polygon,ledger,chainlink。。。)同台竞技真的是一个非常荣幸的事情。所以我牺牲了宝贵的春节假期,就一直在打这个比赛。 这次CTF是一个用solidity操控汽车的算法比赛(终于遇到我非常感兴趣的地方了)介绍这本质上来说是一次博弈实验,而不是一次简单的代码hackthon。更像是一个社会实验,涉及纯技术方面、经济激励、效用优化模式和理性的压力测试。对于每一个参赛者,你需要实现自己的Car合约,特别是takeyourturn这个函数。对于每一轮你都需要做出决策,具体有五种决策: 1)加速(ACCELERATE) 2)炮弹(SHELL) 3)超级炮弹(SUPER_SHELL) 4)香蕉(BANANA) 5)盾(SHIELD) 有点像跑跑卡丁车?是的。。每一种决策都会耗费掉你的金额,你的金额总量是17500。而...

成长 -- 随笔(2)
深夜陷入了沉思,回顾了一下自己的成长历程。距离上一次的成长随笔已经过去7个月了~~ https://mirror.xyz/0xaaE7a1AD2764626d09a233a9bC06C38b413637cf/By3P_3NiIriKGObdbWlFo0mDdwFDY1v9VFbjaUMmObU 既然是随笔,我觉得格式什么的,就随意了~~ 这段时间我学了啥呢~~ Uniswap V2, V3; 精通Curve ( 3 Pool, Meta Pool, Compond Pool, AAVE Pool) ~~~ Balancer V2, Kyber, Bancor ; AAVE, Clipper, DODO, Mstable, Saddle, Shell, Wombat ~~~ DODO, DODO V2, Fraxswap ~~ 对我来说,能力提升最大的是打CTF。比赛的过程,纠错发现bug的攻防真的很能提升一个人的合约能力~~~ 最开心的是,认识了组内Andrew和Jimmy两位Crypto科学家~~ 最感激的是,Melvin带着我做项目,耐心和孜孜不倦地引导我去激发自己的潜能~~...
成长 -- 随笔
我完全不敢想象自己的成长速度。 1个月前,我还在和慢雾的群上问curve的合约代码的语言是的时候。余弦大佬回了我是vyper。我现在已经可以把vyper语言看懂了, 并且对于原理也掌握了。 把curve代码看了一下一遍,其实也发现不过如此。白皮书,其实也没这么深奥。跟当年打ACM的那种级别比,还是差得有点远。 Hardhat也越来越熟悉了。当时那个编写测试用例还要问XD的那个毛头小子,已经成长了好多。 我觉得我现在完全可以独立撑起一个商业项目,唯一卡住的地方可能是JS还是不太熟悉。基本功能是OK的,但是遇到一些比较少见的bug。估计,要问人。 对于以前的我来说,3,4天吃透一个主流Defi协议,我真的想都不敢想。如果只是调研,我觉得我还是勉强可以一试。 这种成长的速度我只能用指数级别来形容。我看了一下一个月前的自己,觉得好菜。 我很希望我一个月之后,再回头看现在的我,也是觉得现在的我很菜~~ end
Share Dialog
Share Dialog

Subscribe to shaneson.eth

Subscribe to shaneson.eth
<100 subscribers
<100 subscribers
No activity yet