5.6.2``Reach的RPC服务器
Reach的RPC服务器提供了一种基于JSON且支持使用HTTPS访问的RPC协议提供对编译的JavaScript后端的访问权限。该服务器允许使用任何编程语言编写前端)。Reach提供了针对JavaScript,Python及Go语言的客户端库文件。因此,你可以很容易的实现客户端库文件.。其中一个使用Reach的RPC服务器编写的样例前端)如下针对基于RPC前端的指导所示。
使用命令行
$ reach rpc-server
可以启动一个Reach的RPC服务器实例
—
其中Reach的RPC服务器支持如下的RPC方法:
/health如果返回true
则表明服务器正常运行。
/stdlib/$METHOD其中变量$METHOD$是JavaScript标准库的函数。
所有的/stdlib方法都是基于值同步的RPC方法),除生成或销毁账户)外,该方法能接受和产生与相应函数对应的参数和返回值,并能够将其编码为JSON对象。
这些方法反而接受并产生账户)的RPC句柄),它们是随机字符串,代表相应的账户)表示。例如,/stdlib/newTestAccount不会像newTestAccount
那样返回一个账户),而是返回一个账户)的RPC句柄)。
/forget/acc通过接收一个账户)的RPC句柄)并将其从Reach的RPC服务器内存处删除。
/acc/$METHOD,其中$METHOD$是帐户)表示JavaScript标准库的一个方法。
全部的 /acc 方法都是基于值同步的RPC方法),除接受一个额外的第一参数,即账户)外,它们接受并产生与对应函数相同的参数和返回值,且编码其为JSON对象。RPC句柄)由先前的RPC方法)调用返回;以及,一个接受后端. sh/ref-model.html#(tech._backend))(如/acc/attach(即acc.attach
)或/acc/deploy(即acc.deploy
))方法,但不会接受后端)参数,是由Reach RPC服务器隐式提供。
此外,这些产生合约)表示方案,替代了产生合约)的RPC句柄)。例如,/acc/deploy不会返回一个像 acc.deploy
那样的合约)表示,但会返回一个合约)的RPC句柄)。
/forget/ctc 接收一个合约)的RPC句柄)并将其从Reach的RPC服务器内存中移除。
/ctc/$METHOD 其中$METHOD是合约)表示JavaScript标准库的一个方法。
全部的/ctc方法都是基于值同步的RPC方法),除了接受一个额外的第一个参数,即合约)外,该方法能接受和产生与相应函数对应的参数和返回值,并能够将其编码为JSON对象。RPC句柄)由先前的RPC方法)调用返回
/backend/PARTICIPANT是一个通过JavaScript后端)编译的参与者)。
/backend方法全部是能够接受如下三种参数的交互式的RPC方法):
- ctcId — 一个合约)的RPC句柄),以将合约)传递至后端)
- values — 一个包含后端)的参与者互动界面)的非功能组件的对象。
- methods — 一个对象,其键对应于后端)的[参与者互动界面]的功能组件,但其值是
true
。
在特殊情况下,如果包含stdlib.hasRandom的值对应为true
,随后JavaScript的标准库对hasRandom
的实现将会提供至后端)。
随着后端)的执行,任何已执行方法的组件都可以按照Reach的RPC协议规范所描述的那样按照交互式RPC 回调)的方式进行执行。 其中,RPC客户端库应该暴露一个函数,该函数隐藏了值和方法对象的构造细节,并自动实现交互式RPC回调)处理程序。
/kont 在一个交互式RPC方法)的过程中处理继续交互式RPC) completion during an interactive RPC method)。该方案不会直接被前端)执行。
/stop 退出服务器。