mirror of
https://github.com/arnaucube/go-dvote.git
synced 2026-02-28 05:26:46 +01:00
Fix names and update README
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
#### Dvote Tree
|
||||
## dvote Tree
|
||||
|
||||
Implementation of dvote tree structure. Currently based on iden3 merkle tree.
|
||||
|
||||
Example of usage:
|
||||
|
||||
```
|
||||
T := tree.Tree {namespace: "vocdoni"}
|
||||
if T.init() != nil { fmt.Println("Cannot create tree database") }
|
||||
err := T.addClaim([]byte("Hello you!"))
|
||||
T := tree.Tree
|
||||
if T.Init() != nil { fmt.Println("Cannot create tree database") }
|
||||
err := T.AddClaim([]byte("Hello you!"))
|
||||
if err != nil {
|
||||
fmt.Println("Claim already exist")
|
||||
}
|
||||
mpHex, err := T.genProof([]byte("Hello you!"))
|
||||
mpHex, err := T.GenProof([]byte("Hello you!"))
|
||||
fmt.Println(mpHex)
|
||||
fmt.Println(T.checkProof([]byte("Hello you!"), mpHex))
|
||||
T.close()
|
||||
fmt.Println(T.CheckProof([]byte("Hello you!"), mpHex))
|
||||
T.Close()
|
||||
```
|
||||
|
||||
### To-Do
|
||||
#### To-Do
|
||||
|
||||
+ Add export/import methods
|
||||
|
||||
40
tree/tree.go
40
tree/tree.go
@@ -9,19 +9,19 @@ import (
|
||||
)
|
||||
|
||||
type Tree struct {
|
||||
namespace string
|
||||
storage string
|
||||
tree *merkletree.MerkleTree
|
||||
Namespace string
|
||||
Storage string
|
||||
Tree *merkletree.MerkleTree
|
||||
}
|
||||
|
||||
func (t *Tree) init() error {
|
||||
if len(t.storage) < 1 {
|
||||
func (t *Tree) Init() error {
|
||||
if len(t.Storage) < 1 {
|
||||
usr, err := user.Current()
|
||||
if err == nil {
|
||||
t.storage = usr.HomeDir + "/.dvote/Tree"
|
||||
} else { t.storage = "./dvoteTree" }
|
||||
t.Storage = usr.HomeDir + "/.dvote/Tree"
|
||||
} else { t.Storage = "./dvoteTree" }
|
||||
}
|
||||
mtdb, err := db.NewLevelDbStorage(t.storage, false)
|
||||
mtdb, err := db.NewLevelDbStorage(t.Storage, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -29,22 +29,22 @@ func (t *Tree) init() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
t.tree = mt
|
||||
t.Tree = mt
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *Tree) close() {
|
||||
defer t.tree.Storage().Close()
|
||||
func (t *Tree) Close() {
|
||||
defer t.Tree.Storage().Close()
|
||||
}
|
||||
|
||||
func (t *Tree) addClaim(data []byte) error {
|
||||
claim := mkcore.NewGenericClaim(t.namespace, "default", data, nil)
|
||||
return t.tree.Add(claim)
|
||||
func (t *Tree) AddClaim(data []byte) error {
|
||||
claim := mkcore.NewGenericClaim(t.Namespace, "default", data, nil)
|
||||
return t.Tree.Add(claim)
|
||||
}
|
||||
|
||||
func (t *Tree) genProof(data []byte) (string, error) {
|
||||
claim := mkcore.NewGenericClaim(t.namespace, "default", data, nil)
|
||||
mp, err := t.tree.GenerateProof(claim.Hi())
|
||||
func (t *Tree) GenProof(data []byte) (string, error) {
|
||||
claim := mkcore.NewGenericClaim(t.Namespace, "default", data, nil)
|
||||
mp, err := t.Tree.GenerateProof(claim.Hi())
|
||||
if err!=nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -52,11 +52,11 @@ func (t *Tree) genProof(data []byte) (string, error) {
|
||||
return mpHex, nil
|
||||
}
|
||||
|
||||
func (t *Tree) checkProof(data []byte, mpHex string) (bool, error) {
|
||||
func (t *Tree) CheckProof(data []byte, mpHex string) (bool, error) {
|
||||
mp, err := common3.HexToBytes(mpHex)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
claim := mkcore.NewGenericClaim(t.namespace, "default", data, nil)
|
||||
return merkletree.CheckProof(t.tree.Root(), mp, claim.Hi(), claim.Ht(), t.tree.NumLevels()), nil
|
||||
claim := mkcore.NewGenericClaim(t.Namespace, "default", data, nil)
|
||||
return merkletree.CheckProof(t.Tree.Root(), mp, claim.Hi(), claim.Ht(), t.Tree.NumLevels()), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user