ocean-subgraph/abis/FixedRateExchange.json

15678 lines
725 KiB
JSON

{
"contractName": "FixedRateExchange",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"name": "baseToken",
"type": "address"
},
{
"indexed": true,
"name": "dataToken",
"type": "address"
},
{
"indexed": false,
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"name": "fixedRate",
"type": "uint256"
}
],
"name": "ExchangeCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"name": "newRate",
"type": "uint256"
}
],
"name": "ExchangeRateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeActivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeDeactivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"name": "by",
"type": "address"
},
{
"indexed": false,
"name": "baseTokenSwappedAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "dataTokenSwappedAmount",
"type": "uint256"
}
],
"name": "Swapped",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "baseToken",
"type": "address"
},
{
"name": "dataToken",
"type": "address"
},
{
"name": "fixedRate",
"type": "uint256"
}
],
"name": "create",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "baseToken",
"type": "address"
},
{
"name": "dataToken",
"type": "address"
},
{
"name": "exchangeOwner",
"type": "address"
}
],
"name": "generateExchangeId",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
},
{
"name": "dataTokenAmount",
"type": "uint256"
}
],
"name": "CalcInGivenOut",
"outputs": [
{
"name": "baseTokenAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
},
{
"name": "dataTokenAmount",
"type": "uint256"
}
],
"name": "swap",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getNumberOfExchanges",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
},
{
"name": "newRate",
"type": "uint256"
}
],
"name": "setRate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "toggleExchangeState",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getRate",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getSupply",
"outputs": [
{
"name": "supply",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getExchange",
"outputs": [
{
"name": "exchangeOwner",
"type": "address"
},
{
"name": "dataToken",
"type": "address"
},
{
"name": "baseToken",
"type": "address"
},
{
"name": "fixedRate",
"type": "uint256"
},
{
"name": "active",
"type": "bool"
},
{
"name": "supply",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getExchanges",
"outputs": [
{
"name": "",
"type": "bytes32[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "isActive",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getExchanges\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"name\":\"toggleExchangeState\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"name\":\"getExchange\",\"outputs\":[{\"name\":\"exchangeOwner\",\"type\":\"address\"},{\"name\":\"dataToken\",\"type\":\"address\"},{\"name\":\"baseToken\",\"type\":\"address\"},{\"name\":\"fixedRate\",\"type\":\"uint256\"},{\"name\":\"active\",\"type\":\"bool\"},{\"name\":\"supply\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"name\":\"getSupply\",\"outputs\":[{\"name\":\"supply\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"name\":\"isActive\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"name\":\"getRate\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfExchanges\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"name\":\"dataTokenAmount\",\"type\":\"uint256\"}],\"name\":\"CalcInGivenOut\",\"outputs\":[{\"name\":\"baseTokenAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"baseToken\",\"type\":\"address\"},{\"name\":\"dataToken\",\"type\":\"address\"},{\"name\":\"exchangeOwner\",\"type\":\"address\"}],\"name\":\"generateExchangeId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"name\":\"dataTokenAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"baseToken\",\"type\":\"address\"},{\"name\":\"dataToken\",\"type\":\"address\"},{\"name\":\"fixedRate\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"baseToken\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"dataToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"exchangeOwner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"fixedRate\",\"type\":\"uint256\"}],\"name\":\"ExchangeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"exchangeOwner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"ExchangeRateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"exchangeOwner\",\"type\":\"address\"}],\"name\":\"ExchangeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"exchangeOwner\",\"type\":\"address\"}],\"name\":\"ExchangeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"by\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"baseTokenSwappedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"dataTokenSwappedAmount\",\"type\":\"uint256\"}],\"name\":\"Swapped\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"FixedRateExchange is a fixed rate exchange Contract Marketplaces uses this contract to allow consumers exchanging datatokens with ocean token using a fixed exchange rate.\",\"methods\":{\"CalcInGivenOut(bytes32,uint256)\":{\"details\":\"CalcInGivenOut Calculates how many basetokens are needed to get specifyed amount of datatokens\",\"params\":{\"dataTokenAmount\":\"the amount of data tokens to be exchanged\",\"exchangeId\":\"a unique exchange idnetifier \"}},\"create(address,address,uint256)\":{\"details\":\"create creates new exchange pairs between base token (ocean token) and data tokens.\",\"params\":{\"baseToken\":\"refers to a ocean token contract address\",\"dataToken\":\"refers to a data token contract address\",\"fixedRate\":\"refers to the exact fixed exchange rate in wei\"}},\"generateExchangeId(address,address,address)\":{\"details\":\"generateExchangeId creates unique exchange identifier for two token pairs.\",\"params\":{\"baseToken\":\"refers to a ocean token contract address\",\"dataToken\":\"refers to a data token contract address\",\"exchangeOwner\":\"exchange owner address\"}},\"getExchange(bytes32)\":{\"details\":\"getExchange gets all the exchange details\",\"params\":{\"exchangeId\":\"a unique exchange idnetifier\"},\"return\":\"all the exchange details including the exchange Owner the dataToken contract address, the base token address, the fixed rate, whether the exchange is active and the supply or the the current data token liquidity.\"},\"getExchanges()\":{\"details\":\"getExchanges gets all the exchanges list\",\"return\":\"a list of all registered exchange Ids\"},\"getNumberOfExchanges()\":{\"details\":\"getNumberOfExchanges gets the total number of registered exchanges\",\"return\":\"total number of registered exchange IDs\"},\"getRate(bytes32)\":{\"details\":\"getRate gets the current fixed rate for an exchange\",\"params\":{\"exchangeId\":\"a unique exchange idnetifier\"},\"return\":\"fixed rate value\"},\"getSupply(bytes32)\":{\"details\":\"getSupply gets the current supply of datatokens in an fixed rate exchagne\",\"params\":{\"exchangeId\":\"the exchange ID\"},\"return\":\"supply\"},\"isActive(bytes32)\":{\"details\":\"isActive checks whether exchange is active\",\"params\":{\"exchangeId\":\"a unique exchange idnetifier\"},\"return\":\"true if exchange is true, otherwise returns false\"},\"setRate(bytes32,uint256)\":{\"details\":\"setRate changes the fixed rate for an exchange with a new rate\",\"params\":{\"exchangeId\":\"a unique exchange idnetifier\",\"newRate\":\"new fixed rate value\"}},\"swap(bytes32,uint256)\":{\"details\":\"swap atomic swap between two registered fixed rate exchange.\",\"params\":{\"dataTokenAmount\":\"the amount of data tokens to be exchanged\",\"exchangeId\":\"a unique exchange idnetifier \"}},\"toggleExchangeState(bytes32)\":{\"details\":\"toggleExchangeState toggles the active state of an existing exchange\",\"params\":{\"exchangeId\":\"a unique exchange idnetifier\"}}},\"title\":\"FixedRateExchange\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/ocean/ocean-contracts/contracts/fixedRate/FixedRateExchange.sol\":\"FixedRateExchange\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/ocean/ocean-contracts/contracts/fixedRate/FixedRateExchange.sol\":{\"keccak256\":\"0xff9de548d8fc2ed7f3ba9ec63f839e164152b48f9ca0e50b8c8e31c8d4de14c4\",\"urls\":[\"bzzr://fcff28f27252fc99900599258b20062220c7084b5efec438cedde9bb47723377\"]},\"/ocean/ocean-contracts/contracts/interfaces/IERC20Template.sol\":{\"keccak256\":\"0x022ebed2ba4949e96a05cc394cf690d8fd3190a4733cebe8cbe930ac25cfde18\",\"urls\":[\"bzzr://2fa3d5cae14f0af7d78f6e1d13bc41854082c03ab2f86462ebb09afda88ee6e9\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50611243806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c010000000000000000000000000000000000000000000000000000000090048063b32b56f91161008e578063b32b56f914610231578063b42414291461024e578063c030023114610256578063c1f6572e14610279578063de060743146102b1578063ffe5725f146102d4576100d1565b80631e2e3a6b146100d657806324cb477e1461012e5780634c87087d1461014d57806354d9be59146101ae5780635c36901c146101dd578063680819eb1461020e575b600080fd5b6100de61030a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561011a578181015183820152602001610102565b505050509050019250505060405180910390f35b61014b6004803603602081101561014457600080fd5b5035610362565b005b61016a6004803603602081101561016357600080fd5b5035610465565b60408051600160a060020a0397881681529587166020870152939095168484015260608401919091521515608083015260a082019290925290519081900360c00190f35b6101cb600480360360208110156101c457600080fd5b50356104fc565b60408051918252519081900360200190f35b6101fa600480360360208110156101f357600080fd5b5035610689565b604080519115158252519081900360200190f35b61014b6004803603604081101561022457600080fd5b508035906020013561069e565b6101cb6004803603602081101561024757600080fd5b503561078b565b6101cb6107a0565b6101cb6004803603604081101561026c57600080fd5b50803590602001356107a6565b6101cb6004803603606081101561028f57600080fd5b50600160a060020a03813581169160208101358216916040909101351661085e565b61014b600480360360408110156102c757600080fd5b50803590602001356108a4565b61014b600480360360608110156102ea57600080fd5b50600160a060020a03813581169160208101359091169060400135610b8a565b6060600180548060200260200160405190810160405280929190818152602001828054801561035857602002820191906000526020600020905b815481526020019060010190808311610344575b5050505050905090565b60008181526020819052604090205481906101009004600160a060020a031633146103c15760405160e560020a62461bcd0281526004018080602001828103825260298152602001806110886029913960400191505060405180910390fd5b60008281526020819052604090205460ff161561041d57600082815260208190526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3610461565b600082815260208190526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b5050565b600080600080600080610476610fb2565b5060008781526020818152604091829020825160a081018452815460ff81161515808352610100909104600160a060020a03908116948301859052600184015481169583018690526002840154166060830181905260039093015460808301819052939a509398509096509094509092506104f0886104fc565b91505091939550919395565b60008181526020819052604081205460ff1661051a57506000610684565b6000828152602081815260408083206001810154905482517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a036101009092048216600482015292519116926370a082319260248082019391829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50516000848152602081815260408083206001810154905482517fdd62ed3e000000000000000000000000000000000000000000000000000000008152610100909104600160a060020a0390811660048301523060248301529251959650939491169263dd62ed3e926044808301939192829003018186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b505190508082101561067d57819250610681565b8092505b50505b919050565b60009081526020819052604090205460ff1690565b60008281526020819052604090205482906101009004600160a060020a031633146106fd5760405160e560020a62461bcd0281526004018080602001828103825260298152602001806110886029913960400191505060405180910390fd5b8161073c5760405160e560020a62461bcd02815260040180806020018281038252602381526020018061103a6023913960400191505060405180910390fd5b6000838152602081815260409182902060030184905581518481529151339286927fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c92918290030190a3505050565b60009081526020819052604090206003015490565b60015490565b6000828152602081905260408120600301548390158015906107db575060008181526020819052604090205460ff1615156001145b6108195760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061100f602b913960400191505060405180910390fd5b60008481526020819052604090206003015461085690670de0b6b3a76400009061084a90869063ffffffff610e6b16565b9063ffffffff610ed016565b949350505050565b60408051600160a060020a039485166020808301919091529385168183015291909316606080830191909152835180830390910181526080909101909252815191012090565b6000828152602081905260409020600301548290158015906108d9575060008181526020819052604090205460ff1615156001145b6109175760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061100f602b913960400191505060405180910390fd5b816109565760405160e560020a62461bcd0281526004018080602001828103825260298152602001806111ef6029913960400191505060405180910390fd5b600061096284846107a6565b6000858152602081815260408083206002810154905482517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a036101009092048216602482015260448101879052925195965016936323b872dd93606480840194938390030190829087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b505050506040513d6020811015610a1357600080fd5b5051610a535760405160e560020a62461bcd0281526004018080602001828103825260408152602001806110b16040913960400191505060405180910390fd5b6000848152602081815260408083206001810154905482517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03610100909204821660048201523360248201526044810189905292519116936323b872dd93606480850194919392918390030190829087803b158015610adb57600080fd5b505af1158015610aef573d6000803e3d6000fd5b505050506040513d6020811015610b0557600080fd5b5051610b455760405160e560020a62461bcd02815260040180806020018281038252604081526020018061117c6040913960400191505060405180910390fd5b60408051828152602081018590528151339287927f816ecef7c59c8574653ab4522960d26a6d2987e94d760cd775b6c9273ef81f23929081900390910190a350505050565b600160a060020a038316610bd25760405160e560020a62461bcd0281526004018080602001828103825260338152602001806111496033913960400191505060405180910390fd5b600160a060020a038216610c1a5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806111bc6033913960400191505060405180910390fd5b81600160a060020a031683600160a060020a03161415610c6e5760405160e560020a62461bcd0281526004018080602001828103825260378152602001806110f16037913960400191505060405180910390fd5b80610cad5760405160e560020a62461bcd02815260040180806020018281038252602e815260200180610fe1602e913960400191505060405180910390fd5b6000610cba84843361085e565b60008181526020819052604090206003015490915015610d0e5760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061105d602b913960400191505060405180910390fd5b6040805160a0810182526001808252336020808401828152600160a060020a038981168688018181528c83166060890181815260808a018d815260008d81528089528c81209b518c54985188166101000274ffffffffffffffffffffffffffffffffffffffff001991151560ff19909a169990991716979097178b5592518a8a01805491871673ffffffffffffffffffffffffffffffffffffffff19928316179055905160028b018054919096169116179093555160039097019690965584548086018655949091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69093018690558451918252810186905283519293919285927feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b19928290030190a4604051339082907fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352990600090a350505050565b600082610e7a57506000610eca565b82820282848281610e8757fe5b0414610ec75760405160e560020a62461bcd0281526004018080602001828103825260218152602001806111286021913960400191505060405180910390fd5b90505b92915050565b6000610ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610f9c5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f61578181015183820152602001610f49565b50505050905090810190601f168015610f8e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610fa857fe5b0495945050505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fe46697865645261746545786368616e67653a20496e76616c69642065786368616e676520726174652076616c756546697865645261746545786368616e67653a2045786368616e676520646f6573206e6f742065786973742146697865645261746545786368616e67653a20526174696f206d757374206265203e3046697865645261746545786368616e67653a2045786368616e676520616c7265616479206578697374732146697865645261746545786368616e67653a20696e76616c69642065786368616e6765206f776e657246697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652062617365546f6b656e20636f6e747261637446697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c2020657175616c732062617365746f6b656e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746697865645261746545786368616e67653a20496e76616c69642062617365746f6b656e2c20207a65726f206164647265737346697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652064617461546f6b656e20636f6e747261637446697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c20207a65726f206164647265737346697865645261746545786368616e67653a207a65726f206461746120746f6b656e20616d6f756e74a165627a7a723058200ebd6ad886857ade222027637bd88eb2d0c925a0614640e8be3b53efead00de50029",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d1576000357c010000000000000000000000000000000000000000000000000000000090048063b32b56f91161008e578063b32b56f914610231578063b42414291461024e578063c030023114610256578063c1f6572e14610279578063de060743146102b1578063ffe5725f146102d4576100d1565b80631e2e3a6b146100d657806324cb477e1461012e5780634c87087d1461014d57806354d9be59146101ae5780635c36901c146101dd578063680819eb1461020e575b600080fd5b6100de61030a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561011a578181015183820152602001610102565b505050509050019250505060405180910390f35b61014b6004803603602081101561014457600080fd5b5035610362565b005b61016a6004803603602081101561016357600080fd5b5035610465565b60408051600160a060020a0397881681529587166020870152939095168484015260608401919091521515608083015260a082019290925290519081900360c00190f35b6101cb600480360360208110156101c457600080fd5b50356104fc565b60408051918252519081900360200190f35b6101fa600480360360208110156101f357600080fd5b5035610689565b604080519115158252519081900360200190f35b61014b6004803603604081101561022457600080fd5b508035906020013561069e565b6101cb6004803603602081101561024757600080fd5b503561078b565b6101cb6107a0565b6101cb6004803603604081101561026c57600080fd5b50803590602001356107a6565b6101cb6004803603606081101561028f57600080fd5b50600160a060020a03813581169160208101358216916040909101351661085e565b61014b600480360360408110156102c757600080fd5b50803590602001356108a4565b61014b600480360360608110156102ea57600080fd5b50600160a060020a03813581169160208101359091169060400135610b8a565b6060600180548060200260200160405190810160405280929190818152602001828054801561035857602002820191906000526020600020905b815481526020019060010190808311610344575b5050505050905090565b60008181526020819052604090205481906101009004600160a060020a031633146103c15760405160e560020a62461bcd0281526004018080602001828103825260298152602001806110886029913960400191505060405180910390fd5b60008281526020819052604090205460ff161561041d57600082815260208190526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3610461565b600082815260208190526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b5050565b600080600080600080610476610fb2565b5060008781526020818152604091829020825160a081018452815460ff81161515808352610100909104600160a060020a03908116948301859052600184015481169583018690526002840154166060830181905260039093015460808301819052939a509398509096509094509092506104f0886104fc565b91505091939550919395565b60008181526020819052604081205460ff1661051a57506000610684565b6000828152602081815260408083206001810154905482517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a036101009092048216600482015292519116926370a082319260248082019391829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50516000848152602081815260408083206001810154905482517fdd62ed3e000000000000000000000000000000000000000000000000000000008152610100909104600160a060020a0390811660048301523060248301529251959650939491169263dd62ed3e926044808301939192829003018186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b505190508082101561067d57819250610681565b8092505b50505b919050565b60009081526020819052604090205460ff1690565b60008281526020819052604090205482906101009004600160a060020a031633146106fd5760405160e560020a62461bcd0281526004018080602001828103825260298152602001806110886029913960400191505060405180910390fd5b8161073c5760405160e560020a62461bcd02815260040180806020018281038252602381526020018061103a6023913960400191505060405180910390fd5b6000838152602081815260409182902060030184905581518481529151339286927fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c92918290030190a3505050565b60009081526020819052604090206003015490565b60015490565b6000828152602081905260408120600301548390158015906107db575060008181526020819052604090205460ff1615156001145b6108195760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061100f602b913960400191505060405180910390fd5b60008481526020819052604090206003015461085690670de0b6b3a76400009061084a90869063ffffffff610e6b16565b9063ffffffff610ed016565b949350505050565b60408051600160a060020a039485166020808301919091529385168183015291909316606080830191909152835180830390910181526080909101909252815191012090565b6000828152602081905260409020600301548290158015906108d9575060008181526020819052604090205460ff1615156001145b6109175760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061100f602b913960400191505060405180910390fd5b816109565760405160e560020a62461bcd0281526004018080602001828103825260298152602001806111ef6029913960400191505060405180910390fd5b600061096284846107a6565b6000858152602081815260408083206002810154905482517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a036101009092048216602482015260448101879052925195965016936323b872dd93606480840194938390030190829087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b505050506040513d6020811015610a1357600080fd5b5051610a535760405160e560020a62461bcd0281526004018080602001828103825260408152602001806110b16040913960400191505060405180910390fd5b6000848152602081815260408083206001810154905482517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03610100909204821660048201523360248201526044810189905292519116936323b872dd93606480850194919392918390030190829087803b158015610adb57600080fd5b505af1158015610aef573d6000803e3d6000fd5b505050506040513d6020811015610b0557600080fd5b5051610b455760405160e560020a62461bcd02815260040180806020018281038252604081526020018061117c6040913960400191505060405180910390fd5b60408051828152602081018590528151339287927f816ecef7c59c8574653ab4522960d26a6d2987e94d760cd775b6c9273ef81f23929081900390910190a350505050565b600160a060020a038316610bd25760405160e560020a62461bcd0281526004018080602001828103825260338152602001806111496033913960400191505060405180910390fd5b600160a060020a038216610c1a5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806111bc6033913960400191505060405180910390fd5b81600160a060020a031683600160a060020a03161415610c6e5760405160e560020a62461bcd0281526004018080602001828103825260378152602001806110f16037913960400191505060405180910390fd5b80610cad5760405160e560020a62461bcd02815260040180806020018281038252602e815260200180610fe1602e913960400191505060405180910390fd5b6000610cba84843361085e565b60008181526020819052604090206003015490915015610d0e5760405160e560020a62461bcd02815260040180806020018281038252602b81526020018061105d602b913960400191505060405180910390fd5b6040805160a0810182526001808252336020808401828152600160a060020a038981168688018181528c83166060890181815260808a018d815260008d81528089528c81209b518c54985188166101000274ffffffffffffffffffffffffffffffffffffffff001991151560ff19909a169990991716979097178b5592518a8a01805491871673ffffffffffffffffffffffffffffffffffffffff19928316179055905160028b018054919096169116179093555160039097019690965584548086018655949091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69093018690558451918252810186905283519293919285927feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b19928290030190a4604051339082907fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352990600090a350505050565b600082610e7a57506000610eca565b82820282848281610e8757fe5b0414610ec75760405160e560020a62461bcd0281526004018080602001828103825260218152602001806111286021913960400191505060405180910390fd5b90505b92915050565b6000610ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610f9c5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f61578181015183820152602001610f49565b50505050905090810190601f168015610f8e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610fa857fe5b0495945050505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fe46697865645261746545786368616e67653a20496e76616c69642065786368616e676520726174652076616c756546697865645261746545786368616e67653a2045786368616e676520646f6573206e6f742065786973742146697865645261746545786368616e67653a20526174696f206d757374206265203e3046697865645261746545786368616e67653a2045786368616e676520616c7265616479206578697374732146697865645261746545786368616e67653a20696e76616c69642065786368616e6765206f776e657246697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652062617365546f6b656e20636f6e747261637446697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c2020657175616c732062617365746f6b656e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746697865645261746545786368616e67653a20496e76616c69642062617365746f6b656e2c20207a65726f206164647265737346697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652064617461546f6b656e20636f6e747261637446697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c20207a65726f206164647265737346697865645261746545786368616e67653a207a65726f206461746120746f6b656e20616d6f756e74a165627a7a723058200ebd6ad886857ade222027637bd88eb2d0c925a0614640e8be3b53efead00de50029",
"sourceMap": "530:10457:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;530:10457:9;;;;;;;",
"deployedSourceMap": "530:10457:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;530:10457:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10486:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10486:130:9;;;;;;;;;;;;;;;;;7632:511;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7632:511:9;;:::i;:::-;;9742:604;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9742:604:9;;:::i;:::-;;;;-1:-1:-1;;;;;9742:604:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8688:636;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8688:636:9;;:::i;:::-;;;;;;;;;;;;;;;;10824:161;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10824:161:9;;:::i;:::-;;;;;;;;;;;;;;;;;;7051:411;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7051:411:9;;;;;;;:::i;8327:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8327:165:9;;:::i;6711:134::-;;;:::i;4846:336::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4846:336:9;;;;;;;:::i;4231:343::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4231:343:9;;;;;;;;;;;;;;;;;;;:::i;5420:1123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5420:1123:9;;;;;;;:::i;2512:1418::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2512:1418:9;;;;;;;;;;;;;;;;;:::i;10486:130::-;10559:16;10598:11;10591:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10486:130;:::o;7632:511::-;1306:9;:21;;;;;;;;;;:35;7738:10;;1306:35;;;-1:-1:-1;;;;;1306:35:9;1345:10;1306:49;1285:137;;;;-1:-1:-1;;;;;1285:137:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7767:9;:21;;;;;;;;;;:28;;;7764:373;;;7841:5;7810:21;;;;;;;;;;;:36;;-1:-1:-1;;7810:36:9;;;7865:89;7930:10;;7820;;7865:89;;7841:5;7865:89;7764:373;;;7985:9;:21;;;;;;;;;;;:35;;-1:-1:-1;;7985:35:9;8016:4;7985:35;;;8039:87;8102:10;;7995;;8039:87;;7985:9;8039:87;7764:373;7632:511;;:::o;9742:604::-;9857:21;9892:17;9923;9954;9985:11;10010:14;10049:24;;:::i;:::-;-1:-1:-1;10076:9:9;:21;;;;;;;;;;;;10049:48;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10049:48:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10049:48:9;;-1:-1:-1;10049:48:9;;-1:-1:-1;10049:48:9;;-1:-1:-1;10049:48:9;;-1:-1:-1;10318:21:9;10076;10318:9;:21::i;:::-;10309:30;;9742:604;;;;;;;;:::o;8688:636::-;8772:14;8805:21;;;;;;;;;;:28;;;8802:516;;-1:-1:-1;8865:1:9;8802:516;;;8895:15;8928:21;;;;;;;;;;;:31;;;;8988:35;;8913:111;;;;;-1:-1:-1;;;;;8928:31:9;8988:35;;;;;8913:111;;;;;;8928:31;;;8913:74;;:111;;;;;;;;;;;8928:31;8913:111;;;5:2:-1;;;;30:1;27;20:12;5:2;8913:111:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8913:111:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8913:111:9;9038:17;9073:21;;;8913:111;9073:21;;;;;;;:31;;;;9133:35;;9058:126;;;;;9073:31;9133:35;;;-1:-1:-1;;;;;9133:35:9;;;9058:126;;;;9178:4;9058:126;;;;;;8913:111;;-1:-1:-1;9038:17:9;;9073:31;;;9058:74;;:126;;;;;8913:111;;9058:126;;;;;9073:31;9058:126;;;5:2:-1;;;;30:1;27;20:12;5:2;9058:126:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9058:126:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9058:126:9;;-1:-1:-1;9201:19:9;;;9198:109;;;9247:7;9238:16;;9198:109;;;9298:9;9289:18;;9198:109;8802:516;;;8688:636;;;:::o;10824:161::-;10923:4;10950:21;;;;;;;;;;:28;;;;10824:161::o;7051:411::-;1306:9;:21;;;;;;;;;;:35;7170:10;;1306:35;;;-1:-1:-1;;;;;1306:35:9;1345:10;1306:49;1285:137;;;;-1:-1:-1;;;;;1285:137:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7217:12;7196:94;;;;-1:-1:-1;;;;;7196:94:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7301:9;:21;;;;;;;;;;;;:31;;:41;;;7357:98;;;;;;;7414:10;;7311;;7357:98;;;;;;;;;7051:411;;;:::o;8327:165::-;8424:7;8454:21;;;;;;;;;;:31;;;;8327:165::o;6711:134::-;6820:11;:18;6711:134;:::o;4846:336::-;5043:23;1029:21;;;;;;;;;;:31;;;5005:10;;1029:36;;;;:88;;-1:-1:-1;1081:9:9;:21;;;;;;;;;;:28;;;:36;;:28;:36;1029:88;1008:178;;;;-1:-1:-1;;;;;1008:178:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5133:9;:21;;;;;;;;;;:31;;;5100:75;;627:8;;5100:65;;:15;;:65;:19;:65;:::i;:::-;:69;:75;:69;:75;:::i;:::-;5082:93;4846:336;-1:-1:-1;;;;4846:336:9:o;4231:343::-;4448:109;;;-1:-1:-1;;;;;4448:109:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4448:109:9;;;;;;;4425:142;;;;;;4231:343::o;5420:1123::-;1029:9;:21;;;;;;;;;;:31;;;5558:10;;1029:36;;;;:88;;-1:-1:-1;1081:9:9;:21;;;;;;;;;;:28;;;:36;;:28;:36;1029:88;1008:178;;;;-1:-1:-1;;;;;1008:178:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5614:20;5593:108;;;;-1:-1:-1;;;;;5593:108:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5711:23;5737:42;5752:10;5763:15;5737:14;:42::i;:::-;5825:9;:21;;;;;;;;;;;:31;;;;5916:35;;5810:188;;;;;5888:10;5810:188;;;;-1:-1:-1;;;;;5825:31:9;5916:35;;;;;5810:188;;;;;;;;;;;;;;-1:-1:-1;5825:31:9;;5810:60;;:188;;;;;5825:21;5810:188;;;;;;;5825:31;5810:188;;;5:2:-1;;;;30:1;27;20:12;5:2;5810:188:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5810:188:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5810:188:9;5789:299;;;;-1:-1:-1;;;;;5789:299:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6134:9;:21;;;;;;;;;;;:31;;;;6197:35;;6119:188;;;;;-1:-1:-1;;;;;6134:31:9;6197:35;;;;;6119:188;;;;6250:10;6119:188;;;;;;;;;;;;6134:31;;;6119:60;;:188;;;;;6134:21;;6119:188;;;;;;;;;6134:31;6119:188;;;5:2:-1;;;;30:1;27;20:12;5:2;6119:188:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6119:188:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6119:188:9;6098:299;;;;-1:-1:-1;;;;;6098:299:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6413:123;;;;;;;;;;;;;;6458:10;;6434;;6413:123;;;;;;;;;;;1196:1;5420:1123;;;:::o;2512:1418::-;-1:-1:-1;;;;;2667:23:9;;2646:121;;;;-1:-1:-1;;;;;2646:121:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2798:23:9;;2777:121;;;;-1:-1:-1;;;;;2777:121:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2942:9;-1:-1:-1;;;;;2929:22:9;:9;-1:-1:-1;;;;;2929:22:9;;;2908:124;;;;-1:-1:-1;;;;;2908:124:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3063:14;3042:108;;;;-1:-1:-1;;;;;3042:108:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3160:18;3181:98;3213:9;3236;3259:10;3181:18;:98::i;:::-;3310:9;:21;;;;;;;;;;:31;;;3160:119;;-1:-1:-1;3310:36:9;3289:126;;;;-1:-1:-1;;;;;3289:126:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3449:187;;;;;;;;3480:4;3449:187;;;3513:10;3449:187;;;;;;;-1:-1:-1;;;;;3449:187:9;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3425:21:9;;;;;;;;;:211;;;;;;;;;;-1:-1:-1;;3425:211:9;;;-1:-1:-1;;3425:211:9;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3425:211:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;23:18;;;45:23;;3646:28:9;;;;;;;;;;;3690:142;;;;;;;;;;;;3449:187;;;;3435:10;;3690:142;;;;;;;;3848:75;;3903:10;;3879;;3848:75;;;;;2512:1418;;;;:::o;2159:459:15:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:15;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;;;2536:56:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;-1:-1:-1;2159:459:15;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;;;3889:28:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3889:28:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:15:o;530:10457:9:-;;;;;;;;;-1:-1:-1;530:10457:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "pragma solidity 0.5.7;\n// Copyright BigchainDB GmbH and Ocean Protocol contributors\n// SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)\n// Code is Apache-2.0 and docs are CC-BY-4.0\n\nimport '../interfaces/IERC20Template.sol';\nimport 'openzeppelin-solidity/contracts/math/SafeMath.sol';\n\n/**\n * @title FixedRateExchange\n * @dev FixedRateExchange is a fixed rate exchange Contract\n * Marketplaces uses this contract to allow consumers \n * exchanging datatokens with ocean token using a fixed \n * exchange rate.\n */\ncontract FixedRateExchange {\n using SafeMath for uint256;\n uint256 private constant BASE = 10 ** 18;\n struct Exchange {\n bool active;\n address exchangeOwner;\n address dataToken;\n address baseToken;\n uint256 fixedRate;\n }\n\n // maps an exchangeId to an exchange\n mapping(bytes32 => Exchange) private exchanges;\n bytes32[] private exchangeIds;\n\n modifier onlyActiveExchange(\n bytes32 exchangeId\n )\n {\n require(\n exchanges[exchangeId].fixedRate != 0 &&\n exchanges[exchangeId].active == true,\n 'FixedRateExchange: Exchange does not exist!'\n );\n _;\n }\n\n modifier onlyExchangeOwner(\n bytes32 exchangeId\n )\n {\n require(\n exchanges[exchangeId].exchangeOwner == msg.sender,\n 'FixedRateExchange: invalid exchange owner'\n );\n _;\n }\n\n event ExchangeCreated(\n bytes32 indexed exchangeId,\n address indexed baseToken,\n address indexed dataToken,\n address exchangeOwner,\n uint256 fixedRate\n );\n\n event ExchangeRateChanged(\n bytes32 indexed exchangeId,\n address indexed exchangeOwner,\n uint256 newRate\n );\n\n event ExchangeActivated(\n bytes32 indexed exchangeId,\n address indexed exchangeOwner\n );\n\n event ExchangeDeactivated(\n bytes32 indexed exchangeId,\n address indexed exchangeOwner\n );\n\n event Swapped(\n bytes32 indexed exchangeId,\n address indexed by,\n uint256 baseTokenSwappedAmount,\n uint256 dataTokenSwappedAmount\n );\n\n /**\n * @dev create\n * creates new exchange pairs between base token\n * (ocean token) and data tokens.\n * @param baseToken refers to a ocean token contract address\n * @param dataToken refers to a data token contract address\n * @param fixedRate refers to the exact fixed exchange rate in wei\n */\n function create(\n address baseToken,\n address dataToken,\n uint256 fixedRate\n )\n external\n {\n require(\n baseToken != address(0),\n 'FixedRateExchange: Invalid basetoken, zero address'\n );\n require(\n dataToken != address(0),\n 'FixedRateExchange: Invalid datatoken, zero address'\n );\n require(\n baseToken != dataToken,\n 'FixedRateExchange: Invalid datatoken, equals basetoken'\n );\n require(\n fixedRate != 0, \n 'FixedRateExchange: Invalid exchange rate value'\n );\n bytes32 exchangeId = generateExchangeId(\n baseToken,\n dataToken,\n msg.sender\n );\n require(\n exchanges[exchangeId].fixedRate == 0,\n 'FixedRateExchange: Exchange already exists!'\n );\n exchanges[exchangeId] = Exchange({\n active: true,\n exchangeOwner: msg.sender,\n dataToken: dataToken,\n baseToken: baseToken,\n fixedRate: fixedRate\n });\n exchangeIds.push(exchangeId);\n\n emit ExchangeCreated(\n exchangeId,\n baseToken,\n dataToken,\n msg.sender,\n fixedRate\n );\n\n emit ExchangeActivated(\n exchangeId,\n msg.sender\n );\n }\n\n /**\n * @dev generateExchangeId\n * creates unique exchange identifier for two token pairs.\n * @param baseToken refers to a ocean token contract address\n * @param dataToken refers to a data token contract address\n * @param exchangeOwner exchange owner address\n */\n function generateExchangeId(\n address baseToken,\n address dataToken,\n address exchangeOwner\n )\n public\n pure\n returns (bytes32)\n {\n return keccak256(\n abi.encode(\n baseToken,\n dataToken,\n exchangeOwner\n )\n );\n }\n \n /**\n * @dev CalcInGivenOut\n * Calculates how many basetokens are needed to get specifyed amount of datatokens\n * @param exchangeId a unique exchange idnetifier \n * @param dataTokenAmount the amount of data tokens to be exchanged\n */\n function CalcInGivenOut(\n bytes32 exchangeId,\n uint256 dataTokenAmount\n )\n public\n view\n onlyActiveExchange(\n exchangeId\n )\n returns (uint256 baseTokenAmount)\n {\n baseTokenAmount = dataTokenAmount.mul(\n exchanges[exchangeId].fixedRate).div(BASE);\n }\n \n /**\n * @dev swap\n * atomic swap between two registered fixed rate exchange.\n * @param exchangeId a unique exchange idnetifier \n * @param dataTokenAmount the amount of data tokens to be exchanged\n */\n function swap(\n bytes32 exchangeId,\n uint256 dataTokenAmount\n )\n external\n onlyActiveExchange(\n exchangeId\n )\n {\n require(\n dataTokenAmount != 0,\n 'FixedRateExchange: zero data token amount'\n );\n uint256 baseTokenAmount = CalcInGivenOut(exchangeId,dataTokenAmount);\n require(\n IERC20Template(exchanges[exchangeId].baseToken).transferFrom(\n msg.sender,\n exchanges[exchangeId].exchangeOwner,\n baseTokenAmount\n ),\n 'FixedRateExchange: transferFrom failed in the baseToken contract'\n );\n require(\n IERC20Template(exchanges[exchangeId].dataToken).transferFrom(\n exchanges[exchangeId].exchangeOwner,\n msg.sender,\n dataTokenAmount\n ),\n 'FixedRateExchange: transferFrom failed in the dataToken contract'\n );\n\n emit Swapped(\n exchangeId,\n msg.sender,\n baseTokenAmount,\n dataTokenAmount\n );\n }\n\n /**\n * @dev getNumberOfExchanges\n * gets the total number of registered exchanges\n * @return total number of registered exchange IDs\n */\n function getNumberOfExchanges()\n external\n view\n returns (uint256)\n {\n return exchangeIds.length;\n }\n\n /**\n * @dev setRate\n * changes the fixed rate for an exchange with a new rate\n * @param exchangeId a unique exchange idnetifier\n * @param newRate new fixed rate value\n */\n function setRate(\n bytes32 exchangeId,\n uint256 newRate\n )\n external\n onlyExchangeOwner(exchangeId)\n {\n require(\n newRate != 0,\n 'FixedRateExchange: Ratio must be >0'\n );\n\n exchanges[exchangeId].fixedRate = newRate;\n emit ExchangeRateChanged(\n exchangeId,\n msg.sender,\n newRate\n );\n }\n\n /**\n * @dev toggleExchangeState\n * toggles the active state of an existing exchange\n * @param exchangeId a unique exchange idnetifier\n */\n function toggleExchangeState(\n bytes32 exchangeId\n )\n external\n onlyExchangeOwner(exchangeId)\n {\n if(exchanges[exchangeId].active){\n exchanges[exchangeId].active = false;\n emit ExchangeDeactivated(\n exchangeId,\n msg.sender\n );\n } else {\n exchanges[exchangeId].active = true;\n emit ExchangeActivated(\n exchangeId,\n msg.sender\n );\n }\n }\n\n /**\n * @dev getRate\n * gets the current fixed rate for an exchange\n * @param exchangeId a unique exchange idnetifier\n * @return fixed rate value\n */\n function getRate(\n bytes32 exchangeId\n )\n external\n view\n returns(uint256)\n {\n return exchanges[exchangeId].fixedRate;\n }\n\n /**\n * @dev getSupply\n * gets the current supply of datatokens in an fixed\n * rate exchagne\n * @param exchangeId the exchange ID\n * @return supply\n */\n function getSupply(bytes32 exchangeId)\n public\n view\n returns (uint256 supply)\n {\n if(exchanges[exchangeId].active == false)\n supply = 0;\n else {\n uint256 balance = IERC20Template(exchanges[exchangeId].dataToken)\n .balanceOf(exchanges[exchangeId].exchangeOwner);\n uint256 allowance = IERC20Template(exchanges[exchangeId].dataToken)\n .allowance(exchanges[exchangeId].exchangeOwner, address(this));\n if(balance < allowance)\n supply = balance;\n else\n supply = allowance;\n }\n }\n\n /**\n * @dev getExchange\n * gets all the exchange details\n * @param exchangeId a unique exchange idnetifier\n * @return all the exchange details including the exchange Owner\n * the dataToken contract address, the base token address, the \n * fixed rate, whether the exchange is active and the supply or the \n * the current data token liquidity.\n */\n function getExchange(\n bytes32 exchangeId\n )\n external\n view\n returns (\n address exchangeOwner,\n address dataToken,\n address baseToken,\n uint256 fixedRate,\n bool active,\n uint256 supply\n )\n {\n Exchange memory exchange = exchanges[exchangeId];\n exchangeOwner = exchange.exchangeOwner;\n dataToken = exchange.dataToken;\n baseToken = exchange.baseToken;\n fixedRate = exchange.fixedRate;\n active = exchange.active;\n supply = getSupply(exchangeId);\n }\n\n /**\n * @dev getExchanges\n * gets all the exchanges list\n * @return a list of all registered exchange Ids\n */\n function getExchanges()\n external \n view \n returns (bytes32[] memory)\n {\n return exchangeIds;\n }\n\n /**\n * @dev isActive\n * checks whether exchange is active\n * @param exchangeId a unique exchange idnetifier\n * @return true if exchange is true, otherwise returns false\n */\n function isActive(\n bytes32 exchangeId\n )\n external\n view\n returns (bool)\n {\n return exchanges[exchangeId].active;\n }\n}\n",
"sourcePath": "/ocean/ocean-contracts/contracts/fixedRate/FixedRateExchange.sol",
"ast": {
"absolutePath": "/ocean/ocean-contracts/contracts/fixedRate/FixedRateExchange.sol",
"exportedSymbols": {
"FixedRateExchange": [
4962
]
},
"id": 4963,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 4400,
"literals": [
"solidity",
"0.5",
".7"
],
"nodeType": "PragmaDirective",
"src": "0:22:9"
},
{
"absolutePath": "/ocean/ocean-contracts/contracts/interfaces/IERC20Template.sol",
"file": "../interfaces/IERC20Template.sol",
"id": 4401,
"nodeType": "ImportDirective",
"scope": 4963,
"sourceUnit": 5071,
"src": "185:42:9",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
"file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
"id": 4402,
"nodeType": "ImportDirective",
"scope": 4963,
"sourceUnit": 5927,
"src": "228:59:9",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title FixedRateExchange\n@dev FixedRateExchange is a fixed rate exchange Contract\n Marketplaces uses this contract to allow consumers \n exchanging datatokens with ocean token using a fixed \n exchange rate.",
"fullyImplemented": true,
"id": 4962,
"linearizedBaseContracts": [
4962
],
"name": "FixedRateExchange",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 4405,
"libraryName": {
"contractScope": null,
"id": 4403,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5926,
"src": "569:8:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$5926",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "563:27:9",
"typeName": {
"id": 4404,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "582:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"id": 4410,
"name": "BASE",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "595:40:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4406,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "595:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_1000000000000000000_by_1",
"typeString": "int_const 1000000000000000000"
},
"id": 4409,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 4407,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "627:2:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3138",
"id": 4408,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "633:2:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
"src": "627:8:9",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000_by_1",
"typeString": "int_const 1000000000000000000"
}
},
"visibility": "private"
},
{
"canonicalName": "FixedRateExchange.Exchange",
"id": 4421,
"members": [
{
"constant": false,
"id": 4412,
"name": "active",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "667:11:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4411,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "667:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4414,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "688:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4413,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "688:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4416,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "719:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4415,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "719:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4418,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "746:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4417,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "746:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4420,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "773:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4419,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "773:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Exchange",
"nodeType": "StructDefinition",
"scope": 4962,
"src": "641:156:9",
"visibility": "public"
},
{
"constant": false,
"id": 4425,
"name": "exchanges",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "844:46:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange)"
},
"typeName": {
"id": 4424,
"keyType": {
"id": 4422,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "852:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "844:28:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange)"
},
"valueType": {
"contractScope": null,
"id": 4423,
"name": "Exchange",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4421,
"src": "863:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage_ptr",
"typeString": "struct FixedRateExchange.Exchange"
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 4428,
"name": "exchangeIds",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "896:29:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[]"
},
"typeName": {
"baseType": {
"id": 4426,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "896:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 4427,
"length": null,
"nodeType": "ArrayTypeName",
"src": "896:9:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[]"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 4450,
"nodeType": "Block",
"src": "998:206:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4445,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4433,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1029:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4435,
"indexExpression": {
"argumentTypes": null,
"id": 4434,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4430,
"src": "1039:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1029:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4436,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "1029:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4437,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1064:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1029:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4439,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1081:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4441,
"indexExpression": {
"argumentTypes": null,
"id": 4440,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4430,
"src": "1091:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1081:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4442,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "1081:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 4443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1113:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "1081:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1029:88:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a2045786368616e676520646f6573206e6f7420657869737421",
"id": 4446,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1131:45:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_33934cff4a0fa610a47c77876602b176c21576f21e0c00dbe89561d0224d4982",
"typeString": "literal_string \"FixedRateExchange: Exchange does not exist!\""
},
"value": "FixedRateExchange: Exchange does not exist!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_33934cff4a0fa610a47c77876602b176c21576f21e0c00dbe89561d0224d4982",
"typeString": "literal_string \"FixedRateExchange: Exchange does not exist!\""
}
],
"id": 4432,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "1008:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4447,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1008:178:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4448,
"nodeType": "ExpressionStatement",
"src": "1008:178:9"
},
{
"id": 4449,
"nodeType": "PlaceholderStatement",
"src": "1196:1:9"
}
]
},
"documentation": null,
"id": 4451,
"name": "onlyActiveExchange",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 4431,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4430,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4451,
"src": "969:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4429,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "969:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "959:34:9"
},
"src": "932:272:9",
"visibility": "internal"
},
{
"body": {
"id": 4467,
"nodeType": "Block",
"src": "1275:165:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4456,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1306:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4458,
"indexExpression": {
"argumentTypes": null,
"id": 4457,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4453,
"src": "1316:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1306:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4459,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "1306:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4460,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "1345:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4461,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1345:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "1306:49:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20696e76616c69642065786368616e6765206f776e6572",
"id": 4463,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1369:43:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6953f2de142c64f34f94b55c4652873748f95f81c631ff9f1f451ebbfe788b37",
"typeString": "literal_string \"FixedRateExchange: invalid exchange owner\""
},
"value": "FixedRateExchange: invalid exchange owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6953f2de142c64f34f94b55c4652873748f95f81c631ff9f1f451ebbfe788b37",
"typeString": "literal_string \"FixedRateExchange: invalid exchange owner\""
}
],
"id": 4455,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "1285:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1285:137:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4465,
"nodeType": "ExpressionStatement",
"src": "1285:137:9"
},
{
"id": 4466,
"nodeType": "PlaceholderStatement",
"src": "1432:1:9"
}
]
},
"documentation": null,
"id": 4468,
"name": "onlyExchangeOwner",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 4454,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4453,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4468,
"src": "1246:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4452,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1246:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1236:34:9"
},
"src": "1210:230:9",
"visibility": "internal"
},
{
"anonymous": false,
"documentation": null,
"id": 4480,
"name": "ExchangeCreated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4479,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4470,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1477:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4469,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1477:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4472,
"indexed": true,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1513:25:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4471,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1513:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4474,
"indexed": true,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1548:25:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4473,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1548:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4476,
"indexed": false,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1583:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4475,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1583:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4478,
"indexed": false,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1614:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4477,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1614:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1467:170:9"
},
"src": "1446:192:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4488,
"name": "ExchangeRateChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 4487,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4482,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1679:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4481,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1679:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4484,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1715:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4483,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1715:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4486,
"indexed": false,
"name": "newRate",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1754:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4485,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1754:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1669:106:9"
},
"src": "1644:132:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4494,
"name": "ExchangeActivated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4493,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4490,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4494,
"src": "1815:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4489,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1815:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4492,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4494,
"src": "1851:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4491,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1851:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1805:81:9"
},
"src": "1782:105:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4500,
"name": "ExchangeDeactivated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4499,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4496,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4500,
"src": "1928:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4495,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1928:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4498,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4500,
"src": "1964:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4497,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1964:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1918:81:9"
},
"src": "1893:107:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4510,
"name": "Swapped",
"nodeType": "EventDefinition",
"parameters": {
"id": 4509,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4502,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2029:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4501,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2029:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4504,
"indexed": true,
"name": "by",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2065:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4503,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2065:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4506,
"indexed": false,
"name": "baseTokenSwappedAmount",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2093:30:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4505,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2093:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4508,
"indexed": false,
"name": "dataTokenSwappedAmount",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2133:30:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4507,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2133:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2019:150:9"
},
"src": "2006:164:9"
},
{
"body": {
"id": 4604,
"nodeType": "Block",
"src": "2636:1294:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4524,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4520,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "2667:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 4522,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2688:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 4521,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2680:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4523,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2680:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2667:23:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642062617365746f6b656e2c20207a65726f2061646472657373",
"id": 4525,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2704:53:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9e4f79921714a9bf5dc580585dc440da8f598ce27caa8d87778cb9493126de16",
"typeString": "literal_string \"FixedRateExchange: Invalid basetoken, zero address\""
},
"value": "FixedRateExchange: Invalid basetoken, zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9e4f79921714a9bf5dc580585dc440da8f598ce27caa8d87778cb9493126de16",
"typeString": "literal_string \"FixedRateExchange: Invalid basetoken, zero address\""
}
],
"id": 4519,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2646:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2646:121:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4527,
"nodeType": "ExpressionStatement",
"src": "2646:121:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4529,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "2798:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 4531,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2819:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 4530,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2811:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2811:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2798:23:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c20207a65726f2061646472657373",
"id": 4534,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2835:53:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c4a0d6c9d74c4e7b7eb600c681c94f357f46a1a17500afc03636322ac0a63c22",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, zero address\""
},
"value": "FixedRateExchange: Invalid datatoken, zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c4a0d6c9d74c4e7b7eb600c681c94f357f46a1a17500afc03636322ac0a63c22",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, zero address\""
}
],
"id": 4528,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2777:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2777:121:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4536,
"nodeType": "ExpressionStatement",
"src": "2777:121:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4540,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4538,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "2929:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 4539,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "2942:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2929:22:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c2020657175616c732062617365746f6b656e",
"id": 4541,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2965:57:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8088a8876b7d943bb58f3202d91bc395f378f8d33e9c768b1a854016f72d0175",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, equals basetoken\""
},
"value": "FixedRateExchange: Invalid datatoken, equals basetoken"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8088a8876b7d943bb58f3202d91bc395f378f8d33e9c768b1a854016f72d0175",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, equals basetoken\""
}
],
"id": 4537,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2908:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2908:124:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4543,
"nodeType": "ExpressionStatement",
"src": "2908:124:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4545,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3063:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4546,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3076:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3063:14:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642065786368616e676520726174652076616c7565",
"id": 4548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3092:48:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_049c41558b20e3ef0c501ffa5f229a463d9c10ba2b6e269ac1d736dfd92adbc2",
"typeString": "literal_string \"FixedRateExchange: Invalid exchange rate value\""
},
"value": "FixedRateExchange: Invalid exchange rate value"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_049c41558b20e3ef0c501ffa5f229a463d9c10ba2b6e269ac1d736dfd92adbc2",
"typeString": "literal_string \"FixedRateExchange: Invalid exchange rate value\""
}
],
"id": 4544,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "3042:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4549,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3042:108:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4550,
"nodeType": "ExpressionStatement",
"src": "3042:108:9"
},
{
"assignments": [
4552
],
"declarations": [
{
"constant": false,
"id": 4552,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4604,
"src": "3160:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4551,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3160:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4559,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4554,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3213:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4555,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3236:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4556,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3259:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4557,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3259:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4553,
"name": "generateExchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4626,
"src": "3181:18:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address,address,address) pure returns (bytes32)"
}
},
"id": 4558,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3181:98:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3160:119:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4561,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "3310:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4563,
"indexExpression": {
"argumentTypes": null,
"id": 4562,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3320:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3310:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4564,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "3310:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3345:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3310:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a2045786368616e676520616c72656164792065786973747321",
"id": 4567,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3360:45:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4cbdfa87b7259677de1d4b2bb2aef7a46adf4ea65536670792826c014ead7938",
"typeString": "literal_string \"FixedRateExchange: Exchange already exists!\""
},
"value": "FixedRateExchange: Exchange already exists!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4cbdfa87b7259677de1d4b2bb2aef7a46adf4ea65536670792826c014ead7938",
"typeString": "literal_string \"FixedRateExchange: Exchange already exists!\""
}
],
"id": 4560,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "3289:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3289:126:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4569,
"nodeType": "ExpressionStatement",
"src": "3289:126:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4570,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "3425:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4572,
"indexExpression": {
"argumentTypes": null,
"id": 4571,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3435:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3425:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "74727565",
"id": 4574,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3480:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4575,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3513:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4576,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3513:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4577,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3548:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4578,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3582:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4579,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3616:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4573,
"name": "Exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4421,
"src": "3449:8:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_Exchange_$4421_storage_ptr_$",
"typeString": "type(struct FixedRateExchange.Exchange storage pointer)"
}
},
"id": 4580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [
"active",
"exchangeOwner",
"dataToken",
"baseToken",
"fixedRate"
],
"nodeType": "FunctionCall",
"src": "3449:187:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"src": "3425:211:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4582,
"nodeType": "ExpressionStatement",
"src": "3425:211:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4586,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3663:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 4583,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "3646:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"id": 4585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3646:16:9",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) returns (uint256)"
}
},
"id": 4587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3646:28:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4588,
"nodeType": "ExpressionStatement",
"src": "3646:28:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4590,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3719:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 4591,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3743:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4592,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3766:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4593,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3789:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4594,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3789:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4595,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3813:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4589,
"name": "ExchangeCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4480,
"src": "3690:15:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,address,address,uint256)"
}
},
"id": 4596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3690:142:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4597,
"nodeType": "EmitStatement",
"src": "3685:147:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4599,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3879:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4600,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3903:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4601,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3903:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4598,
"name": "ExchangeActivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4494,
"src": "3848:17:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3848:75:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4603,
"nodeType": "EmitStatement",
"src": "3843:80:9"
}
]
},
"documentation": "@dev create\n creates new exchange pairs between base token\n (ocean token) and data tokens.\n@param baseToken refers to a ocean token contract address\n@param dataToken refers to a data token contract address\n@param fixedRate refers to the exact fixed exchange rate in wei",
"id": 4605,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "create",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4517,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4512,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2537:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4511,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2537:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4514,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2564:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4513,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2564:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4516,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2591:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4515,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2591:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2527:87:9"
},
"returnParameters": {
"id": 4518,
"nodeType": "ParameterList",
"parameters": [],
"src": "2636:0:9"
},
"scope": 4962,
"src": "2512:1418:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4625,
"nodeType": "Block",
"src": "4408:166:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4619,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4607,
"src": "4476:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4620,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4609,
"src": "4503:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4621,
"name": "exchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4611,
"src": "4530:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 4617,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6520,
"src": "4448:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 4618,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4448:10:9",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 4622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4448:109:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 4616,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6527,
"src": "4425:9:9",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 4623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4425:142:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 4615,
"id": 4624,
"nodeType": "Return",
"src": "4418:149:9"
}
]
},
"documentation": "@dev generateExchangeId\n creates unique exchange identifier for two token pairs.\n@param baseToken refers to a ocean token contract address\n@param dataToken refers to a data token contract address\n@param exchangeOwner exchange owner address",
"id": 4626,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "generateExchangeId",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4612,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4607,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4268:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4606,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4268:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4609,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4295:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4608,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4295:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4611,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4322:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4610,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4322:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4258:91:9"
},
"returnParameters": {
"id": 4615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4614,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4395:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4613,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4395:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4394:9:9"
},
"scope": 4962,
"src": "4231:343:9",
"stateMutability": "pure",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4651,
"nodeType": "Block",
"src": "5072:110:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4638,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4636,
"src": "5082:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4647,
"name": "BASE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4410,
"src": "5170:4:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4641,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5133:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4643,
"indexExpression": {
"argumentTypes": null,
"id": 4642,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4628,
"src": "5143:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5133:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4644,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "5133:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 4639,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4630,
"src": "5100:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mul",
"nodeType": "MemberAccess",
"referencedDeclaration": 5843,
"src": "5100:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 4645,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:65:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 5859,
"src": "5100:69:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 4648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:75:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5082:93:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4650,
"nodeType": "ExpressionStatement",
"src": "5082:93:9"
}
]
},
"documentation": "@dev CalcInGivenOut\n Calculates how many basetokens are needed to get specifyed amount of datatokens\n@param exchangeId a unique exchange idnetifier \n@param dataTokenAmount the amount of data tokens to be exchanged",
"id": 4652,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4633,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4628,
"src": "5005:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4634,
"modifierName": {
"argumentTypes": null,
"id": 4632,
"name": "onlyActiveExchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4451,
"src": "4973:18:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "4973:52:9"
}
],
"name": "CalcInGivenOut",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4631,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4628,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "4879:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4627,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4879:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4630,
"name": "dataTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "4907:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4629,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4907:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4869:67:9"
},
"returnParameters": {
"id": 4637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4636,
"name": "baseTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "5043:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4635,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5043:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5042:25:9"
},
"scope": 4962,
"src": "4846:336:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4722,
"nodeType": "Block",
"src": "5583:960:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4663,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "5614:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4664,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5633:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5614:20:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207a65726f206461746120746f6b656e20616d6f756e74",
"id": 4666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5648:43:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d2b293ef72dfab6f705b22246c532786cca882499f3fba3ae8114dc40951c5bc",
"typeString": "literal_string \"FixedRateExchange: zero data token amount\""
},
"value": "FixedRateExchange: zero data token amount"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d2b293ef72dfab6f705b22246c532786cca882499f3fba3ae8114dc40951c5bc",
"typeString": "literal_string \"FixedRateExchange: zero data token amount\""
}
],
"id": 4662,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "5593:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5593:108:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4668,
"nodeType": "ExpressionStatement",
"src": "5593:108:9"
},
{
"assignments": [
4670
],
"declarations": [
{
"constant": false,
"id": 4670,
"name": "baseTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4722,
"src": "5711:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4669,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5711:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4675,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4672,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5752:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 4673,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "5763:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4671,
"name": "CalcInGivenOut",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4652,
"src": "5737:14:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (bytes32,uint256) view returns (uint256)"
}
},
"id": 4674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5737:42:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5711:68:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4684,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "5888:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5888:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4686,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5916:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4688,
"indexExpression": {
"argumentTypes": null,
"id": 4687,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5926:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5916:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4689,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "5916:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4690,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4670,
"src": "5969:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4678,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5825:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4680,
"indexExpression": {
"argumentTypes": null,
"id": 4679,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5835:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5825:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4681,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "baseToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4418,
"src": "5825:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4677,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "5810:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4682,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5810:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4683,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 5045,
"src": "5810:60:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 4691,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5810:188:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652062617365546f6b656e20636f6e7472616374",
"id": 4692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6012:66:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_704d230adb0aeaaf731cbfcd3f10c77132039a7e2520db77d561e3ebcc5b16b9",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the baseToken contract\""
},
"value": "FixedRateExchange: transferFrom failed in the baseToken contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_704d230adb0aeaaf731cbfcd3f10c77132039a7e2520db77d561e3ebcc5b16b9",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the baseToken contract\""
}
],
"id": 4676,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "5789:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5789:299:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4694,
"nodeType": "ExpressionStatement",
"src": "5789:299:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4703,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "6197:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4705,
"indexExpression": {
"argumentTypes": null,
"id": 4704,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6207:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6197:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4706,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "6197:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4707,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "6250:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6250:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4709,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "6278:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4697,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "6134:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4699,
"indexExpression": {
"argumentTypes": null,
"id": 4698,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6144:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6134:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4700,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "6134:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4696,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "6119:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6119:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4702,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 5045,
"src": "6119:60:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 4710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6119:188:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652064617461546f6b656e20636f6e7472616374",
"id": 4711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6321:66:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c05b0f5b41acd20d6ba43aff2e398e9afe8f1d66a0a38aeff2f84a7867e95310",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the dataToken contract\""
},
"value": "FixedRateExchange: transferFrom failed in the dataToken contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c05b0f5b41acd20d6ba43aff2e398e9afe8f1d66a0a38aeff2f84a7867e95310",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the dataToken contract\""
}
],
"id": 4695,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "6098:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6098:299:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4713,
"nodeType": "ExpressionStatement",
"src": "6098:299:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4715,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6434:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4716,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "6458:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4717,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6458:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4718,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4670,
"src": "6482:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 4719,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "6511:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4714,
"name": "Swapped",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4510,
"src": "6413:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,uint256,uint256)"
}
},
"id": 4720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6413:123:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4721,
"nodeType": "EmitStatement",
"src": "6408:128:9"
}
]
},
"documentation": "@dev swap\n atomic swap between two registered fixed rate exchange.\n@param exchangeId a unique exchange idnetifier \n@param dataTokenAmount the amount of data tokens to be exchanged",
"id": 4723,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4659,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5558:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4660,
"modifierName": {
"argumentTypes": null,
"id": 4658,
"name": "onlyActiveExchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4451,
"src": "5526:18:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "5526:52:9"
}
],
"name": "swap",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4657,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4654,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4723,
"src": "5443:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4653,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5443:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4656,
"name": "dataTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4723,
"src": "5471:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4655,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5471:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5433:67:9"
},
"returnParameters": {
"id": 4661,
"nodeType": "ParameterList",
"parameters": [],
"src": "5583:0:9"
},
"scope": 4962,
"src": "5420:1123:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4731,
"nodeType": "Block",
"src": "6803:42:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4728,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "6820:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"id": 4729,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6820:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 4727,
"id": 4730,
"nodeType": "Return",
"src": "6813:25:9"
}
]
},
"documentation": "@dev getNumberOfExchanges\n gets the total number of registered exchanges\n@return total number of registered exchange IDs",
"id": 4732,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getNumberOfExchanges",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4724,
"nodeType": "ParameterList",
"parameters": [],
"src": "6740:2:9"
},
"returnParameters": {
"id": 4727,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4726,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4732,
"src": "6790:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4725,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6790:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6789:9:9"
},
"scope": 4962,
"src": "6711:134:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4763,
"nodeType": "Block",
"src": "7186:276:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4743,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7217:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4744,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7228:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7217:12:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20526174696f206d757374206265203e30",
"id": 4746,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7243:37:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_36101f33c85b5f047dc985e5d24ae3bcf32f1d4b0a57ccd6a8c04d1cc8672d12",
"typeString": "literal_string \"FixedRateExchange: Ratio must be >0\""
},
"value": "FixedRateExchange: Ratio must be >0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_36101f33c85b5f047dc985e5d24ae3bcf32f1d4b0a57ccd6a8c04d1cc8672d12",
"typeString": "literal_string \"FixedRateExchange: Ratio must be >0\""
}
],
"id": 4742,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "7196:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4747,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7196:94:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4748,
"nodeType": "ExpressionStatement",
"src": "7196:94:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4754,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4749,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7301:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4751,
"indexExpression": {
"argumentTypes": null,
"id": 4750,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7311:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7301:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4752,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "7301:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4753,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7335:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7301:41:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4755,
"nodeType": "ExpressionStatement",
"src": "7301:41:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4757,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7390:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4758,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "7414:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7414:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4760,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7438:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4756,
"name": "ExchangeRateChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4488,
"src": "7357:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,uint256)"
}
},
"id": 4761,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7357:98:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4762,
"nodeType": "EmitStatement",
"src": "7352:103:9"
}
]
},
"documentation": "@dev setRate\n changes the fixed rate for an exchange with a new rate\n@param exchangeId a unique exchange idnetifier\n@param newRate new fixed rate value",
"id": 4764,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4739,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7170:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4740,
"modifierName": {
"argumentTypes": null,
"id": 4738,
"name": "onlyExchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4468,
"src": "7152:17:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "7152:29:9"
}
],
"name": "setRate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4737,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4734,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4764,
"src": "7077:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4733,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7077:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4736,
"name": "newRate",
"nodeType": "VariableDeclaration",
"scope": 4764,
"src": "7105:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4735,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7105:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7067:59:9"
},
"returnParameters": {
"id": 4741,
"nodeType": "ParameterList",
"parameters": [],
"src": "7186:0:9"
},
"scope": 4962,
"src": "7051:411:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4805,
"nodeType": "Block",
"src": "7754:389:9",
"statements": [
{
"condition": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4772,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7767:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4774,
"indexExpression": {
"argumentTypes": null,
"id": 4773,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7777:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7767:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4775,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7767:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 4803,
"nodeType": "Block",
"src": "7971:166:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4795,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4790,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7985:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4792,
"indexExpression": {
"argumentTypes": null,
"id": 4791,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7995:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7985:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4793,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7985:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 4794,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8016:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7985:35:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4796,
"nodeType": "ExpressionStatement",
"src": "7985:35:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4798,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "8074:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4799,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "8102:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4800,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8102:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4797,
"name": "ExchangeActivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4494,
"src": "8039:17:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4801,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8039:87:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4802,
"nodeType": "EmitStatement",
"src": "8034:92:9"
}
]
},
"id": 4804,
"nodeType": "IfStatement",
"src": "7764:373:9",
"trueBody": {
"id": 4789,
"nodeType": "Block",
"src": "7796:169:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4776,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7810:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4778,
"indexExpression": {
"argumentTypes": null,
"id": 4777,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7820:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7810:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4779,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7810:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 4780,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7841:5:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "7810:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4782,
"nodeType": "ExpressionStatement",
"src": "7810:36:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4784,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7902:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4785,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "7930:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4786,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7930:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4783,
"name": "ExchangeDeactivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4500,
"src": "7865:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4787,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7865:89:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4788,
"nodeType": "EmitStatement",
"src": "7860:94:9"
}
]
}
}
]
},
"documentation": "@dev toggleExchangeState\n toggles the active state of an existing exchange\n@param exchangeId a unique exchange idnetifier",
"id": 4806,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4769,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7738:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4770,
"modifierName": {
"argumentTypes": null,
"id": 4768,
"name": "onlyExchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4468,
"src": "7720:17:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "7720:29:9"
}
],
"name": "toggleExchangeState",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4767,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4766,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4806,
"src": "7670:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4765,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7670:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7660:34:9"
},
"returnParameters": {
"id": 4771,
"nodeType": "ParameterList",
"parameters": [],
"src": "7754:0:9"
},
"scope": 4962,
"src": "7632:511:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4818,
"nodeType": "Block",
"src": "8437:55:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4813,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8454:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4815,
"indexExpression": {
"argumentTypes": null,
"id": 4814,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4808,
"src": "8464:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8454:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4816,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "8454:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 4812,
"id": 4817,
"nodeType": "Return",
"src": "8447:38:9"
}
]
},
"documentation": "@dev getRate\n gets the current fixed rate for an exchange\n@param exchangeId a unique exchange idnetifier\n@return fixed rate value",
"id": 4819,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getRate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4809,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4808,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4819,
"src": "8353:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4807,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8353:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8343:34:9"
},
"returnParameters": {
"id": 4812,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4811,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4819,
"src": "8424:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4810,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8424:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8423:9:9"
},
"scope": 4962,
"src": "8327:165:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4883,
"nodeType": "Block",
"src": "8792:532:9",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4831,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4826,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8805:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4828,
"indexExpression": {
"argumentTypes": null,
"id": 4827,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8815:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8805:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4829,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "8805:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 4830,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8837:5:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "8805:37:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 4881,
"nodeType": "Block",
"src": "8881:437:9",
"statements": [
{
"assignments": [
4837
],
"declarations": [
{
"constant": false,
"id": 4837,
"name": "balance",
"nodeType": "VariableDeclaration",
"scope": 4881,
"src": "8895:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4836,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8895:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4850,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4845,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8988:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4847,
"indexExpression": {
"argumentTypes": null,
"id": 4846,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8998:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8988:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4848,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "8988:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4839,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8928:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4841,
"indexExpression": {
"argumentTypes": null,
"id": 4840,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8938:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8928:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4842,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "8928:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4838,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "8913:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4843,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8913:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5052,
"src": "8913:74:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 4849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8913:111:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8895:129:9"
},
{
"assignments": [
4852
],
"declarations": [
{
"constant": false,
"id": 4852,
"name": "allowance",
"nodeType": "VariableDeclaration",
"scope": 4881,
"src": "9038:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4851,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9038:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4868,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4860,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "9133:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4862,
"indexExpression": {
"argumentTypes": null,
"id": 4861,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "9143:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9133:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4863,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "9133:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4865,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6579,
"src": "9178:4:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_FixedRateExchange_$4962",
"typeString": "contract FixedRateExchange"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_FixedRateExchange_$4962",
"typeString": "contract FixedRateExchange"
}
],
"id": 4864,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9170:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9170:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4854,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "9073:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4856,
"indexExpression": {
"argumentTypes": null,
"id": 4855,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "9083:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9073:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4857,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "9073:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4853,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "9058:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9058:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "allowance",
"nodeType": "MemberAccess",
"referencedDeclaration": 5034,
"src": "9058:74:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view external returns (uint256)"
}
},
"id": 4867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9058:126:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9038:146:9"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4869,
"name": "balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4837,
"src": "9201:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 4870,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4852,
"src": "9211:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9201:19:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"id": 4878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4876,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "9289:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4877,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4852,
"src": "9298:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9289:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4879,
"nodeType": "ExpressionStatement",
"src": "9289:18:9"
},
"id": 4880,
"nodeType": "IfStatement",
"src": "9198:109:9",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 4874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4872,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "9238:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4873,
"name": "balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4837,
"src": "9247:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9238:16:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4875,
"nodeType": "ExpressionStatement",
"src": "9238:16:9"
}
}
]
},
"id": 4882,
"nodeType": "IfStatement",
"src": "8802:516:9",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 4834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4832,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "8856:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 4833,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8865:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8856:10:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4835,
"nodeType": "ExpressionStatement",
"src": "8856:10:9"
}
}
]
},
"documentation": "@dev getSupply\n gets the current supply of datatokens in an fixed\n rate exchagne\n@param exchangeId the exchange ID\n@return supply",
"id": 4884,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSupply",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4822,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4821,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4884,
"src": "8707:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4820,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8707:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8706:20:9"
},
"returnParameters": {
"id": 4825,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4824,
"name": "supply",
"nodeType": "VariableDeclaration",
"scope": 4884,
"src": "8772:14:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4823,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8772:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8771:16:9"
},
"scope": 4962,
"src": "8688:636:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4938,
"nodeType": "Block",
"src": "10039:307:9",
"statements": [
{
"assignments": [
4902
],
"declarations": [
{
"constant": false,
"id": 4902,
"name": "exchange",
"nodeType": "VariableDeclaration",
"scope": 4938,
"src": "10049:24:9",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange"
},
"typeName": {
"contractScope": null,
"id": 4901,
"name": "Exchange",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4421,
"src": "10049:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage_ptr",
"typeString": "struct FixedRateExchange.Exchange"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4906,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4903,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "10076:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4905,
"indexExpression": {
"argumentTypes": null,
"id": 4904,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4886,
"src": "10086:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10076:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10049:48:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4907,
"name": "exchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4889,
"src": "10107:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4908,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10123:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4909,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "10123:22:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10107:38:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4911,
"nodeType": "ExpressionStatement",
"src": "10107:38:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4912,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4891,
"src": "10155:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4913,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10167:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4914,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "10167:18:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10155:30:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4916,
"nodeType": "ExpressionStatement",
"src": "10155:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4920,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4917,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4893,
"src": "10195:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4918,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10207:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4919,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "baseToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4418,
"src": "10207:18:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10195:30:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4921,
"nodeType": "ExpressionStatement",
"src": "10195:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4925,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4922,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4895,
"src": "10235:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4923,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10247:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4924,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "10247:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10235:30:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4926,
"nodeType": "ExpressionStatement",
"src": "10235:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4927,
"name": "active",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4897,
"src": "10275:6:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4928,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10284:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4929,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "10284:15:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "10275:24:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4931,
"nodeType": "ExpressionStatement",
"src": "10275:24:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4932,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4899,
"src": "10309:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4934,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4886,
"src": "10328:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 4933,
"name": "getSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4884,
"src": "10318:9:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) view returns (uint256)"
}
},
"id": 4935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10318:21:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10309:30:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4937,
"nodeType": "ExpressionStatement",
"src": "10309:30:9"
}
]
},
"documentation": "@dev getExchange\n gets all the exchange details\n@param exchangeId a unique exchange idnetifier\n@return all the exchange details including the exchange Owner\n the dataToken contract address, the base token address, the \n fixed rate, whether the exchange is active and the supply or the \n the current data token liquidity.",
"id": 4939,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getExchange",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4887,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4886,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9772:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4885,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9772:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9762:34:9"
},
"returnParameters": {
"id": 4900,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4889,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9857:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4888,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9857:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4891,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9892:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4890,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9892:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4893,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9923:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4892,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9923:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4895,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9954:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4894,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9954:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4897,
"name": "active",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9985:11:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4896,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9985:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4899,
"name": "supply",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "10010:14:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4898,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10010:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9843:191:9"
},
"scope": 4962,
"src": "9742:604:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4947,
"nodeType": "Block",
"src": "10581:35:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4945,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "10598:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"functionReturnParameters": 4944,
"id": 4946,
"nodeType": "Return",
"src": "10591:18:9"
}
]
},
"documentation": "@dev getExchanges\n gets all the exchanges list\n@return a list of all registered exchange Ids",
"id": 4948,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getExchanges",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4940,
"nodeType": "ParameterList",
"parameters": [],
"src": "10507:2:9"
},
"returnParameters": {
"id": 4944,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4943,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4948,
"src": "10559:16:9",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[]"
},
"typeName": {
"baseType": {
"id": 4941,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "10559:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 4942,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10559:9:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10558:18:9"
},
"scope": 4962,
"src": "10486:130:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4960,
"nodeType": "Block",
"src": "10933:52:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4955,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "10950:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4957,
"indexExpression": {
"argumentTypes": null,
"id": 4956,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4950,
"src": "10960:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10950:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4958,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "10950:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 4954,
"id": 4959,
"nodeType": "Return",
"src": "10943:35:9"
}
]
},
"documentation": "@dev isActive\n checks whether exchange is active\n@param exchangeId a unique exchange idnetifier\n@return true if exchange is true, otherwise returns false",
"id": 4961,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isActive",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4951,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4950,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4961,
"src": "10851:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4949,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "10851:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10841:34:9"
},
"returnParameters": {
"id": 4954,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4953,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4961,
"src": "10923:4:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4952,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "10923:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10922:6:9"
},
"scope": 4962,
"src": "10824:161:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
}
],
"scope": 4963,
"src": "530:10457:9"
}
],
"src": "0:10988:9"
},
"legacyAST": {
"absolutePath": "/ocean/ocean-contracts/contracts/fixedRate/FixedRateExchange.sol",
"exportedSymbols": {
"FixedRateExchange": [
4962
]
},
"id": 4963,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 4400,
"literals": [
"solidity",
"0.5",
".7"
],
"nodeType": "PragmaDirective",
"src": "0:22:9"
},
{
"absolutePath": "/ocean/ocean-contracts/contracts/interfaces/IERC20Template.sol",
"file": "../interfaces/IERC20Template.sol",
"id": 4401,
"nodeType": "ImportDirective",
"scope": 4963,
"sourceUnit": 5071,
"src": "185:42:9",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
"file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
"id": 4402,
"nodeType": "ImportDirective",
"scope": 4963,
"sourceUnit": 5927,
"src": "228:59:9",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title FixedRateExchange\n@dev FixedRateExchange is a fixed rate exchange Contract\n Marketplaces uses this contract to allow consumers \n exchanging datatokens with ocean token using a fixed \n exchange rate.",
"fullyImplemented": true,
"id": 4962,
"linearizedBaseContracts": [
4962
],
"name": "FixedRateExchange",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 4405,
"libraryName": {
"contractScope": null,
"id": 4403,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5926,
"src": "569:8:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$5926",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "563:27:9",
"typeName": {
"id": 4404,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "582:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"id": 4410,
"name": "BASE",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "595:40:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4406,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "595:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_1000000000000000000_by_1",
"typeString": "int_const 1000000000000000000"
},
"id": 4409,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 4407,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "627:2:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3138",
"id": 4408,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "633:2:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
"src": "627:8:9",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000_by_1",
"typeString": "int_const 1000000000000000000"
}
},
"visibility": "private"
},
{
"canonicalName": "FixedRateExchange.Exchange",
"id": 4421,
"members": [
{
"constant": false,
"id": 4412,
"name": "active",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "667:11:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4411,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "667:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4414,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "688:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4413,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "688:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4416,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "719:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4415,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "719:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4418,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "746:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4417,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "746:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4420,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4421,
"src": "773:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4419,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "773:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Exchange",
"nodeType": "StructDefinition",
"scope": 4962,
"src": "641:156:9",
"visibility": "public"
},
{
"constant": false,
"id": 4425,
"name": "exchanges",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "844:46:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange)"
},
"typeName": {
"id": 4424,
"keyType": {
"id": 4422,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "852:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "844:28:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange)"
},
"valueType": {
"contractScope": null,
"id": 4423,
"name": "Exchange",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4421,
"src": "863:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage_ptr",
"typeString": "struct FixedRateExchange.Exchange"
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 4428,
"name": "exchangeIds",
"nodeType": "VariableDeclaration",
"scope": 4962,
"src": "896:29:9",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[]"
},
"typeName": {
"baseType": {
"id": 4426,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "896:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 4427,
"length": null,
"nodeType": "ArrayTypeName",
"src": "896:9:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[]"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 4450,
"nodeType": "Block",
"src": "998:206:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4445,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4433,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1029:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4435,
"indexExpression": {
"argumentTypes": null,
"id": 4434,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4430,
"src": "1039:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1029:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4436,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "1029:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4437,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1064:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1029:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4439,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1081:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4441,
"indexExpression": {
"argumentTypes": null,
"id": 4440,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4430,
"src": "1091:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1081:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4442,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "1081:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 4443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1113:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "1081:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1029:88:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a2045786368616e676520646f6573206e6f7420657869737421",
"id": 4446,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1131:45:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_33934cff4a0fa610a47c77876602b176c21576f21e0c00dbe89561d0224d4982",
"typeString": "literal_string \"FixedRateExchange: Exchange does not exist!\""
},
"value": "FixedRateExchange: Exchange does not exist!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_33934cff4a0fa610a47c77876602b176c21576f21e0c00dbe89561d0224d4982",
"typeString": "literal_string \"FixedRateExchange: Exchange does not exist!\""
}
],
"id": 4432,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "1008:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4447,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1008:178:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4448,
"nodeType": "ExpressionStatement",
"src": "1008:178:9"
},
{
"id": 4449,
"nodeType": "PlaceholderStatement",
"src": "1196:1:9"
}
]
},
"documentation": null,
"id": 4451,
"name": "onlyActiveExchange",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 4431,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4430,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4451,
"src": "969:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4429,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "969:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "959:34:9"
},
"src": "932:272:9",
"visibility": "internal"
},
{
"body": {
"id": 4467,
"nodeType": "Block",
"src": "1275:165:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4456,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "1306:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4458,
"indexExpression": {
"argumentTypes": null,
"id": 4457,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4453,
"src": "1316:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1306:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4459,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "1306:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4460,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "1345:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4461,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1345:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "1306:49:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20696e76616c69642065786368616e6765206f776e6572",
"id": 4463,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1369:43:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6953f2de142c64f34f94b55c4652873748f95f81c631ff9f1f451ebbfe788b37",
"typeString": "literal_string \"FixedRateExchange: invalid exchange owner\""
},
"value": "FixedRateExchange: invalid exchange owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6953f2de142c64f34f94b55c4652873748f95f81c631ff9f1f451ebbfe788b37",
"typeString": "literal_string \"FixedRateExchange: invalid exchange owner\""
}
],
"id": 4455,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "1285:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1285:137:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4465,
"nodeType": "ExpressionStatement",
"src": "1285:137:9"
},
{
"id": 4466,
"nodeType": "PlaceholderStatement",
"src": "1432:1:9"
}
]
},
"documentation": null,
"id": 4468,
"name": "onlyExchangeOwner",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 4454,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4453,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4468,
"src": "1246:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4452,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1246:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1236:34:9"
},
"src": "1210:230:9",
"visibility": "internal"
},
{
"anonymous": false,
"documentation": null,
"id": 4480,
"name": "ExchangeCreated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4479,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4470,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1477:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4469,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1477:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4472,
"indexed": true,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1513:25:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4471,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1513:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4474,
"indexed": true,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1548:25:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4473,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1548:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4476,
"indexed": false,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1583:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4475,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1583:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4478,
"indexed": false,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4480,
"src": "1614:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4477,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1614:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1467:170:9"
},
"src": "1446:192:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4488,
"name": "ExchangeRateChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 4487,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4482,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1679:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4481,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1679:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4484,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1715:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4483,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1715:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4486,
"indexed": false,
"name": "newRate",
"nodeType": "VariableDeclaration",
"scope": 4488,
"src": "1754:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4485,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1754:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1669:106:9"
},
"src": "1644:132:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4494,
"name": "ExchangeActivated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4493,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4490,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4494,
"src": "1815:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4489,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1815:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4492,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4494,
"src": "1851:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4491,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1851:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1805:81:9"
},
"src": "1782:105:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4500,
"name": "ExchangeDeactivated",
"nodeType": "EventDefinition",
"parameters": {
"id": 4499,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4496,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4500,
"src": "1928:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4495,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1928:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4498,
"indexed": true,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4500,
"src": "1964:29:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4497,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1964:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1918:81:9"
},
"src": "1893:107:9"
},
{
"anonymous": false,
"documentation": null,
"id": 4510,
"name": "Swapped",
"nodeType": "EventDefinition",
"parameters": {
"id": 4509,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4502,
"indexed": true,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2029:26:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4501,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2029:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4504,
"indexed": true,
"name": "by",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2065:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4503,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2065:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4506,
"indexed": false,
"name": "baseTokenSwappedAmount",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2093:30:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4505,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2093:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4508,
"indexed": false,
"name": "dataTokenSwappedAmount",
"nodeType": "VariableDeclaration",
"scope": 4510,
"src": "2133:30:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4507,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2133:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2019:150:9"
},
"src": "2006:164:9"
},
{
"body": {
"id": 4604,
"nodeType": "Block",
"src": "2636:1294:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4524,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4520,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "2667:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 4522,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2688:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 4521,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2680:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4523,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2680:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2667:23:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642062617365746f6b656e2c20207a65726f2061646472657373",
"id": 4525,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2704:53:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9e4f79921714a9bf5dc580585dc440da8f598ce27caa8d87778cb9493126de16",
"typeString": "literal_string \"FixedRateExchange: Invalid basetoken, zero address\""
},
"value": "FixedRateExchange: Invalid basetoken, zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9e4f79921714a9bf5dc580585dc440da8f598ce27caa8d87778cb9493126de16",
"typeString": "literal_string \"FixedRateExchange: Invalid basetoken, zero address\""
}
],
"id": 4519,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2646:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2646:121:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4527,
"nodeType": "ExpressionStatement",
"src": "2646:121:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4529,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "2798:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 4531,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2819:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 4530,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2811:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2811:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2798:23:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c20207a65726f2061646472657373",
"id": 4534,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2835:53:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c4a0d6c9d74c4e7b7eb600c681c94f357f46a1a17500afc03636322ac0a63c22",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, zero address\""
},
"value": "FixedRateExchange: Invalid datatoken, zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c4a0d6c9d74c4e7b7eb600c681c94f357f46a1a17500afc03636322ac0a63c22",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, zero address\""
}
],
"id": 4528,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2777:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2777:121:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4536,
"nodeType": "ExpressionStatement",
"src": "2777:121:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 4540,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4538,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "2929:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 4539,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "2942:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2929:22:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642064617461746f6b656e2c2020657175616c732062617365746f6b656e",
"id": 4541,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2965:57:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8088a8876b7d943bb58f3202d91bc395f378f8d33e9c768b1a854016f72d0175",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, equals basetoken\""
},
"value": "FixedRateExchange: Invalid datatoken, equals basetoken"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8088a8876b7d943bb58f3202d91bc395f378f8d33e9c768b1a854016f72d0175",
"typeString": "literal_string \"FixedRateExchange: Invalid datatoken, equals basetoken\""
}
],
"id": 4537,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "2908:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2908:124:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4543,
"nodeType": "ExpressionStatement",
"src": "2908:124:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4545,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3063:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4546,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3076:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3063:14:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20496e76616c69642065786368616e676520726174652076616c7565",
"id": 4548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3092:48:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_049c41558b20e3ef0c501ffa5f229a463d9c10ba2b6e269ac1d736dfd92adbc2",
"typeString": "literal_string \"FixedRateExchange: Invalid exchange rate value\""
},
"value": "FixedRateExchange: Invalid exchange rate value"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_049c41558b20e3ef0c501ffa5f229a463d9c10ba2b6e269ac1d736dfd92adbc2",
"typeString": "literal_string \"FixedRateExchange: Invalid exchange rate value\""
}
],
"id": 4544,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "3042:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4549,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3042:108:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4550,
"nodeType": "ExpressionStatement",
"src": "3042:108:9"
},
{
"assignments": [
4552
],
"declarations": [
{
"constant": false,
"id": 4552,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4604,
"src": "3160:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4551,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3160:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4559,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4554,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3213:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4555,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3236:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4556,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3259:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4557,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3259:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4553,
"name": "generateExchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4626,
"src": "3181:18:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address,address,address) pure returns (bytes32)"
}
},
"id": 4558,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3181:98:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3160:119:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4561,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "3310:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4563,
"indexExpression": {
"argumentTypes": null,
"id": 4562,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3320:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3310:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4564,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "3310:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3345:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3310:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a2045786368616e676520616c72656164792065786973747321",
"id": 4567,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3360:45:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4cbdfa87b7259677de1d4b2bb2aef7a46adf4ea65536670792826c014ead7938",
"typeString": "literal_string \"FixedRateExchange: Exchange already exists!\""
},
"value": "FixedRateExchange: Exchange already exists!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4cbdfa87b7259677de1d4b2bb2aef7a46adf4ea65536670792826c014ead7938",
"typeString": "literal_string \"FixedRateExchange: Exchange already exists!\""
}
],
"id": 4560,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "3289:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3289:126:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4569,
"nodeType": "ExpressionStatement",
"src": "3289:126:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4570,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "3425:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4572,
"indexExpression": {
"argumentTypes": null,
"id": 4571,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3435:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3425:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "74727565",
"id": 4574,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3480:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4575,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3513:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4576,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3513:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4577,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3548:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4578,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3582:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4579,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3616:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4573,
"name": "Exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4421,
"src": "3449:8:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_Exchange_$4421_storage_ptr_$",
"typeString": "type(struct FixedRateExchange.Exchange storage pointer)"
}
},
"id": 4580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [
"active",
"exchangeOwner",
"dataToken",
"baseToken",
"fixedRate"
],
"nodeType": "FunctionCall",
"src": "3449:187:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"src": "3425:211:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4582,
"nodeType": "ExpressionStatement",
"src": "3425:211:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4586,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3663:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 4583,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "3646:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"id": 4585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3646:16:9",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) returns (uint256)"
}
},
"id": 4587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3646:28:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4588,
"nodeType": "ExpressionStatement",
"src": "3646:28:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4590,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3719:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 4591,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4512,
"src": "3743:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4592,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4514,
"src": "3766:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4593,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3789:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4594,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3789:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4595,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4516,
"src": "3813:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4589,
"name": "ExchangeCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4480,
"src": "3690:15:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,address,address,uint256)"
}
},
"id": 4596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3690:142:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4597,
"nodeType": "EmitStatement",
"src": "3685:147:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4599,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4552,
"src": "3879:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4600,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "3903:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4601,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3903:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4598,
"name": "ExchangeActivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4494,
"src": "3848:17:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3848:75:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4603,
"nodeType": "EmitStatement",
"src": "3843:80:9"
}
]
},
"documentation": "@dev create\n creates new exchange pairs between base token\n (ocean token) and data tokens.\n@param baseToken refers to a ocean token contract address\n@param dataToken refers to a data token contract address\n@param fixedRate refers to the exact fixed exchange rate in wei",
"id": 4605,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "create",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4517,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4512,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2537:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4511,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2537:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4514,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2564:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4513,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2564:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4516,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4605,
"src": "2591:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4515,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2591:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2527:87:9"
},
"returnParameters": {
"id": 4518,
"nodeType": "ParameterList",
"parameters": [],
"src": "2636:0:9"
},
"scope": 4962,
"src": "2512:1418:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4625,
"nodeType": "Block",
"src": "4408:166:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4619,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4607,
"src": "4476:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4620,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4609,
"src": "4503:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4621,
"name": "exchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4611,
"src": "4530:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 4617,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6520,
"src": "4448:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 4618,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4448:10:9",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 4622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4448:109:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 4616,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6527,
"src": "4425:9:9",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 4623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4425:142:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 4615,
"id": 4624,
"nodeType": "Return",
"src": "4418:149:9"
}
]
},
"documentation": "@dev generateExchangeId\n creates unique exchange identifier for two token pairs.\n@param baseToken refers to a ocean token contract address\n@param dataToken refers to a data token contract address\n@param exchangeOwner exchange owner address",
"id": 4626,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "generateExchangeId",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4612,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4607,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4268:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4606,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4268:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4609,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4295:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4608,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4295:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4611,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4322:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4610,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4322:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4258:91:9"
},
"returnParameters": {
"id": 4615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4614,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4626,
"src": "4395:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4613,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4395:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4394:9:9"
},
"scope": 4962,
"src": "4231:343:9",
"stateMutability": "pure",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4651,
"nodeType": "Block",
"src": "5072:110:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4638,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4636,
"src": "5082:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4647,
"name": "BASE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4410,
"src": "5170:4:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4641,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5133:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4643,
"indexExpression": {
"argumentTypes": null,
"id": 4642,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4628,
"src": "5143:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5133:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4644,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "5133:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 4639,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4630,
"src": "5100:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mul",
"nodeType": "MemberAccess",
"referencedDeclaration": 5843,
"src": "5100:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 4645,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:65:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 5859,
"src": "5100:69:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 4648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:75:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5082:93:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4650,
"nodeType": "ExpressionStatement",
"src": "5082:93:9"
}
]
},
"documentation": "@dev CalcInGivenOut\n Calculates how many basetokens are needed to get specifyed amount of datatokens\n@param exchangeId a unique exchange idnetifier \n@param dataTokenAmount the amount of data tokens to be exchanged",
"id": 4652,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4633,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4628,
"src": "5005:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4634,
"modifierName": {
"argumentTypes": null,
"id": 4632,
"name": "onlyActiveExchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4451,
"src": "4973:18:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "4973:52:9"
}
],
"name": "CalcInGivenOut",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4631,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4628,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "4879:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4627,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4879:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4630,
"name": "dataTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "4907:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4629,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4907:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4869:67:9"
},
"returnParameters": {
"id": 4637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4636,
"name": "baseTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4652,
"src": "5043:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4635,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5043:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5042:25:9"
},
"scope": 4962,
"src": "4846:336:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4722,
"nodeType": "Block",
"src": "5583:960:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4663,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "5614:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4664,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5633:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5614:20:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207a65726f206461746120746f6b656e20616d6f756e74",
"id": 4666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5648:43:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d2b293ef72dfab6f705b22246c532786cca882499f3fba3ae8114dc40951c5bc",
"typeString": "literal_string \"FixedRateExchange: zero data token amount\""
},
"value": "FixedRateExchange: zero data token amount"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d2b293ef72dfab6f705b22246c532786cca882499f3fba3ae8114dc40951c5bc",
"typeString": "literal_string \"FixedRateExchange: zero data token amount\""
}
],
"id": 4662,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "5593:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5593:108:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4668,
"nodeType": "ExpressionStatement",
"src": "5593:108:9"
},
{
"assignments": [
4670
],
"declarations": [
{
"constant": false,
"id": 4670,
"name": "baseTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4722,
"src": "5711:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4669,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5711:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4675,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4672,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5752:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 4673,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "5763:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4671,
"name": "CalcInGivenOut",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4652,
"src": "5737:14:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (bytes32,uint256) view returns (uint256)"
}
},
"id": 4674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5737:42:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5711:68:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4684,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "5888:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5888:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4686,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5916:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4688,
"indexExpression": {
"argumentTypes": null,
"id": 4687,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5926:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5916:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4689,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "5916:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 4690,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4670,
"src": "5969:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4678,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "5825:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4680,
"indexExpression": {
"argumentTypes": null,
"id": 4679,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5835:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5825:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4681,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "baseToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4418,
"src": "5825:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4677,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "5810:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4682,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5810:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4683,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 5045,
"src": "5810:60:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 4691,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5810:188:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652062617365546f6b656e20636f6e7472616374",
"id": 4692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6012:66:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_704d230adb0aeaaf731cbfcd3f10c77132039a7e2520db77d561e3ebcc5b16b9",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the baseToken contract\""
},
"value": "FixedRateExchange: transferFrom failed in the baseToken contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_704d230adb0aeaaf731cbfcd3f10c77132039a7e2520db77d561e3ebcc5b16b9",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the baseToken contract\""
}
],
"id": 4676,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "5789:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5789:299:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4694,
"nodeType": "ExpressionStatement",
"src": "5789:299:9"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4703,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "6197:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4705,
"indexExpression": {
"argumentTypes": null,
"id": 4704,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6207:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6197:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4706,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "6197:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4707,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "6250:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6250:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4709,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "6278:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4697,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "6134:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4699,
"indexExpression": {
"argumentTypes": null,
"id": 4698,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6144:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6134:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4700,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "6134:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4696,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "6119:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6119:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4702,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 5045,
"src": "6119:60:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 4710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6119:188:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a207472616e7366657246726f6d206661696c656420696e207468652064617461546f6b656e20636f6e7472616374",
"id": 4711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6321:66:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c05b0f5b41acd20d6ba43aff2e398e9afe8f1d66a0a38aeff2f84a7867e95310",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the dataToken contract\""
},
"value": "FixedRateExchange: transferFrom failed in the dataToken contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c05b0f5b41acd20d6ba43aff2e398e9afe8f1d66a0a38aeff2f84a7867e95310",
"typeString": "literal_string \"FixedRateExchange: transferFrom failed in the dataToken contract\""
}
],
"id": 4695,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "6098:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6098:299:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4713,
"nodeType": "ExpressionStatement",
"src": "6098:299:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4715,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "6434:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4716,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "6458:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4717,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6458:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4718,
"name": "baseTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4670,
"src": "6482:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 4719,
"name": "dataTokenAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4656,
"src": "6511:15:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4714,
"name": "Swapped",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4510,
"src": "6413:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,uint256,uint256)"
}
},
"id": 4720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6413:123:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4721,
"nodeType": "EmitStatement",
"src": "6408:128:9"
}
]
},
"documentation": "@dev swap\n atomic swap between two registered fixed rate exchange.\n@param exchangeId a unique exchange idnetifier \n@param dataTokenAmount the amount of data tokens to be exchanged",
"id": 4723,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4659,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4654,
"src": "5558:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4660,
"modifierName": {
"argumentTypes": null,
"id": 4658,
"name": "onlyActiveExchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4451,
"src": "5526:18:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "5526:52:9"
}
],
"name": "swap",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4657,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4654,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4723,
"src": "5443:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4653,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5443:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4656,
"name": "dataTokenAmount",
"nodeType": "VariableDeclaration",
"scope": 4723,
"src": "5471:23:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4655,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5471:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5433:67:9"
},
"returnParameters": {
"id": 4661,
"nodeType": "ParameterList",
"parameters": [],
"src": "5583:0:9"
},
"scope": 4962,
"src": "5420:1123:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4731,
"nodeType": "Block",
"src": "6803:42:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4728,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "6820:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"id": 4729,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6820:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 4727,
"id": 4730,
"nodeType": "Return",
"src": "6813:25:9"
}
]
},
"documentation": "@dev getNumberOfExchanges\n gets the total number of registered exchanges\n@return total number of registered exchange IDs",
"id": 4732,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getNumberOfExchanges",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4724,
"nodeType": "ParameterList",
"parameters": [],
"src": "6740:2:9"
},
"returnParameters": {
"id": 4727,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4726,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4732,
"src": "6790:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4725,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6790:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6789:9:9"
},
"scope": 4962,
"src": "6711:134:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4763,
"nodeType": "Block",
"src": "7186:276:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4743,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7217:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 4744,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7228:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7217:12:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "46697865645261746545786368616e67653a20526174696f206d757374206265203e30",
"id": 4746,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7243:37:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_36101f33c85b5f047dc985e5d24ae3bcf32f1d4b0a57ccd6a8c04d1cc8672d12",
"typeString": "literal_string \"FixedRateExchange: Ratio must be >0\""
},
"value": "FixedRateExchange: Ratio must be >0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_36101f33c85b5f047dc985e5d24ae3bcf32f1d4b0a57ccd6a8c04d1cc8672d12",
"typeString": "literal_string \"FixedRateExchange: Ratio must be >0\""
}
],
"id": 4742,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
6536,
6537
],
"referencedDeclaration": 6537,
"src": "7196:7:9",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 4747,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7196:94:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4748,
"nodeType": "ExpressionStatement",
"src": "7196:94:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4754,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4749,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7301:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4751,
"indexExpression": {
"argumentTypes": null,
"id": 4750,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7311:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7301:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4752,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "7301:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4753,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7335:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7301:41:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4755,
"nodeType": "ExpressionStatement",
"src": "7301:41:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4757,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7390:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4758,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "7414:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7414:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 4760,
"name": "newRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4736,
"src": "7438:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 4756,
"name": "ExchangeRateChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4488,
"src": "7357:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,address,uint256)"
}
},
"id": 4761,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7357:98:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4762,
"nodeType": "EmitStatement",
"src": "7352:103:9"
}
]
},
"documentation": "@dev setRate\n changes the fixed rate for an exchange with a new rate\n@param exchangeId a unique exchange idnetifier\n@param newRate new fixed rate value",
"id": 4764,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4739,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4734,
"src": "7170:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4740,
"modifierName": {
"argumentTypes": null,
"id": 4738,
"name": "onlyExchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4468,
"src": "7152:17:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "7152:29:9"
}
],
"name": "setRate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4737,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4734,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4764,
"src": "7077:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4733,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7077:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4736,
"name": "newRate",
"nodeType": "VariableDeclaration",
"scope": 4764,
"src": "7105:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4735,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7105:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7067:59:9"
},
"returnParameters": {
"id": 4741,
"nodeType": "ParameterList",
"parameters": [],
"src": "7186:0:9"
},
"scope": 4962,
"src": "7051:411:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4805,
"nodeType": "Block",
"src": "7754:389:9",
"statements": [
{
"condition": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4772,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7767:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4774,
"indexExpression": {
"argumentTypes": null,
"id": 4773,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7777:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7767:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4775,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7767:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 4803,
"nodeType": "Block",
"src": "7971:166:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4795,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4790,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7985:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4792,
"indexExpression": {
"argumentTypes": null,
"id": 4791,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7995:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7985:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4793,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7985:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 4794,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8016:4:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7985:35:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4796,
"nodeType": "ExpressionStatement",
"src": "7985:35:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4798,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "8074:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4799,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "8102:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4800,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8102:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4797,
"name": "ExchangeActivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4494,
"src": "8039:17:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4801,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8039:87:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4802,
"nodeType": "EmitStatement",
"src": "8034:92:9"
}
]
},
"id": 4804,
"nodeType": "IfStatement",
"src": "7764:373:9",
"trueBody": {
"id": 4789,
"nodeType": "Block",
"src": "7796:169:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4776,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "7810:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4778,
"indexExpression": {
"argumentTypes": null,
"id": 4777,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7820:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7810:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4779,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "7810:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 4780,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7841:5:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "7810:36:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4782,
"nodeType": "ExpressionStatement",
"src": "7810:36:9"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4784,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7902:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4785,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6533,
"src": "7930:3:9",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 4786,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7930:10:9",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 4783,
"name": "ExchangeDeactivated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4500,
"src": "7865:19:9",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 4787,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7865:89:9",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 4788,
"nodeType": "EmitStatement",
"src": "7860:94:9"
}
]
}
}
]
},
"documentation": "@dev toggleExchangeState\n toggles the active state of an existing exchange\n@param exchangeId a unique exchange idnetifier",
"id": 4806,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 4769,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4766,
"src": "7738:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 4770,
"modifierName": {
"argumentTypes": null,
"id": 4768,
"name": "onlyExchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4468,
"src": "7720:17:9",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "7720:29:9"
}
],
"name": "toggleExchangeState",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4767,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4766,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4806,
"src": "7670:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4765,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7670:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7660:34:9"
},
"returnParameters": {
"id": 4771,
"nodeType": "ParameterList",
"parameters": [],
"src": "7754:0:9"
},
"scope": 4962,
"src": "7632:511:9",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4818,
"nodeType": "Block",
"src": "8437:55:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4813,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8454:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4815,
"indexExpression": {
"argumentTypes": null,
"id": 4814,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4808,
"src": "8464:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8454:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4816,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "8454:31:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 4812,
"id": 4817,
"nodeType": "Return",
"src": "8447:38:9"
}
]
},
"documentation": "@dev getRate\n gets the current fixed rate for an exchange\n@param exchangeId a unique exchange idnetifier\n@return fixed rate value",
"id": 4819,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getRate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4809,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4808,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4819,
"src": "8353:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4807,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8353:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8343:34:9"
},
"returnParameters": {
"id": 4812,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4811,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4819,
"src": "8424:7:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4810,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8424:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8423:9:9"
},
"scope": 4962,
"src": "8327:165:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4883,
"nodeType": "Block",
"src": "8792:532:9",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 4831,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4826,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8805:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4828,
"indexExpression": {
"argumentTypes": null,
"id": 4827,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8815:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8805:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4829,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "8805:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 4830,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8837:5:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "8805:37:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 4881,
"nodeType": "Block",
"src": "8881:437:9",
"statements": [
{
"assignments": [
4837
],
"declarations": [
{
"constant": false,
"id": 4837,
"name": "balance",
"nodeType": "VariableDeclaration",
"scope": 4881,
"src": "8895:15:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4836,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8895:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4850,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4845,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8988:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4847,
"indexExpression": {
"argumentTypes": null,
"id": 4846,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8998:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8988:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4848,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "8988:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4839,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "8928:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4841,
"indexExpression": {
"argumentTypes": null,
"id": 4840,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "8938:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8928:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4842,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "8928:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4838,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "8913:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4843,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8913:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5052,
"src": "8913:74:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 4849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8913:111:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8895:129:9"
},
{
"assignments": [
4852
],
"declarations": [
{
"constant": false,
"id": 4852,
"name": "allowance",
"nodeType": "VariableDeclaration",
"scope": 4881,
"src": "9038:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4851,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9038:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4868,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4860,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "9133:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4862,
"indexExpression": {
"argumentTypes": null,
"id": 4861,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "9143:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9133:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4863,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "9133:35:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4865,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6579,
"src": "9178:4:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_FixedRateExchange_$4962",
"typeString": "contract FixedRateExchange"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_FixedRateExchange_$4962",
"typeString": "contract FixedRateExchange"
}
],
"id": 4864,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9170:7:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 4866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9170:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4854,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "9073:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4856,
"indexExpression": {
"argumentTypes": null,
"id": 4855,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4821,
"src": "9083:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9073:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4857,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "9073:31:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 4853,
"name": "IERC20Template",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5070,
"src": "9058:14:9",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Template_$5070_$",
"typeString": "type(contract IERC20Template)"
}
},
"id": 4858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9058:47:9",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Template_$5070",
"typeString": "contract IERC20Template"
}
},
"id": 4859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "allowance",
"nodeType": "MemberAccess",
"referencedDeclaration": 5034,
"src": "9058:74:9",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view external returns (uint256)"
}
},
"id": 4867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9058:126:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9038:146:9"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 4871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 4869,
"name": "balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4837,
"src": "9201:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 4870,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4852,
"src": "9211:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9201:19:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"id": 4878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4876,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "9289:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4877,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4852,
"src": "9298:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9289:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4879,
"nodeType": "ExpressionStatement",
"src": "9289:18:9"
},
"id": 4880,
"nodeType": "IfStatement",
"src": "9198:109:9",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 4874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4872,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "9238:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 4873,
"name": "balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4837,
"src": "9247:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9238:16:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4875,
"nodeType": "ExpressionStatement",
"src": "9238:16:9"
}
}
]
},
"id": 4882,
"nodeType": "IfStatement",
"src": "8802:516:9",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 4834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4832,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4824,
"src": "8856:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 4833,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8865:1:9",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8856:10:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4835,
"nodeType": "ExpressionStatement",
"src": "8856:10:9"
}
}
]
},
"documentation": "@dev getSupply\n gets the current supply of datatokens in an fixed\n rate exchagne\n@param exchangeId the exchange ID\n@return supply",
"id": 4884,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSupply",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4822,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4821,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4884,
"src": "8707:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4820,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8707:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8706:20:9"
},
"returnParameters": {
"id": 4825,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4824,
"name": "supply",
"nodeType": "VariableDeclaration",
"scope": 4884,
"src": "8772:14:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4823,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8772:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8771:16:9"
},
"scope": 4962,
"src": "8688:636:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 4938,
"nodeType": "Block",
"src": "10039:307:9",
"statements": [
{
"assignments": [
4902
],
"declarations": [
{
"constant": false,
"id": 4902,
"name": "exchange",
"nodeType": "VariableDeclaration",
"scope": 4938,
"src": "10049:24:9",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange"
},
"typeName": {
"contractScope": null,
"id": 4901,
"name": "Exchange",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4421,
"src": "10049:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage_ptr",
"typeString": "struct FixedRateExchange.Exchange"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 4906,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4903,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "10076:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4905,
"indexExpression": {
"argumentTypes": null,
"id": 4904,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4886,
"src": "10086:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10076:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10049:48:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4907,
"name": "exchangeOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4889,
"src": "10107:13:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4908,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10123:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4909,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "exchangeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 4414,
"src": "10123:22:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10107:38:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4911,
"nodeType": "ExpressionStatement",
"src": "10107:38:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4912,
"name": "dataToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4891,
"src": "10155:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4913,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10167:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4914,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dataToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4416,
"src": "10167:18:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10155:30:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4916,
"nodeType": "ExpressionStatement",
"src": "10155:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4920,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4917,
"name": "baseToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4893,
"src": "10195:9:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4918,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10207:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4919,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "baseToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 4418,
"src": "10207:18:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10195:30:9",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4921,
"nodeType": "ExpressionStatement",
"src": "10195:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4925,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4922,
"name": "fixedRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4895,
"src": "10235:9:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4923,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10247:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4924,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "fixedRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 4420,
"src": "10247:18:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10235:30:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4926,
"nodeType": "ExpressionStatement",
"src": "10235:30:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4927,
"name": "active",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4897,
"src": "10275:6:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4928,
"name": "exchange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4902,
"src": "10284:8:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_memory_ptr",
"typeString": "struct FixedRateExchange.Exchange memory"
}
},
"id": 4929,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "10284:15:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "10275:24:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 4931,
"nodeType": "ExpressionStatement",
"src": "10275:24:9"
},
{
"expression": {
"argumentTypes": null,
"id": 4936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 4932,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4899,
"src": "10309:6:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4934,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4886,
"src": "10328:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 4933,
"name": "getSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4884,
"src": "10318:9:9",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) view returns (uint256)"
}
},
"id": 4935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10318:21:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10309:30:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4937,
"nodeType": "ExpressionStatement",
"src": "10309:30:9"
}
]
},
"documentation": "@dev getExchange\n gets all the exchange details\n@param exchangeId a unique exchange idnetifier\n@return all the exchange details including the exchange Owner\n the dataToken contract address, the base token address, the \n fixed rate, whether the exchange is active and the supply or the \n the current data token liquidity.",
"id": 4939,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getExchange",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4887,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4886,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9772:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4885,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9772:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9762:34:9"
},
"returnParameters": {
"id": 4900,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4889,
"name": "exchangeOwner",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9857:21:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4888,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9857:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4891,
"name": "dataToken",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9892:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4890,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9892:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4893,
"name": "baseToken",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9923:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4892,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9923:7:9",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4895,
"name": "fixedRate",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9954:17:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4894,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9954:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4897,
"name": "active",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "9985:11:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4896,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9985:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4899,
"name": "supply",
"nodeType": "VariableDeclaration",
"scope": 4939,
"src": "10010:14:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4898,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10010:7:9",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9843:191:9"
},
"scope": 4962,
"src": "9742:604:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4947,
"nodeType": "Block",
"src": "10581:35:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4945,
"name": "exchangeIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4428,
"src": "10598:11:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
"typeString": "bytes32[] storage ref"
}
},
"functionReturnParameters": 4944,
"id": 4946,
"nodeType": "Return",
"src": "10591:18:9"
}
]
},
"documentation": "@dev getExchanges\n gets all the exchanges list\n@return a list of all registered exchange Ids",
"id": 4948,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getExchanges",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4940,
"nodeType": "ParameterList",
"parameters": [],
"src": "10507:2:9"
},
"returnParameters": {
"id": 4944,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4943,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4948,
"src": "10559:16:9",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[]"
},
"typeName": {
"baseType": {
"id": 4941,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "10559:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 4942,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10559:9:9",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10558:18:9"
},
"scope": 4962,
"src": "10486:130:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 4960,
"nodeType": "Block",
"src": "10933:52:9",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 4955,
"name": "exchanges",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4425,
"src": "10950:9:9",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Exchange_$4421_storage_$",
"typeString": "mapping(bytes32 => struct FixedRateExchange.Exchange storage ref)"
}
},
"id": 4957,
"indexExpression": {
"argumentTypes": null,
"id": 4956,
"name": "exchangeId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4950,
"src": "10960:10:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10950:21:9",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Exchange_$4421_storage",
"typeString": "struct FixedRateExchange.Exchange storage ref"
}
},
"id": 4958,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "active",
"nodeType": "MemberAccess",
"referencedDeclaration": 4412,
"src": "10950:28:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 4954,
"id": 4959,
"nodeType": "Return",
"src": "10943:35:9"
}
]
},
"documentation": "@dev isActive\n checks whether exchange is active\n@param exchangeId a unique exchange idnetifier\n@return true if exchange is true, otherwise returns false",
"id": 4961,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isActive",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4951,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4950,
"name": "exchangeId",
"nodeType": "VariableDeclaration",
"scope": 4961,
"src": "10851:18:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4949,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "10851:7:9",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10841:34:9"
},
"returnParameters": {
"id": 4954,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4953,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 4961,
"src": "10923:4:9",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 4952,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "10923:4:9",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10922:6:9"
},
"scope": 4962,
"src": "10824:161:9",
"stateMutability": "view",
"superFunction": null,
"visibility": "external"
}
],
"scope": 4963,
"src": "530:10457:9"
}
],
"src": "0:10988:9"
},
"compiler": {
"name": "solc",
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.4",
"updatedAt": "2021-02-18T06:54:49.611Z",
"devdoc": {
"details": "FixedRateExchange is a fixed rate exchange Contract Marketplaces uses this contract to allow consumers exchanging datatokens with ocean token using a fixed exchange rate.",
"methods": {
"CalcInGivenOut(bytes32,uint256)": {
"details": "CalcInGivenOut Calculates how many basetokens are needed to get specifyed amount of datatokens",
"params": {
"dataTokenAmount": "the amount of data tokens to be exchanged",
"exchangeId": "a unique exchange idnetifier "
}
},
"create(address,address,uint256)": {
"details": "create creates new exchange pairs between base token (ocean token) and data tokens.",
"params": {
"baseToken": "refers to a ocean token contract address",
"dataToken": "refers to a data token contract address",
"fixedRate": "refers to the exact fixed exchange rate in wei"
}
},
"generateExchangeId(address,address,address)": {
"details": "generateExchangeId creates unique exchange identifier for two token pairs.",
"params": {
"baseToken": "refers to a ocean token contract address",
"dataToken": "refers to a data token contract address",
"exchangeOwner": "exchange owner address"
}
},
"getExchange(bytes32)": {
"details": "getExchange gets all the exchange details",
"params": {
"exchangeId": "a unique exchange idnetifier"
},
"return": "all the exchange details including the exchange Owner the dataToken contract address, the base token address, the fixed rate, whether the exchange is active and the supply or the the current data token liquidity."
},
"getExchanges()": {
"details": "getExchanges gets all the exchanges list",
"return": "a list of all registered exchange Ids"
},
"getNumberOfExchanges()": {
"details": "getNumberOfExchanges gets the total number of registered exchanges",
"return": "total number of registered exchange IDs"
},
"getRate(bytes32)": {
"details": "getRate gets the current fixed rate for an exchange",
"params": {
"exchangeId": "a unique exchange idnetifier"
},
"return": "fixed rate value"
},
"getSupply(bytes32)": {
"details": "getSupply gets the current supply of datatokens in an fixed rate exchagne",
"params": {
"exchangeId": "the exchange ID"
},
"return": "supply"
},
"isActive(bytes32)": {
"details": "isActive checks whether exchange is active",
"params": {
"exchangeId": "a unique exchange idnetifier"
},
"return": "true if exchange is true, otherwise returns false"
},
"setRate(bytes32,uint256)": {
"details": "setRate changes the fixed rate for an exchange with a new rate",
"params": {
"exchangeId": "a unique exchange idnetifier",
"newRate": "new fixed rate value"
}
},
"swap(bytes32,uint256)": {
"details": "swap atomic swap between two registered fixed rate exchange.",
"params": {
"dataTokenAmount": "the amount of data tokens to be exchanged",
"exchangeId": "a unique exchange idnetifier "
}
},
"toggleExchangeState(bytes32)": {
"details": "toggleExchangeState toggles the active state of an existing exchange",
"params": {
"exchangeId": "a unique exchange idnetifier"
}
}
},
"title": "FixedRateExchange"
},
"userdoc": {
"methods": {}
}
}