JP2022532464A - ブロックチェーン・トランザクション・マネージャー - Google Patents
ブロックチェーン・トランザクション・マネージャー Download PDFInfo
- Publication number
- JP2022532464A JP2022532464A JP2021547344A JP2021547344A JP2022532464A JP 2022532464 A JP2022532464 A JP 2022532464A JP 2021547344 A JP2021547344 A JP 2021547344A JP 2021547344 A JP2021547344 A JP 2021547344A JP 2022532464 A JP2022532464 A JP 2022532464A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- blockchain
- blockchain transaction
- nonce
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 122
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000005540 biological transmission Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims description 61
- 230000000694 effects Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 12
- 238000005065 mining Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 230000008439 repair process Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 5
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 230000002085 persistent effect Effects 0.000 abstract description 10
- 238000007726 management method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 16
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 9
- 230000007704 transition Effects 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 235000003197 Byrsonima crassifolia Nutrition 0.000 description 6
- 240000001546 Byrsonima crassifolia Species 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 206010030924 Optic ischaemic neuropathy Diseases 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 229940004975 interceptor Drugs 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
Description
(R > CR1およびR ≦ 設定可能な係数CR2 、ここでCR2> CR1)の場合、G = Gdb * γ、および
(R > CR2)の場合、G = Gdb * δ, where δ > γ > β > 1
次いで、前記ブロックチェーン・トランザクションにデジタル署名し若しくはこれを認証する前に、当該ブロックチェーン・トランザクションに適切な場合、当該ブロックチェーン・トランザクションにGが加算され、前記デジタル署名され若しくは認証されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信するよう試行される。
ブロックチェーン:ブロックと呼ばれるレコードの、絶えず成長し続けるリスト。前記レコードは暗号を使ってリンクされ、固定される。各ブロックは、通常、直前のブロックの暗号ハッシュ、タイムスタンプ、およびトランザクション・データを含む。ブロックチェーンは、トランザクション・データの改ざんに本質的に耐性があるよう設計される。分散台帳としての用途のため、ブロックチェーンは、通常、新規ブロック検証用のプロトコルに集合的に準拠するピアツーピア・ネットワークにより管理される。一度記録されると、いかなる所与のブロックのデータも、すべての後続ブロックを変更することなく遡及的に変更することはできず、全後続ブロック変更には、ネットワークの過半数による共謀が必要になる。
Ether(イーサ):イーサリアム・ブロックチェーン・プラットフォーム固有の仮想通貨。この通貨の用途の1つは、ネットワークを代表してマイナー(採掘者)の仕事に報酬を支払うことである。この点でイーサリアムと同様なブロックチェーン・プラットフォームについては、本明細書における「イーサ」は、考慮されるプラットフォームに固有の類似仮想通貨と同義的なものと見なすべきである。
Submitter(送信者):トランザクションに関連付けられたブロックチェーン・ネットワーク・アイデンティティであり、トランザクション用アイデンティティのクレデンシャルは、当該トランザクションのデジタル署名用に、および手数料が課金される仮想通貨アカウントに対して使用される。
Succeeded(成功):採掘済みトランザクションが、採掘時にエラーなく完全に実行された。
Gas(ガス代、燃料代):総演算量およびストレージ・コストの推定用に標準化されたプロキシ単位額であり、所与のトランザクションが処理されるとイーサリアムと同様なブロックチェーン・ネットワークが負担し、これをもとにトランザクションの送信者に手数料が課金される。「Gas」は、プロキシ単位であり、このような見積り総額の用語でもある。
Nonce(ナンス):本明細書においてナンスに関するすべての説明は、イーサリアムおよび同様なブロックチェーン・プラットフォーム上における送信者のトランザクションに必要な連番の採番に関する。
Block gas limit(ブロック・ガスリミット):これは、ネットワーク上のマイナーが、保留中のトランザクションを単一ブロックで採掘するために選択する場合、選択された全トランザクションに対して許容されるstartgasの最大合計値である。各イーサリアム・ネットワーク、またはマイナーに報酬を支払うための同様な構造を備えたプラットフォームに基づくネットワークには、独自の制限値があり、各新規ブロックが追加された後に少量増加または減少する。
Nonce window(ナンス・ウィンドウ):トランザクションが有することのできる、ノードに受理される最高のナンス値であり、所与の送信者アイデンティティ用に前記ノードがブロックチェーン・ネットワークに送信した前回のトランザクションのナンスよりもデルタだけ高いものとして表現される。ナンス・ウィンドウの効果は、ブロードキャスト保留中のノードで各アイデンティティについて存在できるトランザクションの数を制限することである。ナンス・ウィンドウは、ブロックチェーン・ネットワーク内のノードごとに構成できる。
ブロックチェーン・トランザクションの課題
本明細書で説明するブロックチェーン・トランザクション・マネージャーは、ブロックチェーン・ネットワーク、例えばイーサリアムと直接連動する場合、または現在広く使用されているサポート・ライブラリを使用する場合、アプリケーションが直面する難題に対処する。上記のように、本明細書の説明は、一般に使用されるイーサリアム・ブロックチェーン・ネットワークについて行うが、当業者であれば、本明細書で説明する技術は、他のブロックチェーン・ネットワーク、例えばAION、ArcBlock、EOS、NEO、Hyperledger(登録商標) Fabric、Hyperledger(登録商標) Sawtooth、NxT、QTUM、Quorum、Smilo、Tezos、TRON、Wanchain、またはZilliqaにも使用できることが理解されるであろう。本明細書における用語は、イーサリアム・ブロックチェーン・ネットワークに関するものである。対応する用語は、他のブロックチェーン・ネットワーク、例えば言及したものの文脈で使用される。
ブロックに追加予定のトランザクション、または何らかの措置により「ファイナリティ」を達成するためのトランザクションの時間遅延は、大部分のブロックチェーン・プラットフォームに共通する課題である。ナイーブなアプリケーションでは「ファイア・アンド・フォーゲット」アプローチをとり、ブロックチェーン・ネットワーク内の近傍ノードにトランザクションを送信し、それが成功するものと想定して、その後のアクティビティがそれ以外の状況になるまで、手続きを進める。より確実性を求める者は、手続きを進める前に、トランザクションが採掘または確定されるのを一般的な時間長だけ待つことを選択する。しかしながら、これらのアプローチはどちらも理想的ではない。一方は後続工程の不確実性増大を招き、他方は数分間の同期的な待ち時間を生じる。
イーサリアムなどのブロックチェーン・プラットフォームで採用されているトランザクション「ナンス」の概念に関する難題の2つ目のカテゴリー。ナンスとは、所与のブロックチェーン・アイデンティティ用に送信されたトランザクションに順次割り当てられるとして、ネットワークが予測する数値である。ナンスは送信者により割り当てられるが、実際には、送信者は、これを当該ブロックチェーン・ネットワークに関連付けられたサポート・コード・ライブラリに委託することが多い。イーサリアムと同様なネットワークは、ナンス数値の順にトランザクションを処理しようとし、それが種々の理由でトランザクションの遅延または失敗につながる場合がある。すでに処理された値より低い、または著しく高い値を伴うトランザクションは、完全に失敗する。シーケンスにない値は、シーケンス中のギャップが埋まるまで、後続ナンスを伴うトランザクションが無視される原因となる。
イーサリアム同様に採掘者への支払い機構を備えたブロックチェーン・プラットフォームで受理されるようにするため、トランザクションは、上記で定義したgaspriceに部分的に基づき、ネットワークへの手数料としてトランザクターが支払う意思のある最大額を伴う。gaspriceを軽んじると、より気前のよいトランザクションがブロックチェーンに含められるべく選択されることになり、長時間または無期限の遅延を招きかねない。後者は、好まれる価格の経時的な変動により、課題として複雑化する。しかし、その変動性に合わせてgaspriceを十分高く設定するということは、ほとんどの場合に過払いすることを意味する。そのため、大部分のトランザクターは、定期的に、またトランザクションが通らないと気づいたときにも、各々のアプリケーションが提案する価格を手動で調整する(そのトランザクションは、次いで新規に送信されなければならない)。
ナンスおよびトランザクション手数料は、トランザクションが拒否および失敗する原因のうちのほんの2つである。これらと、スマート・コントラクト自体に起因するエラーを含む他の原因は、ブロックチェーン処理の非同期的な性質上、またプラットフォームからのエラー・レポートが不親切なため、検出が難しい。検出された場合は、対処が困難である。以下では、本明細書で説明するブロックチェーン・トランザクション・マネージャーに関連する具体的なエラー条件についていくつか説明する。
トランザクションへのナンス割り当ては、シーケンシャル処理として設計されている。各トランザクションは、二重支出い問題を防ぐため、ナンス(整数)と結び付られる。提案された各トランザクションにつき、ナンスは、その前のトランザクションのナンスより1大きいことが要求される。nonce low error(低ナンス・エラー)は、トランザクションが送信者からネットワークに対し、その送信者が前回採掘した直近のトランザクションよりも低いナンスを用いて提案されたときに起こる。この状況は、トランザクションを送信するアプリケーションの水平スケーリング試行中、例えばナイーブなナンス割り当てアルゴリズム、例えば広く使用されているイーサリアム・サポート・ライブラリに見られるものが使用された場合に起こりうる。それらのライブラリは、前記送信者の最高ナンスに関する独自のローカルな観察に基づき、ナンスを自動割り当てする。複数のインスタンスがこれを並行して試行すると、重複したナンス割り当てが起こる可能性が高く、2番目に処理されたものが失敗する結果となる。
上述のように、イーサリアムなどのブロックチェーン・プラットフォームにおけるトランザクションには、ネットワークへの手数料として送信者が支払う意思のある最大額が伴う。その額は、部分的に、トランザクション属性startgas、送信者に許容されるプロキシ演算の上限、およびトランザクションのストレージ単位に基づく。startgasについて選択される額がトランザクションの問題を起こす状況は3つある。その2つは、ブロックチェーン・ネットワーク内のノードにより、トランザクションがそのネットワークに送信されるとき、決定される。これらのプラットフォーム内の各トランザクションは、演算およびストレージに最低量のプロキシ単位を消費し、これをトランザクションの「intrinsic gas」という。そのため、startgasがこれよりも低く設定されると、トランザクションはただちにgas low error(ガス代が少ないためのエラー)で拒否される。startgasを高すぎる値で割り当てても問題が生じる。startgasがブロック・ガスリミットよりも高い場合、トランザクションはgas exceeded error(ガス代が高すぎるためのエラー)で拒否されるが、これはネットワークの現状でそのトランザクションが明らかにブロックに収容できないことをノードが認識するためである。ガス関連の3つ目の問題は、トランザクションの採掘時にのみ発見されるが、これはトランザクションの厳密なストレージおよび演算ニーズが実際に実行されるときにしかわからないためである。startgasが実際に必要なガス代よりも低い場合、マイナーは、当該限度額に達し次第、トランザクションの処理を停止し、それをout-of-gas failure(ガス切れによる失敗)としてブロックチェーンに記録する。そのトランザクションの影響が記録されるものの、演算処理はネットワークにより実行済みであるため、送信者のイーサ・アカウントに対してstartgas全額に基づく手数料が課金される。
トランザクションを送信するアプリケーションは、通常、リモート・プロシージャ・コールによりブロックチェーン・ネットワーク内の近傍ノードとインタラクトする。これがアプリケーションにとり問題となるのは、ノードがそれらコールに対して一時的に反応しなくなる場合であり、その場合、結果的にトランザクションは受け取られない。
トランザクションは、トランザクションの送信時にgaspriceとstartgasの積が送信者のアカウントにあるイーサ額より大きいと、insufficient funds error(残高不足によるエラー)で拒否される。
提案されたトランザクションについてすでに情報を得ているかどうかをノードが識別できるようにするため、各トランザクションの属性は識別用ハッシュに含められる。ハッシュとは、それらの属性に関しては一意だが後続のトランザクションに関しては、そのトランザクションが厳密に同じ属性を有するならば同一のものとなる値である。ノードは、その保留中トランザクションリストにすでにあるハッシュと同じハッシュを伴ったトランザクションを受け取ると、known transaction error(既知のトランザクション・エラー)により、そのトランザクションを拒否する。(同じハッシュを伴った先行トランザクションがすでに採掘済みである場合も後続トランザクションは失敗するが、その場合はnonce low error(低ナンス・エラー)となる。)
5.システム障害によるトランザクション損失
ブロックチェーン・トランザクションを送信する自動システムは複数の工程を伴い、これにはトランザクション属性の追加、デジタル署名、ブロックチェーンへの送信(可能性として、その過程でサードパーティのライブラリを経由する)、および永続的ステータスおよび他のデータが含まれる。この工程を単独で管理するアプリケーションは、エラー、例外、またはサービス障害の扱いが洗練されていないと、これらの工程のいずれかでトランザクションまたはデータを失いやすい。
本明細書で説明するブロックチェーン・トランザクション・マネージャーは、キューと、ブロックチェーン・ネットワークの状態に応答してトランザクションを準備し各々の属性を繰り返し調整し、トランザクション・ステータスを学習するためネットワークをポーリングするアルゴリズムとを組み合わせたものにより上記の課題に対処する。これらの能力は、並列性と、エラー後の自動再送信とを可能にする。
実施形態例において、前記ブロックチェーン・トランザクション・マネージャーは、キューされたトランザクションのロバストなパイプラインを使ったのち、ネットワークをポーリングしてトランザクションの成否を追跡することにより、上記の主要な課題の2つに対処する。これにより、ユーザー・アプリケーションは、最終的な確定を待つことなくトランザクションを送信することができる。また、各工程の後続キューが当該工程の処理の成否確定までトランザクションを保留することによるトランザクションの損失も排除する。前記キュー・パイプラインは、初回送信と、gasprice、ナンス、およびgaslimitなどの属性の追加と、デジタル署名と、ネットワーク確定とを仲介する。キューは、再試行および失敗のレポーティングも管理する。
前記ブロックチェーン・トランザクション・マネージャーは、配慮の行き届いた着信トランザクションへのナンス自動割り当てにより、上述したナンス関連の課題を最小限に抑える。ナンスの計算は、同じアカウントからの複数のトランザクションが同時に処理される場合、特に重要になる。例えば、イーサリアム・ネットワークがトランザクションをブロードキャストするのは、そのナンスが整数値で、ネットワークに通信された直前のトランザクションのナンスより1だけ大きい場合に限られる。同じナンスが複数のトランザクションに割り当てられた場合、イーサリアム・ブロックチェーン・ネットワークは、どれでも最初に受信したものを受理し、残りを拒否する。
4)前記ブロックチェーン・トランザクション・マネージャーにより所与のアカウントに前回割り当てられたナンスを取得する:Nred
5)工程4のナンスから工程3のナンスを差し引く:Nred - Nweb3 。その差がナンス・ウィンドウより大きい場合(上記のノード属性定義を参照)、工程3のナンスを選ぶ。すなわち、Nred - Nweb3 > ナンス・ウィンドウの場合、N = Nweb3 。
トランザクション手数料を小さく若しくは大きく見積もりすぎることによる上記の難題を回避するため、前記ブロックチェーン・トランザクション・マネージャーでは、トランザクションごとに個別にコスト属性を推定する。
2)トランザクションに要求される実際のガス代の推定値を取得する。(web3ライブラリは、渡されたデータ、および/またはスマート・コントラクト・コールのシミュレーション実行に基づいて、この推定を行う):Gdb
3)Gdb ≧ Gmbの場合、G = Gmb* CF0、ここで、CF0は設定可能な係数。
前記ブロックチェーン・トランザクション・マネージャーは、ブロックチェーン・ネットワーク内のノードにトランザクションを送る工程を、2段階に分ける。その1つ目はトランザクションの準備で、これには、ナンスおよびコスト属性の追加が含まれる。2つ目は送信で、これには、前記トランザクションへのデジタル署名と、ブロックチェーン・ネットワーク内のノードへの引き渡しが含まれる。これらの工程のどちらかを行っているときに問題が生じた場合、前記ブロックチェーン・トランザクション・マネージャーの最初の対処戦略は、単なる再試行アプローチである。システムは、各工程に設定可能な回数に達するまで、単にトランザクションの準備または送信を再試行する。
ブロックチェーン・ネットワーク内のノードに繰り返し拒否されたトランザクションの扱いは、第1に、トランザクションのナンスが使用されていないことによる将来的な問題を回避することと、第2に、可能であれば拒否の原因に対処することを伴う。このセクションでは、これらの処理に関する前記ブロックチェーン・トランザクション・マネージャーのアプローチについて説明する。
ブロックチェーン・ネットワーク内のノードによりトランザクションが拒否されると、それに割り当てられたナンスは、送信者のブロックチェーン・アイデンティティ用に前記ノードが受け取ったナンスのリスト内のシーケンスには現れない。そのため、前記ノードが、その後、後続ナンスを伴う後続トランザクションだけを順次受信しても、このトランザクションのナンス数値を飛ばすことになってしまい、上述したナンス・ギャップが生じる。この問題を回避するため、拒否されたトランザクションのナンスは、ただちに前記ブロックチェーン・トランザクション・マネージャーのインメモリ・キャッシュリストに書き込まれる。そのような最低数値のナンスは、次いで上述のように、前記送信者のために準備される次のトランザクションに使用される。これにより、ナンス採番のいかなるギャップも早急に埋められる。
ブロックチェーン・ネットワーク内のノードに送信されたときにgas low(ガス代が少ない)またはgas exceeded(ガス代が高すぎる)ためのエラーで拒否されるトランザクションでは、スケジュールされた遅延後に再び準備および送信されるときstartgasを調整することで、拒否に対処される。調整で増減される額は、当該システム用に設定可能なパーセンテージ係数に基づき、例えば、ガス代が少ない場合は20%増、ガス代が高すぎる場合は10%増である。
「RPC not responding」(RPCの応答なし)または「insufficient funds」(残高不足)で拒否されるトランザクションの場合、前記ブロックチェーン・トランザクション・マネージャーは、根本的な原因は時とともに対処されると想定する。トランザクションは、エラー・キューへの書き込み以外、何のアクションも講じられないため、待ち時間後に再び準備および送信される。ただし、前記理由はトランザクションのステータスとともにデータベースに書き込まれ、これによりユーザーのアプリケーションによる監視が可能になる。
上述のように、「known transaction」(既知のトランザクション)による拒否は、トランザクションがすでに送信されたものと同一のときに起こる。前記ブロックチェーン・トランザクション・マネージャーの実施形態例では、この原因を、偶然同一である2つのトランザクションに、同じナンスが割り当てられたものと想定する。(前記ブロックチェーン・トランザクション・マネージャーが所与の送信者に関する全トランザクションを扱っている場合、この状況は、非常にまれなはずであるが、より複雑な状況では生じる可能性がある。)これに対する解決策は、前記トランザクションから重複したナンスを除去し、適切なものを新たに割り当てることである。いずれにしても、これが起こるのは、トランザクションがエラー・キューに送信されたのち、再度準備され、再送信される場合であるため、すべての拒否に提供されるハンドリングを超える付加的なハンドリングは不要である。
ユーザー・アプリケーションがトランザクションを非同期的に送信できるようにした場合、完全に自動化したトランザクション・マネージャの2つ目の重要な要件は、前記トランザクションがブロックチェーン・ネットワークにより実行されたことと、その実行が成功したか失敗したかを確認することである(そのトランザクション自体の趣旨の観点から)。一般に、この追跡で観察されるのは、2つの状況のうち1つであり、その1つは、一般的なトランザクションが比較的短く予測可能な時間内に採掘される状況(例えば、数秒、主な公共イーサリアム・ネットワークの場合、現在1、2分、または他のプラットフォームの場合は可能性としてより長時間)、もう1つは、ネットワークまたはトランザクション自体の問題で採掘が著しく遅れる状況である。これを予測し、前記ブロックチェーン・トランザクション・マネージャーは、2つの別個のステータス・ポーリング・アプローチを実装している。その1つ目は、より集中的なものである。ノードへの送信後、トランザクションの記録は、はじめのうち、最近送信された他のトランザクションの記録とともにキューに保持される。その各々は順番に取得され、ブロックチェーン・ネットワーク内のノードは、前記トランザクションが採掘済みか確認するためのクエリーを実行する。そうである場合は、前記採掘の結果に基づいて適切なアクションが講じられる。そうでない場合、前記トランザクションは、設定可能な再試行の上限に達するまで、集中的なポーリング(例えば、1分に2回)を繰り返すため再試行キューに入る。その時点で、前記トランザクションは、ジョブ・スケジューラに基づき、第2のポーリング・アプローチへと送られる。前記スケジューラは、集中的なポーリングが再び試行される前に、時間遅延を導入する。2フェーズのスケジュールがサポートされており、例えばスケジューリングの再ポーリングを5分間ごとに5回まで行い、その後はポーリングにより前記トランザクションが採掘されたことが示されるまで1時間に1回無期限に行う。これにより、ネットワーク資源の使用と、トランザクション・ステータスのタイムリーなレポーティングとの間のバランスをとることができる。
データベース可用性の中断は、上記で言及された潜在的なシステム障害源の1つである。前記ブロックチェーン・トランザクション・マネージャーは、トランザクション・ライフサイクルのどこで中断が起こるかに応じて、この可能性を異なる態様で扱う。ほとんどの場合、この扱いは、それに後続するデータベースのアクティビティ、例えばエラー・テーブルへのトランザクションの書き込みを伴う。それらの書き込みが、広範囲のデータベース非可用性により不可能な場合、情報は、異なる場所(本実施形態例ではテキストファイル)に一時的に書き込まれ、その後エラー・ハンドリング・ルーチンがデータベースにてステータス更新を行うことができる。
ユーザー・アプリケーションにより生トランザクションが送信されたときにデータベースが応答しない場合、前記ブロックチェーン・トランザクション・マネージャーは、単にトランザクションの受理を拒否し、エラーのリターンコードをREST APIに提供する。
トランザクションの準備および署名には、データベースからのブロックチェーン・ネットワーク情報の読み出しと、セキュアなストレージからのアイデンティティ・クレデンシャル取得が伴う。これら処理のいずれにおけるエラーも、設定可能な最大試行数まで、アクティビティの再試行を起こす。(キャッシュの読み出しは例外である。キャッシュを読み出せない場合は、代わりにセキュアなストレージが読み出される。)設定可能な最大反復数を越えてエラーが続くと、それに続く扱いは各問題に依存する。ネットワーク情報のルックアップ中にエラーが起こると、そのトランザクションはエラー・テーブルに書き込まれ、スケジュールされた遅延後に再試行される。他の全エラーについては、トランザクションがエラー・テーブルに書き込まれるものの、自動的には再試行されない。前記トランザクションは、後述するように、管理者からETMコンソールを介して手動で再試行できる。
ブロックチェーン・ネットワーク内の近傍ノードがトランザクションを受理すると、前記ブロックチェーン・トランザクション・マネージャーは、その詳細を、その送信時のステータスとともにデータベースに記録する。何らかの理由でそれができない場合、そのトランザクションは、問題が生じた旨とともにエラー・テーブルに書き込まれる。その後は、ETMコンソールを介して手動で再試行できる。
データベース更新は、ポーリングの各ラウンド後に行われる―これは、トランザクションが採掘された旨を示す受信が得られたことを反映させるため、または最大再試行数を超過し、そのポーリングの再試行は遅延後に行うべきであることを記録するためのいずれかである。前記一実施形態例では、前記データベースが利用できない場合、これらの書き込みは、データベースが再び利用可能になるまでの保留措置としてローカル・テキストファイルに行われ、データベースが再び利用可能になった時点で、当初の意図どおりに情報が前記データベースに書き込まれる。
一実施形態例では、キューの代わりにデータベースを使って、エラー・ハンドリングを必要とするトランザクションを保持する。それらのトランザクションの定期的な検索中に生じるデータベース問題は、すべてログされる。前記トランザクションを検索するための定期的試行は継続的に行われるため、一時的な問題は、システム管理者が手動でログされた問題に対処したのち自己修復される。
トランザクションを非同期的に処理および監視する能力を考慮すると、クライアント・アプリケーションがトランザクションをバルク送信する能力は、適切な利便性であり、前記ブロックチェーン・トランザクション・マネージャーでサポートされている。
前記ブロックチェーン・トランザクション・マネージャーの機能は、各トランザクションのライフサイクルの種々の段階でブロックチェーン・トランザクションにアクションをとることができる一連のサービス・コンポーネントの組み合わせによって達成され、これには、障害および拒否状況への対処が含まれる。また、これらのコンポーネントは、ブロックチェーン・ネットワーク(例えば、イーサリアム)とインタラクトして、トランザクションを送信し、その各々のステータスを追跡する。一連の永続的メッセージ・キューは、それらのサービス・コンポーネントによりトランザクションの保留アクションまたは確定を保持し、インメモリおよび永続的データベースは、前記サービス・コンポーネントの作業に必要とされる、関連性の高いブロックチェーン・アイデンティティの情報とそのトランザクションを保持する。システムは、主にブロックチェーン・トランザクションを生成または追跡する必要があるアプリケーションの要求に応えることを目的としている。この目的のため、プログラミング言語に依存せずサービス・コンポーネントにアクセス可能なREST APIが提供される。また、APIは、ブロックチェーン・トランザクション・マネージャー機能のサブセットへの人間ユーザーによる直接的なアクセスを提供するウェブ・サーバーで若しくはローカル・マシンのサービスとしてデプロイされるブラウザベースのフロントエンド「コンソール」ウェブ・アプリケーションに、サービスを提供する。
上述のように、前記ブロックチェーン・トランザクション・マネージャー100の機能の大部分は、メッセージング・キュー経由でサービス・コンポーネントへ向かうトランザクションのライフサイクルに基づいており、前記サービス・コンポーネントは、ローカルであっても、選択されたイーサリアム・ネットワークにおいても、アクションを講じることができる。ハイレベルにおけるコンポーネント、キュー、各々の目的、およびトランザクション・フローを、以下の表1に記載する。
上記で概略説明したトランザクションのライフサイクルは、種々のポイントにおけるサデータベースによりポートされる。それらのデータベースには、以下のものが含まれる。
用途:ユーザーから受信され、システムにより合成され、またはイーサリアム・ネットワークからポーリングされるトランザクション関連の情報は、すべて永続的リレーショナル・ストレージに保管される。これは、前記ブロックチェーン・トランザクション・マネージャー(イーサリアム・ブロックチェーン・ネットワークの場合、イーサリアム・トランザクション・マネージャー(ETM(商標))100)トランザクション・ライフサイクルにおける各トランザクションのステータスを含む。プライベート・ブロックチェーン・キーは、このストレージから除外される。
目的:ブロックチェーン・トランザクション・マネージャーを使用するアプリケーションは、送信するトランザクションに関連付けられることになるイーサリアム・アイデンティティごとに、パブリック-プライベート・キーのペアをシステムに提供する。これは、前記ブロックチェーン・トランザクション・マネージャー100がトランザクション属性を追加または修正した後で、そのトランザクションにデジタル署名できるようにするうえで望ましいことである。それらのキーのストレージには、付加的なセキュリティと単離が必要である。ETM(商標)などのトランザクション・マネージャーの実施者は、望ましいレベルのセキュリティに基づいて、任意の暗号化されたオブジェクト・ストアを使用でき、または前記ブロックチェーン・トランザクション・マネージャーがハードウェアまたはソフトウェアベースの専用セキュア・キー・ストレージを使用するようにできる。
目的:ブロックチェーン・ネットワーク接続情報、送信者のアイデンティティ、および各アイデンティティのナンス割り当てを含む読み出されたデータ要素を、繰り返しキャッシングすることにより性能を向上させる。
セキュリティは、キー管理およびトランザクション署名を除き、トランザクション管理とは関連性の低い懸念事項である。各ユースケースのセキュリティ・ニーズを考慮し、通常の最適実施例が適用される。以下、実施形態例で使用されるアプローチを概説する。
表3は、前記ETMコンソール120から利用できる機能を示したものである。トランザクションとそのステータスを読み出す場合を除き、これらの機能は、REST APIを介して接続しているユーザー・アプリケーションからは利用できない。
以下では、前記システムの構成に関して、デプロイメント前に存在する設計と構成に焦点を置いた詳細(すなわち、静的アーキテクチャ、事前定義されたデータ・スキーマ、およびスタートアップ前の構成)を、図3~図9を参照して説明する。なお、ストレージおよびキューイングについて言及した技術はプレースホルダーであることに注意すべきである。当業者であれば、性能に関する他の考慮事項に基づき、各々に代替技術を選択できることが理解されるであろう。
以上概説したように、前記ETMコンソール120は、ブロックチェーン・トランザクション・マネージャー機能のサブセットへのアクセスを人間のユーザーに提供するアプリケーションである。前記ETMコンソール120の構成に関するハイレベルの概要を図4に例示する。
図5は、一実施形態例における前記ETMアプリケーション130のブロック図を例示したものである。前記ETMアプリケーション130は、前記システム100にRESTエンドポイントを提供し、第1のキューに向かうトランザクションのパイプである。ETMアプリケーション130の一実施形態例は、言語、例えば、ウェブ・アプリケーション・フレームワーク・パッケージのサポートを備えたウェブ・アプリケーション・サーバーの文脈での用途に適したNode.js(登録商標)でコードされる。図5は、その実装と依存性の重要な要素を示している。図4に示した依存性は、ここでは、または以下で説明するその他のサービス・コンポーネントでは、繰り返されない。キューへのパブリッシュおよびキューからの消費のため、ならびにデータベースとインタラクトするためのサポート・コードも存在するが、ここでは、または前記サービス・コンポーネントのいずれについても、説明を容易にするため示していない。
図6は、ETM_TxHandler_Service 305の一実施形態例を例示したものである。このETM_TxHandler_Service 305は、種々のキューからトランザクションを消費し、各々のライフサイクル段階に適切な場合、それらを操作する。前記ポーリングおよびスケジューリング・サービス・コンポーネントと同様、前記ETM_TxHandler_Service 305は、露出したAPIを伴わないウェブ・アプリケーションとして実装されてきた。図示するように、当該ETM_TxHandler_Service 305は、ウェブ・アプリケーション・フレームワーク600と、ブロックチェーン・トランザクション署名サポート・ソフトウェア610と、インメモリ・データベース・レコード・ロック・サポート・ソフトウェア620と、を含むパッケージを使う。ここでも、モデル(データ・エンティティ)630、サービス(コア機能)640、およびキュー・イベントを扱うjobQueues/jobHandlers 650用の≪フォルダ≫定型パッケージは、一般に、実行時に解釈されるコード・ファイルのセットを含むが、異なる言語および実行モデルで実装することもできる。「サービス」フォルダ640は、適切な場合にトランザクションを演算する論理を含むことが理解されるであろう。
図7は、ETM_Polling_Service 310の一実施形態例を例示したものである。ETM_Polling_Service 310は、ブロックチェーン・ネットワークに送信されたトランザクションのステータスを追跡する。また、ETM_Polling_Service 310の実施形態例は、ウェブ・アプリケーション・フレームワーク・パッケージ700を使って実装される。ここでも、モデル(データ・エンティティ)710、サービス(コア機能)720、およびキュー・イベントを扱うjobQueues/jobHandlers 730用の≪フォルダ≫定型パッケージは、一般に、実行時に解釈されるコード・ファイルのセットを含むが、異なる言語および実行モデルで実装することもできる。トランザクションの属性がブロックチェーン台帳内の採掘済みブロックに最終的に見つかった場合、付加的なソフトウェア・パッケージ(図示せず)により前記属性の構文解析が容易になることが理解されるであろう。
図8は、ETM_Scheduling_Service 315の一実施形態例を例示したものである。ETM_Scheduling_Service 315は、実行時間の長い定期的な工程を扱う。日時順ジョブ・スケジューリング・サポート・ソフトウェア・パッケージ800は、実施形態例における日時順のジョブ・スケジューリングを容易にする。また、ETM_Scheduling_Service 315の実施形態例は、ウェブ・アプリケーション・フレームワーク・パッケージ810を使って実装される。ここでも、モデル(データ・エンティティ)820、サービス(コア機能)830、およびjobQueues 840用の≪フォルダ≫定型パッケージは、一般に、実行時に解釈されるコード・ファイルのセットを含むが、異なる言語および実行モデルで実装することもできる。
前記ブロックチェーン・トランザクション・マネージャー100で永続的ストレージおよびキュー・ストレージ用に定義されるスキーマであって、トランザクション管理に関するものを、以下の表4に例示する。前記永続的データベースと併用されるこれらスキーマの目的としては、サービス・コンポーネント間で移動中の、特に先入れ先出しキューが不要なETM_Scheduling_Serviceに向かうトランザクション用のキューの代わりに、トランザクションと各々の進捗状況の永続的レコードを各々のライフサイクルにわたり提供し、呼び出しアプリケーションと、ユーザーと、ブロックチェーン・ネットワークおよびノードとの属性を保管することなどがある。
ETM_Appサービス・コンポーネント130は、前記REST API 300を介して、前記システムとの間で種々のデータ・オブジェクトを渡す。以下は、生トランザクションの受け取り時に予測されるJSONオブジェクトのフォーマット例である。
{
"application": "<Application Name Goes Here>",
"network": "<Network Name Goes Here>",
"to": "0x0123456789abcdef0123456789abcdef01234567",
"from": "0x9876543210fedcba0x9876543210fedcba987654",
"data":"0xabcd123000000000000000000000000000001a",
"provider_type" : "http",
"retry_count": "2"
}
コントラクト・トランザクション・リクエスト:
{
"application": "<Application Name Goes Here>",
"network": "<Network Name Goes Here>rinkeby",
"from": "0x9876543210fedcba0x9876543210fedcba987654",
"data":"0xabcd123000000000000000000000000000001a",
"provider_type" : "http",
"retry_count": "2"
}
単純なバルク・トランザクション・リクエスト(リクエストごとに最高50トランザクションをサポート):
[
{
"id": 200,
"application": "<Application Name Goes Here>",
"network": "<Network Name Goes Here>rinkeby",
"to": "0x0123456789abcdef0123456789abcdef01234567",
"from": "0x9876543210fedcba0x9876543210fedcba987654",
"data":"0xabcd123000000000000000000000000000001a",
"provider_type" : "http",
"retry_count": "2"
},
{
"id": 201,
"application": "<Application Name Goes Here>",
"network": "<Network Name Goes Here>rinkeby",
"to": "0x0123456789abcdef0123456789abcdef01234567",
"from": "0x9876543210fedcba0x9876543210fedcba987654",
"data":"0xabcd123000000000000000000000000000001a",
"provider_type" : "http",
"retry_count": "2"
},
etc...
]
単純なトランザクションまたはコントラクト・トランザクションのリクエストが受理された場合の、前記ブロックチェーン・トランザクション・マネージャーの応答:
{
"result": "Transaction successfully received",
"tx_id": "12345678-90ab-cdef-1234-567890abcdef"
}
単純なバルク・トランザクション・リクエストが受理された場合の、前記ブロックチェーン・トランザクション・マネージャーの応答:
[
{
"id": 200,
"result": "Transaction successfully received",
"tx_id": "12345678-90ab-cdef-1234-567890abcdef"
},
{
"id":201,
"result": "Transaction successfully received",
"tx_id": "12345678-90ab-cdef-1234-567890abcdef"
},
etc...
]
なお、tx_idは、上述した一意のトランザクション識別子であることに注意すべきである。
前記ブロックチェーン・トランザクション・マネージャー100において、データ・フィールドstatusは、トランザクション・ライフサイクル全体の進捗状況において粒度の粗い点を定義する。このフィールドは、エンティティ(トランザクション、コントラクト、エラー)およびコードで表示される――いずれのサービス・コンポーネントでも、/config/configs/status.json を参照。許容されるフィールド値およびそれぞれの意味を、表5に記載する。
トランザクションの価格設定、署名、および送信、
トランザクション・ステータスのポーリングおよび追跡、
スケジューリングおよび定期的なアクティビティ、
ダッシュボードおよび管理機能、および
レポートの生成およびメール送信
前記ブロックチェーン・トランザクション・マネージャー100は、ナンス管理、反復コスト見積もり、およびトランザクション・ライフサイクル マネジメントも提供する。
前記ブロックチェーン・トランザクション・マネージャー100の機能の大半は、個々のブロックチェーン(例えば、イーサリアム)トランザクションが確実に成功することを目指し、または失敗に対処する(希望的には、はるかに低い頻度で)ものである。その結果、前記システムの大部分の処理は、4つのブロックチェーン・トランザクション・マネージャー・サービスおよびブロックチェーン・ネットワークを通じたトランザクションの道筋をたどることにより理解される。以下の説明では、通常のトランザクション・ハンドリング、およびトランザクション自体またはそれに関するコンポーネント動作のどちらかに伴う問題が生じた場合の代替ハンドリングに伴うアクティビティについて吟味していく。
トランザクションがそのライフサイクルを通して進むに伴い前記システムにより実行され、トラブルのない準備および送信と、迅速な採掘と、正常な実行に係わるアクティビティを、図10に例示している。
ポーリング第1ラウンド用の設定可能な時間枠の間にトランザクションが採掘された旨が示されない場合、前記システムは、そのトランザクションを一定時間保留にしたのち、ポーリングの第2ラウンドを開始する。これを実施するため、データベース内の前記トランザクションにフラグが設定される。ETM_Scheduling Service 315は、定期的に、前記フラグが設定されTx-Pendingステータスを伴うトランザクションについて、前記データベースにクエリーを行う。設定可能な待機時間後、前記フラグはクリアされ、前記トランザクションはポーリング入力キュー、etm_tx_polling、またはetm_contract_pollingの1つにパブリッシュされる。これにより、前記トランザクションに関するポーリングが再び開始される。再度のポーリングでもレシートが得られない場合は、このフローが繰り返され、設定可能な反復回数を過ぎると遅延時間がより長くなる。未採掘のトランザクションに対するこの反復は、レシートが受信されるまで無期限に続けられる。
ETMアプリケーション130によりトランザクションが前記生トランザクション・キューに入れられる際は、事前に、一握りのトランザクション関連エラー条件を認識できる。この場合、エラー応答は、前記REST API 300により戻される。この経路をとるエラーとしては、生トランザクションの検証が失敗、データベースが利用不能、およびキューが利用不能などがある。
startgasなどのネットワーク関連トランザクション属性によりトランザクションが拒否された場合は、属性を調整して再送信できる。例えば、図11は、ETM_TxHandler_Service 305によるトランザクションの即時修復および再送信の工程1100を例示したものである。この経路で扱える問題としては、gas low(ガス代が少ない)およびgas exceeded(ガス代が高すぎる)などがある。例示したように、準備済み未署名トランザクションのうちブロックチェーン・ノード110(例えば、イーサリアム・ノード)により拒否されたものは、1110で取得され、1120でそのトランザクションにアルゴリズム修復が適用されて、トランザクション属性が修復される(例えば、startgas修正)。前記修復されたトランザクションは、1130でデジタル署名され、署名されたそのトランザクションは、1140でブロックチェーン・ノードへの送信試行が繰り返される。その後問題が起こらない場合、後者の工程は、図10の1040における正常なアクティビティ・フローの再開に対応する。
一部のエラーは、即時再送信で対処されるのではなく、遅延後の再試行で成功する場合がある。前記ブロックチェーン・トランザクション・マネージャー100において、これらのトランザクションは、待ち時間中に条件を改善したのち生トランザクションとして再キューイングするよう、スケジューリング・サービス315に送られる。図12は、一実施形態例において「再試行可能」なトランザクション・エラーを処理する工程1200を例示している。この経路で扱われるエラーとしては、insufficient funds(残高不足)、RPC not responding(RPCの応答なし)、ERM_TxHandler_Service 305における特定のデータベース・エラー、およびknown transaction(既知のトランザクション)エラーなどがある。
ポーリング工程により、トランザクションが採掘されたがその実行が失敗したことが示された場合、そのトランザクションは、図10の「採掘され、成功した」経路のようにポーリング・キューからデキューされるが、そのトランザクションのステータスは、Tx-Failed(トランザクション失敗)と書き込まれる。
図13は、上述したアクティビティ経路をハイレベルでまとめたもので、前記システムがどこで意図的に時間遅延を導入するかに主眼を置いている。例示するように、ユーザー・アプリケーション150から受信されたトランザクションは、前記ETMアプリケーション130に提供され、その生トランザクションは、1300で検証される。前記検証された生トランザクションは前記ETM_TxHandler_Service 305に提供され、これが1310で前記トランザクションを準備する。前記REST API 300は、これらの処理用に時間遅延およびretry_countを提供する。前記遅延は、トランザクション準備の各再試行前に、前記ETM_TxHandler_Service 305により意図的に処理に導入されて、問題を誘発している状態がそれ自体により解消されるようにする。提供された再試行回数を超えた後も前記トランザクションが適切に準備されない場合、そのトランザクションは、1315でETM_Scheduling_Service 315に送信され、指定された時間後に、そのトランザクションの再処理が生トランザクションとしてスケジュールされる。前記トランザクションは、1310で正常に準備されると、1320でブロックチェーンに送信される。前記ETM_TxHandler_Service 305は、この処理にも、再試行ごとにretry_countおよび意図的な遅延時間を提供する。前記トランザクションが適切に準備されず、提供された再試行回数を超えると、そのトランザクションも同様に1315でETM_Scheduling_Service 315に送信され、指定された時間後に、そのトランザクションの再処理が生トランザクションとしてスケジュールされる。前記トランザクションが1320でブロックチェーンに送信されると、前記ETM_Polling_Service 310が1330でレシートについてポーリングし、1340でトランザクションの成否を記録する。また、ポーリング時間の制限も提供される(例えば、5000ms、または指定された最大再試行回数)。ポーリングが前記最大再試行回数を超えると、前記ETM_Scheduling_Service 315は、1350で再ポーリングをスケジュールする。例えば、例示したように、この再ポーリングは、最初の数分間に数回試行され、その後は、より長い間隔で再試行される。再度のポーリングでもレシートが得られない場合は、このフローが繰り返され、設定可能な反復回数を過ぎると遅延時間がより長くなる。未採掘のトランザクションに対するこの反復は、レシートが受信されるまで無期限に続けられる。そのため、特定の状況において、トランザクションは、正常に処理されるまで保持され、一定時間後に再試行される。
以上、トランザクションのライフサイクルにおけるキューの役割について説明してきたが、それらキューの内容とその用途について図2よりも詳しく理解すると有用であろう。
図15は、本明細書に開示した前記ブロックチェーン・トランザクション・マネージャー100の1若しくはそれ以上の実施形態を実施するうえで適した特殊用途コンピュータへとプログラム可能な、一般的汎用コンピュータ1500のブロック図である。上述の前記ブロックチェーン・トランザクション・マネージャー100は、任意の汎用処理コンポーネント、例えば課された必要な作業負荷を扱ううえで十分な処理能力、メモリリソース、および通信処理能力を備えたコンピュータに実装できる。前記コンピュータ1500は、メモリ・デバイスと通信可能なプロセッサ1502(中央処理装置またはCPUと呼ぶことができる))を含み、前記メモリ・デバイスは、二次ストレージ1504と、読み出し専用メモリ(ROM)1506と、ランダムアクセスメモリ(RAM)1508と、入出力(I/O)装置1510と、ネットワーク接続装置1512とを含む。前記プロセッサ1502は、1若しくはそれ以上のCPUチップとして実装でき、または1若しくはそれ以上の特定用途向け集積回路(application specific integrated circuits:ASICs)の一部であってよい。
100...ブロックチェーン・トランザクション・マネージャー
110...近傍ブロックチェーン・ノード
120...ETM(商標)コンソール
130...ETM(商標)アプリケーションおよびサービス
140...ユーザー・ブラウザ
150...ブロックチェーン・トランザクション生成アプリケーション
155...ブロックチェーン・ノード
300...REST API
305...ETM_TxHandler_Service
310...ETM_Polling_Service
315...スケジューリング・サービス、ETM_Scheduling_Service
320...キュー・サブシステム
325...永続的リレーショナルデータベース
330...インメモリ・データベース
335...キュー・サポート・ライブラリ
340...オブジェクト関係マッピング
345...リレーショナルデータベース・サポート
350...インメモリ・データベース・サポート
360...ブロックチェーン・サポート・ライブラリ
370...ブロックチェーン・ネットワーク・ピア・デバイス
400...ウェブ・ユーザーインターフェース・フレームワーク
410...ウェブ・ユーザーインターフェース・スタイリング用のパッケージ
420...ユーザーインターフェースのイベントとAPIレスポンスを操作するパッケージ
430...ホーム画面
440...サービス
450...インターセプター
500...ウェブ・アプリケーション・フレームワーク・パッケージ
510...アイデンティティ/アクセス管理ソフトウェア
520...暗号化ライブラリ・パッケージ
530...アクセス・トークン・サポート・パッケージ
540...ルート(REST APIs)
550...サービス(コア機能)
560...モデル(データ・エンティティ)
570...jobQueues/jobHandlers
600...ウェブ・アプリケーション・フレームワーク
610...ブロックチェーン・トランザクション署名サポート・ソフトウェア
620...インメモリ・データベース・レコード・ロック・サポート・ソフトウェア
630...モデル(データ・エンティティ)
640...サービス(コア機能)
650...jobQueues/jobHandlers
700...ウェブ・アプリケーション・フレームワーク・パッケージ
710...モデル(データ・エンティティ)
720...サービス(コア機能)
730...jobQueues/jobHandlers
800...日時順ジョブ・スケジューリング・サポート・ソフトウェア・パッケージ
810...ウェブ・アプリケーション・フレームワーク・パッケージ
820...モデル(データ・エンティティ)
830...サービス(コア機能)
840...jobQueues
1400...統一モデリング言語(Unified Modeling Language:UML)状態遷移モデル
1405...初期状態
1410...準備済みトランザクションまたは準備済みコントラクトの状態
1415...決定の擬似状態
1420...エラー発生トランザクションまたはエラー発生コントラクト・トランザクションの状態
1425...擬似状態
1430...送信済みトランザクションまたは送信済みコントラクト・トランザクションの状態
1435...unresolved_errored状態
1440...決定の擬似状態
1445...決定の擬似状態
1450...失敗したトランザクションまたは失敗したコントラクトの状態
1455...no_receipt_transactionまたはno_receipt_contractの状態
1460...決定の擬似状態
1465...成功したトランザクションまたは成功したコントラクトの状態
1470...終了の擬似状態
1500...一般的汎用コンピュータ
1502...プロセッサ
1504...二次ストレージ
1506...読み出し専用メモリ(ROM)
1508...ランダムアクセスメモリ(RAM)
1510...入出力(I/O)装置
1512...ネットワーク接続装置
この出願の発明に関連する先行技術文献情報としては、以下のものがある(国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む)。
(先行技術文献)
(特許文献)
(特許文献1) カナダ国特許出願公開第110245006号明細書
(特許文献2) カナダ国特許出願公開第110060161号明細書
(特許文献3) カナダ国特許出願公開第111651525号明細書
(特許文献4) 米国特許出願公開第2020/0250174号明細書
Claims (30)
- ブロックチェーン・ネットワーク内のノード用に意図されたブロックチェーン・トランザクションを受信し、前記ブロックチェーン・ネットワーク内のノードへの前記ブロックチェーン・トランザクションの送信を管理するブロックチェーン・トランザクション・マネージャーであって、
ブロックチェーン・トランザクションを生成するユーザー・アプリケーションへのインターフェースを提供するトランザクション管理アプリケーションであって、前記トランザクション管理アプリケーションは、前記ブロックチェーン・ネットワークおよびトランザクションを送信するアイデンティティについて必要な情報を受信し、受信されたブロックチェーン・トランザクションを検証し、前記受信されたブロックチェーン・トランザクションをトランザクション・キューに入れる、トランザクション管理アプリケーションと、
トランザクション・ハンドラであって、前記ブロックチェーン・ネットワークおよびアイデンティティの情報を格納し、受信されたブロックチェーン・トランザクションの少なくとも1つのトランザクション属性を準備し、前記ユーザー・アプリケーションにより供給されたアイデンティティ・クレデンシャルを使って、前記受信されたブロックチェーン・トランザクションに対し、前記ブロックチェーン・ネットワークに適用可能であるとしてデジタル署名または認証し、前記受信されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信するよう試行する、トランザクション・ハンドラと、
送信されたブロックチェーン・トランザクションのブロックチェーン・ステータスを観察および報告するブロックチェーン・ポーラーと
を有するブロックチェーン・トランザクション・マネージャー。 - 請求項1記載のブロックチェーン・トランザクション・マネージャーにおいて、前記トランザクション管理アプリケーションは、前記ブロックチェーン・トランザクションを受信すると追跡目的でこれに汎用一意識別子を割り当てるものであるブロックチェーン・トランザクション・マネージャー。
- 請求項1記載のブロックチェーン・トランザクション・マネージャーにおいて、前記トランザクション・ハンドラは、さらに、前記受信されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信する試行を追跡用に追跡キューに入れ、前記ブロックチェーン・ネットワーク内のノードへ正常に送信されたブロックチェーン・トランザクションのステータス情報を格納するものであるブロックチェーン・トランザクション・マネージャー。
- 請求項1記載のブロックチェーン・トランザクション・マネージャーにおいて、さらに、
前記ブロックチェーン・ネットワーク内のノードにより拒否されたトランザクションを受信し、前記拒否されたトランザクションを再試行する管理アクティビティ・スケジューラを有するものであるブロックチェーン・トランザクション・マネージャー。 - 請求項4記載のブロックチェーン・トランザクション・マネージャーにおいて、前記ブロックチェーン・ポーラーにより送信されたブロックチェーン・トランザクションの初回ポーリングが、設定可能な最大試行回数を超えたとき、前記管理アクティビティ・スケジューラは、前記送信されたブロックチェーン・トランザクションのステータスを追跡し続けるために、前記ブロックチェーン・ステータスのさらなるポーリングをより低い頻度で前記ブロックチェーン・ポーラーによりスケジュールするものであるブロックチェーン・トランザクション・マネージャー。
- 請求項1記載のブロックチェーン・トランザクション・マネージャーにおいて、さらに、
インタラクティブなインターフェースを介して人間のユーザーによる前記トランザクション管理アプリケーションへのアクセスを提供するトランザクション管理コンソールを有し、当該トランザクション管理コンソールは、前記ユーザーのインタラクティブなインターフェースを介して、ブロックチェーン・トランザクションと各々のステータスのリストを前記ユーザーに提供するものであるブロックチェーン・トランザクション・マネージャー。 - 請求項6記載のブロックチェーン・トランザクション・マネージャーにおいて、前記トランザクション管理コンソールは、さらに、ブロックチェーン・トランザクションに使用するアイデンティティまたはトランザクション認証クレデンシャルを管理するものであるブロックチェーン・トランザクション・マネージャー。
- 請求項1記載のブロックチェーン・トランザクション・マネージャーにおいて、さらに、
データベースであって、送信されたがまだ前記ブロックチェーン・ネットワーク内のノードに正常に書き込まれていないブロックチェーン・トランザクションを格納し、前記送信が成功しなかった理由と、前記送信されたブロックチェーン・トランザクションのステータスとを格納するデータベースを有するものであるブロックチェーン・トランザクション・マネージャー。 - ブロックチェーン・ネットワーク内のノードへのブロックチェーン・トランザクションの送信を管理する方法であって、
受信されたブロックチェーン・トランザクションを検証し、その検証済みの受信されたブロックチェーン・トランザクションをトランザクション・キューに入れる工程と、
前記受信されたブロックチェーン・トランザクションの少なくとも1つのトランザクション属性を準備し、前記受信されたブロックチェーン・トランザクションを永続的キューに入れる工程と、
前記ブロックチェーン・ネットワークに適切であるとして、前記受信されたブロックチェーン・トランザクションにデジタル署名し、またはこれを認証する工程と、
前記デジタル署名または認証されたブロックチェーン・トランザクションを、前記ブロックチェーン・ネットワーク内のノードに送信するよう試行する工程と、
前記送信されたブロックチェーン・トランザクションのブロックチェーン・ステータスをポーリングする工程と
を有する方法。 - 請求項9記載の方法において、前記ブロックチェーン・ステータスをポーリングする工程は、送信されたブロックチェーン・トランザクションの前記ブロックチェーン・ネットワークでの受理に向けた進捗状況に関する情報について、前記ブロックチェーン・ネットワーク内のノードをポーリングする工程と、望ましい進捗状況情報が受信されるまで前記ポーリングを再試行する工程とを有するものである方法。
- 請求項10記載の方法において、前記ポーリング工程は、期限が切れた後または最大ポーリング試行回数後、頻度が低下するものである方法。
- 請求項9記載の方法において、さらに、
前記ブロックチェーン・ネットワーク内のノードに送信されたブロックチェーン・トランザクションの送信が、前記ブロックチェーン・ネットワークにより前記トランザクションが受理される結果になったかどうかを、前記ブロックチェーン・ネットワークに適した基準に基づいて示す応答を受信する工程を有するものである方法。 - 請求項12記載の方法において、さらに、
前記送信されたブロックチェーン・トランザクションを、前記送信されたブロックチェーン・トランザクションのステータスとともにデータベースに書き込む工程を有するものである方法。 - 請求項13記載の方法において、前記送信されたブロックチェーン・トランザクションの前記ステータスが、前記送信が成功しなかったことを示した場合、さらに、前記送信が成功しなかった理由を前記データベースに格納するものである方法。
- 請求項14記載の方法において、前記送信されたブロックチェーン・トランザクションが前記ブロックチェーン・ネットワーク内のノードにより拒否された場合、前記拒否されたブロックチェーン・トランザクションの少なくとも1つのトランザクション属性に修復アルゴリズムを適用して修復されたブロックチェーン・トランザクションを作成し、前記修復されたブロックチェーン・トランザクションにデジタル署名し、前記修復されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信するよう試行するものである方法。
- 請求項14記載の方法において、前記送信されたブロックチェーン・トランザクションが、再試行可能なエラーにより前記ブロックチェーン・ネットワーク内のノードにより拒否された場合、受理されるまで若しくは再試行の上限を超えるまで、前記送信されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに再送信するものである方法。
- 請求項16記載の方法において、前記再試行の上限を超えた場合、格納された利用可能なトランザクション・ナンスのプールにナンス値を追加することにより前記トランザクションのナンスの可用性を示す工程と、データベース内のエラー発生トランザクション・テーブルに前記送信されたブロックチェーン・トランザクションを書き込む工程と、最初に送信された生ブロックチェーン・トランザクションを抽出して、その生ブロックチェーン・トランザクションが再び準備され、新規受信されたトランザクションと同じ工程を使って送信されるようにする工程とのうち少なくとも1つを実行するものである方法。
- 請求項9記載の方法において、さらに、
前記ブロックチェーン・ネットワークがトランザクション・ナンス機構を含む場合、前記受信されたブロックチェーン・トランザクションにナンスを自動的に割り当てる工程を有するものである方法。 - 請求項18記載の方法において、前記受信されたブロックチェーン・トランザクションに前記ナンスを自動的に割り当てる工程は、
同じアカウントおよびブロックチェーン・ネットワーク用に複数のブロックチェーン・トランザクションが並列処理されている場合、ロック機構を使って、必ず一度に1つのトランザクションについてしかナンスが計算されないようにする工程と、
ブロックチェーン・トランザクションが複数の再試行後も前記ブロックチェーン・ネットワーク内のノードに受理されない場合、前記受理されないブロックチェーン・トランザクションのナンスを、当該受理されないブロックチェーン・トランザクションに関連付けられたアカウントが再使用に利用できるナンスのプールに割り当てる工程と、
ナンスを割り当てる際、前記利用できるナンスのプールが、前記受信されたブロックチェーン・トランザクションに関連付けられた前記アカウント用のナンスを含むかどうか考慮する工程と、
前記ナンスのプールが、前記受信されたブロックチェーン・トランザクションに関連付けられた前記アカウント用のナンスを少なくとも1つ含む場合、最も低い値のナンスを選択し、その最も低い値のナンスを前記受信されたブロックチェーン・トランザクションに割り当てる工程と
を有するものである方法。 - 請求項19記載の方法において、前記受信されたブロックチェーン・トランザクションに前記ナンスを自動的に割り当てる工程は、さらに、
前記ブロックチェーン・ネットワーク内のノードから前記アカウント用のナンスを取得する工程と(Nweb3)、
前回自動的に前記アカウントに割り当てられたナンスを取得する工程と(Nred)、
前記ブロックチェーン・ネットワーク内のノードからの前記アカウント用の前記ナンス(Nweb3)を、前回自動的に前記アカウントに割り当てられた前記ナンス(Nred)から減算する工程と、
事前定義されたナンス・ウィンドウよりNred - Nweb3が大きい場合、前記ブロックチェーン・ネットワーク内のノードからの前記アカウント用の前記ナンス(Nweb3)を選択し、それ以外の場合は、より大きな値を有するナンスを選択する工程と
を有するものである方法。 - 請求項20記載の方法において、さらに、
前記受信されたブロックチェーン・トランザクションにデジタル署名する前に、前記アカウントに利用可能な最低のナンスを選択する工程と、前記選択された最低ナンスよりも低い値を有するナンスが前記プールに含まれる場合、前記選択されたナンスを、前記プールからのより低い値のナンスと取り替える工程と、前記プールからの前記より低い値のナンスを、前記受信されたブロックチェーン・トランザクション用に使う工程とを有するものである方法。 - 請求項9記載の方法において、前記送信されたブロックチェーン・トランザクションが前記ブロックチェーン・ネットワーク内のノードにより拒否された場合、その拒否されたブロックチェーン・トランザクションのナンスはナンスのプールに書き込まれ、そのプール内の最低値のナンスが、前記ブロックチェーン・ネットワーク内のノードへの送信用に準備された、次に受信されるブロックチェーン・トランザクションにより使用されるものである方法。
- 請求項22記載の方法において、前記拒否されたブロックチェーン・トランザクションは、再びデジタル署名される前に、前記ブロックチェーン・ネットワーク内のノードへの再送信用に、新規ナンスが自動的に割り当てられるものである方法。
- 請求項9記載の方法において、前記少なくとも1つのトランザクション属性は、プロキシの演算およびストレージ・コスト単位あたりのブロックチェーン・トランザクション手数料として前記ブロックチェーン・トランザクションの送信者が支払いを申し出ている額を有し、前記手数料は、前記ブロックチェーン・トランザクションの処理について、前記ブロックチェーン・ネットワーク内のノードを含むブロックチェーン・ネットワークにより負担され、前記額は、前記ブロックチェーン・ネットワークで最近受理されたブロックチェーン・トランザクションに関連付けられた額に基づいて計算されるものである方法。
- 請求項9記載の方法において、さらに、
最大量の演算およびストレージ・プロキシ単位(G)を自動的に計算する工程を有し、Gは、前記ブロックチェーン・ネットワーク内のノードを含むブロックチェーン・ネットワークによる前記ブロックチェーン・トランザクション処理に対し、トランザクションの送信者が支払う意思があるとして示すものであり、この自動計算工程は、
前回採掘されたブロックの制限値を前記ブロックチェーン・ネットワークから取得する工程であって(Gmb)、前記制限値は、前記ブロックチェーン・ネットワーク内のノードを含む前記ブロックチェーン・ネットワークによる単一ブロックへの採掘用に選択されたブロックチェーン・トランザクションの処理に対し、トランザクションの送信者が支払う意思があるとして示す、最大量のプロキシ演算およびストレージ単位の合計の最大値を含む、工程と、
前記トランザクションの処理に必要なプロキシ演算およびストレージ単位の実際量の推定値を取得する工程であって(Gdb)、
Gdb ≧ Gmbの場合、G = Gmb * αを割り当て(ここでα <1)、
Gmb > Gdbの場合、比R = Gmb/Gdbを計算し、
(R ≧ 0およびR ≦ 設定可能な係数CR1 、ここでCR1>0)の場合、G = Gdb * β、
(R > CR1およびR ≦ 設定可能な係数CR2 、ここでCR2> CR1)の場合、G = Gdb * γ、
(R > CR2)の場合、G = Gdb * δ, where δ > γ > β > 1
のようにGを見出す、工程と、
前記ブロックチェーン・トランザクションにデジタル署名し若しくはこれを認証する前に、当該ブロックチェーン・トランザクションに適切な場合、当該ブロックチェーン・トランザクションにGを加算し、前記デジタル署名され若しくは認証されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信するよう試行する工程と
を有するものである方法。 - 請求項9記載の方法において、前記ブロックチェーン・トランザクションの処理について前記ブロックチェーン・ネットワーク内のノードを含むブロックチェーン・ネットワークにより負担される、プロキシ単位あたりに推定される演算およびストレージ・コストのブロックチェーン・トランザクション手数料について、前記ブロックチェーン・トランザクションの送信者が支払いを申し出ている額が低すぎる、または高すぎるという理由から、前記送信されたブロックチェーン・トランザクションが前記ブロックチェーン・ネットワーク内のノードにより拒否された場合、前記ブロックチェーン・ネットワーク内のノードを含むブロックチェーン・ネットワークによる前記ブロックチェーン・トランザクション処理に対し、トランザクションの送信者が支払う意思があるとして示す、最大量の演算およびストレージ・プロキシ単位を所定のパーセンテージだけ増減調整し、スケジュールされた遅延後に前記ブロックチェーン・ネットワーク内のノードに前記ブロックチェーン・トランザクションを再送信するものである方法。
- 命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、1若しくはそれ以上のプロセッサにより実行されると、ブロックチェーン・ネットワーク内のノードへのブロックチェーン・トランザクション送信を管理する方法を、当該1若しくはそれ以上のプロセッサに実施させ、前記方法は、
受信されたブロックチェーン・トランザクションを検証し、その検証済みの受信されたブロックチェーン・トランザクションをトランザクション・キューに入れる工程と、
前記受信されたブロックチェーン・トランザクションの少なくとも1つのトランザクション属性を準備し、前記受信されたブロックチェーン・トランザクションを永続的キューに入れる工程と、
前記ブロックチェーン・ネットワークに適切であるとして、前記受信されたブロックチェーン・トランザクションにデジタル署名し、またはこれを認証する工程と、
前記デジタル署名または認証されたブロックチェーン・トランザクションを、前記ブロックチェーン・ネットワーク内のノードに送信するよう試行する工程と、
前記送信されたブロックチェーン・トランザクションのブロックチェーン・ステータスをポーリングする工程と
を有する、当該非一時的コンピュータ可読媒体。 - 請求項27記載の媒体において、さらに、
命令であって、1若しくはそれ以上のプロセッサにより実行されると、前記ブロックチェーン・トランザクション受信時、前記1若しくはそれ以上のプロセッサに、追跡目的で前記ブロックチェーン・トランザクションに汎用一意識別子を割り当てさせる、命令を有するものである媒体。 - 請求項27記載の媒体において、さらに、
命令であって、1若しくはそれ以上のプロセッサにより実行されると、当該1若しくはそれ以上のプロセッサに、前記受信されたブロックチェーン・トランザクションを前記ブロックチェーン・ネットワーク内のノードに送信する試行を追跡用に追跡キューに入れさせ、前記ブロックチェーン・ネットワーク内のノードへ正常に送信されたブロックチェーン・トランザクションのステータス情報を格納させる、命令を有するものである媒体。 - 請求項27記載の媒体において、さらに、
命令であって、1若しくはそれ以上のプロセッサにより実行されると、当該1若しくはそれ以上のプロセッサに、前記送信されたブロックチェーン・トランザクションが前記ブロックチェーン・ネットワーク内のノードにより拒否された場合、前記ブロックチェーン・トランザクションを再送信させ、前記送信されたブロックチェーン・トランザクションの初回ポーリングがいつタイムアウトしたかを決定させたのち、前記送信されたブロックチェーン・トランザクションの初回ポーリングがタイムアウト後に前記送信されたブロックチェーン・トランザクションのステータスを追跡し続けるため前記ブロックチェーン・ステータスのさらなるポーリングをより低い頻度でスケジュールさせる、命令を有するものである媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962948060P | 2019-12-13 | 2019-12-13 | |
US62/948,060 | 2019-12-13 | ||
PCT/CA2020/051692 WO2021113967A1 (en) | 2019-12-13 | 2020-12-09 | Blockchain transaction manager |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022532464A true JP2022532464A (ja) | 2022-07-15 |
JP7457031B2 JP7457031B2 (ja) | 2024-03-27 |
Family
ID=76320633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021547344A Active JP7457031B2 (ja) | 2019-12-13 | 2020-12-09 | ブロックチェーン・トランザクション・マネージャー |
Country Status (9)
Country | Link |
---|---|
US (2) | US11095431B2 (ja) |
EP (1) | EP3884396A4 (ja) |
JP (1) | JP7457031B2 (ja) |
KR (1) | KR20220002248A (ja) |
CN (1) | CN113424171A (ja) |
CA (1) | CA3125575C (ja) |
MX (1) | MX2021009737A (ja) |
SG (1) | SG11202107654QA (ja) |
WO (1) | WO2021113967A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621579B2 (en) * | 2018-09-06 | 2020-04-14 | Intercontinental Exchange Holdings, Inc. | Multi-signature verification network |
CN118196938A (zh) * | 2018-12-06 | 2024-06-14 | 开利公司 | 由区块链支持的智能锁*** |
US11095431B2 (en) * | 2019-12-13 | 2021-08-17 | DLT Global, Inc. | Blockchain transaction manager |
CN111768184A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
US11917088B2 (en) * | 2020-09-21 | 2024-02-27 | International Business Machines Corporation | Integrating device identity into a permissioning framework of a blockchain |
US11573931B2 (en) * | 2021-01-21 | 2023-02-07 | Microsoft Technology Licensing, Llc | Smart near-real-time folder scan based on a breadth first search |
WO2023277552A1 (ko) * | 2021-06-30 | 2023-01-05 | 주식회사 아티프렌즈 | 스토리지 노드의 참여를 통한 데이터 분할 보관 방법 |
US11528197B1 (en) * | 2021-08-04 | 2022-12-13 | International Business Machines Corporation | Request facilitation for approaching consensus for a service transaction |
US20230088674A1 (en) * | 2021-09-13 | 2023-03-23 | Shopify Inc. | Systems and methods for blockchain network congestion-adaptive digital asset event handling |
US20230162178A1 (en) * | 2021-11-24 | 2023-05-25 | Circle Internet Financial, Inc. | Blockchain transaction rebroadcast |
CN115271746B (zh) * | 2022-09-27 | 2023-01-31 | 江苏荣泽信息科技股份有限公司 | 一种带优先级的区块链交易排序方法 |
CN116703403B (zh) * | 2023-07-31 | 2023-10-20 | 成都创一博通科技有限公司 | 基于区块链网络的离线交易方法和金融服务平台 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180191714A1 (en) * | 2016-12-30 | 2018-07-05 | Slock.it, Inc. | Block-chain enabled service provider system |
US20190096522A1 (en) * | 2017-09-25 | 2019-03-28 | Cable Television Laboratories, Inc | Systems and methods for secure fulfillment tracking using a shared registry |
US20190095585A1 (en) * | 2017-09-27 | 2019-03-28 | International Business Machines Corporation | Blockchain based proactive chromosomal determination |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10046228B2 (en) * | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
US10984081B2 (en) * | 2016-09-30 | 2021-04-20 | Cable Television Laboratories, Inc. | Systems and methods for secure person to device association |
US10762506B1 (en) * | 2017-05-11 | 2020-09-01 | United Services Automobile Association | Token device for distributed ledger based interchange |
WO2019204094A1 (en) * | 2018-04-19 | 2019-10-24 | Walmart Apollo, Llc | Systems and methods for decentralized content distribution |
US10243748B1 (en) * | 2018-06-28 | 2019-03-26 | Jonathan Sean Callan | Blockchain based digital certificate provisioning of internet of things devices |
US10608829B1 (en) * | 2018-10-08 | 2020-03-31 | International Business Machines Corporation | Blockchain timestamp agreement |
US11469878B2 (en) * | 2019-01-28 | 2022-10-11 | The Toronto-Dominion Bank | Homomorphic computations on encrypted data within a distributed computing environment |
US11971874B2 (en) * | 2019-01-31 | 2024-04-30 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT) |
CN110060161B (zh) * | 2019-03-28 | 2021-05-28 | 众安信息技术服务有限公司 | 用于区块链交易防重的客户端服务实现方法及服务组件 |
US11176273B2 (en) * | 2019-05-03 | 2021-11-16 | International Business Machines Corporation | Privacy-preserving anomalous behavior detection |
CN110245006B (zh) * | 2019-05-07 | 2023-05-02 | 深圳壹账通智能科技有限公司 | 区块链事务的处理方法、装置、设备及存储介质 |
US11249985B2 (en) * | 2019-06-15 | 2022-02-15 | Facebook, Inc. | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US11057188B2 (en) * | 2019-08-19 | 2021-07-06 | International Business Machines Corporation | Database service token |
US20210091960A1 (en) * | 2019-09-24 | 2021-03-25 | International Business Machines Corporation | Tracking and verification of physical assets |
US11095431B2 (en) * | 2019-12-13 | 2021-08-17 | DLT Global, Inc. | Blockchain transaction manager |
CN111651525A (zh) * | 2020-06-24 | 2020-09-11 | 北京米弘科技有限公司 | 区块链数据存储方法和装置 |
US11736456B2 (en) * | 2020-09-29 | 2023-08-22 | International Business Machines Corporation | Consensus service for blockchain networks |
-
2020
- 2020-12-08 US US17/115,701 patent/US11095431B2/en active Active
- 2020-12-09 MX MX2021009737A patent/MX2021009737A/es unknown
- 2020-12-09 WO PCT/CA2020/051692 patent/WO2021113967A1/en unknown
- 2020-12-09 KR KR1020217025826A patent/KR20220002248A/ko not_active Application Discontinuation
- 2020-12-09 CA CA3125575A patent/CA3125575C/en active Active
- 2020-12-09 CN CN202080013380.6A patent/CN113424171A/zh active Pending
- 2020-12-09 JP JP2021547344A patent/JP7457031B2/ja active Active
- 2020-12-09 EP EP20898105.0A patent/EP3884396A4/en active Pending
- 2020-12-09 SG SG11202107654QA patent/SG11202107654QA/en unknown
-
2021
- 2021-07-20 US US17/443,055 patent/US11621824B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180191714A1 (en) * | 2016-12-30 | 2018-07-05 | Slock.it, Inc. | Block-chain enabled service provider system |
US20190096522A1 (en) * | 2017-09-25 | 2019-03-28 | Cable Television Laboratories, Inc | Systems and methods for secure fulfillment tracking using a shared registry |
US20190095585A1 (en) * | 2017-09-27 | 2019-03-28 | International Business Machines Corporation | Blockchain based proactive chromosomal determination |
Also Published As
Publication number | Publication date |
---|---|
CA3125575C (en) | 2023-03-07 |
SG11202107654QA (en) | 2021-08-30 |
US20210184833A1 (en) | 2021-06-17 |
CA3125575A1 (en) | 2021-06-17 |
KR20220002248A (ko) | 2022-01-06 |
US11621824B2 (en) | 2023-04-04 |
EP3884396A4 (en) | 2022-01-19 |
EP3884396A1 (en) | 2021-09-29 |
WO2021113967A1 (en) | 2021-06-17 |
MX2021009737A (es) | 2021-09-08 |
US20210359838A1 (en) | 2021-11-18 |
US11095431B2 (en) | 2021-08-17 |
CN113424171A (zh) | 2021-09-21 |
JP7457031B2 (ja) | 2024-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022532464A (ja) | ブロックチェーン・トランザクション・マネージャー | |
US10986177B2 (en) | Systems and methods of self-forking blockchain protocol | |
US11544678B2 (en) | Protocol flow for notarizing a transaction | |
JP5603780B2 (ja) | 膨大な数の処理命令のリアルタイム処理に関する改良 | |
US11392955B2 (en) | Temporary consensus networks in a resource transfer system | |
US11138606B2 (en) | Transfer costs and lock timeouts in a resource transfer system | |
US11367072B2 (en) | Private networks and content requests in a resource transfer system | |
EP3791353A1 (en) | Prioritization in a permissioned blockchain | |
CN111833034B (zh) | 一种批量扣款方法、支付服务器、计算机设备及存储介质 | |
US11481771B2 (en) | One way functions in a resource transfer system | |
US20220351177A1 (en) | Hold condition in a resource transfer system | |
US11392944B2 (en) | Transfer costs in a resource transfer system | |
US20160342984A1 (en) | Loop transfer in a resource transfer system | |
AU2022215275A1 (en) | Temporary consensus networks in a resource transfer system | |
AU2016272701A1 (en) | Systems and methods for publicly verifiable authorization | |
WO2017060816A1 (en) | Private networks and content requests in a resource transfer system | |
US11568399B2 (en) | Distributed ledger management system, distributed ledger management method, and node | |
Elgedawy | CRESCENT: a reliable framework for durable composite web services management | |
US20240005330A1 (en) | Transaction health monitoring and fault-tolerant routing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210813 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210813 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221025 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230125 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230321 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230627 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231027 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20231218 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240116 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20240215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240314 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7457031 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |