이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 9838|회답: 4

EOS 블록체인 PHP 개발 키트

[링크 복사]
게시됨 2018. 12. 11. 오전 8:56:36 | | |
이 글은 jimi2018이 2018-12-11 09:06에 마지막으로 편집했습니다

1. 개발 패키지 개요
EosTool의 목적은 PHP를 사용하여 EOS 블록체인 애플리케이션 개발의 어려움을 없애는 것입니다. 예를 들면:
  • Nodeos와 Keosd의 RPC 인터페이스를 통해 함수를 호출할 수 있습니다
  • 오프라인에서 EOS 형식으로 개인 키 및 공개키 생성
  • 로컬 개인 키를 사용해 EOS 준수 거래 서명을 생성하세요
  • Nodeos가 요구하는 packed_trx 형식으로 트랜잭션 객체를 직렬화하세요
EosTool은 EOSJS의 PHP 버전으로 간주할 수 있으며, EOS 공식 클라이언트 Cleos의 기능을 완전히 구현할 수 있고, PHP 애플리케이션에서 EOS 블록체인 지원에도 쉽게 추가할 수 있어 개발 효율성을 크게 향상시킬 수 있습니다.

관심 있는 친구들은 EOS 블록체인 PHP 개발 키트를 직접 다운로드할 수도 있습니다:http://t.cn/EUZAODQ

EosTool은 Php 7.1+ 환경에서 실행되며, 현재 버전은 1.0.0이고 주요 코드 파일 목록은 다음과 같습니다:

코드 파일설명
이오스툴/SRC/클라이언트/NodeClient.php노드 소프트웨어 노드OS의 RPC 인터페이스 패키지 클래스
EOSTOOL/SRC/클라이언트/WalletClient.php지갑 소프트웨어 KEOSD의 RPC 인터페이스 캡슐화 클래스
eostool/src/client/RpcOutput.phpRPC는 그 결과 캡슐화 클래스를 반환합니다
eostool/src/Crypto/PrivateKey.phpEOS 개인 키 클래스
eostool/src/Crypto/PublicKey.phpEOS 공개키 클래스
eostool/src/암호화폐/Signature.phpEOS 시그니처 클래스
eostool/src/Serializer/AbiType.phpEOS의 ABI 유형 패키지 클래스
eostool/src/serializer/AbiTypeFactory.phpABI형 공장급
eostool/src/시리얼라이저/SerialBuffer.php직렬화된 버퍼 구현 클래스
eostool/src/serializer/Serializer.php직렬라이저 구현 클래스
eostool/src/Signer/Signer.php서명자 인터페이스
eostool/src/Signer/KeosdSigner.phpKeosd 서명자 구현 클래스
eostool/src/Signer/LocalSigner.php로컬 오프라인 서명기 구현
이오스툴/SRC/Contract.php계약 클래스
이오스툴/SRC/EosTool.php개발 패키지 엔트리 클래스
EOSTOOL/검사유닛 테스트 케이스 카탈로그
이오스툴/phpunit.xml단위 테스트 프로필
EOSTOOL/판매자서드파티 의존성 패키지
이오스툴/composer.json작곡가 구성 파일
2. 노드 서버 접근
NodeClient 클래스를 사용하여 NodeOS의 rpc 인터페이스에 접근하세요. 예를 들어, 다음 코드는 네이티브로 실행되는 Nodeos 노드의 체인 플러그인 get_info 인터페이스에 접근합니다:
2.1 RPC 콜 그룹

EosTool은 일관된 명명 방식을 채택하며, NodeClient의 호출 메서드는 API에 따라 추론할 수 있습니다: API 그룹은 NodeClient와 같은 이름의 속성에 해당하고, API는 CamelCase가 변환한 메서드와 동일 이름의 클라이언트 그룹화와 동일합니다. 예를 들어:



플러그인API 그룹RPC APINodeClient 메서드
chain_api_plugin체인get_info$nc->chain->getInfo()
history_api_plugin역사get_transaction$nc->history->getTransaction()
net_api_plugin순수현황$nc->net->status()
producer_api_plugin프로듀서get_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsize가져오기$nc->dbsize->get()

RPC API 공식 문서:https://developers.eos.io/eosio-nodeos/reference

2.2 RPC 호출 매개변수

Nodeos의 경우, 일부 호출은 체인 플러그인의 get_block 인터페이스와 같이 추가 매개변수를 전달해야 하며, EosTool을 사용할 때 매개변수를 연관된 배열로 정리하면 됩니다. 샘플 코드는 다음과 같습니다:



2.3 RPC 호출 반환 값

모든 RPC 호출의 반환 결과는 RpcOutput 인스턴스이며, hasError() 메서드를 호출하면 호출이 잘못되었는지 판단할 수 있으며, getError() 메서드를 사용해 오류 정보를 얻을 수도 있습니다.
RPC 호출의 응답은 getResult() 메서드를 통해 얻을 수 있는데, 이는 원래 JSON 결과에서 변환된 StdClass 객체로, 다음과 같은 속성 정보를 쉽게 추출할 수 있습니다:

2.4 메인넷/테스트넷 노드 접근

NodeClient 인스턴스를 생성할 때, EOS 메인넷 또는 테스트넷 노드를 정의하기 위해 추가 매개변수 실행을 전달할 수 있습니다. 예를 들어, 다음 코드를 사용하여 메인넷 노드에 접근하세요:

또는 정글 테스트넷의 노드를 방문해 보세요:


3. 지갑 서버 접근
새로운 버전의 Keosd는 더 이상 RPC API 문서를 제공하지 않아, EOS 소프트웨어 스택에서 점점 한계로 밀려나고 있을 수 있습니다. 하지만 이 주소에서 이전 버전의 문서에 접근할 수 있습니다:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

