You have several choices.
You can certainly do what you're planning, and tie the license to a MAC address. It doesn't take super hacker skills to reassign a MAC address, or to assign the same MAC address to a virtual adapter, but it is inconvenient to do so. It also would break their networking if those adapters are all on the same LAN. This approach will cause your users to have a fit when they change computers and your software breaks.
There a security key products where you sell the customer a USB dongle. These cost a lot of money each, and can be defeated by a hacker, who can then sell copies. They are inconvenient to the licensed users.
There are security licensing products, where you sell the customer a key and licensed key server. As an end user, these are extremely difficult and expensive to set up and run; although less inconvenient than hardware dongles. Again, very expensive per license; again, not very secure against hackers.
You can build a critical part of your application as a "service", and sell "API keys" to your users. Only a valid key will let them use your service. You have other options, to price it on a per-use basis or on a subscription basis. But it won't work for your customers when they are offline to your service. And it costs you ongoing money to host a servce.
You can use a third party distribution service, like Steam, and leverage their services to install and run your app. But that's geared towards gamers, and hasn't been accepted by corporate environments. And it will also cost you a significant amount of money.
You can watermark your software, so that each copy is uniquely identified to each customer. If you discover shared copies in the wild, you can identify who the source of the leak was, and sue them. Distribution becomes a bit of a hassle, but is overall fairly inexpensive.
You can continually update your software, distributing new features and fixes only to paying customers. This provides incentive for customers to not use pirated copies, or to upgrade to a licensed version if they really want your new features.
And you can communicate with your purchasers. You can force the to "click to agree" with dense, hard-to-read EULAs threatening them with lawsuits if they allow copies. Or you can politely ask them to support you as an independent software developer and to not share copies.
The main thing is that you are likely worried about nothing at all. Most software fails commercially because it doesn't have enough users, not because pirates are copying it. You should focus first on distributing it without worrying about copying. If it's wildly successful, and copying is eating into your profits, then worry about pirates.
Regardless of the approach, you must accept the risk that your software might be pirated. That's been true since the dawn of "information as value", and nothing has changed since then.