php如何调用以太坊JSON-RPC接口创建钱包?
首先下载安装geth,下载地址如下:
http://ethfans.org/wikis/Wallet-Mirror
安装后会在安装目录生成一个geth.exe,需要使用命令行工具来运行它。
初始化
geth --datadir "chain" init piccgenesis.json
piccgenesis.json文件:
{ "config": { "chainId": 33, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x4", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": { } } }
设置json-rpc
设置rpc并开启rpc接口,rpc地址为127.0.0.1:8534:
geth --rpc --rpccorsdomain * --datadir ./mychain -rpcport 8534 --port 30308 --identity test --networkid 111111111 --rpcaddr 0.0.0.0 --rpcapi admin,miner,db,eth,net,web3,personal --nodiscover console
注:这里用的是测试网络,不需要同步所有区块,如果要正式应用需要一台linux服务器,开启主网同步所有区块,在打开并设置rpc。
php 调用json-rpc
geth安装完成,rpc接口开启,下面就该用php调用geth的rpc方法了
也可以参考以下几个链接:
https://github.com/ethereum/wiki/wiki/JSON-RPC https://github.com/paritytech/parity/wiki/JSONRPC-personal-module
go-ethereum APIs:
https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal http://www.cocoachina.com/blockchain/20180125/22019.html
PHP本文用的Thinkphp中的jsonrpc类:
public function index(){ vendor('jsonRPC.jsonRPCClient'); $client = new \jsonRPCClient('http://localhost:8534'); dump($client->personal_newAccount("111111")); }
一个钱包就创建好了,111111是密码,是personal_newAccount这个方法的参数,还有其它rpc方法参考上面的连接。
原文《以太坊常见问题和错误》中的:
http://cw.hubwiz.com/card/c/ethereum-FAQ/1/1/18/
另外推荐几个很受欢迎全网稀缺的互动教程:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
php如何使用JSON-RPC查找以太坊中的最新块哈希hash值?
我用PHP中开发了一个以太坊块资源管理器,并成功地与我的服务器Geth节点建立了JSON-RPC通信。然而,当我试图找出最后一个区块时,我陷入了困境。我在https://ethereum.gitbooks.io/frontier-guide/content/rpc.html中读到了很不错的内容,但是我没有任何方法去查询到以太坊节点的哪一个是最后一个块。一旦我得到了块哈希,我就可以有接口检索完整的信息块,但我不知道如何找到最新的块哈希。 API接口中eth_blockNumber应该返回最新的块号,但是如何得到哈希? 问题解答 user@Kumquat:~$ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest", false],"id":1}' localhost:8545 {"jsonrpc":"2.0","id":1,"result":{"difficulty":"0x31962a3fc82b", "extraData":"0x4477617266506f6f6...
- 下一篇
如何升级或者更新智能合约?
如果合约发送方想要有一种方法来升级智能合约代码,以便账户数据和其他东西接通,可以有什么办法吗?可以在不改变合约地址的情况下进行,还是总是需要新的地址? 是否存在annex机制,在不需要重写的情况下向智能合约中添加一些新的功能? 问题解答 一旦合约已经部署在区块链中,它就是最终版了并不能再被改变。当然,可以通过允许原始代码改变某些参数,来做些改变。 更新合约的一种方法是使用版本控制系统。例如,你可以有一个入口通道合约,它将所有调用转发到合同的最新版本,由可更新的地址参数定义。你还可以使用名称注册表,并将其更新为指向最近的合约版本。 另一种方法是将逻辑代码放在库中,然后使用CALLCODE特性,通过Solidity中的库调用位于指定的、可更新的地址的代码。这样,用户数据在版本之间仍然存在。但这也就限制了逻辑合约的ABI必须保持不变。 官方说法: 从Homestead release发布开始,有一个DELEGATECALL操作码。这基本上允许你向前调用一个单独的合约,同时保持msg.sender和所有存储。 例如,你可以拥有一个保持相同地址和存储的合同,但将所有调用转发到存储在变量中的地址:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路