Skip to content

Commit

Permalink
Merge pull request #187 from bcnmy/feat/sma-420-sol-0.8.23
Browse files Browse the repository at this point in the history
SMA-420: Migrate to Solidity 0.8.23
  • Loading branch information
ankurdubey521 authored Dec 28, 2023
2 parents c77e3bb + 5b93e4f commit ff8571b
Show file tree
Hide file tree
Showing 93 changed files with 123 additions and 117 deletions.
2 changes: 1 addition & 1 deletion contracts/smart-account/BaseSmartAccount.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IBaseSmartAccount} from "./interfaces/IBaseSmartAccount.sol";
import {IEntryPoint} from "@account-abstraction/contracts/interfaces/IEntryPoint.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/Proxy.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Proxy // This is the user's Smart Account
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/SmartAccount.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import {BaseSmartAccount, IEntryPoint, UserOperation} from "./BaseSmartAccount.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/base/Executor.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IExecutor} from "../interfaces/base/IExecutor.sol";
import {Enum} from "../common/Enum.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/base/FallbackManager.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {SelfAuthorized} from "../common/SelfAuthorized.sol";
import {IFallbackManager} from "../interfaces/base/IFallbackManager.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/base/ModuleManager.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {SelfAuthorized} from "../common/SelfAuthorized.sol";
import {Executor, Enum} from "./Executor.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/Enum.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/// @title Enum - Collection of enums
abstract contract Enum {
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/ReentrancyGuard.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title ReentrancyGuard
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/SecuredTokenTransfer.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/// @title SecuredTokenTransfer - Secure token transfer
abstract contract SecuredTokenTransfer {
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/SelfAuthorized.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {ISelfAuthorized} from "../interfaces/common/ISelfAuthorized.sol";

Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/SignatureDecoder.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/// @title SignatureDecoder - Decodes signatures that a encoded as bytes
abstract contract SignatureDecoder {
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/common/Stakeable.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IEntryPoint} from "@account-abstraction/contracts/interfaces/IEntryPoint.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/deployer/Create3.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
@title A library for deploying contracts EIP-3171 style.
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/deployer/Deployer.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import "./Create3.sol";

Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/factory/SmartAccountFactory.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import "../Proxy.sol";
import "../BaseSmartAccount.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/handler/DefaultCallbackHandler.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/* solhint-disable no-empty-blocks */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

interface IAccountRecoveryModule {
/**
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/IAddressResolver.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

interface IAddressResolver {
struct SmartAccountResult {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {UserOperation} from "@account-abstraction/contracts/interfaces/UserOperation.sol";

Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/IBaseSmartAccount.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IAccount} from "@account-abstraction/contracts/interfaces/IAccount.sol";
import {UserOperation} from "@account-abstraction/contracts/interfaces/UserOperation.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/ISignatureValidator.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

// bytes4(keccak256("isValidSignature(bytes32,bytes)")
bytes4 constant EIP1271_MAGIC_VALUE = 0x1626ba7e;
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/ISmartAccount.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IBaseSmartAccount} from "./IBaseSmartAccount.sol";
import {IModuleManager} from "./base/IModuleManager.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/base/IExecutor.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {Enum} from "../../common/Enum.sol";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Fallback Manager - A contract that manages fallback calls made to the Smart Account
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/base/IModuleManager.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {Enum} from "../../common/Enum.sol";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/// @title SelfAuthorized - authorizes current contract to perform actions
interface ISelfAuthorized {
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/interfaces/common/IStakeable.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Stakeable Entity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Smart Account Factory - factory responsible for deploying Smart Accounts using CREATE2 and CREATE
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

interface ISmartAccountFactoryV1 {
function getAddressForCounterFactualAccount(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {IAuthorizationModule} from "../../interfaces/IAuthorizationModule.sol";
import {ISignatureValidator} from "../../interfaces/ISignatureValidator.sol";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Batched Session Router
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {ISecurityPolicyPlugin} from "contracts/smart-account/interfaces/modules/ISecurityPolicyManagerPlugin.sol";
import {IERC7484SecurityPolicyPluginEventsErrors} from "contracts/smart-account/interfaces/modules/IERC7484SecurityPolicyPluginEventsErrors.sol";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

interface IERC7484SecurityPolicyPluginEventsErrors {
struct Configuration {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title ECDSA ownership Authorization module for Biconomy Smart Accounts.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title ECDSA Multi Ownership Authorization Module for Biconomy Smart Accounts.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Passkey ownership Authorization module for Biconomy Smart Accounts.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {ISecurityPolicyPlugin} from "./ISecurityPolicyPlugin.sol";
import {ISecurityPolicyManagerPluginEventsErrors} from "./ISecurityPolicyManagerPluginEventsErrors.sol";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

interface ISecurityPolicyManagerPluginEventsErrors {
event SecurityPolicyEnabled(address indexed sa, address indexed policy);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Security Policy Plugin
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Session Key Manager module for Biconomy Modular Smart Accounts.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {UserOperation} from "@account-abstraction/contracts/interfaces/UserOperation.sol";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/**
* @title Smart Contract Ownership Authorization module for Biconomy Smart Accounts.
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/libs/LibAddress.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

library LibAddress {
/**
Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/modules/AccountRecoveryModule.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {BaseAuthorizationModule} from "./BaseAuthorizationModule.sol";
import {UserOperation} from "@account-abstraction/contracts/interfaces/UserOperation.sol";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/// @dev Contract containing constants related to authorization module results.
contract AuthorizationModulesConstants {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/* solhint-disable no-empty-blocks */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/* solhint-disable function-max-lines */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/* solhint-disable no-unused-import */

Expand Down
2 changes: 1 addition & 1 deletion contracts/smart-account/modules/MultiOwnedECDSAModule.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

/* solhint-disable no-unused-import */

Expand Down
23 changes: 13 additions & 10 deletions contracts/smart-account/modules/MultichainECDSAValidator.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.23;

import {UserOperation} from "@account-abstraction/contracts/interfaces/UserOperation.sol";
import {EcdsaOwnershipRegistryModule} from "./EcdsaOwnershipRegistryModule.sol";
Expand Down Expand Up @@ -43,7 +43,7 @@ contract MultichainECDSAValidator is EcdsaOwnershipRegistryModule {

address sender;
// read sender from userOp, which is first userOp member (saves gas)
assembly {
assembly ("memory-safe") {
sender := calldataload(userOp)
}

Expand All @@ -70,16 +70,19 @@ contract MultichainECDSAValidator is EcdsaOwnershipRegistryModule {
moduleSignature,
(uint48, uint48, bytes32, bytes32[], bytes)
);
{
// make a leaf out of userOpHash, validUntil and validAfter
bytes32 leaf = keccak256(
abi.encodePacked(validUntil, validAfter, userOpHash)
);

// make a leaf out of userOpHash, validUntil and validAfter
bytes32 leaf = keccak256(
abi.encodePacked(validUntil, validAfter, userOpHash)
);

if (!MerkleProof.verify(merkleProof, merkleTreeRoot, leaf)) {
revert("Invalid UserOp");
if (!MerkleProof.verify(merkleProof, merkleTreeRoot, leaf)) {
revert("Invalid UserOp");
}
}

validUntil = validUntil == 0 ? type(uint48).max : validUntil;

return
_verifySignature(
merkleTreeRoot,
Expand All @@ -88,7 +91,7 @@ contract MultichainECDSAValidator is EcdsaOwnershipRegistryModule {
)
? _packValidationData(
false, //sigVerificationFailed = false
validUntil == 0 ? type(uint48).max : validUntil,
validUntil,
validAfter
)
: SIG_VALIDATION_FAILED;
Expand Down
Loading

0 comments on commit ff8571b

Please sign in to comment.