火星链 火星链
Ctrl+D收藏火星链
首页 > USDC > 正文

NBS:为以太坊引入 KZG 承诺:工程师视角(上)

作者:

时间:1900/1/1 0:00:00

(译者注:本文所介绍的技术在密码学社区里一般称为 “KZG10 承诺”,得名于论文三位作者的姓氏首字母。但在介绍到以太坊生态中时,被简化成了 “Kate 承诺”,甚至连核心开发者也是这么称呼的。这是对另外两位作者的不尊重,不应该继续下去。在本译文中,凡原作者使用 “Kate commitment” 的地方,都一律译为 “KZG10 承诺”。)

免责声明 :本文仅仅是汇集、链接了许多已经公开的成果,对应的荣誉(包括本文所链接的图片)应归属于相应的 作者/开发者。

P.S. :特别感谢 Ethereum R & D discord 频道(尤为感谢 /img/202281261702/0.jpg" />

而这里的 “证明” 就是一个叶子的 默克尔分支(merkle branch) 以及(这个分支在每一层上的) 兄弟哈希值(sibling hashes),凭借这些数据,可以逐级向上哈希,并通过最终的哈希值是否与根节点一致来判断该叶子是否与这棵默克尔树一致(存在于这棵默克尔树上)。

监测:FTX攻击者地址将超340万枚USDT以及近400万枚USDC交易为以太坊:11月19日消息,PeckShield监测数据显示,0x2cfe开头的FTX攻击者地址将3435470.91 USDT及3999600枚USDC通过Cow Protocol交易为总计6148.68枚以太坊,并向0x59ab开头的FTX攻击者地址转入9263.43枚以太坊。目前0x59ab开头地址共持有约250735.1枚以太坊,为第27大以太坊持币地址。[2022/11/19 22:06:55]

可看看这里的介绍 : )。

注-2:数据映射与一个多项式的对应关系

indexes => values 这样的数据映射可以表示为一个多项式 f(x),并且 f(index)=value(由拉格朗日插值法可知满足这个条件的多项式必定存在)。“ f(index)=value ”通常被称为 求值形式,而 “ f(x)=a0+ a1.x + a2.x^2... ” 则是其 系数形式。直观来说,我们其实是根据映射中所有的 (index,value) 点,拟合出了一个多项式。

为了简便计算,并确保多项式与数据映射的一一匹配,我们不使用索引值来作为 f(x) 的 x,用的是 w^index,也就是 f(w^index)=value,其中 w 是 d 次单位根(即 w^d = 1 且 w 是一个复数),而 d 是该多项式的次数(也是我们能够包含的索引值的个数上限)。因此,我们可以使用快速傅立叶变换来实现高效的多项式计算,比如乘法和除法,在求值形式下其计算复杂度会是 O(d),而且可以在 O(d*log(d)) 的复杂度内转化回系数形式。所以保持 d 数值较小还是很有好处的。

数据:88%的执行层客户端已为以太坊合并做好准备:9月15日消息,EtherNodes披露的最新数据显示,当前88%的执行层客户端已为以太坊PoS合并做好准备,仍有12%的执行层客户端尚未升级到支持合并的最新版本。四个执行层客户端中:Go-Ethereum(Geth)已做好合并准备的客户端占比为87%、Erigon为92%、Besu 99%、Nethermind为91% 。[2022/9/15 6:57:53]

注-2.1:以太坊的状态是一个从地址到账户状态(addresses => (version,balance,nonce,codeHash,storageRoot))的映射。

以太坊当前使用默克尔树(更具体一些是 “帕特里夏默克尔树”)作为 EVM 数据(EVM 状态、区块事务及事务收据,也许还有最近的合约代码)的承诺。此种承诺方式可以:

逐个区块地 插入/更新 数据,以增量的方式产生新的根哈希(即承诺)

验证者可以逐个区块(甚至逐笔事务)地校验和证明

前缀树结构在这里提供了这种逐块更新的特性。

给定一个 d 叉的、有 N 个叶子的前缀树,任意更改一个叶子节点,都需要更新 O(log-d(N)) 个节点(也就是该叶子与根节点相连路径上的节点数量)以计算反映新状态的新根值;而这需要额外的 (d-1)*O(log-d(N)) 个 兄弟节点哈希值/承诺 来用作时间和空间(假设要服务于轻节点)的见证数据(witness)。一个区块可视为一个需要更改 m 个随机叶子的批量更新,且 m<<N。因为预计只有一小部分的节点可以共享 witness 和计算,所以,每次更新的 Order(复杂度)不会有太大改变。

