当前位置: 首页 > 后端技术 > PHP

PHP如何通过JSON-RPC与以太坊交互

时间:2023-03-30 05:32:31 PHP

从去年开始,我们在开发区块链(Blockchain)业务。最近在Ethereum工作并使用PHP,所以我认为我们应该聊聊这个话题。这里有一个先决条件:1.了解区块链2.了解编程语言会使用Ubuntu14.04LTS。安装操作系统后,输入预定命令。$sudoapt-getupdate$sudoapt-getupgrade之后我设置SSH、iptables、ntp等。然后是Apache+PHP。PHP版本将为5.5。$sudoapt-安装php5libapache2-mod-php5php5-curl2。以太坊介绍本次我们将使用GO语言制作的以太坊节点,go-ethereum简称geth。首先让我们添加一个存储库。$sudoapt-getinstallsoftware-properties-common$sudoadd-apt-repository-yppa:ethereum/ethereum$sudoadd-apt-repository-yppa:ethereum/ethereum-dev之后安装即可。$sudoapt-getupdate$sudoapt-getinstallethereum安装完成后立即启动geth。首先,创建一个数据目录并描述第一个块(创世块)的设置。$mkdir~/eth_private_net$vim~/eth_private_net/my_genesis.json{“nonce”:“0x0000000000000042”,“timestamp”:“0x0”,“parentHash”:“0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,“extraData”:“0x0”,“gasLimit”:“0xffffffff”,“难度”:“0x4000”,“mixhash”:“0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,“coinbase”:“0x3333333333333333333333333333333333333333”,“alloc”:{}}接下来,创建Genesis块并启动geth。$geth--datadir"/home/yoshida/eth_private_net"init/home/yoshida/eth_private_net/my_genesis.json$geth--networkid57598955--port8955--nodiscover--datadir"/home/yoshida/eth_private_net"控制台2>>/home/yoshida/eth_private_net/geth_err.log在控制台模式下,启动成功。指定了几个选项,解释总结如下。networkid,连接到公共节点。端口,备用端口。我把它改成了4位数。nodiscover,这是一个防止节点自动发现的设置。datadir,指定区块链存储数据的目录。控制台,在启动时启动控制台。好的,为下一次PHP调用做好准备,但在此之前让我们在geth端做一些更多的准备工作。3.为通过JSON-RPC从PHP访问准备JSON-RPC调用。在这里我们将设置邻域。首先,将获取当前帐户信息。我们还使用上次启动的geth控制台。>eth.accounts[]我们还没有创建一个帐户,所以我们将创建它。>personal.newAccount("password")"0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b">eth.accounts["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]该账户现已创建。我们设置它以便在挖矿时可以获得奖励。>miner.setEtherbase(eth.accounts[0])接下来,由于当前节点不允许RPC调用,添加一个选项,重新启动。首先让我们结束geth。>退出让我们添加选项并重新启动$geth--networkid57598955--port8955--nodiscover--rpc--rpcaddr"0.0.0.0"--rpcport"8956"--rpccorsdomain"*"--rpcapi"eth,net,web3,personal"--datadir"/home/yoshida/eth_private_net"console2>>/home/yoshida/eth_private_net/geth_err.log为rpc添加了几个选项。解释如下。rpc,允许RPC回退。rpcaddr,用于RPC备份的IP地址。rpcport,用于监听RPC的端口。我将端口号降低到4位数。rpccorsdomain,允许访问RPC的域。请注意,在发布节点时,如果它是“*”,它将允许所有内容。节点端现已准备就绪。接下来是来自PHP的调用。4.从PHP访问最后是为什么从PHP访问,但是有它们,因为它很难,当你写代码的时候你可以使用这个。正如您在README中看到的那样,您只需要创建一个类。让我们将它放在与我们的测试脚本相同的目录中来使用它。$cd/home/yoshida/php-eth/$ls-lethereum.phpjson-rpc.php$vimtest.phpeth_accounts());当我们运行这个脚本时,应该有一个账户列表如下。$phptest.phpArray([0]=>0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b)如果无法连接,请检查端口设置等。到目前为止我们已经简单地解释了,但是是不是感觉用PHP开发非常简单?说到智能合约,就有点复杂了,到时候我们再写一个。=======================================================================另外,如果想直接看区块链在以太坊中是如何使用的,可以学习以下教程:phpEthereum,主要介绍使用php进行智能合约开发交互、账户创建、交易、转账、代币开发、过滤器和事件等。汇智网原创翻译,转载请注明出处。这里是原文

最新推荐
猜你喜欢