Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
05145b0
chore: add interfaces for ERC7579 support
naveen-imtb Sep 1, 2025
1f497b4
chore: add execution interface
naveen-imtb Sep 1, 2025
51415ce
chore: remove executor interface
naveen-imtb Sep 1, 2025
56c0c7f
Merge branch 'chore/ID-3927-ERC7579-solidity-version' into chore/ID-3…
naveen-imtb Sep 2, 2025
93bbb03
chore: adopt Nexus smart account structure & code
naveen-imtb Sep 2, 2025
963e522
chore: misc updates, introduce foundry to fix up compilation
naveen-imtb Sep 2, 2025
7ebff8c
chore: update mainmodule v2
naveen-imtb Sep 2, 2025
7ab48a5
chore: remove default validator implementation in favour of ModuleAuth
naveen-imtb Sep 2, 2025
2491c2f
chore: support Cancun as required by Solady contracts
naveen-imtb Sep 2, 2025
8a38916
chore: fix up signature validation in inheritance tree
naveen-imtb Sep 2, 2025
c0cba20
chore: create a v2 of the dynamic auth module to use ERC7579 framework
naveen-imtb Sep 3, 2025
0d1f8c1
chore: add minimal tests & mocks
naveen-imtb Sep 3, 2025
093577e
chore: add deployment scripts & README
naveen-imtb Sep 3, 2025
f91d12e
chore: update scripts.
naveen-imtb Sep 3, 2025
756f9c6
chore: fix validation logic.
naveen-imtb Sep 3, 2025
e81205a
chore: remove MainModuleUpgradableV2.sol to avoid ambiguity.
naveen-imtb Sep 3, 2025
49d25ee
chore: continue updating deployment scripts
naveen-imtb Sep 4, 2025
fd45fe6
chore: update signature validation logic.
naveen-imtb Sep 4, 2025
1971999
chore: fix up constructor
naveen-imtb Sep 4, 2025
da7947d
chore: fix contract size
naveen-imtb Sep 4, 2025
ec77602
chore: update script
naveen-imtb Sep 4, 2025
aa89676
chore: fix script
naveen-imtb Sep 4, 2025
25f69ca
chore: fix up optimizer config
naveen-imtb Sep 4, 2025
29112bf
chore: add initialization functions and remove some imports for contr…
naveen-imtb Sep 5, 2025
d44fb45
chore: remove ERC7739 support due to contract size limitations
naveen-imtb Sep 5, 2025
0fe2d71
chore: fix up sign validation and introduce env config for Base and A…
naveen-imtb Sep 5, 2025
6ba3944
config updates
naveen-imtb Sep 8, 2025
fed9d2a
chore: create env variables for gas related config
naveen-imtb Sep 9, 2025
9391368
chore: use original storage slot from Biconomy Nexus to reuse their b…
naveen-imtb Sep 9, 2025
6808397
chore: misc improvements
naveen-imtb Sep 17, 2025
42e2b16
chore: additional utility functions
naveen-imtb Sep 17, 2025
73dcb02
chore: omit empty accounts to load default signers
naveen-imtb Sep 17, 2025
80a84b5
chore: wallet deployment sans txns
naveen-imtb Sep 17, 2025
9e1b676
chore: wallet deployment with validator
naveen-imtb Sep 17, 2025
cbb6ab1
chore: expand wallet deployment with module installation.
naveen-imtb Sep 17, 2025
0324f37
chore: introduce NexusBootstrap contact and deployment script for the…
naveen-imtb Sep 17, 2025
0fc28a2
chore: deploy mock executor and validator
naveen-imtb Sep 18, 2025
34275cd
chore: update validation logic.
naveen-imtb Sep 18, 2025
692d3e8
fix: wallet deployment with bootstrap
naveen-imtb Sep 18, 2025
0d1f613
chore: delete spec file
naveen-imtb Sep 18, 2025
11c4bdf
chore: add chainId to hardhat config
naveen-imtb Sep 18, 2025
6564a18
chore: updated salt key
naveen-imtb Sep 18, 2025
db4b41a
chore: update deployment script.
naveen-imtb Sep 18, 2025
9160265
chore: add deployment instructions
naveen-imtb Sep 18, 2025
1382d44
chore: update README
naveen-imtb Sep 18, 2025
3437a32
fix: README
naveen-imtb Sep 18, 2025
f485baa
chore: update deployment scripts to reflect new architecture that inc…
naveen-imtb Oct 2, 2025
f3edbdf
chore: wallet deployment script that takes into account the SignedMul…
naveen-imtb Oct 2, 2025
70c6b53
chore: add wait before post verification
naveen-imtb Oct 2, 2025
40a53ea
chore: additional changes for central SignedMultiCallDeploy contract
naveen-imtb Oct 7, 2025
58ebd96
chore: introduce upgradability to core logic and add logic to verify …
naveen-imtb Oct 8, 2025
0171581
chore: deployment script for Passport wallet (mimic prod setup) - Mai…
naveen-imtb Oct 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions .env.deployment
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
-- Local node

# # Change this to match the address of the CREATE2 contract factory
# DEPLOYER_CONTRACT_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3

# MULTICALL_ADMIN_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# FACTORY_ADMIN_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# RELAYER_SUBMITTER_EOA_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# IMMUTABLE_SIGNER_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# COLD_WALLET_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# COLD_WALLET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# WALLET_IMPL_LOCATOR_IMPL_CHANGER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# WALLET_IMPL_LOCATOR_IMPL_CHANGER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# WALLET_IMPL_LOCATOR_ADMIN=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# WALLET_IMPL_CHANGER_ADMIN=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# SIGNER_ROOT_ADMIN_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# SIGNER_ADMIN_PUB_KEY=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

