From ed66629365632a0dc89bdca95553c218cbb08937 Mon Sep 17 00:00:00 2001 From: Theo Date: Sun, 30 Jul 2023 08:54:16 -0700 Subject: [PATCH] Add testing contract on Goerli, that all users can set up IPFS hashes and check results --- src/interfaces/IENSRegistry.sol | 4 +++ test/GoerliENSTestProposal.sol | 46 +++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/interfaces/IENSRegistry.sol b/src/interfaces/IENSRegistry.sol index eeca72a..44bf554 100644 --- a/src/interfaces/IENSRegistry.sol +++ b/src/interfaces/IENSRegistry.sol @@ -6,4 +6,8 @@ interface IENSRegistry { function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external returns (bytes32); function setOwner(bytes32 node, address owner) external; + + function owner(bytes32 node) external view returns (address); + + function recordExists(bytes32 node) external view returns (bool); } diff --git a/test/GoerliENSTestProposal.sol b/test/GoerliENSTestProposal.sol index 2e99741..f6d937a 100644 --- a/test/GoerliENSTestProposal.sol +++ b/test/GoerliENSTestProposal.sol @@ -5,23 +5,53 @@ pragma solidity ^0.8.19; import { IENSResolver } from "@interfaces/IENSResolver.sol"; import { IENSRegistry } from "@interfaces/IENSRegistry.sol"; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { TornadoAddresses } from "@proprietary/TornadoAddresses.sol"; -contract GoerliTestProposal is Ownable { - address ensResolverAddress = 0xd7a4F6473f32aC2Af804B3686AE8F1932bC35750; // goerli ENS resolver for testedy.eth +contract GoerliTestProposal is Ownable, TornadoAddresses { + address ensResolverAddress = 0xd7a4F6473f32aC2Af804B3686AE8F1932bC35750; // goerli ENS resolver address ensRegistryAddress = 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e; - bytes32 testNode = 0x121818cfd40893900bebefa5ccf60544db43ba8fa1d2d56433984132883bee88; // test.testedy.eth + bytes32 testNode = 0xa8f2228d0331c20e8d36b0bf33b102b5b8d8d416db25502b04e5b854d7a5c556; // tornadotest.eth on Goerli - function executeProposal() public onlyOwner { - IENSResolver ensResolver = IENSResolver(ensResolverAddress); + IENSResolver ensResolver = IENSResolver(ensResolverAddress); + IENSRegistry ensRegistry = IENSRegistry(ensRegistryAddress); + function changeNode(bytes32 newNode) public onlyOwner { + require(ensRegistry.recordExists(newNode), "Node doesn't exist"); + require(ensRegistry.owner(newNode) == address(this), "Contract is not an owner of new ENS name"); + transferDomainOwnership(owner()); + + testNode = newNode; + } + + function setClassicUiIpfs() public { bytes memory classicUiIPFSContenthash = hex"e301017012208124caa06a8419371b1d2eab9180191727d1ce0c0832975362f77a679ce614b6"; ensResolver.setContenthash(testNode, classicUiIPFSContenthash); } - function returnDomainOwnership() public onlyOwner { - IENSRegistry ensRegistry = IENSRegistry(ensRegistryAddress); + function setNovaIpfs() public { + bytes memory novaUiIPFSContenthash = hex"e3010170122069648b09fb7ed9a89ca153a000bc8c1bf82a779195a640609e1510dc36c28bb7"; - ensRegistry.setOwner(testNode, owner()); + ensResolver.setContenthash(testNode, novaUiIPFSContenthash); + } + + function setRelayersNetworkIpfs() public { + bytes memory relayersUiIPFSContenthash = hex"e301017012203d61bed0641d7c53d5f036b6448f9d455ae6e0ceda44563009536a12e51d52cf"; + + ensResolver.setContenthash(testNode, relayersUiIPFSContenthash); + } + + function setDocsIpfs() public { + bytes memory docsIPFSContenthash = hex"e3010170122008ba5879914413355290e3c8574825f7a09e59a9802a5fad1edfb3ce6a4f825b"; + + ensResolver.setContenthash(testNode, docsIPFSContenthash); + } + + function setStakingAddress() public { + ensResolver.setAddr(testNode, stakingAddress); + } + + function transferDomainOwnership(address to) public onlyOwner { + ensRegistry.setOwner(testNode, to); } }