> 백엔드 개발 > PHP 튜토리얼 > PHP는 JSON-RPC를 통해 Ethereum과의 상호 작용을 위한 콘텐츠 구문 분석을 구현합니다.

PHP는 JSON-RPC를 통해 Ethereum과의 상호 작용을 위한 콘텐츠 구문 분석을 구현합니다.

不言
풀어 주다: 2023-04-03 21:52:01
원래의
3064명이 탐색했습니다.

이 글의 내용은 JSON-RPC를 통해 이더리움과 상호 작용하는 PHP의 내용 분석에 관한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

작년부터 블록체인 사업을 전개하고 있습니다. 최근 이더리움을 사용하고 PHP로 작업하면서 이 주제에 관해 이야기를 나눠볼까 생각했습니다.

여기에 전제 조건이 있습니다:

  • 1. 블록체인을 이해합니다.

  • 2. 프로그래밍 언어에 대한 지식이 있습니다. ​

텍스트:

1.Ubuntu 14.04 L을 사용합니다. TS . 운영체제를 설치한 후 미리 정해진 명령어를 입력하세요.

$ sudo apt-get update
$ sudo apt-get upgrade
로그인 후 복사

그 후 SSH, iptables, ntp 등을 설정했습니다.

그 다음에는 Apache + PHP가 나옵니다. PHP 버전은 5.5입니다.

$ sudo apt - get install php 5 libapache 2 - mod - php 5 php 5 - curl
로그인 후 복사

2. 이더리움 소개

이번에는 GO 언어로 만들어진 이더리움 노드,

geth를 사용하겠습니다.

go-ethereum먼저 저장소를 추가해 보겠습니다.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum / ethereum
$ sudo add-apt-repository -y ppa:ethereum / ethereum-dev
로그인 후 복사

그런 다음 설치하면 됩니다.

$ sudo apt-get update
$ sudo apt-get install ethereum
로그인 후 복사

설치가 완료되면 즉시 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 --networkid 57598955 --port 8955 --nodiscover --datadir "/home/yoshida/eth_private_net" console 2>> /home/yoshida/eth_private_net/geth_err.log
로그인 후 복사

콘솔 모드에서 성공적으로 시작됩니다.

여러 옵션이 지정되어 있으며, 설명은 아래에 요약되어 있습니다.

    networkid, 공개 노드에 연결하세요.
  • 포트, 대기용으로 사용되는 포트입니다. 4자리로 바꿨어요.
  • nodiscover, 노드가 자동으로 조회되지 않도록 하는 설정입니다.
  • datadir은 블록체인이 데이터를 저장하는 디렉터리를 지정합니다.
  • 콘솔, 동시에 콘솔을 실행하세요.
  • 좋아, 다음 PHP 호출을 위한 준비가 되었습니다. 하지만 그 전에 geth 측에서 좀 더 준비를 해보겠습니다.

3. JSON-RPC 호출을 준비합니다.

JSON-RPC를 통해 PHP에서 액세스합니다. 여기서는 이웃을 설정하겠습니다.

먼저 현재 계정 정보를 가져옵니다. 또한 지난번에 시작한 geth 콘솔을 사용합니다.

> eth.accounts
[]
로그인 후 복사

아직 계정을 만들지 않았기 때문에 만들어야 합니다.

> personal.newAccount("password")
"0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"
> eth.accounts
["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]
로그인 후 복사

계정이 생성되었습니다. 채굴 시 보상을 받을 수 있도록 설정하였습니다.

> miner.setEtherbase(eth.accounts [0])
로그인 후 복사

다음으로 현재 노드에서는 RPC 호출을 허용하지 않으므로 옵션을 추가하고 다시 시작해 보세요. 먼저 geth를 마무리하겠습니다.

> exit
로그인 후 복사

옵션을 추가하고 다시 시작합시다.

$ geth --networkid 57598955 --port 8955 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport "8956" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" --datadir "/home/yoshida/eth_private_net" console 2>> /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 -l
ethereum.php json-rpc.php
$ vim test.php
<?php

require_once &#39;ethereum.php&#39;;
$ethereum = new Ethereum(&#39;localhost&#39;, &#39;8956&#39;);
print_r($ethereum->eth_accounts());
로그인 후 복사

이 스크립트를 실행하면 아래와 같은 계정 목록이 나와야 합니다.

$ php test.php
Array
(
[0] => 0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b
)
로그인 후 복사

연결이 되지 않을 경우 포트 설정 등을 확인해주세요.

지금까지는 간단하게 설명했는데, PHP로 개발하는 것이 의외로 쉽나요?

관련 권장 사항:

브라우저가 비트코인 ​​코어 클라이언트의 JSON-RPC 인터페이스를 통해 관련 데이터를 얻는 방법


php

으로 구현된 간단한 json rpc 프레임워크 예

위 내용은 PHP는 JSON-RPC를 통해 Ethereum과의 상호 작용을 위한 콘텐츠 구문 분석을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