Review of BEP20 Token & ICO Contract on BSC

Hello Everyone,

I have recently picked up solidity and have written a token and ico contract.
Most of them were using OpenZeppelin Contracts.

ICO Contract requirements:

  1. Timed Crowdsale, will end after a certain period of time
  2. Individually Capped, each person will have a max limit of token purchase
  3. Whitelisted Crowdsale, only whitelisted addresses are able to make the purchase
  4. Referral System, Contract will contain a referral system so that it is able to reward 10% of purchase to the person who referred them
  5. Token Lockup, 90% of tokens purchased will be locked, using a cliff to allow users to withdraw. 10% will be allowed to be withdrawn first.

Flatten Contract
Gist Link : https://gist.github.com/Ecchirin/a9fb98753772314b149c95bad6c3c6f7
Contract is on line 1993.

Moving Forward, I have some questions.

  1. Is it possible to use only BUSD for purchasing the tokens instead of BNB?
  2. If I wish to engage a professional audit for the contract and token, will OpenZeppelin be able to do it or is there other methods?
  3. After linking the Frontend to the Contract's ABI. Is there any other things to watch out for?
  4. What does publishing on IPFS do?
  5. How can I verify the Smart contract on the chain?

Thank you very much in advance everyone.