ERC721規格のNon-Fungible Token (NFT) をC2Cで取引できる多機能マーケットプレイスの提供

Photo by Fabrizio Conti on Unsplash

こんにちは、株式会社Kyuzanの小宮山です。

本記事では、我々がブロックチェーン事業者向けに開発した「Kyuzan NFT Marketplace」を紹介し、そのシステム構成や開発した上で得たTipsを共有します。より詳細な情報を知りたい方や実際に動いているデモを見たい方は気軽にHPメールにてご連絡ください。

オンチェーンのみで作るマーケットプレイスと比べ、OpenSeaやKyuzan NFT Marketplaceのように「Gas削減のためにオフチェーン要素を組み込んだ多機能なマーケットプレイス」は、どうしても大規模なシステムになってしまいます。ブロックチェーン上でデジタルアセットとしてトークンを発行したいと考えている事業者様やプロダクト開発者様に本システムを自社のシステムに組み込める …


Photo by Dominik Rešek on Unsplash

この記事では、イーサリアム(Ethereum)のトランザクションに署名付きデータを埋め込み、その署名をコントラクトで検証する方法を説明する。

システム内にこの仕組みを取り入れることで、一部の処理をオフチェーンで実行でき、不要なgasの削減や処理の高速化を実現できる。

  1. トランザクションの署名
  2. トランザクション内データの署名
  3. 具体的な署名・検証の実装方法
  4. まとめ

参考資料

1. トランザクションの署名

イーサリアムのトランザクションは、必ず送信者によって署名がされている。こうすることで、誰でもそのトランザクションの送信者を検証できる。

この署名には、ECDSA(Elliptic Curve Digital Signature Algorithm)というアルゴリズムが用いられている。


“snow covered rocky mountain under clear sky at daytime” by Julian Zett on Unsplash

前半では、アップグレード可能なコントラクトの仕組みについて説明した。

後半である本記事では、実際にZeppelinOSを使用した実装について説明する。

  1. ZeppelinOSとは?
  2. ZeppelinOSを使ってアップグレード可能なコントラクトを実装する
    2.1. zosアプリケーションのセットアップ
    2.2. zos-libのインストール
    2.3. MyContract.solを実装
    2.4. MyContractをzosアプリケーションに登録
    2.5. Ganacheにコントラクトをデプロイ
    2.6. Proxy Contractのデプロイ
    2.7. コントラクトのアップグレード
  3. まとめ

1. ZeppelinOSとは?

ZeppelinOSは、アップグレード可能なコントラクトを実装するためのフレームワークで、そのためのライブラリ …


“photo of mountain during cloudy day” by Wolfgang Lutz on Unsplash

Ethereumにデプロイされたコントラクトのコードは、基本的に書き直すことができない。

コントラクトに機能を追加したい場合は新しいコントラクトを再度デプロイする必要があり、その際コントラクトのアドレスが変わってしまう。これでは、元のコントラクトをアップグレードしたとは言い難い。

しかし、実際にサービスを運営したい場合、コントラクトがアップグレード可能であることは重要な要素である。そうでなければ、リリース前に全てのバグをなくさなくてはならなくなる。この点には実際に我々も不自由さを感じたことがあり、以前EthoccerというDappsを開発した際、リリース前に通常のWebサービスでは考えられないほどの緊張感があった。

ZeppelinOSは、アップグレード可能なコントラクトを記述するためのフレームワークであり、この問題を解決する手助けをしてくれる。

前半である本記事では、ZeppelinOSを使ってアップグレード可能なコントラクトを実装する上で、押さえておくべきポイントを説明する。実際にZeppelinOSを使用する部分については、後半の記事にまとめる。

  1. アップグレード可能なコントラクトとは?
    1.1. 通常のスマートコントラクト
    1.2. アップグレード可能なスマートコントラクト
  2. 参考:アップグレード可能なコントラクトの詳細な理解

1. アップグレード可能なコントラクトとは?

コントラクトの「アップグレード」には、以下の3つが含まれる。

  • 既存の関数の実装変更
  • 新しい関数の追加
  • 新しい変数の追加

ここで注意しなくてはならないのが、「変数の削除」「変数の順番の変更」ができないことである。

アップグレード可能なスマートコントラクトの仕組みを理解することでそのような制約の原因もわかるのだが、それらを細部まで理解することは、意外と難しい。

なのでここでは、アップグレード可能なコントラクトの仕組みを感覚的に理解し、ZeppelinOSを使った開発ができるようになることを目的として説明しようと思う。

1.1. 通常のスマートコントラクト


Introduction

Ethoccer is a FIFA World Cup 2018 match result prediction game that runs on the blockchain. Anyone can play it for free as Ethoccer is deployed on Ropsten Test Network*. In addition, users who have the highest scores at the end of the World Cup will be given ETH of Main Network*.

  • play for free
  • get prizes

For details, please see the following page.

※ The Main Network is a network where “real” Ethereum is running, the Test Network refers to the network where “Ethereum” for “developer” is running. …


“green grass field in the mountain” by Etienne Delorieux on Unsplash

はじめに

Ethoccerは、ブロックチェーン上で動くFIFA World Cup 2018 試合結果予測ゲームです。 EthoccerはRopsten Test Network上にデプロイされているため、ユーザーは無料で遊ぶことができます。 さらに、W杯終了時に成績が上位だったユーザーは、Main NetworkのETHを得ることができます。

  • 無料で遊べる
  • 賞金がもらえる

詳しくは、以下のページをご覧ください。

※ Main Networkとは”本物の”Ethereumが動作しているネットワークで、Test Networkは”開発者用の”Ethereumが動作しているネットワークを指します。Test Network上のETHは無料で手に入れることができ、開発者はこのネットワーク上にsmart contrac …

こみー / Ryo Komiyama

🏔Kyuzan🏔 Blockchain Startup @ Tokyo ▼ex 東大 暦本研 ▼ex Rhizomatiks Research

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store