diff --git a/.vscode/settings.json b/.vscode/settings.json index f1facf606..4a695421e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "solidity.defaultCompiler": "remote" + "solidity.defaultCompiler": "remote", + "makefile.configureOnOpen": false } \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index d0f34ac7d..8b1711bca 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -67,8 +67,6 @@ module.exports = { dependencyCompiler: { paths: [ '@openzeppelin/contracts-upgradeable/metatx/MinimalForwarderUpgradeable.sol', - '@chainlink/contracts/src/v0.4/LinkToken.sol', - '@chainlink/contracts/src/v0.6/Oracle.sol' ], }, solidity: { diff --git a/package-lock.json b/package-lock.json index a74599bd1..6c7416970 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19510,7 +19510,6 @@ "version": "7.1.1", "license": "STREAMR NETWORK OPEN SOURCE LICENSE", "dependencies": { - "@chainlink/contracts": "0.3.1", "@opengsn/contracts": "2.2.6", "@openzeppelin/contracts": "4.4.2", "@openzeppelin/contracts-upgradeable": "4.8.0", @@ -19550,10 +19549,6 @@ "web3-providers-http": "1.8.0" } }, - "packages/network-contracts/node_modules/@chainlink/contracts": { - "version": "0.3.1", - "license": "MIT" - }, "packages/network-contracts/node_modules/@chainsafe/persistent-merkle-tree": { "version": "0.4.2", "dev": true, diff --git a/package.json b/package.json index d260efe6e..914c8d470 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "clean": "npm run clean --workspaces --if-present", "lint": "npm run lint --workspaces --if-present && eslint .", "test": "npm run test --workspaces --if-present", - "integration-test": "npm run integration-test --workspaces --if-present", "test:subgraph": "graph test -d", "e2etest": "npm run e2etest --workspace=network-contracts" }, diff --git a/packages/config/config.json b/packages/config/config.json index 2cc7c50ef..3eb16ae6e 100644 --- a/packages/config/config.json +++ b/packages/config/config.json @@ -283,7 +283,6 @@ } ], "contracts": { - "ChainlinkOracle": "0x36BF71D0ba2e449fc14f9C4cF51468948E4ED27D", "DATA": "0x3a9A81d576d83FF21f26f325066054540720fC34", "DataUnionFactory": "0xd0B3a09A6bCee8446d10e6E7e12c78F8725C9B18", "DataUnionTemplate": "0xaFe97F5a1cD3edE2c11d990e0EB0270054AA0589", diff --git a/packages/ens-sync-script/prepare.sh b/packages/ens-sync-script/prepare.sh index 7dcb998e5..26975d936 100755 --- a/packages/ens-sync-script/prepare.sh +++ b/packages/ens-sync-script/prepare.sh @@ -1,5 +1,5 @@ mkdir -p network-contracts/artifacts/contracts/StreamRegistry/StreamRegistryV5.sol -mkdir -p network-contracts/artifacts/contracts/chainlinkClient/ENSCacheV2Streamr.sol +mkdir -p network-contracts/artifacts/contracts/ENS/ENSCacheV2Streamr.sol cp ../network-contracts/artifacts/contracts/StreamRegistry/StreamRegistryV5.sol/StreamRegistryV5.json ./network-contracts/artifacts/contracts/StreamRegistry/StreamRegistryV5.sol -cp -r ../network-contracts/artifacts/contracts/chainlinkClient/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json ./network-contracts/artifacts/contracts/chainlinkClient/ENSCacheV2Streamr.sol +cp -r ../network-contracts/artifacts/contracts/ENS/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json ./network-contracts/artifacts/contracts/ENS/ENSCacheV2Streamr.sol diff --git a/packages/network-contracts/.openzeppelin/polygon.json b/packages/network-contracts/.openzeppelin/polygon.json index f12db2d4e..331232c37 100644 --- a/packages/network-contracts/.openzeppelin/polygon.json +++ b/packages/network-contracts/.openzeppelin/polygon.json @@ -868,7 +868,7 @@ "slot": "201", "type": "t_mapping(t_string_memory_ptr,t_address)", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:17" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:17" }, { "label": "streamrScript", @@ -876,7 +876,7 @@ "slot": "202", "type": "t_address", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:18" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:18" }, { "label": "streamRegistry", @@ -884,7 +884,7 @@ "slot": "203", "type": "t_contract(IStreamRegistry)17218", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:19" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:19" }, { "label": "ensCacheV1", @@ -892,7 +892,7 @@ "slot": "204", "type": "t_contract(ENSCacheV1)17576", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:20" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:20" } ], "types": { diff --git a/packages/network-contracts/.openzeppelin/unknown-3338.json b/packages/network-contracts/.openzeppelin/unknown-3338.json index 4f941a4dd..c527f12a0 100644 --- a/packages/network-contracts/.openzeppelin/unknown-3338.json +++ b/packages/network-contracts/.openzeppelin/unknown-3338.json @@ -363,7 +363,7 @@ "slot": "201", "type": "t_mapping(t_string_memory_ptr,t_address)", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:17" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:17" }, { "label": "streamrScript", @@ -371,7 +371,7 @@ "slot": "202", "type": "t_address", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:18" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:18" }, { "label": "streamRegistry", @@ -379,7 +379,7 @@ "slot": "203", "type": "t_contract(IStreamRegistry)21862", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:19" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:19" }, { "label": "ensCacheV1", @@ -387,7 +387,7 @@ "slot": "204", "type": "t_contract(ENSCacheV1)22220", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:20" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:20" } ], "types": { diff --git a/packages/network-contracts/.openzeppelin/unknown-4689.json b/packages/network-contracts/.openzeppelin/unknown-4689.json index 9dad397b9..ec9c77422 100644 --- a/packages/network-contracts/.openzeppelin/unknown-4689.json +++ b/packages/network-contracts/.openzeppelin/unknown-4689.json @@ -363,7 +363,7 @@ "slot": "201", "type": "t_mapping(t_string_memory_ptr,t_address)", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:17" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:17" }, { "label": "streamrScript", @@ -371,7 +371,7 @@ "slot": "202", "type": "t_address", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:18" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:18" }, { "label": "streamRegistry", @@ -379,7 +379,7 @@ "slot": "203", "type": "t_contract(IStreamRegistry)3531", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:19" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:19" }, { "label": "ensCacheV1", @@ -387,7 +387,7 @@ "slot": "204", "type": "t_contract(ENSCacheV1)3889", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:20" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:20" } ], "types": { diff --git a/packages/network-contracts/.openzeppelin/unknown-4690.json b/packages/network-contracts/.openzeppelin/unknown-4690.json index 5d3f6aab3..1b36641af 100644 --- a/packages/network-contracts/.openzeppelin/unknown-4690.json +++ b/packages/network-contracts/.openzeppelin/unknown-4690.json @@ -348,7 +348,7 @@ "slot": "201", "type": "t_mapping(t_string_memory_ptr,t_address)", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:17" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:17" }, { "label": "streamrScript", @@ -356,7 +356,7 @@ "slot": "202", "type": "t_address", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:18" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:18" }, { "label": "streamRegistry", @@ -364,7 +364,7 @@ "slot": "203", "type": "t_contract(IStreamRegistry)24359", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:19" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:19" }, { "label": "ensCacheV1", @@ -372,7 +372,7 @@ "slot": "204", "type": "t_contract(ENSCacheV1)24717", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:20" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:20" } ], "types": { diff --git a/packages/network-contracts/.openzeppelin/unknown-80002.json b/packages/network-contracts/.openzeppelin/unknown-80002.json index c20d62e06..174656d25 100644 --- a/packages/network-contracts/.openzeppelin/unknown-80002.json +++ b/packages/network-contracts/.openzeppelin/unknown-80002.json @@ -402,7 +402,7 @@ "slot": "201", "type": "t_mapping(t_string_memory_ptr,t_address)", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:17" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:17" }, { "label": "streamrScript", @@ -410,7 +410,7 @@ "slot": "202", "type": "t_address", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:18" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:18" }, { "label": "streamRegistry", @@ -418,7 +418,7 @@ "slot": "203", "type": "t_contract(IStreamRegistry)19523", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:19" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:19" }, { "label": "ensCacheV1", @@ -426,7 +426,7 @@ "slot": "204", "type": "t_contract(ENSCacheV1)19881", "contract": "ENSCacheV2Streamr", - "src": "contracts/chainlinkClient/ENSCacheV2Streamr.sol:20" + "src": "contracts/ENS/ENSCacheV2Streamr.sol:20" } ], "types": { diff --git a/packages/network-contracts/contracts/chainlinkClient/ENSCacheV2Streamr.sol b/packages/network-contracts/contracts/ENS/ENSCacheV2Streamr.sol similarity index 61% rename from packages/network-contracts/contracts/chainlinkClient/ENSCacheV2Streamr.sol rename to packages/network-contracts/contracts/ENS/ENSCacheV2Streamr.sol index 597f01139..2d3324265 100644 --- a/packages/network-contracts/contracts/chainlinkClient/ENSCacheV2Streamr.sol +++ b/packages/network-contracts/contracts/ENS/ENSCacheV2Streamr.sol @@ -5,19 +5,22 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.9; -import "./ENSCacheV1.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable-4.4.2/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; + +interface IStreamRegistry { + // solhint-disable-next-line func-name-mixedcase + function ENScreateStreamCallback(address requestorAddress, string memory ensName, string calldata streamIdPath, string calldata metadataJsonString) external; +} contract ENSCacheV2Streamr is Initializable, UUPSUpgradeable, OwnableUpgradeable { event RequestENSOwnerAndCreateStream(string ensName, string streamIdPath, string metadataJsonString, address requestorAddress); mapping(string => address) public owners; - address private streamrScript; // TODO: make public - IStreamRegistry private streamRegistry; // TODO: make public - ENSCacheV1 private ensCacheV1; // TODO: make public + address public streamrScript; + IStreamRegistry public streamRegistry; modifier onlyStreamr() { require(msg.sender == address(streamrScript), "onlyStreamrScript"); @@ -32,11 +35,10 @@ contract ENSCacheV2Streamr is Initializable, UUPSUpgradeable, OwnableUpgradeable constructor() { } - function initialize(address _streamrScript, IStreamRegistry _streamRegistry, ENSCacheV1 _ensCacheV1) public initializer { + function initialize(address _streamrScript, IStreamRegistry _streamRegistry) public initializer { __Ownable_init(); streamrScript = _streamrScript; streamRegistry = _streamRegistry; - ensCacheV1 = _ensCacheV1; } function _authorizeUpgrade(address) internal override onlyOwner {} @@ -45,10 +47,6 @@ contract ENSCacheV2Streamr is Initializable, UUPSUpgradeable, OwnableUpgradeable streamRegistry = IStreamRegistry(streamRegistryAddress); } - function setENSCacheV1(address ensCacheV1Address) public onlyOwner { - ensCacheV1 = ENSCacheV1(ensCacheV1Address); - } - function setStreamrScript(address _streamrScript) public onlyOwner { streamrScript = _streamrScript; } @@ -60,17 +58,11 @@ contract ENSCacheV2Streamr is Initializable, UUPSUpgradeable, OwnableUpgradeable string calldata metadataJsonString, address requestorAddress ) public onlyStreamRegistry() { - address ownerAddress = address(ensCacheV1) != address(0) ? ensCacheV1.owners(ensName) : address(0); - if (ownerAddress == requestorAddress) { - owners[ensName] = ownerAddress; - streamRegistry.ENScreateStreamCallback(ownerAddress, ensName, streamIdPath, metadataJsonString); - } else { - emit RequestENSOwnerAndCreateStream(ensName, streamIdPath, metadataJsonString, requestorAddress); - } + emit RequestENSOwnerAndCreateStream(ensName, streamIdPath, metadataJsonString, requestorAddress); } function fulfillENSOwner(string calldata ensName, string calldata streamIdPath, string calldata metadataJsonString, address ownerAddress) public onlyStreamr() { owners[ensName] = ownerAddress; streamRegistry.ENScreateStreamCallback(ownerAddress, ensName, streamIdPath, metadataJsonString); } -} \ No newline at end of file +} diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistry.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistry.sol index 0ee9125e4..6c4585b76 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistry.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistry.sol @@ -11,9 +11,9 @@ pragma experimental ABIEncoderV2; import "@openzeppelin/contracts-upgradeable-4.4.2/metatx/ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; contract StreamRegistry is Initializable, UUPSUpgradeable, ERC2771ContextUpgradeable, AccessControlUpgradeable { @@ -38,7 +38,7 @@ contract StreamRegistry is Initializable, UUPSUpgradeable, ERC2771ContextUpgrade // streamid -> keccak256(version, useraddress) -> permission struct above mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache private ensCache; + ENSCacheV2Streamr private ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) private streamIdToVersion; @@ -72,7 +72,7 @@ contract StreamRegistry is Initializable, UUPSUpgradeable, ERC2771ContextUpgrade // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -89,7 +89,7 @@ contract StreamRegistry is Initializable, UUPSUpgradeable, ERC2771ContextUpgrade } function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function createStream(string calldata streamIdPath, string calldata metadataJsonString) public { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV2.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV2.sol index b165091f9..86c91abe2 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV2.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV2.sol @@ -11,9 +11,9 @@ pragma experimental ABIEncoderV2; import "@openzeppelin/contracts-upgradeable-4.4.2/metatx/ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; contract StreamRegistryV2 is Initializable, UUPSUpgradeable, ERC2771ContextUpgradeable, AccessControlUpgradeable { @@ -38,7 +38,7 @@ contract StreamRegistryV2 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // streamid -> keccak256(version, useraddress) -> permission struct above mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache private ensCache; + ENSCacheV2Streamr private ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) private streamIdToVersion; @@ -72,7 +72,7 @@ contract StreamRegistryV2 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -90,7 +90,7 @@ contract StreamRegistryV2 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra } function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function createStream(string calldata streamIdPath, string calldata metadataJsonString) public { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV3.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV3.sol index a334277b0..95c3cffaa 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV3.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV3.sol @@ -12,9 +12,9 @@ pragma experimental ABIEncoderV2; import "@openzeppelin/contracts-upgradeable-4.4.2/metatx/ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; contract StreamRegistryV3 is Initializable, UUPSUpgradeable, ERC2771ContextUpgradeable, AccessControlUpgradeable { @@ -39,7 +39,7 @@ contract StreamRegistryV3 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // streamid -> keccak256(version, useraddress) -> permission struct above mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache private ensCache; + ENSCacheV2Streamr private ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) private streamIdToVersion; @@ -73,7 +73,7 @@ contract StreamRegistryV3 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -91,7 +91,7 @@ contract StreamRegistryV3 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra } function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function createStream(string calldata streamIdPath, string calldata metadataJsonString) public { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4.sol index 8fe4a7369..5b99e1f64 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4.sol @@ -6,11 +6,11 @@ pragma solidity 0.8.9; /* solhint-disable not-rely-on-time */ -import "./ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; +import "./ERC2771ContextUpgradeable.sol"; contract StreamRegistryV4 is Initializable, UUPSUpgradeable, ERC2771ContextUpgradeable, AccessControlUpgradeable { @@ -35,7 +35,7 @@ contract StreamRegistryV4 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // streamid -> keccak256(version, useraddress) -> permission struct above mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache private ensCache; + ENSCacheV2Streamr private ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) private streamIdToVersion; @@ -69,7 +69,7 @@ contract StreamRegistryV4 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -87,7 +87,7 @@ contract StreamRegistryV4 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra } function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function createStream(string calldata streamIdPath, string calldata metadataJsonString) public { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4_1.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4_1.sol index de2b9c588..907ea2190 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4_1.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV4_1.sol @@ -9,11 +9,11 @@ pragma solidity 0.8.9; /* solhint-disable not-rely-on-time */ -import "./ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; +import "./ERC2771ContextUpgradeable.sol"; // solhint-disable-next-line contract-name-camelcase contract StreamRegistryV4_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpgradeable, AccessControlUpgradeable { @@ -39,7 +39,7 @@ contract StreamRegistryV4_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg // streamid -> keccak256(version, useraddress) -> permission struct above mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache private ensCache; + ENSCacheV2Streamr private ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) private streamIdToVersion; @@ -76,7 +76,7 @@ contract StreamRegistryV4_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -93,7 +93,7 @@ contract StreamRegistryV4_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg } function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function createStream(string calldata streamIdPath, string calldata metadataJsonString) public { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5.sol index 3c4abf2c5..457085d8c 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5.sol @@ -18,11 +18,11 @@ pragma solidity 0.8.9; /* solhint-disable not-rely-on-time */ -import "./ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; +import "./ERC2771ContextUpgradeable.sol"; /** * @title StreamRegistry @@ -60,7 +60,7 @@ contract StreamRegistryV5 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // and bytes for functions that use `getUserKeyForUserId` mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache public ensCache; + ENSCacheV2Streamr public ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) public streamIdToVersion; @@ -101,7 +101,7 @@ contract StreamRegistryV5 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -455,7 +455,7 @@ contract StreamRegistryV5 is Initializable, UUPSUpgradeable, ERC2771ContextUpgra function _authorizeUpgrade(address) internal override isTrusted() {} function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function setTrustedForwarder(address forwarder) public isTrusted() { diff --git a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5_1.sol b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5_1.sol index 2e41fb4db..484450757 100644 --- a/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5_1.sol +++ b/packages/network-contracts/contracts/StreamRegistry/StreamRegistryV5_1.sol @@ -6,11 +6,11 @@ pragma solidity 0.8.9; /* solhint-disable not-rely-on-time */ -import "./ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/UUPSUpgradeable.sol"; -import "../chainlinkClient/ENSCache.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable-4.4.2/proxy/utils/Initializable.sol"; +import "../ENS/ENSCacheV2Streamr.sol"; +import "./ERC2771ContextUpgradeable.sol"; /** * @title StreamRegistry @@ -47,7 +47,7 @@ contract StreamRegistryV5_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg // and bytes for functions that use `getUserKeyForUserId` mapping (string => mapping(bytes32 => Permission)) public streamIdToPermissions; mapping (string => string) public streamIdToMetadata; - ENSCache public ensCache; + ENSCacheV2Streamr public ensCache; // incremented when stream is (re-)created, so that users from old streams with same don't re-appear in the new stream (if they have permissions) mapping (string => uint32) public streamIdToVersion; @@ -91,7 +91,7 @@ contract StreamRegistryV5_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg // Constructor can't be used with upgradeable contracts, so use initialize instead // this will not be called upon each upgrade, only once during first deployment function initialize(address ensCacheAddr, address trustedForwarderAddress) public initializer { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); __AccessControl_init(); _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); ERC2771ContextUpgradeable.__ERC2771Context_init(trustedForwarderAddress); @@ -450,7 +450,7 @@ contract StreamRegistryV5_1 is Initializable, UUPSUpgradeable, ERC2771ContextUpg function _authorizeUpgrade(address) internal override isTrusted() {} function setEnsCache(address ensCacheAddr) public isTrusted() { - ensCache = ENSCache(ensCacheAddr); + ensCache = ENSCacheV2Streamr(ensCacheAddr); } function setTrustedForwarder(address forwarder) public isTrusted() { diff --git a/packages/network-contracts/contracts/chainlinkClient/ENSCache.sol b/packages/network-contracts/contracts/chainlinkClient/ENSCache.sol deleted file mode 100644 index 53650e4d0..000000000 --- a/packages/network-contracts/contracts/chainlinkClient/ENSCache.sol +++ /dev/null @@ -1,111 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.9; - -import "@chainlink/contracts/src/v0.8/ChainlinkClient.sol"; -import "@chainlink/contracts/src/v0.8/Chainlink.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; - -interface IStreamRegistry { - // solhint-disable-next-line func-name-mixedcase - function ENScreateStreamCallback(address requestorAddress, string memory ensName, string calldata streamIdPath, string calldata metadataJsonString) external; -} - -contract ENSCache is ChainlinkClient, Ownable { - using Chainlink for Chainlink.Request; - - uint256 constant private ORACLE_PAYMENT = 0 * LINK_DIVISIBILITY; - // uint256 constant private ORACLE_PAYMENT = 1; - - mapping(string => address) public owners; - mapping(bytes32 => string) public tempENSnames; - mapping(bytes32 => string) public tempIdPaths; - mapping(bytes32 => string) public tempMetadatas; - mapping(bytes32 => address) public tempRequestorAddress; - - address public oracle; - string public jobId; - IStreamRegistry private streamRegistry; - - constructor(address oracleAddress, string memory chainlinkJobId) ChainlinkClient() Ownable() { - oracle = oracleAddress; - jobId = chainlinkJobId; - } - - function setOracleAddress(address oracleAddress) public onlyOwner { - oracle = oracleAddress; - } - - function setStreamRegistry(address streamRegistryAddress) public onlyOwner { - streamRegistry = IStreamRegistry(streamRegistryAddress); - } - - function setChainlinkTokenAddress(address _link) public onlyOwner { - super.setChainlinkToken(_link); - } - - function setChainlinkJobId(string calldata chainlinkJobId) public onlyOwner { - jobId = chainlinkJobId; - } - - /** Just update cache for ensName */ - function requestENSOwner(string calldata ensName) public { - Chainlink.Request memory req = buildChainlinkRequest(stringToBytes32(jobId), address(this), this.fulfillENSOwner.selector); - req.add("ensname", ensName); - bytes32 requestid = sendChainlinkRequestTo(oracle, req, ORACLE_PAYMENT); - tempENSnames[requestid] = ensName; - } - - /** Update cache and create a stream */ - function requestENSOwnerAndCreateStream(string calldata ensName, string calldata streamIdPath, string calldata metadataJsonString, address requestorAddress) public { - require(bytes(streamIdPath).length > 0, "error_emptyStreamIdPath"); - Chainlink.Request memory req = buildChainlinkRequest(stringToBytes32(jobId), address(this), this.fulfillENSOwner.selector); - req.add("ensname", ensName); - bytes32 requestid = sendChainlinkRequestTo(oracle, req, ORACLE_PAYMENT); - tempRequestorAddress[requestid] = requestorAddress; - tempENSnames[requestid] = ensName; - tempIdPaths[requestid] = streamIdPath; - tempMetadatas[requestid] = metadataJsonString; - } - - function resetCacheForMyENSName(string calldata ensName) public { - require(owners[ensName] == msg.sender, "error_notOwnerOfThisENSName"); - owners[ensName] = address(0); - } - - function resetCacheForENSName(string calldata ensName) public onlyOwner { - owners[ensName] = address(0); - } - - /** Callback from Chainlink returning the results of the ENS lookup */ - function fulfillENSOwner(bytes32 requestId, bytes32 owneraddress) public recordChainlinkFulfillment(requestId) { - owners[tempENSnames[requestId]] = address(uint160(uint256(owneraddress))); - if (bytes(tempIdPaths[requestId]).length > 0) { - streamRegistry.ENScreateStreamCallback(tempRequestorAddress[requestId], tempENSnames[requestId], tempIdPaths[requestId], tempMetadatas[requestId]); - } - } - - function getChainlinkToken() public view returns (address) { - return chainlinkTokenAddress(); - } - - function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); - require(link.transfer(_msgSender(), link.balanceOf(address(this))), "Unable to transfer"); - } - - function cancelRequest(bytes32 _requestId, uint256 _payment, bytes4 _callbackFunctionId, - uint256 _expiration) public onlyOwner { - cancelChainlinkRequest(_requestId, _payment, _callbackFunctionId, _expiration); - } - - function stringToBytes32(string memory source) private pure returns (bytes32 result) { - bytes memory tempEmptyStringTest = bytes(source); - if (tempEmptyStringTest.length == 0) { - return 0x0; - } - - assembly { // solhint-disable-line no-inline-assembly - result := mload(add(source, 32)) - } - } -} diff --git a/packages/network-contracts/contracts/chainlinkClient/ENSCacheV1.sol b/packages/network-contracts/contracts/chainlinkClient/ENSCacheV1.sol deleted file mode 100644 index e05d5ca2b..000000000 --- a/packages/network-contracts/contracts/chainlinkClient/ENSCacheV1.sol +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Deployed on 2021-01-11 to 0x870528c1aDe8f5eB4676AA2d15FC0B034E276A1A - */ - -// SPDX-License-Identifier: MIT -pragma solidity 0.8.9; - -import "@chainlink/contracts/src/v0.8/ChainlinkClient.sol"; -import "@chainlink/contracts/src/v0.8/Chainlink.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; - -interface IStreamRegistry { - // solhint-disable-next-line func-name-mixedcase - function ENScreateStreamCallback(address requestorAddress, string memory ensName, string calldata streamIdPath, string calldata metadataJsonString) external; -} - -contract ENSCacheV1 is ChainlinkClient, Ownable { - using Chainlink for Chainlink.Request; - - uint256 constant private ORACLE_PAYMENT = 0 * LINK_DIVISIBILITY; - // uint256 constant private ORACLE_PAYMENT = 1; - - mapping(string => address) public owners; - mapping(bytes32 => string) public tempENSnames; - mapping(bytes32 => string) public tempIdPaths; - mapping(bytes32 => string) public tempMetadatas; - mapping(bytes32 => address) public tempRequestorAddress; - - address public oracle; - string public jobId; - IStreamRegistry private streamRegistry; - - constructor(address oracleAddress, string memory chainlinkJobId) ChainlinkClient() Ownable() { - oracle = oracleAddress; - jobId = chainlinkJobId; - } - - function setOracleAddress(address oracleAddress) public onlyOwner { - oracle = oracleAddress; - } - - function setStreamRegistry(address streamRegistryAddress) public onlyOwner { - streamRegistry = IStreamRegistry(streamRegistryAddress); - } - - function setChainlinkTokenAddress(address _link) public onlyOwner { - super.setChainlinkToken(_link); - } - - function setChainlinkJobId(string calldata chainlinkJobId) public onlyOwner { - jobId = chainlinkJobId; - } - - /** Just update cache for ensName */ - function requestENSOwner(string calldata ensName) public { - Chainlink.Request memory req = buildChainlinkRequest(stringToBytes32(jobId), address(this), this.fulfillENSOwner.selector); - req.add("ensname", ensName); - bytes32 requestid = sendChainlinkRequestTo(oracle, req, ORACLE_PAYMENT); - tempENSnames[requestid] = ensName; - } - - /** Update cache and create a stream */ - function requestENSOwnerAndCreateStream(string calldata ensName, string calldata streamIdPath, string calldata metadataJsonString, address requestorAddress) public { - Chainlink.Request memory req = buildChainlinkRequest(stringToBytes32(jobId), address(this), this.fulfillENSOwner.selector); - req.add("ensname", ensName); - bytes32 requestid = sendChainlinkRequestTo(oracle, req, ORACLE_PAYMENT); - tempRequestorAddress[requestid] = requestorAddress; - tempENSnames[requestid] = ensName; - tempIdPaths[requestid] = streamIdPath; - tempMetadatas[requestid] = metadataJsonString; - } - - function fulfillENSOwner(bytes32 requestId, bytes32 owneraddress) public recordChainlinkFulfillment(requestId) { - owners[tempENSnames[requestId]] = address(uint160(uint256(owneraddress))); - streamRegistry.ENScreateStreamCallback(tempRequestorAddress[requestId], tempENSnames[requestId], tempIdPaths[requestId], tempMetadatas[requestId]); - } - - function getChainlinkToken() public view returns (address) { - return chainlinkTokenAddress(); - } - - function withdrawLink() public onlyOwner { - LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress()); - require(link.transfer(_msgSender(), link.balanceOf(address(this))), "Unable to transfer"); - } - - function cancelRequest(bytes32 _requestId, uint256 _payment, bytes4 _callbackFunctionId, - uint256 _expiration) public onlyOwner { - cancelChainlinkRequest(_requestId, _payment, _callbackFunctionId, _expiration); - } - - function stringToBytes32(string memory source) private pure returns (bytes32 result) { - bytes memory tempEmptyStringTest = bytes(source); - if (tempEmptyStringTest.length == 0) { - return 0x0; - } - - assembly { // solhint-disable-line no-inline-assembly - result := mload(add(source, 32)) - } - } -} \ No newline at end of file diff --git a/packages/network-contracts/hardhat.config.ts b/packages/network-contracts/hardhat.config.ts index 540aa5217..f7f856b2e 100644 --- a/packages/network-contracts/hardhat.config.ts +++ b/packages/network-contracts/hardhat.config.ts @@ -1,7 +1,7 @@ import "@nomicfoundation/hardhat-toolbox" import "@nomicfoundation/hardhat-chai-matchers" import "@openzeppelin/hardhat-upgrades" -import "hardhat-ignore-warnings" +// import "hardhat-ignore-warnings" import "solidity-coverage" import "hardhat-dependency-compiler" import "@nomiclabs/hardhat-etherscan" @@ -114,8 +114,6 @@ const config: HardhatUserConfig = { dependencyCompiler: { paths: [ "@openzeppelin/contracts/metatx/MinimalForwarder.sol", - "@chainlink/contracts/src/v0.4/LinkToken.sol", - "@chainlink/contracts/src/v0.6/Oracle.sol", "@opengsn/contracts/src/forwarder/Forwarder.sol", "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol", "@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol", @@ -183,11 +181,6 @@ const config: HardhatUserConfig = { // gasReporter: { // enabled: true, // }, - warnings: { - "@chainlink/contracts/src/v0.4/**/*": { - default: "off", - }, - }, typechain: { outDir: "./typechain", target: "ethers-v5", diff --git a/packages/network-contracts/package.json b/packages/network-contracts/package.json index 6c5a6f85a..18bcce7e2 100644 --- a/packages/network-contracts/package.json +++ b/packages/network-contracts/package.json @@ -19,10 +19,8 @@ "build": "./build.sh", "clean": "rm -rf artifacts dist cache coverage typechain deployments .openzeppelin/unknown-31337.json", "test": "npm run test:fast && npm run test:slow", - "integration-test-TODO": "npm run test:ens-e2e", "test:fast": "hardhat test `find test/hardhat -name '*.test.ts'`", "test:slow": "hardhat test `find test/hardhat-slow-tests -name '*.test.ts'`", - "test:ens-e2e": "hardhat run --network dev2 test/integration/ens-e2e.test.ts", "coverage": "hardhat coverage --testfiles 'test/hardhat/**/*.test.ts'", "lint": "solhint `find contracts -name '*.sol'`", "interactProd": "hardhat run --network polygon scripts/deployToLivenet/2_interactWithContracts.ts", @@ -41,7 +39,6 @@ "streamrEnvDeployerHardhat": "hardhat run --network localhost scripts/tatum/allinoneHardhat.ts" }, "dependencies": { - "@chainlink/contracts": "0.3.1", "@opengsn/contracts": "2.2.6", "@openzeppelin/contracts": "4.4.2", "@openzeppelin/contracts-upgradeable": "4.8.0", diff --git a/packages/network-contracts/scripts/deployToLivenet/1_deployContracts.ts b/packages/network-contracts/scripts/deployToLivenet/1_deployContracts.ts deleted file mode 100644 index 017727af5..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/1_deployContracts.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { JsonRpcProvider } from "@ethersproject/providers" -import { Wallet } from "ethers" -import hhat from "hardhat" -import debug from "debug" -const log = debug("Streamr:eth-init") - -const { ethers, upgrades } = hhat - -// const NodeRegistry = require('./ethereumContractJSONs/NodeRegistry.json') - -// const ENSRegistry = require('./ethereumContractJSONs/ENSRegistry.json') -// const FIFSRegistrar = require('./ethereumContractJSONs/FIFSRegistrar.json') -// const PublicResolver = require('./ethereumContractJSONs/PublicResolver.json') - -// Streamregistry -// const LinkToken = require('./ethereumContractJSONs/LinkToken.json') -// const ChainlinkOracle = require('./ethereumContractJSONs/Oracle.json') -// const ENSCache = require('./ethereumContractJSONs/ENSCache.json') -// const StreamRegistry = require('./ethereumContractJSONs/StreamRegistry.json') -// const StreamStorageRegistry = require('./ethereumContractJSONs/StreamStorageRegistry.json') - -// localsidechain -const chainURL = "http://10.200.10.1:8546" -const privKeyStreamRegistry = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" -const LINKTOKEN_ADDRESS = "0x3387F44140ea19100232873a5aAf9E46608c791E" // localchain - -// hardhat -// const chainURL = 'http://127.0.0.1:8545' -// const privKeyStreamRegistry = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' // hardhat -// let LINKTOKEN_ADDRESS = '' - -// amoy -// const chainURL = 'https://polygon-amoy-bor-rpc.publicnode.com' -// const LINKTOKEN_ADDRESS = '0x326C977E6efc84E512bB9C30f76E30c160eD06FB' // TODO: deploy? -// const privKeyStreamRegistry = process.env.OCR_ADMIN_PRIVATEKEY || '' // also set DEBUG="*" - -// Polygon mainnet -// const chainURL = 'https://polygon-rpc.com' -// const privKeyStreamRegistry = process.env.OCR_ADMIN_PRIVATEKEY || '' // also set DEBUG="*" - -// this wallet will deploy all contracts and "own" them if applicable - -// these come from the next step, but we can predict the addresses -const chainlinkNodeAddress = "0x7b5F1610920d5BAf00D684929272213BaF962eFe" -const chainlinkJobId = "c99333d032ed4cb8967b956c7f0329b5" - -let nodeRegistryAddress = "" -let streamRegistryAddress = "" -let wallet: Wallet - -async function deployNodeRegistry(initialNodes: string[], initialMetadata: string[]) { - const strDeploy = await ethers.getContractFactory("NodeRegistry", wallet) - const strDeployTx = await upgrades.deployProxy(strDeploy, [wallet.address, false, initialNodes, initialMetadata], { kind: "uups" }) - // const strDeployTx = await strDeploy.deploy(wallet.address, false, initialNodes, initialMetadata) - const str = await strDeployTx.deployed() - nodeRegistryAddress = str.address - log(`NodeRegistry deployed at ${str.address}`) - const nodes = await str.getNodes() - log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) -} - -async function deployStreamStorageRegistry() { - const strDeploy = await ethers.getContractFactory("StreamStorageRegistry", wallet) - const strDeployTx = await upgrades.deployProxy(strDeploy, - [streamRegistryAddress, nodeRegistryAddress, Wallet.createRandom().address], { kind: "uups" }) - const str = await strDeployTx.deployed() - log(`StreamStorageRegistry deployed at ${str.address}`) -} - -async function deployStreamRegistry() { - // log('Sending some Ether to chainlink node address') - // const tx = await wallet.sendTransaction({ - // to: chainlinkNodeAddress, - // value: parseEther('10') - // }) - // await tx.wait() - - log("Deploying Streamregistry and chainlink contracts to sidechain:") - - // deploy LINKtoken - // log('Deploying Streamregistry and chainlink contracts to sidechain:') - // const linkTokenFactory = await ethers.getContractFactory('LinkToken', wallet) - // const linkTokenFactoryTx = await linkTokenFactory.deploy() - // const linkToken = await linkTokenFactoryTx.deployed() - // LINKTOKEN_ADDRESS = linkToken.address - // log(`Link Token deployed at ${linkToken.address}`) - - // deploy MinimalForwarder - const minimalForwarderFactory = await ethers.getContractFactory("MinimalForwarder", wallet) - const minimalForwarderFactoryTx = await minimalForwarderFactory.deploy() - const minimalForwarder = await minimalForwarderFactoryTx.deployed() - log(`MinimalForwarder deployed at ${minimalForwarder.address}`) - - // oracle - const oracleFactory = await ethers.getContractFactory("Oracle", wallet) - // const oracleFactoryTx = await oracleFactory.attach('0x36BF71D0ba2e449fc14f9C4cF51468948E4ED27D') - const oracleFactoryTx = await oracleFactory.deploy(LINKTOKEN_ADDRESS) - const oracle1 = await oracleFactoryTx.deployed() - const oracle = await oracle1.connect(wallet) - - log(`Chainlink Oracle deployed at ${oracle.address}`) - const tokenaddrFromOracle = await oracle.getChainlinkToken() - log(`Chainlink Oracle token pointing to ${tokenaddrFromOracle}`) - // const fulfilmentPermissionTX = await oracle.setFulfillmentPermission(chainlinkNodeAddress, true) - // await fulfilmentPermissionTX.wait() - const permission = await oracle.getAuthorizationStatus(chainlinkNodeAddress) - log(`Chainlink Oracle permission for ${chainlinkNodeAddress} is ${permission}`) - - // chainlink client enscache - // log(`deploying enscache from ${wallet.address}`) - const ensCacheFactory = await ethers.getContractFactory("ENSCache", wallet) - const ensCacheFactoryTx = await ensCacheFactory.deploy(oracle.address, chainlinkJobId) // , constants.AddressZero) - // const ensCacheFactoryTx = await ensCacheFactory.attach('0x870528c1aDe8f5eB4676AA2d15FC0B034E276A1A') // , constants.AddressZero) - log(`probable addres ENSCache will be deployed to: ${ensCacheFactoryTx.address}`) - log(`txhash of deployment transaction: ${ensCacheFactoryTx.deployTransaction.hash}`) - const ensCache = await ensCacheFactoryTx.deployed() - log(`ENSCache deployed at ${ensCache.address}`) - // log(`ENSCache owner is ${await ensCache.owner()}`) - // log(`ENSCache setting Link token address ${LINKTOKEN_ADDRESS}`) - // await ensCache.setChainlinkTokenAddress(LINKTOKEN_ADDRESS) - - // log('Sending some Link to ENSCache') - // await linkToken.transfer(ensCache.address, bigNumberify('1000000000000000000000')) // 1000 link - - log("deploying Streamregistry") - const streamRegistryFactory = await ethers.getContractFactory("StreamRegistryV3", wallet) - // const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, constants.AddressZero) - const streamRegistryFactoryTx = await upgrades.deployProxy(streamRegistryFactory, - [ensCache.address, Wallet.createRandom().address], { kind: "uups" }) - const streamRegistry = await streamRegistryFactoryTx.deployed() - streamRegistryAddress = streamRegistry.address - log(`Streamregistry deployed at ${streamRegistry.address}`) - - log("setting Streamregistry address in ENSCache") - const tx3 = await ensCache.setStreamRegistry(streamRegistry.address) - await tx3.wait() - - log("setting enscache address as trusted role in streamregistry") - const role = await streamRegistry.TRUSTED_ROLE() - log(`granting role ${role} ensaddress ${ensCache.address}`) - const tx2 = await streamRegistry.grantRole(role, ensCache.address) - await tx2.wait() - log("granting role trusted role to deployer") - const tx6 = await streamRegistry.grantRole(role, wallet.address) - await tx6.wait() - - // console.log('##1') - // const tx4 = await streamRegistry.trustedSetStreamMetadata('asdf/asdf', 'asdf') - // await tx4.wait() - // console.log('##2') - console.log("setting enscache address as trusted role in streamregistry") - console.log(`granting role ${role} ensaddress ${ensCache.address}`) - const tx5 = await streamRegistry.grantRole(role, ensCache.address) - await tx5.wait() - console.log("done granting role") - // console.log('setting enscache in streamregistry to ' + ensCache.address) - // const tx = await streamRegistry.setEnsCache(ensCache.address) - // await tx.wait() - // console.log('done setting enscache in streamregistry') -} - -async function main() { - wallet = new Wallet(privKeyStreamRegistry, new JsonRpcProvider(chainURL)) - log(`wallet address ${wallet.address}`) - const initialNodes: string[] = [] - const initialMetadata: string[] = [] - await deployNodeRegistry(initialNodes, initialMetadata) - - await deployStreamRegistry() - - await deployStreamStorageRegistry() -} - -main() diff --git a/packages/network-contracts/scripts/deployToLivenet/2_interactWithContracts.ts b/packages/network-contracts/scripts/deployToLivenet/2_interactWithContracts.ts deleted file mode 100644 index ca15af0ee..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/2_interactWithContracts.ts +++ /dev/null @@ -1,282 +0,0 @@ -// first register ens domain on mainnet -// scripts/deploy.js - -import { ethers, upgrades } from "hardhat" -import { Contract, providers, Wallet, utils } from "ethers" - -import { ENSCache, Oracle, StreamRegistry } from "../../typechain" - -// const { ethers } = hhat -// import { abi as ensAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/ENSRegistry.sol/ENSRegistry.json" -// import { abi as fifsAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/FIFSRegistrar.sol/FIFSRegistrar.json" -// const resolverAbi = require('@ensdomains/resolver/build/contracts/PublicResolver.json') - -// hardhat -// const DEFAULTPRIVATEKEY = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' // hardhat -// const SIDECHAINURL = 'http://localhost:8545' -// const MAINNETURL = 'http://localhost:8545' -// const LINKTOKEN = '0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1' -// const DEPLOYMENT_OWNER_KEY = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' - -// localsidechain -const DEFAULTPRIVATEKEY = "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0" -const MAINNETURL = "http://localhost:8545" -const SIDECHAINURL = "http://localhost:8546" -const LINKTOKEN = "0x3387F44140ea19100232873a5aAf9E46608c791E" -const DEPLOYMENT_OWNER_KEY = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" - -// Polygon mainet -// const DEFAULTPRIVATEKEY = process.env.OCR_USER_PRIVATEKEY || '' -// const MAINNETURL = 'http://localhost:8545' -// const SIDECHAINURL = 'https://polygon-rpc.com' -// const LINKTOKEN = '0xb0897686c545045afc77cf20ec7a532e3120e0f1' -// const DEPLOYMENT_OWNER_KEY = process.env.OCR_ADMIN_PRIVATEKEY || '' - -// ADDRESSES - -// const ORACLEADDRESS = '0x382b486B81FefB1F280166f2000a53b961b9840d' -// const ENSCACHEADDRESS = '0x36c64EE95d9D6735f8841aB157Bd8fEE35aab28b' -// const STREAMREGISTRYADDRESS = '0x720daa1337B50DF384C3AcFa037A98D533059d0d' -// const CHAINLINK_JOBID = '020f92986c5840debdcbd99d607602d2' // https://github.com/streamr-dev/smart-contracts-init#running -// const CHAINLINK_NODE_ADDRESS = '0x7b5F1610920d5BAf00D684929272213BaF962eFe' - -// addresses localsidechain -const ORACLEADDRESS = "0xD94D41F23F1D42C51Ab61685e5617BBC858e5871" -const ENSCACHEADDRESS = "0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3" -const STREAMREGISTRYADDRESS = "0x6cCdd5d866ea766f6DF5965aA98DeCCD629ff222" -const CHAINLINK_JOBID = "c99333d032ed4cb8967b956c7f0329b5" // https://github.com/streamr-dev/smart-contracts-init#running -const CHAINLINK_NODE_ADDRESS = "0x7b5F1610920d5BAf00D684929272213BaF962eFe" - -// Polygon mainet contract addresses -// const ORACLEADDRESS = '0x36BF71D0ba2e449fc14f9C4cF51468948E4ED27D' -// const ENSCACHEADDRESS = '0x870528c1aDe8f5eB4676AA2d15FC0B034E276A1A' -// const STREAMREGISTRYADDRESS = '0x0D483E10612F327FC11965Fc82E90dC19b141641' -// const CHAINLINK_JOBID = '13c04b52ce0c4716bb629a872c99b153' // https://github.com/streamr-dev/smart-contracts-init#running -// const CHAINLINK_NODE_ADDRESS = '0xc244dA783A3B96f4D420A4eEfb105CD0Db4bE01a' - -// ens on mainnet -// const ENSADDRESS = '0x92E8435EB56fD01BF4C79B66d47AC1A94338BB03' -// const FIFSADDRESS = '0x57B81a9442805f88c4617B506206531e72d96290' -const RESOLVERADDRESS = "0xBc0c81a318D57ae54dA28DE69184A9c3aE9a1e1c" - -const mainnetProvider = new providers.JsonRpcProvider(MAINNETURL) -const sideChainProvider = new providers.JsonRpcProvider(SIDECHAINURL) -let walletMainnet: Wallet -let walletSidechain: Wallet -let registryFromUser: StreamRegistry -let registryFromOwner: StreamRegistry -let ensCacheFromOwner: ENSCache -// let linkTokenFromOwner: LinkToken -let oracleFromOwner: Oracle -let ensFomAdmin: Contract -let fifsFromAdmin: Contract -// let resolverFomAdmin : Contract -let randomENSName: string -let stringIdWithoutENS: string -const metadata1 = "metadata1" - -const connectToAllContracts = async () => { - walletMainnet = new Wallet(DEFAULTPRIVATEKEY, mainnetProvider) - walletSidechain = new Wallet(DEFAULTPRIVATEKEY, sideChainProvider) - const deploymentOwner = new Wallet(DEPLOYMENT_OWNER_KEY, sideChainProvider) - - const streamregistryFactory = await ethers.getContractFactory("StreamRegistry", walletSidechain) - const registry = await streamregistryFactory.attach(STREAMREGISTRYADDRESS) - const registryContract = await registry.deployed() - registryFromUser = await registryContract.connect(walletSidechain) as StreamRegistry - registryFromOwner = await registryContract.connect(deploymentOwner) as StreamRegistry - - // const ensContract = new Contract(ENSADDRESS, ensAbi, mainnetProvider) - // ensFomAdmin = await ensContract.connect(walletMainnet) - - // const fifsContract = new Contract(FIFSADDRESS, fifsAbi, mainnetProvider) - // fifsFromAdmin = await fifsContract.connect(walletMainnet) - - // const resolverContract = new ethers.Contract(RESOLVERADDRESS, resolverAbi.abi, mainnetProvider) - // resolverFomAdmin = await resolverContract.connect(walletMainnet) - - const ENSCacheFactory = await ethers.getContractFactory("ENSCache", walletSidechain) - const enscache = await ENSCacheFactory.attach(ENSCACHEADDRESS) - const enscacheContract = await enscache.deployed() - ensCacheFromOwner = await enscacheContract.connect(deploymentOwner) as ENSCache - // ensCacheFromOwner = await enscacheContract.connect(walletSidechain) as ENSCache - - // const linkTokenFactory = await ethers.getContractFactory('LinkToken', walletSidechain) - // const linkTokenFactoryTx = await linkTokenFactory.attach(LINKTOKEN) - // const linkTokenContract = await linkTokenFactoryTx.deployed() - // linkTokenFromOwner = await linkTokenContract.connect(deploymentOwner) as LinkToken - - const oracleFactory = await ethers.getContractFactory("Oracle", walletSidechain) - const oracleFactoryTx = await oracleFactory.attach(ORACLEADDRESS) - const oracle = await oracleFactoryTx.deployed() - oracleFromOwner = await oracle.connect(deploymentOwner) as Oracle -} - -const getRandomPath = () => { - return "/" + Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) -} - -const createAndCheckStreamWithoutENS = async () => { - const randomPath = getRandomPath() - stringIdWithoutENS = walletSidechain.address.toLowerCase() + randomPath - console.log("creating stream without ens with name ", stringIdWithoutENS, " and metadata ", metadata1) - const tx = await registryFromUser.createStream(randomPath, metadata1) - console.log("transaction: ", tx) - // await tx.wait() - const receipt = await sideChainProvider.waitForTransaction(tx.hash, 2, 60000) - console.log("receipt: ", receipt) - const getMetadata = await registryFromUser.getStreamMetadata(stringIdWithoutENS) - console.log("checking metadata from stream ", stringIdWithoutENS, ": ", getMetadata) - console.log("SUCCESS creating stream worked") -} - -const setOracleFulfilmentPermission = async () => { - console.log(`Setting Oracle fulfilment Permission for ${CHAINLINK_NODE_ADDRESS}`) - const fulfilmentPermissionTX = await oracleFromOwner.setFulfillmentPermission(CHAINLINK_NODE_ADDRESS, true) - await fulfilmentPermissionTX.wait() - const permission = await oracleFromOwner.getAuthorizationStatus(CHAINLINK_NODE_ADDRESS) - console.log(`Chainlink Oracle permission for ${CHAINLINK_NODE_ADDRESS} is ${permission}`) -} - -const registerENSNameOnMainnet = async () => { - const randomDomain = Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) - // randomENSName = 'sam.eth' - randomENSName = randomDomain + ".eth" - console.log("registering ens name on mainnet:", randomENSName, " owner:", walletMainnet.address) - const hashedDomain = utils.keccak256(utils.toUtf8Bytes(randomDomain)) - const nameHashedENSName = utils.namehash(randomENSName) - let tx = await fifsFromAdmin.register(hashedDomain, walletMainnet.address) - await tx.wait() - console.log("seting resolver for ens") - - tx = await ensFomAdmin.setResolver(nameHashedENSName, RESOLVERADDRESS) - await tx.wait(2) - console.log("setting owner for ens") - - // tx = await resolverFomAdmin.setAddr(nameHashedENSName, '0x4178baBE9E5148c6D5fd431cD72884B07Ad855a0') - // await tx.wait() - // console.log('3') - - tx = await ensFomAdmin.setOwner(nameHashedENSName, walletMainnet.address) - await tx.wait() - console.log("querying owner from mainchain") - - const addr = await ensFomAdmin.owner(nameHashedENSName) - console.log("queried owner of", randomENSName, ": ", addr) -} - -const setChainlinkTokenAddressinENSCache = async () => { - console.log("owner of enscache is " + await ensCacheFromOwner.owner()) - console.log("used address to access is " + walletSidechain.address) - console.log("setting linktoken in enscache to " + LINKTOKEN) - const tx = await ensCacheFromOwner.setChainlinkTokenAddress(LINKTOKEN) - await tx.wait() - const res = await ensCacheFromOwner.getChainlinkToken() - console.log("linktoken in enscache is " + res) -} - -const setStreamRegistryInEnsCache = async () => { - console.log("setting streamregistry in enscache to " + STREAMREGISTRYADDRESS) - const tx = await ensCacheFromOwner.setStreamRegistry(STREAMREGISTRYADDRESS) - await tx.wait() - console.log("done setting streamregistry in enscache") -} - -const upgradeStreamRegistry = async () => { - const deploymentOwner = new Wallet(DEPLOYMENT_OWNER_KEY, sideChainProvider) - const streamregistryFactoryV2 = await ethers.getContractFactory("StreamRegistryV2", deploymentOwner) - console.log("upgrading Streamregistry: proxyaddress: " + STREAMREGISTRYADDRESS) - const streamRegistryUpgraded = await upgrades.upgradeProxy(STREAMREGISTRYADDRESS, streamregistryFactoryV2) - console.log("streamregistry upgraded, address is (should be same): " + streamRegistryUpgraded.address) -} - -const setEnsCacheInStreamRegistry = async () => { - // test role setup by creating a stream as trusted entitiy - // console.log('##1') - // const tx4 = await registryFromOwner.trustedSetStreamMetadata('asdf/asdf', 'asdf') - // await tx4.wait() - // console.log('##2') - console.log("setting enscache address as trusted role in streamregistry") - const role = await registryFromOwner.TRUSTED_ROLE() - console.log(`granting role ${role} ensaddress ${ENSCACHEADDRESS}`) - const tx2 = await registryFromOwner.grantRole(role, ENSCACHEADDRESS) - await tx2.wait() - console.log("done granting role") - console.log("setting enscache in streamregistry to " + ENSCACHEADDRESS) - const tx = await registryFromOwner.setEnsCache(ENSCACHEADDRESS) - await tx.wait() - console.log("done setting enscache in streamregistry") -} - -const grantTrustedRoleToAddress = async (trustedaddress: string) => { - console.log(`setting ${trustedaddress} as trusted role in streamregistry`) - const role = await registryFromOwner.TRUSTED_ROLE() - console.log(`granting role ${role} (TRUSTED_ROLE) to ${trustedaddress}`) - const tx2 = await registryFromOwner.grantRole(role, trustedaddress) - await tx2.wait() - console.log("done granting role") -} - -const setChainlinkJobId = async () => { - console.log("setting chainlink job id: " + CHAINLINK_JOBID) - const t2 = await ensCacheFromOwner.setChainlinkJobId(CHAINLINK_JOBID) - await t2.wait() - console.log("done setting chainlink jobid") -} - -const triggerChainlinkSyncOfENSNameToSidechain = async () => { - // only when redeploying locally - // console.log('Sending some Link to ENSCache') - // const txl = await linkTokenFromAdmin.transfer(ensCacheFromOwner.address, BigNumber.from('1000000000000000000000')) // 1000 link - // await txl.wait() - - const randomPath = getRandomPath() - console.log("creating stream with ensname: " + randomENSName + randomPath) - const tx = await registryFromUser.createStreamWithENS(randomENSName, randomPath, metadata1) - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - console.log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSName + randomPath) - } catch (err) { - console.log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - console.log("stream", randomENSName + randomPath, "was synced from mainchain, metadata: ", metadata1) - console.log("SUCCESS, everything worked!") -} - -async function main() { - await connectToAllContracts() - - await grantTrustedRoleToAddress("0x1D16f9833d458007D3eD7C843FBeF59A73988109") - - // set up contracts - await setOracleFulfilmentPermission() - await setChainlinkTokenAddressinENSCache() - await setStreamRegistryInEnsCache() - await setEnsCacheInStreamRegistry() - await setChainlinkJobId() - - // upgrade Contracts - await upgradeStreamRegistry() - - // test stream creation - await createAndCheckStreamWithoutENS() - - await registerENSNameOnMainnet() - await triggerChainlinkSyncOfENSNameToSidechain() -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/network-contracts/scripts/deployToLivenet/3_deployDelegatedAccessRegistry.ts b/packages/network-contracts/scripts/deployToLivenet/3_deployDelegatedAccessRegistry.ts deleted file mode 100644 index 9ad8d5493..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/3_deployDelegatedAccessRegistry.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { JsonRpcProvider } from "@ethersproject/providers" -import { Wallet } from "ethers" -import hhat from "hardhat" -const { ethers } = hhat - -// localsidechain -const chainURL = "http://10.200.10.1:8546" -const privKeyStreamRegistry = "" - -async function main() { - const wallet = new Wallet(privKeyStreamRegistry, new JsonRpcProvider(chainURL)) - - const DelegatedAccessRegistry = await ethers.getContractFactory("DelegatedAccessRegistry", wallet) - - const tx = await DelegatedAccessRegistry.deploy() - - const instance = await tx.deployed() - - console.log(`DelegatedAccessRegistry deployed at ${instance.address}`) - -} - -main() \ No newline at end of file diff --git a/packages/network-contracts/scripts/deployToLivenet/4_deployEnsCacheScript.ts b/packages/network-contracts/scripts/deployToLivenet/4_deployEnsCacheScript.ts deleted file mode 100644 index dc02f3ee3..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/4_deployEnsCacheScript.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { ethers, upgrades } from "hardhat" -import { Contract, providers, Wallet, utils } from "ethers" -import Debug from "debug" -const log = Debug("streamr:test:chainlink-ens") -import { config } from "@streamr/config" - -import { StreamRegistry } from "../../typechain" - -import { abi as ensAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/ENSRegistry.sol/ENSRegistry.json" -import { abi as fifsAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/FIFSRegistrar.sol/FIFSRegistrar.json" - -const mainnetConfig = config.dev0 -const sidechainConfig = config.dev1 -const mainnetProvider = new providers.JsonRpcProvider(mainnetConfig.rpcEndpoints[0].url) -const sideChainProvider = new providers.JsonRpcProvider(sidechainConfig.rpcEndpoints[0].url) - -const keyidparam = process.env.KEYID || "0" -let DEFAULTPRIVATEKEY = "" -if (keyidparam == "0") { - DEFAULTPRIVATEKEY = "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0" // deploymentowner of streamregistry -} else if (keyidparam == "1") { - DEFAULTPRIVATEKEY = "0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb" // owner of testdomain1.eth -} else if (keyidparam == "2") { - DEFAULTPRIVATEKEY = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" // owner of testdomain2.eth -} -// const MAINNETURL = "http://localhost:8545" -// const SIDECHAINURL = "http://localhost:8546" - -// const STREAMREGISTRYADDRESS = "0x6cCdd5d866ea766f6DF5965aA98DeCCD629ff222" - -// ens on mainnet -const ENSADDRESS = "0x92E8435EB56fD01BF4C79B66d47AC1A94338BB03" -const FIFSADDRESS = "0x57B81a9442805f88c4617B506206531e72d96290" -const RESOLVERADDRESS = "0xBc0c81a318D57ae54dA28DE69184A9c3aE9a1e1c" - -const ENSCacheV1 = "0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3" - -const domainOwner = new Wallet(DEFAULTPRIVATEKEY, mainnetProvider) -const domainOwnerSidechain = new Wallet(DEFAULTPRIVATEKEY, sideChainProvider) -const subdomainOwner = Wallet.createRandom().connect(sideChainProvider) - -let registryFromUser: StreamRegistry -let ensFromAdmin: Contract -let fifsFromAdmin: Contract -let randomENSName: string -let randomENSNameWithSubdomain: string -const metadata1 = "metadata1" - -const connectToAllContracts = async () => { - // send some eth to the subdomain owner - // await (await ensDomainOwner.sendTransaction({ to: ensSubdomainOwnerSidechain.address, value: ethers.utils.parseEther('1') })).wait() - await (await domainOwnerSidechain.sendTransaction({ to: subdomainOwner.address, value: ethers.utils.parseEther("1") })).wait() - - const streamregistryFactory = await ethers.getContractFactory("StreamRegistry", domainOwnerSidechain) - const registry = await streamregistryFactory.attach(sidechainConfig.contracts.StreamRegistry) - const registryContract = await registry.deployed() - registryFromUser = await registryContract.connect(domainOwnerSidechain) as StreamRegistry - - const ensContract = new Contract(ENSADDRESS, ensAbi, mainnetProvider) - ensFromAdmin = await ensContract.connect(domainOwner) - - const fifsContract = new Contract(FIFSADDRESS, fifsAbi, mainnetProvider) - fifsFromAdmin = await fifsContract.connect(domainOwner) -} - -const deployEnsCacheScript = async () => { - const ensCacheScriptFactory = await ethers.getContractFactory("ENSCacheV2Streamr", domainOwnerSidechain) - const ensCacheScript = await upgrades.deployProxy(ensCacheScriptFactory, - [domainOwner.address, - sidechainConfig.contracts.StreamRegistry, - ENSCacheV1], { kind: "uups" }) - await ensCacheScript.deployed() - - log("ensCacheScript deployed at:", ensCacheScript.address) - - // log(`setting Streamregistry address in ensCacheScript`) - // const setStreamRegTx = await ensCacheScript.setStreamRegistry(registryFromUser.address) - // await setStreamRegTx.wait() - // log(`setting ensCacheScript address as trusted role in streamregistry`) - log("domainOwnerSidechain.address:", domainOwnerSidechain.address) - const role = await registryFromUser.TRUSTED_ROLE() - log("has role:", await registryFromUser.hasRole(role, domainOwnerSidechain.address)) - const roleDefault = await registryFromUser.DEFAULT_ADMIN_ROLE() - log("has role default:", await registryFromUser.hasRole(roleDefault, domainOwnerSidechain.address)) - await(await registryFromUser.grantRole(role, domainOwnerSidechain.address)).wait() - - log("setting ENSCache address in StreamRegistry") - const setENSCacheTx = await registryFromUser.setEnsCache(ensCacheScript.address) - await setENSCacheTx.wait() - - log(`granting role ${role} ensaddress ${ensCacheScript.address}`) - const grantRoleTx = await registryFromUser.grantRole(role, ensCacheScript.address) - await grantRoleTx.wait() - log("ensCacheScript address set as trusted role in streamregistry") - - return ensCacheScript -} - -const getRandomPath = () => { - return "/" + Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) -} - -const registerENSNameOnMainnet = async () => { - const randomDomain = Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) - randomENSName = randomDomain + ".eth" - log("registering ens name on mainnet:", randomENSName, " owner:", domainOwner.address) - const hashedDomain = utils.keccak256(utils.toUtf8Bytes(randomDomain)) - const nameHashedENSName = utils.namehash(randomENSName) - let tx = await fifsFromAdmin.register(hashedDomain, domainOwner.address) - await tx.wait() - - log("setting owner (" + domainOwner.address + "), resolver and ttl for ens") - tx = await ensFromAdmin.setRecord(nameHashedENSName, domainOwner.address, RESOLVERADDRESS, 1000000) - await tx.wait() - - // const label = "subdomain" - // randomENSNameWithSubdomain = label + "." + randomENSName - // const nameHashedSubdomain = utils.namehash(randomENSNameWithSubdomain) - // const labelhash = utils.keccak256(utils.toUtf8Bytes(label)) - // log("registering subdomain on mainnet:", randomENSNameWithSubdomain, " owner:", subdomainOwner.address) - // tx = await fifsFromAdmin.register(utils.keccak256(utils.toUtf8Bytes(randomENSNameWithSubdomain)), subdomainOwner.address) - // await tx.wait() - - // log("setting owner (" + subdomainOwner.address + "), resolver and ttl for subdomain") - // tx = await ensFromAdmin.setSubnodeRecord(nameHashedENSName, labelhash, subdomainOwner.address, RESOLVERADDRESS, 1000000) - // await tx.wait() - - // log('setting subnode owner for subdomain') - // tx = await ensFromAdmin.setSubnodeOwner(nameHashedSubdomain, "subnodelabel1", walletMainnet.address, ) - // await tx.wait() - - // log('setting resolver for subdomain') - // tx = await ensFromAdmin.setResolver(nameHashedSubdomain, RESOLVERADDRESS) - // await tx.wait() - - log("querying ens owner from mainchain") - const addr = await ensFromAdmin.owner(nameHashedENSName) - log("queried owner of", randomENSName, ": ", addr) - - // log("querying subdomain owner from mainchain") - // const subdomainOwnerQueried = await ensFromAdmin.owner(nameHashedSubdomain) - // log("queried owner of", randomENSNameWithSubdomain, ": ", subdomainOwnerQueried) -} - -const changeENSOwnerOnMainnet = async () => { - // randomENSName = "testdomain2.eth" - const newOwner = "0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB" - log("changing owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) - const nameHashedENSName = utils.namehash(randomENSName) - const tx = await ensFromAdmin.setOwner(nameHashedENSName, newOwner) - await tx.wait() - log("set owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) -} - -const triggerChainlinkSyncOfENSNameToSidechain = async () => { - - const randomPath = getRandomPath() - // randomENSName = "testdomain2.eth" - log("creating stream with ensname: " + randomENSName + randomPath) - const tx = await registryFromUser.createStreamWithENS(randomENSName, randomPath, metadata1) // fires the ens event - // const tx = await registryFromUser.createStreamWithENS("zzhgq.eth", randomPath, metadata1) // fires the ens event - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSName + randomPath) - } catch (err) { - log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - log("stream", randomENSName + randomPath, "was synced from mainchain, metadata: ", metadata1) - log("SUCCESS, creating a stream with the ens from owner of domain worked") -} - -const triggerChainlinkSyncOfENSSubdomainToSidechain = async () => { - const randomPath = getRandomPath() - log("creating stream with subdomain from subdomainowner: " + randomENSNameWithSubdomain + randomPath) - const tx = await registryFromUser.connect(subdomainOwner).createStreamWithENS(randomENSNameWithSubdomain, randomPath, metadata1) - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSNameWithSubdomain + randomPath) - } catch (err) { - log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - log("stream", randomENSNameWithSubdomain + randomPath, "was synced from mainchain, metadata: ", metadata1) - log("SUCCESS, creating a stream with the ens subdomain from owner of the subdomain worked") -} - -async function main() { - await connectToAllContracts() - // await deployEnsCacheScript() - - await registerENSNameOnMainnet() - // await changeENSOwnerOnMainnet() - await triggerChainlinkSyncOfENSNameToSidechain() - // await triggerChainlinkSyncOfENSSubdomainToSidechain() -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/network-contracts/scripts/deployToLivenet/4a_prod_deployEnsCacheScript.ts b/packages/network-contracts/scripts/deployToLivenet/4a_prod_deployEnsCacheScript.ts deleted file mode 100644 index fa0ee3265..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/4a_prod_deployEnsCacheScript.ts +++ /dev/null @@ -1,220 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { ethers, upgrades } from "hardhat" -import { Contract } from "ethers" -import Debug from "debug" -const log = Debug("streamr:test:chainlink-ens") -import { config } from "@streamr/config" - -import { StreamRegistry } from "../../typechain" - -import { abi as ensAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/ENSRegistry.sol/ENSRegistry.json" -import { abi as fifsAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/FIFSRegistrar.sol/FIFSRegistrar.json" - -// const mainnetConfig = config.polygon -const sidechainConfig = config.polygon -// const mainnetProvider = new providers.JsonRpcProvider(mainnetConfig.rpcEndpoints[0].url) -const sideChainProvider = new ethers.providers.JsonRpcProvider(sidechainConfig.rpcEndpoints[0].url) - -// const keyidparam = process.env.KEYID || "0" -const DEFAULTPRIVATEKEY = process.env.PRIVATE_KEY || "" -// if (keyidparam == "0") { -// DEFAULTPRIVATEKEY = "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0" // deploymentowner of streamregistry -// } else if (keyidparam == "1") { -// DEFAULTPRIVATEKEY = "0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb" // owner of testdomain1.eth -// } else if (keyidparam == "2") { -// DEFAULTPRIVATEKEY = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" // owner of testdomain2.eth -// } - -// const MAINNETURL = "http://localhost:8545" -// const SIDECHAINURL = "http://localhost:8546" - -// const STREAMREGISTRYADDRESS = "0x6cCdd5d866ea766f6DF5965aA98DeCCD629ff222" - -// ens on mainnet -// const ENSADDRESS = "0x92E8435EB56fD01BF4C79B66d47AC1A94338BB03" -// const FIFSADDRESS = "0x57B81a9442805f88c4617B506206531e72d96290" -// const RESOLVERADDRESS = "0xBc0c81a318D57ae54dA28DE69184A9c3aE9a1e1c" - -const ENSCacheV1 = "0x870528c1aDe8f5eB4676AA2d15FC0B034E276A1A" - -// const domainOwner = new Wallet(DEFAULTPRIVATEKEY, mainnetProvider) -const domainOwnerSidechain = new ethers.Wallet(DEFAULTPRIVATEKEY, sideChainProvider) -// const subdomainOwner = Wallet.createRandom().connect(sideChainProvider) - -let registryFromUser: StreamRegistry -let ensFromAdmin: Contract -let fifsFromAdmin: Contract -let randomENSName: string -let randomENSNameWithSubdomain: string -const metadata1 = "metadata1" - -const connectToAllContracts = async () => { - // send some eth to the subdomain owner - // await (await ensDomainOwner.sendTransaction({ to: ensSubdomainOwnerSidechain.address, value: ethers.utils.parseEther('1') })).wait() - // await (await domainOwnerSidechain.sendTransaction({ to: subdomainOwner.address, value: ethers.utils.parseEther("1") })).wait() - - const streamregistryFactory = await ethers.getContractFactory("StreamRegistryV4", domainOwnerSidechain) - const registry = await streamregistryFactory.attach(sidechainConfig.contracts.StreamRegistry) - const registryContract = await registry.deployed() - registryFromUser = await registryContract.connect(domainOwnerSidechain) as StreamRegistry - - // const ensContract = new Contract(ENSADDRESS, ensAbi, mainnetProvider) - // ensFromAdmin = await ensContract.connect(domainOwner) - - // const fifsContract = new Contract(FIFSADDRESS, fifsAbi, mainnetProvider) - // fifsFromAdmin = await fifsContract.connect(domainOwner) -} - -const deployEnsCacheScript = async () => { - const ensCacheScriptFactory = await ethers.getContractFactory("ENSCacheV2Streamr", domainOwnerSidechain) - const ensCacheScript = await upgrades.deployProxy(ensCacheScriptFactory, - ["0xc244dA783A3B96f4D420A4eEfb105CD0Db4bE01a", - sidechainConfig.contracts.StreamRegistry, - ENSCacheV1], { kind: "uups" }) - await ensCacheScript.deployed() - - log("ensCacheScript deployed at:", ensCacheScript.address) - - // log(`setting Streamregistry address in ensCacheScript`) - // const setStreamRegTx = await ensCacheScript.setStreamRegistry(registryFromUser.address) - // await setStreamRegTx.wait() - // log(`setting ensCacheScript address as trusted role in streamregistry`) - log("domainOwnerSidechain.address:", domainOwnerSidechain.address) - const role = await registryFromUser.TRUSTED_ROLE() - log("has role:", await registryFromUser.hasRole(role, domainOwnerSidechain.address)) - const roleDefault = await registryFromUser.DEFAULT_ADMIN_ROLE() - log("has role default:", await registryFromUser.hasRole(roleDefault, domainOwnerSidechain.address)) - // await(await registryFromUser.grantRole(role, domainOwnerSidechain.address)).wait() - - log("setting ENSCache address in StreamRegistry") - const setENSCacheTx = await registryFromUser.setEnsCache(ensCacheScript.address) - await setENSCacheTx.wait() - - log(`granting role ${role} ensaddress ${ensCacheScript.address}`) - const grantRoleTx = await registryFromUser.grantRole(role, ensCacheScript.address) - await grantRoleTx.wait() - log("ensCacheScript address set as trusted role in streamregistry") - - return ensCacheScript -} - -const getRandomPath = () => { - return "/" + Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) -} - -// const registerENSNameOnMainnet = async () => { -// const randomDomain = Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) -// randomENSName = randomDomain + ".eth" -// log("registering ens name on mainnet:", randomENSName, " owner:", domainOwner.address) -// const hashedDomain = utils.keccak256(utils.toUtf8Bytes(randomDomain)) -// const nameHashedENSName = utils.namehash(randomENSName) -// let tx = await fifsFromAdmin.register(hashedDomain, domainOwner.address) -// await tx.wait() - -// log("setting owner (" + domainOwner.address + "), resolver and ttl for ens") -// tx = await ensFromAdmin.setRecord(nameHashedENSName, domainOwner.address, RESOLVERADDRESS, 1000000) -// await tx.wait() - -// // const label = "subdomain" -// // randomENSNameWithSubdomain = label + "." + randomENSName -// // const nameHashedSubdomain = utils.namehash(randomENSNameWithSubdomain) -// // const labelhash = utils.keccak256(utils.toUtf8Bytes(label)) -// // log("registering subdomain on mainnet:", randomENSNameWithSubdomain, " owner:", subdomainOwner.address) -// // tx = await fifsFromAdmin.register(utils.keccak256(utils.toUtf8Bytes(randomENSNameWithSubdomain)), subdomainOwner.address) -// // await tx.wait() - -// // log("setting owner (" + subdomainOwner.address + "), resolver and ttl for subdomain") -// // tx = await ensFromAdmin.setSubnodeRecord(nameHashedENSName, labelhash, subdomainOwner.address, RESOLVERADDRESS, 1000000) -// // await tx.wait() - -// // log('setting subnode owner for subdomain') -// // tx = await ensFromAdmin.setSubnodeOwner(nameHashedSubdomain, "subnodelabel1", walletMainnet.address, ) -// // await tx.wait() - -// // log('setting resolver for subdomain') -// // tx = await ensFromAdmin.setResolver(nameHashedSubdomain, RESOLVERADDRESS) -// // await tx.wait() - -// log("querying ens owner from mainchain") -// const addr = await ensFromAdmin.owner(nameHashedENSName) -// log("queried owner of", randomENSName, ": ", addr) - -// // log("querying subdomain owner from mainchain") -// // const subdomainOwnerQueried = await ensFromAdmin.owner(nameHashedSubdomain) -// // log("queried owner of", randomENSNameWithSubdomain, ": ", subdomainOwnerQueried) -// } - -// const changeENSOwnerOnMainnet = async () => { -// // randomENSName = "testdomain2.eth" -// const newOwner = "0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB" -// log("changing owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) -// const nameHashedENSName = utils.namehash(randomENSName) -// const tx = await ensFromAdmin.setOwner(nameHashedENSName, newOwner) -// await tx.wait() -// log("set owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) -// } - -const triggerChainlinkSyncOfENSNameToSidechain = async () => { - - const randomPath = getRandomPath() - // randomENSName = "testdomain2.eth" - log("creating stream with ensname: " + randomENSName + randomPath) - const tx = await registryFromUser.createStreamWithENS(randomENSName, randomPath, metadata1) // fires the ens event - // const tx = await registryFromUser.createStreamWithENS("zzhgq.eth", randomPath, metadata1) // fires the ens event - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSName + randomPath) - } catch (err) { - log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - log("stream", randomENSName + randomPath, "was synced from mainchain, metadata: ", metadata1) - log("SUCCESS, creating a stream with the ens from owner of domain worked") -} - -// const triggerChainlinkSyncOfENSSubdomainToSidechain = async () => { -// const randomPath = getRandomPath() -// log("creating stream with subdomain from subdomainowner: " + randomENSNameWithSubdomain + randomPath) -// const tx = await registryFromUser.connect(subdomainOwner).createStreamWithENS(randomENSNameWithSubdomain, randomPath, metadata1) -// // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) -// await tx.wait() -// log("call done") -// let streamMetaDataCreatedByChainlink = "" -// while (streamMetaDataCreatedByChainlink !== metadata1) { -// try { -// streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSNameWithSubdomain + randomPath) -// } catch (err) { -// log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) -// await new Promise((resolve) => { -// return setTimeout(resolve, 3000) -// }) -// } -// } -// log("stream", randomENSNameWithSubdomain + randomPath, "was synced from mainchain, metadata: ", metadata1) -// log("SUCCESS, creating a stream with the ens subdomain from owner of the subdomain worked") -// } - -async function main() { - await connectToAllContracts() - await deployEnsCacheScript() - - // await registerENSNameOnMainnet() - // await changeENSOwnerOnMainnet() - // await triggerChainlinkSyncOfENSNameToSidechain() - // await triggerChainlinkSyncOfENSSubdomainToSidechain() -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/network-contracts/scripts/deployToLivenet/upgradeStreamRegistry.ts b/packages/network-contracts/scripts/deployToLivenet/upgradeStreamRegistry.ts deleted file mode 100644 index 822811e23..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/upgradeStreamRegistry.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ethers, upgrades } from "hardhat" -import { networks } from "@streamr/config" -import { parseUnits } from "ethers/lib/utils" - -// Polygon mainet -const STREAMREGISTRYADDRESS = networks.polygon.contracts.StreamRegistry -const DEPLOYMENT_OWNER_KEY = process.env.OCR_ADMIN_PRIVATEKEY || "" - -// localsidechain -// const DEPLOYMENT_OWNER_KEY = '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae' -// const STREAMREGISTRYADDRESS = '0x9EffC9A884098180dE81B254e302DFE1598aE3AF' - -async function main() { - - const deploymentOwner = new ethers.Wallet(DEPLOYMENT_OWNER_KEY, ethers.provider) - deploymentOwner.getFeeData = async() => { - console.log("##########################") - return { maxFeePerGas: parseUnits("500", "gwei"), maxPriorityFeePerGas: parseUnits("1", "gwei"), gasPrice: parseUnits("200", "gwei") } - } - const streamregistryFactoryV4 = await ethers.getContractFactory("StreamRegistryV4", deploymentOwner) - console.log("upgrading Streamregistry: proxyaddress: " + STREAMREGISTRYADDRESS) - const streamRegistryUpgraded = await upgrades.upgradeProxy(STREAMREGISTRYADDRESS, streamregistryFactoryV4, {kind: "uups"}) - console.log("streamregistry upgraded, address is (should be same): " + streamRegistryUpgraded.address) -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/network-contracts/scripts/deployToLivenet/upgradeStreamStorageRegistry.ts b/packages/network-contracts/scripts/deployToLivenet/upgradeStreamStorageRegistry.ts deleted file mode 100644 index cd1fa8676..000000000 --- a/packages/network-contracts/scripts/deployToLivenet/upgradeStreamStorageRegistry.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { ethers, upgrades } from "hardhat" -import { networks } from "@streamr/config" -import { parseUnits } from "ethers/lib/utils" - -// Polygon mainet -const STREAMSTORAGEREGISTRYADDRESS = networks.polygon.contracts.StreamStorageRegistry -const DEPLOYMENT_OWNER_KEY = process.env.OCR_ADMIN_PRIVATEKEY || "" - -// localsidechain -// const DEPLOYMENT_OWNER_KEY = '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae' -// const STREAMSTORAGEREGISTRYADDRESS = networks.dev1.contracts.StreamStorageRegistry -// const STREAMSTORAGEREGISTRYADDRESS = '0xd57E7d0915c117A1510546b48f6beC551FDa9B93' - -// async function forceImport() { -// const streamStorageRegistryFactory = await ethers.getContractFactory('StreamStorageRegistry') -// await upgrades.forceImport(STREAMSTORAGEREGISTRYADDRESS, -// streamStorageRegistryFactory, {kind: 'uups'}) -// console.log('StreamStorageRegistry imported, check file in .openzeppelin') -// } - -async function main() { - // await forceImport() - - const deploymentOwner = new ethers.Wallet(DEPLOYMENT_OWNER_KEY, ethers.provider) - deploymentOwner.getFeeData = async() => { - console.log("##########################") - return { maxFeePerGas: parseUnits("500", "gwei"), maxPriorityFeePerGas: parseUnits("50", "gwei"), gasPrice: parseUnits("200", "gwei") } - } - const streamstorageregistryFactoryV2 = await ethers.getContractFactory("StreamStorageRegistryV2", deploymentOwner) - console.log("upgrading StreamStorageregistry: proxyaddress: " + STREAMSTORAGEREGISTRYADDRESS) - const streamStorageRegistryUpgraded = await upgrades.upgradeProxy(STREAMSTORAGEREGISTRYADDRESS, streamstorageregistryFactoryV2, {kind: "uups"}) - console.log("streamstorageregistry upgraded, address is (should be same): " + streamStorageRegistryUpgraded.address) -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/network-contracts/selectors.txt b/packages/network-contracts/selectors.txt index ac04b883e..e882d3559 100644 --- a/packages/network-contracts/selectors.txt +++ b/packages/network-contracts/selectors.txt @@ -1,3 +1,32 @@ +# ENSCacheV2Streamr functions +0x5f4a21d8 fulfillENSOwner() +0x485cc955 initialize() +0x8da5cb5b owner() +0x2b1fd995 owners() +0x715018a6 renounceOwnership() +0x1877e534 requestENSOwnerAndCreateStream() +0x0c3cac3b setStreamRegistry() +0xf11a120b setStreamrScript() +0xe3642153 streamRegistry() +0x2bf2680b streamrScript() +0xf2fde38b transferOwnership() +0x3659cfe6 upgradeTo() +0x4f1ef286 upgradeToAndCall() + +# ENSCacheV2Streamr events +0x7e644d79 AdminChanged +0x1cf3b03a BeaconUpgraded +0x8be0079c OwnershipTransferred +0x6dca0be1 RequestENSOwnerAndCreateStream +0xbc7cd75a Upgraded + + + +# IStreamRegistry functions +0xdbfc1d87 ENScreateStreamCallback() + + + # AcceptEverythingPaymaster functions 0x5c5e3db1 CALLDATA_SIZE_LIMIT() 0xb90b41cf FORWARDER_HUB_OVERHEAD() @@ -3212,103 +3241,6 @@ -# ENSCache functions -0xec65d0f8 cancelRequest() -0x913d9932 fulfillENSOwner() -0x165d35e1 getChainlinkToken() -0xc2939d97 jobId() -0x7dc0d1d0 oracle() -0x8da5cb5b owner() -0x2b1fd995 owners() -0x715018a6 renounceOwnership() -0xd5f5729d requestENSOwner() -0x1877e534 requestENSOwnerAndCreateStream() -0x634172bf resetCacheForENSName() -0x9a46768e resetCacheForMyENSName() -0xe90f432c setChainlinkJobId() -0x230e6d23 setChainlinkTokenAddress() -0x4c69c00f setOracleAddress() -0x0c3cac3b setStreamRegistry() -0xadd14a74 tempENSnames() -0xa74e712f tempIdPaths() -0x413a38ed tempMetadatas() -0x87103c5f tempRequestorAddress() -0xf2fde38b transferOwnership() -0x8dc654a2 withdrawLink() - -# ENSCache events -0xe1fe3afa ChainlinkCancelled -0x7cc135e0 ChainlinkFulfilled -0xb5e6e01e ChainlinkRequested -0x8be0079c OwnershipTransferred - - - -# IStreamRegistry functions -0xdbfc1d87 ENScreateStreamCallback() - - - -# ENSCacheV1 functions -0xec65d0f8 cancelRequest() -0x913d9932 fulfillENSOwner() -0x165d35e1 getChainlinkToken() -0xc2939d97 jobId() -0x7dc0d1d0 oracle() -0x8da5cb5b owner() -0x2b1fd995 owners() -0x715018a6 renounceOwnership() -0xd5f5729d requestENSOwner() -0x1877e534 requestENSOwnerAndCreateStream() -0xe90f432c setChainlinkJobId() -0x230e6d23 setChainlinkTokenAddress() -0x4c69c00f setOracleAddress() -0x0c3cac3b setStreamRegistry() -0xadd14a74 tempENSnames() -0xa74e712f tempIdPaths() -0x413a38ed tempMetadatas() -0x87103c5f tempRequestorAddress() -0xf2fde38b transferOwnership() -0x8dc654a2 withdrawLink() - -# ENSCacheV1 events -0xe1fe3afa ChainlinkCancelled -0x7cc135e0 ChainlinkFulfilled -0xb5e6e01e ChainlinkRequested -0x8be0079c OwnershipTransferred - - - -# IStreamRegistry functions -0xdbfc1d87 ENScreateStreamCallback() - - - -# ENSCacheV2Streamr functions -0x5f4a21d8 fulfillENSOwner() -0xc0c53b8b initialize() -0x8da5cb5b owner() -0x2b1fd995 owners() -0x52d1902d proxiableUUID() -0x715018a6 renounceOwnership() -0x1877e534 requestENSOwnerAndCreateStream() -0x25119d79 setENSCacheV1() -0x0c3cac3b setStreamRegistry() -0xf11a120b setStreamrScript() -0xf2fde38b transferOwnership() -0x3659cfe6 upgradeTo() -0x4f1ef286 upgradeToAndCall() - -# ENSCacheV2Streamr events -0x7e644d79 AdminChanged -0x1cf3b03a BeaconUpgraded -0x7f26b83f Initialized -0x8be0079c OwnershipTransferred -0x6dca0be1 RequestENSOwnerAndCreateStream -0xbc7cd75a Upgraded - - - # ERC20Mintable functions 0xdd62ed3e allowance() 0x095ea7b3 approve() diff --git a/packages/network-contracts/src/exports.ts b/packages/network-contracts/src/exports.ts index 3089c520c..3f04debfd 100644 --- a/packages/network-contracts/src/exports.ts +++ b/packages/network-contracts/src/exports.ts @@ -25,8 +25,8 @@ export { abi as streamStorageRegistryABI, bytecode as streamStorageRegistryBytec export type { StreamStorageRegistryV2 as StreamStorageRegistry } from "../typechain/contracts/StreamStorageRegistry/StreamStorageRegistryV2" export { abi as ENSCacheV2ABI, bytecode as ENSCacheV2Bytecode } - from "../artifacts/contracts/chainlinkClient/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json" -export type { ENSCacheV2Streamr as ENSCacheV2 } from "../typechain/contracts/chainlinkClient/ENSCacheV2Streamr" + from "../artifacts/contracts/ENS/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json" +export type { ENSCacheV2Streamr as ENSCacheV2 } from "../typechain/contracts/ENS/ENSCacheV2Streamr.sol/ENSCacheV2Streamr" export { abi as nodeRegistryABI, bytecode as nodeRegistryBytecode } from "../artifacts/contracts/NodeRegistry/NodeRegistry.sol/NodeRegistry.json" @@ -104,11 +104,11 @@ export type { ProjectStakingV1 } from "../typechain/contracts/Hub/ProjectStaking export { abi as marketplaceV4ABI, bytecode as marketplaceV4Bytecode } from "../artifacts/contracts/Hub/Marketplace/MarketplaceV4.sol/MarketplaceV4.json" -export type { MarketplaceV4 } from "../typechain/contracts/Hub/Marketplace/MarketplaceV4.sol/MarketplaceV4" +export type { MarketplaceV4 } from "../typechain/contracts/Hub/Marketplace/MarketplaceV4.sol/MarketplaceV4" export { abi as uniswap2AdapterV4ABI, bytecode as uniswap2AdapterV4Bytecode } from "../artifacts/contracts/Hub/Marketplace/Uniswap2AdapterV4.sol/Uniswap2AdapterV4.json" -export type { Uniswap2AdapterV4 } from "../typechain/contracts/Hub/Marketplace/Uniswap2AdapterV4.sol/Uniswap2AdapterV4" +export type { Uniswap2AdapterV4 } from "../typechain/contracts/Hub/Marketplace/Uniswap2AdapterV4.sol/Uniswap2AdapterV4" export { abi as remoteMarketplaceV1ABI, bytecode as remoteMarketplaceV1Bytecode } from "../artifacts/contracts/Hub/Marketplace/RemoteMarketplaceV1.sol/RemoteMarketplaceV1.json" @@ -122,7 +122,7 @@ import { deployedBytecode as sponsorshipFactoryBytecode } from "../artifacts/con import { deployedBytecode as streamrConfigBytecode } from "../artifacts/contracts/OperatorTokenomics/StreamrConfig.sol/StreamrConfig.json" import { deployedBytecode as streamRegistryBytecode } from "../artifacts/contracts/StreamRegistry/StreamRegistryV4.sol/StreamRegistryV4.json" import { deployedBytecode as streamStorageRegistryBytecode } from "../artifacts/contracts/StreamStorageRegistry/StreamStorageRegistry.sol/StreamStorageRegistry.json" -import { deployedBytecode as ENSCacheV2Bytecode } from "../artifacts/contracts/chainlinkClient/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json" +import { deployedBytecode as ENSCacheV2Bytecode } from "../artifacts/contracts/ENS/ENSCacheV2Streamr.sol/ENSCacheV2Streamr.json" import { deployedBytecode as nodeRegistryBytecode } from "../artifacts/contracts/NodeRegistry/NodeRegistry.sol/NodeRegistry.json" import { deployedBytecode as tokenBytecode } from "../artifacts/contracts/OperatorTokenomics/testcontracts/TestToken.sol/TestToken.json" import { deployedBytecode as maxOperatorsJoinPolicyBytecode } from "../artifacts/contracts/OperatorTokenomics/SponsorshipPolicies/MaxOperatorsJoinPolicy.sol/MaxOperatorsJoinPolicy.json" diff --git a/packages/network-contracts/test/hardhat/Registries/ENScache.test.ts b/packages/network-contracts/test/hardhat/Registries/ENScache.test.ts index 7b0098b3c..363cec4a3 100644 --- a/packages/network-contracts/test/hardhat/Registries/ENScache.test.ts +++ b/packages/network-contracts/test/hardhat/Registries/ENScache.test.ts @@ -1,18 +1,14 @@ import { upgrades, ethers } from "hardhat" import { expect } from "chai" -import { utils, BigNumber } from "ethers" +import { utils } from "ethers" -import ENSCacheJson from "../../../artifacts/contracts/chainlinkClient/ENSCache.sol/ENSCache.json" +import ENSCacheJson from "../../../artifacts/contracts/ENS/ENSCache.sol/ENSCache.json" import ForwarderJson from "../../../artifacts/@openzeppelin/contracts/metatx/MinimalForwarder.sol/MinimalForwarder.json" -import OracleJson from "../../../artifacts/@chainlink/contracts/src/v0.6/Oracle.sol/Oracle.json" -import LinkTokenJson from "../../../artifacts/@chainlink/contracts/src/v0.4/LinkToken.sol/LinkToken.json" -import type { ENSCache, MinimalForwarder, Oracle, LinkToken, StreamRegistry } from "../../../typechain" +import type { ENSCache, MinimalForwarder, StreamRegistry } from "../../../typechain" describe("ENSCache", async (): Promise => { let wallets let ensCacheFromAdmin: ENSCache - let linkTokenFromAdmin: LinkToken - let oracleFromAdmin: Oracle let minimalForwarderFromAdmin: MinimalForwarder // let minimalForwarderFromUser0: MinimalForwarder let registryFromAdmin: StreamRegistry @@ -29,21 +25,6 @@ describe("ENSCache", async (): Promise => { ) minimalForwarderFromAdmin = (await minimalForwarderFromAdminFactory.deploy()) as MinimalForwarder await minimalForwarderFromAdmin.deployed() - const linkTokenFromAdminFactory = await ethers.getContractFactory( - LinkTokenJson.abi, - LinkTokenJson.bytecode, - wallets[0] - ) - linkTokenFromAdmin = (await linkTokenFromAdminFactory.deploy()) as LinkToken - await linkTokenFromAdmin.deployed() - const oracleFromAdminFactory = await ethers.getContractFactory( - OracleJson.abi, - OracleJson.bytecode, - wallets[0] - ) - oracleFromAdmin = (await oracleFromAdminFactory.deploy(linkTokenFromAdmin.address)) as Oracle - await oracleFromAdmin.deployed() - await oracleFromAdmin.setFulfillmentPermission(adminAddress, true) const ensCacheFromAdminFactory = await ethers.getContractFactory( ENSCacheJson.abi, ENSCacheJson.bytecode, @@ -52,12 +33,7 @@ describe("ENSCache", async (): Promise => { ensCacheFromAdmin = (await ensCacheFromAdminFactory.deploy(adminAddress, "jobid")) as ENSCache await ensCacheFromAdmin.deployed() - await ensCacheFromAdmin.setChainlinkTokenAddress(linkTokenFromAdmin.address) - - await linkTokenFromAdmin.transfer(ensCacheFromAdmin.address, - BigNumber.from("1000000000000000000000")) // 1000 link - - const streamRegistryFactory = await ethers.getContractFactory("StreamRegistryV2") + const streamRegistryFactory = await ethers.getContractFactory("StreamRegistryV5") const streamRegistryFactoryTx = await upgrades.deployProxy(streamRegistryFactory, [ ensCacheFromAdmin.address, minimalForwarderFromAdmin.address @@ -67,91 +43,11 @@ describe("ENSCache", async (): Promise => { await ensCacheFromAdmin.setStreamRegistry(registryFromAdmin.address) }) - it("updates the cache entry: requestENSOwner", async () => { - const tx = await ensCacheFromAdmin.requestENSOwner("ensdomain1") - const tr = await tx.wait() - const requestId = tr.logs[0].topics[1] - await expect(ensCacheFromAdmin.fulfillENSOwner(requestId, utils.hexZeroPad(adminAddress, 32))) - .to.emit(ensCacheFromAdmin, "ChainlinkFulfilled") - .and.to.not.emit(registryFromAdmin, "StreamCreated") - }) - it("updates the cache entry and creates a stream: requestENSOwnerAndCreateStream", async () => { const tx = await ensCacheFromAdmin.requestENSOwnerAndCreateStream("ensdomain1", "/path", "metadata", adminAddress) const tr = await tx.wait() - const requestId = tr.logs[0].topics[1] - await expect(ensCacheFromAdmin.fulfillENSOwner(requestId, utils.hexZeroPad(adminAddress, 32))).to.emit(registryFromAdmin, "StreamCreated") + const ensName = tr.logs[0].topics[1] + await expect(ensCacheFromAdmin.fulfillENSOwner(ensName, utils.hexZeroPad(adminAddress, 32))) + .to.emit(registryFromAdmin, "StreamCreated") }) - - // TODO: ENSCache is not meta-transaction ready right now - - // it('positivetest istrustedForwarder', async (): Promise => { - // expect(await ensCacheFromAdmin.isTrustedForwarder(minimalForwarderFromAdmin.address)).to.equal(true) - // }) - - // it('positivetest metatransaction', async (): Promise => { - // const data = await ensCacheFromAdmin.interface.encodeFunctionData('requestENSOwner', ['ensdomain1']) - - // const req = { - // from: adminAddress, - // to: ensCacheFromAdmin.address, - // value: '0', - // gas: '100000', - // nonce: (await minimalForwarderFromAdmin.getNonce(adminAddress)).toString(), - // data - // } - // const sign = ethSigUtil.signTypedMessage(utils.arrayify(wallets[0].privateKey), - // { - // data: { - // types: { - // EIP712Domain: [ - // { - // name: 'name', type: 'string' - // }, - // { - // name: 'version', type: 'string' - // }, - // { - // name: 'chainId', type: 'uint256' - // }, - // { - // name: 'verifyingContract', type: 'address' - // }, - // ], - // ForwardRequest: [ - // { - // name: 'from', type: 'address' - // }, - // { - // name: 'to', type: 'address' - // }, - // { - // name: 'value', type: 'uint256' - // }, - // { - // name: 'gas', type: 'uint256' - // }, - // { - // name: 'nonce', type: 'uint256' - // }, - // { - // name: 'data', type: 'bytes' - // }, - // ], - // }, - // domain: { - // name: 'MinimalForwarder', - // version: '0.0.1', - // chainId: (await provider.getNetwork()).chainId, - // verifyingContract: minimalForwarderFromAdmin.address, - // }, - // primaryType: 'ForwardRequest', - // message: req - // } - // }) - - // const res = await minimalForwarderFromUser0.verify(req, sign) - // expect(res).to.be.true - // await expect(minimalForwarderFromUser0.execute(req, sign)).to.not.be.reverted - // }) }) diff --git a/packages/network-contracts/test/integration/ens-e2e.test.ts b/packages/network-contracts/test/integration/ens-e2e.test.ts deleted file mode 100644 index 274e6e4fe..000000000 --- a/packages/network-contracts/test/integration/ens-e2e.test.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { ethers } from "hardhat" -import { Contract, providers, Wallet, utils } from "ethers" -import Debug from "debug" -const log = Debug("streamr:test:chainlink-ens") -import { config } from "@streamr/config" - -import { StreamRegistry } from "../../typechain" - -import { abi as ensAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/ENSRegistry.sol/ENSRegistry.json" -import { abi as fifsAbi } from "@ensdomains/ens-contracts/artifacts/contracts/registry/FIFSRegistrar.sol/FIFSRegistrar.json" - -const mainnetConfig = config.dev2 -const sidechainConfig = config.dev2 -const mainnetProvider = new providers.JsonRpcProvider(mainnetConfig.rpcEndpoints[0].url) -const sideChainProvider = new providers.JsonRpcProvider(sidechainConfig.rpcEndpoints[0].url) - -const keyidparam = process.env.KEYID || "0" -let DEFAULTPRIVATEKEY = "" -if (keyidparam == "0") { - DEFAULTPRIVATEKEY = "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0" // deploymentowner of streamregistry -} else if (keyidparam == "1") { - DEFAULTPRIVATEKEY = "0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb" // owner of testdomain1.eth -} else if (keyidparam == "2") { - DEFAULTPRIVATEKEY = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" // owner of testdomain2.eth -} - -// ens on mainnet -const ENSADDRESS = mainnetConfig.contracts.ENS -const FIFSADDRESS = mainnetConfig.contracts.FIFSRegistrar -const RESOLVERADDRESS = mainnetConfig.contracts.PublicResolver -const STREAMREGISTRY = sidechainConfig.contracts.StreamRegistry - -// const ENSCacheV1 = "0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3" - -const domainOwner = new Wallet(DEFAULTPRIVATEKEY, mainnetProvider) -const domainOwnerSidechain = new Wallet(DEFAULTPRIVATEKEY, sideChainProvider) -const subdomainOwner = Wallet.createRandom().connect(sideChainProvider) - -let registryFromUser: StreamRegistry -let ensFromAdmin: Contract -let fifsFromAdmin: Contract -let randomENSName: string -let randomENSNameWithSubdomain: string -const metadata1 = "metadata1" - -const connectToAllContracts = async () => { - // send some eth to the subdomain owner - // await (await ensDomainOwner.sendTransaction({ to: ensSubdomainOwnerSidechain.address, value: ethers.utils.parseEther('1') })).wait() - await (await domainOwnerSidechain.sendTransaction({ to: subdomainOwner.address, value: ethers.utils.parseEther("1") })).wait() - - const streamregistryFactory = await ethers.getContractFactory("StreamRegistry", domainOwnerSidechain) - const registry = await streamregistryFactory.attach(STREAMREGISTRY) - registryFromUser = await registry.connect(domainOwnerSidechain).deployed() as StreamRegistry - - const ensContract = new Contract(ENSADDRESS, ensAbi, mainnetProvider) - ensFromAdmin = await ensContract.connect(domainOwner).deployed() - - const fifsContract = new Contract(FIFSADDRESS, fifsAbi, mainnetProvider) - fifsFromAdmin = await fifsContract.connect(domainOwner).deployed() -} - -const getRandomPath = () => { - return "/" + Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) -} - -const registerENSNameOnMainnet = async () => { - const randomDomain = Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 5) - randomENSName = randomDomain + ".eth" - log("registering ens name on mainnet:", randomENSName, " owner:", domainOwner.address) - const hashedDomain = utils.keccak256(utils.toUtf8Bytes(randomDomain)) - const nameHashedENSName = utils.namehash(randomENSName) - let tx = await fifsFromAdmin.register(hashedDomain, domainOwner.address) - await tx.wait() - - log("setting owner (" + domainOwner.address + "), resolver and ttl for ens") - tx = await ensFromAdmin.setRecord(nameHashedENSName, domainOwner.address, RESOLVERADDRESS, 1000000) - await tx.wait() - - const label = "subdomain" - randomENSNameWithSubdomain = label + "." + randomENSName - const nameHashedSubdomain = utils.namehash(randomENSNameWithSubdomain) - const labelhash = utils.keccak256(utils.toUtf8Bytes(label)) - log("registering subdomain on mainnet:", randomENSNameWithSubdomain, " owner:", subdomainOwner.address) - tx = await fifsFromAdmin.register(utils.keccak256(utils.toUtf8Bytes(randomENSNameWithSubdomain)), subdomainOwner.address) - await tx.wait() - - log("setting owner (" + subdomainOwner.address + "), resolver and ttl for subdomain") - tx = await ensFromAdmin.setSubnodeRecord(nameHashedENSName, labelhash, subdomainOwner.address, RESOLVERADDRESS, 1000000) - await tx.wait() - - // log("setting subnode owner for subdomain") - // tx = await ensFromAdmin.setSubnodeOwner(nameHashedSubdomain, "subnodelabel1", subdomainOwner.address, ) - // await tx.wait() - - // log("setting resolver for subdomain") - // tx = await ensFromAdmin.setResolver(nameHashedSubdomain, RESOLVERADDRESS) - // await tx.wait() - - log("querying ens owner from mainchain") - const addr = await ensFromAdmin.owner(nameHashedENSName) - log("queried owner of", randomENSName, ": ", addr) - - log("querying subdomain owner from mainchain") - const subdomainOwnerQueried = await ensFromAdmin.owner(nameHashedSubdomain) - log("queried owner of", randomENSNameWithSubdomain, ": ", subdomainOwnerQueried) -} - -const changeENSOwnerOnMainnet = async () => { - // randomENSName = "testdomain2.eth" - const newOwner = "0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB" - log("changing owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) - const nameHashedENSName = utils.namehash(randomENSName) - const tx = await ensFromAdmin.setOwner(nameHashedENSName, newOwner) - await tx.wait() - log("set owner of ens name on mainnet:", randomENSName, " owner: " + newOwner) -} - -const triggerSyncOfENSNameToSidechain = async () => { - - const randomPath = getRandomPath() - // randomENSName = "testdomain2.eth" - log("creating stream with ensname: " + randomENSName + randomPath) - const tx = await registryFromUser.createStreamWithENS(randomENSName, randomPath, metadata1) // fires the ens event - // const tx = await registryFromUser.createStreamWithENS("zzhgq.eth", randomPath, metadata1) // fires the ens event - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSName + randomPath) - } catch (err) { - log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - log("stream", randomENSName + randomPath, "was synced from mainchain, metadata: ", metadata1) - log("SUCCESS, creating a stream with the ens from owner of domain worked") -} - -const triggerSyncOfENSSubdomainToSidechain = async () => { - const randomPath = getRandomPath() - log("creating stream with subdomain from subdomainowner: " + randomENSNameWithSubdomain + randomPath) - const tx = await registryFromUser.connect(subdomainOwner).createStreamWithENS(randomENSNameWithSubdomain, randomPath, metadata1) - // const tx = await ensCacheFromOwner.requestENSOwner(randomENSName) - await tx.wait() - log("call done") - let streamMetaDataCreatedByChainlink = "" - while (streamMetaDataCreatedByChainlink !== metadata1) { - try { - streamMetaDataCreatedByChainlink = await registryFromUser.getStreamMetadata(randomENSNameWithSubdomain + randomPath) - } catch (err) { - log("checking if stream is created through chainlink: metadata is ", streamMetaDataCreatedByChainlink) - await new Promise((resolve) => { - return setTimeout(resolve, 3000) - }) - } - } - log("stream", randomENSNameWithSubdomain + randomPath, "was synced from mainchain, metadata: ", metadata1) - log("SUCCESS, creating a stream with the ens subdomain from owner of the subdomain worked") -} - -async function main() { - await connectToAllContracts() - - await registerENSNameOnMainnet() - // await changeENSOwnerOnMainnet() - await triggerSyncOfENSNameToSidechain() - await triggerSyncOfENSSubdomainToSidechain() -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) - diff --git a/packages/npm-network-contracts/package.json b/packages/npm-network-contracts/package.json index bc6047dd5..d560e0ede 100644 --- a/packages/npm-network-contracts/package.json +++ b/packages/npm-network-contracts/package.json @@ -19,7 +19,6 @@ "build": "./build.sh" }, "devDependencies": { - "@chainlink/contracts": "0.3.1", "@ensdomains/ens-contracts": "1.1.4", "@nomicfoundation/hardhat-toolbox": "5.0.0", "@opengsn/provider": "2.2.6",