区块链opensea是什么意思 区块链op

古泉财经 108 0

本篇文章主要给网友们分享区块链op的知识,其中更加会对区块链opensea是什么意思进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

usdt提现原理

usdt提现原理是:通过 Tether 公司区块链op,把手中的 USDT 还给 Tether 公司。Tether 公司销毁收到的 USDT 区块链op,发放等值的美元给用户。

需要提醒的是区块链op,不管是通过电汇美元至 Tether 公司提供的银行账户以购买 USDT ,还是将 USDT 换回成美元,都是需要完成账户验证的。据区块链op了解 Tether 的 KYC 比较难通过,兑换手续费约为5%。

usdt提现的构架是:比特币区块链层,主要实现Tether分布式账本功能。Tether交易信息通过OP_RETURN保存在比特币的分布式账本中。

Omni协议层,Omni协议层主要功能如下:创建与销毁USDT提供OmniApi、跟踪Tether流通,通过Omnichest.info提供区块链浏览器功能,支持用户交易与保存Tether(USDT)。

USDT的一些特点是:

稳定:Tether将现金转换成数字货币,锚定或将美元、欧元和日元等国家货币的价格挂钩。由于Tethers(USDT)由现实世界货币存储支持,它声称用户可以享受基于数字,区块链的交易的好处,而不受大多数加密货币的波动影响。

透明:Tether声称其法定储备账户会定期接受审核,以确认其储备账户能够实际支持Tethers(USDT)流通中的价值。余额定期更新,可随时公开访问。所有Tether交易都记录在公共区块链上。

区块链技术:ether平台建立在区块链技术的基础之上,利用它们提供的安全性和透明性。

广泛的集成:在Bitfinex,shapUNK,GoCoin和其他交易所使用tethers。

零知识证明

零知识简洁的非交互知识论证(zk SNARK)是一种真正巧妙的方法,可以在不透露任何其他信息的情况下证明某件事是真的,然而,为什么它首先是有用的呢?

零知识证明在无数应用中是有利的,包括:

关于私人数据的证明声明:

匿名授权:

匿名付款:

外包计算:

尽管表面上听起来很棒,但底层方法是数学和密码学的“奇迹”,自 1985 年在主要著作“交互式证明系统的知识复杂性中引入以来,已经进行了第四个十年的研究 随后引入了非交互式证明,这在区块链的背景下尤为重要。

在任何零知识证明系统中,都有一个验证人想要说服验证人某些陈述是真实的,而不披露任何其他信息,例如,验证人了解到验证人的银行账户中有X多个,但没有其他信息(即,未披露实际金额)。协议应满足三个属性:

让我们从简单开始,并尝试证明某些东西,而不必担心零知识,非交互性,其形式和适用性。

想象一下,我们有一个长度为 10 数组,我们想向验证者(例如程序)证明所有这些位都设置为 1,即我们知道一个数组,使得每个元素都等于 1。

验证者一次只能检查 (即读取) 一个元素。为了验证语句,可以通过以某种任意顺序读取元素,并检查它是否真正等于1,如果是,则在第一次检查后该语句的置信度为10%,或者如果该位不等于1,则语句完全无效。验证者必须进入下一轮,直到他获得足够的信心。在一些情况下,可以信任证明者并且只需要50% 置信度,在需要95% 置信度的其他情况下,必须检查所有单元。很明显,这种证明协议的缺点是,必须进行与元素数量成比例的检查数量,如果我们考虑数百万个元素的数组,这是不切实际的。

让我们考虑多项式,有一个曲线对应于多项式: 。多项式有一个有利的性质,即如果我们有两个不相等的次数最多为 d 的多项式,它们相交的点不超过 d。 例如,让我们稍微修改原始多项式 。如果我们想找到两个多项式的交点,我们需要将它们等同起来。例如,要找到多项式与x轴相交的位置 (即 ),我们将 等同,并且此类方程的解将是那些共享点: , 和 。

同样,我们可以将多项式的原始版本和修改版本等同起来,以找到它们的交点。所得的多项式为1,且有明显的解 。因此只有一个交点。

对于任意次数为 d 的多项式,任何此类方程的结果始终是另一个次数最多为 d 的多项式,因为没有乘法可以产生更高的次数。 示例: ,简化为 。代数基本定理告诉我们,d 次多项式最多可以有 d 个解。因此,我们可以得出结论,任意点处的任何多项式的求值类似于其唯一身份的表示。让我们在x = 10处评估我们的示例多项式。

事实上,在所有要计算的x选项中,最多只有3个选项在这些多项式中具有相同的计算,而所有其他选项都会不同。这就是为什么如果证明者声称知道一些多项式 (无论其次数有多大),他们可以遵循一个简单的协议来验证语句:

