Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
url = https://github.com/base-org/webauthn-sol
[submodule "lib/justanaccount"]
path = lib/justanaccount
url = https://github.com/JustaName-id/justanaccount
url = https://github.com/JustaLab-co/justanaccount
[submodule "lib/permit2"]
path = lib/permit2
url = https://github.com/uniswap/permit2
13 changes: 7 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ clean :; forge clean
# Remove modules
remove :; rm -rf .gitmodules && rm -rf .git/modules/* && rm -rf lib && touch .gitmodules && git add . && git commit -m "modules"

install :; forge install foundry-rs/forge-std && forge install OpenZeppelin/openzeppelin-contracts && forge install Vectorized/solady && forge install eth-infinitism/account-abstraction@releases/v0.8 --no-commit && forge install base-org/webauthn-sol --no-commit && forge install JustaName-id/justanaccount --no-commit
install :; forge install foundry-rs/forge-std && forge install OpenZeppelin/openzeppelin-contracts && forge install Vectorized/solady && forge install eth-infinitism/account-abstraction@releases/v0.8 --no-commit && forge install base-org/webauthn-sol --no-commit && forge install JustaLab-co/justanaccount --no-commit

# Update Dependencies
update:; forge update
Expand Down Expand Up @@ -156,11 +156,12 @@ ifeq ($(findstring --network monad-mainnet,$(ARGS)),--network monad-mainnet)
NETWORK_ARGS := --rpc-url $(MONAD_MAINNET_RPC_URL) --account $(ACCOUNT) --broadcast --verify --verifier custom --verifier-url "https://api.etherscan.io/v2/api?chainid=143&apikey=$(ETHERSCAN_API_KEY)" --chain 143 -vvvv
endif

# Arc mainnet (chain 5042) launches 2026-09-16; forge 1.5.1 has no chain alias for it, and the
# Blockscout explorer mirrors the testnet host (testnet.arcscan.app -> arcscan.app). Confirm the
# RPC and verifier URLs against Circle's published mainnet endpoints before the first deploy.
# Arc mainnet (chain 5042) is covered by Etherscan V2 (https://arc.etherscan.io), so verify there
# rather than against the Blockscout explorer at explorer.arc.io, which sits behind a Cloudflare
# managed challenge that rejects forge's HTTP client. forge 1.5.1 has no chain alias for 5042, so
# the custom verifier is used with chainid and apikey in the URL, as for Monad above.
ifeq ($(findstring --network arc-mainnet,$(ARGS)),--network arc-mainnet)
NETWORK_ARGS := --rpc-url $(ARC_MAINNET_RPC_URL) --account $(ACCOUNT) --broadcast --verify --verifier blockscout --verifier-url https://arcscan.app/api --chain 5042 -vvvv
NETWORK_ARGS := --rpc-url $(ARC_MAINNET_RPC_URL) --account $(ACCOUNT) --broadcast --verify --verifier custom --verifier-url "https://api.etherscan.io/v2/api?chainid=5042&apikey=$(ETHERSCAN_API_KEY)" --chain 5042 -vvvv
endif

deploy-mainnet:
Expand Down Expand Up @@ -254,4 +255,4 @@ deploy-monad-mainnet:
@forge script script/DeployJustaPermissionManager.s.sol:DeployJustaPermissionManager $(NETWORK_ARGS)

deploy-arc-mainnet:
@forge script script/DeployJustaPermissionManager.s.sol:DeployJustaPermissionManager $(NETWORK_ARGS)
@forge script script/DeployJustaPermissionManager.s.sol:DeployJustaPermissionManager $(NETWORK_ARGS)
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

## Overview

`JustaPermissionManager` is a Solidity smart contract that provides a delegation layer for [JustanAccount](https://github.com/justaname-id/justanaccount) smart accounts. It enables granular access control through delegated permissions, allowing account owners to grant time-limited permissions to "spenders" (delegated addresses) to execute specific actions on their behalf with fine-grained call authorization and spending limits.
`JustaPermissionManager` is a Solidity smart contract that provides a delegation layer for [JustanAccount](https://github.com/justalab-co/justanaccount) smart accounts. It enables granular access control through delegated permissions, allowing account owners to grant time-limited permissions to "spenders" (delegated addresses) to execute specific actions on their behalf with fine-grained call authorization and spending limits.

## Features

Expand Down Expand Up @@ -275,7 +275,7 @@ JustaPermissionManager acts as an owner of JustanAccount instances:

This implementation was influenced by and builds upon:

- **[JustanAccount](https://github.com/justaname-id/justanaccount)**: The target smart account contract that JustaPermissionManager delegates to.
- **[JustanAccount](https://github.com/justalab-co/justanaccount)**: The target smart account contract that JustaPermissionManager delegates to.
- **[Solady](https://github.com/Vectorized/solady)**: Optimized utility libraries including DateTimeLib, DynamicArrayLib, SafeTransferLib, and ReentrancyGuard.
- **[OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts)**: Standard implementations for EIP-712, SafeERC20, and ERC165Checker.
- **[Uniswap Permit2](https://github.com/Uniswap/permit2)**: Token approval standard integration for enhanced security.
Loading