简介
Tinyram是一个简单的RISC随机存取机器,具有字节寻址的random-accessmemory和inputtapes。TinyRAM有两个变体:一个遵循哈佛架构,一个遵循冯诺依曼架构(本文我们主要讨论冯诺依曼架构)。
简明计算完整性和隐私研究项目构建了证明TinyRAM程序正确执行的机制,而TinyRAM的设计是为了在这种情况下提高效率。它在“拥有足够表达能力”和“足够简约”这两个对立面之间取得平衡:
?当从高级编程语言编译时,有足够的表达能力来支持简短高效的汇编代码。
?小指令集,指令通过运算电路简单验证,利用SCIPR的算法和密码机制实现高效验证。
本文对于tinyram不再进行重复介绍,会对上一篇文章进行补充,然后重点是指令介绍和电路约束介绍。tinyram基础介绍可以参考我们团队上一篇文章:深入理解TinyRam
Tinyram指令集
Tinyram总共有29个指令,每条指令都由一个操作码和最多三个操作数组成。一个操作数可以是一个寄存器的名称。除非特别说明,否则指令不会单独修改flag。每条指令默认将pc增加i(i%2^W),对于vnTinyram来说i=2W/8。
一般来说,第一个操作数是指令计算的目标寄存器,其他的操作数指定指令需要的参数,最后,所有指令都需要机器的一个周期来执行。
位操作
整数操作
这些是各种无符号和有符号的整数操作。在每种情况下,如果发生算术溢出或错误,flag被设置为1,否则被设置为0。
shift操作
??shl?指令?shlrirjA?将左移位ubit得到的W位string存储在ri寄存器中。移位后的空白位置被填充为0。此外flag被设置为的最高有效位。
??shr?指令?shrrirjA?将右移位ubit得到的W位string存储在ri寄存器中。移位后的空白位置被填充为0。此外flag被设置为的最低有效位。
比较操作
比较操作中的指令每一个都不会修改任何寄存器;比较的结果存储在flag中。
律师John Deaton:XRP诉讼的简易判决不会被推翻:金色财经报道,在针对美国证券交易委员会 (SEC) 的 Ripple 诉讼中,代表超过 75,000 名 XRP 代币持有者的律师John Deaton重申, 法官Torres的简易判决不会被推翻,他认为。没有证据支持Howey测试的第三点,该测试指出“一个人将资金投资于一家普通企业,并被引导期望利润”。他补充说,美国证券交易委员会在满足共同企业部分方面仍将面临障碍。[2023/8/10 16:16:25]
move操作
??mov?指令?movriA?将存储到ri寄存器中。
??cmov?指令?cmovriA?如果flag=1,将存储到ri寄存器中。否则ri寄存器的值不会改变。
Jump操作
这些jump和条件jump指令都不会修改寄存器和?flag?但是会修改?pc。
??jmp?指令?jmpA?将存储到pc中。
??cjmp?指令?cjmpA?在?flag?=1的条件下将存储到pc中,否则pc自增1。
??cnjmp?指令?cnjmpA?在?flag?=0的条件下将存储到pc中,否则pc自增1。
Memory操作
这些是简单的memoryload和store操作,其中memory的地址由立即数或寄存器的内容确定。这些是tinyram中唯一的寻址方式。。
输入操作
该指令是唯一一个访问两个tapes中的任意一个的指令。第0个tape用于primary输入,第1个tape用户auxiliary输入。
输出操作
该指令表示程序已经完成了计算,因此不能再允许其他操作。
指令集约束
Tinyram采用R1CS约束形式进行电路约束,具体形式如下:
Mina发布新路线图:涵盖ZK可编程性、结算层性能等五个阶段:金色财经报道,轻量级区块链 Mina 发布 Mina Public Roadmap,该路线图分为 5 个阶段,分别为信任最小化、ZK 可编程性(ZK-Programmability)、结算层性能、递归 Rollups(Recursive Rollups)和 DAO 化之路(Road to DAOification)。其中,信任最小化将使协议免受来自中心化的攻击和偏见的影响,并将去中心化数据存储添加至 Mina 的功能集。
ZK 可编程性将通过可扩展验证和零知识隐私在 Mina 上构建更好的 ZK 可编程层;结算层性能将优化 Mina 的延时、最终确定性和吞吐量;通过递归 ZKP 将实现链与链之间的去信任桥接。[2023/4/7 13:50:03]
一个R1CS约束,可以有a,b,c三个linear_combination表示,一个R1CS系统中的所有变量的赋值,可以分为两个部分:primaryinput和auxilaryinput。Primary就是我们经常说的“statement”。auxiliary就是“witness”。
一个R1CS约束系统包含多个R1CS约束。每个约束的向量长度是固定的。
Tinyram在libsnark的代码实现中大量使用了一些定制gadgtes来表述vm的约束以及opcode执行和memory的约束。具体代码在gadgetslib1/gadgets/cpu_checkers/tinyram文件夹下。
位操作约束
??and?约束公式:
and的R1CS约束将参数1和参数2以及计算结果逐bit位进行乘法计算验证,约束步骤如下:
1.计算过程约束,代码如下:
2.结果编码约束
3.计算结果非全0约束
4.flag约束
安全团队:Defrost Finance被攻击事件简析:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,Defrost Finance预言机被恶意修改,并且添加了假的抵押token清算当前用户,损失超1300万美元。攻击者通过setOracleAddress函数修改了预言机的地址,随后使用joinAndMint函数铸造了100,000,000个H20代币给0x6f31地址,最后调用liquidate函数通过虚假的价格预言机获取了大量的USDT。后续攻击者通过跨链的方式将被盗资金转移到了以太坊的0x4e22上,目前有490万美元的DAI在0x4e22地址上,有500万美元的DAI在0xfe71地址上,剩余300万美元的ETH被转移到了0x3517地址上。[2022/12/25 22:06:35]
??or?约束公式:
具体约束步骤如下:
1.计算过程约束,代码如下:
2.结果编码约束
3.计算结果非全0约束
4.flag约束
??xor?约束公式:
具体约束步骤如下:
1.计算过程约束,代码如下:
步骤2,3,4同上
?not?约束公式:
具体约束步骤如下:
南博会首款数字藏品将于明天开奖:11月21日消息,南博会首款数字藏品“第6届中国—南亚博览会纪念章”将开奖。11月21日18时前,公众可通过支付宝扫码,领取免费申领名额。
“第6届中国—南亚博览会纪念章”基于南博会logo创作开发,是依托蚂蚁区块链技术发行的南博会虚拟文化艺术纪念品,由云南省商务研究院负责发行。作为南博会线上数字科技文化传播的新载体,纪念章限量发行2000份,通过免费申领的方式发行。公众上支付宝搜索并进入“南博会数字藏品”小程序,点击“立即参与抽奖”按钮,输入手机号并确认,就能参与抽奖活动,有机会免费获得纪念章。[2022/11/21 22:11:18]
步骤2,3,4同上
整数操作约束
?add:?约束公式:
具体约束步骤如下:
1.计算过程约束,代码如下:
2.解码结果约束和boolean约束
3.编码结果约束
?sub:?约束公式:sub约束比add稍微复杂一些,采用了一个中间变量表示a-b的结果,同时为了保证结果计算表示为正整数和符号的形式,给结果加上了2^w。具体约束步骤如下:
1.计算过程约束
2.解码结果约束和boolean约束
3.符号位约束
?mull?、umulh、smulh?约束公式:
mull相关的约束都涉及以下几个步骤
Trackgood支持追踪新西兰奢侈配饰品牌Duffle&Co新产品:6月9日消息,区块链供应链透明度平台Trackgood宣布支持追踪新西兰奢侈品配饰品牌Duffle&Co的四款新产品,分别是Sienna单层斜挎包、Winona钱包、Sienna三层斜挎包、Weekender旅行包。
据悉,Duffle&Co的印度、尼泊尔和印尼工匠使用传统工艺。每件商品都有制作者的签名,每个购买的商品都种植五棵红树林以抵消碳消耗。(Bravenewcoi)[2022/6/9 4:13:13]
1.计算乘法约束
2.计算结果编码约束
3.计算结果flag约束
?udiv?、umod?约束公式:
B为除数,q商,r为余数。余数与需要满足不能超过除数的条件。具体约束代码如下:
shift操作约束
??shl、shr?约束公式
比较操作
比较操作中的指令每一个都不会修改任何寄存器;比较的结果存储在flag中。比较指令包含cmpe、?cmpa?、cmpae、cmpg、cmpge?。比较指令可以分为两类,分别为有符号数的比较和无符号数比较,两者约束过程核心都利用了libsnark中实现的comparison_gadget。
其他剩余过程跟有符号数比较约束相同
move操作约束
??mov?约束公式:
mov的约束比较简单,只需要确保将存储到ri寄存器中,由于mov操作没有修改flag,所以约束需要确保flag的值没有产生变化。约束代码如下:
??cmov?约束公式:
cmov的约束条件比mov复杂一些,主要mov的行为跟flag值的变化有关系,同时cmov不会修改flag,所以约束需要确保flag的值没有变化,cmov的代码如下:
Jump操作约束
这些jump和条件jump指令都不会修改寄存器和?flag?但是会修改?pc。
??jmp
Jmp操作约束pc值与指令执行结果一致,具体约束代码如下:
??cjmp
cjmp根据flag条件进行跳转,flag=1进行跳转,否则pc自增1
约束公式如下:
约束代码如下:
??cnjmp
cnjmp根据flag条件进行跳转,flag=0进行跳转,否则pc自增1
约束公式如下:
约束代码如下:
Memory操作约束
这些是简单的memoryload和store操作,其中memory的地址由立即数或寄存器的内容确定。这些是tinyram中唯一的寻址方式。。
??store.b?和?store.w
对于store.w取整个arg1val的值,对于store.b操作码只会取arg1val的必要部分,约束代码如下:
??load.b?和?load.w
这两个指令我们要求从内存中加载的内容被存储在instruction_results中,约束代码如下:
输入操作约束
??read
read操作跟tape有关,具体的约束规则是:
1.上一个tape中的内容被读完,没有内容可读,不会读取下一个tape。
2.上一个tape中的内容被读完,没有内容可读,flag被设置为1
3.如果当前执行的指令是read,那么read读取到的内容和tape输入内容一致
4.从tape1以外的地方读取内容,flag被设置为1
5.result为不为0,意味着flag为0
约束代码:
输出操作约束
该指令表示程序已经完成了计算,因此不能再允许其他操作
??answer
当程序的输出值被接受,has_accepted会被设置为1,程序返回值能够被正常接受意味着当前的指令为answner以及arg2value为0。
约束代码如下:
其他
当然除了上述提到的一些指令相关的约束外,tinyram还有一些pc一致性、参数编解码、内存检查等各种约束。这些约束通过R1CS系统组合起来构成一个完成的tinyram约束系统。所以这也是R1CS形式的tinyram生成约束数量较多的根本原因。
这里引用一个tinyram介绍ppt的图片,展示一个ERC20transfer用tinyram生成证明需要的时间消耗。
从上图的例子可以得出结论:使用vnTinyram+zk-SNARKs验证所有EVM操作是不可能的,只适合验证少量的指令的计算验证,可以使用vnTinyram验证EVM的部分计算类型的opcode。
参考
tinyram介绍ppt:
https://docs.google.com/presentation/d/1lbyLmXhCry61fxWm8LLxPKhCYV67RcZaK3WL20Hb-t8/edit#slide=id.g5b38da04a0_0_21
关于我们
Sin7y成立于2021年,由顶尖的区块链开发者和密码学工程师组成。我们既是项目孵化器也是区块链技术研究团队,探索EVM、Layer2、跨链、隐私计算、自主支付解决方案等最重要和最前沿的技术。
微信公众号:Sin7y
GitHub:Sin7y
Twitter:@Sin7y_Labs
Medium:Sin7y
Mirror:Sin7y
HackMD:Sin7y
HackerNoon:Sin7y
Email:contact@sin7y.org
来源:金色财经
01核心观点和序言核心观点由于区块链设计皆有取舍,根据分工原理,多链生态必将长存。具体来说,明显的分工有七种,分别为安全链、性能链、功能链、比特币链、联盟链、资本链和应用链.
1900/1/1 0:00:00简单来说8月,顶级交易所占现货总量的94.3%,为2017年11月以来的最高市场份额。币安以55.1%的总交易量市场份额保持市场第一.
1900/1/1 0:00:009月22号凌晨解读按照提示操作的,18700和以太1315做多。在转点前离场,是幸运的。靴子终于落地,确认75基点.
1900/1/1 0:00:00操作建议:1325-1308附近空单进场,目标点位看1290-1270附近,破位继续持有,不破低位多单进场,目标点位看1330附近,已到目标点位附近,恭喜跟单操作的实仓客户多空完美获利70个点.
1900/1/1 0:00:00DoKwon刚刚将价值25万美元的USDC转移到一个奇怪的钱包里,几天前,韩国法院对他发出了逮捕令.
1900/1/1 0:00:00老美凌晨两点宣布加息75个基点基本符合市场预期,不过却由此引发币圈大幅波动插针,大饼先上19959诱多,再暴力下杀破18232前低到18125。当下很多人的情绪都还处于亢奋且恐慌之中.
1900/1/1 0:00:00