例如,如果我们考虑 x 从 1 到 的整数范围,则评估不同的点数为 。 此后,x 意外“击中”任何 个共享点的概率等于 ,这被认为可以忽略不计。

注意:与无效位检查协议相比,新协议只需要一轮,并且在声明中给出了压倒性的信心(假设 d 充分小于范围的上限,几乎 100%)。

这就是为什么多项式是zk-SNARK的核心,尽管也可能存在其他证明介质。

我们从证明多项式知识的问题开始,然后采用通用方法。 在此过程中,我们将发现多项式的许多其他性质。 到目前为止的讨论集中,关注一个弱的证明概念上,即各方必须相互信任,因为还没有措施来执行协议的规则。 例如,证明者不需要知道多项式,他可以使用任何其他可用的方法来得出正确的结果。 此外,如果验证者的多项式评估的幅度不大,比如说 10,验证者可以猜测一个数字,并且它被接受的概率是不可忽略的。 我们必须解决协议的这种弱点,但首先知道多项式意味着什么? 多项式可以表示为以下形式(其中 n 是多项式的次数):

如果有人说他知道一个 1 次多项式(即 ),那意味着他真正知道的是系数 。 此外,系数可以有任何值,包括 0。让我们说,证明者声称知道3次多项式,使得x = 1和x = 2是所有可能解中的两个。这样的有效多项式之一是 。

代数的基本定理指出,只要多项式是可解的,任何多项式都可以分解为线性多项式 (即代表直线的1次多项式)。因此,我们可以将任何有效多项式表示为其因子的乘积:

同样,如果这些因子中的任何一个为零,则整个方程为零,因此,所有 都是唯一的解。我们的示例可以分解为以下多项式:

x的值是:0,1,2,你可以很容易地在多项式的任一形式上检查这一点。

回到证明者声称他知道根为 1 和 2 的 3 次多项式,这意味着他的多项式具有以下形式:

换句话说,(x − 1) 和 (x − 2) 是所讨论的多项式的余因子。因此,如果证明者想要证明他的多项式确实具有这些根而不公开多项式本身,则他需要证明他的多项式p(x) 是那些协因子 的乘法,称为目标多项式,和一些任意多项式h(x) ,即:

换句话说,p(x) 具有t(x) 的所有根。找到h(x) 的自然方法是通过除法 。如果证明者找不到这样的h(x),这意味着p(x) 没有必要的协因子t(x),在这种情况下,多项式除法将具有余数。在我们的示例中,如果我们将 除以 。我们得到了无余数的结果 。

使用我们的多项式身份检查协议,我们可以比较多项式 和 :

为了将其付诸实践,让我们在示例中执行此协议:

相反,如果证明者使用不同的 ,它没有正确的辅因子,例如 ,那么:

我们将得到 ,余数为 ,即: 。这意味着证明者必须将余数除以 才能评估 。因此,由于验证者对x的随机选择,因此对于余数 被t(x) 整除的概率很低,因此,如果验证者将检查p和h补是整数,这样的证明将被拒绝。但是,该检查要求多项式系数也必须是整数。

现在,我们可以在不学习多项式本身的情况下检查多项式的特定属性,因此这已经为我们提供了某种形式的零知识和简洁。尽管如此,此构造仍存在多个问题:

我们将在以下部分解决所有问题。

在上文中,如果将 和 不是明文给出,而是作为黑匣子给出,那将是理想的选择,因此人们无法篡改协议,但仍然能够计算对这些模糊值。类似于哈希函数,因此在计算时很难返回到原始输入。

这正是同态加密的目的。也就是说,它允许对一个值进行加密,并能够对这种加密应用算术运算。有多种方法可以实现加密的同态特性,我们将简要介绍一种简单的方法。

一般的想法是,我们选择一个基数的自然数g(比如5),然后对一个值进行加密,我们将g乘以该值的幂。例如,如果我们想要加密数字3:

其中125是3的加密。如果要将这个加密的数字乘以2,则将其提高为2的指数:

我们能够将未知值乘以2,并对其进行加密。我们还可以通过乘法添加两个加密值,例如3+2:

同样,我们可以通过除法减去加密的数字,例如5 − 3:

但是,由于基数5是公共的,因此很容易回到秘密数字,将加密的数字除以5,直到结果为1。除法的次数即为明文。

这就是模算法发挥作用的地方。模运算的思想如下:我们声明只选择前n个自然数,即0,1,…,n-1而不是拥有一个无限的数字集。如果任何给定的整数不在这个范围内,我们将其“环绕”。例如,让我们先选择六个数字。为了说明这一点,请考虑一个具有六个相等单位刻度的圆;这是我们的射程。

