A computer-implemented method for performing a map iteration by a network node of a blockchain network, the method comprising: receiving a request to obtain a plurality of keys included in a map by the network node, the map storing a plurality of key-value pairs that comprise the plurality of keys and a plurality of values corresponding to the plurality of keys, wherein a key can be used to locate the corresponding value; maintaining data representing a forest (318, 400) that stores the plurality of keys that are stored in the map, the forest comprising a plurality of trees, each tree (410, 430) comprising up to a respective plurality of storage nodes, each storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) storing a subset of the plurality of keys, each tree of the plurality of trees comprising a respective plurality of levels, wherein each level comprises one or more storage nodes, and wherein the plurality of levels correspond to a plurality of different hash functions, wherein the first level hash function is used to determine a tree of the forest, and wherein maintaining the data representing the forest (318, 400) comprises in response to a first key-value pair being stored in the map, receiving a request to add a first key of the first key-value pair to the forest (318, 400), determining a first storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest to insert the first key based on one or more hash values of the first key that are computed following the sequence of levels from the first level until a storage node with available storage space is found, and storing the first key to the storage node, in response to a second key-value pair being deleted from the map, receiving a request to delete a second key of the second key-value pair from the forest (318, 400), determining a second storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest that stores the second key based on one or more hash values of the second key that are computed using one or more hash functions of the plurality of different hash functions, and deleting the second key from the storage node, and in response to a third key-value pair being changed in the map, receiving a request to modify a third key of the third key-value pair in the forest (318, 400), determining a third storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest that stores the third key based on one or more hash values of the third key that are computed using one or more hash functions of the plurality of different hash functions, and modifying the third key in the storage node; traversing the forest to retrieve the plurality of keys stored in the forest; and returning the plurality of keys. receiving a request to obtain a plurality of keys included in a map by the network node, the map storing a plurality of key-value pairs that comprise the plurality of keys and a plurality of values corresponding to the plurality of keys, wherein a key can be used to locate the corresponding value; maintaining data representing a forest (318, 400) that stores the plurality of keys that are stored in the map, the forest comprising a plurality of trees, each tree (410, 430) comprising up to a respective plurality of storage nodes, each storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) storing a subset of the plurality of keys, each tree of the plurality of trees comprising a respective plurality of levels, wherein each level comprises one or more storage nodes, and wherein the plurality of levels correspond to a plurality of different hash functions, wherein the first level hash function is used to determine a tree of the forest, and wherein maintaining the data representing the forest (318, 400) comprises in response to a first key-value pair being stored in the map, receiving a request to add a first key of the first key-value pair to the forest (318, 400), determining a first storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest to insert the first key based on one or more hash values of the first key that are computed following the sequence of levels from the first level until a storage node with available storage space is found, and storing the first key to the storage node, in response to a second key-value pair being deleted from the map, receiving a request to delete a second key of the second key-value pair from the forest (318, 400), determining a second storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest that stores the second key based on one or more hash values of the second key that are computed using one or more hash functions of the plurality of different hash functions, and deleting the second key from the storage node, and in response to a third key-value pair being changed in the map, receiving a request to modify a third key of the third key-value pair in the forest (318, 400), determining a third storage node (412, 414, 416, 418, 420, 422, 424, 432, 434, 436, 438, 440, 442, 444) of the forest that stores the third key based on one or more hash values of the third key that are computed using one or more hash functions of the plurality of different hash functions, and modifying the third key in the storage node; traversing the forest to retrieve the plurality of keys stored in the forest; and returning the plurality of keys.