Polygon (Previously Matic Network) is the first well-structured, easy-to-use platform for Ethereum scaling and infrastructure development. Its core component is Polygon SDK, a modular, flexible framework that supports building multiple types of applications.
Using Polygon, one can create Optimistic Rollup chains, ZK Rollup chains, stand alone chains or any other kind of infra required by the developer.
Polygon effectively transforms Ethereum into a full-fledged multi-chain system (aka Internet of Blockchains). This multi-chain system is akin to other ones such as Polkadot, Cosmos, Avalanche etc with the advantages of Ethereum’s security, vibrant ecosystem and openness.
Nothing will change for the existing ecosystem built on the Plasma-POS chain. With Polygon, new features are being built around the existing proven technology to expand the ability to cater to diverse needs from the developer ecosystem. Polygon will continue to develop the core technology so that it can scale to a larger ecosystem.
The $MATIC token will continue to exist and will play an increasingly important role, securing the system and enabling governance.
TransparentUpgradeableProxy.constructor(address,address,bytes)._admin (#346) shadows:
- TransparentUpgradeableProxy._admin() (#439-445) (function)
BEP20UpgradeableProxy.constructor(address,address,bytes).admin (#475) shadows:
- TransparentUpgradeableProxy.admin() (#383-385) (function)
Rename the local variables that shadow another component.
Additional information: link
Low level call in TransparentUpgradeableProxy.upgradeToAndCall(address,bytes) (#429-434):
- (success) = newImplementation.delegatecall(data) (#432)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#207-228):
- (success,returndata) = target.call{value: weiValue}(data) (#211)
Low level call in Address.sendValue(address,uint256) (#141-147):
- (success) = recipient.call{value: amount}() (#145)
Low level call in UpgradeableProxy.constructor(address,bytes) (#255-263):
- (success) = _logic.delegatecall(_data) (#260)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Address.sendValue(address,uint256) (#141-147) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#192-194) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#202-205) is never used and should be removed
Address._functionCallWithValue(address,bytes,uint256,string) (#207-228) is never used and should be removed
Address.functionCall(address,bytes,string) (#177-179) is never used and should be removed
Address.functionCall(address,bytes) (#167-169) is never used and should be removed
Remove unused functions.
Additional information: link
TransparentUpgradeableProxy.upgradeToAndCall(address,bytes).newImplementation (#429) lacks a zero-check on :
- (success) = newImplementation.delegatecall(data) (#432)
UpgradeableProxy.constructor(address,bytes)._logic (#255) lacks a zero-check on :
- (success) = _logic.delegatecall(_data) (#260)
Check that the address is not zero.
Additional information: link
Modifier TransparentUpgradeableProxy.ifAdmin() (#366-372) does not always execute _; or revert
All the paths in a modifier must execute _ or revert.
Additional information: link
UpgradeableProxy._implementation() (#280-286) uses assembly
- INLINE ASM (#283-285)
Proxy._delegate(address) (#23-43) uses assembly
- INLINE ASM (#25-42)
Address.isContract(address) (#114-123) uses assembly
- INLINE ASM (#121)
TransparentUpgradeableProxy._setAdmin(address) (#450-457) uses assembly
- INLINE ASM (#454-456)
UpgradeableProxy._setImplementation(address) (#301-310) uses assembly
- INLINE ASM (#307-309)
Address._functionCallWithValue(address,bytes,uint256,string) (#207-228) uses assembly
- INLINE ASM (#220-223)
TransparentUpgradeableProxy._admin() (#439-445) uses assembly
- INLINE ASM (#442-444)
Do not use evm assembly.
Additional information: link
Different versions of Solidity are used:
- Version used: ['^0.6.0', '^0.6.2']
- ^0.6.0 (#5)
- ^0.6.2 (#91)
- ^0.6.0 (#235)
- ^0.6.0 (#317)
- ^0.6.0 (#470)
Use one Solidity version.
Additional information: link
solc-0.6.4 is not recommended for deployment
Pragma version^0.6.2 (#91) allows old versions
Pragma version^0.6.0 (#5) allows old versions
Pragma version^0.6.0 (#470) allows old versions
Pragma version^0.6.0 (#317) allows old versions
Pragma version^0.6.0 (#235) allows old versions
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Twitter account link seems to be invalid