Blockchain-Flavored WASI
medium.com
medium.com
Any time you see the word "blockchain" replace it with "Slow Database" in your head and see if it still makes sense.
[0] https://thedailywtf.com/articles/The_Stored__0x26__0x23_220_...
What's been happening is blocktimes wildly fluctuate, anywhere from 20 seconds - 90 minutes + even though the software attempts to calibrate for 10 minutes.
The message on the Alibaba site said:
"Attention: Tracking information is supported by the Alibaba Global Trade Blockchain. It may be delayed for 1-2 days."
Especially when this is a proposal not a real product, I think it’s very appropriate to tell Oasis Labs this is a dumb idea. At least from a technical perspective, maybe not a scam artist one.
Love how the author plugs his blockchain in that sentence as if it is in the same league as Bitcoin and Ethereum.
It is exquisite for ledger/proof-of-work systems, but not much else.
Sounds like they're randomly taking guesses at what fits well with what, and the building upon.
The ethereum crowd is dead set on making the "Web 3.0" thing take off, and getting smart contracts to evolve into full-fledged distributed applications (dapps in the lingo). In that context, the ewasm project is a pretty damn serious attempt at leveraging the wasm specification as a better VM for dapps than what the current EVM provides.
> the runtime translates WASI args_get and args_sizes_get
> for the zeroth arg to the blockchain address() function.
There is nothing intuitive about that for me.
In most languages, exposing the blockchain interface as a module feels like it would be a significantly cleaner implementation. If I want to compile against different targets I'd prefer to wrap that module as a library behind my own interface. I can then swap out the implementation at compile time.
It looks a lot like how a command-line program has the program name as the zeroth argument. The address just happens to be the name of the program in a blockchain context.
> exposing the blockchain interface as a module feels like it would be a significantly cleaner implementation
I'm not so sure. I think that the goal here is to allow developers to program "DApps" using their normal toolchain and abstract over the semantics of the blockchain platform. IMHO even the ideas of "block" and "chain" are implementation details in the same way as the journal of a traditional database is an implementation detail. Exposing these details as a library means that the program is tied to not only the blockchain, but a particular blockchain runtime.
> wrap that module as a library behind my own interface
That's always a good idea, but not incompatible with having a lower-level interface (in this case WASI and Rust/C++/AsmScript `std`).
The internals of a database are one thing, but the semantics of the language builtins seem like another. It almost feels akin to someone suggesting we change the underlying implementation of "println" (or whatever language builtin outputs to stdout) to automatically write to a new row in a database. I mean, I could adjust to such a weird idea but my initial impression would be we are forcing an existing abstraction onto a problem rather than choosing a truly suitable abstraction.
> Exposing these details as a library means that the program is tied to not only the blockchain, but a particular blockchain runtime.
Not necessarily, I'm considering something more like Go's cloud API: https://github.com/google/go-cloud You could easily have a "blockchain" API with any number of runtime backends.
I understand what the proposer was suggesting: a single semantic meaning for "print" across all programming languages that will map onto blockchain. I just don't agree that it is a good idea.
Though the article author omits it, EOS mainnet runs on LLVM and WASM contracts and executes about 1000tx/s today.
A more powerful financial VM is needed e.g. for on-chain order books.
More about use cases vs. databases can be found in my article
https://tokenmarket.net/news/opinion/capital-markets-upcomin...
Edit: yes I mean Solidity. I mean, it's cool that it works, but look at it, it's insane. They could have picked just about any language, including assembler, Lisp, Lua, Javascript, Visual Basic, LLVM bytecode, whatever and would have been better off. But over time there will evolve compilers which can from another input language provably (-ish in most cases) produce safe output.
You are right, the article doesn't address why ethereum might not solve any real problems, if you feel that way.
EOS contracts are 250kB because they suck in C++ stdlib, templates or what not.
There are benefits of having compact bytecode performance wise: cache pressure, price of on-chain storage and so on.