V神:多维度定价可以最优化Gas成本并为以太坊增加另一层DoS保护:1月6日,以太坊创始人Vitalik Buterin(V神)发起提案探讨“对交易手续费进行多维度定价”的可能性。他表示,在EVM中,对多种资源都有着不同的限制,如占用EVM的计算时长、区块数据、见证数据、状态大小。当前的资源定价模式是简单地将这种资源抽象为Gas,无法实现Gas成本的最优化。此前社区对多维度定价的主要反对意见是,这会提高打包区块的门槛,导致矿工的中心化问题。V神认为,在MEV以及EIP1559之后,这些反对意见的忧虑已经得到很大程度的减缓,而且多维度定价这种模式,除了最优化Gas成本,也将为以太坊增加另一层DoS保护。[2022/1/6 8:29:42]

在下列情况下,问题还会变得更加严重(因为见证数据的规模):

部分采用快速同步的协议,比如 beam sync(光子同步),会下载并快速验证区块头来追上最新的主链顶端并参与网络的共识,注意,它不会先行构建好完整的状态再参与共识,而是(在共识中)通过获取 错过的/未加载的 状态的见证数据,来逐步构建出完整的状态

为 轻节点 服务的时候,他们只关心自己,只想获得区块链状态的特定部分

网络走向完全无状态时,所有的事务和合约操作,都要附带相关的见证数据,来证明数据输入和输出的正确性(译者注:粗体为译者所加)

在验证者会被混洗到不同分片的区块链分片模型中,要让验证者每到一个分片就构建完整状态是不现实的

代码默克尔化,访问代码时需要附带这些代码块的见证数据

在状态保质期协议中,访问过期的账户需要重新附带状态见证数据,以便重建该账户的状态

V神与经济研究员合作尝试为以太坊用户提供一种新的投票方式:据coindesk,随着社区对一些建议的各种利弊进行辩论,V神已经开始与经济研究员Glen Weyl博士合作,尝试为以太坊用户提供一种新的投票方式。在5月21日宣布合作的博客文章中,V神描述了来自Weyl的新书《激进市场》的观点可以帮助解决这些治理挑战,并协调解决有争议的问题。曾在普林斯顿大学获得经济学博士学位、现在是微软研究员的Weyl在接受CoinDesk采访时解释说,二次投票的目的是让选民关注他们热衷的问题,并接受教育。用户可以购买额外的选票,在某些问题上有更大的发言权,而不是在参与者之间平均分配选票。[2018/5/23]

(译者注:需要解释的是,在当前的以太坊网络中,事务和区块不会附带上文所述的见证数据。即,网络所传播的见证数据规模与 事务/区块 的规模无恒定的关系。前两种情形恰好是在当前以太坊协议下为数不多的、需要传播见证数据的情形。我们关心状态数据的规模,完全是出于一种协议改进方向 —— “无状态性” 的需要。后面四种情形都跟无状态性有关,当然都比理论上要传播的数量更多。但是,以上述的理论计算来作为基准点去比较,本身是不合适的 —— 连代码默克尔化这种在无状态下节省状态数据的方案,也会被归为让情况更严重的方案。)

在无状态以太坊项目的一个实验中,出现了 1 MB 的区块证据(其中大部分都是默克尔证据),在发生攻击的时候还会膨胀好几倍。

其中一种解决办法是转为使用 “二进制默克尔树”,也就是把 d 降下来,这样虽然树的深度(高度)会增加,但仍然是 O(log(N)) 的规模。

对于要放在区块头内承诺数据的承诺方案来说,以下特点是理想属性:

证据的数据量较小,可以塞进区块头里,且仍具有很强的安全保证

易于证明某个承诺是使用分组化数据(chunkified data)的一个子集生成出来的

足够小,最好证据的数据量是恒定的

为了跟踪数据,承诺应当易于以增量的形式变更

基于KZG10 承诺的方案就是大家一番搜寻的结果。

译者注:可以看到,作者有三个 

KZG10 承诺可以视为另一种哈希方案,只不过它哈希的不是 “字节”(数据),而是多项式。

实际上,它就是 计算(evaluation) 多项式 f(x) 在秘密的定点 s 上的值,只不过 它们都是表示在一条椭圆曲线上的,也即 [f(s)]=f([s])。这需要一个受信任的启动设置(跟 zcash 区块链的创世活动一样),来生成[s]、[s^2]、… [s^d](以便在多项式需要 x^i 的地方插入),而 d 就是多项式的最大阶数。

这里的 [t] 表示点 t 处的椭圆曲线值,也就是 t,是椭圆曲线加法群的生成点()相加 t 次(等同于对 Fp 求模,modulo Fp )。椭圆曲线上的所有计算都是对 Fp 求模,Fp 给曲线施加了一定的范围(译者注:Fp 是一个由 p 个元素组成的有限域,限制了该椭圆曲线值的范围)。

