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
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
INITIAL_SIGNER=
ETH_SEPOLIA_RPC=
BASE_SEPOLIA_RPC=
ETHERSCAN_API_KEY=
BASESCAN_API_KEY=
BASE_SEPOLIA_ACCOUNT=
SEPOLIA_ACCOUNT=
LOCAL_ACCOUNT=
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ out/
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/
/broadcast

# Docs
docs/
Expand Down
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,13 @@ NETWORK_ARGS := --rpc-url http://localhost:8545 --account $(LOCAL_ACCOUNT) --bro

ifeq ($(findstring --network sepolia,$(ARGS)),--network sepolia)
NETWORK_ARGS := --rpc-url $(SEPOLIA_RPC_URL) --account $(SEPOLIA_ACCOUNT) --broadcast --verify --etherscan-api-key $(ETHERSCAN_API_KEY) -vvvv
else ifeq ($(findstring --network base-sepolia,$(ARGS)),--network base-sepolia)
NETWORK_ARGS := --rpc-url $(BASE_SEPOLIA_RPC_URL) --account $(BASE_SEPOLIA_ACCOUNT) --broadcast --verify --etherscan-api-key $(BASESCAN_API_KEY) -vvvv
endif

deploy-sepolia:
@forge script script/DeployProofOfPassportRegister.s.sol:DeployProofOfPassportRegister $(NETWORK_ARGS)

deploy-base-sepolia:
@forge script script/DeployProofOfPassportRegister.s.sol:DeployProofOfPassportRegister $(NETWORK_ARGS)

