The basic theory of bitcoin as I understand is like this: Miners are incentivized by fees + block reward to mine and thus establish the critical backbone of the network. Each miner must be a node, therefore there will be at least as many nodes as miners.
Now in a perfectly decentralized system, everyone would be a node and a miner,and there would be no issue. However in reality, mining is a specialized industry and it gets more specialized as the day goes by. And nodes have no incentive, so the network is really on the mercy of the good will of the people who voluntarly run a full node non-profit. This is definitely a problem.
Mining will become centralized that is inevitable, just as agriculture in the past 5000 years was practiced by 80% of the population, now it's only done by 1-2%, the same will happen with bitcoin mining. However bitcoin mining centralization is another topic, and the node count is even a bigger problem than that.
So the miners will be less and less even with the incentives. But what about the nodes? They have 0 incentive, so the problem here is even greater , and I fear that in the next years the node could will drastically shrink making the network very insecure.
-Merchants will hardly be nodes, they will just use a paid API given by a specialized hosting node service, that will be just like any major hosting provider.
-Individual users, wont even bother to run a full node, because the hardware requirement will be big, and they will just use lightweight or web wallets
-Miners will be nodes, but the question is how long until they develop a tech where they will use a centralized node hosting service and they will only supply the mining power to it.
So the conclusion is that nodes are a dying species, there is absolutely no incentive for people to be nodes, and it will slowly shrink and make bitcoin network very unsafe.
Obviously messing around with the protocol is not a good idea, so we cant change the protocol to include the nodes in the reward system (as it should have been done 95-5% split with miners and nodes). However we can do it offchain, with sidechains, smart-contracts or other technology. The following ideas came into my mind ,and some of them might be implemented, or even all of them, if they are suitable. All implementations would be optional, so if a node doesn't want to participate, he can opt-out.
1) Donation pool for nodes
A donation pool for nodes can be implemented, and each node can participate in it, voluntarly. Whereas people can donate into a pool, and the pool automatically forwards every donation to each node's bitcoin address.
There would have to be a server or some kind of offchain solution to store the information, or some kind of smart contract system that executes the procedure automatically and transparently.
So each node would receive a share of every donation, when somebody donates
You can get inspiration from the approach of the Electrum wallet , whereas each electrum server has a donation address and people can donate there, the same can be done with bitcoin nodes, but automatically.
2) For profit API system of nodes
A node could delegate his access to the network to clients, as in server->client relation. Each node is a server so clients who dont want to run a full node, but do want access to the bitcoin network, could do it in an API system that they would pay for.
So for example if Company A doesn't want to setup and maintain a bitcoin node, but wants to broadcast transactions securely direct to the network. They will pay a subscription fee to use the bitcoin nodes via an API system.
So the API system could connect the access to the bitcoin node directly with a client, they would pay for it, and the nodes would then provide access to their service.
However the catch is that the API access would be shared between all nodes, so the subscriber would not always connect 1 node, but to the node(s) closest to him or randomly, and the subscription fee would be equally distributed between all nodes proportional to their uptime %. This would ensure that all nodes get a piece of the pie, and would incentivize many people to just run a full node to earn some bitcoins.
And not just broadcasting, but getting statistics from the network and others. Imagine it just like the blockchain.info API system, but it would be for-profit and every node could do that.
This is also need to be done via some sort of smart contract or offchain solution, but i think it's doable.
Most nodes already limit the number of TX they allow, do prevent DDOS, so why not make broadcasting for profit and eliminate DDOS forever (because DDOS only happens when the access is free)
3) Altcoin financing bitcoin nodes
A POW inflationary altcoin can be created (BTCNODECOIN?), that will finance the nodes directly. It would inflate forever like dogecoin, and 50% of the mined coins would go directly as a donation to bitcoin nodes, to finance them. The other 50% would go to the altcoin miners just as usual. So the altcoin miners and nodes would share the reward, but the miners would do the work.
So investors that would invest in this would directly support all bitcoin nodes, and this way people could support nodes.
This is almost equivalent to 1) , however the altcoin approach instead of a donation pool is more self-sustainable. And the speculators + investors + donors is a better approach than just donors alone.
4) kushti's proposal
So these are my ideas to restore the nodes. All implementations would be optional, so if a node doesn't want to participate or risk their network to vulnerabilities, he can opt out. But new nodes could come into existance as they become incentivized.
Also I leave the technical part to developers and programmers to figure out, I just put out the idea , and the details can be discussed.