Skip to content
This repository has been archived by the owner on Feb 26, 2024. It is now read-only.

Compile fail due to "bad buffer size" #5778

Closed
dimitar9 opened this issue Dec 10, 2022 · 9 comments
Closed

Compile fail due to "bad buffer size" #5778

dimitar9 opened this issue Dec 10, 2022 · 9 comments

Comments

@dimitar9
Copy link

Got this error with Node v18 and Truffle 5.6.9 on macbook air M1. what's the issue here and how to fix it? thanks


(venv) myuser@myusers-air defi-by-example % truffle compile

Compiling your contracts...
===========================
> Compiling ./contracts/TestCurveExchange.vy
> Compiling ./contracts/TestCurveLiquidity.vy
> Compiling ./contracts/TestUniswapLiquidityVy.vy
> Compiling ./contracts/TestUniswapVy.vy
> Compiling ./contracts/TestVyper.vy
⠹ Fetching solc version list from solc-bin. Attempt #1
CompileError: bad buffer size

Compilation failed. See above.
    at compileJson (/Users/myuser/.nvm/versions/node/v18.12.1/lib/node_modules/truffle/build/webpack:/packages/compile-vyper/vyper-json.js:81:1)
    at Object.sourcesWithDependencies (/Users/myuser/.nvm/versions/node/v18.12.1/lib/node_modules/truffle/build/webpack:/packages/compile-vyper/index.js:281:1)
    at Object.necessary (/Users/myuser/.nvm/versions/node/v18.12.1/lib/node_modules/truffle/build/webpack:/packages/compile-vyper/index.js:334:1)
Truffle v5.6.9 (core: 5.6.9)
Node v18.12.1
(venv) myuser@myusers-air defi-by-example %
@dimitar9
Copy link
Author

closing this.
fixed by downgrading vyper to vyper==0.2.10 .

@haltman-at
Copy link
Contributor

That's not really a fix, that's a workaround! Truffle should work with any sufficiently recent version of Vyper; you shouldn't have to downgrade. There's an issue here and we should fix it.

I'm going to reopen this. Do you have repro steps for this? Can you at least tell us what version of Vyper this happened on?

Thank you!

@haltman-at haltman-at reopened this Dec 10, 2022
@cds-amal
Copy link
Member

cds-amal commented Dec 10, 2022

@haltman-at, it looks like following the steps of this repo causes the issue. Note, you'll have to change the venv step for python3. hrm, I wonder if this requires python2...:
virtualenv -p python3 venv -> python3 -m venv venv

  compile-vyper:vyper-json rawCompilerOutput: {
  compile-vyper:vyper-json   compiler: 'vyper-0.2.16',
  compile-vyper:vyper-json   errors: [
  compile-vyper:vyper-json     {
  compile-vyper:vyper-json       component: 'compiler',
  compile-vyper:vyper-json       message: 'bad buffer size',
  compile-vyper:vyper-json       severity: 'error',
  compile-vyper:vyper-json       sourceLocation: [Object],
  compile-vyper:vyper-json       type: 'AssertionError'
  compile-vyper:vyper-json     }
  compile-vyper:vyper-json   ]
  compile-vyper:vyper-json } +0ms

bad buffer size

Compilation failed. See above.
Truffle (unbundled) (core: 5.6.9)
Node v18.12.1
click for full debug log
(venv) ╭─amal@faifai  ~/dev/scratch/2022/12/10/defi-by-example/defi ‹node-18.12.1› ‹truffle-core› (main*)
╰─$ DEBUG=* truffle compile                                                                                                                                                                                       1 ↵

