Struct merkle_tree::MerkleTree
[−]
[src]
pub struct MerkleTree { pub layers: Vec<Vec<[u8; 32]>>, pub format: SerializationFormat, pub parallel: bool, pub builded: bool, }
Структура хранящая и отвечающая за Merkle Tree.
Fields
layers: Vec<Vec<[u8; 32]>>
Список слоёв дерева. Включая 0-ой слой с "листьями" (хэшами транзакций).
format: SerializationFormat
Формат сериализации транзакций перед тем как их хэшировать.
parallel: bool
Флаг отвечающий за параллелизацию при построении новых слоёв дерева.
builded: bool
Флаг указывающий на состояние дерева. Было оно построено или нет.
Methods
impl MerkleTree
[src]
pub fn build(&mut self) -> Result<[u8; 32], &str>
[src]
Производит построение дерева основываяся на 0-ом слое "листьев". Возвращает Merkle Root Hash.
Failures
В случае, если 0-ой слой "листьев" пуст возвращает Err - "No leaves in tree".
pub fn get_merkle_root(&self) -> Result<[u8; 32], &str>
[src]
Возвращает merkle root hash в качестве 32-байтного массива.
pub fn from<Serializable>(
leaves: &[Serializable],
format: SerializationFormat
) -> MerkleTree where
Serializable: Serialize + Clone,
[src]
leaves: &[Serializable],
format: SerializationFormat
) -> MerkleTree where
Serializable: Serialize + Clone,
Производит создание "основы" Merkle tree. Принимает входной слайс транзакций, сериализует их, хэширует и добавляет в нулевой уровень. Так же заранее выделяет слои для будущего заполнения дерева резервируя чуть больше места чем нужно.
pub fn push<Serializable>(&mut self, other: &Serializable) where
Serializable: Serialize,
[src]
Serializable: Serialize,
Добавляет хэш сериализованной транзакции в слой "листьев" (0-ой слой). Если дерево было до этого построено - вызывает функцию пересчёта узлов дерева.
pub fn print(&self)
[src]
Простая функция, которая была использована для debug. Печатает дерево послойно.
pub fn audit_proof(&mut self, hash: &[u8; 32]) -> Result<Vec<[u8; 32]>, &str>
[src]
Производит поиск хэша транзакции в слое "листьев" дерева и поднимаясь до корня рекурсивно проверяет корректность всех хэшей на пути для этого хэша транзакции. Возвращает так называемый proof path - т.е список хэшей, который подтверждает, что хэш транзакции был использован при построении дерева.
Failures
В случае, если дерево не было построено возвращается ошибка Tree not builded
.
В случае, если какой-либо из узлов на пути инвалидирован, т.е хэш актуальных в дереве значений
не совпадает с вычисленным либо наоборот - возвращается ошибка Tree invalidate
.
pub fn recursive_audit_path(
&self,
hash: [u8; 32],
hash_index: usize,
layer_index: usize,
path: Vec<[u8; 32]>
) -> Result<Vec<[u8; 32]>, &str>
[src]
&self,
hash: [u8; 32],
hash_index: usize,
layer_index: usize,
path: Vec<[u8; 32]>
) -> Result<Vec<[u8; 32]>, &str>
Поднимается до корня рекурсивно, проверяет корректность всех хэшей на пути для этого хэша транзакции. Возвращает так называемый proof path - т.е список хэшей, который подтверждает, что хэш транзакции был использован при построении дерева.
Failures
В случае, если какой-либо из узлов на пути инвалидирован, т.е хэш актуальных в дереве значений
не совпадает с вычисленным либо наоборот - возвращается ошибка Tree invalidate
.
Trait Implementations
impl Debug for MerkleTree
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more
impl Eq for MerkleTree
[src]
impl PartialEq for MerkleTree
[src]
fn eq(&self, __arg_0: &MerkleTree) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &MerkleTree) -> bool
[src]
This method tests for !=
.
impl Default for MerkleTree
[src]
fn default() -> MerkleTree
[src]
Returns the "default value" for a type. Read more