Pebble Coding

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

仮想通貨

仮想通貨取引の納税

会社の給与以外の所得があり、それが20万円を超えた場合は確定申告を行う必要があります。 この時、国税を国へ、市民県民税を市へ支払う必要があります。 No.1900 給与所得者で確定申告が必要な人|国税庁 例えば、2019年1月1日から2019年12月31日に行った仮…

bitcoinのgenesis blockの情報を見てみる

ビットコインのgenesis blockつまり、最初のブロックの情報を見てみます。 まず、0番めつまり、genesis block のブロックハッシュを取得します。 $ bitcoin-cli getblockhash 0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f 指定ブロ…

dual isogeny

楕円曲線のlattice(格子)を考える。 lattice上では無限遠点z=0である。格子上の点は全て無限遠点である。 C/L=Eは無限個の点を持つが、そのうち3倍点を考える。 3倍点とは点zを3つ加算したものが0になる点つまり、z+z+z=3z=0となる点のことである。 この点…

仮想通貨取引の手数料(fee)

仮想通貨取引の帳簿(ledger)をつけていたところBTCのウォレットや取引所の残高と帳簿上の残高(balance)が一致しませんでした。調べまわったところ、原因がほぼ分かったのでメモしておきます。 トランザクション手数料と取引所の手数料を計上していなかったの…

bitcoin ウォレットダンプの値をpythonで計算してみる

ウォレットをテキストファイルに出力する。 $ bitcoin-cli dumpwallet pebble8888wallet.txt { "filename": "/Users/pebble8888/Library/Application Support/Bitcoin/pebble8888wallet.txt" } $ cat pebble8888wallet.txt # Wallet dump created by Bitcoin…

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

macOS 10.14.2 mojave に bitcoin core をインストールしてみます。 testnet で550MBのプルーンモードで起動させるので、ディスク容量の空き容量はは2GBあればよさそうです。 (550MBを指定しても2GBのサイズになる理由は分かっていません。) mainnet で起動…

仮想通貨取引の基本知識

仮想通貨取引について最低限の知っておくべき基本的な知識についての解説を行おうと思います。 取引所と販売所とFX 仮想通貨を売ったり買ったりする方法として、取引所と販売所とFXというサービスを使います。 ここでは例としてBitFlyerという会社を用います…

仮想通貨取引で利益を出すには?

仮想通貨取引で利益を出す方法はたくさんありますが、メジャーな方法のみを挙げてみます。利益を出すには、通貨を安く買って高く売る。これが基本になりますが、いくつものバリエーションがあります。 裁量トレード スキャルピング 人が自分の判断とタイミン…

仮想通貨投資と納税

仮想通貨投資を行う場合、納税をどうしたらよいのか気になると思います。 去年は仮想通貨で利益が出たため、初めて確定申告をしました。 情報が少なく、試行錯誤して、だいぶ苦しみましたので、ポイントをメモしておきます。 今年確定申告する方の参考になれ…

Blake2b を swift で実装してみた

Blake2 というハッシュ関数があります。 MD5,SHA-1などといういわゆるハッシュ関数の仲間です。 特徴としては、MD5,SHA-1,SHA-2,SHA-3よりも計算が高速で、SHA-3と同程度のセキュリティ(衝突耐性など)があるようです。 MD5などとは異なり、seed(key)を指定で…

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

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です。 GUI版をインストールしたくない場合はqtを省略します。 https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md $ brew install automake berkeley-db4 libtoo…

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

コミットメントスキームの概念を理解するために、まず、コイン投げプロトコルを考えます。 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のアップロードスピードの通信回線 高いアップ…