Skip to content

Commit

Permalink
Merge pull request #1 from Consensys/CZK-928-adapt-addr-function
Browse files Browse the repository at this point in the history
Czk 928 adapt addr function
  • Loading branch information
Julink-eth committed Aug 26, 2024
2 parents 8d53740 + a567680 commit 7edd1b4
Show file tree
Hide file tree
Showing 15 changed files with 92,652 additions and 4,811 deletions.
16 changes: 16 additions & 0 deletions contracts/NFTMock.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pragma solidity 0.8.25;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract NFTMock is ERC721 {
uint256 public currentTokenId;

constructor() ERC721("Test", "TST") {
currentTokenId = 1;
}

function mint() external {
_safeMint(msg.sender, currentTokenId);
currentTokenId++;
}
}
24 changes: 9 additions & 15 deletions contracts/NFTResolver.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

import {EVMFetcher} from "@consensys/linea-state-verifier/contracts/EVMFetcher.sol";
import {EVMFetchTarget} from "@consensys/linea-state-verifier/contracts/EVMFetchTarget.sol";
import {IEVMVerifier} from "@consensys/linea-state-verifier/contracts/IEVMVerifier.sol";
import "@ensdomains/ens-contracts/contracts/registry/ENS.sol";
import {INameWrapper} from "@ensdomains/ens-contracts/contracts/wrapper/INameWrapper.sol";
import {BytesUtils} from "@ensdomains/ens-contracts/contracts/utils/BytesUtils.sol";
Expand All @@ -11,7 +14,7 @@ import {ITargetResolver} from "./ITargetResolver.sol";
import {IAddrSetter} from "./IAddrSetter.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";

contract L1Resolver is
contract NFTResolver is
EVMFetchTarget,
ITargetResolver,
IExtendedResolver,
Expand All @@ -32,11 +35,6 @@ contract L1Resolver is
event TargetSet(bytes name, address target);

function isAuthorised(bytes32 node) internal view returns (bool) {
// TODO: Add support for
// trustedETHController
// trustedReverseRegistrar
// isApprovedForAll
// isApprovedFor
address owner = ens.owner(node);
if (owner == address(nameWrapper)) {
owner = nameWrapper.ownerOf(uint256(node));
Expand Down Expand Up @@ -103,7 +101,6 @@ contract L1Resolver is
);
targets[node] = target;
emit TargetSet(name, target);
emit MetadataChanged(name, graphqlUrl);
}

/**
Expand Down Expand Up @@ -154,7 +151,8 @@ contract L1Resolver is

if (selector == IAddrResolver.addr.selector) {
bytes32 node = abi.decode(data[4:], (bytes32));
return _addr(node, target);
// TODO: Replace node by NFT ID
return _addr(1, target);
}

// None selector has been found it reverts
Expand All @@ -176,17 +174,13 @@ contract L1Resolver is
}

function _addr(
bytes32 node,
uint256 tokenId,
address target
) private view returns (bytes memory) {
EVMFetcher
.newFetchRequest(verifier, target)
.getStatic(RECORD_VERSIONS_SLOT)
.element(node)
.getDynamic(VERSIONABLE_ADDRESSES_SLOT)
.ref(0)
.element(node)
.element(COIN_TYPE_ETH)
.getDynamic(OWNERS_SLOT)
.element(tokenId)
.fetch(this.addrCallback.selector, ""); // recordVersions
}

Expand Down
9 changes: 9 additions & 0 deletions contracts/deps.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: MIT

import "@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol";
import "@ensdomains/ens-contracts/contracts/wrapper/NameWrapper.sol";
import "@ensdomains/ens-contracts/contracts/ethregistrar/BaseRegistrarImplementation.sol";
import "@ensdomains/ens-contracts/contracts/wrapper/StaticMetadataService.sol";
import {ReverseRegistrar} from "@ensdomains/ens-contracts/contracts/reverseRegistrar/ReverseRegistrar.sol";
import {PublicResolver} from "@ensdomains/ens-contracts/contracts/resolvers/PublicResolver.sol";
import {LineaSparseProofVerifier} from "@consensys/linea-state-verifier/contracts/LineaSparseProofVerifier.sol";
58 changes: 58 additions & 0 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,66 @@
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@nomicfoundation/hardhat-verify";

import * as dotenv from "dotenv";

dotenv.config();

const deployer =
process.env.DEPLOYER_PRIVATE_KEY ||
"ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";

const config: HardhatUserConfig = {
solidity: "0.8.25",

networks: {
sepolia: {
url: `https://sepolia.infura.io/v3/${process.env.INFURA_API_KEY}`,
chainId: 11155111,
accounts: [deployer],
},
lineaSepolia: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_API_KEY}`,
chainId: 59141,
accounts: [deployer],
},
mainnet: {
url: `https://mainnet.infura.io/v3/${process.env.INFURA_API_KEY}`,
chainId: 1,
accounts: [deployer],
},
lineaMainnet: {
url: `https://linea-mainnet.infura.io/v3/${process.env.INFURA_API_KEY}`,
chainId: 59144,
accounts: [deployer],
},
},
etherscan: {
apiKey: {
lineaSepolia: process.env.LINEASCAN_API_KEY ?? "",
lineaMainnet: process.env.LINEASCAN_API_KEY ?? "",
sepolia: process.env.ETHERSCAN_API_KEY ?? "",
mainnet: process.env.ETHERSCAN_API_KEY ?? "",
},
customChains: [
{
network: "lineaSepolia",
chainId: 59141,
urls: {
apiURL: "https://api-sepolia.lineascan.build/api",
browserURL: "https://sepolia.lineascan.build/",
},
},
{
network: "lineaMainnet",
chainId: 59144,
urls: {
apiURL: "https://api.lineascan.build/api",
browserURL: "https://lineascan.build/",
},
},
],
},
};

export default config;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../build-info/346f95e8f01c7704580fdb4785f590cb.json"
}
Loading

0 comments on commit 7edd1b4

Please sign in to comment.