- EntryPoint: Gerencia as operações.
- AccountFactory: Cria novas contas.
- Paymaster: Define que paga as transações
- SimpleAccount: Estrutura básica de criação de contas
- ExampleContract: ERC721 token
- ExampleContract2: ERC20 token
- Defina
.env
define chave primaria e URL do Hardhat
PROVIDER="URL do Hardhat"
PRI_KEY='Chave privada de conta do Hardhat'
Siga estas etapas para implantar contratos e executar transações:
Este script implanta o contrato EntryPoint, que é central para gerenciar operações de usuário conforme o padrão ERC4337. Ele aguarda a implantação e registra o endereço onde o EntryPoint é implantado.
npx hardhat run --network localhost ./scripts/deploy_EntryPoint.js
Este script implanta o contrato AccountFactory. O AccountFactory é responsável por criar novas contas baseadas em contratos inteligentes. Ele pega o endereço do EntryPoint implantado anteriormente como um parâmetro.
npx hardhat run --network localhost ./scripts/deploy_AccountFactory.js
Este script implanta o contrato Paymaster, que cobre taxas de transação para SimpleAccounts criadas a partir do AccountFactory especificado. O endereço EntryPoint e o endereço AccountFactory são passados como parâmetros para o Paymaster.
npx hardhat run --network localhost ./scripts/deploy_Paymaster.js
Este script cria uma carteira Externally Owned Account (EOA). A carteira EOA é crítica porque assina as transações SimpleAccount na rede e fornece uma camada de controle e segurança para as operações do usuário. Além disso, este script determina o endereço de implantação do contrato SimpleAccount, que incorpora uma estrutura de conta fundamental para usuários dentro do protocolo ERC4337.
npx hardhat run --network localhost ./scripts/getSenderAddress.js
Este script implementa o ExampleContract, um contrato de token ERC721 simples. Este contrato é usado para cunhar tokens nesta demonstração.
npx hardhat run --network localhost ./scripts/deploy_ExampleContract.js
Este script implementa o ExampleContract, um contrato de token ERC20 simples. Este contrato é usado para cunhar tokens nesta demonstração.
npx hardhat run --network localhost ./scripts/deploy_ExampleContract2.js
Este script é responsável por financiar as contas necessárias para habilitar as Operações do Usuário. Ele deposita fundos no contrato EntryPoint para o Paymaster. Isso garante que o Paymaster tenha saldo suficiente para cobrir as taxas de transação para carteiras criadas a partir da AccountFactory especificada. Além disso, o script financia a carteira EOA (Externally Owned Account) que possui a SimpleAccount.
npx hardhat run --network localhost ./scripts/depositFunds.js
Este script executa uma operação do usuário interagindo com os seguintes contratos: EntryPoint, Paymaster, SimpleAccount e ExampleContract. Ele prepara e envia uma transação para o contrato EntryPoint, que normalmente envolve uma chamada de função como safeMint do ExampleContract, usando o SimpleAccount do usuário. A transação é patrocinada pelo Paymaster, que cobre as taxas de transação, usando os fundos depositados anteriormente.
npx hardhat run --network localhost ./scripts/sendUserOp.js
Este script executa uma operação do usuário interagindo com os seguintes contratos: EntryPoint, Paymaster, SimpleAccount e ExampleContract. Ele prepara e envia uma transação para o contrato EntryPoint, que normalmente envolve uma chamada de função como safeMint do ExampleContract, usando o SimpleAccount do usuário. A transação é patrocinada pelo Paymaster, que cobre as taxas de transação, usando os fundos depositados anteriormente.
npx hardhat run --network localhost ./scripts/sendUserOp2.js
Este script verifica os resultados da operação anterior. Ele consulta o ExampleContract para o tokenId mais recente e o saldo de token do SimpleAccount, verificando o sucesso da operação de cunhagem.
npx hardhat run --network mumbai ./scripts/test.js
Este script verifica os resultados da operação anterior. Ele consulta o ExampleContract para o tokenId mais recente e o saldo de token do SimpleAccount, verificando o sucesso da operação de cunhagem.
npx hardhat run --network mumbai ./scripts/test2.js
hardhat.config.js
: Configuração hardhataddressesConfig.js
: Configuração dos endereços de todos os contratos e contas.env
: Contas e chaves de deploy dos contratos no Hardhat