The bootnodes on the commandline are no longer needed. That repo was created when ropsten was attacked a few years ago. New client version should have the correct bootnodes.
Around 10 Mar 2021 Ropsten was forked to Berlink, see announcement on Ethereum blog. In order to synchronize to the correct branch use geth v1.10.1 at least.
The solution was to edit json artifacts to add a new section with ropsten network id (= 3) in "networks"
I have tried your exact same code but on Rinkeby and it worked just fine.
For Ropsten, it is a little bit different since Block gas limit is not fixed and varies a lot.
Similar issues stating this issue:
Gas estimation errored with the following message error upon contract deployment
Gas estimation failed” on Ropsten using MetaMask!