ma96o / gialog

MIT License
0 stars 0 forks source link

0820 _ Aptos のアカウント生成 #19

Open ma96o opened 2 years ago

ma96o commented 2 years ago

Aptosにおける,アカウント作成時の暗号化手順

  1. ユーザーがアカウント作成要求を送信
  2. 秘密鍵と公開鍵のキーペアの生成
  3. ユーザーから,そのアカウントに適した署名方式を取得
    • 単一署名方式 or マルチシグ方式
  4. 公開鍵とユーザーの署名方式を組み合わせ,32バイトの認証鍵を生成する
  5. 認証鍵とシーケンス番号(初期値0)の両方が,初期アカウントリソースとしてアカウントに保存される
  6. 認証鍵から32バイトのアカウントアドレスを生成

シーケンス番号は,そのアカウントから送信されたトランザクション数を示す.トランザクションにはシーケンス番号を含み,トランザクションを処理する際に,トランザクションに含まれるシーケンス番号とアカウントが保持するシーケンス番号を比較し,一致する場合のみ実行に移す.これはリプレイ攻撃を防ぐためのもので,Ethereum だと nonce にあたる.

アカウントアドレスは,アカウントの識別子として重要なリソースであるが,アカウント生成時に導出される32バイトの認証鍵がそのままアカウントアドレスになる(例: eeff357ea5c1a4e7bc11b2b17ff2dc2dcca69750bfef1e1ebcaccf8c8018175b ). 秘密鍵と公開鍵は後から更新でき,その場合は認証鍵も変更される.しかし,アカウントアドレスは永続的(不変)であり,認証鍵とアカウントアドレスが一致するのは,初期のみで必ずしも一致しない.つまり,既存のアカウントアドレスが変更されることはない.

Aptos の署名方式には2つある.

  1. 単一署名方式
  2. マルチシグ方式

それぞれの署名方式は以下の署名スキームを用いる

  1. Ed25519
  2. MultiEd25519

また,アカウントの認証鍵を生成するには,そのアカウントについて1バイトの署名方式の識別子の指定が必要で,それぞれ以下のように識別子が定められている.

  1. 単一署名方式: 0x00
  2. マルチシグ方式:0x01

それぞれの署名方式によるアカウントの生成手順は以下である.

ma96o commented 2 years ago

家から10分ほど歩いた場所にある定食屋で晩ごはんを友人と食べた.おそらく夫婦で長年営んでいるようなお店で,こじんまりとしているが,席はそこそこ埋まっていた,定食や一品が充実していて,一見にはなかなか悩ませる.出てきた定食は品数が多く,ヴォリュームのわりに安い.ミックスフライ定食を頼んで,肉豆腐,ポテトサラダを友人とシェアした.どれもほどよい味付けで美味しい.お酒も提供しているので,近くで飲むことがあれば一軒目にちょうど良い.お気に入りのお店を発見できた.

注文をして待っている時間に,50代後半くらいの夫婦が入店した.隣のテーブルに座って,ハイボールと氷結,惣菜を何品か頼んていた.僕たちが先に退店したが,その夫婦が終始なごやかな雰囲気ですごく素敵だと思った.見た感じでいうと,子供がいたとしてもすでに成人を迎えているような年齢だろう.普通にお酒を乾杯して普通に笑い合っていた.

喫茶店などで,年配のカップルあるいは男女グループを時たま見かけるが,苦手なときがある.当人たちは楽しそうにしているので,どうでもいいことなのだが,なんだかお爺の方が偉そうにしているのが,見てられないことがある.いや見なくても良いのだが.それと同じくらいの割合で,良い関係なのが分かる成熟した時間を過ごしているなと思う人たちも見かける.定食屋で見かけた夫婦は後者で,なごやかにお酒を飲みながら,お互い冗談を言って笑い合っている光景が逆に際立ってた.多分,週末に2人でお酒を飲みに定食屋に行くことなんて日常なんだろう.