JP2018185808A - Apparatus for and method of testing smart agreement based on block chain - Google Patents
Apparatus for and method of testing smart agreement based on block chain Download PDFInfo
- Publication number
- JP2018185808A JP2018185808A JP2018079746A JP2018079746A JP2018185808A JP 2018185808 A JP2018185808 A JP 2018185808A JP 2018079746 A JP2018079746 A JP 2018079746A JP 2018079746 A JP2018079746 A JP 2018079746A JP 2018185808 A JP2018185808 A JP 2018185808A
- Authority
- JP
- Japan
- Prior art keywords
- function
- functions
- smart contract
- blockchain
- smart
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、情報処理分野に関し、具体的には、ブロックチェーン(blockchain)技術分野に関し、より具体的には、ブロックチェーンに基づくスマート契約(smart contract)に対してテストを行うための装置及び方法に関する。 The present invention relates to the field of information processing, and more particularly to the field of blockchain technology, and more specifically to an apparatus and method for testing a smart contract based on a blockchain. About.
近年、ブロックチェーン技術が流行っている。ブロックチェーン技術を用いることにより、信頼されるメディアによって運営される従来のアプリケーションは、中央管理機関を要することなく、脱中心化(decentralization(分散化))の方式で操作することができる。例えば、ビットコイン(bitcoin)やイーサリアム(Ethereum)は、ブロックチェーン技術に基づくアプリケーションの例である。ブロックチェーン技術は、互いに信頼しない双方に、自由に取引を行わせることができる。これは、データ記憶の大量の暗号化の使用、ピア・ツー・ピア(P2P)ネットワーク、及びスマート契約という3種類の技術により保証することができる。 In recent years, blockchain technology has become popular. By using blockchain technology, conventional applications operated by trusted media can be operated in a decentralized manner without the need for a central administrative authority. For example, bitcoin and Ethereum are examples of applications based on blockchain technology. Blockchain technology allows both parties who do not trust each other to conduct transactions freely. This can be ensured by three types of technologies: the use of massive encryption of data storage, peer-to-peer (P2P) networks, and smart contracts.
スマート契約は、ブロックチェーンに常駐のセルフ・ランニング・スクリプト(self running script)である。一旦デプロイ(deploy)されれば、その共通関数は、他のスマート契約によりコール(call)することができる。しかし、スマート契約は、更新され難い。なぜなら、それらは、脱中心化のブロックに記憶されているため、変更され難いからである。よって、公表前にスマート契約の品質を確保する必要がある。 A smart contract is a self-running script that resides on the blockchain. Once deployed, the common function can be called by other smart contracts. However, smart contracts are difficult to renew. Because they are stored in the decentering block, they are difficult to change. Therefore, it is necessary to ensure the quality of smart contracts before publication.
本発明の目的は、ブロックチェーンに基づくスマート契約に対してテストを行うための装置及び方法を提供することにある。 It is an object of the present invention to provide an apparatus and method for testing against smart contracts based on blockchain.
本発明の一側面によれば、ブロックチェーンに基づくスマート契約に対してテストを行うための装置が提供され、それは、
並べ替えユニットであって、スマート契約中の関数の特徴に基づいて、関数に対して並べ替えを行うためのもの;
選択ユニットであって、並べ替えの結果に基づいて所定数量の関数を選択するためのもの;及び
テスト設定ユニットであって、選択ユニットが選択した各関数について、テストのためのイベントモニター及びモニタリングすべきパラメータをそれぞれ設定するためのものを含む。
According to one aspect of the present invention, an apparatus for testing a smart contract based on a blockchain is provided, which comprises:
A reordering unit for reordering the functions based on the characteristics of the functions in the smart contract;
A selection unit for selecting a predetermined quantity of functions based on the result of the sorting; and a test setting unit for monitoring and monitoring events for each function selected by the selection unit. Includes one for setting each power parameter.
本発明のもう1つの側面によれば、ブロックチェーンに基づくスマート契約に対してテストを行うための方法が提供され、それは、
スマート契約中の関数の特徴に基づいて関数に対して並べ替えを行い;
並べ替えの結果に基づいて所定数量の関数を選択し;及び
選択された各関数について、テストのためのイベントモニター及びモニタリングすべきパラメータをそれぞれ設定することを含む。
According to another aspect of the present invention, a method is provided for testing against a smart contract based on blockchain, which comprises:
Sort the functions based on the characteristics of the functions in the smart contract;
Selecting a predetermined quantity of functions based on the results of the sorting; and, for each selected function, setting an event monitor for testing and parameters to be monitored, respectively.
本発明の他の側面によれば、対応するコンピュータプログラム、コンピュータ可読記憶媒体、及びコンピュータ・プログラム・プロダクトがさらに提供される。 According to other aspects of the invention, corresponding computer programs, computer-readable storage media, and computer program products are further provided.
本発明のブロックチェーンに基づくスマート契約に対してテストを行うための装置及び方法によれば、スマート契約中の重要関数の情報、及び大量の階層情報(hierarchy information)とパラメータ値を得ることができ、これにより、スマート契約に対してのテストをより有効にさせることができる。 According to the apparatus and method for testing a smart contract based on the blockchain of the present invention, it is possible to obtain important function information and a large amount of hierarchy information and parameter values in the smart contract. This can make the test for smart contracts more effective.
以下、添付した図面を参照しながら、本発明を実施するための好適な形態を詳細に説明する。なお、このような実施形態は、例示に過ぎず、本発明を限定するものでない。 Hereinafter, preferred embodiments for carrying out the present invention will be described in detail with reference to the accompanying drawings. In addition, such embodiment is only an illustration and does not limit this invention.
また、以下、次の順序、即ち、
1.ブロックチェーンに基づくスマート契約に対してテストを行うための装置
2.ブロックチェーンに基づくスマート契約に対してテストを行うための方法
3.本発明における装置及び方法を実現する計算装置
という順序で詳細に説明する
<1.ブロックチェーンに基づくスマート契約に対してテストを行うための装置>
前述のように、スマート契約は、その特殊な属性のせいで、公表前にその品質を保証する必要がある。スマート契約の品質を確保する方法は、例えば、数学的形式検証、ログを記録してデバッグを行う方法などを含む。しかし、例えば、ログを記録する方法は、往々して、契約ログを得ることが困難であり、具体的には、ログは、イベントからのコールにより取得されるが、イベントは、予め、定義されてスマート契約に挿入される必要がある。また、イベントログの構造は、非常に複雑であるため、その中から欠陥(bug)診断のための十分な情報を得ることも難しい。
In addition, the following order, that is,
1. Equipment for testing against smart contracts based on blockchain
2. A method for testing against smart contracts based on blockchain
3. The present invention will be described in detail in the order of a computing device that implements the device and method of the present invention. <1. Equipment for testing smart contracts based on blockchain>
As mentioned above, smart contracts need to guarantee their quality before publication due to their special attributes. Methods for ensuring the quality of smart contracts include, for example, mathematical form verification, logging and debugging. However, for example, a method of recording a log often makes it difficult to obtain a contract log. Specifically, a log is acquired by a call from an event, but an event is defined in advance. Need to be inserted into the smart contract. In addition, since the structure of the event log is very complicated, it is difficult to obtain sufficient information for defect diagnosis.
これに鑑み、本発明の実施例は、ブロックチェーンに基づくスマート契約に対してテストを行うための装置100を提供する。その機能ブロック図は、図1に示されており、装置100は、スマート契約中の関数の特徴に基づいて、関数に対して並べ替えを行うように構成される並べ替えユニット101;該並べ替えの結果に基づいて、所定数量の関数を選択するように構成される選択ユニット102;及び、選択ユニット102が選択した各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定するように構成されるテスト設定ユニット103を含む。 In view of this, embodiments of the present invention provide an apparatus 100 for testing against smart contracts based on blockchain. Its functional block diagram is shown in FIG. 1, in which the device 100 is configured to sort the functions based on the characteristics of the functions in the smart contract; the sorting unit 101; A selection unit configured to select a predetermined quantity of functions based on the results of; and for each function selected by the selection unit, set an event monitor for testing and parameters to be monitored, respectively. A test setting unit 103 configured as described above.
そのうち、並べ替えユニット101、選択ユニット102、及びテスト設定ユニット103は、例えば、1つ又は複数の処理回路により実現されても良く、該処理回路は、例えば、チップとして実現されても良い。 Among them, the rearrangement unit 101, the selection unit 102, and the test setting unit 103 may be realized by one or a plurality of processing circuits, for example, and the processing circuits may be realized as a chip, for example.
そのうち、スマート契約は、自治ノードに用いられるセルフ・ランニング・スクリプトであり、スマート契約には、複数の実行可能な関数を定義することができる。スマート契約のデバッグについて言えば、重要な関数があるが、重要でない関数もある。換言すれば、重要な関数に対してデバッグを行うことで、より多くの欠陥診断情報を得ることができる。よって、並べ替えユニット101を設けて関数に対して並べ替えを行うことにより、このような重要な関数を見つける。該並べ替えは、関数の特徴に基づいて行われ、そのうち、関数の特徴は、該関数のデバッグ時の重要度を反映することができる。 Among them, the smart contract is a self-running script used for the autonomous node, and a plurality of executable functions can be defined in the smart contract. When it comes to debugging smart contracts, some functions are important, but some are not. In other words, more defect diagnosis information can be obtained by debugging important functions. Therefore, such an important function is found by providing the rearrangement unit 101 and rearranging the functions. The sorting is performed based on the feature of the function, and the feature of the function can reflect the importance of the function at the time of debugging.
理解すべきは、重要度が高い関数に対してテストを行うことにより、スマート契約のデバッグの効率を向上させることができる。よって、選択ユニット102は、例えば、デバッグの要求、受け入れられる時間コストなどに基づいて並べ替えを行うことで、所定数量の関数を選択する。一般的には、最も重要なN(N≧1)個の関数を選択してテストを行っても良い。 It should be understood that the efficiency of smart contract debugging can be improved by testing against functions of high importance. Thus, the selection unit 102 selects a predetermined number of functions by, for example, sorting based on a debug request, an acceptable time cost, and the like. In general, the most important N (N ≧ 1) functions may be selected for testing.
選択された各関数について、異なる位置にイベント(イベントモニターとも言う)を插入することにより、異なる結果及びプロセス情報を得ることができ、それ相応に、モニタリングすべきパラメータも異なる。テストの効率を向上させるために、より多くのデバッグ情報を取得し得る位置にイベントを挿入することができ、また、より多くのデバッグ情報を提供し得るパラメータを適切にモニタリングすることができる。よって、テスト設定ユニット103は、各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定する。 For each selected function, by inserting an event (also called an event monitor) at a different location, different results and process information can be obtained, and the parameters to be monitored are correspondingly different. In order to improve the efficiency of the test, events can be inserted at locations where more debug information can be obtained, and parameters that can provide more debug information can be appropriately monitored. Therefore, the test setting unit 103 sets an event monitor for testing and a parameter to be monitored for each function.
その後、選択された各関数の対応する位置にイベントモニターが挿入されており、且つモニタリングすべきパラメータが設定されているスマート契約を、テストの対象となるブロックチェーンにデプロイする。スマート契約の実行プロセスにおいて、插入されたイベントがトリガーされて、欠陥診断のためのイベントログを取得することができる。 Thereafter, the smart contract in which the event monitor is inserted at the corresponding position of each selected function and the parameter to be monitored is set is deployed to the block chain to be tested. In the execution process of the smart contract, the inserted event can be triggered to obtain an event log for defect diagnosis.
一例では、並べ替えユニット101は、関数の次のような特徴のうちの少なくとも1つに基づいて、関数に対して並べ替えを行うように構成され、即ち、ブロックチェーンに関連する特徴、関数の構造複雑度、及び関数間のコール関係という特徴である。例えば、並べ替えユニット101は、特徴の加重和に基づいて関数に対して並べ替えを行うように構成されても良い。 In one example, the reordering unit 101 is configured to reorder the function based on at least one of the following features of the function, i.e., the features associated with the blockchain, the function's This is a feature of structural complexity and call relationship between functions. For example, the reordering unit 101 may be configured to reorder the function based on a weighted sum of features.
一例として、並べ替えユニット101は、並べ替えを行うときに、特定の属性を持つ関数を排除しても良い。このような特定の属性を持つ関数は、スマート契約に対してのテストについて言えば、重要度が通常低い。 As an example, the rearrangement unit 101 may exclude a function having a specific attribute when performing rearrangement. Functions with such specific attributes are usually less important when it comes to testing against smart contracts.
便宜のため、以下、イーサリアム中のスマート契約を例として説明する。そのうち、スマート契約がSolidityの形式を有し、且つイーサリアム仮想マシン(EVM)上で実行すると仮定する。しかし、理解すべきは、本発明は、これに限定されず、他の種類のアプリケーションやスマート契約の他の実現形式に用いることもできる。 For convenience, a smart contract in Ethereum will be described below as an example. Assume that a smart contract has the form of Solidity and runs on an Ethereum virtual machine (EVM). However, it should be understood that the present invention is not limited to this and can be used for other types of applications and other forms of implementation of smart contracts.
図2は、スマート契約がEVM上で実行する例を示す。スマート契約は、状態変数の宣言、関数、関数モディファイア(function modifier)、イベント、構造タイプ、及び列挙タイプ(enumerated type)などを含んでも良い。図2に示すように、スマート契約は、MetaCoinと命名された契約を含み、構造関数getBalanceの他に、2つの関数MetaCoin及びsendCoinが定義されており、また、状態変数“balances”が定義されている。 FIG. 2 shows an example where a smart contract runs on the EVM. A smart contract may include state variable declarations, functions, function modifiers, events, structure types, enumerated types, and the like. As shown in Fig. 2, the smart contract includes a contract named MetaCoin. In addition to the structure function getBalance, two functions MetaCoin and sendCoin are defined, and the state variable "balances" is defined. Yes.
また、イーサ(Ether/仮想通貨)送信の正確性をチェック(check)するために、さらにイベントが定義されて関数sendCoinに挿入されている。EVMにスマート契約をデプロイした後に、図2の右側に示すように、JSコールバック(JS callback)をトリガーしてイベントログを得ることができる。図3は、イベントログの構造例を示す。分かるように、該例では、上の部分は、ブロック及び取引に関連する情報であり、例えば、該ログのブロックの数量、ブロックのHashアドレス(hash address)、イーサ(Ether)を送信する取引口座などを含み、下の部分は、有限なモニタリングパラメータ値を含む。前述のように、デフォルトログに含まれる情報は、欠陥診断のために用いられ難く、例えば、それらは、契約のスタックトレース(stack trace)、例えば、契約のどの行がトリガーされたか、及び実行中の関数のコール階層情報に関する情報を有しない。 Further, in order to check the accuracy of Ether (virtual currency) transmission, an event is further defined and inserted into the function sendCoin. After deploying a smart contract on EVM, you can get an event log by triggering a JS callback as shown on the right side of Figure 2. FIG. 3 shows an example of the structure of an event log. As can be seen, in the example, the upper part is information relating to the block and the transaction, for example the quantity of the block in the log, the hash address of the block, the trading account sending the Ether The lower part contains finite monitoring parameter values. As mentioned above, the information contained in the default log is difficult to use for fault diagnosis, for example, they are contract stack traces, eg, which line of the contract was triggered and running It does not have information on call hierarchy information of functions.
そのうち、スマート契約は、図4に示すように、契約アナライザー(analyzer)により、Json対象と解析され得る。契約アナライザーは、契約の部品(構成要素)、例えば、変数、関数などと交互(interaction)を行うためのインターフェースを提供しており、また、Solidityに関連する特徴、例えば、可視性(visibility)及びアクセシビリティ(accessibility)も示している。例えば、関数の可視性は、“外部(external)”、“パブリック(public)”、“内部(internal)”、又は“プライベート(private)”と指定されても良く、例えば、デフォルトは、“パブリック”である。変数は、そのアクセシビリティは、“パブリック(public)”又は“内部(internal)”と指定されても良く、例えば、デフォルトは、“内部”である。一例として、並べ替えユニット101は、Jsonの出力に基づいて、契約中の関数の集合を得て、関数の特徴に基づいて並べ替えを行うことができる。 Among them, the smart contract can be analyzed as a Json object by a contract analyzer as shown in FIG. The contract analyzer provides an interface for interacting with contract parts, eg, variables, functions, etc., and also features related to Solidity such as visibility and It also shows accessibility. For example, the visibility of a function may be specified as “external”, “public”, “internal”, or “private”, for example, the default is “public” ". A variable may have its accessibility specified as “public” or “internal”, for example, the default is “internal”. As an example, the reordering unit 101 can obtain a set of functions under contract based on the output of Json, and perform reordering based on the feature of the function.
Solidityの形式のスマート契約について、並べ替えユニット101は、関数の属性をチェックし、そして、例えば、“コンストラクタ(constructor)”、“セルフディストラクト(selfdestruct)”、“ゲッター(getter)”、“セッター(setter)”などの属性を有する関数を排除することができ、即ち、このような属性を有する関数は、並べ替えの対象とされない。図2及び図4に示す例では、関数“MetaCoin”は、コンストラクタであり、関数“getBalance”は、ゲッターであり、両者は、並べ替えに参与しない。 For smart contracts in the form of Solidity, the reordering unit 101 checks the attributes of the function and, for example, “constructor”, “selfdestruct”, “getter”, “setter” Functions with attributes such as (setter) "can be excluded, i.e. functions with such attributes are not subject to reordering. In the example shown in FIGS. 2 and 4, the function “MetaCoin” is a constructor, the function “getBalance” is a getter, and both do not participate in the rearrangement.
次に、並べ替えユニット101は、例えば、他の関数に対して並べ替えを行う。前述のように、並べ替えを行う時に次のような特徴に基づいて行われ、即ち、ブロックチェーンに関連する特徴、関数の構造複雑度、及び関数間のコール関係という特徴である。 Next, the rearrangement unit 101 performs rearrangement on other functions, for example. As described above, when sorting is performed based on the following characteristics, that is, characteristics related to the block chain, structural complexity of functions, and call relationships between functions.
一例では、ブロックチェーンに関連する特徴は、ブロックチェーンに関連する属性、スマート契約の取引操作に関する属性、及びスマート契約に係る取引操作の送信者(senderと受信者(receiver)に関連する属性という特徴のうちの少なくとも1つを含む。 In one example, the features associated with the blockchain are the attributes associated with the blockchain, attributes associated with smart contract transaction operations, and attributes associated with the sender (sender and receiver) of the transaction operations associated with the smart contract. At least one of them.
例えば、ブロックチェーンに関連する属性は、関数の主体がブロック又はブロックに関連する属性、例えば、block.blockhash(uint blockNumber)、block.gaslimit、block.coinbaseなど(Solidity形式のスマート契約)を有するかを含む。 For example, the attributes related to the blockchain are whether the subject of the function has an attribute related to the block or block, such as block.blockhash (uint blockNumber), block.gaslimit, block.coinbase (Solidity type smart contract) including.
スマート契約の取引操作に関連する属性は、例えば、msg.sender、msg.valueなどを含む。図2を例とすると、関数“sendCoin”は、“balances[msg.sender]<amount”を条件として用いて評価を行う。 Attributes related to smart contract transaction operations include, for example, msg.sender, msg.value, and the like. Taking FIG. 2 as an example, the function “sendCoin” evaluates using “balances [msg.sender] <amount” as a condition.
スマート契約に係る取引操作の送信者と受信者に関連する属性は、例えば、口座に関連する属性、例えば、<address>.send(uint256 amount)、<address>.balance(uint256)などを含む。 The attributes related to the sender and receiver of the transaction operation related to the smart contract include, for example, attributes related to the account, such as <address> .send (uint256 amount), <address> .balance (uint256), and the like.
3つのブール論理値を用いて上述の3種類の属性をそれぞれ表す場合、Fbは、関数がブロックに関連する属性を有するかを示す値であり、Ftは、関数が取引操作に関連する属性を有するかを示す値であり、Faは、関数が口座に関連する属性を有するかを示す値であり、この場合、ブロックチェーンに関連する特徴は、次のように計算されても良い。 When each of the above three types of attributes is represented using three Boolean logic values, F b is a value indicating whether the function has an attribute related to the block, and F t is related to the trading operation. Is a value indicating whether the function has an attribute, and Fa is a value indicating whether the function has an attribute associated with the account, in which case the feature associated with the blockchain may be calculated as follows: .
Wb=Fb+Ft+Fa (1)
そのうち、“+”は、“OR”演算を表す。理解すべきは、式(1)は、ブロックチェーンに関連する特徴の計算方法の1つのみを示しており、本発明は、これに限定されず、また、考慮すべき属性は、上述の3種類に限定されない。
W b = F b + F t + F a (1)
Of these, “+” represents an “OR” operation. It should be understood that equation (1) shows only one method for calculating the features related to the blockchain, and the present invention is not limited to this, and the attributes to be considered are those described above. It is not limited to the type.
また、関数の構造複雑度は、関数の入力の数量、関数の出力の数量及び関数に含まれる制御構造の数量のうちの少なくとも1つを用いて表すことができる。例えば、Solidity中の関数に含まれ得る制御構造は、包括“if/else”、“while”、“do”、“for”、“break”、“continue”、“?:”などを含む。 The structure complexity of the function can be expressed by using at least one of the number of function inputs, the number of function outputs, and the number of control structures included in the function. For example, control structures that can be included in a function in Solidity include generic “if / else”, “while”, “do”, “for”, “break”, “continue”, “?:”, And the like.
一例では、並べ替えユニット101は、各関数の構造複雑度と、全ての関数の構造複雑度の和との比に基づいて並べ替えを行うように構成されても良く、即ち、該比に基づいて関数の構造複雑度を計算することができる。 In one example, the reordering unit 101 may be configured to perform reordering based on the ratio of the structural complexity of each function and the sum of the structural complexity of all functions, ie based on the ratio. To calculate the structural complexity of the function.
例えば、次のような式(2)を用いて関数の構造複雑度Wsを計算することができる。
そのうち、Niは、上述の入力、出力、制御構造の数量のうちの1つを表し、Nj,iは、スマート契約中の全ての関数に含まれる、対応するものの総数量を表す。Wsは、上述の3種類の数量により反映された構造複雑度の累積結果である。もちろん、3種類の数量のうちの1種類のみ又は2種類を採用して構造複雑度Wsを計算しても良いが、これに限定されない。 Of these, N i represents one of the quantities of the input, output, and control structure described above, and N j, i represents the total number of corresponding items included in all functions in the smart contract. W s is a cumulative result of the structural complexity reflected by the three types of quantities described above. Of course, only one or two of the three types of quantities may be adopted to calculate the structural complexity W s , but the present invention is not limited to this.
また、関数間のコール関係は、関数がスマート契約内で他の関数にコールされる頻度、及び該関数が他のスマート契約によりコールされる頻度に基づいて得ることができる
前述のように、関数の可視性は、“外部(external)”、“パブリック(public)”、“内部(internal)”、又は“プライベート(private)”と指定され得る。そのうち、“外部”又は“パブリック”を有する関数は、他の契約に見られ、コールされ得る。“内部”及び“プライベート”を有する関数は、内部のものにしかコールされない。図5は、関数間のコール関係の有向グラフを示している。
Also, the call relationship between functions can be obtained based on how often the function is called by other functions within the smart contract and how often the function is called by other smart contracts. May be designated as “external”, “public”, “internal”, or “private”. Of these, functions with “external” or “public” can be found and called in other contracts. Functions with “internal” and “private” are called only for internal ones. FIG. 5 shows a directed graph of the call relationship between functions.
例えば、それぞれ、次のような2つの指標を用いて内部コール関係及び外部コール関係を評価することができる。1つは、IIF(逆コール頻度)である。IIF(逆コール頻度)は、次の式(3)に示すように、関数が内部関数にコールされる頻度の逆(inverse)である。
そのうち、niは、第i個目の関数がコールされる回数であり、Σnjは、該スマート契約内の全てのコール関係の数量である。図5を例とすると、f3がf2及びf4にコールされ、コールされる回数は、2であり、また、スマート契約1には、4個のコール関係が存在するので、f3のIIF値は、IIF3=log(4/(2+1))である。理解できるように、1つの関数がコールされる回数が多いほど、基礎関数(base function)である確率が高いため、その重要度が低く、重み(weight)が小さいとの特徴として表される。 Of these, n i is the number of times the i-th function is called, and Σn j is the number of all call relationships in the smart contract. Taking Figure 5 as an example, f 3 is called to f 2 and f 4 , the number of calls is 2, and since there are four call relationships in smart contract 1, f 3 The IIF value is IIF 3 = log (4 / (2 + 1)). As can be understood, since the probability of being a base function is higher as the number of times one function is called is higher, the importance is low and the weight is small.
もう1つは、CIF(交差コール頻度)である。CIF(交差コール頻度)は、次の式(4)に示すように、関数が他のスマート契約にコールされる頻度である。
そのうち、|D|は、契約の総数を表し、|j:fi∈dj|は、該関数fiをコールする契約の数量を表す。図5を例とすると、トータルで3つのスマート契約があり、関数f4は、契約2の関数f9にコールされる。よって、f4のCIF値は、CIF4=(1+1)/3である。 Among them, | D | represents the total number of contracts, and | j: f i ∈d j | represents the number of contracts that call the function f i . Taking FIG. 5 as an example, there are a total of three smart contracts, and function f 4 is called by function f 9 of contract 2. Therefore, the CIF value of f 4 is CIF 4 = (1 + 1) / 3.
最後に、関数のコール関係の特徴は、次の式(5)に示すように、上述の2つの指標の乗積として表することができる。 Finally, the feature of the function call relationship can be expressed as a product of the above two indices as shown in the following equation (5).
Wr=IIF*CIF (5)
関数f3及びf4を例とすると、次のように計算することができる。
Taking the functions f 3 and f 4 as examples, they can be calculated as follows.
以上、各特徴及びその計算の例を示したが、理解すべきは、本発明は、これに限定されず、他の特徴又は他の計算方式を適切に採用しても良い。その後に、並べ替えユニット101は、計算により得られた特徴に対して加重和を求めることで、各関数の最終の並べ替え重みを次の式(8)に示すように得ることができる。
そのうち、α及びβは、経験値に基づいて設定されても良い。α又はβが0のときに、対応する特徴は、並べ替え時に考慮されない。 Of these, α and β may be set based on experience values. When α or β is 0, the corresponding feature is not taken into account when sorting.
各関数のW値を算出した後に、該値に基づいて並べ替えを行い、そして、例えば、W値が最大であるN個の関数を選択し、これにより、テスト設定ユニット103に、これらの関数にイベントモニター及びモニタリングすべきパラメータを設定させる。そのうち、Nの大小は、スマート契約中の数量の変化に伴って変化しても良く、且つ期待されるテスト精度及び受け入れられる時間コストに依存する。 After calculating the W value of each function, sorting is performed on the basis of the value, and, for example, N functions having the maximum W value are selected, so that the test setting unit 103 receives these functions. Causes the event monitor and parameters to be monitored to be set. Of these, the magnitude of N may vary with changes in quantity during smart contracts, and depends on the expected test accuracy and acceptable time cost.
イベントモニターは、関数中のどの行(1行以上)がイベントによりモニタリングされるべきかを指示し、モニタリングすべきパラメータは、どの種類(1種類以上)のパラメータを欠陥診断のためにモニタリングすべきかを指示する。 The event monitor indicates which lines (one or more lines) in the function are to be monitored by the event, and the parameters to be monitored are what types (one or more types) of parameters should be monitored for fault diagnosis Instruct.
一例では、テスト設定ユニット103は、関数の次のような位置のうちの少なくとも1つの位置にイベントモニターを設定するように構成されても良く、即ち、スマート契約に係る取引操作の実行前、戻り値の取得前、及び制御構造内という位置である。 In one example, the test setting unit 103 may be configured to set the event monitor to at least one of the following positions of the function, i.e. before executing the trading operation for the smart contract. It is the position before the value is acquired and within the control structure.
例えば、関数が口座関連属性又はイーサ(Ether)関連属性を有すれば、特に、次のような、イーサ(Ether)を送信する時のコール、即ち、<address>.send(uint256 amount) returns (bool);<address>.call.value(uint256 amount)() returns (bool)を有するときに、これらのコールの前にイベントモニターを挿入すべきである。 For example, if the function has an account-related attribute or an Ether-related attribute, in particular, a call when sending an Ether, such as <address> .send (uint256 amount) returns ( bool); <address> .call.value (uint256 amount) () When you have returns (bool), you should insert an event monitor before these calls.
関数がリターンを有する場合、さらにリターンをコールする前にイベントモニターを插入しても良い。関数がリターンを有しない場合、関数の最後の1行にイベントモニターを挿入しても良い。 If the function has a return, an event monitor may be inserted before calling the return. If the function has no return, an event monitor may be inserted in the last line of the function.
関数が制御構造を有れば、制御構造の主体内にイベントモニターを設定すべきである。例えば、“if/else”の各ブランチ(branch)中或いは“for”又は“while”のループ(loop)内にイベントモニターを設定することができる。 If the function has a control structure, an event monitor should be set up in the subject of the control structure. For example, an event monitor can be set in each branch of “if / else” or in a “for” or “while” loop.
前述のように、デフォルトイベントログには、テストのための十分な情報が含まれない。よって、十分なテスト用情報を得るために、テスト設定ユニット103は、さらに、どの種類のパラメータがモニタリングされるべきかを指示するために用いられる。 As mentioned above, the default event log does not contain enough information for testing. Thus, in order to obtain sufficient test information, the test setting unit 103 is further used to indicate what kind of parameters should be monitored.
例えば、テスト設定ユニット103は、次のようなパラメータのうちの少なくとも1つに対してモニタリングを行うように構成されても良く、即ち、コール階層情報、ブロックチェーン関連情報、オフラインデバッグのためのパラメータ(オフラインデバッグ用パラメータ)というパラメータである。 For example, the test configuration unit 103 may be configured to monitor at least one of the following parameters: call hierarchy information, blockchain related information, parameters for offline debugging This parameter is called (offline debugging parameter).
一例として、コール階層情報は、次のような情報のうちの少なくとも1つを含んでも良く、即ち、イベントモニターが設定される位置、例えば、行番号;スマート契約の名称(ログ検索のためのものであると標識され得る);及び、イベントモニターが実行される時間、例えば、タイムスタンプ(timestamp)(ログに対して並べ替えを行うために用いられ得る)である。 As an example, the call hierarchy information may include at least one of the following information: location where the event monitor is set, eg line number; smart contract name (for log search And the time at which the event monitor is run, eg, a timestamp (which can be used to perform a sort on the log).
ブロックチェーン関連情報は、次のような情報のうちの少なくとも1つを含んでも良く、即ち、スマート契約に係る取引操作のパラメータ、例えば、送受信されるべきイーサ(Ether)の数量;スマート契約に係る取引操作の送信者と受信者、例えば、送信口座と受信口座;スマート契約に係る取引操作を行う前の剰余計算資源(resource)量である。例えば、スマート契約実行前に、一定のgas、即ち、計算資源量を得る必要があり、該gas内でスマート契約の実行が完了するように保証する必要があり、スマート契約に係る取引操作を行う前の剰余計算資源量は、例えば、イーサ(Ether)の送受信を行う前の剰余gas量である。 The blockchain related information may include at least one of the following information, that is, a parameter of a transaction operation related to the smart contract, for example, the number of Ethers to be transmitted / received; The sender and receiver of a transaction operation, for example, a transmission account and a reception account; the amount of remainder calculation resources before performing a transaction operation related to a smart contract. For example, before executing a smart contract, it is necessary to obtain a certain gas, that is, a calculation resource amount, and it is necessary to guarantee that the execution of the smart contract is completed within the gas, and a transaction operation related to the smart contract is performed. The previous surplus calculation resource amount is, for example, the surplus gas amount before performing Ethernet transmission / reception.
オフラインデバッグのためのパラメータは、次のようなもののうちの少なくとも1つを含んでも良く、即ち、関数の入力パラメータ値;関数の出力パラメータ値;及び、関数に関連する共通変数というものである。例えば、図5に示す例では、var1が関数f6により影響される可能性があるから、f6のイベント中で共通変数var1をモニタリングすべきである。 Parameters for off-line debugging may include at least one of the following: a function input parameter value; a function output parameter value; and a common variable associated with the function. For example, in the example shown in FIG. 5, since var 1 may be affected by the function f 6 , the common variable var 1 should be monitored during the event of f 6 .
図6は、本発明の技術を応用するシナリオを示す図である。そのうち、先ず、イベントが定義されないスマート契約に対して解析を行うことで、並べ替えを行う必要がある関数を取得し、そして、並べ替えユニット101により、例えば、並べ替え重みの降順で並べ替えを行い、それから、選択ユニット102により、前のN個の関数を選択し、そして、テスト設定ユニット103により、N個の関数中の各関数にイベントモニター及びモニタリングすべきパラメータを挿入する。その後に、イベント付きスマート契約をブロックチェーンにデプロイさせて実行させることで、ログを取得(capture)する。ユーザ例えば開発者は、取得されたログをチェックして欠陥を診断することができる。 FIG. 6 is a diagram showing a scenario in which the technique of the present invention is applied. First of all, by analyzing a smart contract in which no event is defined, a function that needs to be sorted is obtained, and the sorting unit 101 performs sorting in descending order of the sorting weight, for example. Then, the selection unit 102 selects the previous N functions, and the test setting unit 103 inserts parameters to be monitored and monitored into each function in the N functions. After that, the log is captured by deploying the smart contract with an event to the blockchain and executing it. A user, such as a developer, can check the acquired logs to diagnose defects.
以上のことから、本実施例における装置100により、スマート契約中の関数の特徴値に基づいて重要関数を選択し、そして、これらの関数にイベントモニター及びモニタリングすべきパラメータを設定することで、大量の階層情報及びパラメータ値を取得し、スマート契約への有効なテストを実現することができる。 From the above, the apparatus 100 according to the present embodiment selects an important function based on the feature value of the function in the smart contract, and sets the event monitor and the parameter to be monitored for these functions, thereby enabling a large amount of functions. The hierarchical information and parameter values can be acquired, and an effective test for the smart contract can be realized.
<2.ブロックチェーンに基づくスマート契約に対してテストを行うための方法>
前述の実施方式において、ブロックチェーンに基づくスマート契約に対してテストを行うための装置を説明したときに、幾つかの処理や方法が既に開示されている。以下、既に記載された一部の説明が省略される。なお、これらの処理や方法は、ブロックチェーンに基づくスマート契約に対してテストを行うための装置を説明したときに開示されているが、必ずしも、説明された部品を採用し、又は、説明された部品により実行される必要がない。例えば、ブロックチェーンに基づくスマート契約に対してテストを行うための装置の実施方式の一部又は全部は、ハードウェア及び/又はファームウェアにより実現されても良い。また、以下に説明する処理や方法は、もちろん、上述のような、ブロックチェーンに基づくスマート契約に対してテストを行うための装置のハードウェア及び/又はファームウェアを採用することができるが、コンピュータ実行可能なプログラムにより実現することもできる。
<2. Method for testing smart contracts based on blockchain>
In the above implementation, several processes and methods have already been disclosed when describing an apparatus for testing a smart contract based on blockchain. Hereinafter, a part of the description already described is omitted. These processes and methods are disclosed when the apparatus for testing a smart contract based on a blockchain is described, but the components described are not necessarily adopted or described. There is no need to be executed by the part. For example, part or all of the implementation scheme of the apparatus for testing against a smart contract based on blockchain may be realized by hardware and / or firmware. In addition, the processing and method described below can, of course, employ the hardware and / or firmware of the apparatus for testing the smart contract based on the block chain as described above, It can also be realized by a possible program.
図7は、本発明の一実施例における、ブロックチェーンに基づくスマート契約に対してテストを行うための方法のフローチャートである。該方法は、スマート契約中の関数の特徴に基づいて関数に対して並べ替えを行い(S11);並べ替えの結果に基づいて所定数量の関数を選択し(S12);及び、選択された各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定する(S13)ことを含む。 FIG. 7 is a flowchart of a method for testing a blockchain-based smart contract in one embodiment of the present invention. The method sorts the functions based on the characteristics of the functions in the smart contract (S11); selects a predetermined number of functions based on the results of the sorting (S12); and Each of the functions includes setting an event monitor for testing and parameters to be monitored (S13).
例えば、ステップS11では、関数の次のような特徴のうちの少なくとも1つに基づいて、特徴の関数に対して並べ替えを行うことができ、即ち、ブロックチェーンに関連する特徴、関数の構造複雑度、及び関数間のコール関係という特徴である。そのうち、特徴の加重和に基づいて、関数に対して並べ替えを行う。 For example, in step S11, the function of the feature can be rearranged based on at least one of the following features of the function: the feature related to the block chain, the structure complexity of the function It is a feature of the degree and the call relationship between functions. Among them, the functions are rearranged based on the weighted sum of the features.
そのうち、前述のブロックチェーンに関連する特徴は、次のようなもののうちの少なくとも1つを含んでも良く、即ち、ブロックチェーンに関連する属性、スマート契約の取引操作に関連する属性、及びスマート契約に係る取引操作の送信者と受信者に関連する属性というものである。関数の構造複雑度は、関数の入力の数量、関数の出力の数量、及び関数中の制御構造の数量のうちの少なくとも1つを採用して表すことができ、また、並べ替えは、各関数の構造複雑度と、全ての関数の構造複雑度の和との比に基づいて行うことができる。関数間のコール関係は、関数がスマート契約内で他の関数にコールされる頻度、及び関数が他のスマート契約にコールされる頻度に基づいて得ることができる。 Among these, the features related to the blockchain may include at least one of the following: attributes related to blockchain, attributes related to smart contract transaction operations, and smart contracts This attribute is related to the sender and receiver of the transaction operation. The structural complexity of the function can be expressed by adopting at least one of the number of function inputs, the number of function outputs, and the number of control structures in the function. Can be performed based on the ratio of the structural complexity of and the sum of the structural complexity of all functions. Call relationships between functions can be obtained based on the frequency with which functions are called to other functions within a smart contract and the frequency with which functions are called to other smart contracts.
ステップS13では、関数の次のような位置の少なくともの1つにイベントモニターを設定することができ、即ち、スマート契約に係る取引操作の実行前、戻り値の取得前、及び制御構造内という位置である。また、次のようなパラメータのうちの少なくとも1つに対してモニタリングを行うことができ、即ち、コール階層情報、ブロックチェーン関連情報、及びオフラインデバッグ用パラメータというものである。コール階層情報は、次のようなもののうちの少なくとも1つを含んでも良く、即ち、イベントモニターの設定位置、スマート契約の名称、イベントモニターの実行時間というものである。ブロックチェーン関連情報は、次のようなもののうちの少なくとも1つを含んでも良く、即ち、スマート契約に係る取引操作のパラメータ、スマート契約に係る取引操作の送信者と受信者、スマート契約に係る取引操作実行前の剰余計算資源量というものである。オフラインデバッグ用パラメータは、次のようなもののうちの少なくとも1つを含んでも良く、即ち、関数の入力パラメータ値、関数の出力パラメータ値、及び関数に関連する共通変数というものである。 In step S13, the event monitor can be set to at least one of the following positions of the function, i.e. before the execution of the trading operation for the smart contract, before the return value is obtained, and within the control structure. It is. In addition, monitoring can be performed on at least one of the following parameters: call hierarchy information, block chain related information, and offline debugging parameters. The call hierarchy information may include at least one of the following: event monitor setting location, smart contract name, event monitor execution time. The blockchain related information may include at least one of the following: a transaction operation parameter related to a smart contract, a sender and a receiver of a transaction operation related to a smart contract, a transaction related to a smart contract This is the amount of remainder calculation resource before the operation is executed. The off-line debugging parameters may include at least one of the following: an input parameter value of the function, an output parameter value of the function, and a common variable associated with the function.
なお、この実施例中の関連する細部は、ブロックチェーンに基づくスマート契約に対してテストを行うための装置についての説明に既に記載されているので、ここでは省略される。 It should be noted that the relevant details in this embodiment have already been described in the description of the device for testing against smart contracts based on blockchain and are therefore omitted here.
<3.本発明の装置及び方法を実施する計算装置>
上述の装置中の各構成モジュールやユニット(構成要素)は、ソフトウェア、ファームウェア、ハードウェア又はその組み合わせにより構成されても良い。なお、構成時に使用し得る具体的な手段や方式は、当業者にとって周知であるため、ここでは省略される。ソフトウェア又はファームウェアにより実現される場合、記憶媒体又はネットワークから、専用ハードウェア構造を持つコンピュータ(例えば、図8に示すような汎用コンピュータ800)に、該ソフトウェアを構成するプログラムをインストールすることができ、また、該コンピュータは、各種のプログラムがインストールされている時に、各種の機能を実現することができる。
<3. Computer Apparatus for Implementing Apparatus and Method of Present Invention>
Each component module and unit (component) in the above-described apparatus may be configured by software, firmware, hardware, or a combination thereof. In addition, since the concrete means and system which can be used at the time of a construction are well-known to those skilled in the art, they are omitted here. When realized by software or firmware, a program constituting the software can be installed from a storage medium or a network to a computer having a dedicated hardware structure (for example, a general-purpose computer 800 as shown in FIG. 8). Further, the computer can realize various functions when various programs are installed.
図8では、中央処理装置(CPU)801は、ROM 802に記憶されているプログラム、又は、記憶部808からRAM 803にロードされているプログラムに基づいて、各種の処理を行う。RAM 803には、必要に応じて、CPU 801が各種の処理を実行する時に必要なデータを記憶しても良い。なお、CPU 801、ROM 802及びRAM 803は、バス804を経由して接続される。また、入力/出力インターフェース805も、バス804に接続される。 In FIG. 8, the central processing unit (CPU) 801 performs various processes based on a program stored in the ROM 802 or a program loaded from the storage unit 808 to the RAM 803. The RAM 803 may store data necessary when the CPU 801 executes various processes as necessary. Note that the CPU 801, the ROM 802, and the RAM 803 are connected via a bus 804. An input / output interface 805 is also connected to the bus 804.
次のような部品は、入力/出力インターフェース805に接続され、即ち、入力部806(キーボード、マウスなどを含む)、出力部807(表示器、例えば、CRT、LCDなど、及びスピーカーなどを含む)、記憶部808(ハードディスクなどを含む)、及び通信部809(ネットワーク・インターフェース・カード、例えば、LANカード、モデムなどを含む)というような部品である。通信部809は、ネットワーク、例えば、インターネットを経由して通信処理を行う。なお、必要に応じて、ドライブ810を入力/出力インターフェース805に接続させても良い。取り外し可能な媒体811、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体記憶器などは、必要に応じて、ドライブ810にセットされ、その中から読み出されたコンピュータプログラムが必要に応じて記憶部808にインスタールされるようにさせることができる。 The following components are connected to the input / output interface 805: an input unit 806 (including a keyboard and a mouse), an output unit 807 (including a display device such as a CRT, an LCD, and a speaker). A storage unit 808 (including a hard disk) and a communication unit 809 (including a network interface card such as a LAN card and a modem). The communication unit 809 performs communication processing via a network, for example, the Internet. Note that the drive 810 may be connected to the input / output interface 805 as necessary. A removable medium 811, for example, a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor storage device, etc. is set in the drive 810 as necessary, and a computer program read from the drive 810 is stored in a storage unit as necessary. 808 can be made to instal.
ソフトウェアにより上述の一連の処理を実現する場合、ネットワーク、例えば、インターネット、又は記憶媒体、例えば、取り外し可能な媒体811から、ソフトウェアを構成するプログラムをインストールすることができる。 When the above-described series of processing is realized by software, a program constituting the software can be installed from a network, for example, the Internet, or a storage medium, for example, a removable medium 811.
なお、当業者が理解すべきは、このような記憶媒体は、図8に示すような取り外し可能な811に限定されない。取り外し可能な媒体811は、例えば、磁気ディスク(フロッピーディスク(登録商標)を含む)、ディスク(CD-ROM及びDVDを含む)、光磁気ディスク(MD(登録商標)を含む)、及び半導体記憶器を含む。或いは、記憶媒体は、ROM 802、記憶部分808中のハードディスクなどであっても良い。 It should be understood by those skilled in the art that such a storage medium is not limited to the removable 811 as shown in FIG. The removable medium 811 includes, for example, a magnetic disk (including floppy disk (registered trademark)), a disk (including CD-ROM and DVD), a magneto-optical disk (including MD (registered trademark)), and a semiconductor memory device. including. Alternatively, the storage medium may be a ROM 802, a hard disk in the storage portion 808, or the like.
本発明は、さらに、マシン可読指令コードを含むプログラムプロダクト(プログラム)に関する。指令コードは、マシン(例えば、コンピュータ)により読み出されて実行される時に、前述の実施例における方法を実行することができる。 The invention further relates to a program product (program) comprising machine-readable instruction code. When the instruction code is read and executed by a machine (eg, a computer), the method in the above-described embodiments can be executed.
それ相応に、前述のようなマシン可読取指令コードを含むプログラムプロダクトを記憶した記憶媒体も本発明の開示に含まれる。該記憶媒体は、フロッピーディスク、光ディスク、光磁気ディスク、メモリカードなどを含むが、これらに限定されない。 Accordingly, a storage medium storing a program product including the machine-readable command code as described above is also included in the disclosure of the present invention. The storage medium includes, but is not limited to, a floppy disk, an optical disk, a magneto-optical disk, a memory card, and the like.
また、上述の各実施例に関し、さらに次のような付記を開示する。 Further, the following additional notes are disclosed with respect to the above-described embodiments.
(付記1)
ブロックチェーンに基づくスマート契約に対してテストを行うための装置であって、
スマート契約中の関数の特徴に基づいて、前記関数に対して並べ替えを行うための並べ替えユニット;
前記並べ替えの結果に基づいて、所定数量の関数を選択するための選択ユニット;及び
前記選択ユニットが選択した各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定するためのテスト設定ユニットを含む、装置。
(Appendix 1)
A device for testing against smart contracts based on blockchain,
A reordering unit for reordering the function based on the characteristics of the function in the smart contract;
A selection unit for selecting a predetermined number of functions based on the result of the sorting; and an event monitor for testing and a parameter to be monitored for each function selected by the selection unit, respectively. A device including a test setting unit.
(付記2)
付記1に記載の装置であって、
前記並べ替えユニットは、前記ブロックチェーンに関連する特徴、前記関数の構造複雑度、及び関数間のコール関係という前記関数の特徴のうちの少なくとも1つに基づいて、前記関数に対して並べ替えを行い、
前記並べ替えユニットは、前記特徴の加重和に基づいて、前記関数に対して並べ替えを行う、装置。
(Appendix 2)
The apparatus according to appendix 1, wherein
The reordering unit performs reordering on the function based on at least one of the features of the function, such as a feature related to the blockchain, a structural complexity of the function, and a call relationship between functions. Done
The apparatus wherein the reordering unit reorders the function based on a weighted sum of the features.
(付記3)
付記2に記載の装置であって、
前記ブロックチェーンに関連する特徴は、前記ブロックチェーンに関連する属性、前記スマート契約の取引操作に関連する属性、及び、前記スマート契約に係る取引操作の送信者と受信者に関連する属性のうちの少なくとも1つを含む、装置。
(Appendix 3)
The apparatus according to appendix 2, wherein
The feature related to the block chain includes an attribute related to the block chain, an attribute related to a transaction operation of the smart contract, and an attribute related to a sender and a receiver of the transaction operation related to the smart contract. An apparatus comprising at least one.
(付記4)
付記2に記載の装置であって、
前記関数の構造複雑度は、前記関数の入力の数量、前記関数の出力の数量、及び前記関数中の制御構造の数量のうちの少なくとも1つを用いて表され、
前記並べ替えユニットは、各関数の構造複雑度と、全ての関数の構造複雑度の和との比に基づいて並べ替えを行う、装置。
(Appendix 4)
The apparatus according to appendix 2, wherein
The structural complexity of the function is expressed using at least one of the number of inputs of the function, the number of outputs of the function, and the number of control structures in the function;
The rearrangement unit performs rearrangement based on a ratio between the structural complexity of each function and the sum of the structural complexity of all functions.
(付記5)
付記2に記載の装置であって、
前記関数間のコール関係は、前記関数が前記スマート契約内で他の関数にコールされる頻度、及び前記関数が他のスマート契約にコールされる頻度に基づいて得られる、装置。
(Appendix 5)
The apparatus according to appendix 2, wherein
The device wherein the call relationship between the functions is obtained based on how often the function is called to other functions within the smart contract and how often the function is called to other smart contracts.
(付記6)
付記1に記載の装置であって、
前記テスト設定ユニットは、前記関数の次のような位置のうちの少なくとも1つに前記イベントモニターを設定し、即ち、前記スマート契約に係る取引操作の実行前、戻り値の取得前、及び制御構造内という位置である、装置。
(Appendix 6)
The apparatus according to appendix 1, wherein
The test setting unit sets the event monitor to at least one of the following positions of the function, i.e., before executing a trading operation related to the smart contract, before obtaining a return value, and a control structure. A device that is in a position.
(付記7)
付記1に記載の装置であって、
前記テスト設定ユニットは、コール階層情報、ブロックチェーン関連情報、及びオフラインデバッグ用パラメータというパラメータのうちの少なくとも1つに対してモニタリングを行う、装置。
(Appendix 7)
The apparatus according to appendix 1, wherein
The test setup unit monitors at least one of parameters of call hierarchy information, block chain related information, and offline debugging parameters.
(付記8)
付記7に記載の装置であって、
前記コール階層情報は、前記イベントモニターの設定位置、前記スマート契約の名称、及び前記イベントモニターの実行時間という情報のうちの少なくとも1つを含む、装置。
(Appendix 8)
The apparatus according to appendix 7,
The apparatus, wherein the call hierarchy information includes at least one of information on a setting position of the event monitor, a name of the smart contract, and an execution time of the event monitor.
(付記9)
付記7に記載の装置であって、
前記ブロックチェーン関連情報は、前記スマート契約に係る取引操作のパラメータ、前記スマート契約に係る取引操作の送信者と受信者、及び前記スマート契約に係る取引操作実行前の剰余計算資源量という情報のうちの少なくとも1つを含む、装置。
(Appendix 9)
The apparatus according to appendix 7,
The block chain related information includes information on parameters of the transaction operation related to the smart contract, a sender and a receiver of the transaction operation related to the smart contract, and a surplus calculation resource amount before execution of the transaction operation related to the smart contract. A device comprising at least one of the following.
(付記10)
付記7に記載の装置であって、
前記オフラインデバッグ用パラメータは、前記関数の入力パラメータ値、前記関数の出力パラメータ値、及び前記関数に関連する共通変数というもののうちの少なくとも1つを含む、装置。
(Appendix 10)
The apparatus according to appendix 7,
The offline debugging parameter includes at least one of an input parameter value of the function, an output parameter value of the function, and a common variable associated with the function.
(付記11)
ブロックチェーンに基づくスマート契約に対してテストを行うための方法であって、
スマート契約中の関数の特徴に基づいて前記関数に対して並べ替えを行い;
前記並べ替えの結果に基づいて所定数量の関数を選択し;及び
選択された各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定することを含む、方法。
(Appendix 11)
A method for testing against smart contracts based on blockchain,
Sorting the functions based on the characteristics of the functions in the smart contract;
Selecting a predetermined quantity of functions based on the result of the reordering; and, for each selected function, setting an event monitor for testing and parameters to be monitored, respectively.
(付記12)
付記11に記載の方法であって、
前記関数の特徴、即ち、前記ブロックチェーンに関連する特徴、前記関数の構造複雑度、及び関数間のコール関係、のうちの少なくとも1つに基づいて前記関数に対して並べ替えを行い、
そのうち、前記特徴の加重和に基づいて前記関数に対して並べ替えを行う、方法。
(Appendix 12)
The method according to appendix 11, wherein
Reordering the functions based on at least one of the characteristics of the functions, i.e., the characteristics associated with the blockchain, the structural complexity of the functions, and the call relationships between the functions;
A method for reordering the functions based on a weighted sum of the features.
(付記13)
付記12に記載の方法であって、
前記ブロックチェーンに関連する特徴は、記ブロックチェーンに関連する属性、前記スマート契約の取引操作に関連する属性、及び、前記スマート契約に係る取引操作の送信者と受信者に関連する属性のうちの少なくとも1つを含む、方法。
(Appendix 13)
The method according to appendix 12, wherein
The characteristics related to the block chain are the attributes related to the block chain, the attributes related to the transaction operation of the smart contract, and the attributes related to the sender and receiver of the transaction operation related to the smart contract. A method comprising at least one.
(付記14)
付記12に記載の方法であって、
前記関数の構造複雑度は、前記関数の入力の数量、前記関数の出力の数量、及び前記関数中の制御構造の数量のうちの少なくとも1つにより表され、
前記並べ替えは、各関数の構造複雑度と、全ての関数の構造複雑度の和との比に基づいて行われる、方法。
(Appendix 14)
The method according to appendix 12, wherein
The structural complexity of the function is represented by at least one of the number of inputs of the function, the number of outputs of the function, and the number of control structures in the function;
The reordering is performed based on a ratio between the structural complexity of each function and the sum of the structural complexity of all functions.
(付記15)
付記12に記載の方法であって、
前記関数間のコール関係は、前記関数が前記スマート契約内で他の関数によりコールされる頻度、及び前記関数が他のスマート契約によりコールされる頻度に基づいて取得される、方法。
(Appendix 15)
The method according to appendix 12, wherein
The call relationship between the functions is obtained based on how often the function is called by other functions within the smart contract and how often the function is called by other smart contracts.
(付記16)
付記11に記載の方法であって、
前記関数の次のような位置、即ち、前記スマート契約に係る取引操作の実行前、戻り値の取得前、及び制御構造内という位置のうちの少なくともの1つの処に前記イベントモニターを設定する、方法。
(Appendix 16)
The method according to appendix 11, wherein
Setting the event monitor in at least one of the following positions of the function, i.e., before executing a transaction operation related to the smart contract, before obtaining a return value, and within a control structure; Method.
(付記17)
付記11に記載の方法であって、
コール階層情報、ブロックチェーン関連情報、及びオフラインデバッグ用パラメータのうちの少なくとも1つに対してモニタリングを行う、方法。
(Appendix 17)
The method according to appendix 11, wherein
A method of monitoring at least one of call hierarchy information, blockchain related information, and offline debugging parameters.
(付記18)
付記17に記載の方法であって、
前記コール階層情報は、次の情報、即ち、前記イベントモニターの設定位置、前記スマート契約の名称、及び前記イベントモニターの実行時間のうちの少なくとも1つを含む、方法。
(Appendix 18)
The method according to appendix 17, wherein
The call hierarchy information includes at least one of the following information: a setting position of the event monitor, a name of the smart contract, and an execution time of the event monitor.
(付記19)
付記17に記載の方法であって、
前記ブロックチェーン関連情報は、前記スマート契約に係る取引操作のパラメータ、前記スマート契約に係る取引操作の送信者と受信者、及び前記スマート契約に係る取引操作実行前の剰余計算資源量のうちの少なくとも1つを含む、方法。
(Appendix 19)
The method according to appendix 17, wherein
The block chain related information includes at least one of a parameter of a transaction operation related to the smart contract, a sender and a receiver of the transaction operation related to the smart contract, and a residual calculation resource amount before execution of the transaction operation related to the smart contract. A method comprising one.
(付記20)
付記17に記載の方法であって、
前記オフラインデバッグ用パラメータは、前記関数の入力パラメータ値、前記関数の出力パラメータ値、及び前記関数に関連する共通変数のうちの少なくとも1つを含む、方法。
(Appendix 20)
The method according to appendix 17, wherein
The offline debugging parameters include at least one of an input parameter value of the function, an output parameter value of the function, and a common variable associated with the function.
以上、本発明の好ましい実施形態を説明したが、本発明はこの実施形態に限定されず、本発明の趣旨を離脱しない限り、本発明に対するあらゆる変更は本発明の技術的範囲に属する。 The preferred embodiment of the present invention has been described above, but the present invention is not limited to this embodiment, and all modifications to the present invention belong to the technical scope of the present invention unless departing from the spirit of the present invention.
Claims (10)
前記スマート契約中の関数の特徴に基づいて、前記関数に対して並べ替えを行うための並べ替えユニット;
前記並べ替えの結果に基づいて、所定数量の関数を選択するための選択ユニット;及び
前記選択ユニットにより選択された各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定するためのテスト設定ユニットを含む、装置。 A device for testing against smart contracts based on blockchain,
A reordering unit for reordering the function based on the characteristics of the function in the smart contract;
A selection unit for selecting a predetermined quantity of functions based on the result of the reordering; and an event monitor for testing and a parameter to be monitored for each function selected by the selection unit, respectively. A device including a test setting unit.
前記並べ替えユニットは、前記関数の特徴、即ち、前記ブロックチェーンに関連する特徴、前記関数の構造複雑度、及び関数間のコール関係という特徴のうちの少なくとも1つの特徴に基づいて、前記関数に対して並べ替えを行い、
前記並べ替えユニットは、前記特徴の加重和に基づいて、前記関数に対して並べ替えを行う、装置。 The apparatus of claim 1, wherein
The reordering unit determines the function based on at least one of the characteristics of the function, i.e., the characteristics related to the blockchain, the structural complexity of the function, and the call relationship between functions. Sort on
The apparatus wherein the reordering unit reorders the function based on a weighted sum of the features.
前記ブロックチェーンに関連する特徴は、前記ブロックチェーンに関連する属性、前記スマート契約の取引操作に関連する属性、及び、前記スマート契約に係る取引操作の送信者と受信者に関連する属性、のうちの少なくとも1つを含む、装置。 The apparatus according to claim 2, wherein
The characteristics related to the block chain are: an attribute related to the block chain, an attribute related to a transaction operation of the smart contract, and an attribute related to a sender and a receiver of the transaction operation related to the smart contract. A device comprising at least one of the following.
前記関数の構造複雑度は、前記関数の入力の数量、前記関数の出力の数量、及び前記関数に含まれる制御構造の数量、のうちの少なくとも1つにより表され、
前記並べ替えユニットは、各関数の構造複雑度と、全ての関数の構造複雑度の和との比に基づいて並べ替えを行う、装置。 The apparatus according to claim 2, wherein
The structural complexity of the function is represented by at least one of the number of inputs of the function, the number of outputs of the function, and the number of control structures included in the function,
The rearrangement unit performs rearrangement based on a ratio between the structural complexity of each function and the sum of the structural complexity of all functions.
前記関数間のコール関係は、前記関数が前記スマート契約内で他の関数によりコールされる頻度、及び前記関数が他のスマート契約によりコールされる頻度に基づいて得られる、装置。 The apparatus according to claim 2, wherein
The apparatus wherein the call relationship between the functions is obtained based on how often the function is called by other functions within the smart contract and how often the function is called by other smart contracts.
前記テスト設定ユニットは、前記関数の位置、即ち、前記スマート契約に係る取引操作の実行前、戻り値の取得前、及び制御構造内という位置のうちの少なくとも1つの位置に前記イベントモニターを設定する、装置。 The apparatus of claim 1, wherein
The test setting unit sets the event monitor at the position of the function, that is, at least one of the positions before executing the transaction operation related to the smart contract, before obtaining the return value, and within the control structure. ,apparatus.
前記テスト設定ユニットは、コール階層情報、ブロックチェーン関連情報、及びオフラインデバッグ用パラメータ、のうちの少なくとも1つに対してモニタリングを行う、装置。 The apparatus of claim 1, wherein
The test setting unit monitors at least one of call hierarchy information, block chain related information, and offline debugging parameters.
前記コール階層情報は、前記イベントモニターの設定位置、前記スマート契約の名称、及び前記イベントモニターの実行時間、のうちの少なくとも1つを含む、装置。 The apparatus according to claim 7, wherein
The apparatus, wherein the call hierarchy information includes at least one of a setting position of the event monitor, a name of the smart contract, and an execution time of the event monitor.
前記ブロックチェーン関連情報は、前記スマート契約に係る取引操作のパラメータ、前記スマート契約に係る取引操作の送信者と受信者、及び、前記スマート契約に係る取引操作実行前の剰余計算資源量、のうちの少なくとも1つを含む、装置。 The apparatus according to claim 7, wherein
The blockchain related information includes: a parameter of a transaction operation related to the smart contract, a sender and a receiver of the transaction operation related to the smart contract, and a surplus calculation resource amount before execution of the transaction operation related to the smart contract A device comprising at least one of the following.
スマート契約中の関数の特徴に基づいて前記関数に対して並べ替えを行い;
前記並べ替えの結果に基づいて所定数量の関数を選択し;及び
選択された各関数について、それぞれ、テストのためのイベントモニター及びモニタリングすべきパラメータを設定することを含む、方法。 A method for testing against smart contracts based on blockchain,
Sorting the functions based on the characteristics of the functions in the smart contract;
Selecting a predetermined quantity of functions based on the result of the reordering; and, for each selected function, setting an event monitor for testing and parameters to be monitored, respectively.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710265237.6 | 2017-04-21 | ||
CN201710265237.6A CN108073513A (en) | 2017-04-21 | 2017-04-21 | The apparatus and method tested the intelligent contract based on block chain |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018185808A true JP2018185808A (en) | 2018-11-22 |
Family
ID=62159081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018079746A Withdrawn JP2018185808A (en) | 2017-04-21 | 2018-04-18 | Apparatus for and method of testing smart agreement based on block chain |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2018185808A (en) |
CN (1) | CN108073513A (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020502621A (en) * | 2018-11-30 | 2020-01-23 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | Test platform for blockchain networks |
KR102160379B1 (en) * | 2020-04-20 | 2020-09-25 | 이화여자대학교 산학협력단 | Testing method for decentralized application based on blockchain and testing apparatus |
JP2022545250A (en) * | 2019-08-21 | 2022-10-26 | 杭州趣鏈科技有限公司 | Smart contract processing method, system, computer equipment and readable storage medium |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633199A (en) * | 2018-06-22 | 2019-12-31 | 富士通株式会社 | Testing apparatus, method, and medium for block chain supporting intelligent contract |
CN110633200A (en) * | 2018-06-25 | 2019-12-31 | 富士通株式会社 | Method and device for testing intelligent contracts |
CN110889574A (en) * | 2018-09-11 | 2020-03-17 | 富士通株式会社 | Uncertainty factor detection device, method and medium for intelligent contract |
CN109408373B (en) * | 2018-09-26 | 2022-03-04 | 深圳壹账通智能科技有限公司 | Test method of intelligent contract, computer readable storage medium and test terminal |
CN109460657A (en) * | 2018-10-15 | 2019-03-12 | 杭州安恒信息技术股份有限公司 | A kind of safety detection method overflowed based on intelligent contract code value |
CN109446096B (en) * | 2018-11-06 | 2021-08-24 | 北京知道创宇信息技术股份有限公司 | Intelligent contract debugging method and device and storage medium thereof |
CN109670951B (en) * | 2018-11-19 | 2021-03-26 | 南京苏宁软件技术有限公司 | Block chain intelligent contract debugging and publishing method and system |
CN109583857B (en) * | 2018-12-11 | 2021-05-14 | 腾讯科技(深圳)有限公司 | Method, system, device and storage medium for processing public offer task |
CN110046023B (en) * | 2018-12-12 | 2020-05-05 | 阿里巴巴集团控股有限公司 | Data processing method and system based on intelligent contract of block chain |
CN110046991B (en) | 2018-12-12 | 2020-08-11 | 阿里巴巴集团控股有限公司 | Data processing method and system based on intelligent contract of block chain |
CN110046091B (en) * | 2019-03-12 | 2023-10-20 | 创新先进技术有限公司 | Automatic test method and device |
CN109951546B (en) * | 2019-03-15 | 2021-12-14 | 百度在线网络技术(北京)有限公司 | Transaction request processing method, device, equipment and medium based on intelligent contract |
CN110175454B (en) * | 2019-04-19 | 2021-03-26 | 佛山市微风科技有限公司 | Intelligent contract security vulnerability mining method and system based on artificial intelligence |
CN110069295B (en) * | 2019-05-06 | 2022-06-17 | 百度在线网络技术(北京)有限公司 | Block chain processing method, device, equipment and medium |
CN111290958B (en) * | 2020-02-20 | 2023-05-30 | 联动优势科技有限公司 | Method and device for debugging intelligent contract |
CN111813635A (en) * | 2020-08-28 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | Monitoring method, system and device for intelligent contracts of block chains |
CN112131115B (en) * | 2020-09-23 | 2021-06-22 | 腾讯科技(深圳)有限公司 | Intelligent contract fuzzy test method, device and storage medium |
CN112215618B (en) * | 2020-12-11 | 2021-02-26 | 支付宝(杭州)信息技术有限公司 | Verification method and device of intelligent contract |
CN112837155B (en) * | 2021-02-10 | 2024-05-31 | 中国人民银行数字货币研究所 | Method and device for registering and executing intelligent contracts in blockchain |
CN113051507B (en) * | 2021-03-29 | 2023-11-21 | 北京智慧星光信息技术有限公司 | Method and system for constructing bidirectional binding web page front-end display based on json data |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789033B2 (en) * | 2012-02-03 | 2014-07-22 | International Business Machines Corporation | Reducing application startup time by optimizing spatial locality of instructions in executables |
CN106155897B (en) * | 2015-04-16 | 2020-12-08 | 腾讯科技(深圳)有限公司 | Service processing method and device |
CN104794059B (en) * | 2015-05-08 | 2017-08-04 | 北京理工大学 | A kind of defect positioning method and device recorded based on function call |
CN105550104B (en) * | 2015-12-08 | 2018-04-20 | 北京奇虎科技有限公司 | Application program capacity test method and device |
CN105893042A (en) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | Intelligent contract implementation method based on block chain |
-
2017
- 2017-04-21 CN CN201710265237.6A patent/CN108073513A/en active Pending
-
2018
- 2018-04-18 JP JP2018079746A patent/JP2018185808A/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020502621A (en) * | 2018-11-30 | 2020-01-23 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | Test platform for blockchain networks |
KR20200067115A (en) * | 2018-11-30 | 2020-06-11 | 알리바바 그룹 홀딩 리미티드 | Test platform for blockchain networks |
KR102225973B1 (en) | 2018-11-30 | 2021-03-11 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | Test platform for blockchain networks |
US11210203B2 (en) | 2018-11-30 | 2021-12-28 | Advanced New Technologies Co., Ltd. | Testing platform for blockchain networks |
JP2022545250A (en) * | 2019-08-21 | 2022-10-26 | 杭州趣鏈科技有限公司 | Smart contract processing method, system, computer equipment and readable storage medium |
JP7394213B2 (en) | 2019-08-21 | 2023-12-07 | 杭州趣鏈科技有限公司 | Smart contract processing methods, systems, computer equipment, and readable storage media |
KR102160379B1 (en) * | 2020-04-20 | 2020-09-25 | 이화여자대학교 산학협력단 | Testing method for decentralized application based on blockchain and testing apparatus |
Also Published As
Publication number | Publication date |
---|---|
CN108073513A (en) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018185808A (en) | Apparatus for and method of testing smart agreement based on block chain | |
CN102402481B (en) | The fuzz testing of asynchronous routine code | |
Baresi et al. | Event-based multi-level service monitoring | |
US7890808B2 (en) | Testing software applications based on multiple data sources | |
US8327029B1 (en) | Unified software construct representing multiple synchronized hardware systems | |
Maâlej et al. | Distributed and Resource-Aware Load Testing of WS-BPEL Compositions. | |
US10241897B2 (en) | Identifying test gaps using code execution paths | |
US10521322B2 (en) | Modeling and testing of interactions between components of a software system | |
CN111897724B (en) | Automatic testing method and device suitable for cloud platform | |
CN111966597B (en) | Test data generation method and device | |
CN111859047A (en) | Fault solving method and device | |
US20200371903A1 (en) | Automatic generation of unit tests while running an application | |
CN112559525A (en) | Data checking system, method, device and server | |
US20070233448A1 (en) | Detecting computer system simulation errors | |
US11169910B2 (en) | Probabilistic software testing via dynamic graphs | |
TW201629768A (en) | Infrastructure rule generation | |
CN111858354A (en) | Method and device for automatically generating test report, storage medium and electronic equipment | |
CN109274533B (en) | Web service fault positioning device and method based on rule engine | |
Palma et al. | Investigating the change-proneness of service patterns and antipatterns | |
Boucher et al. | Transforming workflow models into automated end-to-end acceptance test cases | |
Cooray et al. | Test reconfiguration for service oriented applications | |
Freitas et al. | SCOUT: a multi-objective method to select components in designing unit testing | |
Wild et al. | Unit Test Based Component Integration Testing | |
CN111160403A (en) | Method and device for multiplexing and discovering API (application program interface) | |
CN117493162B (en) | Data verification method, system, equipment and storage medium for interface test |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210113 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20210514 |