Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- npm
- 우분투
- 머클트리
- wget
- node.js 교과서 따라하기
- wsl
- Sequelize
- 설치
- 깃허브
- 솔리디티
- 블록체인
- 리눅스
- 전역설치
- immer
- 환경변수
- Docker
- 라우터
- MariaDB
- centos
- 리액트
- 일반유저
- 리액트를 다루는 기술
- 이더리움
- 벨로포터
- 머클루트
- 노드
- 변수
- 시퀄라이즈
- 쉘스크립트
- 자바스크립트
Archives
- Today
- Total
코드코코
[블록체인] 머클트리(merkle tree), 머클루트(merkrl root) 실습 본문
Merkle tree
1. 모듈설치
$ npm i merkletreejs crypto-js
root@DESKTOP-RJ31OF5:/home/ubuntu/workspace/blockchain# npm i merkletreejs crypto-js
added 57 packages, removed 110 packages, and audited 60 packages in 15s
1 package is looking for funding
run `npm fund` for details
found 0 vulnerabilities
2. test_merkleTree.js 작성
1. a 를 해쉬값으로 표현
// test_merkleTree.js
const SHA256 = require('crypto-js/sha256')
console.log(SHA256('a').toString())
~ ~
2 .해쉬값을 배열로 나타내기
// test_merkleTree.js
const SHA256 = require('crypto-js/sha256')
const testSet = ['a', 'b', 'c', 'd', 'e']
const testArray = testSet.map(v => SHA256(v).toString())
console.log(testArray)
3. merkleTree 생성
// test_merkleTree.js
const { MerkleTree } = require('merkletreejs')
const SHA256 = require('crypto-js/sha256')
const testSet = ['a', 'b', 'c', 'd', 'e']
const testArray = testSet.map(v => SHA256(v).toString())
const testMerkleTree = new MerkleTree(testArray, SHA256)
console.log(testMerkleTree)
4. merkle root 의 해쉬 값
// test_merkleTree.js
const { MerkleTree } = require('merkletreejs')
const SHA256 = require('crypto-js/sha256')
const testSet = ['a', 'b', 'c', 'd', 'e']
const testArray = testSet.map(v => SHA256(v).toString())
const testMerkleTree = new MerkleTree(testArray, SHA256)
//머클루트 값
const merkleRoot = testMerkleTree.getRoot()
console.log(merkleRoot.toString('hex'))
5. merkle root 검증
// test_merkleTree.js
const { MerkleTree } = require('merkletreejs')
const SHA256 = require('crypto-js/sha256')
const testSet = ['a', 'b', 'c', 'd', 'e']
const testArray = testSet.map(v => SHA256(v).toString())
const testMerkleTree = new MerkleTree(testArray, SHA256)
const merkleRoot = testMerkleTree.getRoot()
const testValue = 'a' // a : true , u : false
const leaf = SHA256(testValue)
const proof = testMerkleTree.getProof(leaf)
console.log(proof) //검증된 값
const result = testMerkleTree.verify(proof, leaf, merkleRoot)
console.log(result) //검증 결과
- testValue 값이 a 인 경우
- testValue 값이 u 인 경우
'블록체인 > 이론' 카테고리의 다른 글
[솔리디티] 인터페이스 개념정리 (0) | 2022.02.14 |
---|---|
[블록체인] 분산원장과 블록체인 (0) | 2022.02.10 |
[네트워크] [블록체인]HTTP 통신과 Socket 통신의 차이점(사전개념) (0) | 2021.12.25 |