0 txs
1 call
constructor
constructor(address _mechMarketplace, address _drainer, address _token)
functions
collectedFees
viewfunction collectedFees() view returns (uint256)
drainer
viewfunction drainer() view returns (address)
mapMechBalances
viewfunction mapMechBalances(address) view returns (uint256)
mapRequesterBalances
viewfunction mapRequesterBalances(address) view returns (uint256)
MAX_FEE_FACTOR
viewfunction MAX_FEE_FACTOR() view returns (uint256)
mechMarketplace
viewfunction mechMarketplace() view returns (address)
MIN_MECH_BALANCE
viewfunction MIN_MECH_BALANCE() view returns (uint256)
token
viewfunction token() view returns (address)
adjustMechRequesterBalances
nonpayablefunction adjustMechRequesterBalances(address mech, address requester, uint256[] mechDeliveryRates, bytes paymentData)
checkAndRecordDeliveryRates
payablefunction checkAndRecordDeliveryRates(address requester, uint256 numRequests, uint256 deliveryRate, bytes paymentData) payable
deposit
nonpayablefunction deposit(uint256 amount)
depositFor
nonpayablefunction depositFor(address account, uint256 amount)
drain
nonpayablefunction drain()
finalizeDeliveryRates
nonpayablefunction finalizeDeliveryRates(address mech, address[] requesters, bool[] deliveredRequests, uint256[] mechDeliveryRates, uint256[] requesterDeliveryRates)
processPayment
nonpayablefunction processPayment() returns (uint256 mechPayment, uint256 marketplaceFee)
processPaymentByMultisig
nonpayablefunction processPaymentByMultisig(address mech) returns (uint256 mechPayment, uint256 marketplaceFee)
events
Deposit
event Deposit(address indexed account, address indexed token, uint256 amount)
Drained
event Drained(address indexed token, uint256 collectedFees)
MechBalanceAdjusted
event MechBalanceAdjusted(address indexed mech, uint256 deliveryRate, uint256 balance, uint256 rateDiff)
RequesterBalanceAdjusted
event RequesterBalanceAdjusted(address indexed requester, uint256 deliveryRate, uint256 balance)
Withdraw
event Withdraw(address indexed account, address indexed token, uint256 amount)
errors
InsufficientBalance
error InsufficientBalance(uint256 current, uint256 required)
MarketplaceOnly
error MarketplaceOnly(address sender, address marketplace)
NoDepositAllowed
error NoDepositAllowed(uint256 amount)
ReentrancyGuard
error ReentrancyGuard()
UnauthorizedAccount
error UnauthorizedAccount(address account)
ZeroAddress
error ZeroAddress()
ZeroValue
error ZeroValue()
creation bytecode
0x60e060405260018055348015610013575f5ffd5b50604051611cdd380380611cdd833981016040819052610032916100d0565b82826001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03918216608052811660a05281166100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b031660c052506101109050565b80516001600160a01b03811681146100cb575f5ffd5b919050565b5f5f5f606084860312156100e2575f5ffd5b6100eb846100b5565b92506100f9602085016100b5565b9150610107604085016100b5565b90509250925092565b60805160a05160c051611b256101b85f395f8181610322015281816104110152818161049301528181610e7601528181610f130152818161130801528181611375015281816114c50152818161153201528181611603015261168d01525f818161018801526112d901525f818161027101528181610575015281816105dd01528181610768015281816107d001528181610a5d01528181610ac501526113e90152611b255ff3fe6080604052600436106100ef575f3560e01c80639003adfe11610087578063b6b55f2511610057578063b6b55f25146102a8578063e6798035146102c7578063f965a873146102f2578063fc0c546a14610311575f5ffd5b80639003adfe146102385780639890220b1461024c5780639c5e959014610260578063af4937fc14610293575f5ffd5b806357838e85116100c257806357838e85146101775780636072dd2c146101cf5780636aeeffa8146101ee57806379e4afe814610219575f5ffd5b8063163ad715146100f357806322081c121461011a5780632f4f21e21461014357806338603a3914610164575b5f5ffd5b3480156100fe575f5ffd5b50610107600281565b6040519081526020015b60405180910390f35b348015610125575f5ffd5b5061012e610344565b60408051928352602083019190915201610111565b34801561014e575f5ffd5b5061016261015d36600461170b565b61039d565b005b610162610172366004611778565b61051c565b348015610182575f5ffd5b506101aa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610111565b3480156101da575f5ffd5b506101626101e936600461181c565b61070f565b3480156101f9575f5ffd5b506101076102083660046118ac565b60026020525f908152604090205481565b348015610224575f5ffd5b506101626102333660046118c5565b610a04565b348015610243575f5ffd5b506101075f5481565b348015610257575f5ffd5b50610162610d87565b34801561026b575f5ffd5b506101aa7f000000000000000000000000000000000000000000000000000000000000000081565b34801561029e575f5ffd5b5061010761271081565b3480156102b3575f5ffd5b506101626102c23660046119a5565b610e18565b3480156102d2575f5ffd5b506101076102e13660046118ac565b60036020525f908152604090205481565b3480156102fd575f5ffd5b5061012e61030c3660046118ac565b610f66565b34801561031c575f5ffd5b506101aa7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f600154600203610382576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260015561039033611084565b6001805590939092509050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020526040812080548392906103d19084906119e9565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af115801561046c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104909190611a0c565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628360405161051091815260200190565b60405180910390a35050565b600154600203610558576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b5f6106186111c3565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600260205260408120549192509061064c9083906119e9565b90505f6106598787611a2e565b905061069c88838388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061120392505050565b73ffffffffffffffffffffffffffffffffffffffff89165f81815260026020908152604091829020849055815185815290810184905292945090917e572a5ba2b0e6be13dc09fac07a0c06782c5defdef8694b0085972ebdb12012910160405180910390a2505060018055505050505050565b60015460020361074b576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107fd576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152604401610606565b5f805b848110156108365785858281811061081a5761081a611a45565b905060200201358261082c91906119e9565b9150600101610800565b50805f03610870576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506108f287828487878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061120392505050565b73ffffffffffffffffffffffffffffffffffffffff8089165f908152600260209081526040808320859055928c16825260039052205490915061093583826119e9565b73ffffffffffffffffffffffffffffffffffffffff8a81165f908152600360209081526040918290208490558151878152908101869052929350908a16917e572a5ba2b0e6be13dc09fac07a0c06782c5defdef8694b0085972ebdb12012910160405180910390a260408051848152602081018390525f81830152905173ffffffffffffffffffffffffffffffffffffffff8b16917fd11af879a940c7604caa3933cb8a021f09a06692f4d05a5843fe06a003abed68919081900360600190a250506001805550505050505050565b600154600203610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610af2576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152604401610606565b5f80805b87811015610c9f57888882818110610b1057610b10611a45565b9050602002016020810190610b259190611a72565b15610c9757868682818110610b3c57610b3c611a45565b9050602002013583610b4e91906119e9565b9250868682818110610b6257610b62611a45565b90506020020135858583818110610b7b57610b7b611a45565b905060200201351115610c97575f878783818110610b9b57610b9b611a45565b90506020020135868684818110610bb457610bb4611a45565b90506020020135610bc59190611a8d565b9050610bd181846119e9565b92505f60025f8e8e86818110610be957610be9611a45565b9050602002016020810190610bfe91906118ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050610c448183611288565b60025f8f8f87818110610c5957610c59611a45565b9050602002016020810190610c6e91906118ac565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205550505b600101610af6565b50815f03610cd9576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8b165f90815260036020526040902054610d0883826119e9565b73ffffffffffffffffffffffffffffffffffffffff8d165f818152600360209081526040918290208490558151878152908101849052908101859052919250907fd11af879a940c7604caa3933cb8a021f09a06692f4d05a5843fe06a003abed689060600160405180910390a250506001805550505050505050505050565b600154600203610dc3576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001555f805490819003610e05576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8055610e118161129c565b5060018055565b335f9081526002602052604081208054839290610e369084906119e9565b90915550506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610ed1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef59190611a0c565b5060405181815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a350565b5f5f600154600203610fa4576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001556040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff841690636d70f7ae90602401602060405180830381865afa158015611011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110359190611a0c565b61106d576040517f32b2baa3000000000000000000000000000000000000000000000000000000008152336004820152602401610606565b61107683611084565b600180559094909350915050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040812054819060028110156110e6576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110ef6113e6565b90506127106110ff600182611a8d565b6111098385611a2e565b61111391906119e9565b61111d9190611aa0565b92506111298383611a8d565b93505f81118015611138575082155b80611141575083155b15611178576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f5f82825461118891906119e9565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120556111bc8585611479565b5050915091565b5f34156111fe576040517f0f0fe74c000000000000000000000000000000000000000000000000000000008152346004820152602401610606565b505f90565b5f82841015611275575f6112178585611a8d565b905061122386826115af565b61122d90866119e9565b945083851015611273576040517fcf4791810000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610606565b505b61127f8385611a8d565b95945050505050565b5f61129382846119e9565b90505b92915050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561134e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113729190611a0c565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fb2559daa129ad136aac2133ac6a0c75920abbef7d6663a017a94e181b13786c3826040516113db91815260200190565b60405180910390a250565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611450573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114749190611ad8565b905090565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561150b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f9190611a0c565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161051091815260200190565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152604482018390525f917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af115801561164b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f9190611a0c565b5060405182815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a350919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611706575f5ffd5b919050565b5f5f6040838503121561171c575f5ffd5b611725836116e3565b946020939093013593505050565b5f5f83601f840112611743575f5ffd5b50813567ffffffffffffffff81111561175a575f5ffd5b602083019150836020828501011115611771575f5ffd5b9250929050565b5f5f5f5f5f6080868803121561178c575f5ffd5b611795866116e3565b94506020860135935060408601359250606086013567ffffffffffffffff8111156117be575f5ffd5b6117ca88828901611733565b969995985093965092949392505050565b5f5f83601f8401126117eb575f5ffd5b50813567ffffffffffffffff811115611802575f5ffd5b6020830191508360208260051b8501011115611771575f5ffd5b5f5f5f5f5f5f60808789031215611831575f5ffd5b61183a876116e3565b9550611848602088016116e3565b9450604087013567ffffffffffffffff811115611863575f5ffd5b61186f89828a016117db565b909550935050606087013567ffffffffffffffff81111561188e575f5ffd5b61189a89828a01611733565b979a9699509497509295939492505050565b5f602082840312156118bc575f5ffd5b611293826116e3565b5f5f5f5f5f5f5f5f5f60a08a8c0312156118dd575f5ffd5b6118e68a6116e3565b985060208a013567ffffffffffffffff811115611901575f5ffd5b61190d8c828d016117db565b90995097505060408a013567ffffffffffffffff81111561192c575f5ffd5b6119388c828d016117db565b90975095505060608a013567ffffffffffffffff811115611957575f5ffd5b6119638c828d016117db565b90955093505060808a013567ffffffffffffffff811115611982575f5ffd5b61198e8c828d016117db565b915080935050809150509295985092959850929598565b5f602082840312156119b5575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611296576112966119bc565b8015158114611a09575f5ffd5b50565b5f60208284031215611a1c575f5ffd5b8151611a27816119fc565b9392505050565b8082028115828204841417611296576112966119bc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611a82575f5ffd5b8135611a27816119fc565b81810381811115611296576112966119bc565b5f82611ad3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215611ae8575f5ffd5b505191905056fea2646970667358221220b450c3a067ebabe1b92cb7d866a3fb17b28226d4a6b98811fca9d99ef74d959664736f6c634300081c0033000000000000000000000000f24ee42eda0fc9b33b7d41b06ee8ccd2ef7c50200000000000000000000000003fd8c757de190bcc82cf69df3cd9ab15bcec142600000000000000000000000054330d28ca3357f294334bdc454a032e7f353416