Karakuri.com

Fintechではたらくアプリケーションエンジニアの技術録

C#でcsharp2nemを使ってXEMやモザイクを任意のウォレットへ送金する

先日はcsharp2nemを使ってNEMのウォレットの情報を取得する方法について書きました。
www.k-karakuri.com
今回はcsharp2nemを使ってXEMやモザイクを送信する方法について書きます。

csharp2nemを使って送金の準備をする

接続するネットワークを選択する

前回同様、接続先をテストネットかメインネットか指定します。

var connection = new Connection();
connection.SetTestnet();

本番のメインネットの場合はこちら。

var connection = new Connection();
connection.SetMainnet();

秘密鍵からクライアントインスタンスを作成する

続いて送金のためにクライアントインスタンスを作成します。

var factory = new PrivateKeyAccountClientFactory(connection);
var client = accountFactory.FromPrivateKey("ここで秘密鍵を渡します");

あとは作成したPrivateKeyAccountClient型のclientを使って送金します。

csharp2nemを使って送金する

XEMを送金する

XEMはTransferTransactionDataに情報を持たせてPrivateKeyAccountClientに渡すことで送金します。まずはこのTransferTransactionDataインスタンスを作成します。

data = new TransferTransactionData()
   {
      Amount = amount, // 1XEMなら1
      Message = message,
      RecipientAddress = address,
   };

続いて作成したTransferTransactionDataインスタンスをPrivateKeyAccountClientのBeginSendTransactionに渡せば送金が開始されます。

var result = client.BeginSendTransaction(data);

// 送金完了まで待機する
while (!result.IsCompleted) ;

モザイクを送金する

XEMもモザイクの1つというのがNEMの特徴ですが、送金のパラメーターの定義はXEMとその他のモザイクとでは変わるようです。

data = new TransferTransactionData()
   {
      Amount = 1000000,
      Message = message,
      RecipientAddress = address,
      ListOfMosaics = new List<Mosaic>() 
         { 
            new Mosaic("NameSpaceの名前", "モザイク名", 100) } // 100モザイクを送る場合
         },
   };

かなり違います。特に送金額の設定がややこしいです。AmountがXEMとその他のモザイクでは解釈が変わるんですね。結論からいうと、モザイクが小数点以下を考慮する必要がなければAmountは10,000,000固定で良さそう。
cryptocurrency.muragon.com
送金についてはXAMと同様に可能です。

var result = client.BeginSendTransaction(data);

// 送金完了まで待機する
while (!result.IsCompleted) ;