ma(18)53この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Abend!ベルリンから伊藤です。先日、しがひによるブロックチェーンの社内勉強会が行われました。Airで配信されている様子。(録画配信されておりますので、社内でご興味ある方はぜひご視聴ください!)今回はそこで説明された内容を抜粋して紹介し、またその後のブロックチェーン用マシン組み立ての模様をお届けします。ブロックチェーンとはブロックチェーンの概要ブロックチェーンとは「データベース」であり、分散された台帳記録です。Aのノードに送られ、そこからリレー形式で全ノードにブロードキャストされる。)このように互いに受発信している世界なので、「あちら側」(クライアント側/サーバ側)がないマイナーと呼ばれる参加者ノードのうち、たった1ノードがブロックと呼ばれるトランザクションを収容できる容器を生成できる生成されたブロックは、ゴシッププロトコルでそのブロックを持っていないノードに手当たり次第に伝播され、ノードにより整合性を検証・承認されてからチェーンとして接続される各用語の詳細はこの後少しずつ説明します。ちなみに、マイナーは「minor/少数派」ではなく、「miner/採掘者」です。どのくらい分散しているのか?Bitcoinのノードの所在を確認できるサイトがいくつかあり、例えばこちらのサイトを参照すれば、各ノードのIPアドレスも調べられます。現時点で、1万台くらいで分散されているということになります。AGENTS」で「Satoshi〜」というのがBitcoinのエージェントです。(うちの社長ではなく、ビットコインの考案者がサトシ・ナカモトとされるため)「NETWORKS」(上の画面)からAmazonが全体の6%程度を占めていることが分かります。BitcoinはAWS上、EthereumはAzure上で構築されていることが多いそうです。ちなみにEthereumでAzureが多いのは、MicrosoftがEthereumのファウンデーションに関わっている背景があるとのことです。Workと呼ばれる膨大な暗号の計算が必要で、この計算競争(マイニング)に勝ったマイナーだけがブロックを作成できます。→全ノードが検算し、前のブロックとの整合性が取れているものだけをチェーンへ接続し、不正なものは接続されません。→最も長いチェーンを信用するものとされており、時間の経過とともに分岐したチェーンの中で長い枝がチェーンとして定着していきます。マイニングについてこのマイニングでブロックを生成することによってマイナーはお金を稼ぐわけですが、この膨大な計算競争は消費電力が問題になる程に莫大で、通常のPCではできません。マイニングは通常は10分程度かかり、マイナーたちのノード性能が上がった場合などでも平均計算時間が10分となるように暗号の難易度が調整されています。ビットコインにおける記帳方法ビットコインの記帳方法は、銀行口座のように「xx円入金し、xx円出金した結果、そこにxxxx円の残高がある」といったものではなく、複式簿記の借方と貸方のように「インプット」と「アウトプット」があり、それぞれの総額が必ず一致することになっています。インプットに使っていない「未使用のアウトプット」の事をUTXOと呼び、トランザクションの履歴を逆算した時にUTXOの総額がそれぞれの残高、所持金ということになります。簡単な例で説明しますと例えば、以下のような送金があったとします。→花子は3ビットコイン、マリッサは3ビットコイン、ジョージは4ビットコインの残高すると、トランザクションの記帳(インプットとアウトプット)は次のようなイメージとなります。7btc"というUTXOができる」という感覚です。実際のトランザクションデータには「現時点でのUTXO」のようなデータは含まれず、未使用のアウトプットがアドレス(人)に一つとは限らないため、各自の残高を確認するにはUTXOを逆算して割り出すということになります。上記の記帳は、厳密には各トランザクションはInput>Outputとなっており、その差額が「手数料」となります。この手数料は、後述の「コインベース」に加えてマイナーに支払われます。上図は実際の1トランザクションデータの内容です。このように、インプットとアウトプットは少し差額があり、これは手数料となっています。手数料の最低額は決まっていますが、送金者はこの金額を多めに設定することで、マイナーに対してより優先的にトランザクションを取り込んでもらうことができます。トランザクションとブロックとチェーンの関係トランザクション(TX)=「インプット」と「アウトプット」ブロック=ブロックヘッダ+コインベース+TX+TX+TX...チェーン=ブロック+ブロック+ブロック+...ブロックを構成する、ブロッグヘッダとコインベースについて解説します。ブロックヘッダー(図の青枠内)は各ブロックに付くもので、下記により構成されます。Work(マイニング結果の答え)ブロック自身のトランザクションのハッシュコインベース(図の赤枠内の先頭2行)はマイナーへの採掘報酬で、今は12.5btc(現時点で2000万円程度)です。これはInputの入金元がなくOutputが12.5btcということになるので、通貨発行の役割にもなっています。世界各地でブロック生成が約10分ごとにされるたびに2,000万円程度がマイナーへ支払われ、その分だけインフレしているということになります。この仕組みで不正ができないのか?送金者とマイナーが同一人物であったり、結託することにより、不正なトランザクションデータをブロックに取り込むことは可能です。アドレスAが以下のように、共にOutputが10btcというトランザクションをほぼ同時に行います。→(1)の代わりにトランザクションとして含めたブロックを生成こうして(1)を含む他ノードに作成されるブロックとは矛盾する、(2)を含む不正なブロックを作成して、前のブロックに接続させて不正なブロックチェーンの分岐ができてしまいます。このような意図的な不正でなくとも、ほぼ同時刻に同じブロックが作成され、ネットワークの遅延などによりブロックが複数存在することはあります。いずれの場合でもブロックは全ノードにより検証されるので、他ノードによる後続のブロックがチェーンとして接続されないと正当なチェーンとして定着されることはありません。不正なブロックをチェーンとして定着させられるほど、毎回ブロックを作成することができれば可能ということになりますが、現実には不可能なため、不正はできないということです。(Ethereumのユースケースで、シリア難民キャンプで食料配給のために、難民の虹彩認証でウォレットを作った)Ethereumについてブロックチェーンといえばビットコインと思われがちですが、技術者としてはこちらに注目です。特徴トランザクション指向のBitcoinと異なり、アカウント指向のため実装が単純1ブロック生成にかかる時間は、15-20秒程度ブロックサイズは可変で、上下制限なしBitcoinと異なり通貨発行の上限がないため、インフレ傾向が強いトランザクションだけでなく、コントラクトコードを含めることができるカスタムトークンによる通貨発行が初めから想定されている→こちらの記事で実際に「めそコイン」を作ってみてますベルリンが本場(開発者コミュニティ)コントラクトコードについては下記をご参照ください。コントラクト・コードに様々な動作をプログラムすることで、そのContractにより名前管理やトークン管理のようなアプリケーションが実現できます。コントラクト・コードの実行は採掘者によって行われ、実行結果は公開元帳であるブロックチェーンに書き込まれていき、特定の中央機関なくアプリケーションが動作していきます。開発におけるアーキテクチャは以下のようになります。多くは「Mist」というソフトウェアをブラウザ(ウォレット)として使う「Parity」はブロックチェーンの同期の早いクライアントで、同時にブラウザ(ウォレット)の役割もある→Parity使用の様子はこちらの記事で「MEW」はJavascriptで書かれており、「myetherwallet.com」からアクセスでき、軽い終盤は、実際の画面を元に説明がありましたが、訳が分かりませんでした(汗この辺はご自分で触って勉強して、「ブロックチェーンエンジニア」になってください。ベルリンオフィスの取り組みしがひ「新たにWindowsマシンを立てて、第8の社員として仕事させよう。私「はぁ、おもしろそうですね(この人は何を言っているんだろう...」ということで、Windowsマシンを組み立てました。構成要素はこちらの通り。組み立てオフィスに来るとデスクを占領する巨大な箱たち、どれから箱を開ければいいやら分かりません。有識者Tranさんに指導頂きながら組み立てていきました。マザーボード(ASUS)これに、CPU、メモリ、SSD、ファンなんかを取り付けるので、基本的にこの説明書を確認します。Threadripper)とにかく箱がかっこいい。巷では「スリッパ」と呼ぶらしいです。スリッパの取り付けはこの動画を参考にしました。CPUクーラー(Noctua)これの説明書に従い、先で取り付けたCPUの上に大層なファンを装着します。Predator)、SSD(Intel)マザーボードの説明書に従って取り付けます。ここまでで一旦マザーボード上の作業は終わり。本体ケース(Thermaltake)この説明書と取り付けるもの(マザーボード、電源ユニットetc)の説明書を見比べながら、取り付けていきます。電源ユニット(Corsair)ファンの風が外に向くよう、本体ケースに取り付けます。マザーボードも取り付けます。グラフィックボード(Sapphire)これも取り付けます。最後に配線して、蓋して終わりです。配線はマザーボード、電源ユニット、本体ケースの説明書を熟読。ちなみに、USB3.0のケーブルを差す箇所に「USB31G1_910」と「USB31G1_1112」があり、違いが分からずハマりました。Gen1」を意味し、3.0でも問題ないのですが、"910"と"1112"は何かのバージョンかと必死に調べました。結果、表側にUSBポートが8個あったので、ただの9番10番、11番12番ということだったようです。(なので910が正解)終わりにということで(途中だいぶ省きましたが)、ベルリンオフィスでは第8の社員が絶賛マイニングしてくれています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨122皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。夏目祐樹414こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介257SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。