Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NBitcoinで学ぶOpen Assets Protocol(Colored Coins)

NBitcoinで学ぶOpen Assets Protocol(Colored Coins)

2017年8月29日に暗号通貨勉強会 ビットコインとか勉強会#10にて、Bitcoin2.0のOpen Assets Protocol(Colored Coins)をC#実装のライブラリNBitcoinで発行する方法を話しました。

Shu Kobuchi

August 29, 2017
Tweet

More Decks by Shu Kobuchi

Other Decks in Programming

Transcript

  1. 自己紹介 •  小渕 周(こぶち しゅう) •  キューブシステム 経営企画本部 技術戦略室 • 

    最終学歴:ブロックチェーン大学校         エンジニアブロンズコース
  2. Bitcoin2.0 •  Bitcoinを利用するもの   Colored Coins, Counter Party, Omni   オフチェーン(サイドチェーン、Lightning Network)

    •  Bitcoinを拡張した別のブロックチェーン   Ethereum(スマートコントラクト) •  Bitcoin1.0は亜種型(Litecoin, Monacoin, Dogecoinな ど) •  Bitcoin3.0はBlockchain as a Service(BaaS) 出典:「スマートコントラクト本格入門」P54-59
  3. Colored Coins •  4種類の実装方法をまとめた俗称で互換性は ない •  Open Assets Protocol, Colu,

    CoinSpark, ChromaWallet(Chromaway) •  独自通貨を発行するCounter Party(XCP)、 Omniとは違い、独自通貨なし •  色付けした後、Bitcoinとして送るとColored Coinsは焼却(XCPのProof of Burnとは違う)
  4. BTCとColoredCoins比較 •  BTCは元を辿ればcoinbase(マイニング報酬) •  coinbaseはインプットがなく、送信元の署名はな い •  つまり、発行主体がない •  債権債務関係を定義できない

    •  対して、Colored Coinsは元を辿れば送金元の署 名を含んでトークンが生成されている •  つまり、発行主体がある •  債権債務関係を定義できる •  Fintech革命【増補改訂版】 P80
  5. NBitcoin •  Nicolas Dorier氏(Bitcoin Core Developer)が開 発したC#実装のBitcoinライブラリ •  NBitcoinの”N”は”.NET Framework”より

    •  Bitcoin Coreではできない細かな設定の Transac_onを発行可能 •  Open Assets Protocolを使用したColored Coins 発行、送金をサポート
  6. NBitcoinインストール •  NBitcoin Github How to use •  hUps://github.com/MetacoSA/NBitcoin • 

    Visual Studio Community(Mac OSも可) •  hUps://www.microsob.com/ja-jp/dev/products/ community.aspx •  .NET Core(Mac, Linux) Windowsは.NET Framework •  hUps://www.microsob.com/net/core •  Programing Blockchain in C#(EBook) •  hUps://programmingblockchain.gitbooks.io/ programmingblockchain-japanese/content/ introduc_on/project_setup.html
  7. OAPのTX構造 Input Transac_on Output Output1 Output2 Marker Output Input Transac_on

    Output Output1 Output2 Marker Output 発行 送金 Assetsを含む Assetsを含む
  8. AssetID, AssetAddress •  Colored CoinsをOAP非対応のウォレットで送 信するとアセットが破壊される •  破壊を防ぐためにOAP独自のアドレスを用い る • 

    AssetIDは発行元BitcoinAddressから一意に決 まる(不可逆だが、TXを追えばわかる) •  AssetAddressはBitcoinAddressから一意に決 まる(可逆)
  9. NBitcoinでTXをブロードキャスト •  Mainnet, Testnet, Regtestにブロードキャスト •  2つの方法 1)QBitNinja 2)bitcoindと併用 • 

    LinuxにてBitcoinCore(bitcoind)と.NET Core •  hUps://github.com/MetacoSA/NBitcoin •  “How to use in .NET Core”を参照
  10. Blockchain Explorerで確認 •  Testnet用Blockchain Explorer •  hUps://live.blockcypher.com/btc-testnet/ •  ↑TX発行後すぐに確認可能 • 

    Testnet用coinprism(OAP実装)Explorer •  hUps://testnet.coinprism.info/ •  ↑ブロックに取り込まれないと検索できない •  参考)Testnet用BTC(tBTC)を獲得(Faucet) •  hUps://testnet.manu.backend.hamburg/faucet
  11. LEB128 Encode •  21,000,000 ↓2進数 •  1010000000110111101000000 •  ↓下の位から7桁ずつ区切り、頭は0で埋める •  0001010

    0000001 1011110 1000000 •  ↓先頭のみ頭に0をつけ、他は頭に1をつける •  00001010 10000001 11011110 11000000 •  ↓16進数 •  0x0a 0x81 0xde 0xc0 ↓リトルエンディアン •  0xc0 0xde 0x81 0x0a •  c0de810a
  12. LEB128 Decode •  6a0a4f41010001c0de810a00 •  OP_RETURN 4f41010001c0de810a00 •  4f41 /

    0100 / 01 / c0de810a / 00 •  0xc0 0xde 0x81 0x0a ↓ビッグエンディアン •  0x0a 0x81 0xde 0xc0 •  00001010 10000001 11011110 11000000 •  1010000000110111101000000 •  64+256+512+1024+2048+8192+16384+4194304+ 16777216 = 21,000,000