スキップしてメイン コンテンツに移動

投稿

最新記事

【論文輪読】CoopEdge: A Decentralized Blockchain-based Platform for Cooperative Edge Computing

研究会の輪読で, 協調エッジコンピューティングについての論文CoopEdgeを読んでまとめたので, スライドを供養しておきます. CoopEdge: A Decentralized Blockchain-based Platform for Cooperative Edge Computingを読む from Hiroki Takemura
最近の投稿

Ethereum 署名の流れ

Ethereumでトランザクションに署名をしたり, その検証をしたり, 署名から公開鍵(EOAアドレス)を導出する方法を整理しておきます. 署名でできること 以下ができます. 秘密鍵の所有者が, トランザクションの実行を許可したことを署名によって確認する 1自体(トランザクションの実行を許可したこと)を否定できないことを保証する 秘密鍵の所有者でないと, 有効な署名は作れないので, 当然ですね. 署名されて以来, トランザクションが改ざんされていないことを証明する トランザクションの内容が書き換わると, トランザクションのハッシュ値も変わるので, 署名が無効になります. 署名から, トランザクションを作成したアカウントの特定(EOAアドレス=公開鍵を導出する) トランザクションにはfromアドレスが記載されていないので, 署名から送信元アドレスを計算する必要があります. 署名のデータ 署名には, $(r, s, v)$という3つのデータが入っています. このうち, $v$は チェーン識別子 です. 署名の作成 $m$がトランザクション(nonce, gasPrice, gasLimit, to, value, data, vを適切に設定し, rとsにはゼロを入れたもの)を, RLPでエンコードしたものとします. $k$は, 秘密鍵とします. 署名は, $(r, s) = F_{sig}(m, k) $ という感じで生成します. 署名をやってくれる$F_{sig}$の中身はどうなっとるんじゃいという話ですが, Ethereumで採用されている署名アルゴリズムはECDSA(楕円曲線デジタル署名アルゴリズム)です. 一応その手順を以下に記しておきます. 楕円曲線暗号よくわかっとらんので, 間違ってたりとかしたら教えてください. 一時的な秘密鍵として, 乱数$q$を生成する. $q$に対応する一時的な公開鍵$Q$を, 秘密鍵$q$から生成する. 署名作成のときに一時的に使う公開鍵を, 楕円曲線生成元$G$から生成します. $r$は, 一時公開鍵$Q$のx座標になる まあ楕円曲線ってこんな感じのやつで, 一時公開鍵$Q$は楕円曲線上の点だったと思いますので, そのx座標を$r$とするわけですね. $s = q^{-1}(keccak256(m) + r \cdot k) (\

ERC-165: Standard Interface Detection まとめ

先日EthereumのERC-165を読んでいたので, 備忘録として日本語でまとめを記しておきます. ERC-165: Standard Interface Detection このERCでは, スマートコントラクトがどのようなInterfaceを実装しているのかを公開・検出する方法を定義しています. これによって, 目の前のスマコンがERC-20準拠なのかとか, あのInterfaceを実装しているのかとかを調べることができるという嬉しいポイントがあります. Interfaceとは? これこれ. プログラミング言語によってはInterfaceの概念がないものもあったりして馴染みのない方ももしかしたらいるかもしれません. このコントラクトは, こういうメソッドを持つよ! というお約束を書くアレです. 標準化した内容 以下の4つを標準化しました. Interfaceの識別方法 コントラクトが実装しているInterfaceを公開する方法 コントラクトがERC-165を実装しているかを検出する方法 コントラクトが, 任意のInterfaceを実装しているかを検出する方法 1. Interfaceの識別方法 Interface識別子というものを導入します. Interface識別子というのは, 全てのFunction Selectorのxorを取ることで計算されます. Function Selector自体は bytes4(keccak256("関数名(引数の型)")) で計算されます. Function Selectorってなんやねんという方は, こちらの記事を読むとスッキリすると思います. Solidity Assembly入門 ~ Function Selector ~ - アルゴリズムとかオーダーとか なのでざっくり言うと, 目の前のコントラクトがERC-20に準拠しているか知りたかったら, ERC-20が備えているべきInterfaceの識別子を計算し, それをコントラクトに渡してお前はこのInterface持っとるかと聞けばいいわけですね. 2. コントラクトが実装しているInterfaceを公開する方法 目の前のコントラクトに, 「(少なくとも)このInterfaceをサポートしてますか?」と聞いたら, はい or いいえのbool

Polkadotの紹介

最近, ブロックチェーンにInteroperabilityを持たせようという話に興味が湧いたので, Polkadotというプロジェクトを調べてみました. 簡単にまとめたスライドを作成したので, ここに供養しておきます. Polkadotの紹介 from Hiroki Takemura

ErgoDash build log

初めて自作キーボードを組み立てた。 ということで、記事に残しておく。因みにこの記事は、キーボードに慣れるために、自作したErgoDashで書いている。 経緯 Irisいいなーと思っていたが日本国内ですぐ買えるところが見当たらなかったので、ErgoDashを買ってみた。 購入 必要なキットは遊舎工房さんで全て揃えた。 ErgoDash   左右分離型、格子配列のかっこいいキーボード。 数字キーもあって、親指キーが充実している。 自作キーボードはじめようと思ったきっかけが小指が腱鞘炎になりかけていたことなので、ShiftとかCtrlとか全部力強い親指に集約したかった。きっとEmacsキーバインド使いの方はわかってもらえるはず。小指死ぬ。 遊舎工房さんで販売されているのは、基板とかダイオード、Arduino Pro Microからケースまでいろいろ揃っているキット。 あとはキースイッチとキーキャップ、左右をつなぐイヤホンケーブルを買うだけで作れてしまう。 こうやってセットになっていると、僕のような初心者であっても間違った部品を買ってしまって時間と金を吸い取られるようなトラブルが無くなって嬉しい。  Kaith Speed 銀軸 僕はMBPのめちゃくちゃ高速入力ができるペチペチキーボードが大好きで、それくらい高速に入力できるスイッチが欲しかったのでこれを購入。10個 x 7セット。 正直後悔している...あまりに浅いところで反応するので、狙ったキーとその周りが同時に入力されてしまいやすい。まあ慣れの問題かな... 重さ自体はちょうどいい感じがする。 音はMBPをちょっと高くしたような感じで、大きさとしては同じくらい。図書館とかでは流石に静音化対策をしないと使えないかもしれない。 MDA BigBang キーキャップ。MDAという形状で、なんか上の方のキーから中央に向かってたわんでおり、中央の列以降はまた反り返っている。昇華印刷らしい。いい感じ。 差し色のオレンジキーはかっこいいが、緑はあんまり好きじゃなかったので使っていない。 そもそも選択肢がこれくらいしかなかった。海外で探せばもっと色々ありそう。 この他に、左右のキーをつなぐイヤホンケーブル(TRRSケーブル)も遊舎工房さんで買っている。あとPCと

物議を醸すvim.devとemacs.dev

Google Domainsで.devドメインが取得できるようになりました。それに伴い多くのデベロッパーが.devドメインを取得しています。 中でもユニークなのが vim.dev と emacs.dev の2つ。もうお察しですよね。クリックしてみてください。 宗教戦争となっている2つのエディタですが、vim.devをクリックすればemacsの公式サイトにリダイレクトされ、逆もまた同じくです。 初めて見つけたときは面白いネタだなぁと思ったのですが、批判の声も多くプチ炎上しているようです。 他の方も指摘されている通り、ドメインには公共性を持つという考え方があるようです。例えばNHKは nhk.or.jp が正式なリンクですが、 nhk.jp にアクセスしても nhk.or.jp へとリダイレクトされるようになっています。大きなサービスは基本的に同名の代表的なドメインをいくつか取得しておき、ユーザーがアクセスしやすいようにしているんですね。 これを例えば他のテレビ局が、アクセスを増やしたいがためにnhk.tvを取得して自局のアドレスにリダイレクトされるようにしたとします。とても許される行為ではありませんよね。 今回のVim, emacsの件も明らかに宗教戦争のネタであるのは明白とはいえ、同じようなことをしているので流石にこれはどうなの?という意見が上がっているわけです。 ここらへんは難しいところですね。