22 txs
23 calls
constructor
constructor()
functions
DIVISOR
viewfunction DIVISOR() view returns (uint256)
feePercentage
viewfunction feePercentage() view returns (uint256)
getActiveOrders
viewfunction getActiveOrders(address token, uint8 orderType) view returns (uint256[])
getOrder
viewfunction getOrder(uint256 orderId) view returns (tuple)
getRemainingAmount
viewfunction getRemainingAmount(uint256 orderId) view returns (uint256)
isOrderExpired
viewfunction isOrderExpired(uint256 orderId) view returns (bool)
MAX_FEE_PERCENTAGE
viewfunction MAX_FEE_PERCENTAGE() view returns (uint256)
orders
viewfunction orders(uint256) view returns (uint256 orderId, address owner, uint8 orderType, address token, uint256 amount, uint256 price, uint256 filledAmount, uint256 expirationTime, uint8 status)
owner
viewfunction owner() view returns (address)
totalFeesCollected
viewfunction totalFeesCollected() view returns (uint256)
whitelistedFulfillers
viewfunction whitelistedFulfillers(address) view returns (bool)
cancelOrder
nonpayablefunction cancelOrder(uint256 orderId)
cleanupExpiredOrder
nonpayablefunction cleanupExpiredOrder(uint256 orderId)
createOrder
payablefunction createOrder(uint8 orderType, address token, uint256 amount, uint256 price, uint256 ttl) payable returns (uint256)
fulfillMatchedOrders
nonpayablefunction fulfillMatchedOrders(tuple[] matches)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeePercentage
nonpayablefunction setFeePercentage(uint256 newFeePercentage)
setFulfillerStatus
nonpayablefunction setFulfillerStatus(address fulfiller, bool status)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawFees
nonpayablefunction withdrawFees(address recipient)
events
FeePercentageUpdated
event FeePercentageUpdated(uint256 oldFeePercentage, uint256 newFeePercentage)
FeesWithdrawn
event FeesWithdrawn(address indexed recipient, uint256 amount)
FulfillerWhitelisted
event FulfillerWhitelisted(address indexed fulfiller, bool status)
OrderCancelled
event OrderCancelled(uint256 indexed orderId)
OrderCreated
event OrderCreated(uint256 indexed orderId, address indexed owner, uint8 orderType, address token, uint256 amount, uint256 price, uint256 expirationTime)
OrderExpired
event OrderExpired(uint256 indexed orderId)
OrderFulfilled
event OrderFulfilled(uint256 indexed orderId, uint256 amount)
OrderPartiallyFulfilled
event OrderPartiallyFulfilled(uint256 indexed orderId, uint256 amount, uint256 remaining)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x6080604052348015600f57600080fd5b503380603557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b603c816065565b506001808055336000908152600760205260409020805460ff19169091179055603260035560b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61259d806100c46000396000f3fe6080604052600436106101175760003560e01c806360c6d8ae1161009a578063ae06c1b711610061578063ae06c1b714610368578063c452427e14610388578063d09ef241146103b8578063f2fde38b146103e5578063f6252ff21461040557005b806360c6d8ae1461026f578063715018a6146102855780638da5cb5b1461029a578063a001ecdd146102c2578063a85c38ef146102d857005b8063514fcac7116100de578063514fcac7146101bc578063552093c8146101dc578063558e44d314610209578063568c82061461021f57806359c693131461023f57005b8063164e68de146101205780632fd51adf146101405780633410fe6e14610160578063421303c5146101895780634223607a146101a957005b3661011e57005b005b34801561012c57600080fd5b5061011e61013b366004612086565b610425565b34801561014c57600080fd5b5061011e61015b3660046120b8565b6105a7565b34801561016c57600080fd5b5061017661271081565b6040519081526020015b60405180910390f35b34801561019557600080fd5b5061011e6101a43660046120f1565b61060e565b6101766101b736600461217c565b610713565b3480156101c857600080fd5b5061011e6101d73660046121cb565b610cc6565b3480156101e857600080fd5b506101fc6101f73660046121e4565b611075565b6040516101809190612219565b34801561021557600080fd5b506101766101f481565b34801561022b57600080fd5b5061011e61023a3660046121cb565b61126c565b34801561024b57600080fd5b5061025f61025a3660046121cb565b6114a8565b6040519015158152602001610180565b34801561027b57600080fd5b5061017660045481565b34801561029157600080fd5b5061011e6114fa565b3480156102a657600080fd5b506000546040516001600160a01b039091168152602001610180565b3480156102ce57600080fd5b5061017660035481565b3480156102e457600080fd5b506103536102f33660046121cb565b60056020819052600091825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b038086169760ff600160a01b90970487169795909116959394919390911689565b60405161018099989796959493929190612296565b34801561037457600080fd5b5061011e6103833660046121cb565b61150e565b34801561039457600080fd5b5061025f6103a3366004612086565b60076020526000908152604090205460ff1681565b3480156103c457600080fd5b506103d86103d33660046121cb565b6115ad565b60405161018091906122fc565b3480156103f157600080fd5b5061011e610400366004612086565b6116ce565b34801561041157600080fd5b506101766104203660046121cb565b611709565b61042d61176e565b6001600160a01b03811661047c5760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064015b60405180910390fd5b600454806104c25760405162461bcd60e51b81526020600482015260136024820152724e6f206665657320746f20776974686472617760681b6044820152606401610473565b600060048190556040516001600160a01b0384169083908381818185875af1925050503d8060008114610511576040519150601f19603f3d011682016040523d82523d6000602084013e610516565b606091505b505090508061055f5760405162461bcd60e51b8152602060048201526015602482015274119959481dda5d1a191c985dd85b0819985a5b1959605a1b6044820152606401610473565b826001600160a01b03167fc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a8360405161059a91815260200190565b60405180910390a2505050565b6105af61176e565b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f5b91a6535b81256fc66d813b8f8b5776b43f069bd85240fb8e65fae1767a79d7910160405180910390a25050565b61061661179b565b3360009081526007602052604090205460ff166106755760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f742077686974656c6973746564000000000000006044820152606401610473565b806106c25760405162461bcd60e51b815260206004820152601b60248201527f4e6f206f72646572206d61746368657320746f2066756c66696c6c00000000006044820152606401610473565b60005b81811015610705576106fd8383838181106106e2576106e2612381565b9050606002018036038101906106f891906123ad565b6117c5565b6001016106c5565b5061070f60018055565b5050565b600061071d61179b565b6001600160a01b0385166107635760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610473565b600084116107b35760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610473565b600083116107f95760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642070726963652072616e676560681b6044820152606401610473565b600082116108495760405162461bcd60e51b815260206004820152601a60248201527f54544c206d7573742062652067726561746572207468616e20300000000000006044820152606401610473565b6000670de0b6b3a764000061085e858761242f565b6108689190612446565b905060006127106003548361087d919061242f565b6108879190612446565b9050600088600181111561089d5761089d61225c565b03610910576108ac8183612468565b3410156108f35760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58da595b9d08115512081cd95b9d605a1b6044820152606401610473565b80600460008282546109059190612468565b909155506109cb9050565b6040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b038816906323b872dd906064016020604051808303816000875af1158015610963573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610987919061247b565b6109cb5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610473565b6002805490819060006109dd83612498565b9091555050604080516101208101825282815233602082015260009181018b6001811115610a0d57610a0d61225c565b81526020018a6001600160a01b03168152602001898152602001888152602001600081526020018742610a409190612468565b8152602001600090526000838152600560209081526040918290208351815590830151600180830180546001600160a01b039093166001600160a01b0319841681178255948601519596508695939490926001600160a81b0319161790600160a01b908490811115610ab457610ab461225c565b021790555060608201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816003015560a0820151816004015560c0820151816005015560e082015181600601556101008201518160070160006101000a81548160ff02191690836003811115610b3957610b3961225c565b02179055509050506000610b4d8a8c611f4b565b905060066000828152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055336001600160a01b0316837ff8999ab5e7ac3e22a5a6cd69428d0c1f9df77a3faef675c521f8829186b2c2fe8d8d8d8d8860e00151604051610bcf9594939291906124b1565b60405180910390a360008b6001811115610beb57610beb61225c565b148015610c005750610bfd8486612468565b34115b15610cad576000610c118587612468565b610c1b90346124eb565b604051909150600090339083908381818185875af1925050503d8060008114610c60576040519150601f19603f3d011682016040523d82523d6000602084013e610c65565b606091505b5050905080610caa5760405162461bcd60e51b8152602060048201526011602482015270115512081c995d1d5c9b8819985a5b1959607a1b6044820152606401610473565b50505b50909350505050610cbd60018055565b95945050505050565b610cce61179b565b60008181526005602052604090206001015481906001600160a01b0316610d075760405162461bcd60e51b8152600401610473906124fe565b60008281526005602052604090206001015482906001600160a01b03163314610d645760405162461bcd60e51b815260206004820152600f60248201526e2737ba1037b93232b91037bbb732b960891b6044820152606401610473565b600083815260056020526040812090600782015460ff166003811115610d8c57610d8c61225c565b14610dcc5760405162461bcd60e51b815260206004820152601060248201526f4f72646572206e6f742061637469766560801b6044820152606401610473565b610dd5846114a8565b15610e125760405162461bcd60e51b815260206004820152600d60248201526c13dc99195c88195e1c1a5c9959609a1b6044820152606401610473565b600781018054600260ff19909116179055600180820154600091600160a01b90910460ff1690811115610e4757610e4761225c565b03610f5c57600081600501548260030154610e6291906124eb565b90508015610f56576000670de0b6b3a7640000836004015483610e85919061242f565b610e8f9190612446565b9050600061271060035483610ea4919061242f565b610eae9190612446565b60018501549091506000906001600160a01b0316610ecc8385612468565b604051600081818185875af1925050503d8060008114610f08576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b606091505b5050905080610f525760405162461bcd60e51b8152602060048201526011602482015270115512081c99599d5b990819985a5b1959607a1b6044820152606401610473565b5050505b5061103b565b600081600501548260030154610f7291906124eb565b90508015611039576002820154600183015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015610fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff7919061247b565b6110395760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881c995d1d5c9b8819985a5b1959606a1b6044820152606401610473565b505b60405184907f61b9399f2f0f32ca39ce8d7be32caed5ec22fe07a6daba3a467ed479ec60658290600090a250505061107260018055565b50565b606060006110838484611f4b565b6000818152600660205260408120919250805b8254811015611134576000600560008584815481106110b7576110b7612381565b6000918252602080832090910154835282019290925260400190206007015460ff1660038111156110ea576110ea61225c565b148015611119575061111783828154811061110757611107612381565b90600052602060002001546114a8565b155b1561112c578161112881612498565b9250505b600101611096565b5060008167ffffffffffffffff81111561115057611150612397565b604051908082528060200260200182016040528015611179578160200160208202803683370190505b5090506000805b84548110801561118f57508382105b1561125d576000600560008784815481106111ac576111ac612381565b6000918252602080832090910154835282019290925260400190206007015460ff1660038111156111df576111df61225c565b1480156111fe57506111fc85828154811061110757611107612381565b155b1561124b5784818154811061121557611215612381565b906000526020600020015483838151811061123257611232612381565b60209081029190910101528161124781612498565b9250505b8061125581612498565b915050611180565b50909450505050505b92915050565b61127461179b565b60008181526005602052604090206001015481906001600160a01b03166112ad5760405162461bcd60e51b8152600401610473906124fe565b600082815260056020526040812090600782015460ff1660038111156112d5576112d561225c565b146113155760405162461bcd60e51b815260206004820152601060248201526f4f72646572206e6f742061637469766560801b6044820152606401610473565b61131e836114a8565b61135e5760405162461bcd60e51b815260206004820152601160248201527013dc99195c881b9bdd08195e1c1a5c9959607a1b6044820152606401610473565b60078101805460ff1916600317905560018082015460ff600160a01b909104168181111561138e5761138e61225c565b03611472576000816005015482600301546113a991906124eb565b90508015611470576002820154600183015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af115801561140a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142e919061247b565b6114705760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881c995d1d5c9b8819985a5b1959606a1b6044820152606401610473565b505b60405183907f1ad308dc7017610c82d08084545f7176df5e2f08f078c3c8f8926cd7e555551490600090a2505061107260018055565b60008181526005602052604081206001015482906001600160a01b03166114e15760405162461bcd60e51b8152600401610473906124fe565b5050600090815260056020526040902060060154421190565b61150261176e565b61150c6000611f7e565b565b61151661176e565b6101f48111156115685760405162461bcd60e51b815260206004820152601760248201527f4665652070657263656e7461676520746f6f20686967680000000000000000006044820152606401610473565b600380549082905560408051828152602081018490527fb27c12a91635e11c22bffa7bd8e0a8735da52b94aaefd7f249776c7590ba7894910160405180910390a15050565b6115b561200c565b60008281526005602052604090206001015482906001600160a01b03166115ee5760405162461bcd60e51b8152600401610473906124fe565b600083815260056020908152604091829020825161012081018452815481526001808301546001600160a01b038116948301949094529093919291840191600160a01b900460ff16908111156116465761164661225c565b60018111156116575761165761225c565b815260028201546001600160a01b0316602082015260038083015460408301526004830154606083015260058301546080830152600683015460a0830152600783015460c09092019160ff16908111156116b3576116b361225c565b60038111156116c4576116c461225c565b9052509392505050565b6116d661176e565b6001600160a01b03811661170057604051631e4fbdf760e01b815260006004820152602401610473565b61107281611f7e565b60008181526005602052604081206001015482906001600160a01b03166117425760405162461bcd60e51b8152600401610473906124fe565b600083815260056020819052604090912090810154600382015461176691906124eb565b949350505050565b6000546001600160a01b0316331461150c5760405163118cdaa760e01b8152336004820152602401610473565b6002600154036117be57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b8051600090815260056020908152604080832091840151835282209091600783015460ff1660038111156117fb576117fb61225c565b14801561182057506000600782015460ff16600381111561181e5761181e61225c565b145b6118645760405162461bcd60e51b81526020600482015260156024820152744f7264657273206d7573742062652061637469766560581b6044820152606401610473565b825161186f906114a8565b158015611886575061188483602001516114a8565b155b6118c35760405162461bcd60e51b815260206004820152600e60248201526d13dc99195c9cc8195e1c1a5c995960921b6044820152606401610473565b6000600183810154600160a01b900460ff16908111156118e5576118e561225c565b148015611910575060018082810154600160a01b900460ff169081111561190e5761190e61225c565b145b6119525760405162461bcd60e51b8152602060048201526013602482015272496e76616c6964206f7264657220747970657360681b6044820152606401610473565b600280820154908301546001600160a01b039081169116146119a75760405162461bcd60e51b815260206004820152600e60248201526d0a8ded6cadc40dad2e6dac2e8c6d60931b6044820152606401610473565b8060040154826004015410156119f05760405162461bcd60e51b815260206004820152600e60248201526d0a0e4d2c6ca40dad2e6dac2e8c6d60931b6044820152606401610473565b600082600501548360030154611a0691906124eb565b9050600082600501548360030154611a1e91906124eb565b90506000856040015111611a6a5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a5908199a5b1b08185b5bdd5b9d606a1b6044820152606401610473565b81856040015111158015611a82575080856040015111155b611ace5760405162461bcd60e51b815260206004820152601d60248201527f46696c6c20616d6f756e74206578636565647320617661696c61626c650000006044820152606401610473565b60408501516004840154600090670de0b6b3a764000090611aef908461242f565b611af99190612446565b90506000611b0682611fce565b90506000611b1482846124eb565b60018801546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114611b68576040519150601f19603f3d011682016040523d82523d6000602084013e611b6d565b606091505b5050905080611bbe5760405162461bcd60e51b815260206004820152601d60248201527f455448207472616e7366657220746f2073656c6c6572206661696c65640000006044820152606401610473565b600288015460018a015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810188905291169063a9059cbb906044016020604051808303816000875af1158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061247b565b611c7f5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610473565b8960400151896005016000828254611c979190612468565b909155505060408a0151600589018054600090611cb5908490612468565b9091555050600480890154908a01541115611dd3576000670de0b6b3a764000089600401548b60040154611ce991906124eb565b8c60400151611cf8919061242f565b611d029190612446565b9050600061271060035483611d17919061242f565b611d219190612446565b60018c01549091506001600160a01b0316611d3c8284612468565b604051600081818185875af1925050503d8060008114611d78576040519150601f19603f3d011682016040523d82523d6000602084013e611d7d565b606091505b50508093505082611dd05760405162461bcd60e51b815260206004820152601960248201527f45544820736176696e67732072657475726e206661696c6564000000000000006044820152606401610473565b50505b8860030154896005015403611e305760078901805460ff1916600117905589516040808c015190519081527feb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e98809060200160405180910390a2611e86565b895160408b015160058b015460038c01547f8f9f7f58643161141dd2b5b862b54ab647f74549d3b06fd4430272bcc411678c9291611e6d916124eb565b6040805192835260208301919091520160405180910390a25b8760030154886005015403611ee75760078801805460ff191660011790556020808b01516040808d0151905190815290917feb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e9880910160405180910390a2611f3f565b89602001517f8f9f7f58643161141dd2b5b862b54ab647f74549d3b06fd4430272bcc411678c8b604001518a600501548b60030154611f2691906124eb565b6040805192835260208301919091520160405180910390a25b50505050505050505050565b60008282604051602001611f6092919061252c565b60405160208183030381529060405280519060200120905092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061271060035484611fe2919061242f565b611fec9190612446565b905080600460008282546120009190612468565b90915550909392505050565b60408051610120810182526000808252602082018190529091820190815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000600381111561206c5761206c61225c565b905290565b6001600160a01b038116811461107257600080fd5b60006020828403121561209857600080fd5b81356120a381612071565b9392505050565b801515811461107257600080fd5b600080604083850312156120cb57600080fd5b82356120d681612071565b915060208301356120e6816120aa565b809150509250929050565b6000806020838503121561210457600080fd5b823567ffffffffffffffff81111561211b57600080fd5b8301601f8101851361212c57600080fd5b803567ffffffffffffffff81111561214357600080fd5b85602060608302840101111561215857600080fd5b6020919091019590945092505050565b80356002811061217757600080fd5b919050565b600080600080600060a0868803121561219457600080fd5b61219d86612168565b945060208601356121ad81612071565b94979496505050506040830135926060810135926080909101359150565b6000602082840312156121dd57600080fd5b5035919050565b600080604083850312156121f757600080fd5b823561220281612071565b915061221060208401612168565b90509250929050565b602080825282518282018190526000918401906040840190835b81811015612251578351835260209384019390920191600101612233565b509095945050505050565b634e487b7160e01b600052602160045260246000fd5b600281106122825761228261225c565b9052565b600481106122825761228261225c565b8981526001600160a01b038916602082015261012081016122ba604083018a612272565b60018060a01b03881660608301528660808301528560a08301528460c08301528360e08301526122ee610100830184612286565b9a9950505050505050505050565b815181526020808301516001600160a01b03169082015260408083015161012083019161232b90840182612272565b5060018060a01b0360608401511660608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010083015161237a610100840182612286565b5092915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060608284031280156123c057600080fd5b600090506040516060810181811067ffffffffffffffff821117156123f357634e487b7160e01b83526041600452602483fd5b604090815284358252602080860135908301529384013593810193909352509092915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761126657611266612419565b60008261246357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561126657611266612419565b60006020828403121561248d57600080fd5b81516120a3816120aa565b6000600182016124aa576124aa612419565b5060010190565b60a081016124bf8288612272565b6001600160a01b0395909516602082015260408101939093526060830191909152608090910152919050565b8181038181111561126657611266612419565b60208082526014908201527313dc99195c88191bd95cc81b9bdd08195e1a5cdd60621b604082015260600190565b6bffffffffffffffffffffffff198360601b1681526000600283106125535761255361225c565b5060f89190911b601482015260150191905056fea26469706673582212204c875fe33a03e28243f8ed0f5d463554038d49eed3617e6c76552bbe9e84c0a164736f6c634300081a0033