宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 聚币 > 正文

深入理解 TinyRAM

作者:

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

TinyRAM是由大名鼎鼎的BCTGTV五人组(EliBen-Sasson,AlessandroChiesa,DanielGenkin,EranTromer,MadarsVirza)和SCIPR实验室提出的一种随机访问器架构,旨在成为表达非确定性计算证明性的便捷工具。具体来说,TinyRAM是一种精简指令集计算机(RISC),具有字节级可寻址的随机存取存储器。它在“拥有足够表达能力”和“足够简约”这两个对立面之间取得平衡:

?当从高级编程语言编译时,有足够的表达能力来支持简短高效的汇编代码,以及

?小指令集,指令通过运算电路简单验证,利用SCIPR的算法和密码机制实现高效验证。

架构

TinyRAM由两个整数参数化:字长W,需要是2的幂且可以被8整除(这点和现代计算机一样,如32,64),以及寄存器的数量K。一般用TinyRAM(W,K)来表示,机器的状态包括以下内容:

1.程序计数器pc(programcounter),由W个bit组成。

2.K个通用寄存器,以r0,r1,...,r(K-1)表示,每个寄存器都是W个bit。

3.条件标志flag,由一个bit组成。

4.内存,2^W个字节的线性数组,使用小端约定排列字节。

5.2个磁带(tape),每个包含一串Wbit的字。每个磁带都是单向只读的。其中,一个磁带是用于公开输入x,另一个用于私有输入w。其实就是TinyRAM的输入载体。

Reddit Collectible Avatar持有地址总量突破400万:金色财经报道,据Dune Analytics数据显示,Reddit于Polygon网络发行的NFT系列 Reddit Collectible Avatar持有地址总量突破400万,截至目前达到4,020,437,单一NFT持有地址为3,746,459个,Reddit Collectible Avatar总量4,741,353个,当前交易总额达11,742,104美元。[2022/12/8 21:31:35]

TinyRAM机的输入是2个磁带以及内存,输出是answer指令,该指令有一个参数A,代表返回值,A=0表示接受。也可以使用该指令终止执行程序。

TinyRAM根据执行指令的位置不同有两种变体:一种变体遵循哈佛架构,另一种遵循冯诺依曼架构。前一种架构的数据和程序存放在不同的地址空间中,且程序是只读的;后一种架构数据和程序存放在同一个可读写的地址空间中。具体用图表的方式来表示这两者的区别:

SBF:Mango黑客事件表明预言机规范的重要性:金色财经报道,FTX创始人SBF在社交媒体分析了Mango Markets黑客时间的教训,他表示:“真正的问题取决于预言机的规范是什么,预言机准确地报告了 MNGO 的当前价格,只是'当前价格'与'公平价格'并不接近。一些头寸,如 MNGO,规模庞大且流动性不足,以至于风险引擎(提供市场风险测量和投资分析的软件)迫使头寸被完全抵押。” 完全抵押意味着在整个贷款过程中,借款人提供抵押品。在这种情况下,抵押品是加密货币。Mango Markets 要求初始抵押品比率为 120%,维持抵押品比率为 110%。如果用户的抵押率低于 110%,账户将被清算,而Mango Market 攻击者利用漏洞来模拟拥有足够的抵押品。

SBF补充称:“如果一个预言机报告‘MNGO:0.40 美元’,是不是错了?如果它只是承诺告诉你 MNGO 目前的交易价格,而且,在短时间内,在某些交易所,MNGO 实际上的交易价格为 0.40 美元。问题在于使用原始预言机价格。预言机有时能告诉你一切,有时也无法代表任何信息,它们只是反映市场的历史和现状,风险引擎的工作就是利用这些信息,并决定哪些头寸是安全的,有时风险引擎不能只是反刍预言机所说的话,而是要自己去认真分析。”[2022/10/13 10:33:16]

以下两个架构的图示:

Tether前审计公司因会计问题被SEC罚款150万美元:金色财经报道,根据周一发布的一项命令,美国SEC上周对稳定币发行人Tether的前审计公司Friedman LLP提起诉讼并达成和解,发现该公司“一系列违反联邦证券法”,并存在大量“不正当职业行为”。SEC周五发布的命令详细描述了Friedman LLP在2015年至2020年期间普遍存在的草率会计做法,包括该公司未能“应对欺诈风险”、“行使应有的专业谨慎和专业怀疑精神”等。

