1 tx
741 calls
constructor
constructor(address _mechMarketplace, address _drainer, address _token)
functions
collectedFees
viewfunction collectedFees() view returns (uint256)
deposit
purefunction deposit(uint256 amount) pure
depositFor
purefunction depositFor(address, uint256 amount) pure
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)
owner
viewfunction owner() view returns (address)
subscriptionNFT
viewfunction subscriptionNFT() view returns (address)
subscriptionTokenId
viewfunction subscriptionTokenId() view returns (uint256)
token
viewfunction token() view returns (address)
tokenCreditRatio
viewfunction tokenCreditRatio() view returns (uint256)
adjustMechRequesterBalances
nonpayablefunction adjustMechRequesterBalances(address mech, address requester, uint256[] mechDeliveryRates, bytes paymentData)
checkAndRecordDeliveryRates
payablefunction checkAndRecordDeliveryRates(address requester, uint256 numRequests, uint256 deliveryRate, bytes paymentData) payable
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)
setSubscription
nonpayablefunction setSubscription(address _subscriptionNFT, uint256 _subscriptionTokenId, uint256 _tokenCreditRatio)
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)
RequesterCreditsRedeemed
event RequesterCreditsRedeemed(address indexed account, uint256 amount)
SubscriptionSet
event SubscriptionSet(address indexed token, uint256 indexed tokenId)
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)
Overflow
error Overflow(uint256 provided, uint256 max)
OwnerOnly
error OwnerOnly(address sender, address owner)
ReentrancyGuard
error ReentrancyGuard()
UnauthorizedAccount
error UnauthorizedAccount(address account)
ZeroAddress
error ZeroAddress()
ZeroValue
error ZeroValue()
creation bytecode
0x60e060405260018055348015610013575f5ffd5b50604051611f18380380611f18833981016040819052610032916100e8565b82828282826001600160a01b038216158061005457506001600160a01b038116155b156100725760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03918216608052811660a05281166100a45760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b031660c0525050600780546001600160a01b0319163317905550610128915050565b80516001600160a01b03811681146100e3575f5ffd5b919050565b5f5f5f606084860312156100fa575f5ffd5b610103846100cd565b9250610111602085016100cd565b915061011f604085016100cd565b90509250925092565b60805160a05160c051611d6b6101ad5f395f81816104310152818161115e015281816115070152818161157401528181611803015261187001525f818161021a01526114d801525f81816103700152818161053f015281816105a7015281816108b60152818161091e01528181610bab01528181610c1301526117270152611d6b5ff3fe608060405260043610610162575f3560e01c8063878b1132116100c6578063af4937fc1161007c578063e679803511610057578063e6798035146103d6578063f965a87314610401578063fc0c546a14610420575f5ffd5b8063af4937fc14610392578063b6b55f25146103a7578063b901af8a146103c1575f5ffd5b80639003adfe116100ac5780639003adfe146103375780639890220b1461034b5780639c5e95901461035f575f5ffd5b8063878b1132146102f65780638da5cb5b1461030b575f5ffd5b806357838e851161011b5780636aeeffa8116101015780636aeeffa81461028057806379e4afe8146102ab57806385cf7244146102ca575f5ffd5b806357838e85146102095780636072dd2c14610261575f5ffd5b80632f4f21e21161014b5780632f4f21e2146101b657806338603a39146101d75780633a1395de146101ea575f5ffd5b8063163ad7151461016657806322081c121461018d575b5f5ffd5b348015610171575f5ffd5b5061017a600281565b6040519081526020015b60405180910390f35b348015610198575f5ffd5b506101a1610453565b60408051928352602083019190915201610184565b3480156101c1575f5ffd5b506101d56101d0366004611921565b6104ac565b005b6101d56101e536600461198e565b6104e6565b3480156101f5575f5ffd5b506101d56102043660046119f1565b6106d4565b348015610214575f5ffd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610184565b34801561026c575f5ffd5b506101d561027b366004611a62565b61085d565b34801561028b575f5ffd5b5061017a61029a366004611af2565b60026020525f908152604090205481565b3480156102b6575f5ffd5b506101d56102c5366004611b0b565b610b52565b3480156102d5575f5ffd5b5060045461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610301575f5ffd5b5061017a60055481565b348015610316575f5ffd5b5060075461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610342575f5ffd5b5061017a5f5481565b348015610356575f5ffd5b506101d5610ed5565b34801561036a575f5ffd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039d575f5ffd5b5061017a61271081565b3480156103b2575f5ffd5b506101d56101d0366004611beb565b3480156103cc575f5ffd5b5061017a60065481565b3480156103e1575f5ffd5b5061017a6103f0366004611af2565b60036020525f908152604090205481565b34801561040c575f5ffd5b506101a161041b366004611af2565b610f66565b34801561042b575f5ffd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f600154600203610491576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260015561049f33611084565b6001805590939092509050565b6040517f0f0fe74c000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b600154600203610522576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d4576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526044016104dd565b5f6105dd611223565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526002602052604081205491925090610611908390611c2f565b90505f61061e8787611c42565b905061066188838388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061126392505050565b73ffffffffffffffffffffffffffffffffffffffff89165f81815260026020908152604091829020849055815185815290810184905292945090917e572a5ba2b0e6be13dc09fac07a0c06782c5defdef8694b0085972ebdb12012910160405180910390a2505060018055505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610747576007546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016104dd565b73ffffffffffffffffffffffffffffffffffffffff8316610794576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158061079f575080155b156107d6576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600584905560068390556007805490911690556040518391907fb114dce0ae3b403c43fc24c911fcee78f120917c510db18042396f72cf6e7c82905f90a3505050565b600154600203610899576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461094b576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526044016104dd565b5f805b848110156109845785858281811061096857610968611c59565b905060200201358261097a9190611c2f565b915060010161094e565b50805f036109be576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050610a4087828487878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061126392505050565b73ffffffffffffffffffffffffffffffffffffffff8089165f908152600260209081526040808320859055928c168252600390522054909150610a838382611c2f565b73ffffffffffffffffffffffffffffffffffffffff8a81165f908152600360209081526040918290208490558151878152908101869052929350908a16917e572a5ba2b0e6be13dc09fac07a0c06782c5defdef8694b0085972ebdb12012910160405180910390a260408051848152602081018390525f81830152905173ffffffffffffffffffffffffffffffffffffffff8b16917fd11af879a940c7604caa3933cb8a021f09a06692f4d05a5843fe06a003abed68919081900360600190a250506001805550505050505050565b600154600203610b8e576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001553373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c40576040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526044016104dd565b5f80805b87811015610ded57888882818110610c5e57610c5e611c59565b9050602002016020810190610c739190611c96565b15610de557868682818110610c8a57610c8a611c59565b9050602002013583610c9c9190611c2f565b9250868682818110610cb057610cb0611c59565b90506020020135858583818110610cc957610cc9611c59565b905060200201351115610de5575f878783818110610ce957610ce9611c59565b90506020020135868684818110610d0257610d02611c59565b90506020020135610d139190611cb8565b9050610d1f8184611c2f565b92505f60025f8e8e86818110610d3757610d37611c59565b9050602002016020810190610d4c9190611af2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050610d928183611487565b60025f8f8f87818110610da757610da7611c59565b9050602002016020810190610dbc9190611af2565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205550505b600101610c44565b50815f03610e27576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8b165f90815260036020526040902054610e568382611c2f565b73ffffffffffffffffffffffffffffffffffffffff8d165f818152600360209081526040918290208490558151878152908101849052908101859052919250907fd11af879a940c7604caa3933cb8a021f09a06692f4d05a5843fe06a003abed689060600160405180910390a250506001805550505050505050505050565b600154600203610f11576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001555f805490819003610f53576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8055610f5f8161149b565b5060018055565b5f5f600154600203610fa4576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001556040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff841690636d70f7ae90602401602060405180830381865afa158015611011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110359190611ccb565b61106d576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016104dd565b61107683611084565b600180559094909350915050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526003602052604081205481908082036110e4576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000600654826110fb9190611c42565b6111059190611ce6565b73ffffffffffffffffffffffffffffffffffffffff8581165f90815260036020526040808220849055517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156111a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c99190611d1e565b90508082111561120f576040517f7ae5968500000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104dd565b611218856115e5565b935093505050915091565b5f341561125e576040517f0f0fe74c0000000000000000000000000000000000000000000000000000000081523460048201526024016104dd565b505f90565b600480546005546040517efdd58e0000000000000000000000000000000000000000000000000000000081525f93849373ffffffffffffffffffffffffffffffffffffffff169262fdd58e926112dd928b92910173ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602060405180830381865afa1580156112f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131c9190611d1e565b90505f6113298287611c2f565b90508481101561136f576040517fcf47918100000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016104dd565b84861115611388576113818587611cb8565b955061147c565b6113928686611cb8565b600480546005546040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116948201949094526024810191909152604481018490525f9950929750169063f5298aca906064015f604051808303815f87803b158015611415575f5ffd5b505af1158015611427573d5f5f3e3d5ffd5b505050508673ffffffffffffffffffffffffffffffffffffffff167f233634049b8efac027b540e625ee928314223b888a6c592965257899c7a0ee928660405161147391815260200190565b60405180910390a25b509395945050505050565b5f6114928284611c2f565b90505b92915050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561154d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190611ccb565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fb2559daa129ad136aac2133ac6a0c75920abbef7d6663a017a94e181b13786c3826040516115da91815260200190565b60405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526003602052604081205481906002811015611647576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611650611724565b9050612710611660600182611cb8565b61166a8385611c42565b6116749190611c2f565b61167e9190611ce6565b925061168a8383611cb8565b93505f81118015611699575082155b806116a2575083155b156116d9576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f5f8282546116e99190611c2f565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f9081526003602052604081205561171d85856117b7565b5050915091565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa15801561178e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b29190611d1e565b905090565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015611849573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186d9190611ccb565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516118ed91815260200190565b60405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461191c575f5ffd5b919050565b5f5f60408385031215611932575f5ffd5b61193b836118f9565b946020939093013593505050565b5f5f83601f840112611959575f5ffd5b50813567ffffffffffffffff811115611970575f5ffd5b602083019150836020828501011115611987575f5ffd5b9250929050565b5f5f5f5f5f608086880312156119a2575f5ffd5b6119ab866118f9565b94506020860135935060408601359250606086013567ffffffffffffffff8111156119d4575f5ffd5b6119e088828901611949565b969995985093965092949392505050565b5f5f5f60608486031215611a03575f5ffd5b611a0c846118f9565b95602085013595506040909401359392505050565b5f5f83601f840112611a31575f5ffd5b50813567ffffffffffffffff811115611a48575f5ffd5b6020830191508360208260051b8501011115611987575f5ffd5b5f5f5f5f5f5f60808789031215611a77575f5ffd5b611a80876118f9565b9550611a8e602088016118f9565b9450604087013567ffffffffffffffff811115611aa9575f5ffd5b611ab589828a01611a21565b909550935050606087013567ffffffffffffffff811115611ad4575f5ffd5b611ae089828a01611949565b979a9699509497509295939492505050565b5f60208284031215611b02575f5ffd5b611492826118f9565b5f5f5f5f5f5f5f5f5f60a08a8c031215611b23575f5ffd5b611b2c8a6118f9565b985060208a013567ffffffffffffffff811115611b47575f5ffd5b611b538c828d01611a21565b90995097505060408a013567ffffffffffffffff811115611b72575f5ffd5b611b7e8c828d01611a21565b90975095505060608a013567ffffffffffffffff811115611b9d575f5ffd5b611ba98c828d01611a21565b90955093505060808a013567ffffffffffffffff811115611bc8575f5ffd5b611bd48c828d01611a21565b915080935050809150509295985092959850929598565b5f60208284031215611bfb575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561149557611495611c02565b808202811582820484141761149557611495611c02565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114611c93575f5ffd5b50565b5f60208284031215611ca6575f5ffd5b8135611cb181611c86565b9392505050565b8181038181111561149557611495611c02565b5f60208284031215611cdb575f5ffd5b8151611cb181611c86565b5f82611d19577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215611d2e575f5ffd5b505191905056fea26469706673582212209579403785ab2f275a0e61af2b2c6d721e7f0b6529e40da995fc235bf864330664736f6c634300081c0033000000000000000000000000f24ee42eda0fc9b33b7d41b06ee8ccd2ef7c50200000000000000000000000003fd8c757de190bcc82cf69df3cd9ab15bcec1426000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913