This is the path reference that you are provided in a layout file

    <path>earnings/earnings/</path>

This will set your link to this path `http://www.website.com/earnings/earnings`. When Magento looks for this path, it cannot find a valid controller definition. That is why it throws `404 error`. So set your path to 

      <path>earnings/</path>
             or
       <path>earnings/index/</path>

will solve your issue. Now the link looks like `http://www.website.com/earnings/index/`. You have defined your block for this specific URL. Note you have used `earning_index_index` handle in your layout file. This handle will be processed by Magento only when `http://www.website.com/earnings/index/` URL get requested. 

Note: In order to work this URL perfectly, you should have an `IndexController.php` is defined for your module and this file should hold this method.

    public function indexAction() {
    
       $this->loadLayout();
       $this->renderLayout();
    }

If this method and this file are not defined for your module, Magento will throw `404 error` again.