Tech Stacks and Pragmatic Engineering:
deep dive into blockchain engineering practices
Frontend
view, controller: React, Vue.js
model: Redux, MobX
API: REST, GraphQL
Backend
framework - Express, Django, Rails
database - ORM
users/auth/permissions
Frontend
MVC, API to backend
Backend
Framework, database, users/auth
Blockchain
Cryptographic identity
Smart contracts
API's
P2P storage
Frontend
MVC, API to backend
Backend
Framework, database, users/auth
Blockchain
Cryptographic identity
Smart contracts
API's
P2P storage
No.
[Pancake] Stack | Tiramisu |
---|---|
Clear coupling between layers | Delicately assembled pieces |
Clear interaction boundaries | Cream goes wherever |
Served on a plate | Served/contained in many shapes/sizes |
Today you will understand some implications of engineering the blockchain tiramisu.
The space is nascent.
Blockchain engineering requires learning.
You need to be agile with developing products...
Implication:
Integration with databases - nothing supports uint256.
Implication: no sorting functions available without extra work
Hex addresses:
0xabc vs. 0xABC
Both the same data, but different format = normalisation woes.
Different pieces of infrastructure:
Ganache blockchain
Geth blockchain
Metamask provider
Different pieces of infrastructure become out of sync
Client library and usage styles:
Data coding:
Structs are only supported in a new version of ABI coder - it currently returns tuples
Cannot return structs from external methods
Data coding:
Very very very basic composability
Use solc-compiler - only recompile when changed
Use abi-gen - typed contract bindings
Study existing project patterns, don't reinvent the wheel
Unit test
Integration test
Use the Remix IDE for debugging