Open moul opened 1 year ago
Cc @ajnavarro
@moul I think you might be referring to https://dag.ipfs.tech/ , right?
I love CLIs too, and the best Merkle tree visualizer I know is the git log
command:
Also, Merkle trees can be represented in a lot of different ways, ones are better for specific use cases. What do we want to show on that Merkle tree representation?
Not sure, but maybe visualizing the state evolution at the end of execution or through an indexer could greatly aid in contract debugging and discovering new usages.
cc @ilgooz do you have something similar in mind for Gno Studio?
Maybe a crazy idea, but we can represent the realm states as a table and make queries filling a lot of different use cases:
These are some of the possible tables that we can have:
Field Name | Type | Value Example |
---|---|---|
package | string | gno.land/r/my/package |
height | number | 23 |
name | string | Render |
params | json | {"name":"Render", "type":"string"} |
results | json | {"name": "_", "type": "string"} |
Field Name | Type | Value Example |
---|---|---|
package | string | gno.land/r/my/package |
height | number | 23 |
var_name | string | gBoards |
var_type | string | avl.Tree |
var_id | string | 7f83b1657ff1fc53b92dc18148a1daddd200126d9069:21 |
value | blob | [Content of the variable if any] |
refs_names | json | ["var.name"] |
refs_ids | json | ["7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1:43"] |
SELECT
package,
value
FROM
states
WHERE
package='this.is/r/my/realm' and
height=last_height() and
var_name='avl.Tree';
SELECT
package,
value
FROM
states
WHERE
package='this.is/r/my/realm' and
var_name='avl.Tree';
SELECT
value as 'previous',
(
SELECT
value
FROM
states
WHERE
package='this.is/r/my/realm' and
height=last_height() and
var_name='avl.Tree'
) as 'actual'
FROM
states
WHERE
package='this.is/r/my/realm' and
height=last_height()-1 and
var_name='avl.Tree';
SELECT
name
FROM
functions
WHERE
package='this.is/r/my/realm' and
height=last_height();
SELECT
package
FROM
functions
WHERE
name='Render' and
JSON_LENGTH(params) == 1 and
JSON_LENGTH(results) == 1 and
height=last_height();
I remember such amazing tools developed in the IPFS ecosystem to visualize merkle trees and CIDs in general. It was both useful for educational purpose but also for debugging.
Feel free to share existing projects that we could potentially adapt for our case.
Personally, I’d love something working in CLIs.