자바스크립트를 활성화 해주세요

D026 Windows에서 Rippled_php 프로젝트 만들기

 ·  ☕ 3 min read

우연히도 우연히도 리플(ripple)의 세계에 발을 들이게 되었습니다. 발을 들이게 되면서 사용하게 되는 언어는 PHP입니다. 오래된 기억에서 composer를 꺼내어 환경을 다시 설정해 보았습니다.

php 설치

보통은 php 공식 home페이지 에서 다운받는 것을 소개하는 문서가 많습니다만, scoop을 이용할 수 있는 환경이라면 scoop을 이용하여 설치하는 쪽이 훨씬 더 간편합니다.

C:\www>scoop search php
'extras' bucket:
    appengine-go (1.9.70) --> includes 'php_cli.ps1'
    eclipse-php (2020-06)
    php-nts-xdebug (2.9.6-7.4)
    php-xdebug (2.9.6-7.4)

'main' bucket:
    php-nts (7.4.9)
    php (7.4.9)


살펴보면 php는 물론, php-xdebug도 있는 것을 알 수 있습니다. scoop을 사용하여 php를 설치하고, 또 php-xdebug를 설치하면 php.ini를 변경하지 않고 그대로 사용할 수 있습니다.

scoop install php php-xdebug

설치된 php환경에서 php.ini 가 어디에 있는 지 알려면 다음의 명령을 사용하면 됩니다.

php --ini | grep php.ini

실행한 결과는 다음과 같습니다.

C:\www>php --ini
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         C:\Windows\php.ini
Scan for additional .ini files in: C:\Users\Administrator\scoop\apps\php\current\cli;C:\Users\Administrator\scoop\apps\php\current\cli\conf.d;
Additional .ini files parsed:      C:\Users\Administrator\scoop\apps\php\current\cli\php.ini,
C:\Users\Administrator\scoop\apps\php\current\cli\conf.d\xdebug.ini

php --info로 내 환경을 얼른 확인합니다.

composer 설치

composer도 scoop으로 설치합니다.

scoop install composer

d026_scoop_install_composer.png

composer.json 작성

내용은 github의 rippled-php 의 composer.json의 내용위에

composer require foxrp/rippled-php

하여 업데이트시킨 내용입니다.

전체 내용은 다음과 같습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "require": {
        "php": ">=7.3",
        "php-http/client-implementation": "^1.0",
        "php-http/client-common": "^1.7",
        "php-http/discovery": "^1.4",
        "php-http/httplug": "^1.1",
        "psr/http-message": "^1.0",
        "php-http/message-factory": "^1.0",
        "symfony/process": "^4.1",
        "foxrp/rippled-php": "^1.0"
    },
        "require-dev": {
        "phpunit/phpunit": ">=7.3",
        "php-http/mock-client": "^1.1",
        "php-http/guzzle6-adapter": "^1.1",
        "php-http/message": "^1.6",
        "php-coveralls/php-coveralls": "^2.1",
        "symfony/console": "^4.1",
        "symfony/filesystem": "^4.1",
        "roave/security-advisories": "dev-master"
    }
}

Composer 에러 내용 해결

d026_composer_json.png

composer install 명령이이 다음과 같은 에러를 냅니다.

  [Composer\Exception\NoSslException]
  The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl ex
  tension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.

d026_edit_php_ini.png

내용은 OpenSSL을 사용할 수 없다라는 내용입니다. 대응은 php의 dependency는 대게 php.ini의 내용을 수정하면 해결할 수 있습니다.

먼저 openssl을 사용할 수 있게 해줍니다.

extension=openssl

또 mbstring를 사용할 수 있게 해줍니다.

extension=mbstring

ripple 계정을 만드는 곳은 여러곳입니다. 당연히 어느 한 회사가 독점하고 있는 시스템이 아니기 때문입니다.

저는 이곳에서 90일 테스트 계정을 작성하였습니다.
https://xrpl.org/xrp-testnet-faucet.html

d026_xrp_testnet.png

테스트 코드는 다음과 같습니다. 내용은 ripple 잔고를 불러오는 내용입니다. 코드의 내용중 Address나 Token등 민감한 문자열은 일부 변경되어 있으므로 직접 등록하신 값을 넣어서 사용하시기 바랍니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require __DIR__ . '/vendor/autoload.php';

use FOXRP\Rippled\Client;

# rippled
const Testnet_Address = 'rBHUFMQ8AiQRa1eZno3n';
const Testnet_JsonRPC = 'https://s.altnet.rippletest.net:51234';

$client = new Client(Testnet_JsonRPC);
$balance = null;
$response = $client->send('account_info', [
    'account' => Testnet_Address
]);

// Set balance if successful.
if ($response->isSuccess()) {
    $data = $response->getResult();
    $balance = $data['account_data']['Balance'];
    print ($balance);
}

phpstorm에서 실행한 모습은 다음과 같습니다.
d026_xrp_php_test.png

1000000000

testnet이라서 초기 금액으로 10억이 들어 있습니다. 진짜 금액이면 좋겠습니다.

감상

얼핏 살펴본 Ripple의 생태계는 이것만이 이닌 것 같습니다. 굉장히 여러 툴과 서비스가 이미 만들어서져 운영중입니다. 다들 수익모델은 어떻게 두고 하고 있는 지, 어떤 방식으로 작동하는 지 아직 모르는 많은 것들이 있는 것 같습니다.

레퍼런스

공유하기

tkim
글쓴이
tkim
Software Engineer