Compiling your contracts...
===========================
  compile-vyper paths: [
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol'
  compile-vyper ] +0ms
  compile-vyper vyperFilesStrict: [
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  compile-vyper ] +3ms
  compile-vyper:profiler resolver.sources.length: 7 +0ms
  compile-vyper:profiler invoking profiler +0ms
  profiler paths: [
  profiler   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler ] +0ms
  compile paths: [
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy',
  compile   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol'
  compile ] +0ms
  follow-redirects options {
  maxRedirects: 50,
  maxBodyLength: 10485760,
  protocol: 'https:',
  path: '/solc/emscripten-wasm32/list.json',
  method: 'GET',
  headers: {
    Accept: 'application/json, text/plain, */*',
    'User-Agent': 'axios/0.27.2'
  },
  agent: undefined,
  agents: { http: undefined, https: undefined },
  auth: undefined,
  hostname: 'relay.trufflesuite.com',
  port: null,
  nativeProtocols: {
    'http:': {
      _connectionListener: [Function: connectionListener],
      METHODS: [Array],
      STATUS_CODES: [Object],
      Agent: [Function],
      ClientRequest: [Function: ClientRequest],
      IncomingMessage: [Function: IncomingMessage],
      OutgoingMessage: [Function: OutgoingMessage],
      Server: [Function: Server],
      ServerResponse: [Function: ServerResponse],
      createServer: [Function: createServer],
      validateHeaderName: [Function: __node_internal_],
      validateHeaderValue: [Function: __node_internal_],
      get: [Function: get],
      request: [Function: request],
      setMaxIdleHTTPParsers: [Function: setMaxIdleHTTPParsers],
      maxHeaderSize: [Getter],
      globalAgent: [Getter/Setter]
    },
    'https:': {
      Agent: [Function: Agent],
      globalAgent: [Agent],
      Server: [Function: Server],
      createServer: [Function: createServer],
      get: [Function: get],
      request: [Function: request]
    }
  }
} +0ms
  profiler invoking requiredSources +27ms
  profiler:requiredSources allPaths: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol'
  profiler:requiredSources ] +0ms
  profiler:requiredSources updatedPaths: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:resolveAllSources resolveAllSources called +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy +0ms
  resolver:sources:vyper importedFrom:  +1ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +1ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper importModule: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  resolver:sources:vyper importedFrom:  +0ms
  resolver:sources:vyper found directly +1ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  resolver:sources:vyper found directly +0ms
  profiler:resolveAllSources imports: [] +11ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:getImports filePath: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy +0ms
  compile-vyper:parser basePath:  vyper.interfaces ; endPath:  ERC20 +0ms
  profiler:getImports imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:getImports filePath: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy +0ms
  compile-vyper:parser basePath:  vyper.interfaces ; endPath:  ERC20 +0ms
  profiler:getImports imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:getImports filePath: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy +0ms
  compile-vyper:parser basePath:  vyper.interfaces ; endPath:  ERC20 +0ms
  profiler:getImports imports: [] +1ms
  profiler:resolveAllSources imports: [] +1ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:getImports filePath: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy +0ms
  compile-vyper:parser basePath:  vyper.interfaces ; endPath:  ERC20 +1ms
  profiler:getImports imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:getImports filePath: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy +0ms
  profiler:getImports imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:resolveAllSources imports: [] +0ms
  profiler:requiredSources entering main loop +12ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +1ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestAaveFlashLoan.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestChainlink.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundErc20.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundEth.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLiquidate.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCompoundLong.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestDyDxSoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapFlashSwap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidity.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapOptimal.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestWethFlashMint.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/Uniswap.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/WETH10.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/FlashLoanReceiverBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/IFlashLoanReceiver.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPool.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/aave/ILendingPoolAddressProvider.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/compound.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/DepositY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/curve/StableSwapY.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/DydxFlashloanBase.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ICallee.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources currentFile: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/interfaces/dydx/ISoloMargin.sol +0ms
  profiler:requiredSources imports.length: 0 +0ms
  profiler:requiredSources compilationTargets: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources filesToProcess: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources file: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy +0ms
  profiler:requiredSources filesToProcess: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources file: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy +0ms
  profiler:requiredSources filesToProcess: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources file: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy +0ms
  profiler:requiredSources filesToProcess: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources file: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy +0ms
  profiler:requiredSources filesToProcess: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  profiler:requiredSources file: /Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy +0ms
  profiler:requiredSources required: [
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  profiler:requiredSources   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  profiler:requiredSources ] +0ms
  compile-vyper allSources: {
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy': '# @version ^0.2\n' +
  compile-vyper     'from vyper.interfaces import ERC20\n' +
  compile-vyper     '\n' +
  compile-vyper     'interface StableSwap:\n' +
  compile-vyper     '  def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): nonpayable\n' +
  compile-vyper     '\n' +
  compile-vyper     '# StableSwap3Pool\n' +
  compile-vyper     'STABLE_SWAP: constant(address) = 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7\n' +
  compile-vyper     '\n' +
  compile-vyper     'DAI: constant(address) = 0x6B175474E89094C44Da98b954EedeAC495271d0F\n' +
  compile-vyper     'USDC: constant(address) = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\n' +
  compile-vyper     'USDT: constant(address) = 0xdAC17F958D2ee523a2206206994597C13D831ec7\n' +
  compile-vyper     '\n' +
  compile-vyper     'TOKENS: constant(address[3]) = [\n' +
  compile-vyper     '  DAI,\n' +
  compile-vyper     '  USDC,\n' +
  compile-vyper     '  USDT\n' +
  compile-vyper     ']\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def swap(i: uint256, j: uint256):\n' +
  compile-vyper     '  tokens: address[3] = TOKENS\n' +
  compile-vyper     '  bal: uint256 = ERC20(tokens[i]).balanceOf(self)\n' +
  compile-vyper     '\n' +
  compile-vyper     '  ERC20(tokens[i]).approve(STABLE_SWAP, bal)\n' +
  compile-vyper     '\n' +
  compile-vyper     '  StableSwap(STABLE_SWAP).exchange(\n' +
  compile-vyper     '    convert(i, int128), convert(j, int128), bal, 1\n' +
  compile-vyper     '  )',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy': '# @version ^0.2\n' +
  compile-vyper     'from vyper.interfaces import ERC20\n' +
  compile-vyper     '\n' +
  compile-vyper     'interface StableSwap:\n' +
  compile-vyper     '  def add_liquidity(amounts: uint256[3], min_lp: uint256): nonpayable\n' +
  compile-vyper     '  def remove_liquidity(lp: uint256, min_amounts: uint256[3]): nonpayable\n' +
  compile-vyper     '  def remove_liquidity_one_coin(lp: uint256, i: int128, min_amount: uint256): nonpayable\n' +
  compile-vyper     '  def calc_withdraw_one_coin(lp: uint256, i: int128) -> uint256: view\n' +
  compile-vyper     '  def get_virtual_price() -> uint256: view\n' +
  compile-vyper     '\n' +
  compile-vyper     'interface CurveToken:\n' +
  compile-vyper     '  def balanceOf(account: address) -> uint256: view\n' +
  compile-vyper     '\n' +
  compile-vyper     '# StableSwap3Pool\n' +
  compile-vyper     'SWAP: constant(address) = 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7\n' +
  compile-vyper     'LP: constant(address) = 0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490\n' +
  compile-vyper     '\n' +
  compile-vyper     'DAI: constant(address) = 0x6B175474E89094C44Da98b954EedeAC495271d0F\n' +
  compile-vyper     'USDC: constant(address) = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\n' +
  compile-vyper     'USDT: constant(address) = 0xdAC17F958D2ee523a2206206994597C13D831ec7\n' +
  compile-vyper     '\n' +
  compile-vyper     'TOKENS: constant(address[3]) = [\n' +
  compile-vyper     '  DAI,\n' +
  compile-vyper     '  USDC,\n' +
  compile-vyper     '  USDT\n' +
  compile-vyper     ']\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@internal\n' +
  compile-vyper     'def _safeApprove(token: address, spender: address, amount: uint256):\n' +
  compile-vyper     '  res: Bytes[32] = raw_call(\n' +
  compile-vyper     '    token,\n' +
  compile-vyper     '    concat(\n' +
  compile-vyper     '        method_id("approve(address,uint256)"),\n' +
  compile-vyper     '        convert(spender, bytes32),\n' +
  compile-vyper     '        convert(amount, bytes32),\n' +
  compile-vyper     '    ),\n' +
  compile-vyper     '    max_outsize=32,\n' +
  compile-vyper     '  )\n' +
  compile-vyper     '  if len(res) > 0:\n' +
  compile-vyper     '      assert convert(res, bool)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def addLiquidity():\n' +
  compile-vyper     '  tokens: address[3] = TOKENS\n' +
  compile-vyper     '  balances: uint256[3] = [0, 0, 0]\n' +
  compile-vyper     '  for i in range(3):\n' +
  compile-vyper     '    balances[i] = ERC20(tokens[i]).balanceOf(self)\n' +
  compile-vyper     '    if balances[i] > 0:\n' +
  compile-vyper     '      # USDT does not return True\n' +
  compile-vyper     '      # ERC20(tokens[i]).approve(SWAP, balances[i])\n' +
  compile-vyper     '      self._safeApprove(tokens[i], SWAP, balances[i])\n' +
  compile-vyper     '  StableSwap(SWAP).add_liquidity(balances, 1)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     '@view\n' +
  compile-vyper     'def getShares() -> uint256:\n' +
  compile-vyper     '  return CurveToken(LP).balanceOf(self)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def removeLiquidity():\n' +
  compile-vyper     '  shares: uint256 = CurveToken(LP).balanceOf(self)\n' +
  compile-vyper     '  minAmounts: uint256[3] = [0, 0, 0]\n' +
  compile-vyper     '  StableSwap(SWAP).remove_liquidity(shares, minAmounts)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     '@view\n' +
  compile-vyper     'def calcWithdrawOneCoin(i: int128) -> (uint256, uint256):\n' +
  compile-vyper     '  shares: uint256 = CurveToken(LP).balanceOf(self)\n' +
  compile-vyper     '  w: uint256 = StableSwap(SWAP).calc_withdraw_one_coin(shares, i)\n' +
  compile-vyper     '  vp: uint256 = StableSwap(SWAP).get_virtual_price()\n' +
  compile-vyper     '  return (w, vp * shares / 10 ** 18)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def removeLiquidityOneCoin(i: int128):\n' +
  compile-vyper     '  shares: uint256 = CurveToken(LP).balanceOf(self)\n' +
  compile-vyper     '  minAmount: uint256 = 1\n' +
  compile-vyper     '  StableSwap(SWAP).remove_liquidity_one_coin(shares, i, 1)\n' +
  compile-vyper     '\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     '@view\n' +
  compile-vyper     'def getBalances() -> uint256[3]:\n' +
  compile-vyper     '  tokens: address[3] = TOKENS\n' +
  compile-vyper     '  balances: uint256[3] = [0, 0, 0]\n' +
  compile-vyper     '  for i in range(3):\n' +
  compile-vyper     '    balances[i] = ERC20(tokens[i]).balanceOf(self)\n' +
  compile-vyper     '  return balances',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy': '# @version ^0.2\n' +
  compile-vyper     '\n' +
  compile-vyper     'from vyper.interfaces import ERC20\n' +
  compile-vyper     '\n' +
  compile-vyper     'interface UniswapV2Router:\n' +
  compile-vyper     '    def addLiquidity(\n' +
  compile-vyper     '        tokenA: address,\n' +
  compile-vyper     '        tokenB: address,\n' +
  compile-vyper     '        amountA: uint256,\n' +
  compile-vyper     '        amountB: uint256,\n' +
  compile-vyper     '        amountAMin: uint256,\n' +
  compile-vyper     '        amountBMin: uint256,\n' +
  compile-vyper     '        to: address,\n' +
  compile-vyper     '        deadline: uint256\n' +
  compile-vyper     '    ) -> (uint256, uint256, uint256): nonpayable\n' +
  compile-vyper     '\n' +
  compile-vyper     '    def removeLiquidity(\n' +
  compile-vyper     '        tokenA: address,\n' +
  compile-vyper     '        tokenB: address,\n' +
  compile-vyper     '        liquidity: uint256,\n' +
  compile-vyper     '        amountAMin: uint256,\n' +
  compile-vyper     '        amountBMin: uint256,\n' +
  compile-vyper     '        to: address,\n' +
  compile-vyper     '        deadline: uint256\n' +
  compile-vyper     '    ) -> (uint256, uint256): nonpayable\n' +
  compile-vyper     '\n' +
  compile-vyper     'interface UniswapV2Factory:\n' +
  compile-vyper     '    def getPair(tokenA: address, tokenB: address) -> address: view\n' +
  compile-vyper     '\n' +
  compile-vyper     'FACTORY: constant(address) = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\n' +
  compile-vyper     'ROUTER: constant(address) = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\n' +
  compile-vyper     'WETH: constant(address) = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\n' +
  compile-vyper     '\n' +
  compile-vyper     'event Log:\n' +
  compile-vyper     '    message: String[100]\n' +
  compile-vyper     '    val: uint256\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def addLiquidity(_tokenA: address, _tokenB: address, _amountA: uint256, _amountB: uint256):\n' +
  compile-vyper     '    ERC20(_tokenA).transferFrom(msg.sender, self, _amountA)\n' +
  compile-vyper     '    ERC20(_tokenB).transferFrom(msg.sender, self, _amountB)\n' +
  compile-vyper     '\n' +
  compile-vyper     '    ERC20(_tokenA).approve(ROUTER, _amountA)\n' +
  compile-vyper     '    ERC20(_tokenB).approve(ROUTER, _amountB)\n' +
  compile-vyper     '\n' +
  compile-vyper     '    amountA: uint256 = 0\n' +
  compile-vyper     '    amountB: uint256 = 0\n' +
  compile-vyper     '    liquidity: uint256 = 0\n' +
  compile-vyper     '    (amountA, amountB, liquidity) = UniswapV2Router(ROUTER).addLiquidity(\n' +
  compile-vyper     '        _tokenA,\n' +
  compile-vyper     '        _tokenB,\n' +
  compile-vyper     '        _amountA,\n' +
  compile-vyper     '        _amountB,\n' +
  compile-vyper     '        1,\n' +
  compile-vyper     '        1,\n' +
  compile-vyper     '        self,\n' +
  compile-vyper     '        block.timestamp\n' +
  compile-vyper     '    )\n' +
  compile-vyper     '\n' +
  compile-vyper     '    log Log("amountA", amountA)\n' +
  compile-vyper     '    log Log("amountB", amountB)\n' +
  compile-vyper     '    log Log("liquidity", liquidity)\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def removeLiquidity(_tokenA: address, _tokenB: address):\n' +
  compile-vyper     '    pair: address = UniswapV2Factory(FACTORY).getPair(_tokenA, _tokenB)\n' +
  compile-vyper     '\n' +
  compile-vyper     '    liquidity: uint256 = ERC20(pair).balanceOf(self)\n' +
  compile-vyper     '    ERC20(pair).approve(ROUTER, liquidity)\n' +
  compile-vyper     '\n' +
  compile-vyper     '    amountA: uint256 = 0\n' +
  compile-vyper     '    amountB: uint256 = 0\n' +
  compile-vyper     '    (amountA, amountB) = UniswapV2Router(ROUTER).removeLiquidity(\n' +
  compile-vyper     '        _tokenA,\n' +
  compile-vyper     '        _tokenB,\n' +
  compile-vyper     '        liquidity,\n' +
  compile-vyper     '        1,\n' +
  compile-vyper     '        1,\n' +
  compile-vyper     '        self,\n' +
  compile-vyper     '        block.timestamp\n' +
  compile-vyper     '    )\n' +
  compile-vyper     '\n' +
  compile-vyper     '    log Log("amountA", amountA)\n' +
  compile-vyper     '    log Log("amountB", amountB)\n',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy': '# @version ^0.2\n' +
  compile-vyper     'from vyper.interfaces import ERC20\n' +
  compile-vyper     '\n' +
  compile-vyper     '# interface UniswapV2Router:\n' +
  compile-vyper     '#   def swapExactTokensForTokens(amountIn: uint256, amountOutMin: uint256, path: address[3], to: address, deadline: uint256): nonpayable\n' +
  compile-vyper     '\n' +
  compile-vyper     'UNISWAP_V2_ROUTER: constant(address) = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\n' +
  compile-vyper     'WETH: constant(address) = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def swap(tokenIn: address, tokenOut: address, amountIn: uint256):\n' +
  compile-vyper     '  ERC20(tokenIn).transferFrom(msg.sender, self, amountIn)\n' +
  compile-vyper     '  ERC20(tokenIn).approve(UNISWAP_V2_ROUTER, amountIn)\n' +
  compile-vyper     '\n' +
  compile-vyper     '  # path: address[3] = [ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS]\n' +
  compile-vyper     '  # if tokenIn == WETH or tokenOut == WETH:\n' +
  compile-vyper     '  #   path[0] = tokenIn\n' +
  compile-vyper     '  #   path[1] = tokenOut\n' +
  compile-vyper     '  # else:\n' +
  compile-vyper     '  #   path[0] = tokenIn\n' +
  compile-vyper     '  #   path[1] = WETH\n' +
  compile-vyper     '  #   path[2] = tokenOut\n' +
  compile-vyper     '\n' +
  compile-vyper     '  # UniswapV2Router(UNISWAP_V2_ROUTER).swapExactTokensForTokens(amount, 0, path, self, block.timestamp + 1800)\n' +
  compile-vyper     '\n' +
  compile-vyper     '  res: Bytes[128] = raw_call(\n' +
  compile-vyper     '    UNISWAP_V2_ROUTER,\n' +
  compile-vyper     '    concat(\n' +
  compile-vyper     '      method_id("swapExactTokensForTokens(uint256,uint256,address[],address,uint256)"),\n' +
  compile-vyper     '      convert(amountIn, bytes32),        # amount in\n' +
  compile-vyper     '      convert(0, bytes32),               # amount out min\n' +
  compile-vyper     '      convert(160, bytes32),             # path[] offset (5 * 32, 5 = number of func args)\n' +
  compile-vyper     '      convert(self, bytes32),            # to\n' +
  compile-vyper     '      convert(block.timestamp, bytes32), # deadline\n' +
  compile-vyper     '      convert(3, bytes32),               # path[] length\n' +
  compile-vyper     '      convert(tokenIn, bytes32),\n' +
  compile-vyper     '      convert(WETH, bytes32),\n' +
  compile-vyper     '      convert(tokenOut, bytes32)\n' +
  compile-vyper     '    ),\n' +
  compile-vyper     '    max_outsize=128\n' +
  compile-vyper     '  )',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy': ' # @version ^0.2\n' +
  compile-vyper     '\n' +
  compile-vyper     'stored_data: uint256\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     'def setData(new_value: uint256):\n' +
  compile-vyper     '    self.stored_data = new_value\n' +
  compile-vyper     '\n' +
  compile-vyper     '@external\n' +
  compile-vyper     '@view\n' +
  compile-vyper     'def get() -> uint256:\n' +
  compile-vyper     '    return self.stored_data'
  compile-vyper } +42ms
  compile-vyper compilationTargets: [
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveExchange.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestCurveLiquidity.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapLiquidityVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestUniswapVy.vy',
  compile-vyper   '/Users/amal/dev/scratch/2022/12/10/defi-by-example/defi/contracts/TestVyper.vy'
  compile-vyper ] +2ms
