LoginSignup
10
4

More than 5 years have passed since last update.

PHPでXEMを送金してみる

Last updated at Posted at 2018-06-08

PHPでNEMを取り扱う必要があったので、TestnetでXEMを送るところまで検証してみました。
※最近、NEM2(Catapult)の話ばかりしていましたが、今回の話は現行NEMの話です。

ライブラリの導入

今回は、nem-phpを使ってみました。
ライブラリはcomposerを使ってインストールしましたが、kornrunner/keccakdev-masterに依存しているらしく、requireにevial/npm-phpだけ指定しただけではうまくインストールできないので、注意が必要です。
composer.jsonは以下のような感じになります。

{
    "name": "daoka/nem-php-sample", // 任意の名前を設定
    "require": {
        "kornrunner/keccak": "dev-master",
        "evias/nem-php": "^0.2.11"
    },
    "autoload": {
        "psr-4": {
            "NemPhpSample\\": "src/" // 任意の名前に変えておく
        }
    }
}

XEMを送金してみる

以下のソースコードを参照。

<?php

require_once("vendor/autoload.php");

$nemAPI = new NEM\API();
$nemAPI->setOptions([
    "protocol" => "http",
    "use_ssl" => false,
    "host" => "192.3.61.243",
    "port" => 7890,
    "endpoint" => "/",
]);

$sdk = new NEM\SDK([], $nemAPI);

$privateKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$keypair = new NEM\Core\KeyPair($privateKey);

// 送信したいメッセージを指定
$message = new NEM\Models\Message();
$message->setPlain("hogehoge");

// TimeStampはUNIXタイムからnemesisタイムを引いた値にする
$timeStamp = time() - NEM\Models\TimeWindow::$nemesis;
// deadlineはtimeStampから24時間以内の時間を指定する
$deadline = $timeStamp + 24 * 60 * 60;

$txData = [
    "timeStamp" => $timeStamp,
    "deadline" => $deadline,
    // トランザクションのタイプを指定する
    "type" => NEM\Models\TransactionType::TRANSFER,
    "amount" => 1000000, // マイクロXEMで指定する
    "message" => $message,
    // 送信先アドレス
    "recipient" => "TXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    // メインネットなのか、テストネットなのか、モザイク添付ありなので変わる
    "version" => NEM\Models\Transaction::VERSION_1_TEST
];

// トランザクションのモデルを生成
$transferTx = NEM\Models\Transaction::create($txData);

$service = $sdk->transaction();

// 送信するアカウントの秘密鍵で署名して、ネットワークに流す。
$result = $service->announce($transferTx, $keypair);
var_dump($result);
10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4