5.6.2``Reach的RPC服务器

Reach的RPC服务器提供了一种基于JSON且支持使用HTTPS访问的RPC协议提供对编译的JavaScript后端的访问权限。该服务器允许使用任何编程语言编写前端)。Reach提供了针对JavaScriptPythonGo语言的客户端库文件。因此,你可以很容易的实现客户端库文件.。其中一个使用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句柄)。

全部的 /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句柄)。

全部的/ctc方法都是基于值同步的RPC方法),除了接受一个额外的第一个参数,即合约)外,该方法能接受和产生与相应函数对应的参数和返回值,并能够将其编码为JSON对象。RPC句柄)由先前的RPC方法)调用返回

/backend方法全部是能够接受如下三种参数的交互式的RPC方法):

在特殊情况下,如果包含stdlib.hasRandom的值对应为true,随后JavaScript的标准库hasRandom的实现将会提供至后端)。

随着后端)的执行,任何已执行方法的组件都可以按照Reach的RPC协议规范所描述的那样按照交互式RPC 回调)的方式进行执行。 其中,RPC客户端库应该暴露一个函数,该函数隐藏了值和方法对象的构造细节,并自动实现交互式RPC回调)处理程序。