现在让我们看看数字8将落在哪里。 打个比方,我们可以把它想象成一根绳子,它的长度是八个单位。如果我们把绳子连接到圆圈的开头并开始将绳子缠绕在它周围,旋转一圈后,我们还剩下一部分绳子.因此,如果我们继续这个过程,绳子将在2处结束。

它是模运算的结果。 不管绳子有多长,它总是会停在圆圈的刻度之一处。 因此,模运算将使其保持在一定范围内。 15 个单位的绳索将在 3 处停止,即 6 + 6 + 3(两个完整的圆圈,剩余 3 个单位)。 负数的工作方式相同,唯一的区别是我们将其包装在相反的方向,对于 -8,结果将是 4。

而且,我们可以进行算术运算,结果总是在n个数的范围内。 我们现在将使用符号“mod ”来表示数字的范围。 例如:3 × 5 = 3 (mod 6); 5 + 2 = 1 (mod 6).

此外,最重要的特性是运算顺序无关紧要,例如,我们可以先执行所有运算,然后在每次运算后应用模或应用模。例如: 相当于:2 × 4 = 2 (mod 6); 2 − 1 = 1 (mod 6); 1 × 3 = 3 (mod 6).

那到底为什么有帮助呢?事实证明,如果我们使用模算术,则具有运算结果,回到原始数字是不平凡的,因为许多不同的组合将具有相同的结果: 5 × 4 = 2 (mod 6); 4 × 2 = 2 (mod 6); 2 × 1 = 2 (mod 6).

如果没有模算术,结果的大小为它的解决方案提供了线索。 否则,这条信息会被隐藏,而常见的算术属性会被保留。

如果我们回到同态加密并使用模运算,例如模 7,我们将得到:

和不同的指数会有相同的结果:

这是很难找到指数的地方。 事实上,如果模数足够大,这样做就变得不可行,而现代密码学的很大一部分是基于这个问题的“难度”。该方案的所有同态属性都保留在模领域中:

encryption:

multiplication:

addition:

让我们明确说明加密函数: ,其中 v 是我们要加密的值。

这种同态加密方案存在局限性,尽管我们可以将加密值乘以未加密值,但我们不能将两个加密值乘以 (和除以),也不能对加密值求幂。虽然从第一印象来看是不幸的,但这些属性将成为zk-SNARK的基石。

有了这样的工具,我们现在可以评估一个加密随机值为x的多项式,并相应地修改零知识协议。

让我们看看如何评估多项式 。正如我们以前建立的那样,多项式就是知道它的系数,在这种情况下,它们是: 1,-3,2。因为同态加密不允许对加密值求幂,所以我们必须得到从1到3的x幂的加密值: , , ,这样我们可以对加密多项式求值如下:

作为这些操作的结果,我们在我们未知的某个 x 处对我们的多项式进行了加密。 这是一个非常强大的机制,并且由于同态特性,相同多项式的加密计算在加密空间中总是相同的。我们现在可以更新协议的先前版本,对于d次多项式:

Verifier:

Prover:

Verifier:

由于证明者对s一无所知,因此很难提出不合法但仍匹配的评估。

虽然在这样的协议中,证明者的敏捷性是有限的,但他仍然可以使用任何其他方法来伪造证明,而无需实际使用所提供的 s 幂的加密,例如,如果证明者声称仅使用 2 次幂 和 有一个令人满意的多项式 ,这在当前协议中无法验证。

多项式的知识是其系数 。 我们在协议中“分配”这些系数的方式是通过对秘密值 s 的相应加密幂求幂(即 )。 我们已经在选择 s 的加密幂时限制了证明者,但这种限制并未强制执行,例如,可以使用任何可能的方法来找到满足方程 的任意值 和 并将它们提供给验证者而不是 和 。 例如,对于一些随机 , 和 ,其中 可以从提供的 s 的加密幂计算。 这就是为什么验证者需要证明仅使用 s 的幂的加密来计算 和 而没有别的。

让我们考虑一个1次多项式的基本例子,该多项式具有一个变量和一个系数 ,相应地,s的加密 。我们正在寻找的是确保只有s的加密,即 ,被一些任意系数c同态“乘以”,而不是其他任何东西。所以对于任意的c,结果必须是 形式。

一种方法是要求对另一个移位的加密值与原始值一起执行相同的操作,充当“校验和”的算术模拟,确保结果是原始值的取幂。这是通过引入的指数知识假设Knowledge-of-Exponent Assumption (或KEA) 来实现的,更确切地说:

