반응형
- 머클트리
- 일련의 ‘데이터 무결성’을 효과적으로 검증(증명)하는 데 사용되는 구조
- 머클 트리의 구조의 핵심은 ‘해시 함수’
- 데이터를 여러 조각으로 나누며 생성되며, 머클루트를 형성하기 위해 반복적으로 해시화 한다
- 머클트리는 각각의 데이터의 조각이 잘못 됐을 경우 이를 효율적으로 검증(수정)이 가능하다
- 하위 뿌리 두개씩 쌍으로 묶어서 , 하나의 루트를 만드는 트리이다.
const SHA256 = require("crypto-js/sha256");
const merkle = require("merkle");
const createMerkle = (_data) => {
if (!Array.isArray(_data)) return "너 배열 아니다..";
let merkleArr = _data.map((item) => SHA256(item).toString().toUpperCase());
while (merkleArr.length > 1) {
const tempArr = [];
for (let i = 0; i < merkleArr.length; i += 2) {
if (i + 1 === merkleArr.length) {
tempArr.push(merkleArr[i]);
} else {
tempArr.push(
SHA256(merkleArr[i] + merkleArr[i + 1])
.toString()
.toUpperCase()
);
}
}
merkleArr = tempArr;
}
return merkleArr[0];
};
const libMerkle = (_data) => {
const merkleRoot = merkle("sha256").sync(_data).root();
return merkleRoot;
};
exports.createMerkle = createMerkle;
exports.libMerkle = libMerkle;
const data = [
"asdasdfosioduhgsd",
"adsopfihgsja;sdklbfhdiogpf[aldsgkl",
"asdofgjhiauojslkbdhsjopaisfdghsfaioljdghkp[a'sdgbhfkretwflks,.",
"asdffhsuirhjwkeasfdlgkhsdlgj"
];
'BlockChain' 카테고리의 다른 글
(BlockChain) Transaction (0) | 2023.02.01 |
---|---|
(BlockChain) Block Header (0) | 2023.01.31 |
(BlockChain) Merkle(머클) (0) | 2023.01.08 |
(BlockChain) Hash (0) | 2023.01.08 |
(BlockChain) 블록의 구성 (0) | 2023.01.08 |