IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ティーゼロ・アイピー,エルエルシーの特許一覧

<>
  • 特許-アップグレード可能な証券トークン 図1
  • 特許-アップグレード可能な証券トークン 図2A
  • 特許-アップグレード可能な証券トークン 図2B
  • 特許-アップグレード可能な証券トークン 図3
  • 特許-アップグレード可能な証券トークン 図4
  • 特許-アップグレード可能な証券トークン 図5
  • 特許-アップグレード可能な証券トークン 図6
  • 特許-アップグレード可能な証券トークン 図7
  • 特許-アップグレード可能な証券トークン 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-01
(45)【発行日】2024-03-11
(54)【発明の名称】アップグレード可能な証券トークン
(51)【国際特許分類】
   G06Q 40/04 20120101AFI20240304BHJP
   G06Q 20/40 20120101ALI20240304BHJP
【FI】
G06Q40/04
G06Q20/40
【請求項の数】 15
(21)【出願番号】P 2021506759
(86)(22)【出願日】2019-08-09
(65)【公表番号】
(43)【公表日】2021-12-09
(86)【国際出願番号】 US2019045908
(87)【国際公開番号】W WO2020033830
(87)【国際公開日】2020-02-13
【審査請求日】2022-08-02
(31)【優先権主張番号】62/717,575
(32)【優先日】2018-08-10
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/871,543
(32)【優先日】2019-07-08
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/881,121
(32)【優先日】2019-07-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521151175
【氏名又は名称】ティーゼロ・アイピー,エルエルシー
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100162846
【弁理士】
【氏名又は名称】大牧 綾子
(72)【発明者】
【氏名】ウィルソン,ジャスティン
(72)【発明者】
【氏名】サンダース,ニコル
(72)【発明者】
【氏名】クリステンセン,ロバート
(72)【発明者】
【氏名】レスター,チェイス
(72)【発明者】
【氏名】ワーナー,アンドリュー
【審査官】牧 裕子
(56)【参考文献】
【文献】国際公開第2018/111295(WO,A1)
【文献】国際公開第2018/065411(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 - 99/00
(57)【特許請求の範囲】
【請求項1】
ネットワークノードであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に結合された少なくとも1つのメモリと、
前記少なくとも1つのプロセッサに通信可能に結合された少なくとも1つのネットワークインターフェースとを備え、
前記ネットワークノードは、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおいて通信可能に結合された複数のネットワークノード内にあるように構成され、
前記ネットワークノードは、前記少なくとも1つのネットワークインターフェースを介して、少なくとも1つの遠隔に位置するコンピューティングデバイスに通信可能に結合され、
前記少なくとも1つのプロセッサは、
前記分散型台帳の第1のアドレスにおける親スマートコントラクトの後続バージョンである子スマートコントラクトを、前記分散型台帳の第2のアドレスにおいて展開し、
第1の残高表は前記親スマートコントラクトにあり、第2の残高表は前記子スマートコントラクトにあり、
前記親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、前記第2のアドレスを指すように設定し、
前記第1の残高表において第3のアドレスに対応する第3の値からトークンの特定の数を減算し、
前記第3の値は、前記親スマートコントラクトの前記第1の残高表に記録された未処理のトークンの総数のうち、前記第3のアドレスに保有されたトークンの数であり、
前記第3のアドレスは、トークン保有者アドレスであり、
前記第1の残高表において前記トークンの特定の数を、前記第2のアドレスに対応する第2の値に追加するように構成され、
前記親スマートコントラクトにおける前記トークンの特定の数は、前記第1の残高表においてトークンの特定の数が前記第2のアドレスに対応する前記第2の値に追加された後に循環から削除される、ネットワークノード。
【請求項2】
前記少なくとも1つのプロセッサは、前記アップグレードされたアドレスフィールドが
設定されたことを示すイベントを開始するようにさらに構成される、請求項1に記載のネットワークノード。
【請求項3】
前記少なくとも1つのプロセッサは、
前記親スマートコントラクトの前記第1のアドレスを指すように、前記子スマートコントラクトにおける親アドレスフィールドを設定し、
前記アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始するようにさらに構成される、請求項1に記載のネットワークノード。
【請求項4】
前記少なくとも1つのプロセッサは、前記子スマートコントラクトにおける第1のトークン供給パラメータを、前記親スマートコントラクトにおける第2のトークン供給パラメータと等しくなるように設定するようにさらに構成される、請求項1に記載のネットワークノード。
【請求項5】
前記少なくとも1つのプロセッサは、前記子スマートコントラクトにおける前記第2の残高表を修正することによって、前記子スマートコントラクトにおける少なくとも1つの新しいトークンを発行するようにさらに構成され、前記少なくとも1つの新しいトークンは、各々が外部の取引可能な資産を表す、請求項1に記載のネットワークノード。
【請求項6】
前記少なくとも1つのプロセッサは、
移行する必要のある任意の古いトークンが少なくとも1つの他のトークン保有者アドレスにあるか否かを判定し、
前記子スマートコントラクトにおける新しいトークンを、中間アドレスに発行し、
前記少なくとも1つの他のトークン保有者アドレスから、新しいトークン保有者アドレスを選択し、
前記親スマートコントラクトにおける前記古いトークンを、前記新しいトークン保有者アドレスから、前記第2のアドレスに移行し、
前記子スマートコントラクトにおける前記少なくとも1つの新しいトークンを、前記中間アドレスから、前記新しいトークン保有者アドレスに移動する
ようにさらに構成される、請求項5に記載のネットワークノード。
【請求項7】
前記少なくとも1つのプロセッサは、前記子スマートコントラクトの展開後、前記親スマートコントラクトにおける前記古いトークンが取引を制限されるとの判定に基づいて、すべての前記古いトークンを移行し、前記少なくとも1つの新しいトークンを移動するようにさらに構成される、請求項6に記載のネットワークノード。
【請求項8】
前記少なくとも1つのプロセッサは、前記親スマートコントラクトにおける前記アップグレードされたアドレスフィールドが設定されているか設定されていないかに基づいて、前記親スマートコントラクトにおける前記古いトークンが取引を制限されると判定するようにさらに構成される、請求項6に記載のネットワークノード。
【請求項9】
親スマートコントラクトをアップグレードするためのコンピュータ化された方法であって、前記コンピュータ化された方法は、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおける複数のネットワークノード内に含まれるように構成されたネットワークノードによって実行され、前記ネットワークノードは、前記ピアツーピアネットワークにおける他のネットワークノードに通信可能に結合されるように構成され、前記コンピュータ化された方法は、
前記分散型台帳の第1のアドレスにおける前記親スマートコントラクトの後続バージョンである子スマートコントラクトを、前記分散型台帳において第2のアドレスで展開するステップであって、第1の残高表は前記親スマートコントラクトにあり、第2の残高表は
前記子スマートコントラクトにある、展開するステップと、
前記親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、前記第2のアドレスを指すように設定するステップと、
前記第1の残高表において第3のアドレスに対応する第3の値からトークンの特定の数を減算するステップと、
前記第3の値は、前記親スマートコントラクトの前記第1の残高表に記録された未処理のトークンの総数のうち、前記第3のアドレスに保有されたトークンの数であり、
前記第3のアドレスは、トークン保有者アドレスであり、
前記第1の残高表において前記トークンの特定の数を、前記第2のアドレスに対応する第2の値に追加するステップと
を備え、
前記親スマートコントラクトにおける前記トークンの特定の数は、前記第1の残高表においてトークンの特定の数が前記第2のアドレスに対応する前記第2の値に追加された後に循環から削除される、コンピュータ化された方法。
【請求項10】
前記アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始するステップをさらに備える、請求項9に記載のコンピュータ化された方法。
【請求項11】
前記親スマートコントラクトの前記第1のアドレスを指すように、前記子スマートコントラクトにおける親アドレスフィールドを設定するステップと、
前記アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始するステップと
をさらに備える、請求項9に記載のコンピュータ化された方法。
【請求項12】
前記親スマートコントラクトにおける第2のトークン供給パラメータと等しくなるように、前記子スマートコントラクトにおける第1のトークン供給パラメータを設定するステップをさらに備える、請求項9に記載のコンピュータ化された方法。
【請求項13】
前記子スマートコントラクトにおける前記第2の残高表を修正することによって、前記子スマートコントラクトにおける少なくとも1つの新しいトークンを発行するステップをさらに備え、前記少なくとも1つの新しいトークンは各々が外部の取引可能な資産を表す、請求項9に記載のコンピュータ化された方法。
【請求項14】
移行する必要のある任意の古いトークンが少なくとも1つの他のトークン保有者アドレスにあるか否かを判定するステップと、
前記子スマートコントラクトにおける新しいトークンを、中間アドレスに発行するステップと、
前記少なくとも1つの他のトークン保有者アドレスから、新しいトークン保有者アドレスを選択するステップと、
前記親スマートコントラクトにおける前記古いトークンを、前記新しいトークン保有者アドレスから、前記第2のアドレスに移行するステップと、
前記子スマートコントラクトにおける前記少なくとも1つの新しいトークンを、前記中間アドレスから、前記新しいトークン保有者アドレスに移動するステップと
をさらに備える、請求項13に記載のコンピュータ化された方法。
【請求項15】
前記子スマートコントラクトの展開後、前記親スマートコントラクトにおける前記古いトークンが取引を制限されるとの判定に基づいて、すべての前記古いトークンを移行し、前記少なくとも1つの新しいトークンを移動するステップをさらに備える、請求項14に記載のコンピュータ化された方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001]この出願は、2018年8月10日に出願され「SELF-ENFORCING SECURITY TOKEN IMPLEMENTING SMART-CONTRACT-BASED COMPLIANCE RULES CONSULTING SMART-CONTRACT-BASED GLOBAL REGISTRY OF INVESTORS(スマートコントラクトベースの投資家のグローバルレジストリを参照するスマートコントラクトベースのコンプライアンス規則を実施する自己執行型証券トークン)」と題された米国仮特許出願第62/717,575号(代理人整理番号270.023USPR)、2019年7月8日に出願され「SPLITTABLE SECURITY TOKEN(分割可能な証券トークン)」と題された米国仮特許出願第62/871,543号(代理人整理番号270.032USPR)、および2019年7月31日に出願され「UPGRADABLE SECURITY TOKEN(アップグレード可能な証券トークン)」と題された米国仮特許出願第62/881,121号(代理人整理番号270.033USPR)の利益を主張し、これらはすべて、参照により本明細書に組み込まれる。
【0002】
[0002]この出願は、参照により本明細書に組み込まれる、以下の同時係属の米国特許出願に関連する。
[0003]参照により本明細書に組み込まれる、「SELF-ENFORCING SECURITY TOKEN IMPLEMENTING SMART-CONTRACT-BASED COMPLIANCE RULES CONSULTING SMART-CONTRACT-BASED GLOBAL REGISTRY OF INVESTORS(スマートコントラクトベースの投資家のグローバルレジストリを参照するスマートコントラクトベースのコンプライアンス規則を実施する自己執行型証券トークン)」と題され、同日付で出願された米国特許出願第16/536,940号(代理人整理番号270.023US01)。
【0003】
[0004]参照により本明細書に組み込まれる、「SPLITTABLE SECURITY TOKEN(分割可能な証券トークン)」と題された、同日付で出願された米国特許出願第16/536,866号(代理人整理番号270.032US01)。
【背景技術】
【0004】
[0005]暗号トークンは、ブロックチェーンの様々な態様に関連して使用される。例では、イーサリアムブロックチェーンにおいて実施されるスマートコントラクトにより、複雑な動作が付加されたトークンの作成と発行が可能になる。Ethereum Request for Comments 20(ERC20)は、トークンを実施する(イーサリアムブロックチェーンにおいて)スマートコントラクトのために使用される技術規格である。ERC20規格は、その全体が参照により組み込まれる。それに加えて、一般会社法に関連するデラウェア州法の第8編を満たすために、他の方法も実施され得る。
【発明の概要】
【課題を解決するための手段】
【0005】
[0006]少なくとも1つのプロセッサ、少なくとも1つのメモリ、および少なくとも1つのネットワークインターフェースを含むネットワークノード。ネットワークノードは、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおいて通信可能に結合された複数のネットワークノード内にあるように構成される。ネットワークノードは、少なくとも1つのネットワークインターフェースを介して、少なくとも1つの遠隔に位置するコンピューティングデバイスに通信可能に結合される。少なくとも1つのプロセッサは、親スマートコントラクトの後続バージョンである子スマートコントラクトを、分散型台帳において展開するように構成される。少なくとも1つのプロセッサはまた、親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、子スマートコントラクトのアドレスを指すように設定するように構成される。親スマートコントラクトは、子スマートコントラクトが展開された後、展開されたままである。
【0006】
[0007]図面は典型的な実施形態のみを描写し、したがって、範囲を限定すると見なされるべきではないことを理解して、典型的な実施形態は、添付の図面を使用することにより、追加の特異性および詳細とともに説明される。
【図面の簡単な説明】
【0007】
図1】[0008]アップグレード可能なスマートコントラクトベースの証券トークンを使用する例示的なシステムのブロック図である。
図2A】[0009]図1に示されるシステムにおいて使用されるデータ構造を示すブロック図である。
図2B】[0010]図1に示されるシステムにおけるエンティティの階層を示すブロック図である。
図3】[0011]アップグレード可能なスマートコントラクトの3つの異なるバージョンを示すブロック図である。
図4】[0012]図4Aは、スマートコントラクトの後続バージョンへのトークンの移行の異なる段階を示すブロック図である。図4Bは、スマートコントラクトの後続バージョンへのトークンの移行の異なる段階を示すブロック図である。図4Cは、スマートコントラクトの後続バージョンへのトークンの移行の異なる段階を示すブロック図である。図4Dは、スマートコントラクトの後続バージョンへのトークンの移行の異なる段階を示すブロック図である。
図5】[0013]子スマートコントラクトを展開するための方法を示すフロー図である。
図6】[0014]親スマートコントラクトにおける未処理のトークンを、子スマートコントラクトに移行するための方法を示すフロー図である。
図7】[0015]本開示の実施形態が利用され得る例示的なコンピュータシステムを示すブロック図である。
図8】[0016]本開示の実施形態が利用され得る別の例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0008】
[0017]一般的な慣行にしたがって、説明された様々な特徴は、一定の縮尺で描かれていないが、典型的な実施形態に関連する特定の特徴を強調するように描かれている。
[0018]以下の詳細な説明では、本明細書の一部を形成し、例示として特定の例示的な実施形態が示されている添付の図面が参照される。しかしながら、他の実施形態が利用され得、論理的、機械的、および電気的変更がなされ得ることを理解されたい。さらに、図面および明細書で表されている方法は、個々のステップが実行され得る順序を限定するものとして解釈されるべきではない。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0009】
[0019]「スマートコントラクト」(または単に「コントラクト」)という用語は、ソフトウェアにおいて実施され得る条件付きロジックのセット、たとえば、1つまたは複数の関連する条件が満たされることに応じて実行される1つまたは複数の順次のステップを指す。スマートコントラクトは、分散型台帳のアドレスに格納され得る。スマートコントラクトは、スマートコントラクトのアドレスを使用して呼び出され得る。例では、スマートコントラクトは、Solidityプログラミング言語でプログラミングされ得る。スマートコントラクトは、分散型台帳を実施するネットワークノード、たとえば、イーサリアム仮想マシン(EVM)などの仮想マシンを実行するネットワークノード上のプロセッサによって実行され得る。
【0010】
[0020]スマートコントラクトの1つの特定の例は、証券トークンである。言い換えれば、証券トークンは、スマートコントラクトの一種、たとえば、証券を表す暗号トークンであり得る。証券トークンは、分散型台帳(たとえば、ブロックチェーン)における(たとえば、格納された)スマートコントラクトとして実施され得る。所与の証券トークンの様々な態様(たとえば、発行、移動など)は、証券取引委員会(SEC)または他の規制機関によって規制され得る。
【0011】
[0021]証券トークンは、既存のトークン保有者、アドレスのトークン残高、トークンの総供給などを示す状態を維持し得る。したがって、スマートコントラクトを指すことに加えて、「証券トークン」または「トークン」という用語は、証券を表す証券トークンの状態、たとえば株式のシェアを指す場合がある。一般に、限定されないが、「証券トークン」という用語は、スマートコントラクトを指すために使用される一方、「トークン」という用語は、たとえば株式のシェアを表すなど、証券トークンの状態を指すために使用される。
【0012】
[0022]証券は、ある種の金銭的価値を保持する代替可能で譲渡可能な金融商品(fungible, negotiable financial instrument)であり得る。証券は、任意選択によって表されるように、所有権の立場、債権者関係(creditor relationship)、または所有権の権利を表し得る。証券の例は、不動産、少なくとも1つの商品、個人資産、少なくとも1つの債券、少なくとも1つのデリバティブ、少なくとも1つの先物、少なくとも1つのファンド、少なくとも1つの通貨ファンド、少なくとも1つの上場投資信託、少なくとも1つの投資信託、少なくとも1つのインデクスファンド、少なくとも1つの債券ファンド、少なくとも1つの商品ファンド、および/または少なくとも1つの不動産ファンドを含むが、これらに限定されない。
【0013】
[0023]発行、移動、およびそれに関連する規制を含む証券トークンのさらなる説明は、2018年8月10日に出願され「SELF-ENFORCING SECURITY TOKEN IMPLEMENTING SMART-CONTRACT-BASED COMPLIANCE RULES CONSULTING SMART-CONTRACT-BASED GLOBAL REGISTRY OF INVESTORS(スマートコントラクトベースの投資家のグローバルレジストリを参照するスマートコントラクトベースのコンプライアンス規則を実施する自己執行型証券トークン)」と題された米国仮特許出願第62/717,575号(代理人整理番号270.023USPR)に見出すことができ、その全体は、参照により本明細書に組み込まれる。
【0014】
[0024](たとえば、イーサリアム/Solidityにおける)スマートコントラクトを開発する際の一般的な困難性は、それらをアップグレードする方法、バグを修正する方法、またはスマートコントラクト内のコードの変更を保証する他の方法である。スマートコントラクトをアップグレードする際の従来の試みは、コントラクトの元のアドレスの保持に重点をおく。本システムおよび方法は、コード変更時にコントラクトアドレスを保持するのではなく、元のコードを保持することを重視しており、コントラクトの完全な論理的監査を維持しながら、古いコードを新しいコードにリンクする機能を備えている。このアプローチはあらゆる種別のスマートコントラクトに適用され得るが、特に有用な1つの構成は、たとえば状態を含む、証券トークンのアップグレードパスを含む。
【0015】
[0025]分散型台帳技術(DLT)およびブロックチェーン技術の最も重要な2つの特徴は、委託および監査可能性である。これらの特徴は両方とも、見過ごされがちな(all-too-often overlooked)(および/または欠けている)別の特徴である保全性の影響を受ける可能性がある。コントラクトが保全可能ではない場合、問題が発生したり、特徴が不足したり、最悪の場合、詐欺および/または悪用が発生すると、すぐに信用を失う。最も悪名高い問題のうちの1つは、よく知られている分散型自律組織(DAO:decentralized autonomous organization)攻撃であり、これは、DLTコミュニティ全体に懸念を引き起こし、外部の観察者を混乱させた。
【0016】
[0026]それらがいかに良好に設計または試験されていても、スマートコントラクトは、破壊、乱用、および/または悪用の影響を受けない訳ではない。不変性は、再展開、ホットフィックス/パッチの適用、および/または、コードのバージョン管理に慣れている多くの開発者にとって新しい概念であるため、この保全性の欠如はしばしばチェックされない。スマートコントラクト(および、特に証券トークンを実施するスマートコントラクト)へのアップグレードパスを設計することによって、本システムおよび方法により、発行者は、システムのユーザへの影響を少なくして、スマートコントラクトの基礎となるコードに変更を加えることができる。
【0017】
[0027]スマートコントラクトを更新する必要があることを許容することにより、アップグレード可能性を、事前に設計できる。上記のように、スマートコントラクトでは、監査可能であることが望ましい。したがって、本明細書で説明されるアップグレード可能な証券トークンは、(リンクされたリストと同様に)証券トークンの異なるバージョンを、時系列順に辿ることを可能にする。これにより、監査を実行する明確な機能が可能になると同時に、置き換えられたコントラクトがあるとしか知らない場合に、最新の実施をナビゲートする簡単な手法が提供される。
【0018】
[0028]それに加えて、親コントラクトにおける古いトークンの保有者が、その保有物を、子孫コントラクトにおける新しいトークンに移動することを可能にすることによって、古いコントラクトから新しいコントラクトに状態を遷移させることも望ましい。これは、アップグレードパスにいくつかの特徴を提供する。まず、古いコントラクトのトークン保有物が、その子孫のアドレスに送信される。これは基本的に、これらのトークンのロック/書き込み(burn)/循環からの削除、を行い、古いコントラクトからの状態情報を保全しながら、保有者が保有物を移動したときの監査証跡を提供する。これにより、所与のコントラクトが最新であるか否か、またはアップグレードパスのどこにあるかが明らかになり得る。次に、誰が保有物の遷移を決定し、誰が決定しなかったのかを確認し、アップグレードされた変更を選択するか否か、または許容するか否かに関する制御を、ユーザに与える。「親」と「子」のスマートコントラクトの代わりに、「第1」と「第2」または、「先任者」と「後継者」という用語も使用され得る。
【0019】
[0029]本明細書におけるアップグレード可能な証券トークンに関する1つの重要な変更は、従来のソリューションと比較した場合、資産/証券トークンが潜在的に複数のアドレスを有する可能性があることである。証券トークンの履歴を辿ってアクティブな資産/証券トークンを見つける簡単な機能がある限り、複数のアドレスを使用して実施するのに障害が発生することはない。
【0020】
[0030]不変性は、ブロックチェーン空間内の重要な概念であると同時に、保全性に関する障害でもあるため、イーサリアムエコシステム内のアップグレード可能なスマートコントラクトにおいて、多くの試みがなされてきた。多くのソリューションで共有される1つの概念は、(本システムおよび方法とは対照的に)固定された不変のコントラクトアドレスである。
【0021】
[0031]具体的には、「プロキシパターン」は、不変性が提供する固有の障害に対する一般的なソリューションとして現れるが、実施は、格納されたデータを保持するために永久ストレージ、ハブアンドスポーク、または他の手段の形態も使用する傾向がある。プロキシパターンは、コントラクトの現在の実施のアドレスを保有することを唯一の目的とする単一の代理コントラクトである。代理コントラクトは、低レベルのSolidityオペコード(デリゲートコール)を使用して呼び出され得る。この場合、代理コントラクトは、イニシエータのアドレスを、コントラクトの実際の実施に渡す。このように、代理コントラクトのアドレスは、アップグレード間で変更がない。代わりに、コントラクトをアップグレードするために、新しいコードが展開され、代理コントラクト内に保有されているアドレスフィールドが更新され、変更を含む新しく展開されたバージョンを指す。これは、代理コントラクトの実施内でバグや他の問題が発見されるまで、保全のために便利である。代理コントラクトにおいて脆弱性が発見された場合、これは、採用を妨げる可能性がある。
【0022】
[0032]第2の潜在的な問題は、代理コントラクトの委託に関して生じる。代理コントラクト内のポインタはいつでも変更される可能性があり、透明性を覆い隠しながら、ブロックチェーンの不変の性質を本質的に回避する。本システムおよび方法は、完全なアップグレード履歴を保持することによって、これらの欠点に対処する一方で、所与のアドレスの機能が、初期状態から変更されるのを防ぐ。
【0023】
[0033]本明細書で説明される例は、保管人が、投資家および/またはブローカディーラに代わってトークンを保有する、保管モデルと互換性があり得る。しかしながら、ここでのシステムは、非保管モデルとも互換性があり、たとえば、投資家および/またはブローカディーラは、仲介者が少ないかまったくない状態でトークンを直接保有する。
【0024】
[0034]本明細書では、例として様々な方法名が使用され得る。方法名は説明することを目的するものであり、限定するものではないことを認識されたい。それに加えて、任意選択のデバイスおよび方法ステップが、図に破線で示される。
【0025】
[0035]図1は、アップグレード可能なスマートコントラクトベースの証券トークン102を使用する例示的なシステム100のブロック図である。システム100は、1つまたは複数の証券トークン102と、システム所有者112と、発行者114と、分散型台帳122を実施する少なくとも1つのネットワークノード140とを含み得る。システム100はまた、以下に説明されるように、様々な任意選択のエンティティおよび/またはデバイスを含み得る。
【0026】
[0036]例では、証券トークン102/スマートコントラクトにおける各トークンは、会社の単一のシェアを表し得る。証券トークン102は、分散型台帳122(たとえば、ブロックチェーン)で実施(たとえば、格納)され得る。証券トークン102は、1つまたは複数のスマートコントラクトを使用して実施され得る。証券トークン102は、それ自体の状態の表示、たとえば、発行されたトークンの数、どのアドレスがいくつのトークンを保有するかなどを格納し得る。
【0027】
[0037]投資家120は、トークンを以前に有している、または検討している、受信している、または移動している個人またはエンティティであり得る。例では、投資家120は、ブローカディーラ118(または、保管人116の直接)の顧客であり得、投資家120は、1つまたは複数のトークンの購入および/販売に関する注文を、ブローカディーラ118に(または、保管人116に直接)送信し得る。あるいは、投資家120は、ブローカディーラ118または保管人116に接続する必要のない「外部投資家」であり得る。代わりに、外部投資家は、たとえば、以下に説明されるトークン102/スマートコントラクト自体および/またはグローバルレジストリ108における方法のように、トークントランザクションを開始するために本明細書で説明される関連する方法を呼び出し得る。
【0028】
[0038]「トークントランザクション」または同様の用語は、証券トークン102の任意の移動を指し、トークンの移動によって実行される発行、提供、贈与、購入、販売、および/または従業員補償を説明するために使用され得る。トークン102トランザクションは、(1人または複数の投資家120、ブローカディーラ118、および/または保管人116に属する)1つまたは複数の入力アドレスから、(1人または複数の投資家120、ブローカディーラ118、および/または保管人116に属する)少なくとも1つの出力アドレスに、大量のトークンを移動し得る。本明細書で使用される場合、「買い手」および「売り手」という用語は、それぞれトークンを移動および受信する投資家120を指す。トークントランザクションは、オンエクスチェンジまたはオフエクスチェンジで実行され得る。
【0029】
[0039]システム100内のブローカディーラ118は、自身の口座のために、および/または、その顧客に代わって、トークンを購入または販売する個人またはエンティティであり得る。オンボーディング中に、ブローカディーラ118は、情報の収集を含む、新しい顧客のための口座を作成することができ、たとえば、ブローカディーラ118は、投資家120を新しい顧客としてオンボーディングし得る。これは、たとえば、アイデンティティサービスプロバイダ126によって提供される、その顧客に対して、マネーロンダリング防止および/または顧客確認(AML(anti-money laundering)/KYC(know-your-customer))チェックを実行することを含み得る。
【0030】
[0040]発行者114は、トークンを発行するように所有者112に指示する個人またはエンティティであり得、すなわち、所有者112は、証券トークン102を展開/発行する1つまたは複数の発信元のスマートコントラクト113を所有し得る。システム100は、任意選択で、多くの発行者114を含み得る。例では、発行者114は、会社であり得、証券トークン102内の各トークンは、会社のシェアを表す。
【0031】
[0041]ブローカディーラ118は、保管人116、すなわち、1人または複数のブローカディーラ118のトークンの保管、所持、および/または所有権を保有する個人またはエンティティを有する口座を有し得る。保管人116は、多くのブローカディーラ118(ブローカディーラ118がその顧客として多くの投資家120を有する可能性がある)に代わってトークンの保管、所持、および/または所有権を保有する個人またはエンティティであり得る。システム100は、多くの保管人116および/または多くのブローカディーラ118を含み得る。
【0032】
[0042]所有者112は、システム100においてスマートコントラクトを所有、展開、再展開、および/または移動する個人またはエンティティであり得る。例では、所有者112は、発信元のスマートコントラクト113への(たとえば、仮想マシンによって実行される)方法呼出しを使用して、証券トークン102を展開/発行し得る。所有者112は、システム100の管理者と呼ばれ得る。システム100は、1人または複数の所有者112のみを有し得る。任意選択で、所有者112は、システム100において実行されるトークントランザクションに基づいて、トークンの「市場」を説明するデータサービス、たとえば、トークントランザクションの量、最新のトークントランザクションのトランザクション価格などを示すフィードを提供し得る。
【0033】
[0043]上記で説明されるように、所有者112、発行者114、保管人116、ブローカディーラ118、および投資家120という用語は、システム100において様々な役割を果たす個人またはエンティティを指し得る。あるいは、これらの用語は、それぞれ、所有者112、発行者114、保管人116、ブローカディーラ118、および投資家120によって使用されるコンピューティングデバイスを指し得る。コンピューティングデバイスを指す場合、所有者112、発行者114、保管人116、ブローカディーラ118、および投資家120の各々は、それぞれのコンピューティングデバイス上のメモリ内の命令を実行する1つまたは複数のプロセッサで実施され得る。各それぞれのコンピューティングデバイスは、命令および/または他のデータを他のコンピューティングデバイスと、たとえば、インターネットのようなネットワーク138を介して送受信するように構成されたセル電話もしくはタブレットなどのモバイルデバイス、パーソナルコンピュータ、またはサーバであり得る。
【0034】
[0044]証券トークン交換部124は、証券トークン102、商品、デリバティブ、および/または他の金融商品が取引きされる市場、または市場を運営する事業体(または、証券トークン交換部124によって運営される1つまたは複数のコンピューティングデバイス)であり得る。例では、証券トークン交換部124は、分散型台帳122に、正常に実行されたトランザクションを記録し得る。証券トークン交換部124は、保管するところ、すなわち、保管人116が、ブローカディーラ118および/または投資家120に代わってトークンを保有およびトランザクトするところである。
【0035】
[0045]ネットワークノード140は、本明細書で説明される機能を実施するためにメモリに格納された命令を実行する1つまたは複数のプロセッサを使用して実施されるコンピューティングデバイスであり得る。例では、ネットワークノード140は、本明細書で説明されるスマートコントラクトのいずれかを実行する仮想マシン(たとえば、イーサリアム仮想マシン)を実行し得る。
【0036】
[0046]「分散型台帳」という用語は、複数の相互接続されたネットワークノード140(すなわち、メモリに格納された命令を実行するコンピューティングデバイス)に分散され、ここでは、ネットワークノード140のうちの2つ以上が、分散型台帳122のコピーを格納する。例では、ピアツーピアネットワーク内の1つまたは複数のネットワークノード140は、分散型台帳122を実施し得る。
【0037】
[0047]分散型台帳122は、分散型台帳122内に格納されたデータを検証するために、1つまたは複数のブロックチェーンを実施し得る。ブロックチェーンは、そのブロックを検証する各ブロックに、プルーフオブワークシール(proof-of-work seal)(ハッシュなど)が貼付された、一度に1つのブロックで構築される検証可能な永久的な台帳である。ブロックチェーンでは、以前のブロックのハッシュが現在のブロックに含まれているため、再帰によって、現在のハッシュは以前のすべてのブロックを検証して、元の起源のブロックに戻す。ブロックチェーンへのハッシュの挿入は、そのハッシュを永久に記録し、そのブロックがチェーンに追加された時点でのハッシュデータのタイムスタンプ付きの存在証明を検証する公証として機能する。将来のブロックは、チェーンに格納されたデータの操作、またはチェーンの再編成からの保護の層を追加するため、チェーンの早期のブロックに変更を加えることができないという追加的な確証を提供する。ブロックチェーンは、分散型台帳122の実施であり、公開されている(たとえば、誰でも見ることができる)か、またはプライベート(たとえば、許可されたユーザまたはエンティティのみが見ることができる)であり得る。例示的なブロックチェーンは、ビットコインブロックチェーン、イーサリアムブロックチェーン、BigchainDB、Billon、Chain、Corda、Credits、Elements、Monax、Fabric、HydraChain、Hyperledger、Multichain、Openchain、Quorum、Ravencoin、Sawtooth、およびStellarを含むが、これらに限定されない。好ましくは、分散型台帳122は、公開されたイーサリアムブロックチェーンであるが、しかしながら、他の実施も可能である。プライベートブロックチェーンが使用されている場合、公開されたブロックチェーンのハッシュは、定期的にパブリックブロックチェーン、たとえば、イーサリアムブロックチェーンまたはビットコインブロックチェーンなどにコミット(つまり、記録)され得る。
【0038】
[0048]それに加えて、そのまたは代わりに、分散型台帳122は、システム100のネットワークノード140間で情報を共有するためにゴシッププロトコル(gossip protocol)を使用する有向非巡回グラフ(DAG)、たとえば、IOTAまたはHashgraphを実施し得る。さらに、プルーフオブワークなしで、分散型台帳122において、コンセンサスに達することができ、代わりにプルーフオブステークを使用できる。さらに、暗号ハッシュを使用して異なるデータのセットを接続する任意のマークルツリー(またはハッシュツリー)は、分散型台帳122によって実施され得る。
【0039】
[0049]「ウォレット」という用語は、トークンなどのデジタル資産を格納および/または管理するために使用されるソフトウェアプログラム、デジタルファイル、および/またはメモリを指す。本明細書では、本システムおよび方法は、トークンを使用して説明されるが、任意の種別のデジタル資産とも互換性がある。例では、ウォレットは、1つまたは複数の秘密鍵、1つまたは複数の秘密鍵から派生した1つまたは複数の公開鍵、および/または、1つまたは複数の秘密鍵および/または1つまたは複数の公開鍵から導出された1つまたは複数のアドレスによって定義され得る。例では、ウォレットは、1つまたは複数の秘密口座鍵(および、任意選択の、対応する公開口座鍵)によって定義され得、各鍵は、1つまたは複数の子トランザクション鍵および/または孫トランザクション鍵を有し得る。「口座」という用語は、分散型台帳122におけるアドレス、たとえば、階層決定論的(HD)ウォレットにおけるイーサリアムアドレスを指すために使用され得る。
【0040】
[0050]Ethereum Request for Comments 20(ERC20)は、一組の方法を定義する規格である。ERC20に準拠するために、暗号トークン(たとえば、ユーティリティ、暗号通貨、または証券)は、これらの方法を実施しなければならないが、証券トークン102の所有者は、独自の手法でこの方法を実施できる。ERC20の利点の1つは、各アプリケーション、ウォレット、交換部、またはインターフェースを、各々特定の証券トークン102に合わせて調整する必要がないことである。むしろ、プロジェクトが、ERC20規格をサポートする場合、プロジェクトは、多くの異なるERC20証券トークン102をサポートし得る。
【0041】
[0051]ERC20に準拠するために、証券トークン102は、totalSupply()、balanceOf()、transfer()、transferFrom()、approve()、およびallowance()を含む6つの必須の方法を実施するトークンロジックおよび/またはパラメータ104を含み得る。これらの必須の方法は、トークンを移動できる方法と、トークン関連のデータにアクセスできる方法とを説明する。トークンロジック/パラメータ104はまた、ERC20に準拠するための様々なイベント、たとえば、Transfer()およびApproval()を実施し得る。これらのイベントは、移動と承認のためのフォーマットガイドラインを説明する。
【0042】
[0052]トークントランザクションが要求されたときにtransfer()方法/関数109を呼び出すことができ、transfer()方法109は、任意選択で、1つまたは複数の他のスマートコントラクトにおける、たとえば、トークンロジック/パラメータ104および/またはグローバルレジストリ108における方法を呼び出し得る。transfer()方法109は、トークンを、入力アドレスから、少なくとも1つの出力アドレスに移動する、任意の適切な手法で実施され得る。
【0043】
[0053]トークンロジック/パラメータ104はまた、name()、symbol()、および/またはdecimals()など、ERC20に準拠するための1つまたは複数の任意選択の方法を実施し得る。これらの任意選択の方法を使用して、証券トークン102に名前およびシンボルを割り当て、ならびに証券トークン102がそれぞれ使用するいくつかの小数を定義できる。これらの方法およびイベントは、ネットワークノード140上の仮想マシン(たとえば、イーサリアム仮想マシン)によって実行され得、ERC20規格においてさらに説明される。
【0044】
[0054]トークンロジックおよび/またはパラメータ104はまた、証券トークン102の名前、同じ種別のトークンがいくつ展開または発行されたか、および/または証券トークン102のシンボル、を示すデータを含み得る。例では、証券トークン102のシンボルは、株式ティッカシンボルと同様、証券トークン102の複数文字(たとえば、4つまたは5つ)の識別子であり得る。証券トークン102のシンボルは、金融業界規制当局(FINRA)に登録され得る。会社によって発行された証券トークン102シンボルは、たとえば、特定の文字(たとえば、Q、X、またはZ)が、会社のティッカシンボルの末尾に連結された、好ましくは、会社のティッカシンボルの拡張バージョンであり得る。
【0045】
[0055]証券トークン102はまた、たとえば、分散型台帳122に格納された残高表105を含み得る。残高表105は、トークンのすべての保有者の残高を示し得、たとえば、残高表105は、どのアドレス(たとえば、イーサリアムアドレス)が、どれだけの量のトークンを保有しているのかを示し得る。あるいは、投資家120(または保管人116またはブローカディーラ118)のアドレスによるインデクス付けの代わりに、残高表105は、他の手法、たとえば、投資家の名前のハッシュなどでインデクス付けされ得る。証券トークン102の残高表105は、公開、準公開、または非公開であり得、特定の投資家120、保管人116、またはブローカディーラ118によって保有されたトークンの残高が、公共利用可能な情報から純粋に導出され得ないように匿名であり得る。
【0046】
[0056]残高表105は、展開または発行されたすべてのトークンを説明できる。トークンの移動が発生すると(すなわち、残高に変更があると)、残高表105が更新され、異なるネットワークノード140において格納された証券トークン102の各コピーに配布され得る。例では、証券トークン102におけるトークンの移動は、証券トークン102における残高表105を更新することを含み得る。表1は、各投資家アドレスの鍵/値のペアを含む残高表105の例である。
【0047】
【表1】
【0048】
いくつかの例では、残高表105は、(表1における左列に示される)アドレスによってインデクス付けされ、各インデクスの値が、アドレスに関連付けられた(表1における右列に示される)トークン残高であるマルチオブジェクトデータ構造(たとえば、配列)として格納され得る。
【0049】
[0057]いくつかの構成では、証券トークン102は、たとえば、分散型台帳122に格納される、トークン供給パラメータ115を含み得る。トークン供給パラメータ115は、未処理のトークンの総数を示し得る。たとえば、トークン供給パラメータ115は、証券トークン102の残高表105におけるすべてのアドレスのトークン残高の合計であり得る。
【0050】
[0058]しかしながら、(他の種別のトークンとは異なり)証券トークン102は、米国において証券取引委員会(SEC)によって規制され得る。したがって、多くの上場企業がデラウェア州に設立されているために重要である、一般会社法に関連するデラウェア州法の第8編を満たすことが望ましい場合がある。第8編を満たす追加の方法は、本明細書では第8編方法と呼ばれ、たとえば、Ethereum Request for Comments 884(ERC884)の有無に関わらず、様々な手法で実施され得る。具体的には、第8編方法では、各トークンが、デラウェア州法人によって発行された単一のシェアを表すトークンの作成が可能であり、つまり、そのようなトークンは、秘密か公開かに関わらず、デラウェア州法人によって発行されたエクイティを表すように設計され得る。
【0051】
[0059]したがって、トークンロジックおよび/またはパラメータ104は、addVerified()、removeVerified()、updateVerified()、cancelAndReissue()、isVerified()、isHolder()、holderCount()、holderAt()、hasHash()、isSuperseded()、および/またはgetCurrentFor()を含む、(ERC20によって必要とされる6つを超える)1つまたは複数の第8編方法を実施し得る。トークンロジック/パラメータ104はまた、たとえば、verifiedAddressAdded()、VerifiedAddressRemoved()、VerifiedAddressUpdate()、および/またはVerifiedAddressSuperseded()のように、(ERC20互換性のために必要とされる6つを超える)1つまたは複数のイベントを実施し得る。これらの第8編方法およびイベントは、ネットワークノード140上の仮想マシンによって実行され得る。
【0052】
[0060]しかしながら、SEC規制は、ERC20および/または第8編方法によって要求または執行されない証券トークン102に追加の要件を課す。SEC規制への準拠を自己執行するために、システム100は、第8編方法を超える機能を実施し得る。具体的には、1つまたは複数のコンプライアンス規則106A~106Bは、証券トークン102を含むあらゆるトランザクションが、関連するSEC規制に準拠することを保証し得る。例では、コンプライアンス規則106は、(1)トークンの買い手および/または売り手が、SEC規則A、D、およびSの少なくとも1つの下で適格であることを検証し得、(2)買い手および/または売り手に対して、AMLおよび/またはKYCサービスが実行されていることを検証し得、(3)トークンの移動を妨げるフリーズ(以下で説明する)が設定されていないことを検証し得、ならびに/あるいは(4)特定の証券トークン102が、ブラックアウト期間、すなわち、トークンの取得後の特定の期間(たとえば、1年)の間、売り手がトークンを販売することを妨げる制限にないことを検証し得る。
【0053】
[0061]いくつかの構成では、コンプライアンス規則106Aは、証券トークン(たとえば、分散型台帳122)に格納され得る。あるいは、証券トークン102は、少なくとも1つのコンプライアンス規則ポインタ107を含み得、各コンプライアンス規則ポインタ107は、(1つまたは複数のスマートコントラクトを使用して実施される)少なくとも1つの外部のコンプライアンス規則106Bのアドレスを示す。この種の構成では、少なくとも1つのコンプライアンス規則ポインタ107は、必要に応じて、更新された外部のコンプライアンス規則106Bを指すように更新され得る。
【0054】
[0062]コンプライアンス規則106のうちの少なくとも1つは、(証券トークン102の外部にある)グローバルレジストリ108を参照することができ、すなわち、コンプライアンス規則106のうちの少なくとも1つは、データストレージスマートコントラクト128に格納された情報にアクセスする。コンプライアンス規則106を、証券トークン102の外部に格納することにより、たとえば、SEC規制に変更があり、少なくとも1つのコンプライアンス規則106を更新する必要がある場合、証券トークン102自体を修正することなく、少なくとも1つのコンプライアンス規則106が更新され得る。あるいは、少なくとも1つのコンプライアンス規則106が、証券トークン102自体に含められ得る。その場合、少なくとも1つのコンプライアンス規則106を修正する(たとえば、破棄および再展開する)には、証券トークン102を修正する必要がある。任意選択で、いずれのコンプライアンス規則106をも使用しないトークントランザクションも可能であり、たとえば、デフォルト動作は、あらゆるコンプライアンス規則106に関係なく、すべてのトランザクションを承認することであり得る。
【0055】
[0063]グローバルレジストリ108は、スマートコントラクト128~134の集合であり得る。スマートコントラクト128~134は、データを格納するデータストレージスマートコントラクト128を含む。データストレージスマートコントラクト128に格納されたデータは、(投資家120が、SEC規制の免除下で適格であるか否かの表示など)SEC規制への準拠、投資家120の個人識別可能情報(PII)、投資家120に対してAML/KYCが実行されたか否かを示す表示、ならびに/あるいは、フリーズが、証券トークン102、保管人116、ブローカディーラ118、および/または投資家120に設定されたか否か、に関連し得る。
【0056】
[0064]データストレージスマートコントラクト128におけるデータ構造110は、各々が特定の投資家120に関する情報を有する少なくとも1つの投資家要素を格納し得る。それに加えて、各投資家要素は、投資家のブローカディーラ118のアドレス(たとえば、イーサリアムアドレス)、および/または様々な規制認定情報(たとえば、AML/KYCが投資家120に対して実行されたか否か、投資家120の出身国、特定のトークンが投資家120によって所有されている時間の長さなど)を含み得る。投資家要素における属性は、たとえば、オンボーディング中にブローカディーラ118によって収集された、投資家120に関する他の情報を含み得る。そのような情報は、顧客名、納税者識別番号(たとえば、社会保障番号)、住所、電話番号、電子メールアドレス、生年月日、運転免許証、パスポート情報、もしくは他の政府発行の身分証明書からの情報、雇用状況および職業、顧客が仲介企業に雇用されているか否か、年収、純資産、口座投資目的、ならびに/または、個人の身元を区別するために使用できる他の任意のデータを含み得る。
【0057】
[0065]投資家要素における属性(たとえば、投資家要素におけるスロットの値)は、たとえば、図2Aに示されるように、コンマ区切り値、ハッシュテーブル、マッピング、辞書、および/または、鍵/値のペアなどとして格納され得る。各投資家要素は、所有者112、発行者114、ブローカディーラ118、保管人116、および/または(たとえば、投資家120が外部投資家である場合)投資家120によって作成され得る。データストレージスマートコントラクト128における投資家要素は、必要に応じて更新され得る。たとえば、投資家120がブローカディーラ118との口座を閉鎖するとき、対応する投資家要素は、データストレージスマートコントラクト128から削除され得る。それに加えて、またはその代わりに、投資家120は、たとえば、投資家120が外部投資家である場合、自身に関連付けられた投資家要素223における属性を作成、更新、および/または削除する責任を負い得る。
【0058】
[0066]データストレージスマートコントラクト128は、投資家120が口座を有するブローカディーラ118ごとに、投資家120の各インスタンスの投資家要素を含み得る。すなわち、データストレージスマートコントラクト128は、複数のブローカディーラ118に口座を有する投資家120のための複数の投資家要素を格納し得る。例では、投資家120の投資家要素は、投資家120が関連付けられているブローカディーラ118によってのみ作成、更新、および/または削除され得るが、他の構成が可能である。したがって、各ブローカディーラ118は、好ましくは、それぞれのブローカディーラ118の顧客である投資家120に関連付けられた投資家要素を作成、修正、または削除し得る。
【0059】
[0067]任意選択で、1つまたは複数の他の種別の要素は、システム100内の様々なアクタに関する属性を含むデータストレージスマートコントラクト128に格納され得る。例では、他の要素(すなわち、投資家要素以外)は、少なくとも1つの保管人要素、少なくとも1つのブローカディーラ要素、および/または、少なくとも1つの証券トークン要素を含み得る。例では、ブローカディーラ118のブローカディーラ要素は、ブローカディーラ118が関連付けられる保管人116によってのみ作成、更新、および/または削除され得るが、他の構成が可能である。任意選択で、発行者要素および/または証券トークン交換要素は、システム内のすべての発行者114および/または証券トークン交換部124のために格納され得る。他の要素のうちの1つの要素における属性(たとえば、要素におけるスロットの値)は、コンマ区切り値、ハッシュテーブル、マッピング、辞書、および/または、鍵/値のペアなどとして格納され得る。
【0060】
[0068]上記で説明されるように、各スマートコントラクト(たとえば、証券トークン102)は、スマートコントラクトによって実施される方法を呼び出すために使用できるアドレスにおいて格納され得る。スマートコントラクトをアップグレードするための従来のソリューションは、アップグレードの前後でスマートコントラクトのために同じアドレスを維持する。たとえば、プロキシパターンを介したスマートコントラクトのアップグレードは、(1)変更がないアドレスにおける代理コントラクト、および(2)代理コントラクトが指す非代理コントラクトを展開することを含む。非代理コントラクトは、コントラクトの実質的な機能を実施するが、代理コントラクトは、(他の機能はほとんど、またはまったくない)非代理コントラクトのアドレスを指すだけである。アップグレード中に、代理コントラクトが指すアドレスは、新しく展開された非代理コントラクトに変更されるが、代理コントラクトのアドレス(代理コントラクトが呼び出されるアドレス)は変更されない。
【0061】
[0069]対照的に、本システムおよび方法によれば、第1のスマートコントラクトをアップグレードすることは、(1)第2のスマートコントラクトを展開し、第2のスマートコントラクトを指すように(第1のスマートコントラクトのアップグレードされたアドレス111フィールドにおける)アドレスを変更すること、(2)第2のスマートコントラクトにおける新しいトークン102を、中間アドレス(たとえば、発行者のアドレス)に発行すること、(3)(トークン保有者アドレスのセットに保有された)第1のスマートコントラクトにおける古いトークン102を、第2のスマートコントラクトのアドレスに移行すること、および(4)第2のスマートコントラクトにおける新しいトークンを、中間アドレスから、(第1のスマートコントラクトにおいて以前に古いトークン102を保有していた)トークン保有者アドレスのセットに移動することを含み得る。したがって、第1のスマートコントラクトは展開されたままであり、必要に応じて、アップグレード後も監査可能である。なぜなら、第1および第2のスマートコントラクトの両方が、閲覧可能/検索可能であるからである。
【0062】
[0070]任意選択で、親アドレス117は、展開されるときに第2のスマートコントラクトに設定され得る。親アドレス117は、第1のスマートコントラクトのアドレスを指し得る。親アドレス117は、必要に応じて、トークン履歴を、逆時系列順に辿ることを可能にし得る。
【0063】
[0071](たとえば、証券トークン102のような)スマートコントラクトのアドレスは、スマートコントラクトにおいてアップグレードされたアドレス111フィールドとは異なることに留意されたい。スマートコントラクト「の」アドレスは、スマートコントラクトが分散型台帳において格納されているアドレスである。アップグレードされたアドレス111は、スマートコントラクトの後続バージョン(のアドレス)を指す値を有するスマートコントラクトにおけるフィールドである。
【0064】
[0072]図2Aは、図1に示されるシステム100において使用されるデータ構造110を示すブロック図である。1つまたは複数のデータ構造110は、データストレージスマートコントラクト128に格納され得る。各データ構造110は、1つまたは複数の要素223A~223Mを含み得、各要素223は、特定の保管人116、ブローカディーラ118、または投資家120に対応する(すなわち、それらに関する情報を含む)。任意選択で、証券トークン要素223はまた、1つまたは複数のデータ構造110に格納され得る。
【0065】
[0073]いくつかの構成では、特定のデータ構造110内のすべての要素223は、同じ種別のエンティティに対応し、たとえば、すべての要素223は、システム100における投資家120に対応する。この構成では、データストレージスマートコントラクト128は、システム100におけるすべての投資家120のための第1のデータ構造110、すべての保管人116のための第2のデータ構造110、すべてのブローカディーラ118のための第3のデータ構造110、および/またはすべての証券トークン102のための第4のデータ構造を含み得る。あるいは、特定のデータ構造110は、異なる種別のエンティティに対応する要素223を含み得、すなわち、投資家要素223、保管人要素223、およびブローカディーラ要素223は、単一のデータ構造に含まれ得る。
【0066】
[0074]いくつかの構成では、各要素223は、2つのストレージスロット215A~215Nを含み得、ここで、各ストレージスロットは、固定されたバイト数である。たとえば、ストレージスロットは、32バイト長(または任意の適切な長さ)であり得、たとえば、各ストレージスロット215は、Solidityプログラミング言語のスロットであり得る。各要素223は、2つのストレージスロット215(すなわち、N=2M)を含むものとして図2Aに示されているが、要素223は、単一のストレージスロット215(すなわち、N=M)のみ、または3つ以上のストレージスロット215(すなわち、N>2M)を含み得る。
【0067】
[0075]各ストレージスロット215は、鍵219A~219Nおよび値221A~221N、すなわち、鍵/値のペアを含み得る。各鍵219は、要素223が対応するエンティティの種別(たとえば、保管人116、ブローカディーラ118、投資家120など)を示す第1のレベルと、特定のエンティティによって所有されるアドレス(たとえば、イーサリアムアドレス)を示す第2のレベルとを有するネスト構造であり得る。このようにして、鍵215は(エンティティの種別で)符号化され得る。アドレスによるインデクス付けの代わりに、鍵219の第2のレベルは、他の手法、たとえば、エンティティ/投資家/証券トークン名のハッシュなどでインデクス付けされ得る。任意選択で、鍵219は、3つ以上のレベルを含み得る。要素223が、2つのスロット215を含む場合、要素223の第1のストレージスロット215における鍵219は、要素223の第2のスロット215における鍵219と同じであり得るか、または異なり得る。
【0068】
[0076]値221に含まれる情報は、要素223が対応するエンティティの種別に応じて変化し得る。データ構造110における各値221は、要素223が対応するエンティティの種別(たとえば、保管人116、ブローカディーラ118、投資家120など)を示す第1のレベルと、追加情報を示す1つまたは複数の追加のレベルとを有するネスト構造であり得る。このようにして、値221は、(エンティティの種別で)符号化され得、その結果、コンピューティングデバイス(たとえば、ネットワークノード140)は、値221におけるデータを解釈する方法を知る。言い換えれば、コンピューティングデバイス(たとえば、ネットワークノード140)は、符号化、すなわち、値221に示される種別に基づいて、値221におけるデータを異なる方式で解釈する。複数のパラメータをビットシフト(および/または連結)して、同じ値221に収まるようにできる。
【0069】
[0077]たとえば、特定の投資家要素223における第1のストレージスロット215における値221は、第1のレベルにおける「投資家」を示す1つまたは複数のビットと、第2のレベルにおける投資家120のためのPIIハッシュとを含み得る。さらに、投資家要素223における第2のストレージスロット215における値221は、投資家120の他の属性を示す1つまたは複数のビットを含み得る。
【0070】
[0078]他のデータ構造110の例は、保管人要素223、ブローカディーラ要素223、および/または任意選択の証券トークン要素223を含む。各保管人要素223は、特定の保管人116に関する属性を含み得る。任意選択で、保管人要素223は、保管人要素223が関連付けられる1つまたは複数の投資家要素223、ブローカディーラ要素223、および/または証券トークン要素223のアドレス(たとえば、イーサリアムアドレス)を参照し得る。たとえば、保管人要素223は、保管人116が関連付けられる1人または複数のブローカディーラ118のアドレス(たとえば、イーサリアムアドレス)を含み得る。
【0071】
[0079]各ブローカディーラ要素223は、特定のブローカディーラ118に関する属性を含み得る。特定のブローカディーラ要素223における値221は、第1のレベルにおける「ブローカディーラ」を示す1つまたは複数のビットと、第2のレベルにおけるブローカディーラ118に関する属性を示す1つまたは複数のビットとを含み得る。任意選択で、ブローカディーラ要素223は、ブローカディーラ要素223が関連付けられる1つまたは複数の投資家要素223、保管人要素223、および/または証券トークン要素223のアドレス(たとえば、イーサリアムアドレス)を参照し得る。たとえば、ブローカディーラ要素223は、ブローカディーラ118が関連付けられる1人または複数の保管人116のアドレス(たとえば、イーサリアムアドレス)を含み得る。
【0072】
[0080]各証券トークン要素223は、特定の証券トークン102に関する属性を含み得る。任意選択の証券トークン要素223における値221は、第1のレベルにおける「証券トークン」を示す1つまたは複数のビットと、第2のレベルにおける証券トークン102に関する属性を示す1つまたは複数のビットとを含み得る。証券トークン102に関する様々な種別の情報は、証券トークン要素223の値に含まれ得る。
【0073】
[0081]各任意選択の発行者要素223は、特定の発行者114に関する属性を含み得る。特定の任意選択の発行者要素223における値221は、第1のレベルにおける「発行者」を示す1つまたは複数のビットと、第2のレベルにおける発行者114に関する属性を示す1つまたは複数のビットとを含み得る。任意選択で、発行者要素223は、発行者114が関連付けられる1人または複数の投資家120、保管人116、ブローカディーラ118、および/または証券トークン102のアドレス(たとえば、イーサリアムアドレス)を参照し得る。
【0074】
[0082]図2Bは、図1に示されるシステム100におけるエンティティの階層を示すブロック図である。具体的には、図2Bは、システム100の1人または複数の投資家120、任意選択の1人または複数のブローカディーラ118、任意選択の1人または複数の保管人116、および/または1人または複数の所有者112の間の関係を示す。
【0075】
[0083]例では、図2Bにおける階層は、システム100におけるデータ許可を定義し得る。階層は、任意の適切な形式で格納され得るか、および/または様々な要素223に格納されるデータにおいて暗黙的であり得る。
【0076】
[0084]データ構造110は、複数のブローカディーラ118に口座を有する投資家120のために、複数の投資家要素223を格納し得る。例では、第1の投資家要素223Aは、たとえば、第1のブローカディーラ118Aによって実行されるオンボーディング中に、第1のブローカディーラ118Aによって収集されたデータにしたがって、特定の投資家120を説明し得る。同様に、異なる投資家要素223Bは、たとえば、異なるブローカディーラ118Bによって実行されるオンボーディング中に、異なるブローカディーラ118Bによって収集されたデータにしたがって、同じ特定の投資家120を説明し得る。それに加えて、またはその代わりに、投資家要素120Iは、ブローカディーラ118または保管人116の顧客ではない外部投資家のために格納され得る。
【0077】
[0085]グローバルレジストリ108を実施する任意のスマートコントラクトは、ネットワークノード140上で実行する仮想マシン(たとえば、イーサリアム仮想マシン)によって実行され得る。システム100における各エンティティは、データストレージスマートコントラクト128に対して異なるデータ許可を有し得る。例では、所有者112は、自身の階層において、保管人116、ブローカディーラ118、および/または投資家120の要素を追加、削除、および/または変更し得る。保管人116は、自身の階層において、ブローカディーラ118および/または投資家120の要素を追加、削除、および/または変更し得る。ブローカディーラ118は、自身の階層において、投資家120の要素を追加、削除、および/または変更し得る。所有者112は、自身の階層において、保管人116、ブローカディーラ118、および/または投資家120の要素を追加、削除、および/または変更し得る。いくつかの構成では、投資家120は、2つのアドレス間で資金および/またはトークンを移動するtransfer()方法109を呼び出す許可を有し得る。
【0078】
[0086]図3は、アップグレード可能なスマートコントラクトの3つの異なるバージョン302A~302Cを示すブロック図である。言い換えれば、図3は、2回アップグレードされ、その結果、スマートコントラクトの第1のバージョン302A、スマートコントラクトの第2のバージョン302B、およびスマートコントラクトの第3のバージョン302Cがもたらされるスマートコントラクト302を示す。いくつかの構成では、図3に示されるスマートコントラクト302は、上記で説明される証券トークン102を実施し得る。図3には示されないが、本明細書で説明される各スマートコントラクト302は、図1における証券トークン102について説明される同じ機能、方法、および/またはパラメータのいずれかまたはすべてを実施し得る。
【0079】
[0087]各スマートコントラクト302は、その子孫である後続のコントラクトへのアドレスを保有する。このアドレスは、それぞれアップグレードされたアドレス111A~111Cフィールドにおける各スマートコントラクト302に格納され得る。スマートコントラクトの第1のバージョン302Aにおけるアップグレードされたアドレス111Aは、スマートコントラクトの第2のバージョン302Bのアドレスを指し、スマートコントラクトの第2のバージョン302Bにおけるアップグレードされたアドレス111Bは、スマートコントラクトの第3のバージョン302Cのアドレスを指す。このように、第3のバージョン302Cは、第1のバージョン302Aの子/子孫である第2のバージョン302Bの子/子孫である。
【0080】
[0088]スマートコントラクトの第3のバージョン302Cが現在のバージョンであると仮定すると、スマートコントラクトの第3のバージョン302Cのアップグレードされたアドレス111Cは、設定されていないことがあり、たとえば、すべてのビットが「0」に、すべてのビットが「1」に、またはスマートコントラクト302が実施される分散型台帳122におけるアドレスに対応しない他の任意の値に設定される。設定されていないアップグレードされたアドレス111Cは、スマートコントラクトの第3のバージョン302Cが、スマートコントラクト302の現在アクティブな実施、たとえば、スマートコントラクト302の直近に展開されたバージョンであることを意味する。いくつかの構成では、スマートコントラクト302におけるアップグレードされたアドレス111は、たとえば、分散型台帳122におけるスマートコントラクト302において実施される方法を呼び出すことによって、スマートコントラクト302の発行者114によって最初に設定され得る。
【0081】
[0089]いくつかの構成では、アップグレードされたアドレス111フィールドは、一度設定されると変更されない。スマートコントラクト302においてアップグレードされたアドレス111フィールドを、スマートコントラクト302の同じ後続バージョンを指すように永久に設定しておくことは、スマートコントラクト302のアップグレード履歴が監査可能であることを保証する。スマートコントラクト302のアップグレードパスを監査するために、バージョンは、たとえば、第3のバージョン302Cから第2のバージョン302B、第1のバージョン302Aへと逆方向に辿ることができる。監査以外に、スマートコントラクト302の存続期間中、逆方向に辿る必要はない。なぜなら、主な関心事は、指し示されたアドレスが、スマートコントラクト302のアクティブなバージョンであるか否かと、アクティブなバージョンではないのであれば、アクティブなバージョンへどうやって辿るかであるからである。
【0082】
[0090]任意選択で、各スマートコントラクト302は、その親コントラクトへのアドレスを保有する。このアドレスは、親アドレス117A~117Cフィールドに格納され得る。スマートコントラクトの第1のバージョン302Aが、最も古いバージョンであると仮定すると、スマートコントラクトの第1のバージョン302Aにおける任意選択の親アドレス117Aは、設定されていない可能性があり、たとえば、すべてのビットが「0」に、すべてのビットが「1」に、または、スマートコントラクト302が実施される分散型台帳122におけるアドレスに対応しない他の任意の値に設定され得る。スマートコントラクトの第2のバージョン302Bにおける任意選択の親アドレス117Bは、スマートコントラクトの第1のバージョン302Aのアドレスを指し、スマートコントラクトの第3のバージョン302Cにおけるアップグレードされたアドレス117Cは、スマートコントラクトの第2のバージョン302Bのアドレスを指す。このように、第1のバージョン302Aは、第3のバージョン302Cの親である第2のバージョン302Bの親である。
【0083】
[0091]第1の例では、コントラクトがアップグレードされたとき、たとえば、アップグレードされたアドレス111および/または親アドレス117が設定されたとき、イベントが発行される。例では、(たとえば、投資家120、ブローカディーラ118、保管人、発行者114、所有者112、またはネットワークノード140に属する)デバイスは、そのようなイベントを傍受し得る。例では、イベントは、アップグレードされたアドレス111および/または設定された親アドレス117を示す。子スマートコントラクト302は、イベントにおいてアップグレードされたアドレス111を使用して直接呼び出され得る。
【0084】
[0092]第2の例では、発呼デバイスは、任意選択で、親スマートコントラクト302を呼び出して、親スマートコントラクト302においてアップグレードされたアドレス111および/または親アドレス117が設定されているか否かを判定し得る。例では、子スマートコントラクト302におけるゲッタ関数(getter function)は、(その親を指す)親アドレス117を返し得、親スマートコントラクト302におけるゲッタ関数は、(その子を指す)アップグレードされたアドレス111を返し得る。例では、そのような関数は、アップグレードされたアドレス111および/または親アドレス117が設定されていないときにゼロアドレスを返し得る。
【0085】
[0093]スマートコントラクト302が証券トークン102を実施する例では、スマートコントラクト302の各バージョンは、トークン供給パラメータ115を含み得る。トークン供給パラメータ115は、証券トークン102/スマートコントラクト302における未処理のトークンの総数を示し得、たとえば、トークン供給パラメータ115は、証券トークン102/スマートコントラクト302の残高表105におけるすべてのアドレスのトークン残高の合計であり得る。
【0086】
[0094]スマートコントラクト302の後続バージョンが展開されると、発行者114(または所有者112)は、(スマートコントラクト302の後続バージョンの)総供給パラメータ115を、親バージョンの総供給パラメータ115と一致するように設定する。図3の例では、スマートコントラクトの第2のバージョン302Bの総供給パラメータ115Bは、スマートコントラクトの第2のバージョン302Bの展開後のスマートコントラクトの第1のバージョン302Aの総供給パラメータ115Aに等しくなるように設定され得る。同様に、スマートコントラクトの第3のバージョン302Cの総供給パラメータ115Cは、スマートコントラクトの第3のバージョン302Cの後続する展開後のスマートコントラクトの第2のバージョン302Bの総供給パラメータ115Bに等しくなるように設定され得る。
【0087】
[0095]スマートコントラクト302が証券トークン102を実施する例では、各バージョン302はまた、証券トークン102/スマートコントラクト302の各バージョンにおいて発行されたトークンのトークン残高およびアドレスを示す残高表105A~105Cを含み得る。各残高表105におけるトークン残高およびアドレスは、スマートコントラクト302の状態の一部と見なされ得る。図4A図4Dにおいて説明されるように、スマートコントラクトの親バージョンおよび子バージョンの両方の状態/残高表105は、親バージョンにおけるトークンの、子バージョンへの移行を反映するように更新され得る。
【0088】
[0096]図4A図4Dは、トークン102の、スマートコントラクト302の後続バージョンへの移行の異なる段階を示すブロック図である。図4A図4Dの例では、アップグレードされたスマートコントラクト302は、証券トークン102を実施している。具体的には、図4A図4Dの各々は、2つの残高表105を示し、左側の表105Aは、(非推奨である)親スマートコントラクト302のために実施され、(および親スマートコントラクト302におけるトークンを追跡し)右側の表105Bは、親スマートコントラクト302の後続バージョンである子スマートコントラクト302のために実施される(および子スマートコントラクト302におけるトークンを追跡する)。子スマートコントラクト302のアドレスは、アドレスDであると仮定する。言い換えれば、子スマートコントラクト302は、分散型台帳122のアドレスDにおいて格納される。
【0089】
[0097]図4Aは、スマートコントラクト302の後続バージョンへのトークンの移行中の第1の段階を示す。まず、(左側の残高表105Aによって表される)親スマートコントラクト302が、450の未処理のトークンを含む(総供給パラメータ115は、450に等しい)と仮定する。親スマートコントラクト302における未処理のトークンは、3つの異なるアドレス、すなわち、100がアドレスAへ、150がアドレスBへ、200がアドレスCへ分散され得る。
【0090】
[0098]子スマートコントラクト302の展開後、発行者114(または所有者112)は、親スマートコントラクト302におけるトークンが取引することを許可または制限することができる。取引を制限すると、受信者が、アップグレードされたアドレス111フィールドにおけるアドレス(この例ではアドレスD)と一致するアドレスではない限り、親スマートコントラクト302内でのすべての取引の発生を制限することによってアップグレードを強制し得る。言い換えれば、取引を制限することは、親スマートコントラクト302におけるトークンの保有者が、自分の保有物を、子スマートコントラクト302にしか移動できないことを意味する。移行後、(アドレスDにおける)子スマートコントラクト302は、親スマートコントラクト302内の保有者になる。これは、保有者が、自分のトークンを、子スマートコントラクト302のアドレス(アドレスD)に移行/移動するときに疑似書込機能を提供すると同時に、アップグレード中のトークンの遷移の完全な監査証跡を提供する。
【0091】
[0099](右側の残高表105Bによって表される)子スマートコントラクト302は、最初に展開されたとき、未処理のトークン(総供給パラメータ115が0に等しい)またはトークン保有者を有さないので、残高表105Bは空になる。次に、アップグレードプロセスの一部として、子スマートコントラクトにおいて新しいトークン(親スマートコントラクト302の総供給パラメータ115に等しい数:450)が発行され、たとえば、子スマートコントラクト302において、発行者のアドレス114へ450の新しいトークンが発行される。(親スマートコントラクト302における)古いトークンがアドレスDに移行されると、(子スマートコントラクト302における)対応する新しいトークンが、発行者のアドレスからトークン保有者アドレスに移動される。
【0092】
[0100]図4B図4Dは、3つのアドレス(A、B、およびC)に保有される(親スマートコントラクト302における)古いトークンの、子スマートコントラクト302のアドレス(アドレスD)への移行パスと、(子スマートコントラクト302における)新しいトークンの、発行者のアドレスから3つのアドレス(A、B、およびC)への対応する移動とを示す。親スマートコントラクト302におけるトークンの取引を制限する代わりに、発行者114は、親スマートコントラクト302が、取引の継続を許可できることに留意されたい。親スマートコントラクト302が取引を継続する場合、親スマートコントラクト302におけるトークンは、子スマートコントラクト302のアドレス(アドレスD)以外のアドレスに移動され得る。たとえば、発行者114が、親スマートコントラクト302が取引を継続することを許可する場合、アドレスAに関連付けられたトークン保有者は、(アドレスDの代わりに)アドレスBにそれらの50のトークンを移動し得る。
【0093】
[0101]将来のアップグレードは、図4A図4Dに関連して説明したものと同じフローにしたがい、発行者114は、廃止された親スマートコントラクトにおけるトークンが、積極的に取引する(またはしない)ことを可能にする。(親スマートコントラクト302においてトークンが取引を継続することを許可されるか否かの)執行は、(1)トークン102/スマートコントラクト302自体において実施されたコンプライアンス規則106A、および/または(2)トークン102/スマートコントラクト302の外部で実施されたコンプライアンス規則106Bにおいて生じ得る。言い換えれば、アップグレードが執行されることに応じて、親/非推奨のトークン102における(または、そうでなければ関連付けられた)コンプライアンス規則が執行される。これは、すべてのトークントランザクションが、子スマートコントラクト302のアドレス(アドレスD)へ送信されることを必要とする。いくつかの構成では、コンプライアンス規則106は、アップグレードされたアドレス111フィールドが設定されている(取引が制限されていることを示す)か、設定されていない(取引が許可されていることを示す)かを判定することによって、親スマートコントラクト302におけるトークンが、取引の継続を許可されるか否かを判定し得る。
【0094】
[0102]図4Bは、100のトークンがアドレスAからアドレスDへ移行されるトークン102の移行中の第2の段階を示す。言い換えると、(アドレスAに関連付けられた)保有者は、親スマートコントラクト302内の100の古いトークンを、子スマートコントラクト302のアドレスDに移行する。これにより、これらの100の古いトークンが、アドレスDから移動されることはないため、親スマートコントラクト302に、効果的に書き込まれる。例では、(たとえば、アドレスA、B、またはCからアドレスDへの)古いトークンの移行は、分散型台帳122における親スマートコントラクト302において実施される移動方法を呼び出すことを含み得る。移動方法は、発行者114、所有者112、または移動アドレスに関連付けられたトークン保有者によって呼び出され得る。
【0095】
[0103]トークン保有者アドレスから、親スマートコントラクト302におけるアドレスDに古いトークンを移行することに加えて、子スマートコントラクト302における対応する新しいトークンは、発行者のアドレスから、トークン保有者アドレスに移動される。例では、親スマートコントラクト302におけるすべての古いトークンを置き換えるのに十分な数の新しいトークンが、(アップグレードプロセス中に)子スマートコントラクト302において、発行者のアドレスへ発行される。たとえば、450の新しいトークンが、子スマートコントラクト302において、発行者のアドレスへ発行される。例では、(子スマートコントラクト302における)すべての新しいトークンが、一度に発行される。その後、(親スマートコントラクト302における)古いトークンが、トークン保有者アドレスから子スマートコントラクト302のアドレス(アドレスD)に移行されると、(子スマートコントラクト302における)対応する数の新しいトークンは、発行者のアドレスからトークン保有者アドレスに移動される。
【0096】
[0104]したがって、(親スマートコントラクト302における)100の古いトークンが、アドレスAからアドレスDに移動された後、(子スマートコントラクト302における)対応する100の新しいトークンが、発行者のアドレスからアドレスAに移動され得る。例では、古いトークンをアドレスDに送信する移動方法呼出しのアドレスが、発行者のアドレスから新しいトークンを移動するための出力アドレスとして使用され得る。
【0097】
[0105]図4Cは、150のトークンがアドレスBからアドレスDへ移行される間の、トークン102の移行中の第3の段階を示す。言い換えると、(アドレスBに関連付けられた)保有者は、親スマートコントラクト302における150の古いトークンを、子スマートコントラクト302のアドレスDに移行し、これらの150の古いトークンを効果的に書き込む。例では、この移行は、分散型台帳122における親スマートコントラクト302において実施される移動方法を呼び出す(移動アドレスに関連付けられた)発行者114、所有者112、またはトークン保有者を含む。この150の古いトークンの移行後、(親スマートコントラクト302の)アドレスDは、親スマートコントラクト302において、アドレスAから100、アドレスBから150の、250の古いトークンを保有し得る。それに加えて、子スマートコントラクト302における対応する150の新しいトークンが、発行者のアドレスからアドレスBに移動され得る。その時点で、発行者のアドレスは、残りの200(450-アドレスAへの100-アドレスBへの150)の新しいトークンを保有する。
【0098】
[0106]図4Dは、200のトークンがアドレスCからアドレスDに移行される間の、トークン102の移行中の第4の段階を示す。言い換えると、(アドレスCに関連付けられた)保有者は、親スマートコントラクト302における200の古いトークンを、子スマートコントラクト302のアドレスDに移行し、これらの200の古いトークンを効果的に書き込む。例では、この移行は、分散型台帳122における親スマートコントラクト302において実施される移動方法を呼び出す(移動アドレスに関連付けられた)発行者114、所有者112、またはトークン保有者を含む。この200の古いトークンの移行後、親スマートコントラクト302の最終状態は、単一の保有者、(子スマートコントラクト302の)アドレスDを有し、親スマートコントラクト302において、アドレスAから100、アドレスBから150、アドレスCから200の、総供給450の古いトークンを保有する。これは本質的に、親スマートコントラクト302における古いトークンをロック/書き込みをする一方で、それらが子スマートコントラクト302に移行されたことを証明する。
【0099】
[0107]それに加えて、子スマートコントラクト302における対応する200の新しいトークンは、発行者のアドレスからアドレスCに移動され得る。その時点で、発行者のアドレスはゼロの新しいトークンを保有し、発行者のアドレスは、任意選択で、残高表105Bから削除され得る。
【0100】
[0108]図5は、子スマートコントラクト302を展開するための方法500を示すフロー図である。方法500は、システム100内の仮想マシンを実行する少なくとも1つのプロセッサ、たとえば、ネットワークノード140における少なくとも1つのプロセッサによって実行され得る。方法500は、たとえば、分散型台帳122に格納された、証券トークン102/スマートコントラクト302において実施された1つまたは複数の方法を実行することを含み得る。それに加えて、方法500は、たとえば、分散型台帳122に格納された、証券トークン102/スマートコントラクト302における1つまたは複数のパラメータを利用し得る。
【0101】
[0109]方法500は、少なくとも1つのプロセッサが、分散型台帳122において、親スマートコントラクト302の後続バージョン(「子」とも呼ばれる)である子スマートコントラクト302を展開するステップ502で開始する。現在実施されるバージョンではないが、親スマートコントラクト302は、監査可能性を維持するために、子スマートコントラクト302の展開後、展開されたままである。例では、子スマートコントラクト302は、子スマートコントラクト302を分散型台帳122に格納し、たとえば、分散型台帳122においても実施される、親スマートコントラクト302において実施されたアップグレード方法を呼び出すことによって展開される。アップグレード方法は、親スマートコントラクト302の所有者112または発行者114によって呼び出され得る。
【0102】
[0110]方法500は、ステップ504に進み、ここでは、少なくとも1つのプロセッサは、親スマートコントラクト302におけるアップグレードされたアドレス111フィールドを、子スマートコントラクト302のアドレスを指すように設定する。各スマートコントラクト302は、もしあれば、その子スマートコントラクト302へのアドレスを含み得る。子スマートコントラクト302のないスマートコントラクト302の場合(すなわち、スマートコントラクト302は、スマートコントラクト302の現在アクティブな実施である場合)、アップグレードされたアドレス111フィールドは、設定されていない可能性があり、たとえば、すべてのビットが「0」に、すべてのビットが「1」に、またはスマートコントラクト302が実施される分散型台帳122におけるアドレスに対応しない他の任意の値に設定される。スマートコントラクト302におけるアップグレードされたアドレス111は、たとえば、分散型台帳122におけるスマートコントラクト302において実施される方法を呼び出すことによって、スマートコントラクト302の発行者114によって設定され得る。
【0103】
[0111]いくつかの構成では、アップグレードされたアドレス111フィールドは、一度設定されると変更されない。スマートコントラクト302においてアップグレードされたアドレス111フィールドを、スマートコントラクト302の同じ後続バージョンを指すように永久に設定しておくことは、スマートコントラクト302のアップグレード履歴が監査可能であることを保証する。
【0104】
[0112]方法500は、任意選択のステップ506に進み、ここでは、少なくとも1つのプロセッサは、(親スマートコントラクト302の)アップグレードされたアドレス111フィールドが設定されたことを示すイベント、たとえば、イーサリアムイベントを開始する。例では、イベントは、アップグレードされたアドレス111、および任意選択で、親スマートコントラクト302のアドレスを示し得る。例では、これらのイベントは、分散型台帳122を実施するノード140のネットワークにブロードキャストされる。例では、(たとえば、投資家120、ブローカディーラ118、保管人、発行者114、所有者112、またはネットワークノード140に属する)デバイスは、そのようなイベントを傍受し得る。
【0105】
[0113]方法500は、ステップ508に進み、ここでは、少なくとも1つのプロセッサは、子スマートコントラクト302における親アドレス117フィールドを、親スマートコントラクト302のアドレスを指すように設定する。各スマートコントラクト302は、もしあれば、その親スマートコントラクト302へのアドレスを含み得る。親スマートコントラクト302のないスマートコントラクト302の場合(すなわち、スマートコントラクト302は、スマートコントラクト302の最も古いバージョンである場合)、親アドレス117フィールドは設定されていない可能性があり、たとえば、すべてのビットが「0」に、すべてのビットが「1」に、またはスマートコントラクト302が実施される分散型台帳122におけるアドレスに対応しない他の任意の値に設定され得る。スマートコントラクト302における親アドレス117は、たとえば、分散型台帳122におけるスマートコントラクト302において実施される方法を呼び出すことによって、スマートコントラクト302の発行者114によって設定され得る。
【0106】
[0114]方法500は、任意選択のステップ510に進み、ここでは、少なくとも1つのプロセッサは、(子スマートコントラクト302の)親アドレス117フィールドが設定されたことを示すイベント、たとえば、イーサリアムイベントを開始する。例では、イベントは、親アドレス117、および任意選択で、子スマートコントラクト302のアドレスを示し得る。例では、これらのイベントは、分散型台帳122を実施するノード140のネットワークにブロードキャストされる。例では、(たとえば、投資家120、ブローカディーラ118、保管人、発行者114、所有者112、またはネットワークノード140に属する)デバイスは、そのようなイベントを傍受し得る。
【0107】
[0115]方法500は、任意選択のステップ512に進み、ここでは、少なくとも1つのプロセッサは、子スマートコントラクト302におけるトークン供給パラメータ115を、親スマートコントラクト302におけるトークン供給パラメータ115と等しくなるように設定する。例では、任意選択のステップ512は、スマートコントラクト302が証券トークン102を実施する場合の構成についてにのみ実行される。そのような構成では、トークン供給パラメータ115は、スマートコントラクト302における未処理のトークンの総数を示し得、たとえば、トークン供給パラメータ115は、スマートコントラクト302の残高表105におけるすべてのアドレスのトークン残高の合計であり得る。対照的に、方法500におけるスマートコントラクト302が証券トークン102を実施しない場合、任意選択のステップ512は実行されない。
【0108】
[0116]図6は、親スマートコントラクト302における未処理のトークンを、子スマートコントラクト302に移行するための方法600を示すフロー図である。方法600は、システム100内の仮想マシンを実行する少なくとも1つのプロセッサ、たとえば、ネットワークノード140における少なくとも1つのプロセッサによって実行され得る。方法600は、たとえば、分散型台帳122に格納された、証券トークン102/スマートコントラクト302において実施される1つまたは複数の方法を実行することを含み得る。それに加えて、方法600は、たとえば、分散型台帳122に格納された、証券トークン102/スマートコントラクト302における1つまたは複数のパラメータを利用し得る。
【0109】
[0117]図6における方法600は、親スマートコントラクト302および子スマートコントラクト302が各々、それぞれの証券トークン102を実施する場合に実行される。いくつかの構成では、たとえば、子スマートコントラクト302が展開された後、図6の方法600は、図5の方法500に続いて実行され得る。したがって、図6の方法600における親スマートコントラクト302および子スマートコントラクト302は、それぞれ、図5の方法500において説明された親スマートコントラクト302および子スマートコントラクト302と同じであり得る。いくつかの構成では、図5の方法500および/または図6の方法600は、(親スマートコントラクト302の)発行者114が親スマートコントラクト302において実施され、たとえば、分散型台帳122においても実施されるアップグレード方法を呼び出すことに応じて開始される。
【0110】
[0118]方法600は、任意選択のステップ602で開始し、ここでは、少なくとも1つのプロセッサは、子スマートコントラクト302の展開後、親スマートコントラクト302における古いトークンが、取引から制限されているか否かを判定する。例では、発行者114は、親スマートコントラクト302のさらなる取引を許可するか、制限または許可するかを決定する。取引が制限される場合、親スマートコントラクト302における古いトークンのすべてのトランザクションは、たとえば、図4A図4Dの例におけるアドレスDのように、トランザクションの出力アドレスとして子スマートコントラクト302のアドレスを使用する必要がある。対照的に、発行者114が、親スマートコントラクト302が取引を継続することを許可する場合、親スマートコントラクト302における古いトークンは、子スマートコントラクト302のアドレス(アドレスD)以外のアドレスに移動され得る。
【0111】
[0119](親スマートコントラクト302における古いトークンが、取引の継続を許可されるか否かの)執行は、(1)証券トークン102/スマートコントラクト302自体において実施されたコンプライアンス規則106A、および/または(2)証券トークン102/スマートコントラクト302の外部で実施されたコンプライアンス規則106Bにおいて起こり得る。たとえば、発行者114は、親スマートコントラクト302において実施される方法を呼び出して、親スマートコントラクト302内の古いトークンの取引が制限されている/アップグレードが強制されていることを(たとえば、コンプライアンス規則106において)示すことができ、その後、親スマートコントラクト302における古いトークンの移動/トランザクションが開始されると、少なくとも1つのプロセッサがこの表示をチェックする。いくつかの構成では、コンプライアンス規則106は、アップグレードされたアドレス111フィールドが設定されている(取引が制限されていることを示す)か、または、親スマートコントラクト302において設定されていない(取引が許可されていることを示す)かを判定することによって、親スマートコントラクト302におけるトークンが取引を継続できるか否かを判定し得る。いくつかの構成では、方法600における残りのステップは、たとえば、子スマートコントラクト302の展開後、親スマートコントラクト302における古いトークンが、取引を制限されているとの判定に基づいて(たとえば、それに応じて)のみ実行される。
【0112】
[0120]方法600は、ステップ604に進み、ここでは、少なくとも1つのプロセッサは、子スマートコントラクト302における新しいトークンを、中間アドレスに発行する。例では、子スマートコントラクトにおいて発行された新しいトークンの数は、親スマートコントラクト302の総供給パラメータ115に等しい。例では、中間アドレスは、発行者114のアドレスである。言い換えれば、新しいトークンは、子スマートコントラクト302において発行され、発行者のアドレスに最初に保有され得る。
【0113】
[0121]方法600は、ステップ606に進み、ここでは、少なくとも1つのプロセッサは、親スマートコントラクト302におけるすべての古いトークンを、トークン保有者アドレスから、子スマートコントラクト302のアドレスに移行する。親スマートコントラクト302は、親スマートコントラクト302における古いトークンを保有するすべてのアドレスのトークン残高を示す(分散型台帳122における)残高表105を含み得、たとえば、残高表105は、どのアドレス(たとえば、イーサリアムアドレス)が、親スマートコントラクト302において、どれだけの量のトークンを保有しているのかを示し得る。同様に、子スマートコントラクト302は、子スマートコントラクト302における古いトークンを保有するすべてのアドレスのトークン残高を示す(分散型台帳122における)残高表105を含み得る。
【0114】
[0122]ステップ606における移行を実行するために、少なくとも1つのプロセッサは、トークン保有者アドレスにおける古いトークンの、子スマートコントラクト302のアドレスへの移動を実行し得る。これは、たとえば、発行者114、所有者112、または移動アドレスに関連付けられたトークン保有者によって呼び出され、分散型台帳122における親スマートコントラクト302において実施される移動方法を呼び出すことを含み得る。
【0115】
[0123]方法600は、ステップ608に進み、ここでは、少なくとも1つのプロセッサは、子スマートコントラクト302における少なくとも1つの新しいトークンを、中間アドレスからトークン保有者アドレスに移動する。たとえば、ステップ606において、(親スマートコントラクト302における)100の古いトークンが、トークン保有者アドレスから移行された場合、ステップ608において、(子スマートコントラクト302における)100の新しいトークンが、中間アドレスからトークン保有者アドレスに移動される。
【0116】
[0124]方法600は、任意選択のステップ610に進み、ここでは、少なくとも1つのプロセッサは、残りのトークン保有者アドレスにおける古いトークンがまだ移行されていないか否かを判定する。まだ移行されていない古いトークンがある場合、方法は、任意選択のステップ612に進み、ここでは、少なくとも1つのプロセッサは、新しいトークン保有者アドレスを選択し、新しいトークン保有者アドレスのために、ステップ606から608を再度繰り返す。
【0117】
[0125]親スマートコントラクト302のためのステップ608の最終実行後、親スマートコントラクト302の最終状態は、親スマートコントラクト302における古いトークンの総供給を保持する単一のアドレス(子スマートコントラクト302のアドレス)を有する。これは本質的に、トークンが子スマートコントラクト302に移行されたことを証明しながら、親スマートコントラクト302の保有物をロック/書き込む。ステップ608の最終実行後、発行者のアドレスは通常、どの新しいトークンも保有していない。
【0118】
[0126]ステップ610において、移行する古いトークンがこれ以上ない場合(または、ステップ610が実行されない場合)、方法600はステップ614において終了し得る。図6は、親スマートコントラクト302内のトークンを保有する各アドレスに対して繰り返し実行される方法600を示す。あるいは、ステップ606を実行して、親スマートコントラクト/証券トークン102においてトークンを保有するすべてのトークン保有者アドレスのトークンを移行することができ、ステップ608を実行して、次のトークン保有者アドレスに移動する前に、各トークン保有者アドレスについてステップ606~608の実行を繰り返すことなく、新しい証券トークンを、中間アドレスから、すべてのトークン保有者アドレスに移動することができる。
【0119】
[0127]方法500および/または方法600の後、子スマートコントラクト302が呼び出され得る。第1の例では、コントラクトがアップグレードされた場合、たとえば、アップグレードされたアドレス111および/または親アドレス117が、ステップ504および508におけるように設定された場合、イベントが発行される。例では、(たとえば、投資家120、ブローカディーラ118、保管人、発行者114、所有者112、またはネットワークノード140に属する)デバイスは、そのようなイベントを傍受し得る。例では、イベントは、アップグレードされたアドレス111および/または設定された親アドレス117を示す。子スマートコントラクト302は、イベントにおいてアップグレードされたアドレス111を使用して直接呼び出され得る。発呼デバイスは、イベントにおいてアップグレードされたアドレス(子スマートコントラクト302のアドレス)を使用して、子スマートコントラクト302において実施される方法を呼び出し得る。
【0120】
[0128]あるいは、発呼デバイスは、任意選択で、親スマートコントラクト302を呼び出して、親スマートコントラクト302においてアップグレードされたアドレス111が設定されているか否かを判定し得る。例では、親スマートコントラクト302におけるゲッタ関数は、(その子スマートコントラクト302を指す)アップグレードされたアドレス111を返し得る。例では、そのような関数は、アップグレードされたアドレス111および/または親アドレス117が設定されていないときにゼロアドレスを返し得る。
コンピュータシステムの概要
[0129]本開示の実施形態は、上記で説明される様々なステップおよび動作を含む。これらの様々なステップおよび動作は、ハードウェア構成要素によって実行される場合もあれば、マシン実行可能命令で具体化される場合もあり、これらの命令を使用してプログラムされた汎用または専用プロセッサにステップを実行するようにすることができる。あるいは、ステップは、ハードウェア、ソフトウェア、および/またはファームウェアの組合せによって実行され得る。したがって、図7は、本開示の実施形態が利用され得る例示的なコンピュータシステム700を示すブロック図である。本例によれば、コンピュータシステム700は、相互接続702、少なくとも1つのプロセッサ704、少なくとも1つの通信ポート706、少なくとも1つのメインメモリ708、少なくとも1つのリムーバブルストレージ媒体710、少なくとも1つの読取専用メモリ712、および少なくとも1つの大容量ストレージデバイス714を含む。
【0121】
[0130]少なくとも1つのプロセッサ704は、任意の既知のプロセッサとすることができる。少なくとも1つの通信ポート706は、たとえば、モデムベースのダイヤルアップ接続で使用するためのRS-232ポート、10/100イーサネットポート、または銅線またはファイバを使用するギガビットポートのいずれかとすることができるか、またはこれらを含むことができる。少なくとも1つの通信ポート706の性質は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはコンピュータシステム700が接続する任意のネットワークなどのネットワークに応じて選択され得る。少なくとも1つのメインメモリ708は、ランダムアクセスメモリ(RAM)、または当技術分野で一般に知られている他の任意の動的ストレージデバイスとすることができる。少なくとも1つの読取専用メモリ712は、少なくとも1つのプロセッサ704の命令などの静的情報を格納するためのプログラマブル読取専用メモリ(PROM)チップなどの任意の静的ストレージデバイスとすることができる。
【0122】
[0131]少なくとも1つの大容量ストレージデバイス714を使用して、情報および命令を記憶できる。例では、ハードディスク(磁気ディスクドライブ、または、シリアル/パラレルATAまたはSCSIインターフェースを使用するソリッドステートドライブなど)、光ディスク、レイド(RAID)などのディスクアレイ、または他の任意の大容量ストレージデバイスが使用され得る。相互接続702は、1つまたは複数のバス、ブリッジ、コントローラ、アダプタ、および/またはポイントツーポイント接続とすることができるか、またはこれらを含むことができる。相互接続702は、少なくとも1つのプロセッサ704を、他のメモリ、ストレージ、および通信ブロックと、通信可能に結合する。相互接続702は、使用されるストレージデバイスに応じて、PCI/PCI-XまたはSCSIベースのシステムバスとすることができる。少なくとも1つのリムーバブルストレージ媒体710は、任意の種類の外付ハードドライブ、フロッピードライブ、コンパクトディスク読取専用メモリ(CD-ROM)、コンパクトディスク再書込可能(CD-RW)、デジタルビデオディスク読取専用メモリ(DVD-ROM)、ブルーレイディスク読取専用メモリ(BD-ROM)、ブルーレイディスク記録可能(BD-R)、ブルーレイディスク記録可能消去可能(BD-RE)とすることができる。
【0123】
[0132]上記で説明される構成要素は、いくつかの種別の可能性を例示することが意図される。前述の例は、単なる典型的な実施形態であるため、決して開示を限定するべきではない。
【0124】
[0133]図8は、本開示の実施形態が利用され得る別の例示的なコンピューティングデバイス800を示すブロック図である。例示的なコンピューティングデバイス800は、グローバルレジストリ108、所有者112、発行者114、保管人116、ブローカディーラ118、投資家120、分散型台帳122のコピーを格納するネットワークノード140のうちの1つのネットワークノード、証券トークン交換部124、および/または本明細書で説明されるスマートコントラクトのいずれかを実行する仮想マシン(たとえば、イーサリアム仮想マシン)のうちの何れかを実施するために使用され得る。コンピューティングデバイス800は、少なくとも1つのメモリ802、少なくとも1つのプロセッサ804、任意選択の少なくとも1つのネットワークインターフェース806、任意選択のディスプレイデバイス808、任意選択の入力デバイス810、および任意選択の電源812を含む。
【0125】
[0134]例では、少なくとも1つのメモリ802は、情報を格納するために使用される任意のデバイス、メカニズム、または入力されたデータ構造とすることができる。例では、少なくとも1つのメモリ802は、任意の種別の揮発性メモリ、不揮発性メモリ、および/または動的メモリとすることができるか、またはそれらを含むことができる。例では、少なくとも1つのメモリ802は、ランダムアクセスメモリ、メモリストレージデバイス、光メモリデバイス、磁気媒体、フロッピーディスク、磁気テープ、ハードドライブ、消去可能プログラマブル読取専用メモリ(EPROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、光学媒体(コンパクトディスク、DVD、ブルーレイディスクなど)などとすることができる。
【0126】
[0135]いくつかの実施形態によれば、少なくとも1つのメモリ802は、1つまたは複数のディスクドライブ、フラッシュドライブ、1つまたは複数のデータベース、1つまたは複数のテーブル、1つまたは複数のファイル、ローカルキャッシュメモリ、プロセッサキャッシュメモリ、リレーショナルデータベース、フラットデータベースなどを含み得る。それに加えて、当業者は、少なくとも1つのメモリ802として使用することができる、情報を記憶するための多くの追加のデバイスおよび技法を認識する。少なくとも1つのメモリ802は、少なくとも1つのプロセッサ804において1つまたは複数のアプリケーションまたはモジュールを実行するための命令を格納するために使用され得る。例では、少なくとも1つのメモリ802を、1つまたは複数の例において使用して、たとえば図3図4において、本明細書で説明する機能を実行するために必要な命令のすべてまたは一部を収容できる。
【0127】
[0136]少なくとも1つのプロセッサ804は、汎用プロセッサ(GPP)または特殊目的(フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)または他の集積回路または回路構成など)、または任意のプログラマブルロジックデバイスのような任意の既知のプロセッサとすることができる。例では、(たとえば、図3図4において)本明細書で開示される機能のいずれかは、少なくとも1つのプロセッサ804および少なくとも1つのメモリ802によって実施され得る。
【0128】
[0137]例では、少なくとも1つの任意選択のネットワークインターフェース806は、ネットワーク(システム100の少なくとも1つのネットワーク112のうちの1つなど)と通信するための少なくとも1つの任意選択のアンテナを含むか、またはそれに結合される。例では、少なくとも1つの任意選択のネットワークインターフェース806は、イーサネットインターフェース、セルラ無線アクセス技術(RAT)無線、Wi-Fi無線、ブルートゥース無線、または近距離通信(NFC)無線のうちの少なくとも1つを含む。例では、少なくとも1つの任意選択のネットワークインターフェース806は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を用いて、遠隔サーバと、十分な速度のセルラデータ接続(モバイルインターネット)を確立するために構成されるセルラ無線アクセス技術無線を含む。例では、セルラ無線アクセス技術は、パーソナル通信サービス(PCS)、特殊移動無線(SMR)サービス、拡張特殊移動無線(ESMR)サービス、高度ワイヤレスサービス(AWS)、符号分割多元接続(CDMA)、グローバル移動体通信システム(GSM)サービス、広帯域符号分割多元接続(W-CDMA)、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)、ワールドワイド相互運用性フォーマイクロ波アクセス(WiMAX)、第3世代パートナーシッププロジェクト(3GPP)ロングタームエボリューション(LTE)、高速パケットアクセス(HSPA)、第3世代(3G)、第4世代(4G)、第5世代(5G)など、または他の適切な通信サービスまたはそれらの組合せのうちの少なくとも1つを含む。例では、少なくとも1つの任意選択のネットワークインターフェース806は、広域ネットワークではなく、遠隔サーバと通信するワイヤレスローカルエリアネットワークと通信するように構成されたWi-Fi(IEEE802.11)無線を含む。例では、少なくとも1つの任意選択のネットワークインターフェース806は、パッシブ近距離通信(NFC)タグ、アクティブ近距離通信(NFC)タグ、パッシブ無線周波数識別(RFID)タグ、アクティブ無線周波数識別(RFID)タグ、近接カード、または他のパーソナルエリアネットワークデバイスなどの近接通信に限定される近距離無線通信デバイスを含む。
【0129】
[0138]例では、任意選択の少なくとも1つのディスプレイデバイス808は、発光ダイオード(LED)、液晶ディスプレイ(LDC)、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、e-inkディスプレイ、フィールドエミッションディスプレイ(FED)、表面伝導電子エミッタディスプレイ(SED)、またはプラズマディスプレイのうちの少なくとも1つを含む。例では、任意選択の少なくとも1つの入力デバイス810は、タッチスクリーン(容量性および抵抗性タッチスクリーンを含む)、タッチパッド、容量性ボタン、機械式ボタン、スイッチ、ダイヤル、キーボード、マウス、カメラ、バイオメトリックセンサ/スキャナ、マイクロフォンなどのうちの少なくとも1つを含む。例では、任意選択の少なくとも1つのディスプレイデバイス808は、コンピューティングデバイス800とのユーザ相互作用のために、任意選択の少なくとも1つの入力デバイス810と、ヒューマンマシンインターフェース(HMI)に組み合わされる。例では、少なくとも1つの任意選択の電源812が、コンピューティングデバイス800の様々な構成要素に電力を供給するために使用される。
用語
[0139]本出願全体で使用される用語、略語、および句の簡単な定義を以下に示す。
【0130】
[0140]「判定すること」という用語は、計算すること、算出すること、生成すること、処理すること、導出すること、調査すること、検索すること(たとえば、テーブル、データベース、または別のデータ構造において検索すること)、確認することなどを含み得る。また、「判定すること」はまた、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリ内のデータへアクセスすること)などを含み得る。また、「判定すること」は、解決すること、選択すること、選ぶこと、確立することなどを含み得る。
【0131】
[0141]「~に基づく」という句は、特に明記しない限り、「~のみに基づく」を意味しない。言い換えれば、「~に基づく」という句は、「~のみに基づく」と「少なくとも~に基づく」との両方を説明する。それに加えて、「~に基づく」という句は、中間ステップを排除せず、たとえば、AはCに基づくは、BはCに基づき、AはBに基づくことを意味し得る。それに加えて、「および/または」という用語は、「および」または「または」を意味する。例では、「Aおよび/またはB」は、「A」、「B」、または「AおよびB」を意味することができる。それに加えて、「A、B、および/またはC」は、「Aのみ」、「Bのみ」、「Cのみ」、「AおよびB」、「AおよびC」、「BおよびC」、または「A、B、およびC」を意味することができる。
【0132】
[0142]「接続された」、「結合された」、および「通信的に結合された」という用語および関連する用語は、動作上の意味で使用され、必ずしも直接の物理的接続または結合に限定されない。したがって、例では、2つのデバイスは、直接、または1つまたは複数の中間媒体またはデバイスを介して結合され得る。別の例として、デバイスは、相互に物理的接続を共有せずに、情報がそれらの間で受け渡されることができるように結合され得る。本明細書で提供される開示に基づいて、当業者は、前述の定義にしたがって接続または結合が存在する様々な手法を認識するであろう。
【0133】
[0143]「典型的な実施形態において」、「例示的な実施形態において」、「いくつかの実施形態において」、「いくつかの実施形態による」、「示された実施形態において」、「他の実施形態において」、「実施形態」、「例において」、「例」、「いくつかの例において」、「いくつかの例」などの句は、一般に、句に続く特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれることを意味し、本開示の1つよりも多くの実施形態に含まれ得ることを意味する。さらに、そのような句は、必ずしも同じ実施形態または異なる実施形態を指すとは限らない。
【0134】
[0144]明細書が、構成要素または特徴が、「含まれ得る」、「含まれる可能性がある」、「含まれる可能性があった」、または「含まれるかもしれない」、または特性を「有し得る」、「有する可能性がある」、「有する可能性があった」、または「有するかもしれない」と述べている場合、その特定の構成要素または特徴は、含まれる必要がないか、または特徴を有する必要はない。
【0135】
[0145]「応答して」という用語は、完全にまたは部分的に応答することを含む。
[0146]「モジュール」という用語は、ソフトウェア、ハードウェア、またはファームウェア(またはそれらの任意の組合せ)構成要素を広く指す。モジュールは通常、指定された入力を使用して有用なデータまたは他の出力を生成できる機能構成要素である。モジュールは、自己完結型である場合と、そうでない場合とがある。アプリケーションプログラム(「アプリケーション」とも呼ばれる)は、1つまたは複数のモジュールを含み得るか、またはモジュールは、1つまたは複数のアプリケーションプログラムを含むことができる。
【0136】
[0147]「ネットワーク」という用語は、一般に、情報を交換できる相互接続されたデバイスのグループを指す。ネットワークは、ローカルエリアネットワーク(LAN)における数台のパーソナルコンピュータから、インターネット、コンピュータの世界的なネットワークまでの大きさの場合がある。本明細書で使用される場合、「ネットワーク」は、あるエンティティから別のエンティティに情報を送信できる任意のネットワークを包含することが意図される。場合によっては、ネットワークは、複数のネットワークによって、さらには、1つまたは複数の境界ネットワーク、音声ネットワーク、ブロードバンドネットワーク、金融ネットワーク、サービスプロバイダネットワーク、インターネットサービスプロバイダ(ISP)ネットワーク、および/または、様々なネットワーク間の通信を容易にするように動作可能なゲートウェイを介して相互接続された公衆交換電話網(PSTN)のような複数の異種ネットワークによってでさえも構成され得る。
【0137】
[0148]また、例示のために、本開示の様々な実施形態は、コンピュータプログラム、物理的構成要素、および現代のコンピュータネットワーク内の論理的相互作用の文脈で本明細書で説明される。重要なことに、これらの実施形態は、最新のコンピュータネットワークおよびプログラムに関連して本開示の様々な実施形態を説明するが、本明細書で説明される方法および装置は、当業者が理解するように、他のシステム、デバイス、およびネットワークに等しく適用可能である。したがって、本開示の実施形態の例示された用途は、限定を意味するものではなく、例である。本開示の実施形態が適用可能である他のシステム、デバイス、およびネットワークは、例では、他の種別の通信およびコンピュータデバイスおよびシステムを含む。より具体的には、実施形態は、通信システム、サービス、およびセル電話ネットワークおよび互換性のあるデバイスなどのデバイスに適用可能である。それに加えて、実施形態は、パーソナルコンピュータから、大規模ネットワークのメインフレームおよびサーバまでのすべてのレベルのコンピューティングに適用可能である。
【0138】
[0149]結論として、本開示は、アップグレード可能な証券トークンのための新規のシステム、方法、および構成を提供する。本開示の1つまたは複数の実施形態の詳細な説明が上述されているが、様々な代替、修正、および均等物が、本開示の精神から変化することなく、当業者に明らかであろう。例では、上記で説明される実施形態は特定の特徴を参照するが、本開示の範囲は、特徴の異なる組合せを有する実施形態、および説明された特徴のすべてを含む訳ではない実施形態も含む。したがって、本開示の範囲は、特許請求の範囲内にあるようなすべてのそのような代替、修正、および変形を、それらのすべての均等物とともに包含すると意図される。したがって、上記の説明は限定として見なされるべきではない。
実施形態の例
[0150]例1は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に結合された少なくとも1つのメモリと、少なくとも1つのプロセッサに通信可能に結合する少なくとも1つのネットワークインターフェースとを備えるネットワークノードを含み、ネットワークノードは、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおいて通信可能に結合された複数のネットワークノード内にあるように構成され、ネットワークノードは、少なくとも1つのネットワークインターフェースを介して、少なくとも1つの遠隔に位置するコンピューティングデバイスに通信可能に結合され、少なくとも1つのプロセッサは、親スマートコントラクトの後続バージョンである子スマートコントラクトを、分散型台帳において展開し、親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、子スマートコントラクトのアドレスを指すように設定し、親スマートコントラクトは、子スマートコントラクトが展開された後も展開されたままである。
【0139】
[0151]例2は、少なくとも1つのプロセッサが、アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始するようにさらに構成される、例1のネットワークノードを含む。
【0140】
[0152]例3は、少なくとも1つのプロセッサが、親スマートコントラクトのアドレスを指すように、子スマートコントラクトにおける親アドレスフィールドを設定し、アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始するようにさらに構成される、例1~例2のいずれかのネットワークノードを含む。
【0141】
[0153]例4は、少なくとも1つのプロセッサが、子スマートコントラクトにおけるトークン供給パラメータを、親スマートコントラクトにおけるトークン供給パラメータと等しくなるように設定するようにさらに構成される、例1~例3のいずれかのネットワークノードを含む。
【0142】
[0154]例5は、少なくとも1つのプロセッサが、親スマートコントラクトにおけるすべての古いトークンを、トークン保有者アドレスから、子スマートコントラクトのアドレスに移行するようにさらに構成される、例1~例4のいずれかのネットワークノードを含む。
【0143】
[0155]例6は、少なくとも1つのプロセッサが、子スマートコントラクトにおける少なくとも1つの新しいトークンを、トークン保有者アドレスに発行するようにさらに構成される、例5のネットワークノードを含む。
【0144】
[0156]例7は、少なくとも1つのプロセッサが、移行する必要のある古いトークンが少なくとも1つの他のトークン保有者アドレスにあるか否かを判定し、子スマートコントラクトにおける新しいトークンを、中間アドレスに発行し、少なくとも1つの他のトークン保有者アドレスから、新しいトークン保有者アドレスを選択し、親スマートコントラクトにおける古いトークンを、新しいトークン保有者アドレスから、子スマートコントラクトのアドレスに移行し、子スマートコントラクトにおける少なくとも1つの新しいトークンを、中間アドレスから、新しいトークン保有者アドレスに移動するようにさらに構成される、例6のネットワークノードを含む。
【0145】
[0157]例8は、少なくとも1つのプロセッサが、子スマートコントラクトの展開後、親スマートコントラクトにおける古いトークンが、取引を制限されるとの判定に基づいて、すべての古いトークンを移行し、少なくとも1つの新しいトークンを移動するようにさらに構成される、例6~例7のいずれかのネットワークノードを含む。
【0146】
[0158]例9は、少なくとも1つのプロセッサが、親スマートコントラクトにおけるアップグレードされたアドレスフィールドが設定されているか設定されていないかに基づいて、親スマートコントラクトにおける古いトークンが、取引を制限されると判定するようにさらに構成される、例6~例8のいずれかのネットワークノードを含む。
【0147】
[0159]例10は、古いトークンおよび新しいトークンは、各々が外部の取引可能な資産を表す暗号トークンである、例1~例9のいずれかのネットワークノードを含む。
[0160]例11は、親スマートコントラクトおよび子スマートコントラクトは、それぞれの発信元のスマートコントラクトを使用して実施される、例1~例10のいずれかのネットワークノードを含む。
【0148】
[0161]例12は、親スマートコントラクトをアップグレードするためのコンピュータ化された方法を含み、コンピュータ化された方法は、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおける複数のネットワークノード内に含まれるように構成されたネットワークノードによって実行され、ネットワークノードは、ピアツーピアネットワークにおける他のネットワークノードに通信可能に結合されるように構成され、コンピュータ化された方法は、親スマートコントラクトの後続バージョンである子スマートコントラクトを、分散型台帳において展開することと、親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、子スマートコントラクトのアドレスを指すように設定することとを備え、親スマートコントラクトは、子スマートコントラクトが展開された後も展開されたままである。
【0149】
[0162]例13は、アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始することをさらに備える、例12のコンピュータ化された方法を含む。
[0163]例14は、親スマートコントラクトのアドレスを指すように、子スマートコントラクトにおける親アドレスフィールドを設定することと、アップグレードされたアドレスフィールドが設定されたことを示すイベントを開始することとをさらに備える、例12~13のいずれかのコンピュータ化された方法を含む。
【0150】
[0164]例15は、親スマートコントラクトにおけるトークン供給パラメータと等しくなるように、子スマートコントラクトにおけるトークン供給パラメータを設定することをさらに備える、例12~14のいずれかのコンピュータ化された方法を含む。
【0151】
[0165]例16は、親スマートコントラクトにおけるすべての古いトークンを、トークン保有者アドレスから、子スマートコントラクトのアドレスに移行することをさらに備える、例12~15のいずれかのコンピュータ化された方法を含む。
【0152】
[0166]例17は、子スマートコントラクトにおける少なくとも1つの新しいトークンを、トークン保有者アドレスに発行することをさらに備える、例16のコンピュータ化された方法を含む。
【0153】
[0167]例18は、移行する必要のある古いトークンが、少なくとも1つの他のトークン保有者アドレスにあるか否かを判定することと、子スマートコントラクトにおける新しいトークンを、中間アドレスに発行することと、少なくとも1つの他のトークン保有者アドレスから、新しいトークン保有者アドレスを選択することと、親スマートコントラクトにおける古いトークンを、新しいトークン保有者アドレスから、子スマートコントラクトのアドレスに移行することと、子スマートコントラクトにおける少なくとも1つの新しいトークンを、中間アドレスから、新しいトークン保有者アドレスに移動することとをさらに備える、例17のコンピュータ化された方法を含む。
【0154】
[0168]例19は、子スマートコントラクトの展開後、親スマートコントラクトにおける古いトークンが取引を制限されるとの判定に基づいて、すべての古いトークンを移行し、少なくとも1つの新しいトークンを移動することをさらに備える、例17~18のいずれかのコンピュータ化された方法を含む。
【0155】
[0169]例20は、親スマートコントラクトにおけるアップグレードされたアドレスフィールドが設定されているか設定されていないかに基づいて、親スマートコントラクトにおける古いトークンが、取引を制限されると判定することをさらに備える、例17~19のいずれかのコンピュータ化された方法を含む。
【0156】
[0170]例21は、古いトークンおよび新しいトークンは、各々が外部の取引可能な資産を表す暗号トークンである、例12~20のいずれかのコンピュータ化された方法を含む。
【0157】
[0171]例22は、親スマートコントラクトおよび子スマートコントラクトは、それぞれの発信元のスマートコントラクトを使用して実施される、例12~21のいずれかのコンピュータ化された方法を含む。
【0158】
[0172]例23は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に結合された少なくとも1つのメモリと、少なくとも1つのプロセッサに通信可能に結合する少なくとも1つのネットワークインターフェースとを備えるネットワークノードを含み、ネットワークノードは、分散型台帳を実施するネットワークノードのピアツーピアネットワークにおいて通信可能に結合された複数のネットワークノード内にあるように構成され、ネットワークノードは、少なくとも1つのネットワークインターフェースを介して、少なくとも1つの遠隔に位置するコンピューティングデバイスに通信可能に結合されるように構成され、少なくとも1つのプロセッサが、親スマートコントラクトの後続バージョンである子スマートコントラクトを、分散型台帳において展開し、親スマートコントラクトにおいて、アップグレードされたアドレスフィールドを、子スマートコントラクトのアドレスを指すように設定し、子スマートコントラクトにおける新しいトークンを、中間アドレスに発行し、親スマートコントラクトにおけるすべての古いトークンを、トークン保有者のアドレスから、子スマートコントラクトのアドレスに移行し、子スマートコントラクトにおける少なくとも1つの新しいトークンを、中間アドレスから、トークン保有者アドレスに移動するように構成され、親スマートコントラクトは、子スマートコントラクトが展開された後も展開されたままであり、古いトークンおよび新しいトークンは、各々が外部の取引可能な資産を表す暗号トークンである。
【0159】
[0173]例24は、少なくとも1つのプロセッサが、子スマートコントラクトにおけるトークン供給パラメータを、親スマートコントラクトにおけるトークン供給パラメータと等しくなるように設定するようにさらに構成される、例23のネットワークノードを含む。
【0160】
[0174]例25は、少なくとも1つのプロセッサが、子スマートコントラクトの展開後、親スマートコントラクトにおける古いトークンが、取引を制限されるとの判定に基づいて、すべての古いトークンを移行し、少なくとも1つの新しいトークンを移動するようにさらに構成される、例23~24のいずれかのコンピュータ化された方法を含む。
【0161】
[0175]例26は、少なくとも1つのプロセッサが、親スマートコントラクトにおけるアップグレードされたアドレスフィールドが設定されているか設定されていないかに基づいて、親スマートコントラクトにおける古いトークンが、取引を制限されると判定するようにさらに構成される、例23~25のいずれかのコンピュータ化された方法を含む。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8