jonreem
Joined 12 years ago
Joined 12 years ago
these are more like arbitrary atomic changes to on chain state that can affect many wallets and different contracts (and depend on the existing state) rather than just a transfer from my wallet to another address, which can be reordered freely
see protocols such as uniswap, compound, aave, synthetix, sushiswap, liquity, etc.
the whole point is it's not remotely easy to just "reconcile separately" when you have two mutually exclusive financial operations - these are not code changes made by mutually cooperating developers happy to change their code to resolve merge conflicts, they are actively fighting against each other
edit: this also point out how having a centralized entity decide the ordering of transactions is a horrible idea - sequencing is worth enormous amounts of money and you could not be trusted to resolve transactions in a way that is sometimes against your interests but in the interest of other participants in the network
EDIT: A blockchain is not just about keeping a history, it's also about maintaining liveness of the chain and preventing censorship even when many non cooperating parties are involved with conflicting incentives.
For a lot of transactions like this its actually miners who can detect and rewrite these transactions to take advantage of the arbitrage opportunities first, for this reason this cost is called "miner extractable value" or MEV.
However, note this fee doesn't accrue to the lender!
There's no functional difference between using redux-thunk and just calling a "global" `dispatch` in random callbacks; both are equally unmaintainable in the face of interacting effects.
EDIT: Having a bunch of complex async logic all modifying your store in overlapping ways without careful coordination is like having concurrent operations on your database without any transactions or locking.
Traits are not functional-language specific except in that they are often used in FP to solve problems similar to those one might use inheritance to solve in OOP.
Rust enthusiast, author of iron (github.com/iron/iron) and co-author of hyper (github.com/hyperium/hyper).
I've programmed professionally in rust, python, javascript, go, and ruby; dabbled in haskell, C++, nim and clojure.
Currently engineering at gauntlet.network
[ my public key: https://keybase.io/jonreem; my proof: https://keybase.io/jonreem/sigs/DKEUlaqxlTdJSroYLZLU2OxEGdofDvfDpIF-RzwBcB8 ]