diff --git a/.gitmodules b/.gitmodules index 58ee6a8..1b10d4e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 diff --git a/Makefile b/Makefile index 8093bc7..ed3062c 100644 --- a/Makefile +++ b/Makefile @@ -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 @@ -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: @@ -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) \ No newline at end of file + @forge script script/DeployJustaPermissionManager.s.sol:DeployJustaPermissionManager $(NETWORK_ARGS) diff --git a/README.md b/README.md index 536068a..72b52ef 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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.