Skip to content

Commit b1a4d3b

Browse files
committed
Address review comments - onconflict donothing for inserts
Signed-off-by: Jim Zhang <[email protected]>
1 parent 690278b commit b1a4d3b

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

go-sdk/internal/sparse-merkle-tree/smt/merkletree.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,6 @@ func (mt *sparseMerkleTree) addNode(batch core.Transaction, n core.Node) (core.N
277277
return n.Ref(), nil
278278
}
279279
k := n.Ref()
280-
// Check that the node key doesn't already exist
281-
if _, err := batch.GetNode(k); err == nil {
282-
return nil, ErrNodeIndexAlreadyExists
283-
}
284280
err := batch.InsertNode(n)
285281
return k, err
286282
}

go-sdk/internal/sparse-merkle-tree/storage/sql.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/hyperledger-labs/zeto/go-sdk/internal/sparse-merkle-tree/utils"
2222
"github.com/hyperledger-labs/zeto/go-sdk/pkg/sparse-merkle-tree/core"
2323
"gorm.io/gorm"
24+
"gorm.io/gorm/clause"
2425
)
2526

2627
type sqlStorage struct {
@@ -164,6 +165,9 @@ func insertNode(batchOrDb *gorm.DB, nodesTableName string, n core.Node) error {
164165
dbNode.Index = &idx
165166
}
166167

167-
err := batchOrDb.Table(nodesTableName).Create(dbNode).Error
168+
// the merkle tree nodes, whether leaf nodes or branch nodes, are constructed
169+
// in such a way that the reference key is the hash of the node's content, so
170+
// there's no need to do anything if a node already exists in the DB
171+
err := batchOrDb.Table(nodesTableName).Clauses(clause.OnConflict{DoNothing: true}).Create(dbNode).Error
168172
return err
169173
}

0 commit comments

Comments
 (0)