blackbull-sdk
Version:
An SDK for building applications on top of Blackbullswap
410 lines (409 loc) • 25.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "FixedPointTest",
"sourceName": "contracts/pangolin-lib/test/FixedPointTest.sol",
"abi": [
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
}
],
"name": "decode",
"outputs": [
{
"internalType": "uint112",
"name": "",
"type": "uint112"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"internalType": "struct FixedPoint.uq144x112",
"name": "self",
"type": "tuple"
}
],
"name": "decode144",
"outputs": [
{
"internalType": "uint144",
"name": "",
"type": "uint144"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "other",
"type": "tuple"
}
],
"name": "divuq",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint112",
"name": "x",
"type": "uint112"
}
],
"name": "encode",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint144",
"name": "x",
"type": "uint144"
}
],
"name": "encode144",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"internalType": "struct FixedPoint.uq144x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint112",
"name": "numerator",
"type": "uint112"
},
{
"internalType": "uint112",
"name": "denominator",
"type": "uint112"
}
],
"name": "fraction",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "other",
"type": "tuple"
}
],
"name": "getGasCostOfDivuq",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "mul",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"internalType": "struct FixedPoint.uq144x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
},
{
"internalType": "int256",
"name": "y",
"type": "int256"
}
],
"name": "muli",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "other",
"type": "tuple"
}
],
"name": "muluq",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
}
],
"name": "reciprocal",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "self",
"type": "tuple"
}
],
"name": "sqrt",
"outputs": [
{
"components": [
{
"internalType": "uint224",
"name": "_x",
"type": "uint224"
}
],
"internalType": "struct FixedPoint.uq112x112",
"name": "",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50610fc4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638925845111610081578063ca2d02991161005b578063ca2d0299146101ce578063ca74fcc0146101e1578063d993d379146101f4576100d4565b8063892584511461017b578063af35b7691461019b578063c814e314146101bb576100d4565b80634fd04a40116100b25780634fd04a40146101285780635a606689146101485780635f9f4c3b1461015b576100d4565b806331f92b13146100d95780633f1626c8146101025780634de4cf9214610115575b600080fd5b6100ec6100e7366004610d6e565b610207565b6040516100f99190610f09565b60405180910390f35b6100ec610110366004610d6e565b61022e565b6100ec610123366004610e9e565b61024d565b61013b610136366004610d6e565b610268565b6040516100f99190610f26565b6100ec610156366004610db3565b610281565b61016e610169366004610d6e565b6102af565b6040516100f99190610f41565b61018e610189366004610d89565b6102c8565b6040516100f99190610f00565b6101ae6101a9366004610de7565b6102e2565b6040516100f99190610f1c565b6101ae6101c9366004610ec7565b610302565b6100ec6101dc366004610e84565b610313565b6100ec6101ef366004610db3565b610324565b61018e610202366004610db3565b610352565b61020f610d14565b61022661022136849003840184610df9565b610384565b90505b919050565b610236610d14565b61022661024836849003840184610df9565b61042a565b610255610d14565b61025f8383610524565b90505b92915050565b600061022661027c36849003840184610df9565b6105ed565b610289610d14565b61025f61029b36859003850185610df9565b6102aa36859003850185610df9565b610604565b60006102266102c336849003840184610e49565b6107b1565b600061025f6102dc36859003850185610df9565b836107b8565b6102ea610d26565b61025f6102fc36859003850185610df9565b8361087a565b61030a610d26565b6102268261090e565b61031b610d14565b6102268261093e565b61032c610d14565b61025f61033e36859003850185610df9565b61034d36859003850185610df9565b61097b565b6000805a905061037961036a36869003860186610df9565b61034d36869003860186610df9565b505a90039392505050565b61038c610d14565b600182600001516001600160e01b0316116103d85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f61602e913960400191505060405180910390fd5b604051806020016040528083600001516001600160e01b03167c01000000000000000000000000000000000000000000000000000000008161041657fe5b046001600160e01b03168152509050919050565b610432610d14565b815171ffffffffffffffffffffffffffffffffffff6001600160e01b039091161161048e57604051806020016040528061047c607085600001516001600160e01b0316901b610b86565b6001600160e01b031690529050610229565b60205b60708160ff1610156104d5578251600161ffff60011960ff85166101000301161b6001600160e01b0390911610156104cb576002016104d0565b6104d5565b610491565b604051806020016040528060028360700360ff16816104f057fe5b0460ff166105108460ff1687600001516001600160e01b0316901b610b86565b901b6001600160e01b031690529392505050565b61052c610d14565b6000826dffffffffffffffffffffffffffff1611610591576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204449565f42595f5a45524f5f4652414354494f4e604482015290519081900360640190fd5b6040805160208101909152806dffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b16816105d857fe5b046001600160e01b0316815250905092915050565b5160701c6dffffffffffffffffffffffffffff1690565b61060c610d14565b82516001600160e01b0316158061062b575081516001600160e01b0316155b156106455750604080516020810190915260008152610262565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702906001600160e01b03851611156106db576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f5550504552604482015290519081900360640190fd5b6000607060ff16846001600160e01b0316901c6001600160e01b0316826001600160e01b0316846001600160e01b0316607060ff16886001600160e01b0316901b6001600160e01b031601010190506000196001600160e01b031681111561078a576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f53554d0000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529b9a5050505050505050505050565b5160701c90565b6000806107e984600001516001600160e01b0316600085126107da57846107df565b846000035b600160701b610bd7565b90507f8000000000000000000000000000000000000000000000000000000000000000811061085f576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a204d554c495f4f564552464c4f5700000000000000604482015290519081900360640190fd5b6000831261086d5780610872565b806000035b949350505050565b610882610d26565b60008215806108a857505082516001600160e01b0316828102908382816108a557fe5b04145b6108f9576040805162461bcd60e51b815260206004820152601860248201527f4669786564506f696e743a204d554c5f4f564552464c4f570000000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b610916610d26565b50604080516020810190915260709190911b6dffffffffffffffffffffffffffff1916815290565b610946610d14565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610983610d14565b81516001600160e01b03166109df576040805162461bcd60e51b815260206004820152601d60248201527f4669786564506f696e743a204449565f42595f5a45524f5f4449565551000000604482015290519081900360640190fd5b815183516001600160e01b0390811691161415610a0e57506040805160208101909152600160701b8152610262565b825171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610ade57815183516000916001600160e01b03169060701b6dffffffffffffffffffffffffffff191681610a5f57fe5b0490506001600160e01b03811115610abe576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610262565b6000610b09600160701b85600001516001600160e01b031685600001516001600160e01b0316610bd7565b90506001600160e01b03811115610b67576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529392505050565b60006003821115610bc9575080600160028204015b81811015610bc357809150600281828581610bb257fe5b040181610bbb57fe5b049050610b9b565b50610229565b811561022957506001919050565b6000806000610be68686610c77565b9150915060008480610bf457fe5b868809905082811115610c08576001820391505b8083039250848210610c61576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c6c838387610ca4565b979650505050505050565b6000808060001984860990508385029250828103915082811015610c9c576001820391505b509250929050565b60008181038216808381610cb457fe5b049250808581610cc057fe5b049450808160000381610ccf57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215610d4a578081fd5b50919050565b80356dffffffffffffffffffffffffffff8116811461022957600080fd5b600060208284031215610d7f578081fd5b61025f8383610d39565b60008060408385031215610d9b578081fd5b610da58484610d39565b946020939093013593505050565b60008060408385031215610dc5578182fd5b610dcf8484610d39565b9150610dde8460208501610d39565b90509250929050565b60008060408385031215610d9b578182fd5b600060208284031215610e0a578081fd5b6040516020810181811067ffffffffffffffff82111715610e2757fe5b60405282356001600160e01b0381168114610e40578283fd5b81529392505050565b600060208284031215610e5a578081fd5b6040516020810181811067ffffffffffffffff82111715610e7757fe5b6040529135825250919050565b600060208284031215610e95578081fd5b61025f82610d50565b60008060408385031215610eb0578182fd5b610eb983610d50565b9150610dde60208401610d50565b600060208284031215610ed8578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610ef9578182fd5b9392505050565b90815260200190565b90516001600160e01b0316815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff9190911681526020019056fe4669786564506f696e743a204449565f42595f5a45524f5f5245434950524f43414c5f4f525f4f564552464c4f57a26469706673582212205dd0dced6a7bd9399a3cfa22b075dcaaf2c19fef1b6f9fb6c5c5e9212e11838164736f6c63430007060033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638925845111610081578063ca2d02991161005b578063ca2d0299146101ce578063ca74fcc0146101e1578063d993d379146101f4576100d4565b8063892584511461017b578063af35b7691461019b578063c814e314146101bb576100d4565b80634fd04a40116100b25780634fd04a40146101285780635a606689146101485780635f9f4c3b1461015b576100d4565b806331f92b13146100d95780633f1626c8146101025780634de4cf9214610115575b600080fd5b6100ec6100e7366004610d6e565b610207565b6040516100f99190610f09565b60405180910390f35b6100ec610110366004610d6e565b61022e565b6100ec610123366004610e9e565b61024d565b61013b610136366004610d6e565b610268565b6040516100f99190610f26565b6100ec610156366004610db3565b610281565b61016e610169366004610d6e565b6102af565b6040516100f99190610f41565b61018e610189366004610d89565b6102c8565b6040516100f99190610f00565b6101ae6101a9366004610de7565b6102e2565b6040516100f99190610f1c565b6101ae6101c9366004610ec7565b610302565b6100ec6101dc366004610e84565b610313565b6100ec6101ef366004610db3565b610324565b61018e610202366004610db3565b610352565b61020f610d14565b61022661022136849003840184610df9565b610384565b90505b919050565b610236610d14565b61022661024836849003840184610df9565b61042a565b610255610d14565b61025f8383610524565b90505b92915050565b600061022661027c36849003840184610df9565b6105ed565b610289610d14565b61025f61029b36859003850185610df9565b6102aa36859003850185610df9565b610604565b60006102266102c336849003840184610e49565b6107b1565b600061025f6102dc36859003850185610df9565b836107b8565b6102ea610d26565b61025f6102fc36859003850185610df9565b8361087a565b61030a610d26565b6102268261090e565b61031b610d14565b6102268261093e565b61032c610d14565b61025f61033e36859003850185610df9565b61034d36859003850185610df9565b61097b565b6000805a905061037961036a36869003860186610df9565b61034d36869003860186610df9565b505a90039392505050565b61038c610d14565b600182600001516001600160e01b0316116103d85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f61602e913960400191505060405180910390fd5b604051806020016040528083600001516001600160e01b03167c01000000000000000000000000000000000000000000000000000000008161041657fe5b046001600160e01b03168152509050919050565b610432610d14565b815171ffffffffffffffffffffffffffffffffffff6001600160e01b039091161161048e57604051806020016040528061047c607085600001516001600160e01b0316901b610b86565b6001600160e01b031690529050610229565b60205b60708160ff1610156104d5578251600161ffff60011960ff85166101000301161b6001600160e01b0390911610156104cb576002016104d0565b6104d5565b610491565b604051806020016040528060028360700360ff16816104f057fe5b0460ff166105108460ff1687600001516001600160e01b0316901b610b86565b901b6001600160e01b031690529392505050565b61052c610d14565b6000826dffffffffffffffffffffffffffff1611610591576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204449565f42595f5a45524f5f4652414354494f4e604482015290519081900360640190fd5b6040805160208101909152806dffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b16816105d857fe5b046001600160e01b0316815250905092915050565b5160701c6dffffffffffffffffffffffffffff1690565b61060c610d14565b82516001600160e01b0316158061062b575081516001600160e01b0316155b156106455750604080516020810190915260008152610262565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702906001600160e01b03851611156106db576040805162461bcd60e51b815260206004820181905260248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f5550504552604482015290519081900360640190fd5b6000607060ff16846001600160e01b0316901c6001600160e01b0316826001600160e01b0316846001600160e01b0316607060ff16886001600160e01b0316901b6001600160e01b031601010190506000196001600160e01b031681111561078a576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a204d554c55515f4f564552464c4f575f53554d0000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529b9a5050505050505050505050565b5160701c90565b6000806107e984600001516001600160e01b0316600085126107da57846107df565b846000035b600160701b610bd7565b90507f8000000000000000000000000000000000000000000000000000000000000000811061085f576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a204d554c495f4f564552464c4f5700000000000000604482015290519081900360640190fd5b6000831261086d5780610872565b806000035b949350505050565b610882610d26565b60008215806108a857505082516001600160e01b0316828102908382816108a557fe5b04145b6108f9576040805162461bcd60e51b815260206004820152601860248201527f4669786564506f696e743a204d554c5f4f564552464c4f570000000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b610916610d26565b50604080516020810190915260709190911b6dffffffffffffffffffffffffffff1916815290565b610946610d14565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610983610d14565b81516001600160e01b03166109df576040805162461bcd60e51b815260206004820152601d60248201527f4669786564506f696e743a204449565f42595f5a45524f5f4449565551000000604482015290519081900360640190fd5b815183516001600160e01b0390811691161415610a0e57506040805160208101909152600160701b8152610262565b825171ffffffffffffffffffffffffffffffffffff6001600160e01b0390911611610ade57815183516000916001600160e01b03169060701b6dffffffffffffffffffffffffffff191681610a5f57fe5b0490506001600160e01b03811115610abe576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610262565b6000610b09600160701b85600001516001600160e01b031685600001516001600160e01b0316610bd7565b90506001600160e01b03811115610b67576040805162461bcd60e51b815260206004820152601a60248201527f4669786564506f696e743a2044495655515f4f564552464c4f57000000000000604482015290519081900360640190fd5b60408051602081019091526001600160e01b0390911681529392505050565b60006003821115610bc9575080600160028204015b81811015610bc357809150600281828581610bb257fe5b040181610bbb57fe5b049050610b9b565b50610229565b811561022957506001919050565b6000806000610be68686610c77565b9150915060008480610bf457fe5b868809905082811115610c08576001820391505b8083039250848210610c61576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c6c838387610ca4565b979650505050505050565b6000808060001984860990508385029250828103915082811015610c9c576001820391505b509250929050565b60008181038216808381610cb457fe5b049250808581610cc057fe5b049450808160000381610ccf57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215610d4a578081fd5b50919050565b80356dffffffffffffffffffffffffffff8116811461022957600080fd5b600060208284031215610d7f578081fd5b61025f8383610d39565b60008060408385031215610d9b578081fd5b610da58484610d39565b946020939093013593505050565b60008060408385031215610dc5578182fd5b610dcf8484610d39565b9150610dde8460208501610d39565b90509250929050565b60008060408385031215610d9b578182fd5b600060208284031215610e0a578081fd5b6040516020810181811067ffffffffffffffff82111715610e2757fe5b60405282356001600160e01b0381168114610e40578283fd5b81529392505050565b600060208284031215610e5a578081fd5b6040516020810181811067ffffffffffffffff82111715610e7757fe5b6040529135825250919050565b600060208284031215610e95578081fd5b61025f82610d50565b60008060408385031215610eb0578182fd5b610eb983610d50565b9150610dde60208401610d50565b600060208284031215610ed8578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610ef9578182fd5b9392505050565b90815260200190565b90516001600160e01b0316815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff9190911681526020019056fe4669786564506f696e743a204449565f42595f5a45524f5f5245434950524f43414c5f4f525f4f564552464c4f57a26469706673582212205dd0dced6a7bd9399a3cfa22b075dcaaf2c19fef1b6f9fb6c5c5e9212e11838164736f6c63430007060033",
"linkReferences": {},
"deployedLinkReferences": {}
}