こんにちは、Gincoの永田(@nagatkaz116)です。
皆さんはZilliqaという暗号通貨をご存知でしょうか? シャーディングという手法を用いることで高いトランザクションスループットを実現し、なおかつスマートコントラクトのプラットフォームも提供するZilliqaは、今非常に期待されている暗号通貨の一つです。
弊社ではZilliqaチームのグラントプログラムの一環でZilleanというGolang SDKを開発・管理しています。 今回はZilleanの紹介をさせて頂きます。
Zilleanの機能一覧
Zilleanは大きく分けて2つの機能から成り立ちます。 1つ目がWallet APIであり、鍵生成や署名などの基本的なウォレット機能を提供します。 2つ目がJSON-RPC APIであり、こちらはZilliqaが提供するJSON-RPC APIをGolangで実装したものになります。 以下がそれぞれの機能一覧になります。
- Wallet API
- GeneratePrivateKey
- VerifyPrivateKey
- GetPublicKeyFromPrivateKey
- IsPublicKey
- GetAddressFromPrivateKey
- GetAddressFromPublicKey
- IsAddress
- SignTransaction
- VerifySignature
- JSON-RPC API
- GetBalance
- GetDsBlock
- GetTxBlock
- GetLatestDsBlock
- GetLatestTxBlock
- GetTransaction
- CreateTransaction
- GetSmartContracts
- GetSmartContractState
- GetSmartContractCode
- GetSmartContractInit
- GetBlockchainInfo
- GetNetworkId
- GetRecentTransactions
- GetDSBlockListing
- GetTxBlockListing
Zilleanの使用例1(鍵生成やトランザクション生成)
ここでは秘密鍵の生成からトランザクション生成までを一連の流れの中で解説させて頂きます。
まずはコードをご覧ください。
順番に説明します。
まず、zilleanオブジェクトを生成しています。 この時の引数にはZilliqaのJSON-RPCエンドポイントを指定してください。 例のままで大丈夫です。
次に鍵を生成しています。 Zilliqaではマルチシグネチャー署名に適したEC-Schnorrと呼ばれる署名アルゴリズムを採用しており、楕円曲線にはsecp256k1を用いています。 この記事ではアルゴリズムの詳細については触れませんが、興味のある方はこちらを参照ください。 ZilleanではEC-Schnorrから実装しています。 今回の例では秘密鍵を新規に生成していますが、GetPublicKeyFromPrivateKey関数やGetAddressFromPrivateKey関数を用いることで、公式のZilliqaウォレットで作成したアカウントを復元することも可能です。
次に署名を行なっています。 この際に、kというランダムな値をGenerateDRN関数を用いて生成する必要があります。 この擬似乱数の存在によって、同じ秘密鍵を用いて同じメッセージに署名を行っても毎回異なる署名が生成されることになります。 ちなみに、GenerateDRN関数はnonceという引数をとりますが、ここではメッセージをnonceに入れています。
最後にトランザクションを生成しています。 前のステップで生成した署名を生トランザクションと共にCreateTransaction関数に渡しています。 ここで、JSON-RPCを用いています。 今回の例では、残高が空のアドレスを用いたり、送信先アドレスに不正なアドレスを入れたりしていて、トランザクション生成に失敗するはずですので、適宜適切なアドレスに置き換えてください。
Zilleanの使用例2(残高確認など)
次にJSON-RPCの使用例として残高取得、トランザクション取得、スマートコントラクト取得を紹介します。 公式ドキュメントも合わせてご覧ください。
以下、コードをご覧ください。
まとめ
今回は弊社が開発・管理しているZilliqaのGolang SDKであるZilleanを紹介させて頂きました。 今年の1月にメインネットローンチが予定されており、最近何かと話題になることも多い暗号通貨ですので、これを機に興味を持って頂ければ幸いです。 また、ZilleanはOSSですので、興味を持たれた方は是非開発にもご参加ください。
付録
Zilliqaの公式チームから許可を頂きホワイトペーパーの翻訳をしております。日本語版ホワイトペーパー・PDF版をご覧いただき、ぜひ参考にして頂ければと思います。
また、Web記事版として、こちらからもご覧いただけます。 Zilliqaテクニカルホワイトペーパー翻訳・Web版。
Tip us!
エンジニアチームのブログを書くモチベーションが上がります!