1 change: 1 addition & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[profile.default]
src = "src"
out = "out"
solc = "0.8.20"
libs = ["lib"]
remappings = [
'@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/',
Expand Down
2 changes: 1 addition & 1 deletion script/DeployProofOfPassportRegister.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ contract DeployProofOfPassportRegister is Script, CodeConstants {
HelperConfig helperConfig = new HelperConfig();
HelperConfig.NetworkConfig memory config = helperConfig.getConfig();

vm.startBroadcast(config.deployerKey);
vm.startBroadcast();
ProofOfPassportRegister register = new ProofOfPassportRegister(
config.signatureAlgorithms, config.verifiers, config.nullifiersIndexesInPubSigArray, config.signers
);
Expand Down
62 changes: 39 additions & 23 deletions script/HelperConfig.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ pragma solidity ^0.8.20;

import {Script, console} from "forge-std/Script.sol";
import {VerifierProveRSA65537SHA256} from "../src/verifiers/prove/Verifier_prove_rsa_65537_sha256.sol";
import {VerifierProveRSA65537SHA1} from "../src/verifiers/prove/Verifier_prove_rsa_65537_sha1.sol";
import {VerifierProveRSAPSS65537SHA256} from "../src/verifiers/prove/Verifier_prove_rsapss_65537_sha256.sol";
import {IProofOfPassportRegister} from "../src/interfaces/IProofOfPassportRegister.sol";

abstract contract CodeConstants {
uint256 public constant MAINNET_ETH_CHAIN_ID = 1;
uint256 public constant BASE_SEPOLIA_CHAIN_ID = 84532;
uint256 public constant ETH_SEPOLIA_CHAIN_ID = 11155111;
uint256 public constant LOCAL_CHAIN_ID = 31337;

Expand All @@ -22,9 +25,6 @@ abstract contract CodeConstants {
address[] public initialVerifiers;
uint256[] public initialNullifiersIndexesInPubSigArray;
address[] public initialSigners;

uint256 public DEFAULT_ANVIL_KEY = 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80;
address public DEFAULT_ANVIL_ADDRESS = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266;
}

contract HelperConfig is CodeConstants, Script {
Expand All @@ -35,21 +35,15 @@ contract HelperConfig is CodeConstants, Script {
address[] verifiers;
uint256[] nullifiersIndexesInPubSigArray;
address[] signers;
uint256 deployerKey;
}

NetworkConfig public networkConfig;
mapping(uint256 => NetworkConfig) public networkConfigs;

constructor() {
networkConfigs[LOCAL_CHAIN_ID] = getOrCreateAnvilEthConfig();
}

function getConfigByChainId(uint256 chainId) public returns (NetworkConfig memory) {
if (networkConfig.verifiers.length > 0 && networkConfigs[chainId].verifiers[0] != address(0)) {
return networkConfigs[chainId];
} else if (chainId == LOCAL_CHAIN_ID) {
if (chainId == LOCAL_CHAIN_ID) {
return getOrCreateAnvilEthConfig();
} else if (chainId == ETH_SEPOLIA_CHAIN_ID) {
return getOrCreateSepoliaConfig();
} else if (chainId == BASE_SEPOLIA_CHAIN_ID) {
return getOrCreateSepoliaConfig();
} else {
revert HelperConfig__InvalidChainId();
}
Expand All @@ -60,11 +54,6 @@ contract HelperConfig is CodeConstants, Script {
}

function getOrCreateAnvilEthConfig() public returns (NetworkConfig memory) {
// Check to see if we set an active network config
if (networkConfig.verifiers.length > 0 && networkConfig.verifiers[0] != address(0)) {
return networkConfig;
}

initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_65537_SHA256);

// Get Signer
Expand All @@ -80,14 +69,41 @@ contract HelperConfig is CodeConstants, Script {

initialVerifiers.push(address(verifierProveRSA65537SHA256));

networkConfig = NetworkConfig({
return NetworkConfig({
signatureAlgorithms: initialSignatureAlgorithms,
verifiers: initialVerifiers,
nullifiersIndexesInPubSigArray: initialNullifiersIndexesInPubSigArray,
signers: initialSigners,
deployerKey: DEFAULT_ANVIL_KEY
signers: initialSigners
});
}

function getOrCreateSepoliaConfig() public returns (NetworkConfig memory) {
vm.startBroadcast();
VerifierProveRSA65537SHA256 verifierProveRSA65537SHA256 = new VerifierProveRSA65537SHA256();
VerifierProveRSA65537SHA1 verifierProveRSA65537SHA1 = new VerifierProveRSA65537SHA1();
VerifierProveRSAPSS65537SHA256 verifierProveRSA65537PSSSHA256 = new VerifierProveRSAPSS65537SHA256();
vm.stopBroadcast();

initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_65537_SHA256);
initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_65537_SHA1);
initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_PSS_65537_SHA256);

initialVerifiers.push(address(verifierProveRSA65537SHA256));
initialVerifiers.push(address(verifierProveRSA65537SHA1));
initialVerifiers.push(address(verifierProveRSA65537PSSSHA256));

initialNullifiersIndexesInPubSigArray.push(NULLIFIER_INDEX_IN_PUB_SIGNAL);
initialNullifiersIndexesInPubSigArray.push(NULLIFIER_INDEX_IN_PUB_SIGNAL);
initialNullifiersIndexesInPubSigArray.push(NULLIFIER_INDEX_IN_PUB_SIGNAL);

address INITIAL_SIGNER = vm.envAddress("INITIAL_SIGNER");
initialSigners.push(INITIAL_SIGNER);

return networkConfig;
return NetworkConfig({
signatureAlgorithms: initialSignatureAlgorithms,
verifiers: initialVerifiers,
nullifiersIndexesInPubSigArray: initialNullifiersIndexesInPubSigArray,
signers: initialSigners
});
}
}
8 changes: 2 additions & 6 deletions test/unit/TestProofOfPassportRegister.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,13 @@ contract TestProofOfPassportRegister is Test, Script, CodeConstants {
address verifier = proofOfPassportRegister.getVerifier(SIGNATURE_ALGORITHM_RSA_65537_SHA256);
uint256 nullifierIndex = proofOfPassportRegister.getNullifierIndex(SIGNATURE_ALGORITHM_RSA_65537_SHA256);
uint256 signatureAlgorithmIndexInPubSignals = proofOfPassportRegister.SIGNATURE_ALGORITHM_INDEX_IN_PUB_SIGNALS();
address owner = proofOfPassportRegister.owner();
// address owner = proofOfPassportRegister.owner();

assertEq(isSigner, true);
// change those to test against the deployed values
// TODO: change this to test against the deployed values
assertNotEq(verifier, address(0));
assertEq(nullifierIndex, NULLIFIER_INDEX_IN_PUB_SIGNAL);
assertEq(signatureAlgorithmIndexInPubSignals, SIGNATURE_ALGORITHM_INDEX_IN_PUB_SIGNALS);

if (block.chainid == LOCAL_CHAIN_ID) {
assertEq(owner, DEFAULT_ANVIL_ADDRESS);
}
}

/*//////////////////////////////////////////////////////////////
Expand Down