This PR implements several upcoming changes to the EIP:
Remove the initData parameter - this has been a major source of confusion for folks building with 6551, as it is not clear what the value of initData should be. Additionally, this has been brought up as a potential security footgun in both audits we've done, as users may not be aware that the data passed to a 6551 implementation via initData is unauthenticated. For these reasons this parameter is being removed in favor of encouraging folks to use multicall for creation of accounts that require initialization.
Change the type of salt from uint256 to bytes32 - this small change means that salt does not need to be type casted inside the account and createAccount functions, and prevents confusion between the tokenId and chainId uint256 parameters
Make salt the second argument of the createAccount and account functions instead of the fifth - this more closely aligns the order of the arguments in calldata to the order of values stored as constants in the bytecode. The order is also changed in the AccountCreated event
Modify the operation argument of the execute function to use uint8 instead of uint256 - this allows implementations to use an enum to represent the value of operation without changing the function signature or execution interface id
Rename AccountCreated event to ERC6551AccountCreated - this change helps distinguish 6551-specific events from other account contracts that make use of AccountCreated events (some folks have been confused by this)
Flatten the ERC6551Registry file - this makes permissionless deployment of the registry easier as the exact source code can be included in the EIP rather than having it split across multiple files and relying on a developer's local environment to compile it properly
This PR implements several upcoming changes to the EIP: