5.4.4 本地步骤

Reach 的本地步骤存在于主体的 only 或是 each 语句中。它代表应用中由单个参与者执行的动作。

5.4.4.1 语句

任何对计算有效的语句都对本地步骤有效。

5.4.4.2 表达式

任何对计算有效的表达式都对本地步骤有效。但也允许一些额外表达式。


5.4.4.2.2 this

本地步骤中,this 代表执行该步骤的参与者。这在本地步骤each 表达式初始化时非常有用。

5.4.4.2.2 interact

interact.amount
interact.notify(handA, handB)
interact.chooseAmount(heap1, heap2)

互动表达式的格式为:interact.METHOD(EXPR_0,…,EXPR_n),其中:
METHOD是绑定在参与者交互接口中的函数类型标识符;
EXPR_0 到 EXPR_n 是通过与前端交互获得结果的表达式,前端接收n个表达式的计算结果并发送一个

互动表达式还可以写成 interact.KEY,其中 KEY 在参与者交互接口中与非函数类型绑定。

互动表达式只能存在于本地步骤中。


5.4.4.2.3 assume

assume( claim, [msg] )

这是一种假设,其中 claim 在前端诚实时会确定为 true。该表达式只能存在于本地步骤中。它接受一个可选的字节参数,该参数会被包含在所有报告的冲突中。

5.4.4.2.4 fail

fail()

该表达式等同于 assume(false),是一种便捷方式,只能存在于本地步骤中。


5.4.4.2.5 declassify

declassify( arg )

declassify 对给定参数进行原语解密


5.4.4.2.6 makeCommitment

makeCommitment( interact, x )

该表达式返回两个值 [commitment,salt],其中salt 是调用 interact.random() 的返回结果,而 commitment 是 salt 和 x 的摘要。该表达式用在本地步骤中,这之后共识步骤才可以调用 checkCommitment