PureFi Protocol - the one-stop compliance protocol for DeFi
PureFi (UFI) is on the mission to bridge a gap between TradFi (Traditional Finance) and DeFi (Decentralized Finance) to facilitate real mass adoption.Its a decentralized protocol that maintains users’ anonymity through Zero-Proof Knowledge architecture. PureFi provides compliance tools (AML, KYC) through Verifiable Credentials & Self Sovereign Identity to protect entities and investors against dirty money risks while interacting with DeFi projects. We will enable institutional investors to participate in a growing DeFi sector through these needed sets of tools.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Low level call in Address.sendValue(address,uint256) (#147-153):
- (success) = recipient.call{value: amount}() (#151)
Low level call in Address.functionStaticCall(address,bytes,string) (#233-239):
- (success,returndata) = target.staticcall(data) (#237)
Low level call in TransparentUpgradeableProxy.upgradeToAndCall(address,bytes) (#446-451):
- (success) = newImplementation.delegatecall(data) (#449)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#208-215):
- (success,returndata) = target.call{value: value}(data) (#213)
Low level call in UpgradeableProxy.constructor(address,bytes) (#278-286):
- (success) = _logic.delegatecall(_data) (#283)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
BEP20UpgradeableProxy.constructor(address,address,bytes).admin (#488) shadows:
- TransparentUpgradeableProxy.admin() (#400-402) (function)
Rename the local variables that shadow another component.
Additional information: link
Modifier TransparentUpgradeableProxy.ifAdmin() (#383-389) does not always execute _; or revert
All the paths in a modifier must execute _ or revert.
Additional information: link
UpgradeableProxy.constructor(address,bytes)._logic (#278) lacks a zero-check on :
- (success) = _logic.delegatecall(_data) (#283)
TransparentUpgradeableProxy.upgradeToAndCall(address,bytes).newImplementation (#446) lacks a zero-check on :
- (success) = newImplementation.delegatecall(data) (#449)
Check that the address is not zero.
Additional information: link
UpgradeableProxy._implementation() (#303-309) uses assembly
- INLINE ASM (#306-308)
TransparentUpgradeableProxy._setAdmin(address) (#467-474) uses assembly
- INLINE ASM (#471-473)
TransparentUpgradeableProxy._admin() (#456-462) uses assembly
- INLINE ASM (#459-461)
Proxy._delegate(address) (#31-51) uses assembly
- INLINE ASM (#33-50)
UpgradeableProxy._setImplementation(address) (#324-333) uses assembly
- INLINE ASM (#330-332)
Address._verifyCallResult(bool,bytes,string) (#241-258) uses assembly
- INLINE ASM (#250-253)
Address.isContract(address) (#120-129) uses assembly
- INLINE ASM (#127)
Do not use evm assembly.
Additional information: link
Address.sendValue(address,uint256) (#147-153) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#198-200) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#208-215) is never used and should be removed
Address.functionStaticCall(address,bytes) (#223-225) is never used and should be removed
Address._verifyCallResult(bool,bytes,string) (#241-258) is never used and should be removed
Address.functionCall(address,bytes,string) (#183-185) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#233-239) is never used and should be removed
Address.functionCall(address,bytes) (#173-175) is never used and should be removed
Remove unused functions.
Additional information: link
Contract ownership is semi-renounced (passed to a contract)
Telegram account link seems to be invalid
Unable to find Discord account