Design philosophy

A core set of values guides every aspect of TrueBlocks' technical design.

The three commandments

  1. Let users query this data without asking third-parties for permission.

    If you can access blockchain data only through a third party (e.g. a cloud provider), is the data really decentralized?

  2. Provide accurate access, to underived, consented-to, pure immutable data.

    If the blockchain data is not accurate, what good is the blockchain?

  3. Perform well on small machines

    If an application requires web-scale computer infrastructure, does it really support decentralization?

How TrueBlocks prioritizes design features

No application can do all things. All design decisions involve tradeoffs. TrueBlocks tries to make trade off consciously, so that we always make the application best serve our core values.

Core design values

These core design features are imperative. They underlie every single commit made to the TrueBlocks code base.

Core design valuesWhat they mean in practice matter
DecentralizationNo one should have to rely on anyone other than themselves for data. This including users who want data at the very end of the data journey
PerformanceTrueBlocks should be fast on small machines, and provide options for minimal disc footprints
Preserves integrity of dataBlockchain data is mutually-agreed upon and consented-to. Don’t tamper with it.

Very important values

These values are particularly important. They are naturally necessary to achieving the core design features.

Very important valuesWhat they mean in practice
TransparencyEvery person gets permissionless access to all the data they want; the application should be open source, letting users verify the data
ReproducibilityRequired for transparency and decentralization
StabilityIt should run forever with zero downtime

Important values

These values are important, and TrueBlocks tries to maximize these values wherever possible. However, if we have to make a tradeoff, these values come after the core values.

Important valuesWhat they mean in practice
RobustnessApp should work forever without needing to be futzed with
ApproachabilityEasy to understand how it works; easy to understand how to get started
SimplicityRelated to Approachability
ExtensibilityOthers should be able to add to it
MaintainabilityIdeally requires no maintenance
DebuggabilityAn internal concern

Not priorities

While TrueBlocks does not try to sacrifice these values, they are not core concerns.

Not a priorityWhy these values aren’t emphasized
CompatibilityDepends on programming languages that we use, so not a concern
ComposabilityNot really a concern
ExpressivenessNot a concern, readable commands more important
InteroperabilityOnly care about data being platform-independent. Production of the index needs to create something that is useful outside of TrueBlocks
MensurabilityFor internal use only, so less of a concern
PortabilityDepends on programming language, so not a concern
SafetyNot really. Consented to data is safe.
SecurityNot really. Out of our code’s purview other than basic software security. We hold no special data: our data is consented-to data. Reproducible, consented-to data is reproducibly safe. The app runs on local machines. If the local machine is compromised, TrueBlocks is not the user’s biggest security concern.
ThoroughnessThe application should do one thing perfectly – reconciliations

This ranking of values was inspired by a talk given by Bryan Cantrill in 2018.

Mantras for decentralized data

Because “commandments” sounds authoritarian and Abrahamic, we also keep an ongoing list of mantras.

If repeated endlessly, they will eventually sink in:

  • All the data, for all the people, all the time, but no data if the user doesn’t want it
  • Use only consented-to data…
    • If you can’t do that, use only data derived directly from consented-to data
    • If you can’t do that, find a way to force the data provider to prove their data
  • The paradigm has shifted, embrace it - the server is now called localhost
  • Break yourself out of the browser. There’s a big wide desktop out there
  • It’s easier to scale up than to scale down - decentralize first
  • Most users care only about themselves and maybe a few smart contracts
  • Some users, but not all, care about everything
  • Everyone needs to do accounting and pay taxes
  • The node can, and should be, be improved

Edit this page on GitHub