Skip to content

junhoyeo/contract-wallet

Repository files navigation

Contract Wallet

Basic Implementation of a Contract Wallet in Solidity.
The owner can transfer Ether/ERC20 and execute transactions via low-level calls.

For more detailed usage, please read the test code.

Transfer

Transfer Ether

await contractWallet
  .connect(owner)
  ["transfer(address,uint256)"](
    recipient.address,
    ethers.utils.parseEther("0.0001")
  );

Transfer ERC20

await contractWallet
  .connect(owner)
  ["transfer(address,address,uint256)"](
    owner.address,
    tokenA.address,
    ethers.utils.parseEther("5")
  );

Execute transactions

const populatedTx = await tokenA.populateTransaction.transfer(
  recipient.address,
  ethers.utils.parseEther("5.0045")
);

await contractWallet
  .connect(owner)
  .execute(tokenA.address, populatedTx.value ?? 0, populatedTx.data ?? "");

About

Basic Implementation of a Contract Wallet in Solidity. The owner can transfer Ether/ERC20 and execute transactions via low-level calls.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published