все, я старшеклассник, который пытается изучить какой-нибудь блокчейн. И я впервые использую StackOverflow. Когда я пытаюсь выполнить хостинг с помощью терминала и nodemon, терминал сообщает, что «Ошибка [ERR_PACKAGE_PATH_NOT_EXPORTED]: подпуть пакета './v1' не определяется параметром« exports »в / Users / coding / Desktop / blockchain / node_modules / uuid / package . json "и я не знаю, что мне делать. Он говорит, что "v1" не определяется экспортом, и я этого не понимаю. и nodemon сообщает, что приложение [nodemon] разбилось - ожидание изменений файла перед запуском ... это код для всего проекта.
const express = require('express');
const app = express();
const bodyParser =require('body-parser');
const Blockchain = require('./blockchain');
const uuid = require('uuid/v1');
const nodeAddress = uuid().slipt('-').join('');
const bitcoin = new Blockchain();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
app.get('/blockchain', function (req, res) {
res.send(bitcoin);
});
app.post('/transaction', function(req, res){
const blockIndex = bitcoin.createNewTransaction(req.body.amount, req.body.sender, req.body.recipient);
res.json({ note: `Transaction will be added in block ${blockIndex}.`});
});
app.get('/mine', function(req, res){
const lastBlock = bitcoin.getLastBlock();
const previousBlockHash = lastBlock['hash'];
const currentBlockData = {
transaction: bitcoin.pendingTransactions,
index: lastBlock['index'] + 1,
};
const nonce = bitcoin.proofOfWork(previousBlockHash, currentBlockData);
const blockHash = bitcoin.hashBlock(previousBlockHash,currentBlockData,nonce);
bitcoin.createNewTransaction(12.5, "00", nodeAddress );
const newBlock = bitcoin.createNewBlock(nonce, previousBlockHash, blockHash);
res.json({
note: "new block mined successfully",
block: newBlock,
});
});
app.listen(3000, function(){
console.log("listening on port 3000....")
})
это страница, на которой создается цепочка блоков
const sha256 = require('sha256');
function Blockchain() {
this.chain = [];
this.pendingTransactions = [];
this.createNewBlock(100, '0', '0');
}
Blockchain.prototype.createNewBlock = function(nonce, previousblockHash, hash){
const newBlock = {
index: this.chain.length + 1,
timestamp: Date.now(),
transactions: this.pendingTransactions,
nonce: nonce,
hash: hash,
previousblockHash: previousblockHash,
};
this.pendingTransactions = [];
this.chain.push(newBlock);
return newBlock;
}
Blockchain.prototype.getLastBlock = function() {
return this.chain[this.chain.length - 1];
}
Blockchain.prototype.createNewTransaction = function( amount, sender,recipient ) {
const newTransactions = {
amount: amount,
sender: sender,
recipient: recipient,
};
this.pendingTransactions.push(newTransactions);
return this.getLastBlock()['index'] + 1;
}
Blockchain.prototype.hashBlock = function( previousBlockHash, currentBlockData,nonce ){
const dataAsString = previousBlockHash + nonce.toString() + JSON.stringify(currentBlockData);
const hash = sha256(dataAsString);
return hash;
}
Blockchain.prototype.proofOfWork = function(previousBlockHash, currentBlockData){
let nonce = 0;
let hash = this.hashBlock(previousBlockHash,currentBlockData,nonce);
while (hash.substring(0,4) !== '0000') {
nonce++;
hash = this.hashBlock(previousBlockHash,currentBlockData, nonce);
}
return nonce;
}
module.exports = Blockchain;
а это пакет json
{
"name": "blockchain",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon --watch dev -e js dev/api.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"nodemon": "^2.0.3",
"sha256": "^0.2.0",
"uuid": "^8.0.0"
}
}