9 txs
61 calls
constructor
constructor(address _defaultAdmin)
functions
availableToWithdraw
viewfunction availableToWithdraw(address rwaToken, address tokenToWithdraw, bytes32 userID) view returns (uint256 totalAvailable)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositTokenRecipient
viewfunction depositTokenRecipient(address, address) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getUserWithdrawTokenSources
viewfunction getUserWithdrawTokenSources(address rwaToken, address _withdrawToken, bytes32 userId) view returns (address[] tokenSources)
getUserWithdrawTokenSourcesActive
viewfunction getUserWithdrawTokenSourcesActive(address rwaToken, address _withdrawToken, bytes32 userId) view returns (bool active)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
minimumTokenPrice
viewfunction minimumTokenPrice(address) view returns (uint256)
RWA_MANAGER_ROLE
viewfunction RWA_MANAGER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenToAggregatorV3Oracle
viewfunction tokenToAggregatorV3Oracle(address) view returns (address oracle, uint256 maxAggregatorV3OracleTimeDelay)
userWithdrawTokenSources
viewfunction userWithdrawTokenSources(address, address, bytes32) view returns (bool active)
withdrawTokenSources
viewfunction withdrawTokenSources(address, address, uint256) view returns (address)
depositToken
nonpayablefunction depositToken(address rwaToken, address tokenToDeposit, uint256 depositAmount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDepositTokenRecipient
nonpayablefunction setDepositTokenRecipient(address rwaToken, address _depositToken, address _depositTokenRecipient)
setMinimumTokenPriceAndOracle
nonpayablefunction setMinimumTokenPriceAndOracle(address token, uint256 _minimumTokenPrice, address aggregatorV3Oracle, uint256 maxAggregatorV3OracleTimeDelay)
setUserWithdrawTokenSources
nonpayablefunction setUserWithdrawTokenSources(address rwaToken, address _withdrawToken, bytes32 userID, bool active, address[] _withdrawTokenSources)
setWithdrawTokenSources
nonpayablefunction setWithdrawTokenSources(address rwaToken, address _withdrawToken, address[] _withdrawTokenSources)
withdrawToken
nonpayablefunction withdrawToken(address rwaTokenRedeemed, address tokenToWithdraw, bytes32 userID, uint256 withdrawAmount)
events
MinimumTokenPriceAndOracleSet
event MinimumTokenPriceAndOracleSet(address indexed tokenAddress, uint256 minimumPrice, address oracle, uint256 maxTimeDelay)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TokenDeposited
event TokenDeposited(address indexed rwaToken, address indexed depositToken, uint256 amount)
TokenDepositRecipientSet
event TokenDepositRecipientSet(address indexed rwaToken, address indexed depositToken, address oldTokenRecipient, address newTokenRecipient)
TokenWithdrawn
event TokenWithdrawn(address indexed rwaToken, address indexed withdrawToken, uint256 amount)
TokenWithdrawSourcesSet
event TokenWithdrawSourcesSet(address indexed rwaToken, address indexed withdrawToken, address[] oldTokenSources, address[] newTokenSources)
UserTokenWithdrawSourcesSet
event UserTokenWithdrawSourcesSet(address indexed rwaToken, address indexed withdrawToken, bytes32 indexed userID, bool active, address[] oldTokenSources, address[] newTokenSources)
errors
DepositTokenCantBeZero
error DepositTokenCantBeZero()
InconsistentMinimumTokenPriceParameters
error InconsistentMinimumTokenPriceParameters()
InsufficientWithdrawTokens
error InsufficientWithdrawTokens()
OraclePriceOutdated
error OraclePriceOutdated()
RwaTokenCantBeZero
error RwaTokenCantBeZero()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenAddressCantBeZero
error TokenAddressCantBeZero()
TokenPriceBelowMinimum
error TokenPriceBelowMinimum()
TokenRecipientNotSet
error TokenRecipientNotSet()
UserIDCantBeZero
error UserIDCantBeZero()
WithdrawTokenCantBeZero
error WithdrawTokenCantBeZero()
creation bytecode
0x60806040523480156200001157600080fd5b50604051620023e4380380620023e48339810160408190526200003491620001a3565b6001600255620000466000826200004d565b50620001d5565b6200006482826200009060201b62000f9f1760201c565b60008281526001602090815260409091206200008b9183906200102362000131821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200012d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000ec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000148836001600160a01b03841662000151565b90505b92915050565b60008181526001830160205260408120546200019a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200014b565b5060006200014b565b600060208284031215620001b657600080fd5b81516001600160a01b0381168114620001ce57600080fd5b9392505050565b6121ff80620001e56000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80639010d07c116100c3578063d17cbf331161007c578063d17cbf33146103a4578063d547741f146103b7578063e2783e75146103ca578063e3e595601461040d578063ec049e7114610420578063fb0f97a81461043357600080fd5b80639010d07c1461030f57806391d1485414610322578063a217fddf14610335578063bdc57b3a1461033d578063ca15c8731461035d578063d14430ea1461037057600080fd5b806336568abe1161011557806336568abe1461027c57806346caccfd1461028f5780635551a67c146102b65780636cde714a146102c95780637f5abbc4146102dc5780638014e045146102ef57600080fd5b806301ffc9a71461015d578063124b7f1a146101855780631af3b01c146101d15780632021065d14610223578063248a9ca3146102365780632f2ff15d14610267575b600080fd5b61017061016b366004611b13565b610446565b60405190151581526020015b60405180910390f35b6101b9610193366004611b55565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b6102046101df366004611b8e565b600760205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161017c565b6101b9610231366004611bab565b610471565b610259610244366004611bec565b60009081526020819052604090206001015490565b60405190815260200161017c565b61027a610275366004611c05565b6104b6565b005b61027a61028a366004611c05565b6104e1565b6102597f65a398e550a80727eb90edde4fee3bca9e01d8fcd7b95d28a6a9f638af684cb081565b61027a6102c4366004611cf2565b610564565b6102596102d7366004611bab565b6106c2565b61027a6102ea366004611d76565b6108bd565b6103026102fd366004611bab565b6109b4565b60405161017c9190611e1c565b6101b961031d366004611e2f565b610a43565b610170610330366004611c05565b610a62565b610259600081565b61025961034b366004611b8e565b60066020526000908152604090205481565b61025961036b366004611bec565b610a8b565b61017061037e366004611bab565b600560209081526000938452604080852082529284528284209052825290205460ff1681565b61027a6103b2366004611e51565b610aa2565b61027a6103c5366004611c05565b610ba2565b6101706103d8366004611bab565b6001600160a01b0392831660009081526005602090815260408083209490951682529283528381209181529152205460ff1690565b61027a61041b366004611e9c565b610bc8565b61027a61042e366004611ee2565b610cca565b61027a610441366004611bab565b610e00565b60006001600160e01b03198216635a05180f60e01b148061046b575061046b82611038565b92915050565b6004602052826000526040600020602052816000526040600020818154811061049957600080fd5b6000918252602090912001546001600160a01b0316925083915050565b6000828152602081905260409020600101546104d2813361106d565b6104dc83836110d1565b505050565b6001600160a01b03811633146105565760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61056082826110f3565b5050565b6000610570813361106d565b6001600160a01b03861661059757604051630a47df7360e41b815260040160405180910390fd5b6001600160a01b0385166105be576040516364e4621360e01b815260040160405180910390fd5b836105dc576040516310bb42ab60e01b815260040160405180910390fd5b6001600160a01b038681166000818152600560209081526040808320948a16808452948252808320898452909152908190209051879392917fed634a03040f3e92b7a237932c9629b09038bb185672ce91df9d6a94bdb31af7916106499189916001909101908990611f68565b60405180910390a4604080518082018252841515815260208082018581526001600160a01b038a8116600090815260058452858120918b1681529083528481208982528352939093208251815460ff1916901515178155925180519293926106b79260018501920190611a99565b505050505050505050565b6001600160a01b038084166000908152600560209081526040808320938616835292815282822084835290529081205460609060ff1615610788576001600160a01b03808616600090815260056020908152604080832093881683529281528282208683528152908290206001018054835181840281018401909452808452909183018282801561077c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161075e575b50505050509050610804565b6001600160a01b038086166000908152600460209081526040808320938816835292815290829020805483518184028101840190945280845290918301828280156107fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107de575b505050505090505b60005b81518110156108b45781818151811061082257610822611f95565b602090810291909101015160405163512edc6760e11b81526001600160a01b0387811660048301529091169063a25db8ce90602401602060405180830381865afa158015610874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108989190611fab565b6108a29084611fda565b92506108ad81611fed565b9050610807565b50509392505050565b60006108c9813361106d565b6001600160a01b0384166108f057604051630a47df7360e41b815260040160405180910390fd5b6001600160a01b038316610917576040516364e4621360e01b815260040160405180910390fd5b6001600160a01b038481166000818152600460209081526040808320948816808452949091529081902090517fc85d60b13549b3dc2f388841ce79b41c8c6baed50f4efca04739ee336514ba2c91610970918790612006565b60405180910390a36001600160a01b038085166000908152600460209081526040808320938716835292815291902083516109ad92850190611a99565b5050505050565b6001600160a01b0380841660009081526005602090815260408083209386168352928152828220848352815290829020600101805483518184028101840190945280845260609392830182828015610a3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a17575b505050505090509392505050565b6000828152600160205260408120610a5b9083611115565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260016020526040812061046b90611121565b6000610aae813361106d565b6001600160a01b038416610ad557604051630a47df7360e41b815260040160405180910390fd5b6001600160a01b038316610afc57604051631d6d59d560e11b815260040160405180910390fd5b6001600160a01b0384811660008181526003602090815260408083208886168085529083529281902054815190861681529487169185019190915290927fcc25d6fe5360de22e62edebf4c4a710b419db698ef0534cfef04e32eafac21be910160405180910390a3506001600160a01b03928316600090815260036020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b600082815260208190526040902060010154610bbe813361106d565b6104dc83836110f3565b6002805403610c195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054d565b600280557f65a398e550a80727eb90edde4fee3bca9e01d8fcd7b95d28a6a9f638af684cb0610c48813361106d565b610c518461112b565b610c5d85858585611275565b610c716001600160a01b0385163384611529565b836001600160a01b0316856001600160a01b03167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e562084604051610cb691815260200190565b60405180910390a350506001600255505050565b6000610cd6813361106d565b6001600160a01b038516610cfd5760405163885ce5f160e01b815260040160405180910390fd5b83158015610d1257506001600160a01b038316155b8015610d1c575081155b80610d4457508315801590610d3957506001600160a01b03831615155b8015610d4457508115155b610d615760405163f70e1dc160e01b815260040160405180910390fd5b6001600160a01b0385811660009081526006602090815260408083208890556007909152902080546001600160a01b031916918516919091178155600101829055610dab8561112b565b604080518581526001600160a01b038581166020830152918101849052908616907faaff7586f6ea2c8dd2219b96eef38982188f1fe6bc99ee9200b5acadf84358479060600160405180910390a25050505050565b6002805403610e515760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054d565b600280557f65a398e550a80727eb90edde4fee3bca9e01d8fcd7b95d28a6a9f638af684cb0610e80813361106d565b610e898361112b565b6001600160a01b03808516600090815260036020908152604080832087851684529091529020541680610ecf57604051637708f18760e01b815260040160405180910390fd5b610ee46001600160a01b038516333086611588565b610ef86001600160a01b03851682856115c7565b6040516319c5aef560e11b81526001600160a01b0385811660048301526024820185905282169063338b5dea90604401600060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167ff1444b5cad7ce70cb018d1b8edc8618fe303f3c7f034d8d572a6e27facbf2bef85604051610cb691815260200190565b610fa98282610a62565b610560576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610fdf3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a5b836001600160a01b038416611657565b60006001600160e01b03198216637965db0b60e01b148061046b57506301ffc9a760e01b6001600160e01b031983161461046b565b6110778282610a62565b6105605761108f816001600160a01b031660146116a6565b61109a8360206116a6565b6040516020016110ab929190612058565b60408051601f198184030181529082905262461bcd60e51b825261054d916004016120cd565b6110db8282610f9f565b60008281526001602052604090206104dc9082611023565b6110fd8282611842565b60008281526001602052604090206104dc90826118a7565b6000610a5b83836118bc565b600061046b825490565b6001600160a01b038116600090815260066020526040812054900361114d5750565b6001600160a01b03808216600090815260076020526040808220548151633fabe5a360e21b815291519293849391169163feaf968c9160048083019260a09291908290030181865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb919061211a565b506001600160a01b03871660009081526007602052604090206001015492955093506111fa925042905061216a565b81101561121a57604051632457e1c760e11b815260040160405180910390fd5b600082121561123c57604051636e97fd1f60e11b815260040160405180910390fd5b6001600160a01b0383166000908152600660205260409020548210156104dc57604051636e97fd1f60e11b815260040160405180910390fd5b6001600160a01b03808516600090815260056020908152604080832093871683529281528282208583529052205460609060ff1615611339576001600160a01b03808616600090815260056020908152604080832093881683529281528282208683528152908290206001018054835181840281018401909452808452909183018282801561132d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161130f575b505050505090506113b5565b6001600160a01b038086166000908152600460209081526040808320938816835292815290829020805483518184028101840190945280845290918301828280156113ad57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161138f575b505050505090505b60005b81518110156115095760008282815181106113d5576113d5611f95565b602090810291909101015160405163512edc6760e11b81526001600160a01b03888116600483015291925060009183169063a25db8ce90602401602060405180830381865afa15801561142c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114509190611fab565b905060008582116114615781611463565b855b905080600003611475575050506114f9565b6040516313c5035360e31b81526001600160a01b03898116600483015260248201839052841690639e281a9890604401600060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b5050505080866114e3919061216a565b9550856000036114f557505050611509565b5050505b61150281611fed565b90506113b8565b5081156109ad57604051630ebd335f60e31b815260040160405180910390fd5b6040516001600160a01b038381166024830152604482018390526104dc91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506118e6565b6040516001600160a01b0384811660248301528381166044830152606482018390526115c19186918216906323b872dd90608401611556565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526116188482611957565b6115c1576040516001600160a01b0384811660248301526000604483015261164d91869182169063095ea7b390606401611556565b6115c184826118e6565b600081815260018301602052604081205461169e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561046b565b50600061046b565b606060006116b583600261217d565b6116c0906002611fda565b67ffffffffffffffff8111156116d8576116d8611c2a565b6040519080825280601f01601f191660200182016040528015611702576020820181803683370190505b509050600360fc1b8160008151811061171d5761171d611f95565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061174c5761174c611f95565b60200101906001600160f81b031916908160001a905350600061177084600261217d565b61177b906001611fda565b90505b60018111156117f3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117af576117af611f95565b1a60f81b8282815181106117c5576117c5611f95565b60200101906001600160f81b031916908160001a90535060049490941c936117ec8161219c565b905061177e565b508315610a5b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161054d565b61184c8282610a62565b15610560576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a5b836001600160a01b0384166119a6565b60008260000182815481106118d3576118d3611f95565b9060005260206000200154905092915050565b600080602060008451602086016000885af180611909576040513d6000823e3d81fd5b50506000513d9150811561192157806001141561192e565b6001600160a01b0384163b155b156115c157604051635274afe760e01b81526001600160a01b038516600482015260240161054d565b6000806000806020600086516020880160008a5af192503d9150600051905082801561199c5750811561198d578060011461199c565b6000866001600160a01b03163b115b9695505050505050565b60008181526001830160205260408120548015611a8f5760006119ca60018361216a565b85549091506000906119de9060019061216a565b9050818114611a435760008660000182815481106119fe576119fe611f95565b9060005260206000200154905080876000018481548110611a2157611a21611f95565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a5457611a546121b3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061046b565b600091505061046b565b828054828255906000526020600020908101928215611aee579160200282015b82811115611aee57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ab9565b50611afa929150611afe565b5090565b5b80821115611afa5760008155600101611aff565b600060208284031215611b2557600080fd5b81356001600160e01b031981168114610a5b57600080fd5b6001600160a01b0381168114611b5257600080fd5b50565b60008060408385031215611b6857600080fd5b8235611b7381611b3d565b91506020830135611b8381611b3d565b809150509250929050565b600060208284031215611ba057600080fd5b8135610a5b81611b3d565b600080600060608486031215611bc057600080fd5b8335611bcb81611b3d565b92506020840135611bdb81611b3d565b929592945050506040919091013590565b600060208284031215611bfe57600080fd5b5035919050565b60008060408385031215611c1857600080fd5b823591506020830135611b8381611b3d565b634e487b7160e01b600052604160045260246000fd5b8035611c4b81611b3d565b919050565b600082601f830112611c6157600080fd5b8135602067ffffffffffffffff80831115611c7e57611c7e611c2a565b8260051b604051601f19603f83011681018181108482111715611ca357611ca3611c2a565b604052938452858101830193838101925087851115611cc157600080fd5b83870191505b84821015611ce757611cd882611c40565b83529183019190830190611cc7565b979650505050505050565b600080600080600060a08688031215611d0a57600080fd5b8535611d1581611b3d565b94506020860135611d2581611b3d565b93506040860135925060608601358015158114611d4157600080fd5b9150608086013567ffffffffffffffff811115611d5d57600080fd5b611d6988828901611c50565b9150509295509295909350565b600080600060608486031215611d8b57600080fd5b8335611d9681611b3d565b92506020840135611da681611b3d565b9150604084013567ffffffffffffffff811115611dc257600080fd5b611dce86828701611c50565b9150509250925092565b600081518084526020808501945080840160005b83811015611e115781516001600160a01b031687529582019590820190600101611dec565b509495945050505050565b602081526000610a5b6020830184611dd8565b60008060408385031215611e4257600080fd5b50508035926020909101359150565b600080600060608486031215611e6657600080fd5b8335611e7181611b3d565b92506020840135611e8181611b3d565b91506040840135611e9181611b3d565b809150509250925092565b60008060008060808587031215611eb257600080fd5b8435611ebd81611b3d565b93506020850135611ecd81611b3d565b93969395505050506040820135916060013590565b60008060008060808587031215611ef857600080fd5b8435611f0381611b3d565b9350602085013592506040850135611f1a81611b3d565b9396929550929360600135925050565b6000815480845260208085019450836000528060002060005b83811015611e115781546001600160a01b031687529582019560019182019101611f43565b8315158152606060208201526000611f836060830185611f2a565b828103604084015261199c8185611dd8565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611fbd57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046b5761046b611fc4565b600060018201611fff57611fff611fc4565b5060010190565b6040815260006120196040830185611f2a565b828103602084015261202b8185611dd8565b95945050505050565b60005b8381101561204f578181015183820152602001612037565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612090816017850160208801612034565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516120c1816028840160208801612034565b01602801949350505050565b60208152600082518060208401526120ec816040850160208701612034565b601f01601f19169190910160400192915050565b805169ffffffffffffffffffff81168114611c4b57600080fd5b600080600080600060a0868803121561213257600080fd5b61213b86612100565b945060208601519350604086015192506060860151915061215e60808701612100565b90509295509295909350565b8181038181111561046b5761046b611fc4565b600081600019048311821515161561219757612197611fc4565b500290565b6000816121ab576121ab611fc4565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122032c7f95360ddd6bf67872c54b786442980b4f820485e0036b9747bd55d5f43ea64736f6c63430008100033000000000000000000000000094bee6b74ec29d32869ae3140a659cac0482882