hxfjsw/merkletreephp

v0.0.5 2023-02-06 05:11 UTC

This package is auto-updated.

Last update: 2024-09-06 13:20:26 UTC


README


merkletree.js logo


MerkleTree.php

安装

composer require hxfjsw/merkletreephp

入门指南

构建树,生成证明

<?php
use MerkleTreePhp\Buffer;
use MerkleTreePhp\MerkleTree;
use MerkleTreePhp\Options;
use Web3\Utils;

require __DIR__ . '/vendor/autoload.php';

$whitelistAddress = [
    '0x6dC0c0be4c8B2dFE750156dc7d59FaABFb5B923D',
    '0xa8d17cc9caf29af964d19267ddeb4dff122697b0'
];

$leafNodes = array_map(fn($address) => Utils::sha3($address), $whitelistAddress);

$options = new Options();
$options->sortPairs = true;

$hashFn = fn(Buffer $bf) => Buffer::fromHex(Utils::sha3('0x' . $bf->toHex()));

$merkleTree = new MerkleTree($leafNodes, $hashFn, $options);

$root = $merkleTree->getHexRoot();
echo "root:" . $root . PHP_EOL;

$leaf = $whitelistAddress[0];
echo "leaf:" . $leaf . PHP_EOL;

$proof = $merkleTree->getHexProof(Utils::sha3($leaf));
echo "proof:" . json_encode($proof) . PHP_EOL;

输出

root:0xdb44a1f32851683f64d15a563ecd3686b67de2075821b6196dbaf7d25604592f
leaf:0x6dC0c0be4c8B2dFE750156dc7d59FaABFb5B923D
proof:["0x7fa4f9a213fc25511745e0fe7627ab0d7145664238bd854fb781559c2ddbf9c4"]

图表

▾ 梅克尔树的可视化

Merkle Tree

▾ 梅克尔树证明的可视化

Merkle Tree Proof

▾ 无效梅克尔树证明的可视化

Merkle Tree Proof

▾ 比特币梅克尔树的可视化

Merkle Tree Proof