仮想通貨NEMの次のバージョンとして注目されているXYMのSymbolプラットホームについて、とても興味を持っています。
https://docs.symbolplatform.com/ja/getting-started/setup-workstation.html
https://docs.symbolplatform.com/ja/getting-started/first-application.html
上記ドキュメントに書かれていることを実際に試してみました。
環境) Ubuntu20.04(WSL) / Windows 11
ここではデスクトップウォレットをイントールして(テストネットフォーセットでXYMを取得後)、そのアカウントからコンソールで作成したアカウントに送金しています。(設定値はドキュメントどおり)
もう一つのテストとして、モザイクの送信もしました。
symbol-cliのインストール
$ npm init
$ npm install symbol-sdk rxjs
$ sudo npm install -g typescript
$ sudo npm install -g ts-node
アカウントの作成
$ symbol-cli account generate
✔ Select the network type: › TEST_NET
✔ Do you want to save the account? … yes
✔ Select an import type: › PrivateKey
✔ Enter the Symbol node URL. (Example: http://localhost:3000): … https://sym-test.***.jp:3001
✔ Enter a profile name: … testnet11
✔ Enter your wallet password: … ********
✔ Do you want to set the account as the default profile? … yesAccount
┌───────────────┬──────────────────────────────────────────────────────────────────────┐
│ Property │ Value │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Address │ TCWPA2-5NNISY-BJUOON-VOMPPD-XTNADH-DTA4Y6-6JQ │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
……
着金後の状態
$ symbol-cli account info –profile testnet11
⠸ Processing
Account Information
┌───────────────────┬──────────────────────────────────────────────────────────────────┐
│ Property │ Value │
├───────────────────┼──────────────────────────────────────────────────────────────────┤
│ Address │ TCWPA2-5NNISY-BJUOON-VOMPPD-XTNADH-DTA4Y6-6JQ │
├───────────────────┼──────────────────────────────────────────────────────────────────┤
…..
Balance Information
┌──────────────────┬─────────────────┬─────────────────┬───────────────────┐
│ Mosaic Id │ Relative Amount │ Absolute Amount │ Expiration Height │
├──────────────────┼─────────────────┼─────────────────┼───────────────────┤
│ 3A8416DB2D53B6C8 │ 100 │ 100000000 │ Never │
└──────────────────┴─────────────────┴─────────────────┴───────────────────┘
モザイクで表現されたチケットの作成
$ symbol-cli transaction mosaic –amount 99 –supply-mutable –divisibility 0 –duration 1000 –max-fee 2000000 –sync –profile testnet11
✔ Enter your wallet password: … ********
✔ Do you want a non-expiring mosaic? … yes
✔ Do you want this mosaic to be transferable? … yes
✔ Do you want this mosaic to be restrictable? … yes
✔ Select the transaction announce mode: › normal
┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ AGGREGATE_COMPLETE │
├────────────────────────────────────┬──────────────────────────────────────────────────────────────────┤
│ Max fee: │ 2,000,000 │
├────────────────────────────────────┼─────────────────────────────────────────────────────…..
├────────────────────────────────────┬──────────────────────────────────────────────────────────────────┤
│ [Inner tx. 1 of 2] Mosaic Id: │ 312BBCDC24282392 │
├────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
……..
チケットの送信
$ ts-node firstApp.ts
TransactionAnnounceResponse {
message: ‘packet 9 was pushed to the network via /transactions’
}
firstApp.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
// from https://github.com/symbol/symbol-docs/blob/main/source/resources/examples/typescript/transfer/FirstApplication.ts import { Account, Address, Deadline, Mosaic, MosaicId, NetworkType, PlainMessage, RepositoryFactoryHttp, TransferTransaction, UInt64, } from 'symbol-sdk'; const epochAdjustment = ***; <- https://テストノード/network/properties 参照 const mosaicIdHex = '312BBCDC24282392'; <- symbol-cli で生成した値 const mosaicId = new MosaicId(mosaicIdHex); const rawAddress = 'TDYTBCIMEG7RE2REXNZ2CYPODDSLNDXSBFHYUUI'; <- 送信先アドレス const recipientAddress = Address.createFromRawAddress(rawAddress); const networkType = NetworkType.TEST_NET; const transferTransaction = TransferTransaction.create( Deadline.create(epochAdjustment), recipientAddress, [new Mosaic(mosaicId, UInt64.fromUint(1))], PlainMessage.create('enjoy your ticket'), networkType, UInt64.fromUint(2000000), ); const privateKey = '***' <- プライベートキー const account = Account.createFromPrivateKey(privateKey, networkType); const networkGenerationHash = '***'; <- https://テストノード/node/info 参照 const signedTransaction = account.sign( transferTransaction, networkGenerationHash, ); const nodeUrl = 'https://sym-test***.jp:3001'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const transactionHttp = repositoryFactory.createTransactionRepository(); transactionHttp.announce(signedTransaction).subscribe( (x) => console.log(x), (err) => console.error(err), ); |
テストフォーネットでの取得、送金、モザイクの受信を確認できました。
まだ入り口に立っただけですが、機能が豊富でさまざまな課題解決の手段として面白いと思いました。
あと、ローカルのテストノードの構築とアカウント作成も確認しました。
https://github.com/symbol/symbol-bootstrap
しかし私の環境では、テストノードの同期がとれないようで構築したテストノードで作成したアカウントと上記アカウントでのやりとりができませんでした。
他にもいろいろとテストしましたが、長くなりますのでとりあえずここまで備忘録でした。