2020/05/27
StellarのカスタムAssetをnodejsを使って送金する
概要
携わっているプロジェクトでは、StellarをベースとしたAssetを発行・運用しています。
以下の公式サイトが詳しいです。
今回、livenetでAssetの送金が必要になったため、送金用のスクリプトを作成して、実行しました。
実施事項
以下のスクリプトを作成し、実行しました。
ポイントとしては以下です。
- スクリプトの冒頭で、必要なアカウントIDやシークレットを定義しておきます
- testの変数の値で、testnetかlivenetをswitchすることができます
- nodeのコンソールを立ち上げて、スクリプトをコピペして実行しました
- マルチシグを採用している場合は、必要な数だけ transaction.sign を実行する必要がありますが、今回はマルチシグではないので、Ownerアカウントのキーだけで送金しました
(function() {
var fromAccountSecret = 'SXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
var assetCode = 'SNC'
var issuerAccountID = 'GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
var destinationAccountID = 'GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
var sendAmount = '10';
var test = true;
(function(baseAccountSecret, assetCode, issuerAccountID, destinationAccountID, sendAmount, test) {
var StellarSdk = require('stellar-sdk');
var server;
var homeDomain;
if (test) {
StellarSdk.Network.useTestNetwork();
server = new StellarSdk.Server('https://horizon-testnet.stellar.org');
homeDomain = 'testnet.sencoin.com';
} else {
StellarSdk.Network.usePublicNetwork();
server = new StellarSdk.Server('https://horizon.stellar.org');
homeDomain = 'www.sencoin.com';
}
var fromAccountKeypair = StellarSdk.Keypair.fromSecret(fromAccountSecret);
var asset = new StellarSdk.Asset(assetCode, issuerAccountID);
server.loadAccount(fromAccountKeypair.publicKey())
.then(function(fromAccount) {
var transaction = new StellarSdk.TransactionBuilder(fromAccount).addOperation(StellarSdk.Operation.payment({
destination: destinationAccountID,
asset: asset,
amount: sendAmount
})).build();
transaction.sign(fromAccountKeypair);
console.log('send payment of ' + assetCode + ' transaction');
return server.submitTransaction(transaction);
})
.then(function() {
console.log('let\'s load target account');
return server.loadAccount(destinationAccountID)
})
.then(function(destinationAccount) {
console.log(destinationAccount);
})
.catch(function(error) {
console.log('Error occurred: ', error)
});
})(fromAccountSecret, assetCode, issuerAccountID, destinationAccountID, sendAmount, test);
})();
以上になります。
関連する記事
【1行】JavascriptでCookieの全削除
たまにやるCookie全削除のJavascriptです
Nuxt2からNuxt3への移行とNextJSとNuxt3の比較について
弊社ホームページとブログサイトをNuxt2からNuxt3ベースに移行しました。
[NextJs]Google Mapでマーカーをセンターに表示するコンポーネントの作成
NextJsアプリ内で、Google Mapを表示して、中心にマーカーを配置するコンポーネントを作成しました。
[Next.js]client側のみで読み込むcomponent(SSRのエラーを回避)
組織図を描画するreactライブラリ`react-organizational-chart`をサーバー側で呼び込む際にエラーになる方法に対処しました