The contract for a fundraising platform, and in particular, must contain:
- A variable representing the total balance collected
- An "address" type variable representing the address of the fundraising manager, instantiated when the contract is created
- A variable representing the goal set by the collection creator, instantiated when the contract is created
- A variable that contains the total number of donors
- A variable that determines whether the fundraising is completed or not, depending on whether the objective has been achieved
- A function that allows you to donate Ether to the contract, updating the balance and the number of donors
- A function that allows only the fundraising manager to withdraw the Ether collected in the contract
- A function that closes the fundraising
- A function that checks whether the goal set by the creator of the collection has been reached or exceeded.