UNPKG

@omisego/omg-js-rootchain

Version:

Module to interact with the Ethereum RootChain

539 lines 185 kB
{ "contractName": "Erc20Vault", "abi": [ { "constant": true, "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "depositVerifiers", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_verifier", "type": "address" } ], "name": "setDepositVerifier", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "getEffectiveDepositVerifier", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "newDepositVerifierMaturityTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract PlasmaFramework", "name": "_framework", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Erc20Withdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "blknum", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DepositCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "nextDepositVerifier", "type": "address" } ], "name": "SetDepositVerifierCalled", "type": "event" }, { "constant": false, "inputs": [ { "internalType": "bytes", "name": "depositTx", "type": "bytes" } ], "name": "deposit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositVerifiers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"setDepositVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEffectiveDepositVerifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"depositTx\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"newDepositVerifierMaturityTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract PlasmaFramework\",\"name\":\"_framework\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Erc20Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blknum\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DepositCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nextDepositVerifier\",\"type\":\"address\"}],\"name\":\"SetDepositVerifierCalled\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"deposit(bytes)\":{\"params\":{\"depositTx\":\"RLP-encoded transaction to act as the deposit\"}},\"getEffectiveDepositVerifier()\":{\"return\":\"Contract address of the deposit verifier\"},\"setDepositVerifier(address)\":{\"details\":\"emit SetDepositVerifierCalledWhen one contract is already set, the next one is effective after 2 * MIN_EXIT_PERIOD. This is to protect deposit transactions already in mempool, and also make sure user only needs to SE within first week when invalid vault is registered. * see: https://github.com/omisego/plasma-contracts/issues/412 https://github.com/omisego/plasma-contracts/issues/173\",\"params\":{\"_verifier\":\"Address of the verifier contract\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"amount\":\"Amount to transfer\",\"receiver\":\"Address of the recipient\",\"token\":\"Address of ERC20 token contract\"}}}},\"userdoc\":{\"methods\":{\"deposit(bytes)\":{\"notice\":\"Deposits approved amount of ERC20 token(s) into the contract Once the deposit is recognized, the owner (depositor) can transact on the OmiseGO Network The approve function of the ERC20 token contract must be called before calling this function for at least the amount that is deposited into the contract\"},\"getEffectiveDepositVerifier()\":{\"notice\":\"Retrieves the currently effective deposit verifier contract address\"},\"setDepositVerifier(address)\":{\"notice\":\"Sets the deposit verifier contract, which may be called only by the operator\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Withdraw ERC20 tokens that have successfully exited from the OmiseGO Network\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Erc20Vault.sol\":\"Erc20Vault\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/BlockController.sol\":{\"keccak256\":\"0xac302eceee96e5a83b7fdfb43d23389f516ff4b7322e5e094d7ad0b3be177c0b\",\"urls\":[\"bzz-raw://cf36aec949574838af497c6448000226d20aea4d0a787c746dd10775166df8a3\",\"dweb:/ipfs/QmQvD1DZfeidC1xiC3fnzTbCcgTTG9MuN6NNwKn965bVvC\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/ExitGameController.sol\":{\"keccak256\":\"0x136c47ad99baab47c0a90499bf359706d1d34bb7de8573ce3f2868bf1440acd8\",\"urls\":[\"bzz-raw://d1291a1b667dc916958dd9d0be246fe6e7601bc0c08be6a7e11747214a94ef59\",\"dweb:/ipfs/QmampH1Xg4Z5KzToYR5Sngt36EFL45psZWtdfstSm9AVoS\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol\":{\"keccak256\":\"0x4b017fa7cae50fcf79803255fe0ffe8183e8f3934d9ac46a48235986f4714179\",\"urls\":[\"bzz-raw://30974a631b8c13aedea212390fcc1cf75472dc3f49a9c52eb33fc07c04b545e1\",\"dweb:/ipfs/QmT15Bw5NtE7b1RvVcmRXcGkEAL9BpbbgKwMtJBphXTbLd\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/Protocol.sol\":{\"keccak256\":\"0x81e37c136c340d917e370c58894761aee710bbef727414685490e405bc0f18e8\",\"urls\":[\"bzz-raw://7a54192b587531dd1adc33202479142afdf116385bab22daa153b8d4439d7333\",\"dweb:/ipfs/QmT37F3SCsWLf93okFrx1LUUr6c2zXCj28u2sjXXFBef2X\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/interfaces/IExitProcessor.sol\":{\"keccak256\":\"0x93c31f7c8ff69c80bd30f9296a7b2059affedadefc0c2cfb5c992eb1f1885fa2\",\"urls\":[\"bzz-raw://d56cb65fd67b07cec3bb17f48c064df4ea892780bf21d87d717e6581feb92ffd\",\"dweb:/ipfs/QmZZGPdSSN81c2P1CBnrCQD9mRWntPUPUjm4vCgWsBqS14\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/models/BlockModel.sol\":{\"keccak256\":\"0x7d26be621a43e2b8855f6c71f91c886d3b48ed809f421a1eee9c165c803d0cf7\",\"urls\":[\"bzz-raw://850b2acb61d96e9eb09d8bf24617ecf47aa948d6754b2d09d0e0d2b949193a2d\",\"dweb:/ipfs/QmW8yoi4jZxHAJf4bNjtt3nGckaWUEX92ZbgrKpoRHJGRM\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/registries/ExitGameRegistry.sol\":{\"keccak256\":\"0x4695a609c60b6be59bbc49ed6d3b14725bcc2efcecd083f8cabbcd3ddb399e68\",\"urls\":[\"bzz-raw://d31ca9188c426bbb2e8cf0fca61a9d451497408ddb4708cfc78d543b75fcb274\",\"dweb:/ipfs/QmawYeD9CCd5chGoB62zVKpk5Q9zJxhUUGJu7hUaCF5JXM\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/registries/VaultRegistry.sol\":{\"keccak256\":\"0x7786b4b8b043026655fa872f11ec747ef600100cc73da38369e1e2fd5047c95a\",\"urls\":[\"bzz-raw://b957490e53281e516290455b78722627f5536e0bd6b9bc17777f3f7a93ed9b14\",\"dweb:/ipfs/QmbUEwWfkTCSPPNEjAJUEXwgCCY9cBPgAKJagRbYQ3PSLE\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/ExitPriority.sol\":{\"keccak256\":\"0x18a6c6b1f8c072e693d855bc8991ea4c51951f9058fd116253a1b8ccb6fc1647\",\"urls\":[\"bzz-raw://a22420b5f647d6108be8a3de23b5dd561f65b12dd804ead7edf5384407a506f3\",\"dweb:/ipfs/QmTd986YDqtwQ1eXqUP4esUBKxGthieXJWkQTsMJzewXgA\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/PriorityQueue.sol\":{\"keccak256\":\"0xf46de2038d5fbc06f1aba7f36e7e02ead27485044ccf25afc2b9ad84ea705991\",\"urls\":[\"bzz-raw://a23fd7ad08f351743c7599fa546a0b54586e7e319c00c3e9d41c3aa10546ec5d\",\"dweb:/ipfs/QmWH32SoQmhyy7CE8u8g412e1AosogVE3eEBjrAh9MABvb\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/Quarantine.sol\":{\"keccak256\":\"0x1b685ea3de626e3d8961d0e384a67c3e87752874784cc2e59777857d130f2390\",\"urls\":[\"bzz-raw://28c30354aa580476f230c4d8e151d34337b923caabc6bccfe560d75ef37d446e\",\"dweb:/ipfs/Qmf9nCYFBhHDyMgHmxX5pSkqLpqb2W3XffPopdkJTHmnAA\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/OnlyFromAddress.sol\":{\"keccak256\":\"0x54d4cb74bf5c448bb383ff4ffce898473739a5ba015e439dae1c092c70df943f\",\"urls\":[\"bzz-raw://5c9efbe363534d6746573b9b0dda687d257272c3ce0123b6a45bc7eef55a40b4\",\"dweb:/ipfs/QmZPLF1bKdU6DAZZcxWfMudUwzeubLxsSk14x8hvUMj15X\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/PosLib.sol\":{\"keccak256\":\"0xd47b38ef93cf913b6b7a3bf608dec2c084108d090cc02b222da3d8eb39819d5f\",\"urls\":[\"bzz-raw://c42d551c21adfa400d08108673b29e4bd1eec70aaa469287571071df3f8f0bc1\",\"dweb:/ipfs/Qmepq632azqUDHt5ypVwmkTfeQG8uP1HYw8x1H3Hdg9K6R\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Erc20Vault.sol\":{\"keccak256\":\"0x99455fccb574d1f38b9e60f67c34de83d25b8d424f4fea57230a31d2ccbe7b27\",\"urls\":[\"bzz-raw://c8675482faefd4d812c62bbefbafe7d0ead7283235d10be290141e018d4b9024\",\"dweb:/ipfs/QmaNCn1ViB8FV4sCfVgVoLnhqj9GvLUWMQMdFTPc8mZWab\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol\":{\"keccak256\":\"0x2db04ba824e64bb121c7a3733654774198011c3b5a264a068c24146dc359444f\",\"urls\":[\"bzz-raw://c047c9e255606d272deccb90edf90ad3eb1bc65780726a91b16792e8e469f577\",\"dweb:/ipfs/QmP6rJfCpRdgbEDaYMr7wgHxM8PyBSk5KAdtVTbkSRXYyF\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IErc20DepositVerifier.sol\":{\"keccak256\":\"0xb9fdb4eb58e0fdb99331aa279586d9832c235bd4d814eecf522e80df0878e1fa\",\"urls\":[\"bzz-raw://579e40e92506f413c80b229af603a38073bd38ae85cfe0634046b4579b8a43f8\",\"dweb:/ipfs/QmZBnfJT52kV3QzdCoWf3ykbeCnb9E6syVuW1DvnwRjqXC\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf6f89424e17870561dc23c5933c55c5726b66a68d51ad2a2c00c569a5f02f507\",\"urls\":[\"bzz-raw://005657a7ffbf6d12726ac0167b55be965dc473d43f061b605f883a54cc00ab4f\",\"dweb:/ipfs/QmaBzyvDQyNnn6DXQYewEtN9Go85orikSnW9PwNWqUGPEX\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}", "bytecode": "0x60806040527f800000000000000000000000000000000000000000000000000000000000000060135534801561003457600080fd5b5060405162000dc638038062000dc68339818101604052602081101561005957600080fd5b5051600080546001600160a01b0319166001600160a01b0383161790558061007f610095565b61008d90600190601061015b565b5050506101d2565b61009d610199565b6100a5610199565b6040805160006020808301829052602180840183905284518085039091018152604190930190935281519190920120905b601081101561015257818382601081106100ec57fe5b60209081029190910191909152604080517f010000000000000000000000000000000000000000000000000000000000000081840152602181018590526041808201959095528151808203909501855260610190528251920191909120906001016100d6565b50909150505b90565b8260108101928215610189579160200282015b8281111561018957825182559160200191906001019061016e565b506101959291506101b8565b5090565b6040518061020001604052806010906020820280388339509192915050565b61015891905b8082111561019557600081556001016101be565b610be480620001e26000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806302e9b07b146100675780632c6ce78b146100a057806352518b7f146100c857806398b1e06a146100d0578063a7e5994f14610140578063d9caed121461015a575b600080fd5b6100846004803603602081101561007d57600080fd5b5035610190565b604080516001600160a01b039092168252519081900360200190f35b6100c6600480360360208110156100b657600080fd5b50356001600160a01b03166101ad565b005b6100846103df565b6100c6600480360360208110156100e657600080fd5b81019060208101813564010000000081111561010157600080fd5b82018360208201111561011357600080fd5b8035906020019184600183028401116401000000008311171561013557600080fd5b50909250905061040e565b6101486105d7565b60408051918252519081900360200190f35b6100c66004803603606081101561017057600080fd5b506001600160a01b038135811691602081013590911690604001356105dd565b6011816002811061019d57fe5b01546001600160a01b0316905081565b6000809054906101000a90046001600160a01b03166001600160a01b0316634b0a72bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101fa57600080fd5b505afa15801561020e573d6000803e3d6000fd5b505050506040513d602081101561022457600080fd5b5051336001600160a01b03821614610283576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206164647265737320697320756e617574686f72697a65640000604482015290519081900360640190fd5b6001600160a01b0382166102c85760405162461bcd60e51b815260040180806020018281038252602f815260200180610af8602f913960400191505060405180910390fd5b6011546001600160a01b031615610383576102e16103df565b601180546001600160a01b03199081166001600160a01b0393841617909155601280549091168483161790556000546040805163d4a2b4ef60e01b81529051919092169163d4a2b4ef916004808301926020929190829003018186803b15801561034a57600080fd5b505afa15801561035e573d6000803e3d6000fd5b505050506040513d602081101561037457600080fd5b5051600202420160135561039f565b601180546001600160a01b0319166001600160a01b0384161790555b604080516001600160a01b038416815290517f11e5a7570e0de4b31179f8c9cf5e8a1e6cfd23731ec7a5a06e3006d71dd321fd9181900360200190a15050565b600060135442101561040257601160005b01546001600160a01b0316905061040b565b601160016103f0565b90565b60006104186103df565b90506001600160a01b03811661045f5760405162461bcd60e51b8152600401808060200182810382526021815260200180610b276021913960400191505060405180910390fd5b604051635970e69f60e11b81523360248201819052306044830181905260606004840190815260648401869052600093849384936001600160a01b0388169363b2e1cd3e938b938b93909290918190608401868680828437600081840152601f19601f8201169050808301925050509550505050505060606040518083038186803b1580156104ed57600080fd5b505afa158015610501573d6000803e3d6000fd5b505050506040513d606081101561051757600080fd5b508051602082015160409092015190945090925090506105486001600160a01b03831684308463ffffffff6106f916565b600061058987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061075992505050565b6040805184815290519192506001600160a01b03851691839133917f18569122d84f30025bb8dffb33563f1bdbfb9637f21552b11b8305686e9cb3079181900360200190a450505050505050565b60135481565b60005460408051632d0816d760e11b815233600482015290516001600160a01b0390921691635a102dae91602480820192602092909190829003018186803b15801561062857600080fd5b505afa15801561063c573d6000803e3d6000fd5b505050506040513d602081101561065257600080fd5b505161068f5760405162461bcd60e51b815260040180806020018281038252603e815260200180610b72603e913960400191505060405180910390fd5b6106a96001600160a01b038316848363ffffffff6107eb16565b816001600160a01b0316836001600160a01b03167fcd43b20ab5058a2a0a057681c9d3754aa8971fe74dacc8b6e4be0a49dae13101836040518082815260200191505060405180910390a3505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610753908590610842565b50505050565b600080610765836109fa565b60008054604080516317cb58d360e31b815260048101859052905193945091926001600160a01b039091169163be5ac69891602480830192602092919082900301818787803b1580156107b757600080fd5b505af11580156107cb573d6000803e3d6000fd5b505050506040513d60208110156107e157600080fd5b5051949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261083d908490610842565b505050565b610854826001600160a01b0316610af1565b6108a5576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106108e35780518252601f1990920191602091820191016108c4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610945576040519150601f19603f3d011682016040523d82523d6000602084013e61094a565b606091505b5091509150816109a1576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610753578080602001905160208110156109bd57600080fd5b50516107535760405162461bcd60e51b815260040180806020018281038252602a815260200180610b48602a913960400191505060405180910390fd5b60405160006020808301828152845192938493849387939260210191908401908083835b60208310610a3d5780518252601f199092019160209182019101610a1e565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905060008090505b6010811015610aea57600160f81b8260018360108110610a9d57fe5b0154604080516001600160f81b0319909416602080860191909152602185019390935260418085019290925280518085039092018252606190930190925281519101209150600101610a81565b5092915050565b3b15159056fe43616e6e6f742073657420616e20656d7074792061646472657373206173206465706f7369742076657269666965724465706f73697420766572696669657220686173206e6f74206265656e207365745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616c6c65642066726f6d2061206e6f6e2d72656769737465726564206f722071756172616e74696e656420657869742067616d6520636f6e7472616374a265627a7a72315820a15dfb55c467c1a592f52c680819c223ec00eb4f895f64cd21eda539dff25b8564736f6c634300050b0032", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806302e9b07b146100675780632c6ce78b146100a057806352518b7f146100c857806398b1e06a146100d0578063a7e5994f14610140578063d9caed121461015a575b600080fd5b6100846004803603602081101561007d57600080fd5b5035610190565b604080516001600160a01b039092168252519081900360200190f35b6100c6600480360360208110156100b657600080fd5b50356001600160a01b03166101ad565b005b6100846103df565b6100c6600480360360208110156100e657600080fd5b81019060208101813564010000000081111561010157600080fd5b82018360208201111561011357600080fd5b8035906020019184600183028401116401000000008311171561013557600080fd5b50909250905061040e565b6101486105d7565b60408051918252519081900360200190f35b6100c66004803603606081101561017057600080fd5b506001600160a01b038135811691602081013590911690604001356105dd565b6011816002811061019d57fe5b01546001600160a01b0316905081565b6000809054906101000a90046001600160a01b03166001600160a01b0316634b0a72bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101fa57600080fd5b505afa15801561020e573d6000803e3d6000fd5b505050506040513d602081101561022457600080fd5b5051336001600160a01b03821614610283576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206164647265737320697320756e617574686f72697a65640000604482015290519081900360640190fd5b6001600160a01b0382166102c85760405162461bcd60e51b815260040180806020018281038252602f815260200180610af8602f913960400191505060405180910390fd5b6011546001600160a01b031615610383576102e16103df565b601180546001600160a01b03199081166001600160a01b0393841617909155601280549091168483161790556000546040805163d4a2b4ef60e01b81529051919092169163d4a2b4ef916004808301926020929190829003018186803b15801561034a57600080fd5b505afa15801561035e573d6000803e3d6000fd5b505050506040513d602081101561037457600080fd5b5051600202420160135561039f565b601180546001600160a01b0319166001600160a01b0384161790555b604080516001600160a01b038416815290517f11e5a7570e0de4b31179f8c9cf5e8a1e6cfd23731ec7a5a06e3006d71dd321fd9181900360200190a15050565b600060135442101561040257601160005b01546001600160a01b0316905061040b565b601160016103f0565b90565b60006104186103df565b90506001600160a01b03811661045f5760405162461bcd60e51b8152600401808060200182810382526021815260200180610b276021913960400191505060405180910390fd5b604051635970e69f60e11b81523360248201819052306044830181905260606004840190815260648401869052600093849384936001600160a01b0388169363b2e1cd3e938b938b93909290918190608401868680828437600081840152601f19601f8201169050808301925050509550505050505060606040518083038186803b1580156104ed57600080fd5b505afa158015610501573d6000803e3d6000fd5b505050506040513d606081101561051757600080fd5b508051602082015160409092015190945090925090506105486001600160a01b03831684308463ffffffff6106f916565b600061058987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061075992505050565b6040805184815290519192506001600160a01b03851691839133917f18569122d84f30025bb8dffb33563f1bdbfb9637f21552b11b8305686e9cb3079181900360200190a450505050505050565b60135481565b60005460408051632d0816d760e11b815233600482015290516001600160a01b0390921691635a102dae91602480820192602092909190829003018186803b15801561062857600080fd5b505afa15801561063c573d6000803e3d6000fd5b505050506040513d602081101561065257600080fd5b505161068f5760405162461bcd60e51b815260040180806020018281038252603e815260200180610b72603e913960400191505060405180910390fd5b6106a96001600160a01b038316848363ffffffff6107eb16565b816001600160a01b0316836001600160a01b03167fcd43b20ab5058a2a0a057681c9d3754aa8971fe74dacc8b6e4be0a49dae13101836040518082815260200191505060405180910390a3505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610753908590610842565b50505050565b600080610765836109fa565b60008054604080516317cb58d360e31b815260048101859052905193945091926001600160a01b039091169163be5ac69891602480830192602092919082900301818787803b1580156107b757600080fd5b505af11580156107cb573d6000803e3d6000fd5b505050506040513d60208110156107e157600080fd5b5051949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261083d908490610842565b505050565b610854826001600160a01b0316610af1565b6108a5576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106108e35780518252601f1990920191602091820191016108c4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610945576040519150601f19603f3d011682016040523d82523d6000602084013e61094a565b606091505b5091509150816109a1576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610753578080602001905160208110156109bd57600080fd5b50516107535760405162461bcd60e51b815260040180806020018281038252602a815260200180610b48602a913960400191505060405180910390fd5b60405160006020808301828152845192938493849387939260210191908401908083835b60208310610a3d5780518252601f199092019160209182019101610a1e565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905060008090505b6010811015610aea57600160f81b8260018360108110610a9d57fe5b0154604080516001600160f81b0319909416602080860191909152602185019390935260418085019290925280518085039092018252606190930190925281519101209150600101610a81565b5092915050565b3b15159056fe43616e6e6f742073657420616e20656d7074792061646472657373206173206465706f7369742076657269666965724465706f73697420766572696669657220686173206e6f74206265656e207365745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616c6c65642066726f6d2061206e6f6e2d72656769737465726564206f722071756172616e74696e656420657869742067616d6520636f6e7472616374a265627a7a72315820a15dfb55c467c1a592f52c680819c223ec00eb4f895f64cd21eda539dff25b8564736f6c634300050b0032", "sourceMap": "273:1903:96:-;;;1015:8:98;962:61;;618:67:96;8:9:-1;5:2;;;30:1;27;20:12;5:2;618:67:96;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;618:67:96;1114:9:98;:22;;-1:-1:-1;;;;;;1114:22:98;-1:-1:-1;;;;;1114:22:98;;;;;618:67:96;1159:15:98;:13;:15::i;:::-;1146:28;;:10;;:28;;:::i;:::-;;1057:124;618:67:96;273:1903;;1294:378:98;1341:18;;:::i;:::-;1371:25;;:::i;:::-;1435:39;;;1406:16;1435:39;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1435:39:98;;;;;;;1425:50;;;;;;;;1485:158;1506:2;1502:1;:6;1485:158;;;1541:8;1529:6;1536:1;1529:9;;;;;;;;;;;;;;;:20;;;;1584:47;;;1601:9;1584:47;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1584:47:98;;;;1574:58;;;;;;;;;456:4;1510:3;1485:158;;;-1:-1:-1;1659:6:98;;-1:-1:-1;;1294:378:98;;:::o;273:1903:96:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:1903:96;;;-1:-1:-1;273:1903:96;:::i;:::-;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;273:1903:96;;;-1:-1:-1;;273:1903:96:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "273:1903:96:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:1903:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:34:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;922:34:98;;:::i;:::-;;;;-1:-1:-1;;;;;922:34:98;;;;;;;;;;;;;;2670:560;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2670:560:98;-1:-1:-1;;;;;2670:560:98;;:::i;:::-;;3391:240;;;:::i;1117:578:96:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1117:578:96;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1117:578:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1117:578:96;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1117:578:96;;-1:-1:-1;1117:578:96;-1:-1:-1;1117:578:96;:::i;962:61:98:-;;;:::i;:::-;;;;;;;;;;;;;;;;1944:230:96;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1944:230:96;;;;;;;;;;;;;;;;;:::i;922:34:98:-;;;;;;;;;;;;-1:-1:-1;;;;;922:34:98;;-1:-1:-1;922:34:98;:::o;2670:560::-;2733:9;;;;;;;;;-1:-1:-1;;;;;2733:9:98;-1:-1:-1;;;;;2733:23:98;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2733:25:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2733:25:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2733:25:98;109:10:91;-1:-1:-1;;;;;109:20:91;;;101:63;;;;;-1:-1:-1;;;101:63:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2778:23:98;;2770:83;;;;-1:-1:-1;;;2770:83:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2868:16;:19;-1:-1:-1;;;;;2868:19:98;:33;2864:309;;2939:29;:27;:29::i;:::-;2917:16;:51;;-1:-1:-1;;;;;;2917:51:98;;;-1:-1:-1;;;;;2917:51:98;;;;;;;2982:19;:31;;;;;;;;;;;-1:-1:-1;3075:9:98;:25;;;-1:-1:-1;;;3075:25:98;;;;:9;;;;;:23;;:25;;;;;;;;;;;;;;:9;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;3075:25:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3075:25:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3075:25:98;3071:1;:29;3065:3;:35;3027;:73;2864:309;;;3131:16;:31;;-1:-1:-1;;;;;;3131:31:98;-1:-1:-1;;;;;3131:31:98;;;;;2864:309;3188:35;;;-1:-1:-1;;;;;3188:35:98;;;;;;;;;;;;;;;2670:560;;:::o;3391:240::-;3451:7;3480:35;;3474:3;:41;3470:155;;;3538:16;3555:1;3538:19;;;-1:-1:-1;;;;;3538:19:98;;-1:-1:-1;3531:26:98;;3470:155;3595:16;3612:1;3595:19;;3470:155;3391:240;:::o;1117:578:96:-;1179:23;1205:35;:33;:35::i;:::-;1179:61;-1:-1:-1;;;;;;1258:29:96;;1250:75;;;;-1:-1:-1;;;1250:75:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1389:96;;-1:-1:-1;;;1389:96:96;;1459:10;1389:96;;;;;;1479:4;1389:96;;;;;;;;;;;;;;;;;;;1337:17;;;;;;-1:-1:-1;;;;;1389:58:96;;;;;1448:9;;;;1459:10;;1479:4;;1389:96;;;;1448:9;;;;1389:96;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1389:96:96;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1389:96:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1389:96:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1389:96:96;;;;;;;;;;;;;-1:-1:-1;1389:96:96;;-1:-1:-1;1389:96:96;-1:-1:-1;1496:64:96;-1:-1:-1;;;;;1496:30:96;;1389:96;1546:4;1389:96;1496:64;:30;:64;:::i;:::-;1571:14;1588:35;1613:9;;1588:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1588:24:96;;-1:-1:-1;;;1588:35:96:i;:::-;1639:49;;;;;;;;1571:52;;-1:-1:-1;;;;;;1639:49:96;;;1571:52;;1654:10;;1639:49;;;;;;;;;1117:578;;;;;;;:::o;962:61:98:-;;;;:::o;1944:230:96:-;1875:9:98;;1858:59;;;-1:-1:-1;;;1858:59:98;;1906:10;1858:59;;;;;;-1:-1:-1;;;;;1875:9:98;;;;1858:47;;:59;;;;;;;;;;;;;;;1875:9;1858:59;;;5:2:-1;;;;30:1;27;20:12;5:2;1858:59:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1858:59:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1858:59:98;1837:168;;;;-1:-1:-1;;;1837:168:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:44:96;-1:-1:-1;;;;;2069:26:96;;2096:8;2106:6;2069:44;:26;:44;:::i;:::-;2153:5;-1:-1:-1;;;;;2128:39:96;2143:8;-1:-1:-1;;;;;2128:39:96;;2160:6;2128:39;;;;;;;;;;;;;;;;;;1944:230;;;:::o;842:202:112:-;968:68;;;-1:-1:-1;;;;;968:68:112;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;968:68:112;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;942:95:112;;961:5;;942:18;:95::i;:::-;842:202;;;;:::o;3802:240:98:-;3872:7;3891:12;3906:30;3926:9;3906:19;:30::i;:::-;3947:21;3971:9;;:34;;;-1:-1:-1;;;3971:34:98;;;;;;;;;;3891:45;;-1:-1:-1;3947:21:98;;-1:-1:-1;;;;;3971:9:98;;;;:28;;:34;;;;;;;;;;;;;;3947:21;3971:9;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;3971:34:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3971:34:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3971:34:98;;3802:240;-1:-1:-1;;;;3802:240:98:o;662:174:112:-;770:58;;;-1:-1:-1;;;;;770:58:112;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;770:58:112;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;744:85:112;;763:5;;744:18;:85::i;:::-;662:174;;;:::o;2621:1095::-;3216:27;3224:5;-1:-1:-1;;;;;3216:25:112;;:27::i;:::-;3208:71;;;;;-1:-1:-1;;;3208:71:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;3350:12;3364:23;3399:5;-1:-1:-1;;;;;3391:19:112;3411:4;3391:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3391:25:112;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3349:67:112;;;;3434:7;3426:52;;;;;-1:-1:-1;;;3426:52:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3493:17;;:21;3489:221;;3633:10;3622:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3622:30:112;3614:85;;;;-1:-1:-1;;;3614:85:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4048:316:98;4167:38;;4123:7;4167:38;;;;;;;;;4123:7;;;;;;4195:9;;4167:38;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4167:38:98;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4167:38:98;;;4157:49;;;;;;4142:64;;4221:6;4230:1;4221:10;;4216:121;4237:2;4233:1;:6;4216:121;;;-1:-1:-1;;;4305:4:98;456;4322:1;4311:13;;;;;;;;;4277:48;;;-1:-1:-1;;;;;;4277:48:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4277:48:98;;;;;;;4267:59;;;;;;-1:-1:-1;4277:48:98;4241:3;4216:121;;;-1:-1:-1;4353:4:98;4048:316;-1:-1:-1;;4048:316:98:o;542:413:113:-;902:20;940:8;;;542:413::o", "source": "pragma solidity 0.5.11;\n\nimport \"./Vault.sol\";\nimport \"./verifiers/IErc20DepositVerifier.sol\";\nimport \"../framework/PlasmaFramework.sol\";\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\n\ncontract Erc20Vault is Vault {\n using SafeERC20 for IERC20;\n\n event Erc20Withdrawn(\n address indexed receiver,\n address indexed token,\n uint256 amount\n );\n\n event DepositCreated(\n address indexed depositor,\n uint256 indexed blknum,\n address indexed token,\n uint256 amount\n );\n\n constructor(PlasmaFramework _framework) public Vault(_framework) {}\n\n /**\n * @notice Deposits approved amount of ERC20 token(s) into the contract\n * Once the deposit is recognized, the owner (depositor) can transact on the OmiseGO Network\n * The approve function of the ERC20 token contract must be called before calling this function\n * for at least the amount that is deposited into the contract\n * @param depositTx RLP-encoded transaction to act as the deposit\n */\n function deposit(bytes calldata depositTx) external {\n address depositVerifier = super.getEffectiveDepositVerifier();\n require(depositVerifier != address(0), \"Deposit verifier has not been set\");\n\n (address depositor, address token, uint256 amount) = IErc20DepositVerifier(depositVerifier)\n .verify(depositTx, msg.sender, address(this));\n\n IERC20(token).safeTransferFrom(depositor, address(this), amount);\n\n uint256 blknum = super.submitDepositBlock(depositTx);\n\n emit DepositCreated(msg.sender, blknum, token, amount);\n }\n\n /**\n * @notice Withdraw ERC20 tokens that have successfully exited from the OmiseGO Network\n * @param receiver Address of the recipient\n * @param token Address of ERC20 token contract\n * @param amount Amount to transfer\n */\n function withdraw(address payable receiver, address token, uint256 amount) external onlyFromNonQuarantinedExitGame {\n IERC20(token).safeTransfer(receiver, amount);\n emit Erc20Withdrawn(receiver, token, amount);\n }\n}\n", "sourcePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Erc20Vault.sol", "ast": { "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Erc20Vault.sol", "exportedSymbols": { "Erc20Vault": [ 15262 ] }, "id": 15263, "nodeType": "SourceUnit", "nodes": [ { "id": 15133, "literals": [ "solidity", "0.5", ".11" ], "nodeType": "PragmaDirective", "src": "0:23:96" }, { "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol", "file": "./Vault.sol", "id": 15134, "nodeType": "ImportDirective", "scope": 15263, "sourceUnit": 15664, "src": "25:21:96", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IErc20DepositVerifier.sol", "file": "./verifiers/IErc20DepositVerifier.sol", "id": 15135, "nodeType": "ImportDirective", "scope": 15263, "sourceUnit": 15966, "src": "47:47:96", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol", "file": "../framework/PlasmaFramework.sol", "id": 15136, "nodeType": "ImportDirective", "scope": 15263, "sourceUnit": 12153, "src": "95:42:96", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 15137, "nodeType": "ImportDirective", "scope": 15263, "sourceUnit": 17051, "src": "139:64:96", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 15138, "nodeType": "ImportDirective", "scope": 15263, "sourceUnit": 17270, "src": "204:67:96", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 15139, "name": "Vault", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 15663, "src": "296:5:96", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$15663", "typeString": "contract Vault" } }, "id": 15140, "nodeType": "InheritanceSpecifier", "src": "296:5:96" } ], "contractDependencies": [ 14291, 15663 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 15262, "linearizedBaseContracts": [ 15262, 15663, 14291 ], "name": "Erc20Vault", "nodeType": "ContractDefinition", "nodes": [ { "id": 15143, "libraryName": { "contractScope": null, "id": 15141, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 17269, "src": "314:9:96", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$17269", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "308:27:96", "typeName": { "contractScope": null, "id": 15142, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 17050, "src": "328:6:96", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$17050", "typeString": "contract IERC20" } } }, { "anonymous": false, "documentation": null, "id": 15151, "name": "Erc20Withdrawn", "nodeType": "EventDefinition", "parameters": { "id": 15150, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15145, "indexed": true, "name": "receiver", "nodeType": "VariableDeclaration", "scope": 15151, "src": "371:24:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15144, "name": "address", "nodeType": "ElementaryTypeName", "src": "371:7:96", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15147, "indexed": true, "name": "token", "nodeType": "VariableDeclaration", "scope": 15151, "src": "405:21:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15146, "name": "address", "nodeType": "ElementaryTypeName", "src": "405:7:96", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15149, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 15151, "src": "436:14:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "436:7:96", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "361:95:96" }, "src": "341:116:96" }, { "anonymous": false, "documentation": null, "id": 15161, "name": "DepositCreated", "nodeType": "EventDefinition", "parameters": { "id": 15160, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15153, "indexed": true, "name": "depositor", "nodeType": "VariableDeclaration", "scope": 15161, "src": "493:25:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15152, "name": "address", "nodeType": "ElementaryTypeName", "src": "493:7:96", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15155, "indexed": true, "name": "blknum", "nodeType": "VariableDeclaration", "scope": 15161, "src": "528:22:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "528:7:96", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15157, "indexed": true, "name": "token", "nodeType": "VariableDeclaration", "scope": 15161, "src": "560:21:96", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15156, "name": "address", "nodeType": "ElementaryTypeName", "src": "560:7:96", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15159, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 15161, "src": "591:14:96", "st