cadCAD Featured in Latest Token Engineering Reads Newsletter
Our friends at Token Engineering Academy have recently launched a newsletter and we had the opportunity to share a bit about the history, applications, and future of cadCAD with them. It was a great impetus to put together a primer on the original motivations behind cadCAD, its origins in Generalized Dynamical Systems, and the importance of rigorous engineering for self-organizing cryptographic systems. We were also able to take a deeper dive into why we’re building in #Julialang for cadcad.jl since we made the announcement.
Below, you can read the introductory and cadCAD portions of the newsletter and find a link to the original full-length publication. Make sure to sign up for future Token Engineering Reads through the link.
Welcome to Token Engineering Reads!
Last week, the cadCAD community announced some major updates for what we consider the most powerful Python library in the token engineering tool stack. We’ve discussed these plans with cadCAD Foundation’s Executive Director, Chris Catoya for this edition of Token Engineering Reads. Whether you aim to expand your team’s modeling capabilities or need a general introduction to cadCAD, this edition is for you!
Our last Token Engineering Reads edition featured risk management as a service with a piece from Gauntlet’s Founder Tarun Chitra. The day we published it, Gauntlet announced the termination of their collaboration with AaveDAO, their long-term DeFi client. Crazy timing! Irrespective of the special intricacies of this collaboration, the case poses some important questions for DAO risk management: Who should be responsible for managing risk in a DAO? How much are DAOs willing to invest in work that does not directly affect growth and revenues? How important is loyalty in such service agreements, and how can they be shaped accordingly?
Much food for thought - you can expect such hot topics to be on our EthCC Token Engineering Track Day’s agenda on July 10 in Brussels! Do you have topics to add? Speaker applications are still open. Learn more about our track’s 4 core themes and apply ASAP!
For today, let’s dive in - enjoy the read!
akrtws and the TE Academy Team
What is cadCAD?
cadCAD is a modeling framework and scientific computing library that enables safer, better designs of complex, adaptive systems. It also allows for faster system iteration cycles required for business decision-makers. In this modeling framework, systems are treated as state-based models and defined through a set of endogenous and exogenous state variables, updated through mechanisms and environmental processes, respectively. Behavioral models, which may be deterministic or stochastic, agent level or population level, provide the impetus for the system’s evolution, constrained only by the permissible action space of the mechanisms.
What was the motivation behind building cadCAD?
As first mentioned in Introducing Complex Adaptive Dynamics Computer-Aided Design, cadCAD came out of a real need at BlockScience, a complex systems engineering, R&D, and analytics firm founded by Dr. Michael Zargham. BlockScience has been responsible for design and validation work at Balancer, Filecoin, Cosmos, Hedera, Delphia, and Hydra among other clients.
The objective was to eliminate the significant manual reconfiguration each time additional computational experiments were added to system design projects. It was adding weeks of delay to projects’ critical path, and it was clear that professional engineering on blockchain-enabled networks would be practically infeasible without the right computer-aided design (CAD) tools. There was no software to support rigorous engineering of complex systems from the ground up — from the verification and validation of simple systems (subsystems/components) with explicit assumptions up to more complex, stochastic, dynamically networked systems with emergent properties in line with specified requirements. However, this full range of capabilities is necessary for proper system engineering, especially when adversarial behavior is commonplace.
To fill this critical gap in open-source data science, cadCAD was conceived as an open-source and business-oriented equivalent to MATLAB (a closed-source scientific programming environment) with specialized toolboxes for decision systems design, system identification, and automation under uncertainty. It was built with two major design requirements serving as pillars of the value proposition:
- Flexibility to describe complex systems at any level of abstraction
- Continuous simulation and improvement with real-world feedback enabled by a seamless integration with the data science computing stack
What are some key aspects of cadCAD?
cadCAD is capable of modeling systems with multiple levels of abstraction from micro-level Agent-Based Modeling (ABM) to macro-level System Dynamics (SD), supporting discrete, continuous, and hybrid dynamic behavior. With cadCAD, system engineers can simulate any system that can be formally characterized as a generalized differential equation or event-based differential game, starting with simple models and progressively building them into more complex ones. They can easily keep documentation of explicit assumptions in all dimensions and layers. Once deployed, cadCAD models can become part of the feedback loop of testing and decision making with data pipelines feeding data collected from the corresponding real-world systems back into the models and simulations. Leveraging extensive scientific computation and visualization libraries facilitates evolving these models as our understanding of them and the systems they represent deepens.
Template for modeling event-driven differential games with complex dynamics such as hidden states, private utilities, private signals and uncertainty
What makes engineering token-based systems important?
Token engineering as a term first came into use with Trent McConaghy’s March 2018 article Towards a Practice of Token Engineering. We can summarize it as a discipline focused on the design of self-organizing systems enabled through cryptographic peer-to-peer networks. Rather than design systems that attempt to optimize on behalf of humans, we should instead focus on those that enable and empower people to organize themselves with minimal cognitive overhead and try to provide maximum freedom while preventing dangerous conditions. Perhaps most importantly, economic networks built on the blockchain are independent of any single person or institution. As the network cannot be controlled by one entity, it cannot be fixed and repaired by a single entity. This means such a network must be designed and realized to be resilient to the shocks of human life.
Further, there are applications on these open networks that could come to manage or control anything from a supply chain to the identities of billions of people in an increasingly digital economy. Given their potential, these networks must be designed well and with consideration given to the consequences of design decisions. Uncertainty and adversarial behavior create unintended consequences that compound uncertainty over time.
How does cadCAD empower engineering token-based systems?
Well-engineered systems not only drive toward a desired outcome, but also keep a tight envelope of certainty around that outcome. However, systems involving people typically behave in ways designers do not expect, so extensive modeling and large numbers of repeated experiments are useful to observe and begin to understand emergent behaviors of these systems. Computer-aided design is required to identify and validate the respective mechanism and policy designs, and cadCAD, as a modeling framework and simulation engine, is designed to handle these experiments at any level of system abstraction. cadCAD lifts a heavy burden off engineers by enabling faster system iteration cycles by orders of magnitude. As a result of using cadCAD in the design cycle of a token-based system, an engineer’s expertise is leveraged to allow users to accomplish informed decision-making at any point in time without requiring them to delve into the complexity of the underlying system. The token engineer can handle the operational intelligence of the ecosystem to ensure that incentives align and maintain the network’s equilibrium and independence.
Engineering as a practice breaks out into two mutually reinforcing phases: design and development. Between them, they form a procedural loop that builds, tests, and revises some finished product with clear goals and requirements and continuous validation and verification of subsystems into a cohesive whole. When building purpose-built networks, we can design and implement from the very beginning mechanisms and institutions of exchange, such as barter, cash, and credit, that have evolved in natural networks over centuries of trial and error. Using cadCAD, engineers can preserve the inherent complexity while collapsing designs into something simple, insightful, and even obvious.
For a glimpse of cadCAD in action, check out this video.
Why is cadCAD software for Generalized Dynamical Systems, and why is this valuable for token engineers?
Generalized Dynamical Systems (GDS) is a mathematical framework pioneered in the 1950s-60s that has been extensively researched and can be used for representing time, actions, admissible action sets, and notation in complex systems. More recently, it has been leveraged for applications in the emerging area of enforceable contracts, such as in Token Engineering. cadCAD itself is a software implementation of GDS, representing dynamical systems within the GDS formalism with particular attention paid to mathematical constructions supporting applications in mechanism design.
The BlockScience blog post series on GDS describes how GDS, and by extension cadCAD, is the natural environment to consider the computational implementation of autonomous and semi-autonomous decision problems with one or more constraints. First, you can map a data structure to itself, where the space of such mappings is closed under composition. Second, by interpreting a system as a discretized version of a differential inclusion, you can characterize reachable subspaces of the state space and the locally controllable trajectories. Then, through a contingent derivative approach, the existence of state trajectories satisfying system constraints can be studied. As a result, these decision problems can be computed with the benefit of utilizing well-studied models of optimal control, system dynamics, agent-based modeling, and networks, all nesting into one framework.
The latest update revealed plans for cadCAD to support Julia. Why?
As cadCAD models have been built and used in practice, we’ve received a growing demand for running larger models in more big-data contexts. Currently, cadCAD is built in python, which is very popular and accessible, but has performance limitations. Building a cadCAD engine in a highly performant language is required to expand adoption in a number of professional workflows. Julia is attractive for several reasons as a language focused on parallel scientific computing with support for data science and machine learning:
It's Fast
- Designed for parallel computing at every level: instruction level parallelism, multi-threading, GPU computing, and distributed computing.
- Benchmarking tests place it as fast as Rust and Go
- The Celeste.jl project achieved 1.5 PetaFLOP/s on the Cori supercomputer at NERSC using 650,000 cores
Reproducible Environments
- Automatically compiles to efficient native code, including for GPUs, via LLVM
- Recreate the same Julia environment every time, across platforms, with pre-built binaries
Composability and Dynamic Typing
- Easily express many object-oriented and functional programming patterns using multiple dispatch
- With dynamic typing, Julia feels like a scripting language
General purpose
- Entire Applications and Microservices in Julia can also be embedded in other programs
- Julia provides asynchronous I/O, metaprogramming, debugging, logging, profiling, a package manager,
Our approach for the cadCAD ecosystem since kicking off the Reference Implementation (cadCAD RI) initiative has been focused on paths of mastery, as popularized by the influential online community designer Amy Jo Kim. Wherever the user’s entry point into cadCAD and GDS is, we want each level of competence with modeling or the tooling to be useful and rewarding. If we’re to mainstream the adoption of GDS as a framework of analysis, cadCAD models should be common objects shared with various team members at different technical skill levels. They don’t need to all be using the same tools, but they need access and tooling that meets their expectations and needs in order to reason together through the questions and inferences raised and supported by the model.
Julia natively complements this strategy because it offers many affordances to work with Python, including library support to run Python in Julia, calling Julia inside Python programs with PyJulia, and building Julia binaries to be integrated into larger projects. This makes it possible to run models built in the python-based cadCAD RI to run in cadCAD.jl. This creates a pathway for people to level up their modeling workflows as they level up in their model building. Additionally, this allows for different types of users to work together on the same initiatives. Combined with Julia’s general purpose ability to build embeddable applications and microservices, cadCAD models are positioned to become social objects shared between users of varying technical skills, potentially culminating in new communities.
Try out cadCAD
Explore the repo, follow the tutorials, join the Discord and forum to ask for help, and tweet your projects with us!
Follow our channels to stay tuned
🕸 Site | 🤖 Github | 🗺️ Intro to cadCAD | 🐦 Twitter | 👥 Discord | 🎥 YouTube | 📚 Forum
Brief Timeline of cadCAD Development
- Announcing cadCAD 1.0: Foundations for a New Era of Open Modeling Feb. 1, 2022
- cadCAD Gets a New Github Org June 22, 2020
- cadCAD Community Update March 23, 2020
- cadCAD: Filling a Critical Gap in Open-Source Data Science June 12, 2019
- Introducing Complex Adaptive Dynamics Computer-Aided Design (cadCAD) June, 3 2019