注 3.0:在 indexes=>values 的映射中,所有的 值 都要表示为一条椭圆曲线上的元素,即 [value],以便计算承诺(后文有详述)。这就使得 value 的大小有了限制(为了要成为 modulo Fp 的值)。在 BLS 曲线上,大概在 31~32 字节之间。为了简便,value 的大小就限制在 31 字节,任意更大的 值 都要分块化,并用其索引值来恰当地表示(或者截断)。

注 3.1:[t] 可以被视为 t 的哈希值,因为从 [t] 找回 t 是个离散对数问题(discrete log problem),对于安全的曲线来说,是很难做到的。

注 3.2:s 是一个秘密的数值,永远不应泄漏给 任何人/所有人,但椭圆曲线点 [s], [s^2]…[s^d] 及其在另一条椭圆曲线上的值 [s]' (其生成点为 ' 且只需知道 [s]' )则应生成并公开出来,让所有人知道。这就是启动设置要做的事。

这些 系统参数 定义了整个系统的安全性,因为 s 暴露会使得攻击者可以构建任意内容的 证据。因此,一个有 N 个参与者共同参与的启动设置仪式中,他们要通过协议把本地的 s 结合起来,这样只要有 1 个参与者是诚实的、在参与之后就销毁掉了自己提供的 s,这个系统就会是安全的。即,信任模型是 1/N 模型,N 越高,风险就越低。

注 3-3:[] 是一个线性的操作,即[x]+[y]=[x+y],而且 a[x]=[ax]。

如果上所述,我们将数据映射(索引值 => 数值)表示为 f(w^index)=value,即一个多项式的求值形式,也可说,我们用这些 (w^index,value) 点拟合出了一条曲线(多项式)。

所以,一个多项式 f(x) 的 KZG10 承诺c(f) 是一个椭圆曲线点 f([s]),这个点可以靠在 f(x) 的展开式中插入 [s],[s^2] … 计算得出。

注 3-4:f(s) 是无法计算的,因为 s 是个秘密值。但是 C(f)=[f(s)]=f([s]) 是可以计算的。

注 3-5:f(x)的承诺 C(f)=[f(s)] 也是一个线性的运算符,即,C(f+g)=C(f)+C(g)。

Rollup/聚合器 可以使用这一属性来更新承诺。在求值形式下,更新一个求值点将导致 f(x) 完全改变,但因为有这个属性,其承诺 c(f) 仍然是易于更新的。

(未完)

标签:NBSBSP以太坊ALUnbs币前景BSP币以太坊和瑞波币在中国合法吗VALUE价格

USDC热门资讯
LAYER:所有货币都是“代币”吗?

以区块链技术应用中,出现所谓的Token,被译为“令牌”,更被称为“代币”。于是,有人主张,“代币”既然替代货币,应不属“货币”,宜不受货币监管;于监管者立场而言,代币所代者——货币,应予监管.

1900/1/1 0:00:00
COIN:中币行情看点:PayMeInBitcoin在推特热搜榜排名第一

热点摘要:1.萨尔瓦多总统:比特币将于9月7日成为法定货币;2.CNBC主持人:巴拉圭宣布旨在使比特币成为法币的法案;3.比特币矿工迎来重大利好.

1900/1/1 0:00:00
比特币:金色观察 | 迈阿密的比特币野心

迈阿密一个以海滩闻名的旅游城市正在迅速的转变为一个新的加密商业科技中心。迈阿密市长弗朗西斯·苏亚雷斯(Francis Suarez)发起的比特币运动掀起了新一波潮流,表明他极力支持将迈阿密转变为.

1900/1/1 0:00:00
区块链:金色早报 | 美联储:稳定币未来可能引发一场危机

头条▌美联储罗森格伦:稳定币未来可能引发一场危机美联储罗森格伦表示,稳定币是未来金融稳定风险的潜在来源。许多稳定币其实并不稳定。一些稳定币存在一些与主要货币市场基金相同的问题.

1900/1/1 0:00:00
MCAFEE:被囚禁的约翰·迈克菲:“我一无所有了 我也不后悔”

约翰·迈克菲在西班牙的引渡听证会上声称,针对他的逃税指控是出于动机。杀软件先驱约翰·迈克菲告诉他的100万推特粉丝,他的全部加密货币财富已经消失,尽管他承认,不是所有人都会相信他说的是真的.

1900/1/1 0:00:00
ING:觅新 | SOMESING:融合区块链技术的社交音乐服务

《觅新》是金色财经推出的一档区块链项目观察类项目,覆盖行业各领域项目发展情况,具体设计到项目概况、技术进展、募资情况等,力图为您呈现热门新潮的项目合辑.

1900/1/1 0:00:00