正文开始 [md] 以太坊规定了节点必须实现web3_clientVersion 接口来向外部应用提供节点旳版本信息。接口协议的交互流程如下 这是一个典型的请求/应答模型,请求包和响应包都是标准的JSON格式。其中,jsonrpc字段用来 标识协议版本,id则用来帮助建立响应包与请求包的对应关系。 在请求包中,使用method字段来声明接口方法,例如web3_clientVersion,使用params 字段来声明接口方法的参数数组。 在响应包中,result字段中保存了命令执行的返回结果。 以太坊JSON RPC并没有规定传输层的实现,不过大部分节点都会实现HTTP和IPC的访问。因此 我们可以使用命令行工具curl来测试这个接口:
如果一切顺利的话,你应该看到这个结果:
如果你是一个追求完美的人,希望返回的结果看着舒服些,那么可以级联一个jq命令:
jq是一个命令行json解析工具,是curl的好伴侣。加上它之后,结果就更像给人看的了:
使用php获取节点版本信息 就像前一节看到的,我们只要在php代码中发送http请求包就可以了。 你可以使用任何一个你喜欢的http库例如curl、guzzle等, 甚至直接使用socket来调用以太坊的JSON RPC API。 例如,下面的代码使用guzzle库:
把上面的内容保存为raw-test.php,然后执行:
你应当就可以看到结果了:
使用现成的轮子 尽管可行,但我还是建议你尽量避免自己去封装这些rpc接口,毕竟 这个事已经做过好几次了,而且rpc接口封装仅仅是整个故事的一部分。 虽然目前针对以太坊的php开发包普遍还不成熟,但我们可以选择一个 还在活跃的维护当中的库,作为前进的基础。在这里,我们使用web3.php: 有点山寨的感觉? 这其实是我们设计着玩儿的...项目实际并没有LOGO... 正文结束 |
1.以太坊php web3 在windows10下调试——ganache工具的安装 【hi 以太坊】 | 3.以太坊php web3-web3类的介绍 |