@gooddollar/goodcontracts
Version:
GoodDollar Contracts
2 lines (1 loc) • 17.2 kB
JSON
{"contractName":"BancorFormula","abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_reserveBalance","type":"uint256"},{"internalType":"uint32","name":"_reserveRatio","type":"uint32"},{"internalType":"uint256","name":"_depositAmount","type":"uint256"}],"name":"calculatePurchaseReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_reserveBalance","type":"uint256"},{"internalType":"uint32","name":"_reserveRatio","type":"uint32"},{"internalType":"uint256","name":"_sellAmount","type":"uint256"}],"name":"calculateSaleReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_fromReserveBalance","type":"uint256"},{"internalType":"uint32","name":"_fromReserveRatio","type":"uint32"},{"internalType":"uint256","name":"_toReserveBalance","type":"uint256"},{"internalType":"uint32","name":"_toReserveRatio","type":"uint32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateCrossReserveReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_reserveBalance","type":"uint256"},{"internalType":"uint32","name":"_totalRatio","type":"uint32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateFundCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_reserveBalance","type":"uint256"},{"internalType":"uint32","name":"_totalRatio","type":"uint32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateLiquidateReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_fromConnectorBalance","type":"uint256"},{"internalType":"uint32","name":"_fromConnectorWeight","type":"uint32"},{"internalType":"uint256","name":"_toConnectorBalance","type":"uint256"},{"internalType":"uint32","name":"_toConnectorWeight","type":"uint32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateCrossConnectorReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromConnectorBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_fromConnectorWeight\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_toConnectorBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_toConnectorWeight\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"calculateCrossConnectorReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromReserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_fromReserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_toReserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_toReserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"calculateCrossReserveReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_totalRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"calculateFundCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_totalRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"calculateLiquidateReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"calculateCrossConnectorReturn(uint256,uint32,uint256,uint32,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"calculateCrossReserveReturn(uint256,uint32,uint256,uint32,uint256)\":{\"details\":\"given two reserve balances/ratios and a sell amount (in the first reserve token), calculates the return for a conversion from the first reserve token to the second reserve token (in the second reserve token) note that prior to version 4, you should use 'calculateCrossConnectorReturn' instead * Formula: Return = _toReserveBalance * (1 - (_fromReserveBalance / (_fromReserveBalance + _amount)) ^ (_fromReserveRatio / _toReserveRatio))\",\"params\":{\"_amount\":\"input reserve amount\",\"_fromReserveBalance\":\"input reserve balance\",\"_fromReserveRatio\":\"input reserve ratio, represented in ppm, 1-1000000\",\"_toReserveBalance\":\"output reserve balance\",\"_toReserveRatio\":\"output reserve ratio, represented in ppm, 1-1000000\"},\"return\":\"second reserve amount\"},\"calculateFundCost(uint256,uint256,uint32,uint256)\":{\"details\":\"given a smart token supply, reserve balance, total ratio and an amount of requested smart tokens, calculates the amount of reserve tokens required for purchasing the given amount of smart tokens * Formula: Return = _reserveBalance * (((_supply + _amount) / _supply) ^ (MAX_RATIO / _totalRatio) - 1)\",\"params\":{\"_amount\":\"requested amount of smart tokens\",\"_reserveBalance\":\"reserve token balance\",\"_supply\":\"smart token supply\",\"_totalRatio\":\"total ratio, represented in ppm, 2-2000000\"},\"return\":\"amount of reserve tokens\"},\"calculateLiquidateReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a smart token supply, reserve balance, total ratio and an amount of smart tokens to liquidate, calculates the amount of reserve tokens received for selling the given amount of smart tokens * Formula: Return = _reserveBalance * (1 - ((_supply - _amount) / _supply) ^ (MAX_RATIO / _totalRatio))\",\"params\":{\"_amount\":\"amount of smart tokens to liquidate\",\"_reserveBalance\":\"reserve token balance\",\"_supply\":\"smart token supply\",\"_totalRatio\":\"total ratio, represented in ppm, 2-2000000\"},\"return\":\"amount of reserve tokens\"},\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a token supply, reserve balance, ratio and a deposit amount (in the reserve token), calculates the return for a given conversion (in the main token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / 1000000) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a token supply, reserve balance, ratio and a sell amount (in the main token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1000000 / _reserveRatio))\",\"params\":{\"_reserveBalance\":\"total reserve\",\"_reserveRatio\":\"constant reserve Ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the token itself\",\"_supply\":\"token total supply\"},\"return\":\"sale return amount\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/BancorFormula.sol\":\"BancorFormula\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/BancorFormula.sol\":{\"keccak256\":\"0xa8b83d6e46b4c2b5cf29c3572df676605ec37b8ef9b51ca6627ee225d9c51a77\",\"urls\":[\"bzz-raw://021c034dffe504492175527a436c00e898dfbf508ffb4e68f3e2a059f8934b61\",\"dweb:/ipfs/QmayhA4XBR7SYRQRRgngDcjRWUfJPmgMTbwskjZaEkznJ1\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]}},\"version\":1}","sourceMap":"85:36674:21:-;;;147:25;;;-1:-1:-1;;147:25:21;171:1;147:25;;;1278:8408;5:2:-1;;;;30:1;27;20:12;5:2;-1:-1;;;;;;3517:15:21;:54;-1:-1:-1;;;;;3581:15:21;:54;-1:-1:-1;;;;;3645:15:21;:54;-1:-1:-1;;;;;3709:15:21;:54;-1:-1:-1;;;;;3773:15:21;:54;-1:-1:-1;;;;;3837:15:21;:54;-1:-1:-1;;;;;3901:15:21;:54;-1:-1:-1;;;;;3965:15:21;:54;-1:-1:-1;;;;;4029:15:21;:54;-1:-1:-1;;;;;4093:15:21;:54;-1:-1:-1;;;;;4157:15:21;:54;-1:-1:-1;;;;;4221:15:21;:54;-1:-1:-1;;;;;4285:15:21;:54;-1:-1:-1;;;;;4349:15:21;:54;-1:-1:-1;;;;;4413:15:21;:54;-1:-1:-1;;;;;4477:15:21;:54;-1:-1:-1;;;;;4541:15:21;:54;-1:-1:-1;;;;;4605:15:21;:54;-1:-1:-1;;;;;4669:15:21;:54;-1:-1:-1;;;;;4733:15:21;:54;-1:-1:-1;;;;;4797:15:21;:54;-1:-1:-1;;;;;4861:15:21;:54;-1:-1:-1;;;;;4925:15:21;:54;-1:-1:-1;;;;;4989:15:21;:54;-1:-1:-1;;;;;5053:15:21;:54;-1:-1:-1;;;;;5117:15:21;:54;-1:-1:-1;;;;;5181:15:21;:54;-1:-1:-1;;;;;5245:15:21;:54;-1:-1:-1;;;;;5309:15:21;:54;-1:-1:-1;;;;;5373:15:21;:54;-1:-1:-1;;;;;5437:15:21;:54;-1:-1:-1;;;;;5501:15:21;:54;-1:-1:-1;;;;;5565:15:21;:54;-1:-1:-1;;;;;5629:15:21;:54;-1:-1:-1;;;;;5693:15:21;:54;-1:-1:-1;;;;;5757:15:21;:54;-1:-1:-1;;;;;5821:15:21;:54;-1:-1:-1;;;;;5885:15:21;:54;-1:-1:-1;;;;;5949:15:21;:54;-1:-1:-1;;;;;6013:15:21;:54;-1:-1:-1;;;;;6077:15:21;:54;-1:-1:-1;;;;;6141:15:21;:54;-1:-1:-1;;;;;6205:15:21;:54;-1:-1:-1;;;;;6269:15:21;:54;-1:-1:-1;;;;;6333:15:21;:54;6415:36;6397:15;:54;6479:36;6461:15;:54;6543:36;6525:15;:54;6607:36;6589:15;:54;6671:36;6653:15;:54;6735:36;6717:15;:54;6799:36;6781:15;:54;6863:36;6845:15;:54;6927:36;6909:15;:54;6991:36;6973:15;:54;7055:36;7037:15;:54;7119:36;7101:15;:54;7183:36;7165:15;:54;7247:36;7229:15;:54;7311:36;7293:15;:54;7375:36;7357:15;:54;7439:36;7421:15;:54;7503:36;7485:15;:54;-1:-1:-1;;;;;7549:15:21;:54;7631:36;7613:15;:54;7695:36;7677:15;:54;7759:36;7741:15;:54;7823:36;7805:15;:54;7888:36;7869:16;:55;7953:36;7934:16;:55;8018:36;7999:16;:55;8083:36;8064:16;:55;8148:36;8129:16;:55;8213:36;8194:16;:55;8278:36;8259:16;:55;8343:36;8324:16;:55;8408:36;8389:16;:55;8473:36;8454:16;:55;8538:36;8519:16;:55;8603:36;8584:16;:55;8668:36;8649:16;:55;8733:36;8714:16;:55;8798:36;8779:16;:55;8863:36;8844:16;:55;8928:36;8909:16;:55;8993:36;8974:16;:55;9058:36;9039:16;:55;9123:36;9104:16;:55;9188:36;9169:16;:55;9253:36;9234:16;:55;9318:36;9299:16;:55;9383:36;9364:16;:55;9448:36;9429:16;:55;9513:36;9494:16;:55;9578:36;9559:16;:55;9643:36;9624:16;:55;85:36674;;;-1:-1:-1;85:36674:21;;","compiler":{"name":"solc","version":"0.5.16+commit.9c3226ce.Emscripten.clang"},"networks":{},"schemaVersion":"3.2.2","updatedAt":"2021-08-23T07:33:52.218Z","devdoc":{"methods":{"calculateCrossConnectorReturn(uint256,uint32,uint256,uint32,uint256)":{"details":"deprecated, backward compatibility"},"calculateCrossReserveReturn(uint256,uint32,uint256,uint32,uint256)":{"details":"given two reserve balances/ratios and a sell amount (in the first reserve token), calculates the return for a conversion from the first reserve token to the second reserve token (in the second reserve token) note that prior to version 4, you should use 'calculateCrossConnectorReturn' instead * Formula: Return = _toReserveBalance * (1 - (_fromReserveBalance / (_fromReserveBalance + _amount)) ^ (_fromReserveRatio / _toReserveRatio))","params":{"_amount":"input reserve amount","_fromReserveBalance":"input reserve balance","_fromReserveRatio":"input reserve ratio, represented in ppm, 1-1000000","_toReserveBalance":"output reserve balance","_toReserveRatio":"output reserve ratio, represented in ppm, 1-1000000"},"return":"second reserve amount"},"calculateFundCost(uint256,uint256,uint32,uint256)":{"details":"given a smart token supply, reserve balance, total ratio and an amount of requested smart tokens, calculates the amount of reserve tokens required for purchasing the given amount of smart tokens * Formula: Return = _reserveBalance * (((_supply + _amount) / _supply) ^ (MAX_RATIO / _totalRatio) - 1)","params":{"_amount":"requested amount of smart tokens","_reserveBalance":"reserve token balance","_supply":"smart token supply","_totalRatio":"total ratio, represented in ppm, 2-2000000"},"return":"amount of reserve tokens"},"calculateLiquidateReturn(uint256,uint256,uint32,uint256)":{"details":"given a smart token supply, reserve balance, total ratio and an amount of smart tokens to liquidate, calculates the amount of reserve tokens received for selling the given amount of smart tokens * Formula: Return = _reserveBalance * (1 - ((_supply - _amount) / _supply) ^ (MAX_RATIO / _totalRatio))","params":{"_amount":"amount of smart tokens to liquidate","_reserveBalance":"reserve token balance","_supply":"smart token supply","_totalRatio":"total ratio, represented in ppm, 2-2000000"},"return":"amount of reserve tokens"},"calculatePurchaseReturn(uint256,uint256,uint32,uint256)":{"details":"given a token supply, reserve balance, ratio and a deposit amount (in the reserve token), calculates the return for a given conversion (in the main token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / 1000000) - 1)","params":{"_depositAmount":"deposit amount, in reserve token","_reserveBalance":"total reserve balance","_reserveRatio":"reserve ratio, represented in ppm, 1-1000000","_supply":"token total supply"},"return":"purchase return amount"},"calculateSaleReturn(uint256,uint256,uint32,uint256)":{"details":"given a token supply, reserve balance, ratio and a sell amount (in the main token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1000000 / _reserveRatio))","params":{"_reserveBalance":"total reserve","_reserveRatio":"constant reserve Ratio, represented in ppm, 1-1000000","_sellAmount":"sell amount, in the token itself","_supply":"token total supply"},"return":"sale return amount"}}}}