我正在研究区块链,并且正在实现一个非常简单的“工作证明”。
工作证明:
export function mineBlock(difficulty: number, block) {
const prefix = Array(difficulty + 1).join("0");
function mine(block, difficulty) {
const nonce = block.nonce + 1;
const newBlock = {...block, nonce};
const hash = calculateHash(newBlock);
return hash.substring(0, difficulty) === prefix
? {...newBlock, hash}
: mine({...newBlock, hash}, difficulty);
}
return trampoline(mine(block, difficulty));
}
蹦床:
export function trampoline(func) {
let result = func;
while(result && typeof(result) === "function") {
result = result();
}
return result;
}
我仍然收到“超出最大调用堆栈大小”错误,甚至没有蹦床mine功能。
我已经阅读了关于StackOverflow的许多其他问题,以及各种博客上的文章,但是其中许多问题仅关注蹦床或TCE解决问题的“阶乘”或“斐波那契”示例……但事实并非如此。
我正在使用Node 10,所以我不介意这在浏览器中不起作用。
相关分类