> Compiling ./contracts/TestCurveExchange.vy
> Compiling ./contracts/TestCurveLiquidity.vy
> Compiling ./contracts/TestUniswapLiquidityVy.vy
> Compiling ./contracts/TestUniswapVy.vy
> Compiling ./contracts/TestVyper.vy
  follow-redirects redirecting to https://binaries.soliditylang.org/emscripten-wasm32/list.json +97ms
  follow-redirects options { from solc-bin. Attempt #1
  maxRedirects: 50,
  maxBodyLength: 10485760,
  protocol: 'https:',
  path: '/solc/emscripten-wasm32/solc-emscripten-wasm32-v0.8.4+commit.c7e474f2.js',
  method: 'GET',
  headers: {
    Accept: 'application/json, text/plain, */*',
    'User-Agent': 'axios/0.27.2'
  },
  agent: undefined,
  agents: { http: undefined, https: undefined },
  auth: undefined,
  hostname: 'relay.trufflesuite.com',
  port: null,
  nativeProtocols: {
    'http:': {
      _connectionListener: [Function: connectionListener],
      METHODS: [Array],
      STATUS_CODES: [Object],
      Agent: [Function],
      ClientRequest: [Function: ClientRequest],
      IncomingMessage: [Function: IncomingMessage],
      OutgoingMessage: [Function: OutgoingMessage],
      Server: [Function: Server],
      ServerResponse: [Function: ServerResponse],
      createServer: [Function: createServer],
      validateHeaderName: [Function: __node_internal_],
      validateHeaderValue: [Function: __node_internal_],
      get: [Function: get],
      request: [Function: request],
      setMaxIdleHTTPParsers: [Function: setMaxIdleHTTPParsers],
      maxHeaderSize: [Getter],
      globalAgent: [Getter/Setter]
    },
    'https:': {
      Agent: [Function: Agent],
      globalAgent: [Agent],
      Server: [Function: Server],
      createServer: [Function: createServer],
      get: [Function: get],
      request: [Function: request]
    }
  }
} +48ms
  compile-vyper:vyper-json rawCompilerOutput: {
  compile-vyper:vyper-json   compiler: 'vyper-0.2.16',
  compile-vyper:vyper-json   errors: [
  compile-vyper:vyper-json     {
  compile-vyper:vyper-json       component: 'compiler',
  compile-vyper:vyper-json       message: 'bad buffer size',
  compile-vyper:vyper-json       severity: 'error',
  compile-vyper:vyper-json       sourceLocation: [Object],
  compile-vyper:vyper-json       type: 'AssertionError'
  compile-vyper:vyper-json     }
  compile-vyper:vyper-json   ]
  compile-vyper:vyper-json } +0ms

