Bitcoin has already served it's purpose anyway. It already is a currency that people exchange for goods and other government issued currencies. It doesn't really metter what anyone thinks. Bitcoin has already succeeded. The only question that you need to ask is; Is it something you should invest in?
My personal answer? No. But who cares what I think. It's simply non productive, and frankly non-scientific, to stand up and say "Here's why bitcion is going to fail..." because it doesn't matter, it has already served its purpose.
The CPU cycles are contributing to global warming, and are a means for controlling the rate at which new coins are mined. Unless you have a large dedication to hardware tuning and a decent amount of real money, attempting to mine is of no use unless of course your heater is broken and you need your computer to keep you warm.
Decorators can be misused, but they can also succinctly express an aspect of the program that is repeated many times in different contexts.
My own rule is that a decorator should do one thing, and that thing should be described by it's name.
Being able to look at a method that has the @has_permission decorator on it and know that it is getting checked for against a package wide permission model is more clear than having boilerplate to check permissions on every method that needs that check.
Any language construct can be misused. And people can hide stupid things in decorators and name them in misleading ways.
That doesn't mean that it's the fault of the syntax.
I find that the best way to fix this is to write your program as a library, then the part that you're supposed to run as a script which imports and runs it. No __underscore__magic__ required.