Я пытаюсь настроить конечную точку ajax на моем сервере, которая создает новый объект транзакции и добавляет его в блок, а блок добавляется в локальную цепочку блоков.
Проблема в том, что он работает нормально, не вызывая мою функцию базы данных add_block, которая добавляет новый блок в базу данных. Но после добавления вызова add_block все новые блоки, которые я создаю с помощью функции ajax, становятся пустыми, в отличие от транзакции. Странно то, что блок не пустой и правильно добавлен в базу данных.
Функция add_block возвращает обещание после добавления блока в базу данных.
Я распечатал блокчейн до и после вызова функции add_block. Перед вызовом новый блок будет правильно отображаться с новой транзакцией в нем. Но после вызова новый блок будет отображаться, но без транзакций в нем вообще. И любые будущие вызовы ajax также будут отображать пустые блоки.
--- Это функция ajax, работающая на сервере узла ---
app.post("/transact", function(request, response) {
let sendAddress = jerryWalletAddress;
let getAddress = benWalletAddress;
let amount = 5;
let thisTransaction = new Transaction(sendAddress, getAddress, amount);
// adds the transaction to a pending list
testChain.addTransaction(thisTransaction);
// creates a block object holding all transactions in the pending list
testChain.minePendingTransactions(jerryWalletAddress);
// This will print the correct output
testChain.printChain();
// This is the db function that adds the block to a db
blockchainDB.add_block(testChain.chain[testChain.chain.length-1]).then(()=> {
// This will print the incorrect output
testChain.printChain();
});
});
Предполагается, что перед вызовом ajax есть 2 действительные транзакции:
Правильный список при вызове printChain () выглядит примерно так:
Блок 1
-Транзакция 1
Блок 2
-Транзакция 1
Блок 3
-Транзакция 1
Неправильный список при повторном вызове printChain()
выглядит примерно так:
Блок 1
-Транзакция 1
Блок 2
-Транзакция 2
Блок 3
Блок 4
Блок 5