From 115574561dcd7692d2edc5f3e16b90536a5b55cd Mon Sep 17 00:00:00 2001 From: Omar Desogus Date: Tue, 1 Feb 2022 19:05:58 +0100 Subject: [PATCH] docs: udpate usage section --- .../incremental-merkle-tree.sol/README.md | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/packages/incremental-merkle-tree.sol/README.md b/packages/incremental-merkle-tree.sol/README.md index 3d245b1..405ba06 100644 --- a/packages/incremental-merkle-tree.sol/README.md +++ b/packages/incremental-merkle-tree.sol/README.md @@ -57,7 +57,51 @@ yarn add @zk-kit/incremental-merkle-tree.sol ## 📜 Usage +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; +import "@zk-kit/incremental-merkle-tree.sol/contracts/IncrementalBinaryTree.sol"; + +contract Test { + using IncrementalBinaryTree for IncrementalTreeData; + + event TreeCreated(bytes32 id, uint8 depth); + event LeafInserted(bytes32 indexed treeId, uint256 leaf, uint256 root); + event LeafRemoved(bytes32 indexed treeId, uint256 leaf, uint256 root); + + mapping(bytes32 => IncrementalTreeData) public trees; + + function createTree(bytes32 _id, uint8 _depth) external { + require(trees[_id].depth == 0, "Test: tree already exists"); + + trees[_id].init(_depth, 0); + + emit TreeCreated(_id, _depth); + } + + function insertLeaf(bytes32 _treeId, uint256 _leaf) external { + require(trees[_treeId].depth != 0, "Test: tree does not exist"); + + trees[_treeId].insert(_leaf); + + emit LeafInserted(_treeId, _leaf, trees[_treeId].root); + } + + function removeLeaf( + bytes32 _treeId, + uint256 _leaf, + uint256[] memory _proofSiblings, + uint8[] memory _proofPathIndices + ) external { + require(trees[_treeId].depth != 0, "Test: tree does not exist"); + + trees[_treeId].remove(_leaf, _proofSiblings, _proofPathIndices); + + emit LeafRemoved(_treeId, _leaf, trees[_treeId].root); + } +} +``` ## Contacts