I'm trying to understand the capabilities of Mithril. I noticed that you can bootstrap a cardano node using it as shown here: https://mithril.network/doc/manual/getting-started/bootstrap-cardano-node. But what does it mean to "bootstrap" the node? Does it only speed up the verification process or does it make the size of the node smaller?
2 Answers
"Bootstrap" means starting the node from scratch, and Mithril enables a fast bootstrapping of the Cardano node.
However, the size of the node database does not change: under the hood, the database of the Cardano node is restored from a Mithril certified snapshot. This accelerates significantly the synchronization of the database that is otherwise achieved by downloading data sequentially from other nodes.
-
I see, I was hoping it would allow cardano node to run on low spec devices e.g. smartphones. But it's certainly not the case. Thanks!– TrevinCommented May 23, 2023 at 2:03
-
1Actually, the fast bootstrap of the Cardano node is the first implemented use case for Mithril. In the long run, other use cases will be implemented, one of which will probably enable trustless light wallets that could run on devices such as smartphones. Commented May 23, 2023 at 10:02
-
Gotcha, I look forward to these use cases. But would this trustless light wallet still rely on services such as Blockfrost to query data or would it be able to sync on its own? Is that too soon for me to ask?– TrevinCommented May 23, 2023 at 12:01
AFAIK, Mithril has a "currently" and an "in the future".
Currently:
- the entire cardano-node's database (~136GB) is signed by nodes running Mithril and downloaded by the new node
- thus, "fast bootstrapping" by downloading 136GB isn't all that light weight (do they also compress it?)
In the future:
- since Mithril as a signature-scheme-and-a-process-architecture can sign any data, not just "the entire database", then it can be used to sign data much smaller
- e.g, for a light wallet, it can receive a signed set of utxos, so you'll know both that (1) that's how much assets you have without needing to trust the node where you received the data from, and (2) construct a valid transaction to spend them.
Thus, looks promising!
(Somebody correct me if anything is wrong in the above.)