Santiago Palladino
Jul 20, 2017 · 1 min read

As far as I understand, the function cannot be marked as internal if it is in the library contract, since it needs to be reachable from the wallet contract during initialization; as such, the check for already initialized (as you say) is the only alternative. On the other hand, if that code was in the main contract, then simply marking it as internal would have sufficed.

As for the pattern itself, I’m fully onboard with delegatecall forwarders as a pattern, but using it in a catch-all seems quite risky to me due to the lack of control on the contract’s actual public surface.

)

    Santiago Palladino

    Written by

    Developer and Security Researcher at Zeppelin Solutions.