Omniscia Alliance Block Audit

RouterFacet Manual Review Findings

RouterFacet Manual Review Findings

RFT-01M: Inexplicable Functionality

TypeSeverityLocation
Logical FaultMinorRouterFacet.sol:L43-L48

Description:

The else branch of the initRouter function does not construct a wrapper implementation yet utilizes the input _albtToken as such.

Example:

contracts/facets/RouterFacet.sol
36if(_chainId != 1) {
37 WrappedToken wrappedAlbt = new WrappedToken("Wrapped AllianceBlock Token", "WALBT", 18);
38 rs.albtToken = address(wrappedAlbt);
39 rs.nativeToWrappedToken[1][nativeAlbt] = rs.albtToken;
40 rs.wrappedToNativeToken[rs.albtToken].chainId = 1;
41 rs.wrappedToNativeToken[rs.albtToken].token = nativeAlbt;
42 emit WrappedTokenDeployed(1, nativeAlbt, rs.albtToken);
43} else {
44 rs.albtToken = _albtToken;
45 rs.nativeToWrappedToken[1][nativeAlbt] = rs.albtToken;
46 rs.wrappedToNativeToken[rs.albtToken].chainId = 1;
47 rs.wrappedToNativeToken[rs.albtToken].token = nativeAlbt;
48}

Recommendation:

We strongly recommend additional documentation to be provided for the linked statements as they appear incorrect.

Alleviation:

The else branch was adjusted to not update the nativeToWrapped and wrappedToNative prefixed mappings as they were considered redundant, making the else branch more legible. We still recommend comments to be added surrounding the if clause however to ensure proper validation of its intended purpose by its readers.