bad buffer size

Compilation failed. See above.
Truffle (unbundled) (core: 5.6.9)
Node v18.12.1

@haltman-at
Copy link
Contributor

I don't really understand how to follow these steps? Could you elaborate?

@cds-amal
Copy link
Member

cds-amal commented Dec 16, 2022

Well, it seems I can't reproduce this! I tried the same steps (copying shell history). The difference between the two reproductions is the vyper version. It fails with the buffer error when using vyper 0.2.16+commit.59e1bdd, and a version spec error to upgrade when using vyper 0.3.3+commit.48e326f: line 1:0 Version specification "^0.2" is not compatible with compiler version "0.3.7"

I did not specify a vyper version and can't explain why the same steps produce different versions :/. The vyper version is the only difference between the two reproductions.

installation steps

reprod 5778
git clone [email protected]:stakewithus/defi-by-example.git
cd defi-by-example
python3 -m venv venv
source venv/bin/activate
pip install vyper
cp .env.sample .env
npm ci
truffle compile
vyper --version

@haltman-at
Copy link
Contributor

Well, it's not hard to specify the vyper version when installing it; you just type pip install vyper==<version>. So that's fixable at least.

Also thanks, these steps seem much more followable than what's in the repo. (I'm guessing I don't actually have to bother with a virtual environment? I haven't thus far for Vyper, even though everyone says to...)

@haltman-at
Copy link
Contributor

OK, I've now successfully reproduced this at least. The error truly does seem to be specific to Vyper 0.2.16.

@haltman-at
Copy link
Contributor

OK, I have no idea what's going on with this. I thought maybe it was due to the maxBuffer parameter in compile-vyper, but turning that up to ridiculous levels has no effect. Which makes sense -- this error is coming from the Vyper compiler itself, not from Node running it.

We may just have to treat this as a Vyper bug after all and tell people to use a different Vyper version if they encounter this. 🤷

@kevinbluer
Copy link
Member

We think this has to be treated as a Vyper issue so we're going to close it.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants