2.0.1 โ€ข Published 8 months ago

@biconomy-devx/smart-account-contracts v2.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

Solidity Hardhat Foundry Test Coverage

Biconomy Smart Account: Leading Implementation of Account Abstraction ๐ŸŒ

Biconomy Smart Account is a smart contract wallet focused on implementing Account Abstraction. It builds on the core concepts of Gnosis and Argent safes and is compliant with EIP-4337 and EIP-6900.

Biconomy Account Abstraction Banner

๐Ÿ“œ Smart Contracts

  • BaseSmartAccount.sol: An abstract contract implementing the EIP4337 IWallet interface.
  • Proxy.sol: A lightweight proxy upgradeable through the UUPS pattern.
  • SmartAccountFactory.sol: This factory contract manages the deployment of smart wallets (Account Abstraction).
  • SmartAccount.sol: The primary implementation contract for a smart wallet (Account Abstraction).
  • EntryPoint.sol: Implements the EIP4337 Entry Point contract.
  • StakeManager.sol: A stake manager for wallet and paymaster deposits/stakes.
  • Executor.sol: A helper contract facilitating calls and delegate calls to dapp contracts.
  • FallbackManager.sol: Manages a fallback handler for delegate calls.
  • ModuleManager.sol: Adopts the Gnosis Safe module manager pattern.
  • DefaultCallbackHandler.sol: Handles hooks to respond to token receipts.
  • MultiSend.sol & MultiSendCallOnly.sol: Facilitates batching multiple transactions into one.
  • VerifyingSingletonPaymaster.sol: A paymaster that uses an external service for transaction validation.
  • PaymasterHelpers.sol: A library essential for decoding paymaster data and context.

๐Ÿš€ How to Run the Project

Before diving in, place a mnemonic in a .secret file at the root. Remember: Never commit this file or share it publicly.

๐Ÿ› ๏ธ Development Commands

Below are the commands you can use for various tasks:

๐Ÿงช Testing

Run regular tests:

npx hardhat test

For Bundler Integration Tests, first install realpath:

brew install coreutils

Then, run the Bundler Integration Tests:

yarn bundler-test

๐Ÿ“ฆ Compilation & Deployment

Compile contracts:

npx hardhat compile

Clean the environment:

npx hardhat clean

Start a local Ethereum node:

npx hardhat node

Deploy contracts:

npx hardhat run scripts/deploy.ts
TS_NODE_FILES=true npx ts-node scripts/deploy.ts

๐Ÿ“ˆ Analysis & Reporting

Display available accounts:

npx hardhat accounts

Get help on Hardhat commands:

npx hardhat help

Test with gas report:

REPORT_GAS=true npx hardhat test

Generate code coverage report:

npx hardhat coverage

๐Ÿงน Code Quality & Formatting

Lint JavaScript and TypeScript files:

npx eslint '**/*.{js,ts}'

Automatically fix linting issues:

npx eslint '**/*.{js,ts}' --fix

Check formatting for JSON, Solidity, and Markdown files:

npx prettier '**/*.{json,sol,md}' --check

Automatically format files:

npx prettier '**/*.{json,sol,md}' --write

Lint Solidity contracts:

npx solhint 'contracts/**/*.sol'

Automatically fix issues in Solidity contracts:

npx solhint 'contracts/**/*.sol' --fix

This format separates the description from the command, making it clearer and more readable.

๐Ÿ” Etherscan Verification

To verify on Etherscan, deploy a contract to an Ethereum network supported by Etherscan, like Ropsten. Set up your .env file, deploy your contract, and then verify:

hardhat run --network ropsten scripts/deploy.ts
npx hardhat verify --network ropsten DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!"

โšก Performance Optimizations

Boost your tests and scripts' speed by setting the TS_NODE_TRANSPILE_ONLY environment variable to 1 in Hardhat's environment. More details are available in the documentation.


๐Ÿค Contributing

Biconomy Smart Account is an open-source project. Contributions are welcome. If you're interested in contributing, please check our contribution guidelines and feel free to submit pull requests or raise issues.