NodeJS로 50줄의 코드로 블록체인 만들기
11343 단어 nodejavascripttutorialblockchain
NodeJS로 50줄의 코드로 첫 블록체인 애플리케이션을 만들 시간입니다!
우리는 블록체인이 될 수 있는 것의 지나치게 단순화된 버전을 만들 것이며, 여러 노드 사이의 네트워킹 시스템을 설계하는 방법이 아니라 채굴 프로세스에 초점을 맞출 것입니다.
또한 NodeJS는 단일 스레드 언어이기 때문에 마이닝 측면에서 사용하는 것을 권장할 수 없습니다. 이 기사는 블록체인이 작동하는 방식을 설명하기 위해 독점적으로 여기에 있습니다.
두 개의 기본 파일이 필요합니다.
내 소스 코드에 주석을 이미 추가했기 때문에 코드의 각 줄을 설명하지 않겠습니다.
blockchain.JSON은 블록체인 데이터 아키텍처를 저장합니다.
[
{
"id": "0",
"timestamp": 0,
"nonce": 0
}
]
app.js :
// Sha3 is a module to hash documents
const { SHA3 } = require("sha3");
const hash = new SHA3(256);
const fs = require("fs");
const fileName = "./blochain.json";
// We start our nonce at 0
let nonce = 0;
// Difficulty of the Blockchain. The more you add 0, the more it will be difficut to mine a Block
const difficulty = "000";
// Switch to end the while loop
let notFounded = true;
// Function used to update our Blockhcain
const updateBlockchain = (id, timestamp, nonce) => {
let blockchain = require(fileName);
// We create the new Block
const addBlock = {
id: id,
timestamp: timestamp,
nonce: nonce
};
// We add it into the Blockchain
blockchain.push(addBlock);
fs.writeFile(
fileName,
JSON.stringify(blockchain, null, 2),
function writeJSON(err) {
if (err) return console.log(err);
}
);
};
// Function to mine a Block
const mining = () => {
var start = new Date().getTime();
// We import the Blockchain
const blockchain = require(fileName);
while (notFounded) {
// We need to reset our hash every loop
hash.reset();
// We hash the new data (block + nonce)
hash.update(JSON.stringify(blockchain) + nonce);
let hashed = hash.digest("hex");
// IF the new hashed data starts with '000'
if (hashed.startsWith(difficulty)) {
var diff = (new Date().getTime() - start) / 1000;
// We turn the switch off to end the while loop
notFounded = false;
console.log("\x1b[46m%s\x1b[0m", "//// FOUNDED ! ////");
console.log(`Hash : ${hashed}`);
console.log(`Nonce : ${nonce}`);
console.log(`Total time : ${diff}s`);
console.log("\x1b[46m%s\x1b[0m", "//// ////");
// We execute the updateBlockchain
updateBlockchain(hashed, Date.now(), nonce);
} else {
// PLEASE NOTE: If you want your mining process to be faster, delete or comment the next console.log()
console.log(hashed);
// We increment the nonce and start again the loop
nonce++;
}
}
};
// When we launch the app, start mining
mining();
앱을 실행하려면:
먼저 yarn npm -g yarn을 설치합니다.
그런 다음 sha3 yarn을 설치하고 sha3을 추가합니다.
그리고 그게 다야! node app.js 로 광부를 시작할 준비가 되었습니다. 원한다면 const 난이도에 0을 더 추가하여 난이도를 개선할 수 있습니다.
MIT 라이선스에 따른 레포: https://github.com/Icesofty/blockchain-demo
Reference
이 문제에 관하여(NodeJS로 50줄의 코드로 블록체인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/icesofty/create-a-blockchain-in-50-lines-of-code-with-nodejs-165h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)