XEM およびモザイクアセット用のテストネットフォーセットの作成

NEM テストネットとそのフォーセットについて説明します。

NEM Testnet Faucetのソースコード
PHP ライブラリソース

NEM テストネットとは?

これは、開発者が NEM を使用してプログラムを「テスト」する Peer to Peer(P2P)ネットワークです。
ほとんどの暗号通貨は金銭的価値を持っているため、開発者はメインネットワーク上で新しいアプリをテストする際にいくつかのリスクがあります。
また、下手をすれば相手の迷惑になります。
テストネットとメインネットの違いはコインの価値とノードの強さだけなので、メインネット上で動作するプログラムも全く同じ方法でテストネット上で動作することができます。
NEM は Bitcoin や Counterparty よりも複雑な構造を持っていますので、メインネット上で実行する前にテストネットでプログラムの動作を確認してテストすることを強くお勧めします。

NEM テストネットのフォーセットとは?
これは、テストネットの XEM(NEMの基軸通貨)を取得するためのフォーセットです。
NEM は開発者にとって理想的な環境を持っています。
なぜなら、テストネットが常設されており、開発者は自分のノードを自由に実行できるからです。
しかし、テストを実行するには、NEM 開発者にテストネットの XEM を送信するよう依頼する必要がありました。
それでは不便なので、NEM Testnet フォーセットを常設することにしました。
なんと、賞金プログラムから賞金ももらえます。

NEM テストネットフォーセットの使い方

非常に簡単です。
テストネットのアドレスは “T”で始まることに注意してください。
(テスト目的でNanoWalletを使用することをお勧めします)。
1)このウェブサイトに行きます。
2)「NEM アドレス」ボックスにテストネットアドレスを書き留めます。
3)「メッセージ」ボックスにメッセージを書き留めます。
4)reCAPTCHA で認証プロセスを確認し、「クリック!」ボタンをクリックしてください。
次に、プロセスを終了し、テスト XEM に加えて、ランダムに選択されたモザイクアセットも取得します。

残念ながら、モザイクを作成する場合、5000 XEM が必要です。
50回も蛇口をクリックするのは難しいので、別の方法をとる予定です。

SBM フォーセット(SBMF)の使い方

実は Mosaic を手に入れることができる Faucet も設置されています。
そもそも SBM とはSmall Business Mosaic の略で、供給量1万以内かつ分割無しの Mosaic のことです。送金手数料が定額1XEM であることが特徴です。
1) “TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W”に10 XEM をメッセージとともに送信してください。
2)message の内容が重要です。必ず”twistSBMF”と記入して下さい。
DepositHistory」セクションに「完了!」と表示され、無作為に選択されたモザイクが送られます。

あなたのモザイクを SBMF に登録するには?

さらに、SBMF に自分の作った Mosaic を登録することもできます。
自分の登録した SBM が相手に投げられた時、幾分か(平均3XEM)が登録時のアドレスに送金されます。
登録の条件は SBM の作成者で、SBM の要件を満たすことです。
1)10 XEM とあなたのSBM を TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W に以下の特定のメッセージで送ってください。
2)例えば namuyan:namu を 1000 撒きたい、そして一回に撒かれる量は最小10で最大30にしたいならば sbmf,namuyan:namu,10,30 が送る Message になります。
「DepositHistory」セクションに「完了!」と表示されます。
あなたのモザイク資産は現在 SBMF フォーセットのモザイクです。

フォーセットを作る方法

私は PHP と Mysql を使い、” NEM NIS API Documentation “と ” NEM 関連サイトまとめ “を参照しました。

取引タイプ

実際には2種類の取引があります。バージョン1は特に XEM のみを送信するためのものであり、バージョン2は XEM を含むモザイク資産の送信用です。
メソッドをクラス化する関数を書き直しました。この例を参照してください。

timeStamp は、2038年の問題を回避するため Unixtime ではありません。
type はトランザクションのタイプを表します。
送信ならば257です。
他にもモザイクを作成したり、名前空間をレンタルしたり、複数の編集を行うなど、重要なトランザクションがいくつかあります。
deadline とは、トランザクションが mempool 上に存在する期間を意味します。
version はトランザクションバージョンを意味します。
signer とは、トランザクションの作成者の公開鍵を意味します。

手数料の計算

Fee を算出するファンクション(EstimateFee)をご覧ください。

$ amount は XEM を送信する量です。
$ message はメッセージです。メッセージを送信したくない場合は、気にしないでください。
$ mosaic は送るMosaic の詳細を配列で格納します。

