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 。