在与SEC达成的和解协议中,Friedman LLP同意对员工进行适当的审计程序培训,并将支付100万美元的民事罚款以及564,138美元的披露和判决前利息。(coindesk)[2022/9/27 22:32:07]

在开始更详细的TinyRAM设计细节之前,我们以官方白皮书的例子说明,TinyRAM是如何做到既简洁又全面,能够满足非确定性的计算问题的。

意义

Alice拥有x,Bob拥有w。Alice想知道算法A(x,w)的计算结果的正确性,但是不想自己计算。这样的场景,在零知识证明系统中非常常见,有证明者和验证者,验证者想知道证明者提供的证据的正确性,但不必自己重新计算一次。TinyRAM架构就满足这样的场景,两个磁带可以传入私有输入w和公开输入x,证明计算和验证程序在其中执行。SCIPR实验室实现的libsnark库中,已实现了TinyRAM。具体参见:https://github.com/scipr-lab/libsnark.

加密货币交易所Bitso裁员80人:5月27日消息,拉丁美洲加密货币交易所Bitso周四解雇了80名员工。该公司在声明中提到,需要重新考虑员工在加密行业中更快发展所需的技能,这是裁员的原因。它没有提到筹集资金的任何困难。该公司在裁员前拥有700多名员工,在该地区拥有400万用户。(CoinDesk)[2022/5/27 3:44:54]

以CircuitGenerator为例,C程序经过编译器之后,编译成TinyRAM的程序,再经过CircuitGenerator之后,生成电路,最后得到zkSNARK电路。

指令

TinyRAM支持29个指令,每条指令都通过1个操作码和最多3个操作数指定。操作数可以是寄存器名称或者立即数。除非另有说明,否则每条指令都不会修改flag,且将pc增加i,对于哈佛架构来说,i=1,对于冯诺依曼架构来说,i=2W/8。通常,第一个操作数是指令执行计算的目标寄存器,其他操作指定指令的参数。最后,所有指令都需要机器的一个周期来执行。

成都链安:bDollar项目遭受价格操控攻击,目前攻击者获利2381BNB存放于攻击合约中:据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,bDollar项目遭受价格操控攻击。攻击者地址:0x9dadbd8c507c6acbf1c555ff270d8d6ea855178e

攻击交易eth:0x9b16b1b3bf587db1257c06bebd810b4ae364aab42510d0d2eb560c2565bbe7b4

攻击合约:0x6877f0d7815b0389396454c58b2118acd0abb79a

目前攻击者获利2381BNB,存放于攻击合约中。[2022/5/21 3:32:53]

指令包含几种类型,指令名称和intelx86汇编指令类似,可顾名思义。

●?位操作指令:

?and

?or

?xor

?not

●?整数操作指令:

?add

?sub

?mull

?umulh

?smulh

?udiv

?umod

●?shift操作指令:

?shl

?shr

●?比较操作指令

?cmpe

?cmpa

?cmpae

?cmpg

?cmpge

●?move操作指令

?mov

?cmov

●?jump操作指令

?jmp

?cjmp

?cnjmp

●?内存操作指令

?store.b

?load.b

?store.w

?load.w

●?输入操作指令:

?read

●?输出操作指令:

?answer

汇编语言

TinyRAM的程序是由TinyRAM汇编语言编写的,这个语言受Intelx86汇编语言语法启发。程序是包含多行TinyRAM汇编代码的文本文件。程序按照哈佛架构还是冯诺依曼架构的不同,第一行包含的字符串也不同:

??哈佛架构

“;TinyRAMV=2.000M=hvW=WK=K”

??冯诺依曼架构

“;TinyRAMV=2.000M=vnW=WK=K”

其中,W是十进制表示的字长,K是十进制表示的寄存器数量。程序文件中,其他每一行依次包含的内容需要满足:

1.可选的空格。

2.可选的label,用于定义为引用其后的第一条指令。

3.可选的指令,由指令助记符,以及后面的操作数。

4.可选的空格。

5.可选的以分号;开始的注释,到该行尾结束。

一个程序中,最多可以有2^W个指令。一个label只能定义一次,有点像高级语言中的变量。

