Pebble Coding

ソフトウェアエンジニアによるIT関連技術の備忘録

仮想通貨

仮想通貨、ブロックチェーンとは何か

2018年は仮想通貨、ブロックチェーンが特に日本で世間一般に認知された年でした。 仮想通貨、ブロックチェーンとは何なのか、今後どうなってゆくのかについてまとめておきたいと思います。 仮想通貨 2008年11月にサトシナカモトという匿名の人物が論文を書き…

iOSウォレットアプリ外部ライブラリ依存関係

iOS版ウォレットアプリにはソースが公開されているものがあります。ソースが公開されていれば、自分で脆弱性があるかどうかを調べたり出来るので、ソースが公開されていないものに比べてその点がメリットです。 いくつかのアプリで外部ライブラリ依存関係を…

主要な仮想通貨のネットワークハッシュレート

いくつかの主要な仮想通貨のネットワークハッシュレートを調べてみました。 値が大きいほど、ある種の攻撃に対して耐性を持ちます。 ビットコインの現在のネットワークハッシュレートはこちらによると https://blockchain.info/charts/hash-rate 30G * GHash…

Ethereum の署名とBitcoin の署名

Ethereum の署名の仕様はイエローペーパー https://ethereum.github.io/yellowpaper/paper.pdf に記載されています。 n = 115792089237316195423570985008687907852837564279074904382605163141518161494337 Rは点でx座標とy座標を持ちます。 n は secp256k1…

base58checkフォーマット出力の先頭文字が決まる理由

ビットコインで使われているbase58checkフォーマット出力の先頭の文字が何になるかって教科書にはよく書かれていますが、 どうやって算出しているのか気になったので、確かめてみました。 取りうる最小値と最大値を与えれば出力値の範囲が分かるという理屈で…

base58check フォーマットとビットコインアドレス

bitcoinでは色々なところでbase58checkフォーマットが使われています。 base58checkフォーマットを行う関数をb58checkとして実装してみたのが以下です。 ここでは、公開鍵から、メインネットのビットコインアドレスを計算しています。 ビットコインアドレス…

macOS に bitcoin explorer をインストールする

$ brew install bx 秘密鍵を生成しファイルに出力(32バイトhex) $ bx seed | bx ec-new > private_key $ cat private_key 4a1bdbb5164f0b096ab56ec74399222e44d13b2a93d5ad7fe8a341bbfa197c46 秘密鍵から公開鍵を計算しファイルに出力(33バイトhex) 先頭が0x…

ripemd160をpythonで試す

ripemd160は160ビット(=20バイト)の値を返すハッシュ関数です。 pythonでは以下で計算できます。 #!/usr/bin/env python import hashlib h = hashlib.new('ripemd160') h.update(b"abc") r1 = h.hexdigest() print(r1) print("len "+str(len(r1))) 8eb208f7e…

base58をpythonで試す

base58は大まかに言ってbase64を改良したものです。 base64は64個の文字とパディングに=(イコール)を使うものです。WEBプログラマなら説明は不要でしょう。 base58はbase64から小文字のl(エル),大文字のI(アイ),大文字のO(オー),0(数字のゼロ),+(プラス),/(…

batchTransferでみつかった脆弱性を確かめる

BeautyChain (BEC)などに実装された batchTransfer に見つかったぜい弱性 CVE-2018-10299 medium.com について試してみました。 remix で検証しました。 この 0x8000...0000 に2を掛けると、solidify のuint256実装では、桁あふれした分が差し引かれ、_amoun…

bitcoin-cli コマンドまとめ その2

ウォレットのダンプ $ bitcoin-cli dumpwallet a.txt { "filename": "/Users/pebble8888/Library/a.txt" } 第2引数には出力先のファイル名をいれます。 約4000行のファイル名が出力されました。先頭を少し加工して見てみます。 (ちなみにtestnet環境のもので…

ruby製bitcoinツールのインストール

$ sudo gem install bitcoin-ruby $ sudo gem install openassets-ruby $ sudo gem install ecdsa

bitcoin-cli コマンドまとめ その1

Original Bitcoin client/API calls list - Bitcoin Wiki コネクション数表示 bitcoin-cli getconnectioncount 8 コネクション情報表示 bitcoin-cli getpeerinfo [ { "id": 8, "addr": "35.187.63.250:18333", "addrlocal": "103.5.140.142:61962", "addrbin…

macos環境でbitcoinフルノード をソースからビルドする(version 0.16 2018-03-25)

macos環境でbitcoinフルノードをソースからビルドします。 以下の手順通りでOKです。 https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md $ brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python…

コミットメントスキーム(=ビットコミットメント)

コミットメントスキームの概念を理解するために、まず、コイン投げプロトコルを考えます。 Alice,Bobの2人が同じ場所に居合わせ、Aliceがコインを投げ、Bobが表が出るか裏が出るかを当て、勝敗を決めるゲームを考えます。 このゲームの手順のことをプロトコ…

ビットコインにおけるブルームフィルターとマークルツリーパス

現時点(2018年2月)において2009年から作られたビットコインのブロックの数(=ブロック高)は、 こちら Bitcoinブロックエクスプローラ - ブロックチェーン をみるとわかるように、 508786 です。 最新の4つのブロックを見ると、一つのブロックには、200 ~ 160…

クラウドマイニング HashFlare で SHA256 (BTC) にいくらか突っ込んでみた(2018年2月)

クラウドマイニングやってみたいなーという簡単な気持ちで、HashFlare のSHA256 (BTC) に少額を突っ込んでみました。 HashFlareはスコットランドの会社らしいです。 メリット、デメリット マイニング機材の購入維持、マシンの騒音を気にする必要がないという…

Monacoin を MacBook Pro で CPU マイニングできるか試してみた

この記事は2018-1-28時点のものです。備忘録として手順を残しておきます。 マシン: MacBook Pro 2017 モナコインのウォレットをダウンロード Monacoin project ここからmacOSX版のウォレットをダウンロードします。 立ち上げると全トランザクションのダウン…

Crypto Currency(仮想通貨) リスト

Crypto Currencyの公開されているソースリポジトリと実装言語をまとめてみました。(2017年12月) ついでに、githubで管理されているものはissueの数を数えて見ました。 ご指摘ありましたら教えていただけると助かります。 Bitcoin(BTC or XBT) 承認時間: 10 …

Bitcoin フルノードを立てるのに必要なもの

Bitcoin フルノードを立てるのに必要なものをメモしておきます。 最低限必要なスペック 最新バージョンのWindows, Mac OS X, Linuxが動作するするハードウェア 145GB の空きディスクスペース 2GBメモリ 400Kbpsのアップロードスピードの通信回線 高いアップ…

ビットコイン購入までの道のり その(1)

私がビットコインを入手した経緯は2015年に Bountysource というソフトウェアを作成したり、バグを直したりして報酬を得るサイトでバグを直したことによる報酬をビットコインで受け取ったことでした。2015年当時はUS DollorとBitCoinのどちらかが選べました…