WalletClient 클래스를 사용해 Keosd의 rpc 인터페이스에 접근하세요. 예를 들어, 다음 코드는 네이티브로 실행되는 Keosd의 list_wallets 인터페이스에 접근합니다:
Keosd의 API가 더 이상 그룹화되지 않기 때문에, 해당 RPC 메서드는 WalletClient 객체에 직접 걸려 있는데, 이는 차이입니다. NodeClient와 마찬가지로, WalletClient 호출은 RpcOutput 객체를 반환합니다.

Keosd 버전 1.4는 기본적으로 HTTP 대신 UNIX 소켓을 사용하여 RPC 인터페이스를 제공하는데, 대부분의 경우 Keosd가 네이티브로 실행되므로 IPC를 사용하는 것이 더 안전하다고 여겨질 수 있습니다. 따라서 이 옵션은 WalletClient의 기본 인스턴스화 옵션이기도 하며, 대부분의 경우 WalletClient를 인스턴스화하기 위해 추가 매개변수를 전달할 필요가 없습니다.

4. 개인 키 및 공개 키

EOS의 핵심 알고리즘은 비트코인과 유사하지만 약간의 조정과 자체 포맷 정의가 있습니다.
privateKey 클래스 new()의 정적 메서드를 사용하여 무작위 개인 키를 생성합니다. 예를 들어:
toEos() 메서드는 개인 키 객체를 EOS용 맞춤형 형식으로 변환하는 데 사용됩니다.

4.1 공개키 도출
공개 키는 다음과 같은 개인 키에서 도출될 수 있습니다:


마찬가지로, 공개키를 EOS용 커스텀 형식으로 변환하려면 toEos() 메서드를 사용하세요.

4.2 EOS 개인 키 가져오기
EOS 형식의 개인 키를 EosTool PrivateKey 객체로 변환할 수 있습니다. 예를 들어, 아래 코드는 지정된 EOS 개인 키를 가져오고 해당 EOS 공개 키를 표시합니다:

4.3 권위 서명
PrivateKey의 sign() 메서드는 EOS 노드가 요구하는 일반 서명과 권한 있는 서명 모두를 지원합니다. 예를 들어, 다음 코드는 일반 서명을 반환합니다:

지정된 데이터에 대한 권위 있는 서명을 얻기 위해 추가 매개변수를 입력하세요:



5. 연재
EOS는 노드 push_transaction을 커밋하기 전에 트랜잭션을 직렬화해야 하며, 이는 PHP에서 EOS 트랜잭션을 운영할 때 불가피한 부분입니다.
EosTool에서는 직렬화 연산에 Serializer 클래스가 사용됩니다. 예를 들어, 다음 코드는 EOS 전송 트랜잭션을 16십진수 코드스트림 형식으로 직렬화하여 EOS 노드에 제출할 수 있습니다:


Serializer의 Abi()에서 얻은 정적 메서드를 사용해 지정된 abi를 기반으로 직렬라이저 인스턴스를 구성하고, 그 다음 인스턴스의 serialize() 메서드를 사용해 지정된 유형의 데이터를 직렬화하여 16진수 코드 스트림을 얻습니다.

6. 서명
EosTool은 트랜잭션에 서명하는 두 가지 방법을 제공합니다: 서명을 위해 Keosd를 사용하는 것과 로컬 개인 키를 사용하는 방법입니다.
지갑 서버를 이용해 KeosdSigner 클래스를 사용해 서명을 완료하세요. 예를 들어:

LocalSigner 클래스를 사용하면 keosd 사용을 피하고 오프라인 개인 키 서명을 직접 사용할 수 있습니다. 예를 들어:
use EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = 새로운 LocalSigner($prvKeys);
$signatures = $signer-> 부호($tx,$pubKeys,$chainId);



7. 거래 제출
트랜잭션 데이터는 일련의 연산을 거쳐 정규화, 직렬화, 서명 및 패키징된 후에야 Nodeos 노드에 브로드캐스트를 위해 제출할 수 있습니다. EosTool 클래스는 이러한 번거로운 작업을 분리하는 transact() 메서드를 제공합니다.
예를 들어, 아래 코드는 NodeClient와 LocalSigner를 사용해 EosTool 인스턴스를 생성한 후 트랜잭션을 제출합니다:
예를 들어, Signer를 KeosdSigner로 변경하는 것이 편리합니다:


8. 단일 계약 소환 소송 발동
EosTool의 pushAction() 메서드를 사용해 단일 계약 액션을 호출하세요. 예를 들어, 다음 코드는 Tommy 계정 호스팅 계약의 hi() 메서드를 호출합니다:



9. 계약 배포
예를 들어 EosTool의 setContract() 메서드를 사용하여 계약을 배포하세요:
관심 있는 친구들은 여기에서 방문할 수 있습니다:http://t.cn/EUZAODQ




게시됨 2018. 12. 11. 오전 8:59:58 |
감사합니다, 매우 유용했습니다
 집주인| 게시됨 2018. 12. 11. 오전 9:06:52 |
여름 게시글: 2018-12-11 08:59
감사합니다, 매우 유용했습니다

응원해 주셔서 감사합니다.
게시됨 2018. 12. 11. 오전 9:11:46 |
귀하의 사이트에서 많은 콘텐츠를 읽었는데, 일부는 번역된 외국 기사인 것 같습니다
게시됨 2018. 12. 11. 오전 9:32:07 |
부자 되어줘서 고맙다는 말 봐
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com