Closed QYuQianchen closed 11 months ago
@QYuQianchen thanks for this PR and your work. I would like to share two comments:
ICreateX
for builders that want to build on top of CreateX
and not for the core contract CreateX
itself. The core contract CreateX
should be a non-inheritance-based contract to follow the KISS principle.CreateX
contract accordingly. Inheritance means that simple "copy + paste" doesn't work for verification, but people need a flattened file or the standard json input. Thus an additional step of complexity, which we should prevent.For these reasons, I suggest not merging this PR. However, I will wait for @mds1's feedback.
Thanks @QYuQianchen! I do agree with @pcaversaccio here—for Multicall3 having a flat file with no inheritance has made management and verification a lot simpler and less error prone, so I think it would be beneficial keep the same approach here. The CI check ensures the two are always in sync which is the main risk of keeping them separate
I see. Depending on the tooling and the block explorer, verification indeed can become cumbersome. Appreciate the detailed explanation on the design decision!
PR Checklist
In the
CreateX.sol
andICreateX.sol
files, events, errors, and theValues
struct are currently defined separately. While a diff check of ABIs is part of the CI workflow as seen in this PR, explicitly inheriting the interface or definingICreateX.sol
as an abstract contract within theCreateX
contract would ensure alignment and eliminate any discrepancies.🐶 Cute Animal Picture