Error message
Warning: Undefined array key 0 in amp_entity_view_alter() (line 156 of modules/contrib/amp/amp.module).amp_entity_view_alter(Array, Object, Object) (Line: 545) Drupal\Core\Extension\ModuleHandler->alter('node_view', Array, Object, Object) (Line: 304) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 377) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 583) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 239) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 187) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) Drupal\Core\DrupalKernel->handle(Object) (Line: 18)
The Awesome Tron
The title may as well read Awasmsome Tron or aWasmsome Tron, but that would be clunky, and Tron's planned move to Wasm is awesome, so there it is.
Confused? Read on, it all aligns beautifully.
What is Wasm
First, some background on Wasm. Wasm is WebAssembly, a standard designed to be a compilation target for any language and a binary format with the goal of near-native performance for web apps.
That Wasm is a compilation target for any language means that the idea is for Wasm to become the common meeting ground for all developers. And Wasm moving there fast. There's a curated list of languages that compile to Wasm on GitHub, and the progress is nothing to sneeze at.
That Wasm is the format targeting near-native performance for web applications means that whenever you go on the Internet to run an application in your web browser, the chances are the majority of them are going to be in Wasm in the nearest future. This is especially true for online gaming because it requires the highest number of interaction that relies on your input and performance.
See, whenever you run an app in your browser, your browser downloads the app's code from the server and loads it into the browser's virtual machine, and this where you interact with the app. This also means that the virtual machine of your browser must be able to load and run Wasm.
Well, here's the thing — Wasm is supported and contributed to by Mozilla, Microsoft, Google, and Apple.
And as noted earlier, many developer languages already compile to Wasm, and the list is growing. There's great Wasm support in the developer community.
On blockchain
So, your browser loads Wasm code into its virtual machine and runs it. You know what else does that? A decentralized world computer like Ethereum.
Ethereum has the Ethereum Virtual Machine (EVM) that runs the code. To compile into the code that the EVM understands and executes, a developer needs to write the dapp in Solidity. There is also the language called LLL, which is less popular, and Vyper, but Solidity is the one majorly used.
This creates a bottleneck for developer adoption. A developer needs to get comfortable with Solidity before they can code and launch a dapp.
There's an initiative in Ethereum called eWasm that aims to replace the current EVM with an eWasm virtual machine. eWasm is basically Wasm and offers greater and improved performance over the current EVM architecture. Not only that, but adopting Wasm in Ethereum would open the floodgates to developer adoption because any developer would be able to write a dapp in any language they are comfortable with and compile to a dapp.
To quote Lane Rettig, one of eWasm core developers:
I have a personal goal of getting a million or millions of developers building Ethereum smart contract ... Wasm is an important step forward, it's a massive massive massive increase in optionality for developers, they can develop using different languages, different compilers, they can develop their own languages, their own DSLs [domain-specific languages], none of which are really possible in Ethereum 1.0 today.
Wasm Tron on blockchain
While Ethereum has an EVM, Tron has a TVM — a Tron Virtual Machine. And Tron is planning a move to Wasm as well.
To quote the Tron documentation:
Tron is planning to further optimize its TVM based on WebAssembly (WASM). WebAssembly, spearheaded by Apple, Google, Microsoft, and Mozilla, is designed to break bottlenecks of current Web browsers and can be generated through compiling C/C++ and other programming languages. Integrating WASM, TVM will be able to provide high performance and high throughput for blockchain to cope with complex scenarios.
Tron's move to Wasm is a smart foresight that can prove explosive in both developer and user adoption numbers. The former clearly evidenced by Tron investing in developer acceleration programs, the first of which concluded in January 2019.
One other extremely important thing that must be factored in this move and that will play out in Tron's favor is that Tron's blockchain is a variation of dPoS. This means that the move to a Wasm-based virtual machine will have far fewer obstacles (if any at all) than it would for projects like Ethereum.
So, to reiterate, consider this:
-
Wasm is supported by the software and the Internet's major players — Mozilla, Microsoft, Google, and Apple.
-
Millions of developers comfortable with their languages will be able to compile to Wasm-based virtual machines.
-
Wasm is on its path to becoming the common meeting ground for the majority of languages.
What else is there?
Wasm is becoming the technical backbone for how people develop and interact with applications in this vast digital space that will also be relying on blockchain. And this is awesome.
Is there anything else? People use the technology to rely on in their interaction and the social layer — and decentralized reputation, in particular — must play an important role in the adoption. Dapps running on blockchain and Wasm provide execution transparency, decentralization, and trust, but people create the dapps, and people use the dapps, this is where reputation matters the most. Network members must be able to use their decentralized transparent influence score based on their contributions to the network. This will enable the network health to run not only on dapp developers and dapp consumers but on every network member and make the network autonomous and self-governing.
Projects like U°OS network and U°Community are filling this gap along with Wasm adoption.
Time will tell, but right now Wasm does look primed for its own round of awesomeness in the blockchain space.