实现 NiPoPoW 算法

Implementing NiPoPoW algorithm

你好,

我们这个小团队已经实施了大约 95% 的突破性科学提案,该提案描述了 NiPoPoW Non-Interactive Proofs of Proof-of-Work. You can find our source code implementation of the NiPoPoW algorithm on our GitHub

在实施过程中,我们有几个问题未能从您的突破性论文中弄清楚:

我。 WebDollar 通过使用 Patrica Merkle 树来存储每个非零地址和智能合约的余额,从而使用迷你区块链方案(类似以太坊)。因此,为了验证余额,我们只需要来自 Patrica Merkle Tree 的 SPV 哈希和最后一个区块(这是区块链的最后一个区块)的基于 NiPoPoW 的证明……所以我们相信我们不需要中缀证明。我对吗?还是我们需要中缀或天鹅绒 NiPoPoW 算法?

二.算法 2 验证

a) 我们猜测函数 validChain 将验证 π 和 χ 以检查它们指向创世块的互连以及正确计算哈希值。

b) 我的第一个技术问题是我们无法理解验证算法 2 中使用的 Q 谓词是什么。它是检查和验证 χ 的“函数”吗(验证基于 PoW 块的目标(T), interlinks。我是对的?)或者 Q predicate 会是什么样子? Q predicate 和 validChain (π, χ)
还有什么不同

三.多级 属性

我们不太确定我们收到的订单是否正确。

我们从 [0 到所有 u] 迭代 u' 并且我们将检查每个 u' 必须持有 属性 对于 C 中包含的具有 属性 |C 的任何 C* ∗↑µ'| ≥ k1,C* 也必须有最后一个方程。如果 C* 不符合最后一个方程,我们 return false;

四.差

我们无法从 badness 函数中理解标记的 C*

一个。计算表达式 C↓↑µ−1 的正确顺序是什么...首先我们计算 C↓ 然后我们根据之前的结果计算 ↑µ−1?
b.我们如何计算C↓?我们找不到任何关于如何计算 C↓ 的想法,只有 C'↓ 是下链定义 C'↓ C 被定义为 C[C'[0] : C'[−1]]。
C。不是C’↓不是C↓吗?

谢谢!

我。这几乎是正确的。唯一不同的是,你仍然需要论文中提到的 χ 后缀,其中包括最近的 |χ| = 区块链的 k 个区块。这是因为“最后一个区块”不稳定,可能会被撤回(以防同一高度的另一个区块恰好在相似的时间被开采)。您只能推断出 k 个区块前的“当前”余额。

二.
a) 这是正确的。
b) 谓词“Q”是特定于应用程序的。例如,在您的情况下,它可能是某个特定帐户的余额在某个时间点持有一定金额的声明。即 Q 是“爱丽丝在区块 #4,000,091 持有 5 个以太币”。

三。这是对的。一般来说,除非对整个区块链进行严重的攻击,否则这个 属性 不会失败(对于适当的 δ)。

四.
一)是的。
b) c) 你是对的。 C↓↑µ−1 实际上应该是 C’↓↑µ−1。我已更正错误,我们将更新最新版本的论文。非常感谢您指出这一点!

答案学分:Dionysis Zindros