In Progress Add Mock
This commit is contained in:
parent
89363c573a
commit
6e9c6dd633
@ -7,4 +7,4 @@ coverage
|
||||
.env
|
||||
.*
|
||||
README.md
|
||||
coverage.json
|
||||
coverage.json
|
||||
|
@ -1,86 +1,110 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.8;
|
||||
/*
|
||||
Get funds from users
|
||||
Withdraw funds
|
||||
Set a minimum funding value in USD
|
||||
*/
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
import "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
|
||||
import "./PriceConverter.sol";
|
||||
// Save Gas - constant, immutable
|
||||
|
||||
error NotOwner();
|
||||
|
||||
// 816914
|
||||
contract FundMe {
|
||||
/*
|
||||
Transaction Fields
|
||||
Nonce
|
||||
Gas Price
|
||||
Gas Limit - Max Gas that this TX can use
|
||||
To - Address
|
||||
Value - Amount of wei to send
|
||||
Data - What to send to the Address (Can Empty)
|
||||
v, r, s - components of TX signature
|
||||
*/
|
||||
|
||||
using PriceConverter for uint256;
|
||||
uint256 public constant MINIMUM_USD = 50 * 1e18;
|
||||
|
||||
mapping(address => uint256) public addressToAmountFunded;
|
||||
address[] public funders;
|
||||
mapping(address => uint256) public addressToAmountFunded;
|
||||
|
||||
// Could we make this constant? /* hint: no! We should make it immutable! */
|
||||
address public /* immutable */ i_owner;
|
||||
uint256 public constant MINIMUM_USD = 50 * 10 ** 18;
|
||||
|
||||
constructor() {
|
||||
// immutable only can declare 1 time at contructor
|
||||
address public immutable i_owner;
|
||||
|
||||
AggregatorV3Interface public priceFeed;
|
||||
|
||||
constructor(address priceFeedAddress) {
|
||||
i_owner = msg.sender;
|
||||
priceFeed = AggregatorV3Interface(priceFeedAddress);
|
||||
}
|
||||
|
||||
function fund() public payable {
|
||||
require(msg.value.getConversionRate() >= MINIMUM_USD, "You need to spend more ETH!");
|
||||
// require(PriceConverter.getConversionRate(msg.value) >= MINIMUM_USD, "You need to spend more ETH!");
|
||||
addressToAmountFunded[msg.sender] += msg.value;
|
||||
/*
|
||||
Want to be able to set a minimum fund amount in USD
|
||||
1. How do we send ETH to this contract
|
||||
*/
|
||||
//require (msg.value >= 1e18, "Didn't send enough"); // 1e18 = 1 * 10 * 18 = 1000000000000000000
|
||||
require(
|
||||
msg.value.getConversionRate(priceFeed) >= MINIMUM_USD,
|
||||
"Didn't send enough"
|
||||
);
|
||||
funders.push(msg.sender);
|
||||
addressToAmountFunded[msg.sender] = msg.value;
|
||||
}
|
||||
|
||||
function getVersion() public view returns (uint256){
|
||||
// ETH/USD price feed address of Sepolia Network.
|
||||
AggregatorV3Interface priceFeed = AggregatorV3Interface(0x694AA1769357215DE4FAC081bf1f309aDC325306);
|
||||
return priceFeed.version();
|
||||
}
|
||||
|
||||
modifier onlyOwner {
|
||||
// require(msg.sender == owner);
|
||||
if (msg.sender != i_owner) revert NotOwner();
|
||||
_;
|
||||
}
|
||||
|
||||
|
||||
// Owner of this contract only can withdraw
|
||||
function withdraw() public onlyOwner {
|
||||
for (uint256 funderIndex=0; funderIndex < funders.length; funderIndex++){
|
||||
// Can use modifier to replace
|
||||
// require(msg.sender == owner, "Sender is not owner");
|
||||
|
||||
/* starting index, eding index, step amount */
|
||||
for (
|
||||
uint256 funderIndex = 0;
|
||||
funderIndex < funders.length;
|
||||
funderIndex++
|
||||
) {
|
||||
address funder = funders[funderIndex];
|
||||
addressToAmountFunded[funder] = 0;
|
||||
}
|
||||
// reset the array
|
||||
funders = new address[](0);
|
||||
// // transfer
|
||||
// payable(msg.sender).transfer(address(this).balance);
|
||||
// // send
|
||||
// bool sendSuccess = payable(msg.sender).send(address(this).balance);
|
||||
// require(sendSuccess, "Send failed");
|
||||
// call
|
||||
(bool callSuccess, ) = payable(msg.sender).call{value: address(this).balance}("");
|
||||
|
||||
/*
|
||||
// transfer - over 2300 gas will cause exception
|
||||
payable(msg.sender).transfer(address(this).balance);
|
||||
// send - over 2300 gas will not cause exception, only will return true or false
|
||||
bool sendSuccess = payable(msg.sender).send(address(this).balance);
|
||||
require(sendSuccess, "Send failed");
|
||||
*/
|
||||
|
||||
// call - lower level
|
||||
(bool callSuccess, ) = payable(msg.sender).call{
|
||||
value: address(this).balance
|
||||
}("");
|
||||
require(callSuccess, "Call failed");
|
||||
}
|
||||
// Explainer from: https://solidity-by-example.org/fallback/
|
||||
// Ether is sent to contract
|
||||
// is msg.data empty?
|
||||
// / \
|
||||
// yes no
|
||||
// / \
|
||||
// receive()? fallback()
|
||||
// / \
|
||||
// yes no
|
||||
// / \
|
||||
//receive() fallback()
|
||||
|
||||
fallback() external payable {
|
||||
fund();
|
||||
modifier onlyOwner() {
|
||||
// require(msg.sender == i_owner, "Sender is not owner!");
|
||||
if (msg.sender != i_owner) {
|
||||
revert NotOwner();
|
||||
}
|
||||
|
||||
_; // doing the rest of the code
|
||||
}
|
||||
|
||||
// What happens if someone send this contract ETH without calling the fund fucntion
|
||||
/*
|
||||
receive - people send money / empty money into this contract
|
||||
fallback - cannot identify which function to run
|
||||
*/
|
||||
receive() external payable {
|
||||
fund();
|
||||
}
|
||||
|
||||
fallback() external payable {
|
||||
fund();
|
||||
}
|
||||
}
|
||||
|
||||
// Concepts we didn't cover yet (will cover in later sections)
|
||||
// 1. Enum
|
||||
// 2. Events
|
||||
// 3. Try / Catch
|
||||
// 4. Function Selector
|
||||
// 5. abi.encode / decode
|
||||
// 6. Hash with keccak256
|
||||
// 7. Yul / Assembly
|
@ -6,13 +6,14 @@ import "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.so
|
||||
// Why is this a library and not abstract?
|
||||
// Why not an interface?
|
||||
library PriceConverter {
|
||||
// Sepolia ETH / USD Address
|
||||
// https://docs.chain.link/data-feeds/price-feeds/addresses#Sepolia%20Testnet
|
||||
//0x694AA1769357215DE4FAC081bf1f309aDC325306
|
||||
|
||||
// We could make this public, but then we'd have to deploy it
|
||||
function getPrice() internal view returns (uint256) {
|
||||
// Sepolia ETH / USD Address
|
||||
// https://docs.chain.link/data-feeds/price-feeds/addresses#Sepolia%20Testnet
|
||||
AggregatorV3Interface priceFeed = AggregatorV3Interface(
|
||||
0x694AA1769357215DE4FAC081bf1f309aDC325306
|
||||
);
|
||||
function getPrice(
|
||||
AggregatorV3Interface priceFeed
|
||||
) internal view returns (uint256) {
|
||||
(, int256 answer, , , ) = priceFeed.latestRoundData();
|
||||
// ETH/USD rate in 18 digit
|
||||
return uint256(answer * 10000000000);
|
||||
@ -22,9 +23,10 @@ library PriceConverter {
|
||||
|
||||
// 1000000000
|
||||
function getConversionRate(
|
||||
uint256 ethAmount
|
||||
uint256 ethAmount,
|
||||
AggregatorV3Interface priceFeed
|
||||
) internal view returns (uint256) {
|
||||
uint256 ethPrice = getPrice();
|
||||
uint256 ethPrice = getPrice(priceFeed);
|
||||
uint256 ethAmountInUsd = (ethPrice * ethAmount) / 1000000000000000000;
|
||||
// or (Both will do the same thing)
|
||||
// uint256 ethAmountInUsd = (ethPrice * ethAmount) / 1e18; // 1 * 10 ** 18 == 1000000000000000000
|
||||
|
9
deploy/00-deploy-mocks.js
Normal file
9
deploy/00-deploy-mocks.js
Normal file
@ -0,0 +1,9 @@
|
||||
// For Localhost, Hardhat, Ganache Without Price Feed To Get Price Feed
|
||||
|
||||
const { ethers, run, network } = require("hardhat");
|
||||
|
||||
module.exports = async ({ getNamedAccounts, deployments }) => {
|
||||
const { deploy, log } = deployments;
|
||||
const { deployer } = await getNamedAccounts();
|
||||
const chainId = network.config.chainId;
|
||||
};
|
32
deploy/01-deploy-fund-me.js
Normal file
32
deploy/01-deploy-fund-me.js
Normal file
@ -0,0 +1,32 @@
|
||||
// import
|
||||
const { ethers, run, network } = require("hardhat");
|
||||
const { networkConfig } = require("../helper-hardhat-config");
|
||||
/* Above same as:
|
||||
const helperConfig = require("../helper-hardhat-config");
|
||||
const networkConfig = helperConfig.networkConfig;
|
||||
*/
|
||||
|
||||
// main function
|
||||
//function deployFunc() {
|
||||
// const {getNamedAccounts, deployments} = hre;
|
||||
// // Same as hre.getNamedAccounts & hre.deployments
|
||||
//}
|
||||
//module.exports.default = deployFunc;
|
||||
|
||||
module.exports = async ({ getNamedAccounts, deployments }) => {
|
||||
const { deploy, log } = deployments;
|
||||
const { deployer } = await getNamedAccounts();
|
||||
const chainId = network.config.chainId;
|
||||
|
||||
const ethUsdPriceFeedAddress = networkConfig[chainId]["ethUsdPriceFeed"];
|
||||
|
||||
// if contract doest't exist, we deploy a minimal version for our local testing
|
||||
|
||||
// When going for localhost / hardhat network we want to use a mock
|
||||
// Auto Change Chains To Get different Gas
|
||||
const fundMe = await deploy("FundMe", {
|
||||
from: deployer,
|
||||
args: [ethUsdPriceFeedAddress], // put price feed address
|
||||
log: true,
|
||||
});
|
||||
};
|
@ -8,6 +8,7 @@ require("./tasks/block-number");
|
||||
require("hardhat-gas-reporter");
|
||||
require("solidity-coverage");
|
||||
require("ethereum-waffle");
|
||||
require("hardhat-deploy");
|
||||
|
||||
const RPC_URL_SEPOLIA = process.env.SEPOLIA_RPC_URL || "https://eth-sepolia";
|
||||
const PRIVATE_KEY_SEPOLIA = process.env.SEPOLIA_PRIVATE_KEY || "0xkey";
|
||||
@ -63,6 +64,14 @@ module.exports = {
|
||||
noColors: true,
|
||||
},
|
||||
plugins: ["@nomiclabs/hardhat-waffle"],
|
||||
namedAccounts: {
|
||||
deployer: {
|
||||
default: 0,
|
||||
},
|
||||
user: {
|
||||
default: 1,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
|
||||
|
24
helper-hardhat-config.js
Normal file
24
helper-hardhat-config.js
Normal file
@ -0,0 +1,24 @@
|
||||
// Price Feed Contract Addresses: https://docs.chain.link/docs/ethereum-addresses
|
||||
const networkConfig = {
|
||||
11155111: {
|
||||
// Sepolia ETHUSD Address
|
||||
// https://docs.chain.link/data-feeds/price-feeds/addresses#Sepolia%20Testnet
|
||||
name: "Sepolia Testnet",
|
||||
ethUsdPriceFeed: "0x694AA1769357215DE4FAC081bf1f309aDC325306",
|
||||
rpcUrl: "https://eth-sepolia.g.alchemy.com/v2/mRFz7cxFuR6hAxYLr8oub4jbinOuocs_",
|
||||
},
|
||||
137: {
|
||||
name: "Polygon Mainnet",
|
||||
ethUsdPriceFeed: "0xF9680D99D6C9589e2a93a78A04A279e509205945",
|
||||
rpcUrl: "https://polygon-mainnet.infura.io",
|
||||
},
|
||||
80002: {
|
||||
name: "Polygon Amoy Testnet",
|
||||
ethUsdPriceFeed: "0xF0d50568e3A7e8259E16663972b11910F89BD8e7",
|
||||
rpcUrl: "https://rpc-amoy.polygon.technology",
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
networkConfig,
|
||||
};
|
@ -15,15 +15,16 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^5.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@nomiclabs/hardhat-ethers": "^2.2.3",
|
||||
"@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/mocha": ">=9.1.0",
|
||||
"chai": "^4.2.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"ethereum-waffle": "^4.0.10",
|
||||
"ethers": "^5.7.2",
|
||||
"ethers": "^5.7.0",
|
||||
"hardhat": "^2.22.7",
|
||||
"hardhat-deploy": "^0.12.4",
|
||||
"hardhat-gas-reporter": "^1.0.8",
|
||||
"prettier": "^3.3.3",
|
||||
"prettier-plugin-solidity": "^1.3.1",
|
||||
|
101
yarn.lock
101
yarn.lock
@ -658,7 +658,7 @@
|
||||
dependencies:
|
||||
"@ethersproject/logger" "^5.7.0"
|
||||
|
||||
"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0":
|
||||
"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0", "@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==
|
||||
@ -721,7 +721,7 @@
|
||||
elliptic "6.5.4"
|
||||
hash.js "1.1.7"
|
||||
|
||||
"@ethersproject/solidity@5.7.0":
|
||||
"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0":
|
||||
version "5.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8"
|
||||
integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==
|
||||
@ -766,7 +766,7 @@
|
||||
"@ethersproject/constants" "^5.7.0"
|
||||
"@ethersproject/logger" "^5.7.0"
|
||||
|
||||
"@ethersproject/wallet@5.7.0":
|
||||
"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0":
|
||||
version "5.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d"
|
||||
integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==
|
||||
@ -1190,10 +1190,10 @@
|
||||
"@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2"
|
||||
"@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2"
|
||||
|
||||
"@nomiclabs/hardhat-ethers@^2.2.3":
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0"
|
||||
integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==
|
||||
"@nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers":
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.4.2.tgz#10aa44ef806ec8cf3d67ad9692f3762ed965b5e7"
|
||||
integrity sha512-AskNH/XRYYYqPT94MvO5s1yMi+/QvoNjS4oU5VcVqfDU99kgpGETl+uIYHIrSXtH5sy7J6gyVjpRMf4x0tjLSQ==
|
||||
|
||||
"@openzeppelin/contracts-upgradeable@4.9.3":
|
||||
version "4.9.3"
|
||||
@ -1607,7 +1607,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
|
||||
integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
|
||||
|
||||
"@types/qs@^6.2.31":
|
||||
"@types/qs@^6.2.31", "@types/qs@^6.9.7":
|
||||
version "6.9.15"
|
||||
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce"
|
||||
integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==
|
||||
@ -1909,6 +1909,13 @@ aws4@^1.8.0:
|
||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.0.tgz#d9b802e9bb9c248d7be5f7f5ef178dc3684e9dcc"
|
||||
integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==
|
||||
|
||||
axios@^0.21.1:
|
||||
version "0.21.4"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
||||
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
|
||||
axios@^1.5.1:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.3.tgz#a1125f2faf702bc8e8f2104ec3a76fab40257d85"
|
||||
@ -2235,7 +2242,7 @@ check-error@^1.0.2, check-error@^1.0.3:
|
||||
dependencies:
|
||||
get-func-name "^2.0.2"
|
||||
|
||||
chokidar@^3.4.0, chokidar@^3.5.3:
|
||||
chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
|
||||
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
|
||||
@ -2650,6 +2657,11 @@ emoji-regex@^8.0.0:
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||
|
||||
encode-utf8@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda"
|
||||
integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
|
||||
|
||||
encoding-down@^6.3.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b"
|
||||
@ -2660,7 +2672,7 @@ encoding-down@^6.3.0:
|
||||
level-codec "^9.0.0"
|
||||
level-errors "^2.0.0"
|
||||
|
||||
enquirer@^2.3.0:
|
||||
enquirer@^2.3.0, enquirer@^2.3.6:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
|
||||
integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
|
||||
@ -2868,7 +2880,7 @@ ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4, ethereum
|
||||
ethereum-cryptography "^0.1.3"
|
||||
rlp "^2.2.4"
|
||||
|
||||
ethers@^5.7.2:
|
||||
ethers@^5.7.0, ethers@^5.7.2, ethers@~5.7.0:
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
|
||||
integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
|
||||
@ -3063,7 +3075,14 @@ flat@^5.0.2:
|
||||
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
|
||||
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
|
||||
|
||||
follow-redirects@^1.12.1, follow-redirects@^1.15.6:
|
||||
fmix@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c"
|
||||
integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==
|
||||
dependencies:
|
||||
imul "^1.0.0"
|
||||
|
||||
follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.6:
|
||||
version "1.15.6"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
|
||||
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
|
||||
@ -3406,6 +3425,36 @@ har-validator@~5.1.3:
|
||||
ajv "^6.12.3"
|
||||
har-schema "^2.0.0"
|
||||
|
||||
hardhat-deploy@^0.12.4:
|
||||
version "0.12.4"
|
||||
resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.12.4.tgz#5ebef37f1004f52a74987213b0465ad7c9433fb2"
|
||||
integrity sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ==
|
||||
dependencies:
|
||||
"@ethersproject/abi" "^5.7.0"
|
||||
"@ethersproject/abstract-signer" "^5.7.0"
|
||||
"@ethersproject/address" "^5.7.0"
|
||||
"@ethersproject/bignumber" "^5.7.0"
|
||||
"@ethersproject/bytes" "^5.7.0"
|
||||
"@ethersproject/constants" "^5.7.0"
|
||||
"@ethersproject/contracts" "^5.7.0"
|
||||
"@ethersproject/providers" "^5.7.2"
|
||||
"@ethersproject/solidity" "^5.7.0"
|
||||
"@ethersproject/transactions" "^5.7.0"
|
||||
"@ethersproject/wallet" "^5.7.0"
|
||||
"@types/qs" "^6.9.7"
|
||||
axios "^0.21.1"
|
||||
chalk "^4.1.2"
|
||||
chokidar "^3.5.2"
|
||||
debug "^4.3.2"
|
||||
enquirer "^2.3.6"
|
||||
ethers "^5.7.0"
|
||||
form-data "^4.0.0"
|
||||
fs-extra "^10.0.0"
|
||||
match-all "^1.2.6"
|
||||
murmur-128 "^0.2.1"
|
||||
qs "^6.9.4"
|
||||
zksync-ethers "^5.0.0"
|
||||
|
||||
hardhat-gas-reporter@^1.0.8:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz#ebe5bda5334b5def312747580cd923c2b09aef1b"
|
||||
@ -3652,6 +3701,11 @@ import-fresh@^3.3.0:
|
||||
parent-module "^1.0.0"
|
||||
resolve-from "^4.0.0"
|
||||
|
||||
imul@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9"
|
||||
integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==
|
||||
|
||||
indent-string@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
||||
@ -4160,6 +4214,11 @@ markdown-table@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
|
||||
integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
|
||||
|
||||
match-all@^1.2.6:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d"
|
||||
integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==
|
||||
|
||||
mcl-wasm@^0.7.1:
|
||||
version "0.7.9"
|
||||
resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f"
|
||||
@ -4345,6 +4404,15 @@ ms@^2.1.1, ms@^2.1.3:
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
murmur-128@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d"
|
||||
integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==
|
||||
dependencies:
|
||||
encode-utf8 "^1.0.2"
|
||||
fmix "^0.1.0"
|
||||
imul "^1.0.0"
|
||||
|
||||
napi-macros@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
|
||||
@ -4759,7 +4827,7 @@ punycode@^2.1.0, punycode@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
|
||||
|
||||
qs@^6.12.3, qs@^6.4.0:
|
||||
qs@^6.12.3, qs@^6.4.0, qs@^6.9.4:
|
||||
version "6.13.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
|
||||
integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
|
||||
@ -5933,3 +6001,10 @@ yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
zksync-ethers@^5.0.0:
|
||||
version "5.9.2"
|
||||
resolved "https://registry.yarnpkg.com/zksync-ethers/-/zksync-ethers-5.9.2.tgz#1c5f34cb25ac0b040fd1a6118f2ba1c2c3bda090"
|
||||
integrity sha512-Y2Mx6ovvxO6UdC2dePLguVzvNToOY8iLWeq5ne+jgGSJxAi/f4He/NF6FNsf6x1aWX0o8dy4Df8RcOQXAkj5qw==
|
||||
dependencies:
|
||||
ethers "~5.7.0"
|
||||
|
Loading…
Reference in New Issue
Block a user