公式に料金計算は次のように書かれています:

x = how many mosaic you send
fee = Max(1, Min(25, x * 900_000 / MosaicSupply) – floor(0.8 * ln(9_000_000_000_000_000 / MosaicSupply * 10^divisibility)))

となっておりますが、上のファンクションでは

$ initialSupplybyUnit = $DetailMosaic[‘initialSupply’] * pow(10, $DetailMosaic[‘divisibility’]);
$ fee_tmp += round( max(1, min(25, $quantity * 900000 / $initialSupplybyUnit ) – floor(0.8 * log(9000000000000000 / $initialSupplybyUnit ))));

正式な方法は間違っているのではなく、amount の表記が二通りあるため混乱しやすいのでこの方法をとりました。

POST 機能

get_POSTdata をご覧ください。

適当に POST メソッド POST メソッド(例:/ local / account / transfers / incoming)で書くとエラーが出ます。
エラー:Content type ‘application/x-www-form-urlencoded’ not supported
NIS に POST を要求するときは、 “Content-Type:application / json”でなければなりません。

フォーセットをセットアップする方法

README.mdを参照してください。

インストール(日本語)

ソースを DL します。
Apache のルートフォルダ以下に main ファイルを作成し、NEM-testnet-Faucet 内の全ファイルをコピーします。copy できない場合は権限の違いによるものです。

mkdir main and cp -r /patt/to/NEM-testnet-Faucet/* /passs/too/main/htdocs と権限を一致させます。
chown -R daemon:daemon htdocs*cron/.htaccess and example/.htaccess をローカル環境と一致させます。(これらは他人にアクセスされないように)
あなたのローカルが 192.168.1.* であるならば allow from 192.168.3.0/24 → allow from 192.168.1.0/24
NEMの PriKey,PubKey,Address を入手 curl http://localhost:7890/account/generate (重要:必ず記録して誰にも見せない事)
config.php の $NEMAddress $NEMprikey $NEMpubkey に書き込む。
データベースを作成する。パラメータは任意の文字列にする事、例ではconfig.php のパラメータを使用
1、root 権限でログインします。 mysql -u root -p
2、データベースを作成します。 CREATE DATABASE nemdb CHARACTER SET utf8 COLLATE utf8_general_ci;
3、ユーザー作成をします。 CREATE USER ‘nember’@’localhost’ IDENTIFIED BY ‘obama’;
4、ユーザーに作成した DB の権限を与えます。 GRANT ALL PRIVILEGES ON nemdb.* TO ‘nember’@’localhost’;
5、mysql よりログアウトします。 exit

必要なDBを作成する。

config.php にパラメータを書き込んだ後 example htdocs/main/cron/makedb.php に makedb.php があるならば、http://localhost/main/cron/makedb.php へアクセスしエラーが出なければ完了です。
crontab にて定期実行させます。
1、main/cron 内の Deposit.php ImageReg.php SBMFaucet.php の $root_dir を直します。
2、main ファイル内で pwd と打てばパスが出ます。
3、cron に登録します。 crontab -e
4、以下を書き込みます。
5、*/4 * * * * /opt/lampp/bin/php /opt/lampp/htdocs/main/cron/Deposit.php >/dev/null 2>&1
*/5 * * * * /opt/lampp/bin/php /opt/lampp/htdocs/main/cron/ImageReg.php >/dev/null 2>&1
*/6 * * * * /opt/lampp/bin/php /opt/lampp/htdocs/main/cron/SBMFaucet.php >/dev/null 2>&1
8、パスは適宜直して下さい。エラー出力をチェックしないでください。

 

reCAPTCHA への登録などは他のサイトを見て下さい。 function.php の17行目の secret が空の為エラーが出ます。

あとは適宜 index.php config.php を修正して下さい。

寄付CPアドレス: 1BvRTmPCe47vee2CyrLi9AGeSEcrR2ciM4
寄付NEMaddress: NAN7XFG52NL3V5AW3NTSYO77AVR6X5LYRJKXWKHY
寄付モナコイン: MSYTEF7t62b9sjXt3oN9JokSjnYkvtcPFx

NEMチームは、Namuyan 氏にこのブログとプロジェクトを作成し、それを翻訳した Coffetimes 氏に感謝したいと思います。

公開日: 2017年1月22日
出典: https://forum.nem.io/t/2017-nem-link-list/3189

ソース: https://blog.nem.io/creating-a-testnet-faucet-for-xem-and-mosaic-assets/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です