示例代码(https://github.com/scipr-lab/libsnark/blob/master/tinyram_examples/answer0/answer0.s)

为了满足计算的需要,提高电路可满足性的效率,TinyRAM增加了前导语。如果一个TinyRAM的程序以前导语的方式启动,则说明该程序是个合适的程序。

上述的前导语:

??对于哈佛架构来说,I(i)=1*i,并且inc=1

??对于冯诺依曼架构来说,I(i)=2W/8*i,并且inc=W/8

前面的示例代码,也遵循这样的前导语写法。

两种架构的性能对比

TinyRAM的两种架构,其设计区别在前面的“架构”部分介绍了,此处对比两种架构的性能。

第一个图表展示两种架构产生的门数量。

l是指令数量,n是输入大小,T是执行步数。

可以看出,前者的门数量和指令数量呈线性增加。后者改善很大,指令越多,改善的越大。

第二个图表展示两种架构在不同字长的曲线下,生成Keygenerator/prover/verifier的时间及proof大小。

可以看出,在80bit时,冯诺依曼架构相较于哈佛架构有较大提升,在128bit时,也有少许提升。

由上述表格数据可以看出,冯诺依曼架构的效率更高,这也是为什么冯依诺曼架构TinyRAM是后来在哈佛架构TinyRAM的基础上提出的。

总结

我们讲了TinyRAM的架构,设计,汇编指令等,介绍了它的优势:可以用来便捷的进行非确定性计算。尤其在零知识证明系统中,有更多的发挥空间。最后介绍了两种TinyRAM架构的性能对比,在生成的门数量和时间以及proof大小上,冯诺依曼架构都更胜一筹。

引用

http://www.scipr-lab.org/doc/TinyRAM-spec-2.000.pdf

https://www.cs.tau.ac.il/~tromer/slides/csnark-usenix13rump.pdf

http://eprint.iacr.org/2014/59

关于我们

Sin7y成立于2021年,由顶尖的区块链开发者组成。我们既是项目孵化器也是区块链技术研究团队,探索EVM、Layer2、跨链、隐私计算、自主支付解决方案等最重要和最前沿的技术。

来源:金色财经

标签:RAMTINBITARKSHIBARAMENShib Generatingbitkeep靠谱吗UangMarket

聚币热门资讯
IOST进展双周报|2022.08.09–2022.08.22

Korbit公开钱包地址,持有6,884枚BTC、63,749枚ETH:11月16日消息,韩国加密交易所Korbit公开BTC、ETH、XRP钱包地址,之后也将提供其他代币地址,并且会每天更新持有量和客户存款量数据.

1900/1/1 0:00:00
狗狗链宣称由DOGE推出引热议 后续如何?

狗狗币(DOGE)最初可能只是被当作玩笑创造,不过随着狗狗链(Dogechain)的问世,这款迷因币或许能被融入更多的实用性功能.

1900/1/1 0:00:00
晚间必读 | 以太坊合并升级预计将发生在9月15日

1.金色前哨|以太坊合并升级预计将发生在9月15日金色财经报道,8月19日消息,推特用户Crypto-Gucci.eth发布推文称,在最新的以太坊核心开发者会议上.

1900/1/1 0:00:00
以太坊合并并不会降低GAS费

以太坊的“合并”更新不会降低gas费用。该团队正在修复即将到来的升级中出现的所有误解。Merge的PoS共识将具有卓越的区块链安全机制。以太坊社区将在其网络上发布一个名为“Merge”的更新.

1900/1/1 0:00:00
导演8.22日行情分析 熊途路漫漫 大饼短线被压制 小级别继续震荡 还差一笔1H的下跌

导演第783篇原创每日行情分析2022.08.23 一、市场情绪: 二、图表结构: 1、大饼: 大饼1H的结构: ?????大饼的1H的结构跟昨天的走势没有太多的区别,这笔还是在走1H的反弹.

1900/1/1 0:00:00
欧元债市 公债收益率上升 ECB执委讲话加剧通胀焦虑

欧元区公债收益率周四上涨,此前欧洲央行执委施纳贝尔(IsabelSchnabel)称,消费者价格在短期内仍可能加速上涨,从而加剧了通胀的焦虑。施纳贝尔表示,自7月加息以来,欧元区通胀前景未改善.

1900/1/1 0:00:00