イーサリアム:ルビーでトランザクションハッシュに署名するには?
RubyでEthereumトランザクションに署名:ステップバイステップガイド
イーサリアムは、開発者がスマートコントラクトやアプリケーションを構築・実装できる分散型の人気プラットフォームである。イーサリアムのトランザクションの重要なコンポーネントの1つは「ハッシュ・トランザクション」であり、これには送信者の秘密鍵や署名されていないトランザクションを含む入力データが含まれる。この記事では、RubyでSECP256K1を使用してイーサリアムのトランザクションに署名する方法を探ります。
SECP256K1を理解する
コードに入る前に、イーサリアムのトランザクションにおけるデジタル署名に使用される暗号アルゴリズムであるSECP256K1について簡単に説明します。SECP256K1は安全で効率的な楕円暗号アルゴリズムで、開発者は自分の秘密鍵でメッセージに署名することができます。SECP256K1は Ruby の SECP256K1 ライブラリは、このアルゴリズムの実装を提供している。
トランザクションハッシュへの署名
イーサリアムのトランザクションに署名するには、エントリーデータ(秘密鍵と未署名のトランザクション)でトランザクションハッシュを計算する必要があります。以下はその方法についてのステップバイステップガイドである:
1.トランザクションハッシュを計算する。
まず最初に、あなたの秘密鍵を送信者として新しい「トランザクション」オブジェクトを作成する。ここではSECP256K1ライブラリを使用してトランザクション・ハッシュを計算する。
ルビー
リクエスト "SECP256K1"
秘密鍵を16進数で定義する (例: 0x1234567890ABCDEF)
プライベートキー = "0x1234567890ABCDEF"
秘密鍵を送信者として新しいトランザクション・オブジェクトを作成する。
transaction_hash = transaction.new (private_key)
2.トランザクションのハッシュに署名する。
トランザクションのハッシュができたので、SECP256K1を使って署名してみよう。
ルビー
Signing_key = opennsl :: rsa: pkcs8 ::Privatenumber.from_pem ("----- 秘密鍵の開始 ----- n ...あなたの秘密鍵をここに.\ n ----- RSRS秘密鍵の終了 ----- ")
あなたの署名鍵でトランザクションのハッシュに署名する(「署名鍵」を実際の秘密鍵に置き換えてください)。
signed_transction_hash = transaction_hash.sign (signing_key, 'sha256')
####.トランザクション・ハッシュの取得
最後に、署名されたトランザクションのハッシュを16進文字列に変換する。
ルビー
トランザクションハッシュを16進文字列に変換する。
signed_transction_hash_hex = signed_transction_hash.to_s (16)
コードテスト
以下がそのコードである:
ルビー
リクエスト "SECP256K1"
は "opennsl" を必要とする
秘密鍵を16進数で定義する (例: 0x1234567890ABCDEF)
プライベートキー = "0x1234567890ABCDEF"
秘密鍵を送信者として新しいトランザクション・オブジェクトを作成する。
transaction_hash = transaction.new (private_key)
あなたの署名鍵でトランザクションのハッシュに署名する(「署名鍵」を実際の秘密鍵に置き換えてください)。
Signing_key = opennsl :: rsa: pkcs8 ::Privatenumber.from_pem ("----- 秘密鍵の開始 ----- n ...あなたの秘密鍵をここに.\ n ----- RSRS秘密鍵の終了 ----- ")
signed_transction_hash = transaction_hash.sign (signing_key, 'sha256')
トランザクションハッシュを16進文字列に変換する。
signed_transction_hash_hex = signed_transction_hash.to_s (16)
署名されたトランザクションをハッシュする:#{simned_transacti_hash_hex}"を置く。
このコードは、16進数形式で署名されたトランザクションハッシュを発行するはずである。秘密鍵 "を実際の秘密鍵に置き換え、SECP256K1ライブラリをインストールし、gemfileに追加して以下を実行する必要があることに注意。バンドルインストール`。