NFTfi流动性借贷平台介绍
NFTfi是一个基于NFT的借贷流动性协议。持有白名单NFT的用户可以抵押手中的NFT,借得WETH或者DAI,可以不卖出手中的藏品而获取流动性代币去做其它交易或者投资;手中有WETH/DAI的用户,可以通过平台把WETH/DAI借给这些有需求的用户,赚取APR收益,通常会高于传统DEFI。当借款者到期不偿还本息时,就形成坏帐,贷款者可以清算这笔交易,从而获得借款方抵押的NFT做为补偿。这种借贷关系是用户与用户之间一一对应产生的,而不是基于池子的。可以看到,随着最近几个月的NFT熊市,NFTfi平台的贷款交易呈上升趋势。借款方(资金借入方)借款方手中需要持有白名单的NFT(平台不是什么NFT都持有抵押贷款的,需要地板大于1以太,总成交超过500以太,并且是标准ERC721协议的NFT才支持),同时又不想售出NFT,然后又想要一些以太或者DAI来做各种骚操作,做可以尝试到这个平台来贷款。用户可以上架自己的NFT,并可以设置期望的贷款金额,周期和APR,等待贷款方过来offer。当有offer时,借款方可以选择自己满意的offer,接受报价,就完成了借款。这时候,NFT是抵押在平台的...
NFTfi流动性借贷平台介绍
NFTfi是一个基于NFT的借贷流动性协议。持有白名单NFT的用户可以抵押手中的NFT,借得WETH或者DAI,可以不卖出手中的藏品而获取流动性代币去做其它交易或者投资;手中有WETH/DAI的用户,可以通过平台把WETH/DAI借给这些有需求的用户,赚取APR收益,通常会高于传统DEFI。当借款者到期不偿还本息时,就形成坏帐,贷款者可以清算这笔交易,从而获得借款方抵押的NFT做为补偿。这种借贷关系是用户与用户之间一一对应产生的,而不是基于池子的。可以看到,随着最近几个月的NFT熊市,NFTfi平台的贷款交易呈上升趋势。借款方(资金借入方)借款方手中需要持有白名单的NFT(平台不是什么NFT都持有抵押贷款的,需要地板大于1以太,总成交超过500以太,并且是标准ERC721协议的NFT才支持),同时又不想售出NFT,然后又想要一些以太或者DAI来做各种骚操作,做可以尝试到这个平台来贷款。用户可以上架自己的NFT,并可以设置期望的贷款金额,周期和APR,等待贷款方过来offer。当有offer时,借款方可以选择自己满意的offer,接受报价,就完成了借款。这时候,NFT是抵押在平台的...
Metamorphic合约原理介绍
术语科普Creation bytecode这是大家最常提及的bytecode,用来生成runtime bytecode,包括了构造函数逻辑和逻辑函数参数。在solidity里可以用type(ContractName).creationCode来获取。当你编译合约时,creation bytecode就会生成。在Remix里可以用compilation details里查看,如下图,划红线的就是creation bytecode。Runtime bytecode这是存储在链上用来描述智能合约的代码。这个代码不包括构造函数逻辑和参数,实际上是creation bytecode在evm里执行完后的返回的字节码。下文讲述的metamorphic合约就是利用了这个性质来实现用不同的bytecode部署相同地址的合约的。 合约的runtime bytecode可以在链上用extcodecopy获取,在solidity里可以用type(ContractName).runtimeCode来获取,runtime bytecode的hash可以用extcodehash获取。Bytecode这是一个概...
Metamorphic合约原理介绍
术语科普Creation bytecode这是大家最常提及的bytecode,用来生成runtime bytecode,包括了构造函数逻辑和逻辑函数参数。在solidity里可以用type(ContractName).creationCode来获取。当你编译合约时,creation bytecode就会生成。在Remix里可以用compilation details里查看,如下图,划红线的就是creation bytecode。Runtime bytecode这是存储在链上用来描述智能合约的代码。这个代码不包括构造函数逻辑和参数,实际上是creation bytecode在evm里执行完后的返回的字节码。下文讲述的metamorphic合约就是利用了这个性质来实现用不同的bytecode部署相同地址的合约的。 合约的runtime bytecode可以在链上用extcodecopy获取,在solidity里可以用type(ContractName).runtimeCode来获取,runtime bytecode的hash可以用extcodehash获取。Bytecode这是一个概...
Flashbots案例总结
Flashbots可以做tx的私有发送,防止被mev机器人监听抢跑,也可以做tx的批量按顺序打包,矿工会保证tx按打包顺序连续执行。 官方有几个example: 案例1:不同dex间的套利机器人 每区块遍历了5个dex的所有pair对价格,然后逐个对比价格差,有套利空间的就发tx去交易。用flashbots可以保证tx不被mempool机器人抢跑,但这个只是学习案例,不具备实际可获利性。 案例2:破解清道夫攻击 有些做恶者会公开一个钱包的私钥,然后钱包里放入一定数量的usdt或者其它erc20 token,但没有eth,诱使其他人转入eth做为gas,去把usdt转入自己钱包。但实际上这个做恶者写了一个监听程序监听这个钱包地址,一量有eth或其它token转入就马上把它转走,达到清道失攻击的目的。这时候就可以用flashbots把转入eth和转出usdt的tx按顺序打包成一个bundle,就可以保证在做恶者之前把代币转走。 案例3:监听Synthetix pDAO治理交易,批量清算剩余贷款 背景是synthetix有一个试验是用eth做抵押mint出sUSD/sETH,但dao宣...
Flashbots案例总结
Flashbots可以做tx的私有发送,防止被mev机器人监听抢跑,也可以做tx的批量按顺序打包,矿工会保证tx按打包顺序连续执行。 官方有几个example: 案例1:不同dex间的套利机器人 每区块遍历了5个dex的所有pair对价格,然后逐个对比价格差,有套利空间的就发tx去交易。用flashbots可以保证tx不被mempool机器人抢跑,但这个只是学习案例,不具备实际可获利性。 案例2:破解清道夫攻击 有些做恶者会公开一个钱包的私钥,然后钱包里放入一定数量的usdt或者其它erc20 token,但没有eth,诱使其他人转入eth做为gas,去把usdt转入自己钱包。但实际上这个做恶者写了一个监听程序监听这个钱包地址,一量有eth或其它token转入就马上把它转走,达到清道失攻击的目的。这时候就可以用flashbots把转入eth和转出usdt的tx按顺序打包成一个bundle,就可以保证在做恶者之前把代币转走。 案例3:监听Synthetix pDAO治理交易,批量清算剩余贷款 背景是synthetix有一个试验是用eth做抵押mint出sUSD/sETH,但dao宣...
以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为抵押去铸...
以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为抵押去铸...
Uniswap V3交易预计算技巧
Uniswap上做swap交易时,比如用usdt购买btc,会根据界面上输入的usdt数量,实时计算出可以swap到多少个btc,v2版本因为是应用了xy=k的公式,可以方便的计算出来。代码里通过getAmountOut和getAmountIn得到,这两个都是view函数,不需要消耗gas。而到了v3版本,不再是单独的xy=k公式,而是分割成一小块一小块的tick,swap交易时,划过一块一块的tick,最终才计算出可以换出多少个token,而v3也没有专门为了这个前端功能写一个view函数,而是用了callStatic调用,然后在合约里try…catch捕获revert信息并return来返回换得的数量。下面就解析一下这个奇淫技巧。 v3中有专门一个合约QuoterV2提供给前端调用function quoteExactInputSingle(QuoteExactInputSingleParams memory params) public override returns ( uint256 amountOut, uint160 sqrtPriceX96After, uint...
Uniswap V3交易预计算技巧
Uniswap上做swap交易时,比如用usdt购买btc,会根据界面上输入的usdt数量,实时计算出可以swap到多少个btc,v2版本因为是应用了xy=k的公式,可以方便的计算出来。代码里通过getAmountOut和getAmountIn得到,这两个都是view函数,不需要消耗gas。而到了v3版本,不再是单独的xy=k公式,而是分割成一小块一小块的tick,swap交易时,划过一块一块的tick,最终才计算出可以换出多少个token,而v3也没有专门为了这个前端功能写一个view函数,而是用了callStatic调用,然后在合约里try…catch捕获revert信息并return来返回换得的数量。下面就解析一下这个奇淫技巧。 v3中有专门一个合约QuoterV2提供给前端调用function quoteExactInputSingle(QuoteExactInputSingleParams memory params) public override returns ( uint256 amountOut, uint160 sqrtPriceX96After, uint...