diff --git a/CHANGELOG.md b/CHANGELOG.md index 222b21e..a0b2d9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ CHANGELOG === -Last ens-contracts sync time: 2022.10.7 +Last ens-contracts sync time: Feb 13, 2023 ## v0.2.3 diff --git a/contracts/utils/CNSUtil.sol b/contracts/utils/CNSUtil.sol new file mode 100644 index 0000000..be53c96 --- /dev/null +++ b/contracts/utils/CNSUtil.sol @@ -0,0 +1,58 @@ +//SPDX-License-Identifier: Unlicense +pragma solidity ^0.8.0; + +import '@ensdomains/ens-contracts/contracts/registry/ENS.sol'; +import '@ensdomains/ens-contracts/contracts/resolvers/Resolver.sol'; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {IBaseRegistrar} from '@ensdomains/ens-contracts/contracts/ethregistrar/IBaseRegistrar.sol'; + +contract CNSUtil is Ownable { + ENS public ens; + IBaseRegistrar public baseRegistrar; + + constructor(address _ens, address _base) { + ens = ENS(_ens); + baseRegistrar = IBaseRegistrar(_base); + } + + function addr(bytes32 node) public view returns (address) { + address resolver = ens.resolver(node); + if (resolver == address(0)) { + return address(0); + } + return Resolver(resolver).addr(node); + } + + function addr(bytes32 node, uint256 coinType) public view returns (bytes memory) { + address resolver = ens.resolver(node); + if (resolver == address(0)) { + return bytes(""); + } + return Resolver(resolver).addr(node, coinType); + } + + function addrBatch(bytes32[] memory nodes) public view returns (address[] memory) { + address[] memory addrs = new address[](nodes.length); + for (uint256 i = 0; i < nodes.length; i++) { + addrs[i] = addr(nodes[i]); + } + return addrs; + } + + // if token not exist of expire return zero address rather than revert + function ownerOf(uint256 tokenId) public view returns(address) { + if (baseRegistrar.nameExpires(tokenId) <= block.timestamp) { + return address(0); + } + return baseRegistrar.ownerOf(tokenId); + } + + function setENS(address _ens) public onlyOwner { + ens = ENS(_ens); + } + + function setBaseRegistrar(address _base) public onlyOwner { + baseRegistrar = IBaseRegistrar(_base); + } + +} \ No newline at end of file diff --git a/contracts/web3registrar/NameWhitelist.sol b/contracts/web3registrar/NameWhitelist.sol index 1ca90d2..9541594 100644 --- a/contracts/web3registrar/NameWhitelist.sol +++ b/contracts/web3registrar/NameWhitelist.sol @@ -23,7 +23,7 @@ contract NameWhitelist is Ownable, INameWhitelist { bytes constant ZERO_WIDTH_SPACE = hex"e2808b"; - string constant CHAR_WHITE_LIST = "abcdefghijklmnopqrstuvwxyz0123456789-"; // ABCDEFGHIJKLMNOPQRSTUVWXYZ + string constant CHAR_WHITE_LIST = "abcdefghijklmnopqrstuvwxyz0123456789_"; // ABCDEFGHIJKLMNOPQRSTUVWXYZ string constant EMOJI_WHITE_LIST = unicode"✅"; @@ -31,7 +31,7 @@ contract NameWhitelist is Ownable, INameWhitelist { mapping(string => bool) whiteList; // mapping(string => bool) blackList; - mapping(string => bool) specialNames; // Reserved names + mapping(bytes32 => bool) specialNames; // Reserved names constructor() { strings.slice memory s1 = CHAR_WHITE_LIST.toSlice(); @@ -96,41 +96,37 @@ contract NameWhitelist is Ownable, INameWhitelist { return true; } - /* function isInEmojiBlackList(string memory toCheck) public view returns (bool) { - return blackList[toCheck]; - } */ - function isInWhiteList(string memory toCheck) public view returns (bool) { return whiteList[toCheck]; } function isReserved(string memory label) public view returns (bool) { - return specialNames[label]; + return specialNames[keccak(label)]; } - function setSpecialName(string memory name, bool isSpecial) public onlyOwner { + function setSpecialName(bytes32 name, bool isSpecial) public onlyOwner { specialNames[name] = isSpecial; } - function setSpecialNameBatch(string[] memory names, bool isSpecial) public onlyOwner { + function setSpecialNameBatch(bytes32[] memory names, bool isSpecial) public onlyOwner { for(uint i = 0; i < names.length; i++) { specialNames[names[i]] = isSpecial; } } - function setWhiteList(string memory name, bool isWhite) public onlyOwner { - whiteList[name] = isWhite; + function setWhiteList(string memory char, bool isWhite) public onlyOwner { + whiteList[char] = isWhite; } - function setWhiteListBatch(string memory name, bool isWhite) public onlyOwner { - strings.slice memory s1 = name.toSlice(); + function setWhiteListBatch(string memory chars, bool isWhite) public onlyOwner { + strings.slice memory s1 = chars.toSlice(); uint s1Len = s1.len(); for (uint256 i = 0; i < s1Len; i++) { whiteList[s1.nextRune().toString()] = isWhite; } } - /* function setBlackList(string memory name, bool isBlack) public onlyOwner { - blackList[name] = isBlack; - } */ + function keccak(string memory str) private pure returns (bytes32) { + return keccak256(abi.encode(str)); + } } diff --git a/contracts/web3registrar/Web3RegistrarController.sol b/contracts/web3registrar/Web3RegistrarController.sol index b068400..8f7709a 100644 --- a/contracts/web3registrar/Web3RegistrarController.sol +++ b/contracts/web3registrar/Web3RegistrarController.sol @@ -1,26 +1,26 @@ //SPDX-License-Identifier: MIT pragma solidity ~0.8.17; -import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; -import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; -import {Address} from "@openzeppelin/contracts/utils/Address.sol"; -import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; - import {BaseRegistrarImplementation} from "@ensdomains/ens-contracts/contracts/ethregistrar/BaseRegistrarImplementation.sol"; import {StringUtils} from "@ensdomains/ens-contracts/contracts/ethregistrar/StringUtils.sol"; import {Resolver} from "@ensdomains/ens-contracts/contracts/resolvers/Resolver.sol"; import {ReverseRegistrar} from "@ensdomains/ens-contracts/contracts/registry/ReverseRegistrar.sol"; -import {IETHRegistrarController} from "@ensdomains/ens-contracts/contracts/ethregistrar/IETHRegistrarController.sol"; -import {ERC20Recoverable} from "@ensdomains/ens-contracts/contracts/utils/ERC20Recoverable.sol"; +import {IETHRegistrarController, IPriceOracle} from "@ensdomains/ens-contracts/contracts/ethregistrar/IETHRegistrarController.sol"; -import {INameWhitelist} from "./INameWhitelist.sol"; -import {IFiatPriceOracle} from "./IFiatPriceOracle.sol"; -import {ICNameWrapper} from '../wrapper/ICNameWrapper.sol'; +// import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; +import {INameWrapper} from "@ensdomains/ens-contracts/contracts/wrapper/INameWrapper.sol"; +import {ERC20Recoverable} from "@ensdomains/ens-contracts/contracts/utils/ERC20Recoverable.sol"; +import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; +import {INameWhitelist} from "./INameWhitelist.sol"; // CNS UPDATE +import {IFiatPriceOracle} from "./IFiatPriceOracle.sol"; // CNS UPDATE +import {ICNameWrapper} from '../wrapper/ICNameWrapper.sol'; // CNS UPDATE error CommitmentTooNew(bytes32 commitment); error CommitmentTooOld(bytes32 commitment); error NameNotAvailable(string name); -error NameLocked(string name); error DurationTooShort(uint256 duration); error ResolverRequiredWhenDataSupplied(); error UnexpiredCommitmentExists(bytes32 commitment); @@ -33,40 +33,27 @@ error MaxCommitmentAgeTooHigh(); * @dev A registrar controller for registering and renewing names at fixed cost. */ contract Web3RegistrarController is - AccessControl, IETHRegistrarController, + IERC165, ERC20Recoverable, + AccessControl, Initializable { using StringUtils for *; using Address for address; - enum LabelStatus { - Valid, - TooShort, - Reserved, - IllegalChar, - Locked, - Registered, - SoldOut - } - - bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); // CNS UPDATE uint256 public constant MIN_REGISTRATION_DURATION = 28 days; bytes32 private constant ETH_NODE = - 0x587d09fe5fa45354680537d38145a28b772971e0f293af3ee0c536fc919710fb; // CNS UPDATE: eth -> web3 + 0x587d09fe5fa45354680537d38145a28b772971e0f293af3ee0c536fc919710fb; // CNS UPDATE: eth -> web3 uint64 private constant MAX_EXPIRY = type(uint64).max; BaseRegistrarImplementation base; - IFiatPriceOracle public prices; + IFiatPriceOracle public prices; // CNS UPDATE uint256 public minCommitmentAge; uint256 public maxCommitmentAge; ReverseRegistrar public reverseRegistrar; - ICNameWrapper public nameWrapper; - INameWhitelist public nameWhitelist; // CNS UPDATE + ICNameWrapper public nameWrapper; // CNS UPDATE mapping(bytes32 => uint256) public commitments; - uint256 private validLen = 4; // CNS UPDATE - uint256 private label45Quota = 50000; // CNS UPDATE event NameRegistered( string name, @@ -76,7 +63,6 @@ contract Web3RegistrarController is uint256 premium, uint256 expires ); - event NameRenewed( string name, bytes32 indexed label, @@ -84,6 +70,22 @@ contract Web3RegistrarController is uint256 expires ); + INameWhitelist public nameWhitelist; // CNS UPDATE + uint256 private validLen = 4; // CNS UPDATE + uint256 private label45Quota = 50000; // CNS UPDATE + + // CNS UPDATE + enum LabelStatus { + Valid, + TooShort, + Reserved, + IllegalChar, + Locked, + Registered, + SoldOut + } + bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); // CNS UPDATE + constructor( BaseRegistrarImplementation _base, IFiatPriceOracle _prices, @@ -93,6 +95,7 @@ contract Web3RegistrarController is ICNameWrapper _nameWrapper ) { _setupRole(ADMIN_ROLE, msg.sender); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _init(_base, _prices, _minCommitmentAge, _maxCommitmentAge, _reverseRegistrar, _nameWrapper); } @@ -106,6 +109,7 @@ contract Web3RegistrarController is address _admin ) public initializer { _setupRole(ADMIN_ROLE, _admin); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _init(_base, _prices, _minCommitmentAge, _maxCommitmentAge, _reverseRegistrar, _nameWrapper); } @@ -162,8 +166,7 @@ contract Web3RegistrarController is address resolver, bytes[] calldata data, bool reverseRecord, - uint32 fuses, - uint64 wrapperExpiry + uint16 ownerControlledFuses ) public pure override returns (bytes32) { bytes32 label = keccak256(bytes(name)); if (data.length > 0 && resolver == address(0)) { @@ -180,16 +183,30 @@ contract Web3RegistrarController is label, owner, duration, + secret, resolver, data, - secret, reverseRecord, - fuses, - wrapperExpiry + ownerControlledFuses ) ); } + // CNS UPDATE An overload function to compatible with old version + function makeCommitment( + string memory name, + address owner, + uint256 duration, + bytes32 secret, + address resolver, + bytes[] calldata data, + bool reverseRecord, + uint16 ownerControlledFuses, + uint64 wrapperExpiry + ) public pure returns (bytes32) { + return makeCommitment(name, owner, duration, secret, resolver, data, reverseRecord, ownerControlledFuses); + } + function commit(bytes32 commitment) public override { if (commitments[commitment] + maxCommitmentAge >= block.timestamp) { // revert UnexpiredCommitmentExists(commitment); @@ -198,6 +215,7 @@ contract Web3RegistrarController is commitments[commitment] = block.timestamp; } + // CNS UPDATE An overload function to compatible with old version function register( string calldata name, address owner, @@ -206,8 +224,21 @@ contract Web3RegistrarController is address resolver, bytes[] calldata data, bool reverseRecord, - uint32 fuses, + uint16 ownerControlledFuses, uint64 wrapperExpiry + ) public payable { + return register(name, owner, duration, secret, resolver, data, reverseRecord, ownerControlledFuses); + } + + function register( + string calldata name, + address owner, + uint256 duration, + bytes32 secret, + address resolver, + bytes[] calldata data, + bool reverseRecord, + uint16 ownerControlledFuses ) public payable override { IFiatPriceOracle.Price memory price = rentPrice(name, duration); if (msg.value < price.base + price.premium) { @@ -215,7 +246,7 @@ contract Web3RegistrarController is require(false, "InsufficientValue"); } - _register(name, owner, duration, secret, resolver, data, reverseRecord, fuses, wrapperExpiry); + _register(name, owner, duration, secret, resolver, data, reverseRecord, ownerControlledFuses); if (msg.value > (price.base + price.premium)) { payable(msg.sender).transfer( @@ -225,17 +256,16 @@ contract Web3RegistrarController is } function _register( - string memory name, + string calldata name, address owner, uint256 duration, bytes32 secret, address resolver, bytes[] calldata data, bool reverseRecord, - uint32 fuses, - uint64 wrapperExpiry + uint16 ownerControlledFuses ) internal returns (uint256) { - require(labelStatus(name) == LabelStatus.Valid, "Label is not valid to register"); + require(labelStatus(name) == LabelStatus.Valid, "LabelInvalid"); IFiatPriceOracle.Price memory price = rentPrice(name, duration); @@ -250,8 +280,7 @@ contract Web3RegistrarController is resolver, data, reverseRecord, - fuses, - wrapperExpiry + ownerControlledFuses ) ); @@ -260,8 +289,7 @@ contract Web3RegistrarController is owner, duration, resolver, - fuses, - wrapperExpiry + ownerControlledFuses ); if (data.length > 0) { @@ -280,8 +308,6 @@ contract Web3RegistrarController is price.premium, expires ); - - return expires; } function renew(string calldata name, uint256 duration) @@ -289,38 +315,17 @@ contract Web3RegistrarController is payable override { - _renew(name, duration, 0, 0); - } - - function renewWithFuses( - string calldata name, - uint256 duration, - uint32 fuses, - uint64 wrapperExpiry - ) external payable { - bytes32 labelhash = keccak256(bytes(name)); - bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, labelhash)); - if (!nameWrapper.isTokenOwnerOrApproved(nodehash, msg.sender)) { - revert Unauthorised(nodehash); - } - _renew(name, duration, fuses, wrapperExpiry); - } - - function _renew( - string calldata name, - uint256 duration, - uint32 fuses, - uint64 wrapperExpiry - ) internal { bytes32 labelhash = keccak256(bytes(name)); uint256 tokenId = uint256(labelhash); - IFiatPriceOracle.Price memory price = rentPrice(name, duration); + IPriceOracle.Price memory price = rentPrice(name, duration); if (msg.value < price.base) { // revert InsufficientValue(); require(false, "InsufficientValue"); } - uint256 expires; - expires = nameWrapper.renew(tokenId, duration, fuses, wrapperExpiry); + uint256 expires = nameWrapper.renew( + tokenId, + duration + ); if (msg.value > price.base) { payable(msg.sender).transfer(msg.value - price.base); @@ -336,7 +341,7 @@ contract Web3RegistrarController is function supportsInterface(bytes4 interfaceID) public pure - override(AccessControl) + override(IERC165, AccessControl) returns (bool) { return @@ -380,6 +385,7 @@ contract Web3RegistrarController is bytes32 label, bytes[] calldata data ) internal { + // use hardcoded .eth namehash bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, label)); Resolver resolver = Resolver(resolverAddress); resolver.multicallWithNodeCheck(nodehash, data); @@ -394,7 +400,7 @@ contract Web3RegistrarController is msg.sender, owner, resolver, - string.concat(name, ".web3") // eth -> web3 + string.concat(name, ".web3") // CNS UPDATE ); } @@ -442,9 +448,7 @@ contract Web3RegistrarController is expires = nameWrapper.renew( tokenId, - duration, - fuses, - wrapperExpiry + duration ); emit NameRenewed(name, labelhash, 0, expires); @@ -459,10 +463,10 @@ contract Web3RegistrarController is address resolver, bytes[] calldata data, bool reverseRecord, - uint32 fuses, + uint16 fuses, uint64 wrapperExpiry ) public onlyRole(ADMIN_ROLE) { - _register(name, owner, duration, secret, resolver, data, reverseRecord, fuses, wrapperExpiry); + _register(name, owner, duration, secret, resolver, data, reverseRecord, fuses); } // CNS UPDATE @@ -498,4 +502,9 @@ contract Web3RegistrarController is require(_quota > label45Quota, "invalid quota"); label45Quota = _quota; } + + // CNS UPDATE + function addAdmin(address addr) public onlyRole(ADMIN_ROLE) { + _setupRole(ADMIN_ROLE, addr); + } } diff --git a/contracts/wrapper/NameWrapper.sol b/contracts/wrapper/NameWrapper.sol index 2f16833..6cdf0d4 100644 --- a/contracts/wrapper/NameWrapper.sol +++ b/contracts/wrapper/NameWrapper.sol @@ -1,42 +1,33 @@ //SPDX-License-Identifier: MIT pragma solidity ~0.8.17; -import {ERC1155Fuse, IERC165, OperationProhibited} from "@ensdomains/ens-contracts/contracts/wrapper/ERC1155Fuse.sol"; +import {ERC1155Fuse, IERC165} from "@ensdomains/ens-contracts/contracts/wrapper/ERC1155Fuse.sol"; import {Controllable} from "@ensdomains/ens-contracts/contracts/wrapper/Controllable.sol"; +import {INameWrapper, CANNOT_UNWRAP, CANNOT_BURN_FUSES, CANNOT_TRANSFER, CANNOT_SET_RESOLVER, CANNOT_SET_TTL, CANNOT_CREATE_SUBDOMAIN, PARENT_CANNOT_CONTROL, CAN_DO_EVERYTHING, IS_DOT_ETH, CAN_EXTEND_EXPIRY, PARENT_CONTROLLED_FUSES, USER_SETTABLE_FUSES} from "@ensdomains/ens-contracts/contracts/wrapper/INameWrapper.sol"; import {INameWrapperUpgrade} from "@ensdomains/ens-contracts/contracts/wrapper/INameWrapperUpgrade.sol"; import {IMetadataService} from "@ensdomains/ens-contracts/contracts/wrapper/IMetadataService.sol"; import {ENS} from "@ensdomains/ens-contracts/contracts/registry/ENS.sol"; import {IBaseRegistrar} from "@ensdomains/ens-contracts/contracts/ethregistrar/IBaseRegistrar.sol"; -import {BytesUtils} from "@ensdomains/ens-contracts/contracts/wrapper/BytesUtils.sol"; -import {ERC20Recoverable} from "@ensdomains/ens-contracts/contracts/utils/ERC20Recoverable.sol"; -import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; -import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; -import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; -import { - INameWrapper, - CANNOT_UNWRAP, - CANNOT_BURN_FUSES, - CANNOT_TRANSFER, - CANNOT_SET_RESOLVER, - CANNOT_SET_TTL, - CANNOT_CREATE_SUBDOMAIN, - PARENT_CANNOT_CONTROL, - CAN_DO_EVERYTHING -} from "@ensdomains/ens-contracts/contracts/wrapper/INameWrapper.sol"; -// import "hardhat/console.sol"; +import {BytesUtils} from "@ensdomains/ens-contracts/contracts/wrapper/BytesUtils.sol"; +import {ERC20Recoverable} from "@ensdomains/ens-contracts/contracts/utils/ERC20Recoverable.sol"; + +import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; // CNS UPDATE +import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; // CNS UPDATE +import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; // CNS UPDATE error Unauthorised(bytes32 node, address addr); -error NameNotFound(); error IncompatibleParent(); -error IncompatibleName(bytes name); error IncorrectTokenType(); error LabelMismatch(bytes32 labelHash, bytes32 expectedLabelhash); error LabelTooShort(); error LabelTooLong(string label); error IncorrectTargetOwner(address owner); error CannotUpgrade(); +error OperationProhibited(bytes32 node); +error NameIsNotWrapped(); +error NameIsStillExpired(); contract NameWrapper is Ownable, @@ -45,7 +36,7 @@ contract NameWrapper is Controllable, IERC721Receiver, ERC20Recoverable, - Initializable + Initializable // CNS-UPDATE { using BytesUtils for bytes; using EnumerableSet for EnumerableSet.Bytes32Set; // CNS UPDATE @@ -56,8 +47,11 @@ contract NameWrapper is mapping(bytes32 => bytes) public override names; string public constant name = "NameWrapper"; + uint64 private constant GRACE_PERIOD = 90 days; bytes32 private constant ETH_NODE = - 0x587d09fe5fa45354680537d38145a28b772971e0f293af3ee0c536fc919710fb; // CNS UPDATE eth -> web3 + 0x587d09fe5fa45354680537d38145a28b772971e0f293af3ee0c536fc919710fb; // CNS UPDATE eth -> web3 + bytes32 private constant ETH_LABELHASH = + 0x906f4bd26db04205451741914e3591af122a9ecb412fd5a0a8e0146b48a9d4c6; // CNS UPDATE eth -> web3 bytes32 private constant ROOT_NODE = 0x0000000000000000000000000000000000000000000000000000000000000000; @@ -77,6 +71,7 @@ contract NameWrapper is IBaseRegistrar _registrar, IMetadataService _metadataService ) { + // CNS UPDATE _init(_ens, _registrar, _metadataService); } @@ -85,12 +80,14 @@ contract NameWrapper is _init(_ens, _registrar, _metadataService); } + // CNS UPDATE function _init(ENS _ens, IBaseRegistrar _registrar, IMetadataService _metadataService) internal { ens = _ens; registrar = _registrar; metadataService = _metadataService; /* Burn PARENT_CANNOT_CONTROL and CANNOT_UNWRAP fuses for ROOT_NODE and ETH_NODE */ + _setData( uint256(ETH_NODE), address(0), @@ -103,7 +100,6 @@ contract NameWrapper is uint32(PARENT_CANNOT_CONTROL | CANNOT_UNWRAP), MAX_EXPIRY ); - names[ROOT_NODE] = "\x00"; names[ETH_NODE] = "\x04web3\x00"; // CNS UPDATE eth -> web3 } @@ -121,7 +117,13 @@ contract NameWrapper is super.supportsInterface(interfaceId); } - /* ERC1155 */ + /* ERC1155 Fuse */ + + /** + * @notice Gets the owner of a name + * @param id Label as a string of the .eth domain to wrap + * @return owner The owner of the name + */ function ownerOf(uint256 id) public @@ -134,10 +136,10 @@ contract NameWrapper is /** * @notice Gets the data for a name - * @param id Label as a string of the .eth domain to wrap - * @return address The owner of the name - * @return uint32 Fuses of the name - * @return uint64 Expiry of when the fuses expire for the name + * @param id Namehash of the name + * @return owner Owner of the name + * @return fuses Fuses of the name + * @return expiry Expiry of the name */ function getData(uint256 id) @@ -145,12 +147,14 @@ contract NameWrapper is view override(ERC1155Fuse, INameWrapper) returns ( - address, - uint32, - uint64 + address owner, + uint32 fuses, + uint64 expiry ) { - return super.getData(id); + (owner, fuses, expiry) = super.getData(id); + + (owner, fuses) = _clearOwnerAndFuses(owner, fuses, expiry); } /* Metadata service */ @@ -207,7 +211,7 @@ contract NameWrapper is */ modifier onlyTokenOwner(bytes32 node) { - if (!isTokenOwnerOrApproved(node, msg.sender)) { + if (!canModifyName(node, msg.sender)) { revert Unauthorised(node, msg.sender); } @@ -221,14 +225,17 @@ contract NameWrapper is * @return whether or not is owner or approved */ - function isTokenOwnerOrApproved(bytes32 node, address addr) + function canModifyName(bytes32 node, address addr) public view override returns (bool) { - address owner = ownerOf(uint256(node)); - return owner == addr || isApprovedForAll(owner, addr); + (address owner, uint32 fuses, uint64 expiry) = getData(uint256(node)); + return + (owner == addr || isApprovedForAll(owner, addr)) && + (fuses & IS_DOT_ETH == 0 || + expiry - GRACE_PERIOD >= block.timestamp); } /** @@ -236,19 +243,16 @@ contract NameWrapper is * @dev Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar * @param label Label as a string of the .eth domain to wrap * @param wrappedOwner Owner of the name in this contract - * @param fuses Initial fuses to set - * @param expiry When the fuses will expire + * @param ownerControlledFuses Initial owner-controlled fuses to set * @param resolver Resolver contract address - * @return Normalised expiry of when the fuses expire */ function wrapETH2LD( string calldata label, address wrappedOwner, - uint32 fuses, - uint64 expiry, + uint16 ownerControlledFuses, address resolver - ) public override returns (uint64) { + ) public override { uint256 tokenId = uint256(keccak256(bytes(label))); address registrant = registrar.ownerOf(tokenId); if ( @@ -267,7 +271,7 @@ contract NameWrapper is // transfer the ens record back to the new owner (this contract) registrar.reclaim(tokenId, address(this)); - return _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver); + _wrapETH2LD(label, wrappedOwner, ownerControlledFuses, resolver); } /** @@ -277,8 +281,7 @@ contract NameWrapper is * @param wrappedOwner The owner of the wrapped name. * @param duration The duration, in seconds, to register the name for. * @param resolver The resolver address to set on the ENS registry (optional). - * @param fuses Initial fuses to set - * @param expiry When the fuses will expire + * @param ownerControlledFuses Initial owner-controlled fuses to set * @return registrarExpiry The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch. */ @@ -287,12 +290,11 @@ contract NameWrapper is address wrappedOwner, uint256 duration, address resolver, - uint32 fuses, - uint64 expiry + uint16 ownerControlledFuses ) external override onlyController returns (uint256 registrarExpiry) { uint256 tokenId = uint256(keccak256(bytes(label))); registrarExpiry = registrar.register(tokenId, address(this), duration); - _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver); + _wrapETH2LD(label, wrappedOwner, ownerControlledFuses, resolver); } /** @@ -303,28 +305,36 @@ contract NameWrapper is * @return expires The expiry date of the name on the .eth registrar, in seconds since the Unix epoch. */ - function renew( - uint256 tokenId, - uint256 duration, - uint32 fuses, - uint64 expiry - ) external override onlyController returns (uint256 expires) { + function renew(uint256 tokenId, uint256 duration) + external + override + onlyController + returns (uint256 expires) + { bytes32 node = _makeNode(ETH_NODE, bytes32(tokenId)); - expires = registrar.renew(tokenId, duration); - if (isWrapped(node)) { - (address owner, uint32 oldFuses, uint64 oldExpiry) = getData( - uint256(node) - ); - expiry = _normaliseExpiry(expiry, oldExpiry, uint64(expires)); + uint256 registrarExpiry = registrar.renew(tokenId, duration); - _setData( - node, - owner, - oldFuses | fuses | PARENT_CANNOT_CONTROL, - expiry - ); + // Do not set anything in wrapper if name is not wrapped + try registrar.ownerOf(tokenId) returns (address registrarOwner) { + if ( + registrarOwner != address(this) || + ens.owner(node) != address(this) + ) { + return registrarExpiry; + } + } catch { + return registrarExpiry; } + + // set expiry in Wrapper + uint64 expiry = uint64(registrarExpiry) + GRACE_PERIOD; + + //use super to allow names expired on the wrapper, but not expired on the registrar to renew() + (address owner, uint32 fuses, ) = super.getData(uint256(node)); + _setData(node, owner, fuses, expiry); + + return registrarExpiry; } /** @@ -344,6 +354,8 @@ contract NameWrapper is bytes32 parentNode = name.namehash(offset); bytes32 node = _makeNode(parentNode, labelhash); + names[node] = name; + if (parentNode == ETH_NODE) { revert IncompatibleParent(); } @@ -376,14 +388,10 @@ contract NameWrapper is address registrant, address controller ) public override onlyTokenOwner(_makeNode(ETH_NODE, labelhash)) { - if (controller == address(0x0)) { - revert IncorrectTargetOwner(controller); - } if (registrant == address(this)) { revert IncorrectTargetOwner(registrant); } - bytes32 node = _makeNode(ETH_NODE, labelhash); - _unwrap(node, controller); + _unwrap(_makeNode(ETH_NODE, labelhash), controller); registrar.safeTransferFrom( address(this), registrant, @@ -416,25 +424,62 @@ contract NameWrapper is /** * @notice Sets fuses of a name * @param node Namehash of the name - * @param fuses Fuses to burn (cannot burn PARENT_CANNOT_CONTROL) + * @param ownerControlledFuses Owner-controlled fuses to burn * @return New fuses */ - function setFuses(bytes32 node, uint32 fuses) + function setFuses(bytes32 node, uint16 ownerControlledFuses) public onlyTokenOwner(node) operationAllowed(node, CANNOT_BURN_FUSES) returns (uint32) { - _checkForParentCannotControl(node, fuses); - + // owner protected by onlyTokenOwner (address owner, uint32 oldFuses, uint64 expiry) = getData( uint256(node) ); + _setFuses(node, owner, ownerControlledFuses | oldFuses, expiry, expiry); + return ownerControlledFuses; + } - fuses |= oldFuses; - _setFuses(node, owner, fuses, expiry); - return fuses; + /** + * @notice Extends expiry for a name + * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz') + * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik') + * @param expiry When the name will expire in seconds since the Unix epoch + * @return New expiry + */ + + function extendExpiry( + bytes32 parentNode, + bytes32 labelhash, + uint64 expiry + ) public returns (uint64) { + bytes32 node = _makeNode(parentNode, labelhash); + + // this flag is used later, when checking fuses + bool canModifyParentName = canModifyName(parentNode, msg.sender); + // only allow the owner of the name or owner of the parent name + if (!canModifyParentName && !canModifyName(node, msg.sender)) { + revert Unauthorised(node, msg.sender); + } + + (address owner, uint32 fuses, uint64 oldExpiry) = getData( + uint256(node) + ); + + // Either CAN_EXTEND_EXPIRY must be set, or the caller must have permission to modify the parent name + if (!canModifyParentName && fuses & CAN_EXTEND_EXPIRY == 0) { + revert OperationProhibited(node); + } + + // max expiry is set to the expiry of the parent + (, , uint64 maxExpiry) = getData(uint256(parentNode)); + expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry); + + _setData(node, owner, fuses, expiry); + emit ExpiryExtended(node, expiry); + return expiry; } /** @@ -452,7 +497,13 @@ contract NameWrapper is ) public { bytes32 labelhash = keccak256(bytes(label)); bytes32 node = _makeNode(ETH_NODE, labelhash); - (uint32 fuses, uint64 expiry) = _prepareUpgrade(node); + (address currentOwner, uint32 fuses, uint64 expiry) = _prepareUpgrade( + node + ); + + if (wrappedOwner != currentOwner) { + _preTransferCheck(uint256(node), fuses, expiry); + } upgradeContract.wrapETH2LD( label, @@ -481,7 +532,14 @@ contract NameWrapper is ) public { bytes32 labelhash = keccak256(bytes(label)); bytes32 node = _makeNode(parentNode, labelhash); - (uint32 fuses, uint64 expiry) = _prepareUpgrade(node); + (address currentOwner, uint32 fuses, uint64 expiry) = _prepareUpgrade( + node + ); + + if (wrappedOwner != currentOwner) { + _preTransferCheck(uint256(node), fuses, expiry); + } + upgradeContract.setSubnodeRecord( parentNode, label, @@ -498,7 +556,7 @@ contract NameWrapper is * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz') * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik') * @param fuses Fuses to burn - * @param expiry When the fuses will expire + * @param expiry When the name will expire in seconds since the Unix epoch */ function setChildFuses( @@ -508,26 +566,23 @@ contract NameWrapper is uint64 expiry ) public { bytes32 node = _makeNode(parentNode, labelhash); + _checkFusesAreSettable(node, fuses); (address owner, uint32 oldFuses, uint64 oldExpiry) = getData( uint256(node) ); - uint64 maxExpiry; - (, uint32 parentFuses, uint64 parentExpiry) = getData( - uint256(parentNode) - ); - if (parentNode == ETH_NODE) { - if (!isTokenOwnerOrApproved(node, msg.sender)) { + if (owner == address(0) || ens.owner(node) != address(this)) { + revert NameIsNotWrapped(); + } + // max expiry is set to the expiry of the parent + (, uint32 parentFuses, uint64 maxExpiry) = getData(uint256(parentNode)); + if (parentNode == ROOT_NODE) { + if (!canModifyName(node, msg.sender)) { revert Unauthorised(node, msg.sender); } - // max expiry is set to the expiry on the registrar - maxExpiry = uint64(registrar.nameExpires(uint256(labelhash))); } else { - if (!isTokenOwnerOrApproved(parentNode, msg.sender)) { + if (!canModifyName(parentNode, msg.sender)) { revert Unauthorised(node, msg.sender); } - - // max expiry is set to the expiry of the parent - maxExpiry = parentExpiry; } _checkParentFuses(node, fuses, parentFuses); @@ -542,7 +597,7 @@ contract NameWrapper is revert OperationProhibited(node); } fuses |= oldFuses; - _setFuses(node, owner, fuses, expiry); + _setFuses(node, owner, fuses, oldExpiry, expiry); } /** @@ -551,7 +606,7 @@ contract NameWrapper is * @param label Label of the subdomain as a string * @param owner New owner in the wrapper * @param fuses Initial fuses for the wrapped subdomain - * @param expiry When the fuses will expire + * @param expiry When the name will expire in seconds since the Unix epoch * @return node Namehash of the subdomain */ @@ -561,28 +616,19 @@ contract NameWrapper is address owner, uint32 fuses, uint64 expiry - ) - public - onlyTokenOwner(parentNode) - canCallSetSubnodeOwner(parentNode, keccak256(bytes(label))) - returns (bytes32 node) - { + ) public onlyTokenOwner(parentNode) returns (bytes32 node) { bytes32 labelhash = keccak256(bytes(label)); node = _makeNode(parentNode, labelhash); + _checkCanCallSetSubnodeOwner(parentNode, node); + _checkFusesAreSettable(node, fuses); + bytes memory name = _saveLabel(parentNode, node, label); expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry); if (!isWrapped(node)) { ens.setSubnodeOwner(parentNode, labelhash, address(this)); - _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry); + _wrap(node, name, owner, fuses, expiry); } else { - _updateName( - parentNode, - node, - label, - owner, - fuses, - expiry - ); + _updateName(parentNode, node, label, owner, fuses, expiry); } } @@ -592,9 +638,9 @@ contract NameWrapper is * @param label label of the subdomain as a string * @param owner new owner in the wrapper * @param resolver resolver contract in the registry - * @param ttl ttl in the regsitry + * @param ttl ttl in the registry * @param fuses initial fuses for the wrapped subdomain - * @param expiry expiry date for the domain + * @param expiry When the name will expire in seconds since the Unix epoch * @return node Namehash of the subdomain */ @@ -606,14 +652,12 @@ contract NameWrapper is uint64 ttl, uint32 fuses, uint64 expiry - ) - public - onlyTokenOwner(parentNode) - canCallSetSubnodeOwner(parentNode, keccak256(bytes(label))) - returns (bytes32 node) - { + ) public onlyTokenOwner(parentNode) returns (bytes32 node) { bytes32 labelhash = keccak256(bytes(label)); node = _makeNode(parentNode, labelhash); + _checkCanCallSetSubnodeOwner(parentNode, node); + _checkFusesAreSettable(node, fuses); + _saveLabel(parentNode, node, label); expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry); if (!isWrapped(node)) { ens.setSubnodeRecord( @@ -623,7 +667,7 @@ contract NameWrapper is resolver, ttl ); - _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry); + _storeNameAndWrap(parentNode, node, label, owner, fuses, expiry); } else { ens.setSubnodeRecord( parentNode, @@ -632,14 +676,7 @@ contract NameWrapper is resolver, ttl ); - _updateName( - parentNode, - node, - label, - owner, - fuses, - expiry - ); + _updateName(parentNode, node, label, owner, fuses, expiry); } } @@ -666,11 +703,18 @@ contract NameWrapper is ) { ens.setRecord(node, address(this), resolver, ttl); - (address oldOwner, , ) = getData(uint256(node)); - _transfer(oldOwner, owner, uint256(node), 1, ""); + if (owner == address(0)) { + (, uint32 fuses, ) = getData(uint256(node)); + if (fuses & IS_DOT_ETH == IS_DOT_ETH) { + revert IncorrectTargetOwner(owner); + } + _unwrap(node, address(0)); + } else { + address oldOwner = ownerOf(uint256(node)); + _transfer(oldOwner, owner, uint256(node), 1, ""); + } } - /** * @notice Sets resolver contract in the registry * @param node namehash of the name @@ -721,27 +765,40 @@ contract NameWrapper is * and checks whether the owner of the subdomain is 0x0 for creating or already exists for * replacing a subdomain. If either conditions are true, then it is possible to call * setSubnodeOwner - * @param node Namehash of the name to check - * @param labelhash Labelhash of the name to check + * @param parentNode Namehash of the parent name to check + * @param subnode Namehash of the subname to check */ - modifier canCallSetSubnodeOwner(bytes32 node, bytes32 labelhash) { - bytes32 subnode = _makeNode(node, labelhash); - address owner = ens.owner(subnode); - - if (owner == address(0)) { - (, uint32 fuses, ) = getData(uint256(node)); - if (fuses & CANNOT_CREATE_SUBDOMAIN != 0) { + function _checkCanCallSetSubnodeOwner(bytes32 parentNode, bytes32 subnode) + internal + view + { + ( + address subnodeOwner, + uint32 subnodeFuses, + uint64 subnodeExpiry + ) = getData(uint256(subnode)); + + // check if the registry owner is 0 and expired + // check if the wrapper owner is 0 and expired + // If either, then check parent fuses for CANNOT_CREATE_SUBDOMAIN + bool expired = subnodeExpiry < block.timestamp; + if ( + expired && + // protects a name that has been unwrapped with PCC and doesn't allow the parent to take control by recreating it if unexpired + (subnodeOwner == address(0) || + // protects a name that has been burnt and doesn't allow the parent to take control by recreating it if unexpired + ens.owner(subnode) == address(0)) + ) { + (, uint32 parentFuses, ) = getData(uint256(parentNode)); + if (parentFuses & CANNOT_CREATE_SUBDOMAIN != 0) { revert OperationProhibited(subnode); } } else { - (, uint32 subnodeFuses, ) = getData(uint256(subnode)); if (subnodeFuses & PARENT_CANNOT_CONTROL != 0) { revert OperationProhibited(subnode); } } - - _; } /** @@ -761,14 +818,7 @@ contract NameWrapper is return fuses & fuseMask == fuseMask; } - /** - * @notice Checks if a name is wrapped or not - * @dev Both of these checks need to be true to be considered wrapped if checked without this contract - * @param node Namehash of the name - * @return Boolean of whether or not the name is wrapped - */ - - function isWrapped(bytes32 node) public view override returns (bool) { + function isWrapped(bytes32 node) public view returns (bool) { return ownerOf(uint256(node)) != address(0) && ens.owner(node) == address(this); @@ -788,10 +838,9 @@ contract NameWrapper is ( string memory label, address owner, - uint32 fuses, - uint64 expiry, + uint16 ownerControlledFuses, address resolver - ) = abi.decode(data, (string, address, uint32, uint64, address)); + ) = abi.decode(data, (string, address, uint16, address)); bytes32 labelhash = bytes32(tokenId); bytes32 labelhashFromData = keccak256(bytes(label)); @@ -803,7 +852,7 @@ contract NameWrapper is // transfer the ens record back to the new owner (this contract) registrar.reclaim(uint256(labelhash), address(this)); - _wrapETH2LD(label, owner, fuses, expiry, resolver); + _wrapETH2LD(label, owner, ownerControlledFuses, resolver); return IERC721Receiver(to).onERC721Received.selector; } @@ -860,8 +909,42 @@ contract NameWrapper is /***** Internal functions */ - function _canTransfer(uint32 fuses) internal pure override returns (bool) { - return fuses & CANNOT_TRANSFER == 0; + function _preTransferCheck( + uint256 id, + uint32 fuses, + uint64 expiry + ) internal view override returns (bool) { + // For this check, treat .eth 2LDs as expiring at the start of the grace period. + if (fuses & IS_DOT_ETH == IS_DOT_ETH) { + expiry -= GRACE_PERIOD; + } + + if (expiry < block.timestamp) { + // Transferable if the name was not emancipated + if (fuses & PARENT_CANNOT_CONTROL != 0) { + revert("ERC1155: insufficient balance for transfer"); + } + } else { + // Transferable if CANNOT_TRANSFER is unburned + if (fuses & CANNOT_TRANSFER != 0) { + revert OperationProhibited(bytes32(id)); + } + } + } + + function _clearOwnerAndFuses( + address owner, + uint32 fuses, + uint64 expiry + ) internal view override returns (address, uint32) { + if (expiry < block.timestamp) { + if (fuses & PARENT_CANNOT_CONTROL == PARENT_CANNOT_CONTROL) { + owner = address(0); + } + fuses = 0; + } + + return (owner, fuses); } function _makeNode(bytes32 node, bytes32 labelhash) @@ -893,7 +976,7 @@ contract NameWrapper is uint64 expiry ) internal override { _canFusesBeBurned(node, fuses); - address oldOwner = ownerOf(uint256(node)); + (address oldOwner, , ) = super.getData(uint256(node)); if (oldOwner != address(0)) { // burn and unwrap old token of old owner _burn(uint256(node)); @@ -929,12 +1012,11 @@ contract NameWrapper is uint32 fuses, uint64 expiry ) internal { - names[node] = name; _mint(node, wrappedOwner, fuses, expiry); emit NameWrapped(node, name, wrappedOwner, fuses, expiry); } - function _addLabelAndWrap( + function _storeNameAndWrap( bytes32 parentNode, bytes32 node, string memory label, @@ -946,21 +1028,34 @@ contract NameWrapper is _wrap(node, name, owner, fuses, expiry); } + function _saveLabel( + bytes32 parentNode, + bytes32 node, + string memory label + ) internal returns (bytes memory) { + bytes memory name = _addLabel(label, names[parentNode]); + names[node] = name; + return name; + } + function _prepareUpgrade(bytes32 node) private - returns (uint32 fuses, uint64 expiry) + returns ( + address owner, + uint32 fuses, + uint64 expiry + ) { if (address(upgradeContract) == address(0)) { revert CannotUpgrade(); } - if (!isTokenOwnerOrApproved(node, msg.sender)) { + if (!canModifyName(node, msg.sender)) { revert Unauthorised(node, msg.sender); } - (, fuses, expiry) = getData(uint256(node)); + (owner, fuses, expiry) = getData(uint256(node)); - // burn token and fuse data _burn(uint256(node)); } @@ -972,12 +1067,14 @@ contract NameWrapper is uint32 fuses, uint64 expiry ) internal { - address oldOwner = ownerOf(uint256(node)); + (address oldOwner, uint32 oldFuses, uint64 oldExpiry) = getData( + uint256(node) + ); bytes memory name = _addLabel(label, names[parentNode]); if (names[node].length == 0) { names[node] = name; } - _setFuses(node, oldOwner, fuses, expiry); + _setFuses(node, oldOwner, oldFuses | fuses, oldExpiry, expiry); if (owner == address(0)) { _unwrap(node, address(0)); } else { @@ -1003,37 +1100,16 @@ contract NameWrapper is uint32 fuses, uint32 parentFuses ) internal pure { - bool isBurningPCC = fuses & PARENT_CANNOT_CONTROL == - PARENT_CANNOT_CONTROL; + bool isBurningParentControlledFuses = fuses & PARENT_CONTROLLED_FUSES != + 0; bool parentHasNotBurnedCU = parentFuses & CANNOT_UNWRAP == 0; - if (isBurningPCC && parentHasNotBurnedCU) { + if (isBurningParentControlledFuses && parentHasNotBurnedCU) { revert OperationProhibited(node); } } - function _getETH2LDDataAndNormaliseExpiry( - bytes32 node, - bytes32 labelhash, - uint64 expiry - ) - internal - view - returns ( - address owner, - uint32 fuses, - uint64 - ) - { - uint64 oldExpiry; - (owner, fuses, oldExpiry) = getData(uint256(node)); - uint64 maxExpiry = uint64(registrar.nameExpires(uint256(labelhash))); - - expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry); - return (owner, fuses, expiry); - } - function _normaliseExpiry( uint64 expiry, uint64 oldExpiry, @@ -1055,35 +1131,29 @@ contract NameWrapper is function _wrapETH2LD( string memory label, address wrappedOwner, - uint32 fuses, - uint64 expiry, + uint16 ownerControlledFuses, address resolver - ) private returns (uint64) { - // Mint a new ERC1155 token with fuses - // Set PARENT_CANNOT_REPLACE to reflect wrapper + registrar control over the 2LD + ) private { bytes32 labelhash = keccak256(bytes(label)); bytes32 node = _makeNode(ETH_NODE, labelhash); - uint32 oldFuses; + // hardcode dns-encoded eth string for gas savings + bytes memory name = _addLabel(label, "\x04web3\x00"); + names[node] = name; - (, oldFuses, expiry) = _getETH2LDDataAndNormaliseExpiry( - node, - labelhash, - expiry - ); + uint64 expiry = uint64(registrar.nameExpires(uint256(labelhash))) + + GRACE_PERIOD; - _addLabelAndWrap( - ETH_NODE, + _wrap( node, - label, + name, wrappedOwner, - fuses | PARENT_CANNOT_CONTROL, + ownerControlledFuses | PARENT_CANNOT_CONTROL | IS_DOT_ETH, expiry ); + if (resolver != address(0)) { ens.setResolver(node, resolver); } - - return expiry; } function _unwrap(bytes32 node, address owner) private { @@ -1102,10 +1172,14 @@ contract NameWrapper is bytes32 node, address owner, uint32 fuses, + uint64 oldExpiry, uint64 expiry ) internal { _setData(node, owner, fuses, expiry); - emit FusesSet(node, fuses, expiry); + emit FusesSet(node, fuses); + if (expiry > oldExpiry) { + emit ExpiryExtended(node, expiry); + } } function _setData( @@ -1119,9 +1193,9 @@ contract NameWrapper is } function _canFusesBeBurned(bytes32 node, uint32 fuses) internal pure { - // if trying set fuses except PARENT_CANNOT_CONTROL and PARENT_CANNOT_CONTROL & CANNOT_UNWRAP is not burned + // If a non-parent controlled fuse is being burned, check PCC and CU are burnt if ( - fuses & ~PARENT_CANNOT_CONTROL != 0 && + fuses & ~PARENT_CONTROLLED_FUSES != 0 && fuses & (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP) != (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP) ) { @@ -1129,13 +1203,10 @@ contract NameWrapper is } } - function _checkForParentCannotControl(bytes32 node, uint32 fuses) - internal - view - { - if (fuses & PARENT_CANNOT_CONTROL != 0) { - // Only the parent can burn the PARENT_CANNOT_CONTROL fuse. - revert Unauthorised(node, msg.sender); + function _checkFusesAreSettable(bytes32 node, uint32 fuses) internal pure { + if (fuses | USER_SETTABLE_FUSES != USER_SETTABLE_FUSES) { + // Cannot directly burn other non-user settable fuses + revert OperationProhibited(node); } } } diff --git a/docs/CNS-Updates.md b/docs/CNS-Updates.md new file mode 100644 index 0000000..db9d17c --- /dev/null +++ b/docs/CNS-Updates.md @@ -0,0 +1,17 @@ +# Updates + +## NameWrapper + +1. Add two method `tokenCount`, `label45Count` +2. ETH_NODE change to `web3` +3. Add `initialize` to support proxy upgrade +4. Add `userDomains` (and related methods) to enumerate all domains of one account + +## EthRegistrarController + +1. Switch Owner to AccessControl +2. eth -> web3 +3. New variables: `validLen`, `lanbel45Quota`, `nameWhiteList` +4. Add `initialize` to support upgrade +5. Add `labelStatus`, `rentPriceInFiat`, `renewWithFiat`, `registerWithFiat` +6. Admin methods: `setCommitmentAge`, `setNameWhitelist`, `setPriceOracle`, `setValidLen`, `setLabel45Quota` \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 833121d..9c93544 100644 --- a/docs/README.md +++ b/docs/README.md @@ -40,19 +40,21 @@ Check detail in [NameWrapper](./NameWrapper.md). ### Conflux Core Testnet +Deployed at 2023.2.9 ```shell -ENS_REGISTRY=cfxtest:acd3rm7y183trhpzvz8m3y72kx1abk4d0jh842585a -REVERSE_REGISTRAR=cfxtest:acfmezysbf86jy3jnw835bnamxp08dxzd61w5ur8hy -BASE_REGISTRAR=cfxtest:acbp262fvjzva1raef4n3e5yyszy9spsc20cmztnya -STATIC_METADATA_SERVICE=cfxtest:acf7j3kuvct7scnnv8a76eajpv6ptjefg65zhw8anx -NAME_WRAPPER=cfxtest:acbttry22rsx7k54ms6hbkc0c8tf680u5pc0r31ef5 -CFX_PRICE_ORACLE=cfxtest:acc7e2b1420394bdfnsm9ja28kk8ypvk0umm5uejb9 -STABLE_ORACLE=cfxtest:achyyf4jxuua822szywr58y680umumj4m2u2u9y5ux -WEB3_CONTROLLER=cfxtest:acde0h4f9nz70h146d4p0wbbx38zamwhue3uce1ndt -PUBLIC_RESOLVER=cfxtest:acfcb2fv6t8xrxyyx3x1atwmdrhh5xvfd21zsje216 -NAME_WHITELIST=cfxtest:achkak1c8ddw1fsea8khe8sdmtrcagtpxu9fgh8e44 -FIFS_REGISTRAR=cfxtest:accm9cj9afnb6ypt09g9whnret9mp5rneeh5hjfv6f -REVERSE_RECORDS=cfxtest:acccv089mvek41rsmjyf1yyg922phjd0ppt16hfuv1 +ENS_REGISTRY=cfxtest:acemru7fu1u8brtyn3hrtae17kbcd4pd9u2m761bta +REVERSE_REGISTRAR=cfxtest:acfarpzehntpre0thg8x7dp0ajw4ms328pe1mm17vd +BASE_REGISTRAR=cfxtest:acg08bujp0kmsup1zk11c9mad7zd6648eynbcjtndm +STATIC_METADATA_SERVICE=cfxtest:acabg4pkfentf6pugssc10e3jdvn6r4u2pz27nwne3 +NAME_WRAPPER=cfxtest:acapc3y2j7atme3bawvaex18hs36tn40uu5h6j3mtu +CFX_PRICE_ORACLE=cfxtest:acd5ganc3tmc8p2935u1rbz6fp207gm59ybd8rxxnx +STABLE_ORACLE=cfxtest:acdeywdrjb48ast7e4gug5pv3t30t4h1wam6mnggs6 +WEB3_CONTROLLER=cfxtest:aca1858y5a9fnyx9rxd1c9knr517cd0e6afzzhgj01 +PUBLIC_RESOLVER=cfxtest:acbfyf69zaxau5a23w10dgyrmb0hrz4p9pewn6sejp +NAME_WHITELIST=cfxtest:acex1d5fm2tcd2s9wd7p1ak9t47advbwvud2yhjw3v +FIFS_REGISTRAR=cfxtest:achbbpdja6c3f4s6efuh7ckr85p5pf8xhesep50jv6 +REVERSE_RECORDS=cfxtest:acgddsj3kah2f4f4c6959bvc4732f4juyj90h0zmg2 +CNS_UTIL=cfxtest:aca4w63ypgup8tryphprzfcrh5kh0hpbgasb2z3s0j ``` ## FAQs diff --git a/hardhat.config.ts b/hardhat.config.ts index 982cad6..eed88fd 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -3,9 +3,12 @@ import "@nomicfoundation/hardhat-toolbox"; import "hardhat-conflux"; import 'hardhat-abi-exporter' import 'solidity-docgen'; +import { loadPrivateKey } from './scripts/utils'; import * as dotenv from 'dotenv' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import dotenv.config() +const PRIVATE_KEY = loadPrivateKey(); + const config: HardhatUserConfig = { solidity: "0.8.17", networks: { @@ -14,7 +17,7 @@ const config: HardhatUserConfig = { }, cfxtest: { url: process.env.RPC_URL, - accounts: [process.env.PRIVATE_KEY as string], + accounts: [PRIVATE_KEY], chainId: Number(process.env.NETWORK_ID as unknown as number), } }, diff --git a/index.js b/index.js index 69bcef2..f81b76e 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,7 @@ const CNSPublicResolver = require('./build/contracts/CNSPublicResolver') const ReverseRegistrar = require('./build/contracts/ReverseRegistrar') const NameWrapper = require('./build/contracts/NameWrapper') const ReverseRecords = require('./build/contracts/ReverseRecords') +const CNSUtil = require('./build/contracts/CNSUtil') module.exports = { BaseRegistrarImplementation, @@ -17,4 +18,5 @@ module.exports = { NameWrapper, CNSPublicResolver, ReverseRecords, + CNSUtil, } diff --git a/package.json b/package.json index bda73ae..543ac6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@web3identity/cns-contracts", - "version": "0.2.3", + "version": "0.3.0", "description": "", "main": "index.js", "scripts": { @@ -18,6 +18,7 @@ "build/contracts/NameWrapper.json", "build/contracts/ReverseRegistrar.json", "build/contracts/ReverseRecords.json", + "build/contracts/CNSUtil.json", "contracts/**/*.sol", "artifacts/contracts" ], diff --git a/scripts/deployCNSInHardhat.ts b/scripts/deployCNSInHardhat.ts index ef635e2..9039064 100644 --- a/scripts/deployCNSInHardhat.ts +++ b/scripts/deployCNSInHardhat.ts @@ -3,7 +3,7 @@ import { WEB3_NAMEHASH, ROOT_NODE, namehash, labelhash } from './utils' export async function deployCNS() { const [admin] = await ethers.getSigners(); - const adminAddr = admin.address; +// const adminAddr = admin.address; // console.log(`The default signer`, adminAddr); // deploy contracts =========================== diff --git a/scripts/deployInCore/10-deployReverseRecords.ts b/scripts/deployInCore/10-deployReverseRecords.ts index 185d5b0..067de1b 100644 --- a/scripts/deployInCore/10-deployReverseRecords.ts +++ b/scripts/deployInCore/10-deployReverseRecords.ts @@ -4,7 +4,7 @@ const { conflux, // The Conflux instance } = hre; -const { ENS_REGISTRY } = process.env; +const { ENS_REGISTRY, BASE_REGISTRAR } = process.env; async function main() { // @ts-ignore @@ -16,6 +16,14 @@ async function main() { }).executed(); logReceipt(receipt, 'ReverseRecords'); + + // @ts-ignore + const CNSUtil = await conflux.getContractFactory('CNSUtil'); + const receipt1 = await CNSUtil.constructor(ENS_REGISTRY, BASE_REGISTRAR).sendTransaction({ + from: account.address, + }).executed(); + + logReceipt(receipt1, 'CNSUtil'); } main().catch(console.log); \ No newline at end of file diff --git a/scripts/deployInCore/setup.ts b/scripts/deployInCore/final-setup.ts similarity index 100% rename from scripts/deployInCore/setup.ts rename to scripts/deployInCore/final-setup.ts diff --git a/scripts/deployInCore/upgrade-name-wrapper.ts b/scripts/deployInCore/upgrade-name-wrapper.ts new file mode 100644 index 0000000..95b2f8a --- /dev/null +++ b/scripts/deployInCore/upgrade-name-wrapper.ts @@ -0,0 +1,42 @@ +import hre from 'hardhat'; +import { logReceipt } from '../utils'; +const { + conflux, // The Conflux instance +} = hre; + +const { + ENS_REGISTRY, + BASE_REGISTRAR, + STATIC_METADATA_SERVICE, + NAME_WRAPPER, +} = process.env; + +async function main() { + // @ts-ignore + const accounts = await conflux.getSigners(); + const account = accounts[0]; + + // @ts-ignore + const NameWrapper = await conflux.getContractFactory('NameWrapper'); + const receipt = await NameWrapper.constructor( + ENS_REGISTRY, + BASE_REGISTRAR, + STATIC_METADATA_SERVICE, + ).sendTransaction({ + from: account.address, + }).executed(); + + logReceipt(receipt, 'NameWrapper new impl'); + + const implAddr = receipt.contractCreated; + + // @ts-ignore + const controllerProxy = await conflux.getContractAt('Proxy1967', NAME_WRAPPER); + const receipt2 = await controllerProxy.upgradeTo(implAddr).sendTransaction({ + from: account.address, + }) + .executed(); + logReceipt(receipt2, `NameWrapper upgrade to new implementation ${implAddr}`); +} + +main().catch(console.log); \ No newline at end of file diff --git a/scripts/play.ts b/scripts/play.ts index 3d4f78b..543d75d 100644 --- a/scripts/play.ts +++ b/scripts/play.ts @@ -9,6 +9,7 @@ import { REVERSE_NAMEHASH, ONE_YEAR, waitNS, + reverseName, } from './utils'; const { conflux, // The Conflux instance @@ -22,38 +23,50 @@ const { WEB3_CONTROLLER, PUBLIC_RESOLVER, STABLE_ORACLE, + NAME_WHITELIST, } = process.env; async function main() { // @ts-ignore const [account] = await conflux.getSigners(); - - // await purchaseDomain(account, 'heyman2'); + console.log('Account', account.address); + + // await purchaseDomain(account, 'jiuhuaw'); - // await claimReverseDomain(account); + // await claimReverseDomain(account, 'jihuaw'); - // await resolve(account); + // await resolve(account, 'maodea'); - // await registry(); + // await registry(account); // await nameWrapper(); + // await setWhitelist(account); + // @ts-ignore const Web3Controller = await conflux.getContractAt('Web3RegistrarController', WEB3_CONTROLLER); + let receipt = await Web3Controller.addAdmin('cfxtest:aangm324bxnw9umenr26sg0yf0ek4fv2bun05unabb').sendTransaction({ + from: account.address + }).executed(); + logReceipt(receipt, 'grant role'); /* await Web3Controller.setPriceOracle('cfxtest:acd51b7m6gufh1przxthzakrnm9w3g544ykhbt3pv5').sendTransaction({ from: account.address }).executed(); */ - await Web3Controller.setCommitmentAge(10, 600).sendTransaction({ + /* await Web3Controller.setCommitmentAge(10, 600).sendTransaction({ from: account.address - }).executed(); + }).executed(); */ /* await Web3Controller.setLabel45Quota(50000).sendTransaction({ from: account.address, }).executed(); */ + /* await Web3Controller.setValidLen(5).sendTransaction({ + from: account.address, + }).executed(); */ + // const status = await Web3Controller.labelStatus('1234'); // console.log(status); @@ -66,9 +79,9 @@ async function main() { // console.log(status); // @ts-ignore - // const StablePriceOracle = await conflux.getContractAt('contracts/web3registrar/StablePirceOracles.sol:StablePriceOracle', STABLE_ORACLE); + /* const StablePriceOracle = await conflux.getContractAt('contracts/web3registrar/StablePirceOracles.sol:StablePriceOracle', STABLE_ORACLE); - /* // @ts-ignore + // @ts-ignore let fiatpricesForOneYear = [10000n, 6100n, 3600n, 600n, 30n]; // cny for(let i = 0; i < fiatpricesForOneYear.length; i++) { fiatpricesForOneYear[i] = fiatpricesForOneYear[i] * BigInt(1e8) / (3600n * 24n * 365n); @@ -87,6 +100,11 @@ async function main() { // console.log(price); // await setMetadataUrlService(); + + // @ts-ignore + // const baseRegistrar = await conflux.getContractAt('BaseRegistrarImplementation', BASE_REGISTRAR); + // let owner = await baseRegistrar.ownerOf(namehash('hexxxhexdsssxxx.web3')); + // console.log(owner); } main().catch(console.log); @@ -105,12 +123,18 @@ async function purchaseDomain(account: any, toBuy: string) { console.log(`Rent price of ${toBuy}`, new Drip(rentPrice[0]).toCFX(), 'CFX'); const labelStatus = await Web3Controller.labelStatus(toBuy); console.log(`Label status of ${toBuy}`, labelStatus); + if (labelStatus !== 0n) { throw new Error('Label is not available'); } - + + const data: string[] = []; + + const setAddrData = PublicResolver.setAddr(namehash(`${toBuy}.web3`), 503, address.decodeCfxAddress(account.address).hexAddress).data; + data.push(setAddrData); + const commitment = await Web3Controller - .makeCommitment(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, [], true, 0, ONE_YEAR); + .makeCommitment(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, data, true, 0, ONE_YEAR); let receipt; receipt = await Web3Controller @@ -120,18 +144,11 @@ async function purchaseDomain(account: any, toBuy: string) { .executed(); logReceipt(receipt, 'Commit'); - /* receipt = await Web3Controller - .commitWithName(commitment, labelhash(toBuy)).sendTransaction({ - from: account - }) - .executed(); - logReceipt(receipt, 'CommitWithName'); */ - - await waitNS(40); + await waitNS(20); receipt = await Web3Controller - // .registerWithFiat(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, [], true, 0, ONE_YEAR) - .register(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, [], true, 0, ONE_YEAR) + // .registerWithFiat(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, data, true, 0, ONE_YEAR) + .register(toBuy, account.address, ONE_YEAR, labelhash(toBuy), PublicResolver.address, data, true, 0, ONE_YEAR) .sendTransaction({ from: account.address, value: Drip.fromCFX(200), @@ -139,7 +156,7 @@ async function purchaseDomain(account: any, toBuy: string) { logReceipt(receipt, 'Register'); } -async function claimReverseDomain(account: any) { +async function claimReverseDomain(account: any, toBuy: string) { // @ts-ignore const ENSRegistry = await conflux.getContractAt('ENSRegistry', ENS_REGISTRY); // @ts-ignore @@ -147,8 +164,6 @@ async function claimReverseDomain(account: any) { // @ts-ignore const PublicResolver = await conflux.getContractAt('PublicResolver', PUBLIC_RESOLVER); - const toBuy = 'jiuhua'; - let receipt receipt = await ReverseRegistrar.claimForAddr(account.address, account.address, PublicResolver.address) .sendTransaction({ @@ -157,10 +172,10 @@ async function claimReverseDomain(account: any) { .executed(); logReceipt(receipt, 'Set default resolver for reverse registrar'); - const owner = await ENSRegistry.owner(namehash(`${format.hexAddress(account.address).replace('0x', '')}.addr.reverse`)) - console.log(owner) + const owner = await ENSRegistry.owner(namehash(reverseName(account.address))) + console.log(account.address, 'reverse record owner', owner); - receipt = await PublicResolver.setName(namehash(`${format.hexAddress(account.address).replace('0x', '')}.addr.reverse`), 'jiuhua.web3') + receipt = await PublicResolver.setName(namehash(reverseName(account.address)), `${toBuy}.web3`) .sendTransaction({ from: account }) @@ -168,10 +183,10 @@ async function claimReverseDomain(account: any) { logReceipt(receipt, 'Set default resolver for reverse registrar'); } -async function resolve(account: any) { +async function resolve(account: any, label: string) { // @ts-ignore const ENSRegistry = await conflux.getContractAt('ENSRegistry', ENS_REGISTRY); - const name = 'heymancc.web3'; + const name = label + '.web3'; const node = namehash(name); const owner = await ENSRegistry.owner(node); console.log('owner', owner); @@ -194,18 +209,23 @@ async function resolve(account: any) { console.log('addr', addr); } -async function registry() { +async function registry(account: any) { // @ts-ignore const ENSRegistry = await conflux.getContractAt('ENSRegistry', ENS_REGISTRY); - const name = 'jiuhua1.web3'; - + const name = 'dao'; const node = namehash(name); - const owner = await ENSRegistry.owner(node); - console.log(owner); - + let receipt; + receipt = await ENSRegistry.setSubnodeRecord(node, labelhash('wys'), 'cfxtest:aarzbz0w5dnhtdtd307v1c8wapxj1714z2esy5redn', PUBLIC_RESOLVER, 0) + .sendTransaction({ + from: account + }) + .executed(); + logReceipt(receipt, 'Set subnode owner'); + const owner = await ENSRegistry.owner(namehash('wys.dao')); + console.log(owner); } async function nameWrapper() { @@ -220,22 +240,34 @@ async function nameWrapper() { const owner = await contract.ownerOf(node); console.log(owner); - const fuse = await contract.getData(node); - console.log(fuse); + const userDomains = await contract.userDomains(account.address); + console.log(userDomains); + + // const fuse = await contract.getData(node); + // console.log(fuse); // const domains = await contract.userDomains(account.address); // console.log(domains); - let receipt = await contract.setFuses(node, 3).sendTransaction({ - from: account.address + // let receipt = await contract.setFuses(node, 3).sendTransaction({ + // from: account.address + // }).executed(); + // console.log(receipt); +} + +async function setWhitelistContract(account: any, whiteList: string) { + // @ts-ignore + const Web3Controller = await conflux.getContractAt('Web3RegistrarController', WEB3_CONTROLLER); + const receipt = await Web3Controller.setNameWhitelist(whiteList).sendTransaction({ + from: account }).executed(); console.log(receipt); } async function setWhitelist(account: any) { // @ts-ignore - const Web3Controller = await conflux.getContractAt('Web3RegistrarController', WEB3_CONTROLLER); - const receipt = await Web3Controller.setNameWhitelist('cfxtest:acekf9jn798v05m654gbbb6kj9ktxsxd2ypdsr3us9').sendTransaction({ + const Web3Controller = await conflux.getContractAt('NameWhitelist', NAME_WHITELIST); + const receipt = await Web3Controller.setWhiteList('_', true).sendTransaction({ from: account }).executed(); console.log(receipt); diff --git a/scripts/playInHardhat.ts b/scripts/playInHardhat.ts index f261169..6f8c45b 100644 --- a/scripts/playInHardhat.ts +++ b/scripts/playInHardhat.ts @@ -27,14 +27,14 @@ async function main() { console.log(`price: ${price[0]}`); const fuseExpiry = Number.parseInt((Date.now() / 1000).toString()) + ONE_YEAR; - const commitment = await ethRegistrarController.makeCommitment(toBuy, adminAddr, ONE_YEAR, labelhash(toBuy), publicResolver.address, [], true, 64, fuseExpiry); + const commitment = await ethRegistrarController["makeCommitment(string,address,uint256,bytes32,address,bytes[],bool,uint16,uint64)"](toBuy, adminAddr, ONE_YEAR, labelhash(toBuy), publicResolver.address, [], true, 0, fuseExpiry); tx = await ethRegistrarController.commit(commitment); await tx.wait(); await mine(30); - tx = await ethRegistrarController.register(toBuy, adminAddr, ONE_YEAR, labelhash(toBuy), publicResolver.address, [], true, 64, fuseExpiry, { + tx = await ethRegistrarController['register(string,address,uint256,bytes32,address,bytes[],bool,uint16,uint64)'](toBuy, adminAddr, ONE_YEAR, labelhash(toBuy), publicResolver.address, [], true, 0, fuseExpiry, { value: price[0] }); await tx.wait(); @@ -52,7 +52,7 @@ async function main() { for(let i = 0; i < 10; i++) { const _toBuy = `jiuhua${i}`; const secret = labelhash(_toBuy); - const commitment = await ethRegistrarController.makeCommitment(_toBuy, adminAddr, ONE_YEAR, secret, publicResolver.address, [], true, 0, ONE_YEAR); + const commitment = await ethRegistrarController["makeCommitment(string,address,uint256,bytes32,address,bytes[],bool,uint16,uint64)"](_toBuy, adminAddr, ONE_YEAR, secret, publicResolver.address, [], true, 0, ONE_YEAR); tx = await ethRegistrarController.commit(commitment); await tx.wait(); diff --git a/scripts/setSponsor.ts b/scripts/setSponsor.ts index 433ded4..e180b9d 100644 --- a/scripts/setSponsor.ts +++ b/scripts/setSponsor.ts @@ -10,12 +10,12 @@ const { async function main() { let addrs = [ - 'cfxtest:achg113s8916v2u756tvf6hdvmbsb73b16ykt1pvwm', - 'cfxtest:ach1p03gkptxz07p4ecn66gjpd0xrnkkbj1n6p96d5', - 'cfxtest:acc1ttg7287cybsdy6bn0002nzepypn29yavjbj36g', - 'cfxtest:acdc4xzy0pg1dzrbajgmv8nw3cjyj6ezn2dzncc4w5', - 'cfxtest:acbrnwph2609zbf21np0501d87xb9dnvuakpv911xk', - 'cfxtest:acecxexm0pg268m44jncw5bmagwwmun53jj9msmadj' + 'cfxtest:acd3rm7y183trhpzvz8m3y72kx1abk4d0jh842585a', + 'cfxtest:acfmezysbf86jy3jnw835bnamxp08dxzd61w5ur8hy', + 'cfxtest:acbp262fvjzva1raef4n3e5yyszy9spsc20cmztnya', + 'cfxtest:acbttry22rsx7k54ms6hbkc0c8tf680u5pc0r31ef5', + 'cfxtest:acde0h4f9nz70h146d4p0wbbx38zamwhue3uce1ndt', + 'cfxtest:acfcb2fv6t8xrxyyx3x1atwmdrhh5xvfd21zsje216' ]; for (let addr of addrs) { @@ -43,13 +43,13 @@ async function setSponsor(addr: string) { receipt = await Sponsor.setSponsorForGas(addr, Drip.fromGDrip(5000000)).sendTransaction({ from: account.address, - value: Drip.fromCFX(10), + value: Drip.fromCFX(11), }).executed(); logReceipt(receipt, 'setSponsorForGas'); receipt = await Sponsor.setSponsorForCollateral(addr).sendTransaction({ from: account.address, - value: Drip.fromCFX(200), + value: Drip.fromCFX(201), }).executed(); logReceipt(receipt, 'setSponsorForCollateral'); diff --git a/scripts/utils.ts b/scripts/utils.ts index 4edc8dc..bb42bdb 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -8,8 +8,8 @@ export function logReceipt(receipt: TransactionReceipt, name?: string) { if (name) { console.log(`Receipt ${name} =============`); } + console.log("Transaction hash:", receipt.transactionHash); if (receipt.outcomeStatus == 0) { - console.log("Transaction succeeded:", receipt.transactionHash); if (receipt.contractCreated) { console.log("Contract created at:", receipt.contractCreated); } @@ -77,4 +77,16 @@ export async function waitNS(sec: number) { export function reverseName(address: string) { return `${format.hexAddress(address).replace('0x', '')}.addr.reverse`; +} + +export function loadPrivateKey() { + if (process.env.PRIVATE_KEY) { + return process.env.PRIVATE_KEY; + } else { + // @ts-ignore + const keystore = JSON.parse(fs.readFileSync(process.env.KEYSTORE, 'utf8')); + // @ts-ignore + const privateKeyBuf = sign.decrypt(keystore, process.env.KEYSTORE_PWD); + return format.hex(privateKeyBuf); + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 74ee9b9..b5bb480 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,11 +3,11 @@ "@babel/runtime@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" "@conflux-dev/conflux-address-js@^1.3.16": version "1.3.16" @@ -45,7 +45,7 @@ "@ensdomains/ens-contracts@https://github.com/ensdomains/ens-contracts": version "0.0.13" - resolved "https://github.com/ensdomains/ens-contracts#f1bdcda24e118ebe3a6ae3094c4a4e80ec55f2d7" + resolved "https://github.com/ensdomains/ens-contracts#06d01843d0369bfaf998f05ffe4cbb9a54b3cf63" dependencies: "@ensdomains/buffer" "^0.0.13" "@ensdomains/solsha1" "0.0.3" @@ -89,7 +89,15 @@ dependencies: hash-test-vectors "^1.3.2" -"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + +"@ethereumjs/common@^2.5.0": version "2.6.5" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== @@ -97,13 +105,13 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.5" -"@ethereumjs/tx@^3.3.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.7", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" @@ -322,6 +330,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" @@ -782,7 +816,12 @@ ethers "^4.0.0-beta.1" source-map-support "^0.5.19" -"@openzeppelin/contracts@^4.1.0", "@openzeppelin/contracts@^4.7.3": +"@openzeppelin/contracts@^4.1.0": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.1.tgz#709cfc4bbb3ca9f4460d60101f15dac6b7a2d5e4" + integrity sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ== + +"@openzeppelin/contracts@^4.7.3": version "4.7.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.3.tgz#939534757a81f8d69cc854c7692805684ff3111e" integrity sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw== @@ -877,11 +916,6 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - "@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" @@ -894,13 +928,6 @@ dependencies: antlr4ts "^0.5.0-alpha.4" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -915,27 +942,27 @@ dependencies: defer-to-connect "^2.0.1" -"@truffle/abi-utils@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.2.tgz#71184255cfa05a5ded3c7b7fb50a3de813446224" - integrity sha512-32queMD64YKL/tmQgSV4Xs073dIaZ9tp7NP1icjwvFSA3Q9yeu7ApYbSbYMsx9H9zWkkVOsfcoJ2kJEieOCzsA== +"@truffle/abi-utils@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.6.tgz#ab35bc437e4c059a5c9a0595cd6df367199493a9" + integrity sha512-61aTH2QmwVA1INaPMufRHTsS6jsEhS+GCkuCDdvBDmwctSnCKGDOr185BGt65QrpMRxYmIoH6WFBSNMYxW9GRw== dependencies: change-case "3.0.2" fast-check "3.1.1" - web3-utils "1.7.4" + web3-utils "1.8.1" "@truffle/blockchain-utils@^0.1.3": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.4.tgz#1365b88c3d2922a066d947e93748f09b0fac2e93" - integrity sha512-HegAo5A8UX9vE8dtceBRgCY207gOb9wj54c8mNOOWHcFpkyJz7kZYGo44As6Imh10/0hD2j7vHQ56Jf+uszJ3A== + version "0.1.6" + resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.6.tgz#7ea0a16b8135e5aeb688bf3bd014fa8f6ba45adb" + integrity sha512-SldoNRIFSm3+HMBnSc2jFsu5TWDkCN4X6vL3wrd0t6DIeF7nD6EoPPjxwbFSoqCnkkRxMuZeL6sUx7UMJS/wSA== -"@truffle/codec@^0.14.5": - version "0.14.5" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.5.tgz#5b1574fb55d20a56af3039adaac7cd9dd421b1fe" - integrity sha512-3FCpTJe6o7LGWUfrSdguMpdpH1PTn3u7bIfbj6Cfdzym2OAVSgxTgdlqC1poepbk0xcOVcUW+EsqNwLMqmBiPA== +"@truffle/codec@^0.14.13": + version "0.14.13" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.13.tgz#f8cab4c2de6fb425d4b70668835aa2a60a9ee3de" + integrity sha512-x9fx5IH7K7caQ8CVK9rdiyxmMHxBfHFR/CTr11CYsS+WcS3bdJ3FJrnOFfLydAQJb21oLX9PeiErU0fOYoYY6Q== dependencies: - "@truffle/abi-utils" "^0.3.2" - "@truffle/compile-common" "^0.8.1" + "@truffle/abi-utils" "^0.3.6" + "@truffle/compile-common" "^0.9.2" big.js "^6.0.3" bn.js "^5.1.3" cbor "^5.2.0" @@ -943,49 +970,54 @@ lodash "^4.17.21" semver "7.3.7" utf8 "^3.0.0" - web3-utils "1.7.4" + web3-utils "1.8.1" -"@truffle/compile-common@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.8.1.tgz#a3fe500edb880a3104324c9885bbd27b6ce05c54" - integrity sha512-7mzzG9Cfrn+fDT5Sqi7B6pccvIIV5w/GM8/56YgnjysbDzy5aZ6mv0fe37ZbcznEVQ35NJjBy+lEr/ozOGXwQA== +"@truffle/compile-common@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.2.tgz#da8aed5c9c8da119cb4b7ee5a425d2559a99bfb7" + integrity sha512-n7MF/4/dntccj44RGe3PRMD8Vk46PU8dJtzd1VLAfgokK2Y2N+SjAzDskBnmAydZVWAM315nZIUQsgnY8xoATw== dependencies: - "@truffle/error" "^0.1.1" + "@truffle/error" "^0.2.0" colors "1.4.0" "@truffle/contract-schema@^3.4.7": - version "3.4.10" - resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.10.tgz#c11a814c13ad55a5e454fb35ddfa291ae0d24ace" - integrity sha512-BhRNRoRvlj2th6E5RNS0BnS0ZxQe01JJz8I7MjkGqdeXSvrn6qDCAnbmvhNgUv0l5h8w5+gBOQhAJhILf1shdQ== + version "3.4.11" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.11.tgz#ac5fc8be656b786c2bd5d3a2ca6faeb2949e7ff3" + integrity sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ== dependencies: ajv "^6.10.0" debug "^4.3.1" "@truffle/debug-utils@^6.0.22": - version "6.0.35" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.35.tgz#c9e93d9968857bae14789737f986b8d601a03eb2" - integrity sha512-GuLsc+GFEYiUM683GWh4/ol3jkBts5a601detVWu1Xo5/bSL5gxooOjgOTovjA8dimCjkyi/DnK2yHHC+q+g0g== + version "6.0.44" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.44.tgz#f117f1c347d294723f9c376bc9e951f94a569b1e" + integrity sha512-JYJ6C1+g9KloF3h+i9VbWFh08JTdme2nXsyaMcidgdCbZaenPxUHtdOUM6WI+nIpw8dgdjXgqXbuRsAnVb9vnQ== dependencies: - "@truffle/codec" "^0.14.5" + "@truffle/codec" "^0.14.13" "@trufflesuite/chromafi" "^3.0.0" bn.js "^5.1.3" chalk "^2.4.2" debug "^4.3.1" highlightjs-solidity "^2.0.5" -"@truffle/error@^0.1.0", "@truffle/error@^0.1.1": +"@truffle/error@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== +"@truffle/error@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.0.tgz#65de6f03f5c041f883cc87677eecf8231428f1ab" + integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== + "@truffle/interface-adapter@^0.5.16": - version "0.5.22" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.22.tgz#a25677cce02e3ce192d8d88fbbb11c116cc05334" - integrity sha512-Bgl5Afb1mPVNedI8CJzZQzVIdrZWSXISTBrXPZmppD4Q+6V1RUzlLxiaGGB4gYHOA+U0pBzD8MCcSycPAD9RsA== + version "0.5.27" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.27.tgz#1abfb6a8a3315dfe12d58df4f2424b14157b70d1" + integrity sha512-cKNPVFshlohIdVPnfrZehMs0LuqOpd0yzCOTqlFFile2hCsdB/KkiWeK8nqaDV9o3n/5eXNkqPutbXtbs8Cl+g== dependencies: bn.js "^5.1.3" ethers "^4.0.32" - web3 "1.7.4" + web3 "1.8.1" "@trufflesuite/chromafi@^3.0.0": version "3.0.0" @@ -1056,14 +1088,14 @@ "@types/node" "*" "@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" - integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" - "@types/keyv" "*" + "@types/keyv" "^3.1.4" "@types/node" "*" - "@types/responselike" "*" + "@types/responselike" "^1.0.0" "@types/chai-as-promised@^7.1.3": version "7.1.5" @@ -1104,7 +1136,7 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/keyv@*": +"@types/keyv@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== @@ -1163,7 +1195,7 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== -"@types/responselike@*", "@types/responselike@^1.0.0": +"@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== @@ -1207,9 +1239,9 @@ abort-controller@^3.0.0: event-target-shim "^5.0.0" abortcontroller-polyfill@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" - integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" @@ -1574,7 +1606,12 @@ bignumber.js@^7.2.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +bignumber.js@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== @@ -1623,25 +1660,7 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@^1.16.0: +body-parser@1.20.1, body-parser@^1.16.0: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== @@ -1829,19 +1848,6 @@ cacheable-lookup@^6.0.4: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - cacheable-request@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" @@ -2250,9 +2256,9 @@ content-hash@^2.5.2: multihashes "^0.4.15" content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== cookie-signature@1.0.6: version "1.0.6" @@ -2269,7 +2275,7 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookiejar@^2.1.1, cookiejar@^2.1.2: +cookiejar@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== @@ -2443,9 +2449,9 @@ decamelize@^4.0.0: integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== decompress-response@^3.3.0: version "3.3.0" @@ -2485,11 +2491,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -2650,11 +2651,6 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2756,36 +2752,6 @@ es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" -es-abstract@^1.20.0: - version "1.20.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -3009,7 +2975,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: +ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -3035,7 +3001,43 @@ ethers@^4.0.0-beta.1, ethers@^4.0.32, ethers@^4.0.40: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^5.0.13, ethers@^5.4.7: +ethers@^5.0.13: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethers@^5.4.7: version "5.7.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.1.tgz#48c83a44900b5f006eb2f65d3ba6277047fd4f33" integrity sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q== @@ -3106,13 +3108,13 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" express@^4.14.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -3131,7 +3133,7 @@ express@^4.14.0: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -3481,7 +3483,7 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2, get-intrinsic@^1.1.3: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== @@ -3490,18 +3492,20 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@ has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + get-port@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -3641,6 +3645,13 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" @@ -3660,27 +3671,10 @@ got@12.1.0: p-cancelable "^3.0.0" responselike "^2.0.0" -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - got@^11.8.5: - version "11.8.5" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" - integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" @@ -3909,9 +3903,9 @@ highlight.js@^10.4.1: integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== highlightjs-solidity@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz#48b945f41886fa49af9f06023e6e87fffc243745" - integrity sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz#e7a702a2b05e0a97f185e6ba39fd4846ad23a990" + integrity sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg== hmac-drbg@^1.0.1: version "1.0.1" @@ -3948,9 +3942,9 @@ http-basic@^8.1.1: parse-cache-control "^1.0.1" http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-errors@2.0.0: version "2.0.0" @@ -3993,9 +3987,9 @@ http2-wrapper@^1.0.0-beta.5.2: resolve-alpn "^1.0.0" http2-wrapper@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" - integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.2.0" @@ -4138,7 +4132,7 @@ is-buffer@^2.0.5, is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.2.7: +is-callable@^1.1.3: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -4266,15 +4260,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" - integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.20.0" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: @@ -4381,11 +4375,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -4468,17 +4457,10 @@ keccak@^3.0.0, keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - keyv@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" - integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: json-buffer "3.0.1" @@ -4623,11 +4605,6 @@ lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -4753,7 +4730,7 @@ mime@^2.4.6: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -4833,10 +4810,10 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@*: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.3.tgz#b083ff37be046fd3d6552468c1f0ff44c1545d1f" + integrity sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw== mkdirp@0.5.5: version "0.5.5" @@ -4852,6 +4829,11 @@ mkdirp@0.5.x, mkdirp@^0.5.5: dependencies: minimist "^1.2.6" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -5123,11 +5105,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" @@ -5258,11 +5235,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" @@ -5381,9 +5353,9 @@ parse5-htmlparser2-tree-adapter@^7.0.0: parse5 "^7.0.0" parse5@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" - integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" @@ -5511,11 +5483,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - prettier@^2.3.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" @@ -5582,16 +5549,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== pure-rand@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.3.tgz#a2f15dfbc3be8433d1d8ed67ee411aa83fb90406" - integrity sha512-9N8x1h8dptBQpHyC7aZMS+iNOAm97WMGY0AFrguU1cpfW3I5jINkWe5BIY5md0ofy+1TCIELsVcm/GJXZSaPbw== - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" + version "5.0.5" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" + integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== qs@6.11.0, qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: version "6.11.0" @@ -5726,10 +5686,10 @@ reduce-flatten@^2.0.0: resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regexp.prototype.flags@^1.4.3: version "1.4.3" @@ -5852,13 +5812,6 @@ resolve@^1.1.6, resolve@^1.10.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - responselike@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" @@ -5927,15 +5880,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -6622,11 +6566,6 @@ tmp@0.0.33: dependencies: os-tmpdir "~1.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -6865,13 +6804,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" @@ -6894,16 +6826,15 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== +util@^0.12.0, util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" is-generator-function "^1.0.7" is-typed-array "^1.1.3" - safe-buffer "^5.1.2" which-typed-array "^1.1.2" utils-merge@1.0.1: @@ -6916,11 +6847,6 @@ uuid@2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -6931,6 +6857,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -6963,416 +6894,417 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -web3-bzz@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" - integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== +web3-bzz@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" + integrity sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w== dependencies: "@types/node" "^12.12.6" - got "9.6.0" + got "12.1.0" swarm-js "^0.1.40" -web3-bzz@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.0.tgz#2023676d7c17ea36512bf76eb310755a02a3d464" - integrity sha512-caDtdKeLi7+2Vb+y+cq2yyhkNjnxkFzVW0j1DtemarBg3dycG1iEl75CVQMLNO6Wkg+HH9tZtRnUyFIe5LIUeQ== +web3-bzz@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.2.tgz#67ea1c775874056250eece551ded22905ed08784" + integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== dependencies: "@types/node" "^12.12.6" got "12.1.0" swarm-js "^0.1.40" -web3-core-helpers@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" - integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== +web3-core-helpers@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" + integrity sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw== dependencies: - web3-eth-iban "1.7.4" - web3-utils "1.7.4" + web3-eth-iban "1.8.1" + web3-utils "1.8.1" -web3-core-helpers@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.0.tgz#5dcfdda1a4ea277041d912003198f1334ca29d7c" - integrity sha512-nMAVwZB3rEp/khHI2BvFy0e/xCryf501p5NGjswmJtEM+Zrd3Biaw52JrB1qAZZIzCA8cmLKaOgdfamoDOpWdw== +web3-core-helpers@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz#82066560f8085e6c7b93bcc8e88b441289ea9f9f" + integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== dependencies: - web3-eth-iban "1.8.0" - web3-utils "1.8.0" + web3-eth-iban "1.8.2" + web3-utils "1.8.2" -web3-core-method@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" - integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== +web3-core-method@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" + integrity sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA== dependencies: "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-utils "1.7.4" + web3-core-helpers "1.8.1" + web3-core-promievent "1.8.1" + web3-core-subscriptions "1.8.1" + web3-utils "1.8.1" -web3-core-method@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.0.tgz#9c2da8896808917d1679c319f19e2174ba17086c" - integrity sha512-c94RAzo3gpXwf2rf8rL8C77jOzNWF4mXUoUfZYYsiY35cJFd46jQDPI00CB5+ZbICTiA5mlVzMj4e7jAsTqiLA== +web3-core-method@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.2.tgz#ba5ec68084e903f0516415010477618be017eac2" + integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== dependencies: "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.8.0" - web3-core-promievent "1.8.0" - web3-core-subscriptions "1.8.0" - web3-utils "1.8.0" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-utils "1.8.2" -web3-core-promievent@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" - integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== +web3-core-promievent@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" + integrity sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg== dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.0.tgz#979765fd4d37ab0f158f0ee54037b279b737bd53" - integrity sha512-FGLyjAuOaAQ+ZhV6iuw9tg/9WvIkSZXKHQ4mdTyQ8MxVraOtFivOCbuLLsGgapfHYX+RPxsc1j1YzQjKoupagQ== +web3-core-promievent@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz#e670d6b4453632e6ecfd9ad82da44f77ac1585c9" + integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== dependencies: eventemitter3 "4.0.4" -web3-core-requestmanager@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" - integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== - dependencies: - util "^0.12.0" - web3-core-helpers "1.7.4" - web3-providers-http "1.7.4" - web3-providers-ipc "1.7.4" - web3-providers-ws "1.7.4" - -web3-core-requestmanager@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.0.tgz#06189df80cf52d24a195a7ef655031afe8192df3" - integrity sha512-2AoYCs3Owl5foWcf4uKPONyqFygSl9T54L8b581U16nsUirjhoTUGK/PBhMDVcLCmW4QQmcY5A8oPFpkQc1TTg== +web3-core-requestmanager@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" + integrity sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw== dependencies: util "^0.12.0" - web3-core-helpers "1.8.0" - web3-providers-http "1.8.0" - web3-providers-ipc "1.8.0" - web3-providers-ws "1.8.0" - -web3-core-subscriptions@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" - integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== + web3-core-helpers "1.8.1" + web3-providers-http "1.8.1" + web3-providers-ipc "1.8.1" + web3-providers-ws "1.8.1" + +web3-core-requestmanager@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz#dda95e83ca4808949612a41e54ecea557f78ef26" + integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== + dependencies: + util "^0.12.5" + web3-core-helpers "1.8.2" + web3-providers-http "1.8.2" + web3-providers-ipc "1.8.2" + web3-providers-ws "1.8.2" + +web3-core-subscriptions@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" + integrity sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" + web3-core-helpers "1.8.1" -web3-core-subscriptions@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.0.tgz#ff66ae4467c8cb4716367248bcefb1845c0f8b83" - integrity sha512-7lHVRzDdg0+Gcog55lG6Q3D8JV+jN+4Ly6F8cSn9xFUAwOkdbgdWsjknQG7t7CDWy21DQkvdiY2BJF8S68AqOA== +web3-core-subscriptions@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz#0c8bd49439d83c6f0a03c70f00b24a915a70a5ed" + integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.8.0" + web3-core-helpers "1.8.2" -web3-core@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" - integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== +web3-core@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" + integrity sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw== dependencies: "@types/bn.js" "^5.1.0" "@types/node" "^12.12.6" bignumber.js "^9.0.0" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-requestmanager "1.7.4" - web3-utils "1.7.4" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-core-requestmanager "1.8.1" + web3-utils "1.8.1" -web3-core@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.0.tgz#90afce527ac1b1dff8cbed2acbc0336530b8aacf" - integrity sha512-9sCA+Z02ci6zoY2bAquFiDjujRwmSKHiSGi4B8IstML8okSytnzXk1izHYSynE7ahIkguhjWAuXFvX76F5rAbA== +web3-core@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.2.tgz#333e93d7872b1a36efe758ed8b89a7acbdd962c2" + integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== dependencies: "@types/bn.js" "^5.1.0" "@types/node" "^12.12.6" bignumber.js "^9.0.0" - web3-core-helpers "1.8.0" - web3-core-method "1.8.0" - web3-core-requestmanager "1.8.0" - web3-utils "1.8.0" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-requestmanager "1.8.2" + web3-utils "1.8.2" -web3-eth-abi@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" - integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== +web3-eth-abi@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" + integrity sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w== dependencies: "@ethersproject/abi" "^5.6.3" - web3-utils "1.7.4" + web3-utils "1.8.1" -web3-eth-abi@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.0.tgz#47fdff00bfdfa72064c9c612ff6369986598196d" - integrity sha512-xPeMb2hS9YLQK/Q5YZpkcmzoRGM+/R8bogSrYHhNC3hjZSSU0YRH+1ZKK0f9YF4qDZaPMI8tKWIMSCDIpjG6fg== +web3-eth-abi@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz#16e1e9be40e2527404f041a4745111211488f31a" + integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== dependencies: "@ethersproject/abi" "^5.6.3" - web3-utils "1.8.0" + web3-utils "1.8.2" -web3-eth-accounts@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" - integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== +web3-eth-accounts@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" + integrity sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg== dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" crypto-browserify "3.12.0" eth-lib "0.2.8" ethereumjs-util "^7.0.10" scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - -web3-eth-accounts@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.0.tgz#960d947ee87a49d6c706dc6312334fbfbd6ff812" - integrity sha512-HQ/MDSv4bexwJLvnqsM6xpGE7c2NVOqyhzOZFyMUKXbIwIq85T3TaLnM9pCN7XqMpDcfxqiZ3q43JqQVkzHdmw== - dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" - crypto-browserify "3.12.0" + uuid "^9.0.0" + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-utils "1.8.1" + +web3-eth-accounts@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz#b894f5d5158fcae429da42de75d96520d0712971" + integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" eth-lib "0.2.8" - ethereumjs-util "^7.0.10" + ethereumjs-util "^7.1.5" scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.8.0" - web3-core-helpers "1.8.0" - web3-core-method "1.8.0" - web3-utils "1.8.0" + uuid "^9.0.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" -web3-eth-contract@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" - integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== +web3-eth-contract@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" + integrity sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg== dependencies: "@types/bn.js" "^5.1.0" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-utils "1.7.4" - -web3-eth-contract@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.0.tgz#58f4ce0bde74e5ce87663502e409a92abad7b2c5" - integrity sha512-6xeXhW2YoCrz2Ayf2Vm4srWiMOB6LawkvxWJDnUWJ8SMATg4Pgu42C/j8rz/enXbYWt2IKuj0kk8+QszxQbK+Q== + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-core-promievent "1.8.1" + web3-core-subscriptions "1.8.1" + web3-eth-abi "1.8.1" + web3-utils "1.8.1" + +web3-eth-contract@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz#5388b7130923d2b790c09a420391a81312a867fb" + integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== dependencies: "@types/bn.js" "^5.1.0" - web3-core "1.8.0" - web3-core-helpers "1.8.0" - web3-core-method "1.8.0" - web3-core-promievent "1.8.0" - web3-core-subscriptions "1.8.0" - web3-eth-abi "1.8.0" - web3-utils "1.8.0" - -web3-eth-ens@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" - integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-utils "1.8.2" + +web3-eth-ens@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" + integrity sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-contract "1.7.4" - web3-utils "1.7.4" - -web3-eth-ens@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.0.tgz#f1937371eac54b087ebe2e871780c2710d39998d" - integrity sha512-/eFbQEwvsMOEiOhw9/iuRXCsPkqAmHHWuFOrThQkozRgcnSTRnvxkkRC/b6koiT5/HaKeUs4yQDg+/ixsIxZxA== + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-promievent "1.8.1" + web3-eth-abi "1.8.1" + web3-eth-contract "1.8.1" + web3-utils "1.8.1" + +web3-eth-ens@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz#0a086ad4d919102e28b9fd3036df246add9df22a" + integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - web3-core "1.8.0" - web3-core-helpers "1.8.0" - web3-core-promievent "1.8.0" - web3-eth-abi "1.8.0" - web3-eth-contract "1.8.0" - web3-utils "1.8.0" - -web3-eth-iban@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" - integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-contract "1.8.2" + web3-utils "1.8.2" + +web3-eth-iban@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz#c6484e5d68ca644aa78431301e7acd5df24598d1" + integrity sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg== dependencies: bn.js "^5.2.1" - web3-utils "1.7.4" + web3-utils "1.8.1" -web3-eth-iban@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.0.tgz#3af8a0c95b5f7b0b81ab0bcd2075c1e5dda31520" - integrity sha512-4RbvUxcMpo/e5811sE3a6inJ2H4+FFqUVmlRYs0RaXaxiHweahSRBNcpO0UWgmlePTolj0rXqPT2oEr0DuC8kg== +web3-eth-iban@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz#5cb3022234b13986f086353b53f0379a881feeaf" + integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== dependencies: bn.js "^5.2.1" - web3-utils "1.8.0" + web3-utils "1.8.2" -web3-eth-personal@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" - integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== +web3-eth-personal@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" + integrity sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA== dependencies: "@types/node" "^12.12.6" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-net "1.8.1" + web3-utils "1.8.1" -web3-eth-personal@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.0.tgz#433c35e2e042844402a12d543c4126ea1494b478" - integrity sha512-L7FT4nR3HmsfZyIAhFpEctKkYGOjRC2h6iFKs9gnFCHZga8yLcYcGaYOBIoYtaKom99MuGBoosayWt/Twh7F5A== +web3-eth-personal@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz#3526c1ebaa4e7bf3a0a8ec77e34f067cc9a750b2" + integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== dependencies: "@types/node" "^12.12.6" - web3-core "1.8.0" - web3-core-helpers "1.8.0" - web3-core-method "1.8.0" - web3-net "1.8.0" - web3-utils "1.8.0" - -web3-eth@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" - integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== - dependencies: - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-accounts "1.7.4" - web3-eth-contract "1.7.4" - web3-eth-ens "1.7.4" - web3-eth-iban "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - -web3-eth@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.0.tgz#006974a5d5e30644d05814111f9e162a72e4a09c" - integrity sha512-hist52os3OT4TQFB/GxPSMxTh3995sz6LPvQpPvj7ktSbpg9RNSFaSsPlCT63wUAHA3PZb1FemkAIeQM5t72Lw== - dependencies: - web3-core "1.8.0" - web3-core-helpers "1.8.0" - web3-core-method "1.8.0" - web3-core-subscriptions "1.8.0" - web3-eth-abi "1.8.0" - web3-eth-accounts "1.8.0" - web3-eth-contract "1.8.0" - web3-eth-ens "1.8.0" - web3-eth-iban "1.8.0" - web3-eth-personal "1.8.0" - web3-net "1.8.0" - web3-utils "1.8.0" - -web3-net@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" - integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" - -web3-net@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.0.tgz#9acff92d7c647d801bc68df0ff4416f104dbe789" - integrity sha512-kX6EAacK7QrOe7DOh0t5yHS5q2kxZmTCxPVwSz9io9xBeE4n4UhmzGJ/VfhP2eM3OPKYeypcR3LEO6zZ8xn2vw== + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-eth@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" + integrity sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg== + dependencies: + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-core-subscriptions "1.8.1" + web3-eth-abi "1.8.1" + web3-eth-accounts "1.8.1" + web3-eth-contract "1.8.1" + web3-eth-ens "1.8.1" + web3-eth-iban "1.8.1" + web3-eth-personal "1.8.1" + web3-net "1.8.1" + web3-utils "1.8.1" + +web3-eth@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.2.tgz#8562287ae1803c30eb54dc7d832092e5739ce06a" + integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== + dependencies: + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-accounts "1.8.2" + web3-eth-contract "1.8.2" + web3-eth-ens "1.8.2" + web3-eth-iban "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-net@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" + integrity sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ== dependencies: - web3-core "1.8.0" - web3-core-method "1.8.0" - web3-utils "1.8.0" + web3-core "1.8.1" + web3-core-method "1.8.1" + web3-utils "1.8.1" -web3-providers-http@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" - integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== +web3-net@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.2.tgz#97e1e0015fabc4cda31017813e98d0b5468dd04f" + integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== dependencies: - web3-core-helpers "1.7.4" - xhr2-cookies "1.1.0" + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" -web3-providers-http@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.0.tgz#3fd1e569ead2095343fac17d53160a3bae674c23" - integrity sha512-/MqxwRzExohBWW97mqlCSW/+NHydGRyoEDUS1bAIF2YjfKFwyRtHgrEzOojzkC9JvB+8LofMvbXk9CcltpZapw== +web3-providers-http@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" + integrity sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg== dependencies: abortcontroller-polyfill "^1.7.3" cross-fetch "^3.1.4" es6-promise "^4.2.8" - web3-core-helpers "1.8.0" + web3-core-helpers "1.8.1" -web3-providers-ipc@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" - integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== +web3-providers-http@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.2.tgz#fbda3a3bbc8db004af36e91bec35f80273b37885" + integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.8.2" + +web3-providers-ipc@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" + integrity sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA== dependencies: oboe "2.1.5" - web3-core-helpers "1.7.4" + web3-core-helpers "1.8.1" -web3-providers-ipc@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.0.tgz#d339a24c4d764e459e425d3ac868a551ac33e3ea" - integrity sha512-tAXHtVXNUOgehaBU8pzAlB3qhjn/PRpjdzEjzHNFqtRRTwzSEKOJxFeEhaUA4FzHnTlbnrs8ujHWUitcp1elfg== +web3-providers-ipc@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz#e52a7250f40c83b99a2482ec5b4cf2728377ae5c" + integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== dependencies: oboe "2.1.5" - web3-core-helpers "1.8.0" + web3-core-helpers "1.8.2" -web3-providers-ws@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" - integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== +web3-providers-ws@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" + integrity sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" + web3-core-helpers "1.8.1" websocket "^1.0.32" -web3-providers-ws@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.0.tgz#a0a73e0606981ea32bed40d215000a64753899de" - integrity sha512-bcZtSifsqyJxwkfQYamfdIRp4nhj9eJd7cxHg1uUkfLJK125WP96wyJL1xbPt7qt0MpfnTFn8/UuIqIB6nFENg== +web3-providers-ws@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz#56a2b701387011aca9154ca4bc06ea4b5f27e4ef" + integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.8.0" + web3-core-helpers "1.8.2" websocket "^1.0.32" -web3-shh@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" - integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== +web3-shh@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" + integrity sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g== dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-net "1.7.4" + web3-core "1.8.1" + web3-core-method "1.8.1" + web3-core-subscriptions "1.8.1" + web3-net "1.8.1" -web3-shh@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.0.tgz#b4abbf4f59d097ce2f74360e61e2e5c0bd6507c7" - integrity sha512-DNRgSa9Jf9xYFUGKSMylrf+zt3MPjhI2qF+UWX07o0y3+uf8zalDGiJOWvIS4upAsdPiKKVJ7co+Neof47OMmg== +web3-shh@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.2.tgz#217a417f0d6e243dd4d441848ffc2bd164cea8a0" + integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== dependencies: - web3-core "1.8.0" - web3-core-method "1.8.0" - web3-core-subscriptions "1.8.0" - web3-net "1.8.0" + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-net "1.8.2" -web3-utils@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" - integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== +web3-utils@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" + integrity sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ== dependencies: bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" @@ -7382,7 +7314,20 @@ web3-utils@1.7.4: randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.8.0, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: +web3-utils@1.8.2, web3-utils@^1.0.0-beta.31: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.2.tgz#c32dec5e9b955acbab220eefd7715bc540b75cc9" + integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3-utils@^1.3.6: version "1.8.0" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.0.tgz#0a506f8c6af9a2ad6ba79689892662769534fc03" integrity sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ== @@ -7395,31 +7340,31 @@ web3-utils@1.8.0, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: randombytes "^2.1.0" utf8 "3.0.0" -web3@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" - integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== +web3@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" + integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== dependencies: - web3-bzz "1.7.4" - web3-core "1.7.4" - web3-eth "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-shh "1.7.4" - web3-utils "1.7.4" + web3-bzz "1.8.1" + web3-core "1.8.1" + web3-eth "1.8.1" + web3-eth-personal "1.8.1" + web3-net "1.8.1" + web3-shh "1.8.1" + web3-utils "1.8.1" web3@^1.0.0-beta.34: - version "1.8.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.0.tgz#3ca5f0b32de6a1f626407740411219035b5fde64" - integrity sha512-sldr9stK/SALSJTgI/8qpnDuBJNMGjVR84hJ+AcdQ+MLBGLMGsCDNubCoyO6qgk1/Y9SQ7ignegOI/7BPLoiDA== - dependencies: - web3-bzz "1.8.0" - web3-core "1.8.0" - web3-eth "1.8.0" - web3-eth-personal "1.8.0" - web3-net "1.8.0" - web3-shh "1.8.0" - web3-utils "1.8.0" + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.2.tgz#95a4e5398fd0f01325264bf8e5e8cdc69a7afe86" + integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== + dependencies: + web3-bzz "1.8.2" + web3-core "1.8.2" + web3-eth "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-shh "1.8.2" + web3-utils "1.8.2" webidl-conversions@^3.0.0: version "3.0.1" @@ -7468,16 +7413,16 @@ which-module@^2.0.0: integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which-typed-array@^1.1.2: - version "1.1.8" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" - integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.20.0" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.9" + is-typed-array "^1.1.10" which@1.3.1, which@^1.1.1, which@^1.3.1: version "1.3.1" @@ -7591,13 +7536,6 @@ xhr-request@^1.0.1, xhr-request@^1.1.0: url-set-query "^1.0.0" xhr "^2.0.4" -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== - dependencies: - cookiejar "^2.1.1" - xhr@^2.0.4, xhr@^2.3.3: version "2.6.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d"