Alice有一个值a,她希望Bob指数到任何幂,唯一的要求是只有这个a可以指数,没有别的,以确保她:

因为 Bob 无法从元组 中提取 ,因此推测 Bob 可以产生有效响应的唯一方法是通过以下过程:

最终,这样的协议向Alice提供了一个证据,证明Bob确实将a乘以他已知的某个值,并且他不能进行任何其他操作,例如乘法、加法,因为这将消除 移位关系。

在同态加密上下文中,幂运算是加密值的乘法。我们可以在简单的单系数多项式 的情况下应用相同的构造:

这种结构限制证明者仅使用提供的加密 s,因此证明者可以仅将系数 c 分配给验证者提供的多项式。 我们现在可以将这种单项多项式方法缩放为多项多项式,因为每个项的系数分配是单独计算的,然后同态地“相加”在一起。 因此,如果向证明者提供 s 的加密幂以及它们的移位值,他可以评估原始多项式和移位多项式,其中必须进行相同的检查。 特别是对于 d 次多项式:

对于我们之前的示例多项式 ,这将是:

现在我们可以确定,验证程序除了使用验证程序提供的多项式外,没有使用任何其他方法,因为没有其他方法来保持 移位。此外,如果验证者希望确保在验证者的多项式中排除一些s的幂,例如j,他将不提供加密 及其移位 。

与我们一开始的相比,我们现在有了一个健壮的协议。 然而,无论加密如何,零知识属性仍然存在一个明显的缺点:虽然理论上多项式系数 可以有很大范围的值,但实际上它可能非常有限(上例中为 6),这意味着 验证者可以暴力破解有限范围的系数组合,直到结果等于证明者的答案。 例如,如果我们考虑每个系数的 100 个值的范围,则 2 次多项式将总共有 100 万个不同的组合,考虑到蛮力将需要不到 100 万次迭代。 此外,即使在只有一个系数且其值为 1 的情况下,安全协议也应该是安全的。

因为验证器只能从验证器发送的数据中提取关于未知多项式p(x)的知识,所以让我们考虑那些提供的值(证明): 。他们参与以下检查:

gp=gh(多项式p(x)有t(x)的根)

(gp)α=gp′t(s)(使用正确形式的多项式)

问题是我们如何改变证据,使支票仍然有效,但无法提取任何知识?从上一节可以得出一个答案:我们可以用一些随机数δ(δ)来“移位”这些值,例如(gp)δ。现在,为了提取知识,首先需要找到被认为不可行的δ。此外,这种随机化在统计学上与随机性是无法区分的。

为了保持关系,让我们检查验证者的检查。证明者的值之一位于方程式的每一侧。因此,如果我们用相同的 δ “移动” 它们中的每一个,方程必须保持平衡。

具体地,证明者对随机 δ 进行采样,并用g α p(s) δ gh(s) δ 对其证明值求幂,并提供给验证者进行验证:

(gp)δ = gh δ t(s) (gp)δ α = gp′ δ

合并后,我们可以观察到支票仍然有效:

注意: 零知识是多么容易被编织到建筑中,这通常被称为 “免费” 零知识。

到目前为止,我们有一个交互式零知识方案。为什么会这样?由于该证明仅对原始验证者有效,其他任何人(其他验证者)都不能信任同一证明,因为:

因此,为了证明语句(在这种情况下是多项式的知识),需要与每个验证者进行单独的交互。

虽然交互式证明系统有其使用案例,例如,当证明人只想说服一个专用的验证人(称为指定验证人),这样证明就不能再用于向其他人证明同一陈述时,当一个人需要同时(例如,在区块链等分布式系统中)或永久地说服多方时,这是非常有效的。验证方需要始终保持在线,并对每个验证方执行相同的计算。

因此,我们需要的秘密参数是可重用的,公开的,可信的和不可滥用的。

让我们首先考虑在秘密 (t(s),α) 产生后如何保护它们。我们可以像验证者在发送给证明者之前对s的指数进行加密一样对它们进行加密。然而,我们使用的同态加密不支持两个加密值的乘法,这对于验证检查以使t(s) 和h以及p和 α 的加密相乘都是必需的。这就是密码配对的地方。

