Skip to content

Commit

Permalink
Refactor imports to use IEntryPoint from interfaces, update Solidity …
Browse files Browse the repository at this point in the history
…version and optimizer settings in foundry.toml, and add KintoCounterScript for executing user operations.
  • Loading branch information
ylv-io committed Jan 24, 2025
1 parent 3af76f4 commit af349e2
Show file tree
Hide file tree
Showing 10 changed files with 71 additions and 8 deletions.
5 changes: 4 additions & 1 deletion foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ ignored_warnings_from = ["lib/token-bridge-contracts/contracts/tokenbridge/libra
"lib/nitro-contracts/test/foundry/AbsInbox.t.sol", "lib/token-bridge-contracts/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol"]
match-path = 'test/unit/**/*.sol'
ffi = true
solc_version = "0.8.24"
solc_version = "0.8.23"
optimizer = true
optimizer_runs = 200
viaIR = false
remappings = [
'node_modules/account-abstraction-0.7.0:@openzeppelin/contracts/=node_modules/openzeppelin-contracts-5.0.1',
'@aa/=node_modules/account-abstraction-0.7.0/contracts/',
Expand Down
59 changes: 59 additions & 0 deletions script/actions/counter.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import {SimpleAccount} from "@aa/samples/SimpleAccount.sol";
import {EntryPoint} from "@aa/core/EntryPoint.sol";
import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";

import {Counter} from "../../src/sample/Counter.sol";
import {IKintoWallet} from "../../src/interfaces/IKintoWallet.sol";
import {IKintoWalletFactory} from "../../src/interfaces/IKintoWalletFactory.sol";
import {SponsorPaymaster} from "../../src/paymasters/SponsorPaymaster.sol";

import {MigrationHelper} from "@kinto-core-script/utils/MigrationHelper.sol";

import "forge-std/console.sol";
import "forge-std/Script.sol";

/// @notice This script executes a user operation that calls the `increment()` function using your smart account.
contract KintoCounterScript is MigrationHelper {
EntryPoint _entryPoint;

function setUp() public {}

function run() public override {
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
address deployerPublicKey = vm.addr(deployerPrivateKey);
console.log("Deployer is", vm.addr(deployerPrivateKey));

Counter counter = Counter(_getChainDeployment("Counter"));
console.log("Before UserOp. Counter:", counter.count());

SimpleAccount account = SimpleAccount(payable(0xd1DA7E60F0f4480031C58986272EA8127E1073A9));
console2.log('account:', address(account));

// send a tx to the counter contract through our wallet
uint256 nonce = account.getNonce();
uint256[] memory privateKeys = new uint256[](1);
privateKeys[0] = deployerPrivateKey;

PackedUserOperation[] memory userOps = new PackedUserOperation[](1);

// increment counter
userOps[0] = _createUserOperation(
block.chainid,
address(account),
address(counter),
0,
nonce,
privateKeys,
abi.encodeWithSignature("increment()"),
address(0)
);

vm.broadcast(deployerPrivateKey);
EntryPoint(payable(_getChainDeployment("EntryPoint"))).handleOps(userOps, payable(vm.addr(privateKeys[0])));

console.log("After UserOp. Counter:", counter.count());
}
}
2 changes: 1 addition & 1 deletion script/actions/send-user-operation.s.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";

import {MigrationHelper} from "@kinto-core-script/utils/MigrationHelper.sol";
Expand Down
2 changes: 1 addition & 1 deletion script/utils/MigrationHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {SponsorPaymaster} from "@kinto-core/paymasters/SponsorPaymaster.sol";
import {KintoAppRegistry} from "@kinto-core/apps/KintoAppRegistry.sol";

import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";
import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";

import {ISponsorPaymaster} from "@kinto-core/interfaces/ISponsorPaymaster.sol";
import {IKintoWallet} from "@kinto-core/interfaces/IKintoWallet.sol";
Expand Down
1 change: 1 addition & 0 deletions src/access/AccessPoint.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import "@openzeppelin-5.0.1/contracts-upgradeable/proxy/utils/Initializable.sol"
import "@openzeppelin-5.0.1/contracts/interfaces/IERC20.sol";

import {BaseAccount} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {UserOperationLib} from "@aa/core/UserOperationLib.sol";
import {SIG_VALIDATION_FAILED, SIG_VALIDATION_SUCCESS} from "@aa/core/Helpers.sol";
import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/access/AccessRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import "@openzeppelin-5.0.1/contracts/interfaces/IERC20.sol";
import "@openzeppelin-5.0.1/contracts/utils/Create2.sol";
import "@openzeppelin-5.0.1/contracts/proxy/beacon/UpgradeableBeacon.sol";

import {BaseAccount} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {TokenCallbackHandler} from "@aa/samples/callback/TokenCallbackHandler.sol";

import {ByteSignature} from "@kinto-core/libraries/ByteSignature.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/IKintoWallet.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {IKintoWalletFactory} from "./IKintoWalletFactory.sol";
import {IKintoID} from "./IKintoID.sol";
import {IKintoAppRegistry} from "./IKintoAppRegistry.sol";
Expand Down
2 changes: 1 addition & 1 deletion src/paymasters/SponsorPaymaster.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
pragma solidity ^0.8.18;

import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";
import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {IPaymaster} from "@aa/interfaces/IPaymaster.sol";
import {UserOperationLib} from "@aa/core/UserOperationLib.sol";

Expand Down
2 changes: 1 addition & 1 deletion src/wallet/KintoWallet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";

import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";
import {PackedUserOperation} from "@aa/interfaces/PackedUserOperation.sol";
import {SIG_VALIDATION_FAILED, SIG_VALIDATION_SUCCESS} from "@aa/core/Helpers.sol";
import {BaseAccount} from "@aa/core/BaseAccount.sol";
Expand Down
2 changes: 1 addition & 1 deletion test/unit/wallet/Execute.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pragma solidity ^0.8.18;

import "@kinto-core-test/SharedSetup.t.sol";
import {IEntryPoint} from "@aa/core/BaseAccount.sol";
import {IEntryPoint} from "@aa/interfaces/IEntryPoint.sol";

contract ExecuteTest is SharedSetup {
address public systemApp;
Expand Down

0 comments on commit af349e2

Please sign in to comment.