Working Milestones — Rutile Weekly #7

Franklin Waller
Rutile
Published in
2 min readAug 12, 2019

We are back with our Rutile stories! So let’s dive in

⛓ Directed Acyclic Graph

We currently have a working example with the milestones and order of transactions in the DAG. Nodes will only execute transactions once a milestone references it. This allows nodes not to do unnecessary executions. Clients can choose to do execution regardless of a node executing it or not. This allows for a prediction of state in clients allowing websites to respond fast to a user.

Once a milestone reference a transaction, all transactions that are directly or indirectly referenced by the milestone gets a referenceMilestoneIndex stamp. This allows a node to identify which transaction needs to get executed first. Then nodes will sort the transactions based on the position they were coming in and execute them. You can see the working stamping in the image below:

Transactions that are not referenced by the milestone are not considered confirmed and should be treated as such (The grey ones).

Once a milestone is executed the node can safely adjust its view of the DAG and either prune transactions (in case of a normal node) or adjust the milestone pointer to the latest transaction and restart the process from there.

Currently, milestones are picked by the cumulative weight a transaction has. It’s done by each node on its own and will be communicated around (Proof of Stake will determine which node to trust and which we should not). You can, however, imagine that this can get heavy on the bandwidth. We are experimenting with a few options that make it less heavy on bandwidth while still keeping an order.

That’s it for now, hope you enjoyed this week. Till the next one!

--

--

Franklin Waller
Rutile
Editor for

Founder of Rutile, a fee-less decentralized application platform https://rutile.io/