密码配对(双线性映射)是一种数学构造,用函数 , 给定来自一组数字的两个加密输入(例如, ,允许将它们确定地映射到不同数字输出集中的乘法表示,即, 。

由于源和输出编号集合不同,因此配对的结果不能用作另一个配对操作的输入。我们可以将输出集 (也称为 “目标集”) 视为来自 “不同的宇宙”。因此,我们不能将结果乘以另一个加密值,并通过名称本身建议我们一次只能乘以两个加密值。在某种意义上,它类似于一个散列函数,它将所有可能的输入值映射到一组可能的输出值中的一个元素,并且它不是平凡可逆的。

注意: 乍一看,这种限制只能阻碍依赖的功能,具有讽刺意味的是,在zk-SNARK情况下,它是该方案的安全性所拥有的最重要的属性。

配对函数 的一个基本(技术上不正确)的数学类比是说明有一种方法可以“交换”每个输入的基数和指数,这样基数 在转换过程中会被修改成指数,例如 。 然后将两个“交换的”输入相乘,使得原始 a 和 b 值在相同的指数下相乘,例如:

因此,由于在“交换”期间使用结果 在另一个配对(例如, )中改变了碱基,因此不会产生所需的加密乘法 。配对的核心属性可以用等式表示:

e(ga, gb) = e(gb, ga) = e(gab, g1) = e(g1, gab) = e(g1, ga)b= e(g1, g1) ab= . . .

从技术上讲,配对的结果是目标集不同生成器g下原始值的加密产物,即 。因此,它具有同态加密的特性,例如,我们可以将多对的加密产物添加到一起:

注意:加密配对利用椭圆曲线来实现这些属性,因此从现在起,符号 将表示曲线上的生成器点,该点将被添加到自身 次,而不是我们在前面部分中使用的乘法群生成器。

有了加密配对,我们现在可以设置安全的公共和可重用参数。让我们假设我们信任一个诚实的一方来生成秘密 s 和 α。一旦 α 和具有相应 α 位移的 s 的所有必要幂被加密(gα, gsi , gαsi for i in 0, 1, ..., d),必须删除原始值。

这些参数通常被称为公共参考字符串common reference string或CRS。CRS生成后,任何prover和verifier都可以使用它来执行非交互式零知识证明协议。虽然不重要,但CRS的优化版本将包括对目标多项式target polynomial 的加密评估。

此外,CRS分为两组(对于 中的 ):

由于能够乘以加密值,verifier可以在协议的最后一步检查多项式,让verification key verifier进程从证明者那里接收到加密多项式评估 gp、gh、gp':

虽然可信设置是有效的,但它并不有效,因为 CRS 的多个用户将不得不相信一个删除的 和 ,因为目前没有办法证明这一点。 因此,有必要最小化或消除这种信任。 否则,不诚实的一方将能够在不被发现的情况下制作假证据。

实现这一点的一种方法是由多方使用前面部分中介绍的数学工具生成复合 CRS,这样这些方都不知道秘密。这是一种方法,让我们考虑三个参与者 Alice、Bob 和 Carol,对应的索引为 A、B 和 C,对于 i 在 1、2、...中。 . . , d:

作为这种协议的结果,我们有复合 和 并且没有参与者知道其他参与者的秘密参数,除非他们串通。事实上,为了学习 和 ,必须与其他所有参与者串通一气。因此,即使一个人是诚实的,也无法提供假证明。

注意:此过程可以根据需要对尽可能多的参与者重复。

可能存在的问题是如何验证参与者是否与 CRS 的每个值一致,因为对手可以采样多个不同的 s1、s2、...。 . . 和α1, α2, . . .,并将它们随机用于 s 的不同幂(或提供随机数作为增强的公共参考字符串),从而使 CRS 无效且不可用。

幸运的是,因为我们可以使用配对来乘以加密值,所以我们能够执行一致性检查,从第一个参数开始,并确保每个下一个参数都是从它派生的。参与者发布的每个 CRS 都可以检查如下:

请注意,虽然我们验证每个参与者都与他们的秘密参数一致,但使用先前发布的 CRS 的要求并未对每个下一个参与者强制执行(在我们的示例中为 Bob 和 Carol)。因此,如果对手是链中的最后一个,他可以忽略先前的 CRS 并从头开始构造有效参数,就好像他是链中的第一个,因此是唯一知道秘密 s 和 α 的人。

我们可以通过额外要求除第一个参与者之外的每个参与者加密和发布他的秘密参数来解决这个问题,例如,Bob 还发布:

这允许验证 Bob 的 CRS 是 Alice 参数的适当倍数,因为 i in 1, 2, . . . , d:

同样,Carol必须证明她的CRS是Alice-Bob的CRS的适当倍数。

这是一个强大的CRS设置方案,不完全依赖任何一方。实际上,即使只有一方是诚实的,并且删除并且从不共享其秘密参数,即使所有其他各方都合谋,它也是非常明智的。因此,CRS 设置中不相关的参与者越多,伪造证据的可能性就越小,如果竞争方参与,其可能性就可以忽略不计。该方案允许涉及对设置的易读性有疑问的其他不受信任的各方,因为验证步骤确保他们不会破坏最终的公共参考字符串 (也包括使用弱 α 和s)。

我们现在准备巩固进化的zk-SNARKOP协议。形式上,为简洁起见,我们将使用大括号来表示由其旁边的下标填充的一组元素,例如si i ∈[d] 表示集合s1,s2,...,sd。

已商定目标多项式t(x)和校准仪多项式的d次:

Setup:

Quorum介绍(二):Quorum共识

我们知道,公共区块链是一个开放的社区,任何人都能够成为一个节点加入网络,在网络中计算,提交交易到链上等,因此公链是没有信任基础的,所以公链的共识第一要义就是证明交易的合法性和真实性,防止恶意成员的捣乱,效率不是第一要义。

与公链的环境不同,有准入门槛的企业链或者联盟链链上的所有成员在加入时实际上是已经获得了某些认可和许可的,因此企业链/联盟链上的成员是有一定信任基础的。在企业级链上我们没有必要使用POW或者POS这种浪费算力或者低效的交易共识。

Quorum提供了多种共识供用户采用:

在讲Raft前,有必要提一下Paxos算法,Paxos算法是Leslie Lamport于1990年提出的基于消息传递的一致性算法。然而,由于算法难以理解,刚开始并没有得到很多人的重视。其后,作者在八年后,也就是1998年在ACM上正式发表,然而由于算法难以理解还是没有得到重视。而作者之后用更容易接受的方法重新发表了一篇论文《Paxos Made Simple》。

可见,Paxos算法是有多难理解,即便现在放到很多高校,依然很多学生、教授都反馈Paxos算法难以理解。同时,Paxos算法在实际应用实现的时候也是比较困难的。这也是为什么会有后来Raft算法的提出。

Raft是实现分布式共识的一种算法,主要用来管理日志复制的一致性。它和Paxos的功能是一样,但是相比于Paxos,Raft算法更容易理解、也更容易应用到实际的系统当中。而Raft算法也是联盟链采用比较多的共识算法。

Raft一共有三种角色状态:

每个节点上都有一个倒计时器 (Election Timeout),时间随机在 150ms 到 300ms 之间。有几种情况会重设 Timeout:

在分布式系统中,“时间同步”是一个很大的难题,因为每个机器可能由于所处的地理位置、机器环境等因素会不同程度造成时钟不一致,但是为了识别“过期信息”,时间信息必不可少。

Raft算法中就采用任期(Term)的概念,将时间切分为一个个的Term(同时每个节点自身也会本地维护currentTerm),可以认为是逻辑上的时间,如下图。

每一任期的开始都是一次领导人选举,一个或多个候选人(Candidate)会尝试成为领导(Leader)。如果一个人赢得选举,就会在该任期(Term)内剩余的时间担任领导人。在某些情况下,选票可能会被评分,有可能没有选出领导人(如t3),那么,将会开始另一任期,并且立刻开始下一次选举。Raft 算法保证在给定的一个任期最少要有一个领导人。

特殊情况的处理

在以太坊中节点本身并没有角色,因此在使用Raft共识时,我们称leader节点为挖矿节点:

Raft共识机制本身保证了同一时间点最多只有一个leader,因此用在以太坊模型下也只会有一个出块者,避免了同时出块或者算力浪费的情况。

在单笔交易(transaction)层级Quorum依然沿用了Ethereum的p2p传输机制,只有在块(block)层级才会使用Raft的传输机制。

其中需要注意到一点,在以太坊中一个节点收到块以后就会立刻记账,而在Quorum模型中,一个块的记录必须遵从Raft协议,每个节点从leader处收到块以后必须报告给leader确认收到以后,再由leader通知各个节点进行数据提交(记录)

在Quorum模型中新块的信息是很有可能和已有块的header信息不符的,最容易发生这种情况的就是选举人更替(挖矿节点更替),具体描述如下:

假设有两个节点,node1和node2,node1是现有的leader,现有链的最新区块是0xbeda,它的父区块是0xacaa

对块“Extends”或者“No-op”的标记是在更上层完成的,并不由raft本身log记录机制实现。因为在raft内部,信息并不分为有效或无效,只有在区块链层面才会有有效区块和无效区块的含义。

需要注意的是,Quorum的这种记账机制和本身Ethereum的LVC(最长链机制)是完全不一样的

Quorum的出块频率默认是50ms一个块,可以通过 --raftblocktime 参数进行设置

投机性出块并不是以太坊Raft共识严格必须的核心机制之一,但是是提高出块效率的有效方式。

一个块从产生到实际被记录账本,走完整个raft流程实际上是需要耗费一定时间的。如果我们在上一个块被计入账本之后才开始产生下一个块,那么一笔交易想要成功被记录需要耗费较多的时间。

而在投机性(speculative minting)出块中,我们允许一个新块在它的父块被记录之前就产生。依次类推,在一段时间内,实际上会产生“投机链(speculative chain)”,在祖先块没有被记录进账本之前,一个一个新块已经依据先后关系组成了一条临时链片段,等待被记录。

对于已经被记录进投机块的交易,我们会在交易池中标记为“proposed transaction”

在之前我们说过,raft机制中是存在两个挖矿节点比赛出块和记账的可能的,因此,一条 speculative chain 中间的某一个块很有可能不会被记录到账本中。在这种情况下我们也会把交易池中的交易状态修改回来。( InvalidRaftOrdering event)

目前,Quorum并没有对speculative chain的长度做限制,但在它的未来规划中有讲这一点作为一个性能优化项加入开发进程,最后能够让一个挖矿节点即使在raft共识层没有连接上,它也可以离线一直出块,产生自己的speculative chain。

一条speculative chain有以下几个部分构成:

在块传输上我们使用etcd Raft默认的http传输,当然使用Ethereum的p2p传输也是可以的,但是Quorum团队在测试阶段发现,高负载的状态下,ETH p2p的性能没有raft p2p性能好。

Quorum使用50400端口作为Raft 传输层的默认监听端口,也可以通过 --raftport 参数自行设置。

一个集群默认的最大节点个数是25,可以通过 --maxpeers N 来设置,N是你的最大节点个数。

Quorum的IBFT其实就是PBFT,只不过摩根大通把它自己实现的PBFT叫做IBFT,所以IBFT的基本原理与PBFT是一样的,所不同的是,IBFT中把出块和共识的三阶段结合在了一起。

Istanbul BFT修改自PBFT算法,包括三个阶段: PRE-PREPARE 、 PREPARE 以及 COMMIT 。在 N 个节点的网络中,这个算法可以最多容忍 F 个出错节点,其中 N=3F+1 。

Istanbul BFT算法中的区块是确定的,意味着链没有分叉并且合法的区块一定是在链中。为了防止一个恶意节点生成不同的链,在把区块插入进链 之前 ,每一个validator必须把 2F + 1 个 COMMIT 签名放进区块头的 extraData 字段。因此,区块是可以自我验证的(因为有签名)并且轻客户端也支持。

然而动态的 extraData 也会造成区块的hash计算问题。因为一个区块可以被不同的validator验证,所以会有不同的签名,所以同一个区块会有不同的hash。解决的方案是,计算区块hash的时候把 COMMIT 签名排除在外。因此我们任然可以在保证block hash一致性的同时进行共识验证。

由于Ethereum POA共识在网上已经有大量介绍,笔者这里就不多做详细介绍,只对重要特点和POA的工作流程做大致梳理和介绍

op币项目启动时间

7月27启动。op币是项目Optimism的代币,这个项目是以太坊上使用的第2层扩展解决方案,将转帐、智能合约等移到Optimism链上处理,只将处理后的最终结果记录在以太坊上,借此分担以太坊上庞大的交易数量,最终结果的安全性仍由以太坊保护,所以是在不牺牲安全性的状况下,矿工费大大降低了,吞吐量也增加了。

那这么说来,Optimism是以太坊的侧链吗?

并不是,侧链指的是安全性与Layer 1不相关的链,像是币安智能链本身安全性已经由BNB持有者负责维护,与以太坊不相关,目前知名的以太坊侧链有:币安智能链、Terra、等。但Optimism使用一种聚合技术,多个交易被“滚动”到另一个区块链上的单个交易中,最终结果再次反馈到主以太坊。

Optimism为以太坊开发人员提供了无需进行更改就能使用以太坊上所有可用工具的机会。其开发团队表示,交易员需要支付的矿工费将低10倍。此外,Optimism利用Optimismrollups解决了欺诈和无效状态转换问题。

什么是区块链?不是比特币进化慢,而是我们进化慢

自从区块链(blockchain)这个词被从比特币中抽象出来之后,整个业内就弥漫着一种奇特的意识形态叙事(ideological narrative)。这个叙事是这样的:比特币是一架又慢又旧的破马车,十几年了没有什么改进,什么炫酷的功能都没有。当然,从人类“无利不起早”的天然本性而言,给你讲这么一通破烂话的人,绝对不是吃饱了撑的无事生非,而通常都会在看到你对手里的大饼(BTC)起了半信半疑之心之后,趁机向你推销他正在兜售的拉风跑车项目。

北京时间11月14号下午13点15分27秒,随着区块高度709632的区块被挖出,比特币自2017年隔离见证升级之后最重要的升级之一,Taproot升级,宣告成功激活(今年6月份就已经获得超90%矿工投票lock-in了,本次激活属于明牌)。

该区块中包含了chainside联合创始人Federico Tenga的一笔V1_P2TR交易。在该笔交易中,Federico在OP_RETURNDATA中附加了一句话:gm taproot 。据信,这是 历史 上第一笔Taproot交易。为了抢到这个名次,Federico支付了2510 sat/vB的矿工费(手续费),这大概是正常矿工费(不到10 sat/vB)的5百多倍。[1]

Taproot升级为我们带来了区块扩容、更好的隐私性以及增强的扩展性等诸多好处。这些好处主要是由于两项技术的引入而带来的。其一就是Schnorr签名,而另一个就是MAST(默克尔化的抽象语法树)。

Schnorr签名能够压缩数字签名的尺寸。单签名比ECDSA节省约12%的尺寸,也就可以节省转账手续费。以及,它能够把多签名压缩成一个签名,这可以极大压缩多签地址的尺寸,并保护多签参与者的隐私。据说早在2012年Mike Hearn就在bitcointalk论坛提出过类似想法。通过压缩签名尺寸,相当于扩大了区块容量,容纳更多交易量。

MAST则可以大大改善P2SH交易的交易尺寸、隐私性和灵活性。最早的BIP-114提案是由Johnson Lau于2016年提出的。早前的P2SH交易可以允许支付时不揭示script(比特币脚本代码)。但是,当花费UTXO(未花费的交易输出)时,便需要提供script且记录到链上,从而占据区块链的容量。如果script比较复杂,则会占据较多的空间。MAST的引入使得我们可以把包含很多条件的复杂脚本组织成默克尔树。在花费UTXO时,也只需要揭示默克尔证明和涉及的script,而不需要揭示整颗树。这就节省了区块容量,改善了脚本的隐私性。同时,由于打开了script尺寸的限制,这就为比特币的可编程性引入了更大的扩展性和灵活性。

应该说,上面几段话对一些只在中心化交易所炒炒币,甚至连私钥都不懂的朋友来说无异于天书。别说Taproot了,便是4年前的segwit(隔离见证),对很多所谓圈内的人来说都不知何物。这没有什么可耻的。我头一次看这些新技术、新名词也是脑袋爆炸。多学习,多研究,多琢磨琢磨,也就搞明白了。

相比于 科技 的进步,我们掌握知识的能力进化的实在是太慢了。时至今日,很多人还搞不清楚比特币究竟是存储在自己手机上的钱包里,还是在比特币网络上。自己手机或者电脑上的钱包软件又是起什么作用的。私钥是什么,助记词是什么,所谓的HD钱包又是什么。1开头的地址,3开头的地址,5开头的地址,bc1开头的地址都有啥分别。怎么把大饼从交易所提出来,放到所谓链上。怎么自己掌控自己的比特币。怎么签名转账比特币。怎么使用隔离见证地址。以及现在,如何构建Taproot交易呢?

有人于是说,那就不要让用户自己掌握私钥,远离这些技术细节好了。回到托管式的环境,回到互联网中心化的用户体验。这样一种用户体验的改善,就像中心化交易所一样,是以牺牲用户自主掌握资产为代价的。这直接抛弃了去中心化以来全部的价值观。这又是一种进化,还是一种退化呢?

如果只是为了发明一个噱头,让投机者去炒、去赌,那就尽可以不考虑这些。那就不仅不应该限制OP_RETURN的尺寸,甚至应该扩充script使之支持图灵完备的编程。这样就可以在比特币上发行各种空气币、土狗币,再搞出来各种为炒而生的应用出来,所谓繁荣的生态。但是比特币一路走来,似乎是走了相反的道路。不仅从一开始就极大限制了script的功能,而且主动缩短了OP_RETURN的数据尺寸,限制了在比特币链上玩各种花活儿的可能性。

比特币是审慎的。它清楚自己有更大的使命。Taproot的激活,可能会有利于二层的发展。但是,并不会给一层带来自限性的问题。相反的,它会因为压缩了数据尺寸,而扩大了一层的容量。

比特币是富有耐心的。它肩负着普及去中心化数字货币(而不是在中心化平台上进行投机)的 历史 任务。所以它必须耐心地等待,等待每一个人跟上技术发展的脚步。

写到这里,本文关于区块链op和区块链opensea是什么意思的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。

标签: #区块链op

  • 评论列表

留言评论