Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アンティーク「マイニング」 - 秒速 148 EHash で走るビットコイン -
Search
AntiqueR
October 18, 2020
Programming
0
39
アンティーク「マイニング」 - 秒速 148 EHash で走るビットコイン -
KIT Developers Meetup #5 オンラインLT会で発表した資料です。
AntiqueR
October 18, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
[SF Ruby, March 2024] Rails on Wasm
palkan
0
370
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
8
2.2k
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
300
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
7
3.3k
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
280
Front-end application development, Symfony-style(s)
dunglas
2
1.9k
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
310
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
39
17k
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
630
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
270
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Building Your Own Lightsaber
phodgson
97
5.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
Teambox: Starting and Learning
jrom
128
8.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
A Tale of Four Properties
chriscoyier
150
22k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
Infographics Made Easy
chrislema
237
18k
Writing Fast Ruby
sferik
619
60k
Transcript
アンティーク「マイニング」 - 毎秒 148 Ehash で走るビットコイン -
毎秒 148 Ehash 1垓4800京 ハッシュ / 毎秒
About Me AntiqueR / アンティーカー - C# 好き。 - 最近は
.NET Core でコンソールアプリ。 - MVVM 好き。 - 付喪堂骨董店が好き。 - ブロックチェーン好き。 - 儲かってません。 Twitter : GitHub : AntiquePendant AntiquePendulum
ブロックチェーン
Blockchain ブロックチェーン is ハッシュ値の連続体 出典: Block Chain — Bitcoin :
https://developer.bitcoin.org/devguide/block_chain.html
Blockchain ブロックチェーン is ハッシュ値の連続体 出典: Block Chain — Bitcoin :
https://developer.bitcoin.org/devguide/block_chain.html 前のブロック ハッシュ 前のブロック ハッシュ 前のブロック ハッシュ
Blockchain 前ブロックハッシュ タイムスタンプ Difficulty Nonce トランザクション : 0xFFFF.... : 2020/10/17
: 3 : 2083236893 : Alice から Bob に10コイン { Byte[] } シリアライズ E38193e381aee38199e381b0e381a7e4b880e795aae5 8fafe6849be38184e381aee381afe382a6e382a3e382ba
Blockchain 前ブロックハッシュ タイムスタンプ Difficulty Nonce トランザクション : 0xFFFF.... : 2020/10/17
: 3 : 2083236893 : Alice から Bob に10コイン { Byte[] } シリアライズ E38193e381aee38199e381b0e381a7e4b880e795aae5 8fafe6849be38184e381aee381afe382a6e382a3e382ba SHA256 ダブルハッシュ 32 バイトの値になる。 これがいわゆるブロックID
マイニング
ハッシュ値の「ビーチフラッグス」
Mining マイニング = 誰よりも早く目的のハッシュを計算する。
Mining 上位 n ビットが0のハッシュ n の値は Difficulty によって決定される 条件
Mining なんでそんな面倒なことするの?
Mining 不正を防止するため
Mining 計算が一番かかったチェーン = 正当なチェーン
Mining 世界とのビーチフラッグスに 勝たないといけない。 不正をするためには =世界の51%以上の 計算能力 を保持しないといけない
Mining 不正をしたい!
Mining あらすじ 超天才美少女のアリスは 10 Bitcoin を支払って AntiqueR から 絵画 を買いました。
10 Bitcoin の価値はなさそうなので不正して取り返すことにしました。 絵画
Mining 今のブロックチェーンの状態 Block 1 Block 2 Block 3 Block 4
AからBに 10Bitcoin XからYに 3Bitcoin CからZに 1satoshi アリスから僕に 10Bitcoin 累積 DIfficulty
Mining 不正をすると… Block 1 Block 2 Block 3 Block 4
AからBに 10Bitcoin XからYに 3Bitcoin CからZに 1satoshi Block 3 Block 4 Block 5 支払った過去 をなくす
Mining でも・・・ Block 1 個のブロックに 148E Hash/s の 計算パワーがつぎ込まれている。
Mining でも・・・ Block それを世界より速く? 148E Hash/s なのに?
Mining アリス「無理ゲー!」 少なくとも 74 EHash/s の計算能力を手にしなければいけない。
Mining めでたしめでたし 逆に言えば、採掘者が少ない仮想通貨は 51% 攻撃の被害を受ける可能性が高いということです。
実践 .NET Core 開発環境くらい皆さんありますよね?
Mining それではマイニングやってみよう。 本来は電子署名などが入りますが省いてます。
Blockchain もしハッシュ値が条件をクリアできなかったら?
Mining Nonce++;
Blockchain Nonce の値を変動させることでデータを変化させる。 つまり Hash 値が変わる!
Mining
Mining 上位 18ビットが0のハッシュ 条件 ちょっとかかります。 終わったら Programs.cs の_bits の値を増やして遊んでみて下さい。
Mining while (!token.IsCancellationRequested) { block.Nonce = nonce++; block.Timestamp = DateTime.UtcNow;
var hash = block.ComputeId(); Console.Write("+"); if (!HashCheck(hash, target)) continue; block.Id = new HexString(hash); return true; } Nonce を増加 => ハッシュ化 => 条件と比較 を繰り返す。 Miner.cs
まとめ 35枚 / 20min で走る僕
summary 話したこと - ブロックチェーンとは - ハッシュの連続体 - マイニングとは - ハッシュ値のビーチフラッグス
- Nonce を変化させてダブルハッシュ - なぜ「51%攻撃」なのか - 世界の半分を手に入れろ。
アンティーク「マイニング」 - 毎秒 148 Ehash で走るビットコイン - Twitter : GitHub
: AntiquePendant AntiquePendulum