# MULTICALLDEPLOY_CONTRACT_ADDRESS=0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512

# # V2 Specific - EntryPoint address
# ENTRY_POINT_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8

# # # Required by hardhat config validation
# DEPLOYER_PRIV_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
# WALLET_IMPL_CHANGER_PRIV_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# FACTORY_CONTRACT_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0

# # Gas config
# MAX_FEE_PER_GAS=1875000000
# MAX_PRIORITY_FEE_PER_GAS=1000000000
# GAS_LIMIT=30000000

## Base Sepolia Tetnet
# Change this to match the address of the CREATE2 contract factory
DEPLOYER_CONTRACT_ADDRESS=0x1dBEF46DF2AF1b3ab2C34186e2FFce209b26FBE5

MULTICALL_ADMIN_PUB_KEY=<PUB_KEY>

FACTORY_ADMIN_PUB_KEY=<PUB_KEY>

RELAYER_SUBMITTER_EOA_PUB_KEY=<PUB_KEY>

IMMUTABLE_SIGNER_PUB_KEY=<PUB_KEY>

COLD_WALLET_PUB_KEY=<PUB_KEY>
COLD_WALLET_PRIVATE_KEY=<PRIV_KEY>

WALLET_IMPL_LOCATOR_IMPL_CHANGER=<PUB_KEY>
WALLET_IMPL_LOCATOR_IMPL_CHANGER_PRIVATE_KEY=<PRIV_KEY>

WALLET_IMPL_LOCATOR_ADMIN=<PUB_KEY>
WALLET_IMPL_CHANGER_ADMIN=<PUB_KEY>

SIGNER_ROOT_ADMIN_PUB_KEY=<PUB_KEY>
SIGNER_ADMIN_PUB_KEY=<PUB_KEY>

MULTICALLDEPLOY_CONTRACT_ADDRESS=0x3D1FB00146c56e8484eA8f7BD7f4E35B4eD7F3d8


# V2 Specific - EntryPoint address
# Base Sepolia
ENTRY_POINT_ADDRESS=0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108

# Required by hardhat config validation
DEPLOYER_PRIV_KEY=<PRIV_KEY>
WALLET_IMPL_CHANGER_PRIV_KEY=<PRIV_KEY>

FACTORY_CONTRACT_ADDRESS=0x3b12b9E11c379Ba8621CB04bC410dAE9e99761a0

# Gas config
GAS_LIMIT=10000000
MAX_FEE_PER_GAS=30000000
MAX_PRIORITY_FEE_PER_GAS=15000000
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,12 @@ scripts/*_output*.json
.env.devnet
.env.testnet
.env.mainnet

# forge directory
cache
cache_forge
cache_hardhat
artifacts

# scripts v2
# scripts/v2/*.json
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
12 changes: 12 additions & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[profile.default]
src = 'src/contracts'
out = 'out'
libs = ['node_modules', 'lib']
test = 'tests'
cache_path = 'cache_forge'
remappings = [
"account-abstraction/contracts/=node_modules/account-abstraction/contracts/",
"solady/=node_modules/solady/src/",
"@nomad-xyz/excessively-safe-call/=node_modules/@nomad-xyz/excessively-safe-call/src/",
"sentinellist/=node_modules/sentinellist/src/"
]
39 changes: 29 additions & 10 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,67 @@ import '@nomiclabs/hardhat-ethers';
import '@nomiclabs/hardhat-web3';
import '@nomiclabs/hardhat-etherscan';
import '@nomicfoundation/hardhat-chai-matchers';
import "@nomicfoundation/hardhat-foundry";

import 'hardhat-gas-reporter';
import 'solidity-coverage';
import "hardhat-contract-sizer";

dotenv.config();
loadAndValidateEnvironment();

const config: HardhatUserConfig = {
solidity: {
compilers: [{ version: '0.8.27' }],
settings: {
optimizer: {
enabled: true,
runs: 999999,
details: {
yul: true
compilers: [{
version: '0.8.27',
settings: {
evmVersion: 'cancun',
optimizer: {
enabled: true,
runs: 20,
details: {
yul: true
}
}
}
}
}],
},
paths: {
root: 'src',
sources: 'src/contracts',
tests: 'tests'
},
networks: {
// Define here to easily specify private keys
localhost: {
url: 'http://127.0.0.1:8545',
accounts: []
chainId: 31337
},
devnet: {
url: 'https://rpc.dev.immutable.com',
accounts: []
},
testnet: {
url: 'https://rpc.testnet.immutable.com',

accounts: []
},
mainnet: {
url: 'https://rpc.immutable.com',
accounts: []
},
base: {
url: process.env.BASE_MAINNET_ENDPOINT,
accounts: []
},
arbitrum: {
url: process.env.ARBITRUM_MAINNET_ENDPOINT,
accounts: []
},
base_sepolia: {
url: process.env.BASE_SEPOLIA_ENDPOINT,
accounts: [],
chainId: 84532
}
},
mocha: {
timeout: process.env.COVERAGE ? 15 * 60 * 1000 : 30 * 1000
Expand Down
1 change: 1 addition & 0 deletions lib/forge-std
Submodule forge-std added at 8bbcf6
Loading
Loading