2014-06-01から1ヶ月間の記事一覧

独自暗号貨幣を作ろう 第12回

第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 第10回 第11回 <ブロック> 最も基本的な取引についてはある程度実装できましたので、次はブロックの実装をしていきたいと思います。ブロックとは、取引の集まりに仕事証明に必要な幾つかの情報を添…

独自暗号貨幣を作ろう 第11回

第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 第10回 <修正1> TXBLOCKBASE抽象クラスのId仮想プロパティの実装が間違っていたので修正します。 IdCacheを計算した後はIsModifiedフィールドを偽に変更しなければなりませんでした。 public abst…

独自暗号貨幣を作ろう 第10回

第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 <取引の有効性の検証> 取引入力への署名を実装することができたので、次は取引の有効性の検証を実装しましょう。現時点で、取引には新しい貨幣を生成する取引と貨幣を移動する取引の2種類がありま…

次世代電子契約及び分散型応用ソフトウェア基盤#02

01歴史 分散型の電子貨幣の概念は、不動産登記簿等の別の応用と同様に、数十年間考えられてきたものである。1980年代及び1990年代の匿名電子貨幣手続きは大部分をChaumの不視化(Chaumian blinding)として知られている基本暗号要素(cryptographic primitiv…

独自暗号貨幣を作ろう 第9回

第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 <微修正1> これまで、額面価格を保持する型はulong型としてきましたが、将来的に自動会計処理等を実行できるようにしようと思うと、負の額面価格も扱えた方が都合が良いので、long型に変更することにし…

独自暗号貨幣を作ろう 第8回

第1回 第2回 第3回 第4回 第5回 第6回 第7回 <電子署名> 電子署名の枠組みを実装します。 Bitcoinと同様に楕円曲線DSAを使用します。但し、secp256k1ではなく、取り敢えずは普通の(.NET Frameworkが提供している)楕円曲線DSAにします。普通の楕円曲線DSA…

独自暗号貨幣を作ろう 第7回

第1回 第2回 第3回 第4回 第5回 第6回 <暗号学的要約関数> 暗号学的要約関数を実装します。必要になるものを考えます。 1.ノード識別子(ノード識別子はノード情報の暗号学的要約値) 2.口座番号(口座番号は楕円曲線DSAの公開鍵又はその暗号学的要約値) …

独自暗号貨幣を作ろう 第6回

第1回 第2回 第3回 第4回 第5回<塵埃取引出力規制> 塵埃取引(dust transaction、額面価格が極めて小額であるような取引出力を有する取引)によるブロック鎖の肥大化(ブロック鎖の保持に必要な記憶領域が深刻な速度で増大していくこと)を阻止するために…

独自暗号貨幣を作ろう 第5回

第1回 第2回 第3回 第4回 <貨幣を移動する取引> 貨幣を移動する取引は1つ以上の取引入力と、1つ以上の取引出力を含みます(Bitcoinの場合、もう少し追加の機能があったりするのですが、取り敢えずは単純なものを考えましょう。必要なら後で追加実装すれば…

2つの自然数列を結合したものの要素数が夫々の自然数列の要素数の和に等しいことの証明

Coq

Inductive nat_list : Set := NNil : nat_list NCons : nat -> nat_list -> nat_list. Fixpoint nlength (ls : nat_list) : nat := match ls with NNil => O NCons _ ls' => S (nlength ls') end.Fixpoint napp (ls1 ls2 : nat_list) : nat_list := match ls…

次世代電子契約及び分散型応用ソフトウェア基盤#01

2009年1月、Satoshi NakamotoがBitcoinのブロック鎖(blockchain)を最初に作動させたとき、同時に彼は当時未だ試されたことのなかった急進的な概念を2つ導入していた。1つは「Bitcoin」、即ち、固有の価値や中央発行者のような裏付けを持たずして価値を維持…

独自暗号貨幣を作ろう 第4回

第1回 第2回第3回<新しい貨幣を生成する取引> Bitcoin型の暗号貨幣においては、(全ての種類の)取引には1つ以上の取引入力(transaction input)と、1つ以上の取引出力(transaction output)が含まれます。 取引入力はどの取引出力を使用する(spend)か…