do something repeately
withdraw money
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {PriceConverter} from "./PriceConverter.sol";
contract FundMe {
using PriceConverter for uint256;
uint256 public minimumUsd = 5e18;
address[] public funders;
mapping(address funder => uint256 amountFunded) public addressToAmountFunded;
function fund() public payable {
require(msg.value.getConversionRate() >= minimumUsd, "didn't send enought ETH");
funders.push(msg.sender);
addressToAmountFunded[msg.sender] = addressToAmountFunded[msg.sender] + msg.value;
}
function withdraw() public {}
// for loop
// [1, 2, 3, 4] elements
// 0, 1, 2, 3 indexed
// for(/* starting index, ending index, step amount */)
for(uint256 funderIndex = 0; funderIndex < funders.length; funder Index++;){
address funder = funders[funderIndex];
addressToAmountFunded[funder] = 0;
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {PriceConverter} from "./PriceConverter.sol";
contract FundMe {
using PriceConverter for uint256;
uint256 public minimumUsd = 5e18;
address[] public funders;
mapping(address funder => uint256 amountFunded) public addressToAmountFunded;
function fund() public payable {
require(msg.value.getConversionRate() >= minimumUsd, "didn't send enought ETH");
funders.push(msg.sender);
addressToAmountFunded[msg.sender] = addressToAmountFunded[msg.sender] + msg.value;
}
function withdraw() public {}
// for loop
// [1, 2, 3, 4] elements
// 0, 1, 2, 3 indexed
// for(/* starting index, ending index, step amount */)
for(uint256 funderIndex = 0; funderIndex < funders.length; funder Index++;){
address funder = funders[funderIndex];
addressToAmountFunded[funder] = 0;
}
// reset the array
funders = new address[](0);
// withdaw the funds
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {PriceConverter} from "./PriceConverter.sol";
contract FundMe {
using PriceConverter for uint256;
uint256 public minimumUsd = 5e18;
address[] public funders;
mapping(address funder => uint256 amountFunded) public addressToAmountFunded;
function fund() public payable {
require(msg.value.getConversionRate() >= minimumUsd, "didn't send enought ETH");
funders.push(msg.sender);
addressToAmountFunded[msg.sender] = addressToAmountFunded[msg.sender] + msg.value;
}
function withdraw() public {}
// for loop
// [1, 2, 3, 4] elements
// 0, 1, 2, 3 indexed
// for(/* starting index, ending index, step amount */)
for(uint256 funderIndex = 0; funderIndex < funders.length; funder Index++;){
address funder = funders[funderIndex];
addressToAmountFunded[funder] = 0;
}
// reset the array
funders = new address[](0);
// actually withdaw the funds
// transfer the fund to whoever calling this withdraw function
// msg.sender = address
// payable(msg.sender) = payable address
payable msg.sender.transfer(address(this).balance);
// send
bool sendSuccress = payable(msg.sender).send(address(this).balance);
require(sendSuccress, "Send failed");
// call
(bool callSuccess, ) = payable(msg.sender).call{value: address(this).balance}("");
require(callSuccess, "Call failed");
}
}