=Paper= {{Paper |id=Vol-2917/paper40 |storemode=property |title=Intelligent System for Checking the Authenticity of Goods Based on Blockchain Technology |pdfUrl=https://ceur-ws.org/Vol-2917/paper40.pdf |volume=Vol-2917 |authors=Oleh Prokipchuk,Lyubomyr Chyrun,Myroslava Bublyk,Valentyna Panasyuk,Viktor Yakimtsov,Roman Kovalchuk |dblpUrl=https://dblp.org/rec/conf/momlet/ProkipchukCBPYK21 }} ==Intelligent System for Checking the Authenticity of Goods Based on Blockchain Technology== https://ceur-ws.org/Vol-2917/paper40.pdf
Intelligent System for Checking the Authenticity of Goods Based
on Blockchain Technology
Oleh Prokipchuk1, Lyubomyr Chyrun2, Myroslava Bublyk1, Valentyna Panasyuk3, Viktor
Yakimtsov4 and Roman Kovalchuk5
1
  Lviv Polytechnic National University, S. Bandera street, 12, Lviv, 79013, Ukraine
2
  Ivan Franko National University of Lviv, University street, 1, Lviv, 79000, Ukraine
3
  West Ukrainian National University, Lvivska Street, 11, Ternopil, 46004, Ukraine
4
  Ukrainian National Forestry University, Gen. Chuprynka Street, 103, Lviv, 79057, Ukraine
5
  Hetman Petro Sahaidachnyi National Army Academy, Heroes of Maidan Street, 32, Lviv, 79012, Ukraine


                Abstract
                The rapid spread of counterfeit in the market has become a significant issue in the 21st century.
                Counterfeit goods cause material damage to the producers of original goods and pose a
                substantial threat to buyers' health. As a result, many companies are already trying to combat
                this phenomenon in a variety of ways. There are two main ways to combat counterfeiting: the
                way to find and ban counterfeit manufacturers and the way to identify authentic goods by
                buyers. The subject of this bachelor's thesis research is the developed information system for
                the authenticity of goods based on blockchain technology. Here is how this system works. Each
                product manufacturer is a separate node of the P2P network. Manufacturers create units of
                goods as individual wallets and give them a certain balance. They then place the public and
                private keys of the goods in URL format and place the QR codes with this URL on the
                packaging of the goods, thus transferring ownership of the goods to the buyer. When the buyer
                scans the secret code, the balance of the interests is transferred back to the manufacturer. When
                scanning the public code, the system determines product status based on the balance of the
                product wallet: if the balance is zero, then the product is already consumed, and if not, then the
                product is not consumed. In this way, the buyer can determine whether this product has ever
                been used or unpacked before him. If the buyer receives the used product, he can return it to
                the store. Java programming language tools were used to implement the blockchain. RSA was
                chosen as the cryptographic algorithm, and the SHA256 algorithm was selected for hashing.
                The Spring Boot framework was used to optimize the software development process. This
                article consists of five sections: an analytical review of literature sources, system analysis,
                selection of tools and technologies for system implementation, description of the created
                software, and, finally, the economic part. Each section is accompanied by a detailed
                explanation and a summary of the work done. The developed program is provided as a set of
                executable JAR files. These files can be run either manually or using the included BAT scripts.
                The fourth section presents the results of a study of the program's behaviour depending on the
                variables. At the end of the work are applications that contain the most important blocks of
                code, a configuration file, and an example of serialization of the blockchain

                Keywords 1
                Blockchain technology, counterfeit good, information system, product type, counterfeit
                product, network communication, product life cycle, update blockchain status, user interface,
                intelligent information retrieval system, product key, manufacturer environment



MoMLeT+DS 2021: 3rd International Workshop on Modern Machine Learning Technologies and Data Science, June 5, 2021, Lviv-Shatsk,
Ukraine
EMAIL: mr.prokipchukk@gmail.com (O. Prokipchuk); Lyubomyr.Chyrun@lnu.edu.ua (L. Chyrun); my.bublyk@gmail.com (M. Bublyk);
v.panasiuk@tneu.edu.ua (V. Panasyuk); yakimtsov@nltu.edu.ua (V. Yakimtsov); roma_kov@meta.ua (R. Kovalchuk)
ORCID: 0000-0002-3584-4380 (O. Prokipchuk); 0000-0002-9448-1751 (L. Chyrun); 0000-0003-2403-0784 (M. Bublyk); 0000-0002-5133-
6431 (V. Panasyuk); 0000-0001-8452-0561 (V. Yakimtsov); 0000-0001-8337-8591 (R. Kovalchuk)
             ©️ 2021 Copyright for this paper by its authors.
             Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
             CEUR Workshop Proceedings (CEUR-WS.org)
1. Introduction
    With today's prevalence of giant companies on the commodity market, many manufacturers are
afraid to compete and resort to more insidious methods of gaining income - counterfeiting. Today,
thousands of manufacturers from around the world produce counterfeit goods. However, such goods
cause significant harm to humanity. They threaten the material profits of the owners of goods and trust
relations with the buyer and cause direct damage to the health of buyers of goods. That is why methods
of combating counterfeiting and detecting original goods methods are being developed. One of such
methods is an informational system for checking the authenticity of goods based on blockchain
technology. This system allows the buyer to verify the authenticity of goods after or before purchase
and groups manufacturers into a single network to increase this approach reliability and transparency.
The method used has almost no analogues in its field of action, and strategies that work at different
levels complement each other. The system is cheaper to implement and more reliable in mass use than
its analogues. That is why a system that can reduce the threat of counterfeit goods in today's
environment is relevant. The purpose of creating this system is to provide buyers of goods with the
opportunity to verify their authenticity. Verification should be possible both before and after the
purchase to return the goods in case of counterfeiting detection. The system should unite manufacturers
into a single network, avoiding attachment to a particular manufacturer. In this way, each buyer can
view any part of the required data. Given this transparency of data, the developed system must provide
reliable protection of this information. The system must also provide additional functionality other than
the main one, expanding the scope and increasing the benefits of using the system by users. Finally, the
chosen method of verification should consist of multiple parts.
    To achieve this goal, it is necessary to implement the following tasks:
         To study the region's problems to form the basis of existing ways of counterfeiting goods and
    methods of combating them. Highlight the advantages and disadvantages of the found approaches
    and explore the buyer's view on the attractiveness of such methods.
         Design the relationships of system elements to create a flexible and stable complex. It is
    necessary to build a tree of goals and decide on the type of information system based on the obtained
    criteria and conduct a system analysis by constructing process diagrams and a hierarchy of tasks.
         Identify the necessary technological and software tools for the implementation of such a
    system. If necessary, compare analogues and establish priority solutions.
         Develop the system following the established plan and collect statistical data to optimize the
    work with the system in the future.
    The object of study: is the process of authenticating the product using transparent, immutable
blockchain data. The subject of study is creating a unified decentralized blockchain system that provides
the ability to verify the authenticity of goods for all manufacturers participating in this network.
    The developed system is presented in the form of ready-to-use executable files. The main standard
module is a blockchain module that manufacturers of goods can use. Other developed modules are
impractical and are designed only to demonstrate the operation of the main module. The system
provides a standard template that can be implemented by manufacturers of goods to access a secure
blockchain network, which is why the resulting product has practical value.

2. Related works
2.1. Commodity production and counterfeiting
   Buying goods has long been an integral part of the everyday life of each of us. It is difficult to
imagine without these results of production of both large companies and small private enterprises.
   In the past, the basis of such relations was natural production. It is a type of production in which
individual groups (such as the family, various social groups) produced all the necessary goods to support
the life and needs of this group. In other words, each group was isolated from the others and paid for
goods for itself. Over time, this type of production began to displace more efficiently commodity
production. Here, goods are already produced for their exchange or sale. Accordingly, each product
has its consumer value and usefulness, with which you can agree to sell this product [1]. This type of
production has proved to be more efficient than natural production because each manufacturer provides
the market with its specialised goods. Respectively, each buyer gets the opportunity to receive higher
quality goods. To date, such production has developed dramatically. Many giant companies have
entered the market, competing with each other for the end buyer. Due to the impossibility of competition
or simply for the sake of easy profit, some producers earn by supplying counterfeit or counterfeit
goods. Counterfeit are those goods whose production infringes the copyright of the manufacturer. For
example, if someone creates a laptop using the Asus logo or certain technologies patented by this
company, this product will infringe the copyright of Asus [2]. A more general concept for counterfeit
is a forgery. The effect produced here may not violate someone's copyright, but the actual product and
positioning will differ. For example, if you bought milk with the label saying "10% fat", although there
is only 5 percent fat, it is a fake. We can conclude that counterfeit is always a forgery, and forgery is
not necessarily a counterfeit.

2.2.    Distribution of counterfeit products and consequences
    It would be a mistake to think that counterfeit products are uncommon and quickly punishable by
law. This problem has long harmed many countries and companies, causing billions in losses and taking
hundreds of lives. For example, in 2017, counterfeit products caused global losses of 323 billion dollars,
which is a considerable amount. The largest suppliers of counterfeit products are:
        China ~ 54%;
        Hong Kong ~ 27%;
        Turkey ~ 4%;
        Singapore ~ 2%;
        Germany ~ 1%;
        India ~ 1%;
        Macedonia ~ 0.9%;
        Thailand ~ 0.8%;
        Malaysia ~ 0.7%.
    China is a leader in the production of counterfeit products globally, which is not surprising because
China is also not a leader in the production of original products [3].
    Thus, countries with low labour costs create counterfeits and sell them in the first world, earning
vast amounts of money. The countries most affected by such products are the following:
        USA - 24%;
        France - 17%;
        Italy - 15%;
        Switzerland - 11%;
        Germany - 9%;
        Japan - 6%;
        South Korea - 3%;
        Britain - 2%;
        Other countries - 13%.
    Data collected for 2014-2016 by the Organization for Economic Co-operation and Development
(from now on OECD). Since most counterfeits are created on companies' products in the United States,
the latter suffers the most significant losses [4].
    We think everyone at least once noticed the goods of improper quality on the shelves of markets or
supermarkets or when receiving a delivery from an online store. The buyer is disappointed in the store
or in the manufacturer of the product, respectively, reducing the following profits. At the same time, no
one can avoid the risk zone of counterfeit goods because this network has penetrated almost all areas
of production of goods, so you need to inspect and check the goods when buying carefully. Fig. 1 shows
world statistics on industries that suffer losses from counterfeit goods according to to OECD [5].
Figure 1: The industries that suffer the most from counterfeiting

    Not surprisingly, in the first places of this ranking are the elements of appearance. Many people
want to wear fashionable things, but not everyone has the means to do so. Someone deliberately buys
fakes, and someone is led to unrealistically low discounts. The companies themselves achieve a
substantial reduction in the cost of such products: they use cheaper and lower quality analogues of
original materials, save on quality and production conditions, less monitor the lack of goods. So an
inexperienced buyer can easily be given a substitute for natural leather. Given the low savings on the
production of counterfeits, it is pretty challenging to distinguish counterfeit from the original. It is such
counterfeits that cause the most damage to the owners of the original.
    Previously, only material damage to buyers, shops or copyright holders was mentioned, but
counterfeit goods cause more severe injury, endangering the safety and health of the buyer. And often,
these threats are not obvious, and it is revealed when it is difficult to fix something. Original products
are developed according to the relevant safety and quality standards and the applicable requirements
set by law. When buying an actual product, the fee is for the product itself, and the fact that the product
is made in compliance with all requirements, i.e. significantly reduces all potential health risks. What
can not be said about counterfeits, and this must be remembered when you want to buy a cheaper version
of the original product. Even thatKi, seemingly safe, goods, like clothing, can harm the human body.
Fabric made of inferior quality materials in unsanitary conditions can be toxic to humans and cause
various skin irritations. The most striking example of the toxicity of materials is shown to us by the
cosmetics department. Researchers from Homeland Security test multiple skin products and strictly
warn against buying fake options. In addition to the fact that such products are often toxic, researchers
also report that they contain cyanide, lead, human and animal urine, faeces, arsenic and other hazardous
substances. It applies not only to makeup but also to skin cleansers, sunscreens and others [6]. Another
unobvious example of a health threat is poor quality sunglasses. According to a Brazilian Optical
Industry Association survey, of the 24 million pairs of glasses produced by the country,7 million are
illegal. It is an incredible number and can hurt the eyes of millions of buyers.
    Unlike the original products, which contain all the necessary sunscreens, counterfeit products have
only tinted glass, which only creates the appearance of sun protection. As a result, the pupil of the eye
dilates from tinted glass, but the amount of ultraviolet radiation remains the same, and the look is more
damaged than without glasses at all [7].
    When wearing low-quality shoes, cases of deformation of the wearer's foot are not uncommon,
leading to further diseases of the human body's musculoskeletal system [7].
    Counterfeit electrical goods are already a more obvious threat. Damage from them is often
instantaneous and fatal. These include electric shocks or short circuits and fires.
    For example, take charging for smartphones. More than half of the people on Earth use smartphones.
They need to be assigned from time to time. Sometimes chargers fail, and then, when buying a
replacement, smartphone owners often choose cheaper options.
    Therefore, with the help of the company Apple, Electrical Safety First, has tested many counterfeit
iPhone chargers purchased from Amazon, eBay and other stores. The study results showed that 98% of
purchased devices have a potential risk of fatal electric shock or fire [8]. The most obvious and
dangerous is the threat of counterfeit medical devices and pharmaceuticals. Defective equipment can
quickly end a person's life. Such industries need the most control. When buying such goods, you should
follow the minor deviations because the damage caused by them can be extensive. In developed
countries, counterfeit pharmaceuticals have not become particularly widespread and are relatively
successful, but the situation is deteriorating if developing countries are considered. The World Health
Organization (WHO) claims that 10% of all medicines in developing countries are counterfeit. If you
look at this number in terms of potential threat, it's a lot. The slightest deviation in the materials or
manufacturing conditions of the pharmaceutical can lead to significant losses. Since 2013 The WHO
has received more than 1,500 complaints about counterfeit goods from developing countries.




Figure 2: The most common counterfeit drugs

  Malaria drugs and antibiotics have proven to be the most popular among counterfeiters. Most
complaints about counterfeit goods come from Africa and account for 42% [9].

2.3.    Analysis of known methods of identifying the originality of goods

   The distribution of counterfeit products is both material and harmful to health. To stay afloat and
minimize losses, companies must develop methods to identify genuine products to enable the buyer and
various inspection services to distinguish the original from the counterfeit. There are several basic
methods of product detection, from traditional to technological.

2.3.1. Legislative
   This method is based on the buyer's confidence in the actions of the state to ban and seize counterfeit
goods. Simply put, if the product is sold publicly and is still not banned, then it is the original. Many
modern countries take the issue of counterfeiting seriously and severely punish the distribution of such
products. The method mainly depends on the fact that the person who buys a counterfeit product will
complain about it and, depending on the result, the source of distribution will be blocked. The Save
Harbor approach works in Europe and America. It imposes certain restrictions on online stores and
works as follows. The intermediary between the seller and the buyer is released from liability for
copyright infringement if he complies with two requirements:
       It is possible to file a complaint;
       Reseller responds to complaints (removes or blocks infringing content).
   With this approach, you can show confidence in those sellers who are in the market for a long time
[10]. Fines for distributing counterfeit products are usually significant. Thus, in China, the fine for
violating these rules is $ 7,200 - $ 72,000, and if counterfeit products threaten the buyer's health, the
fine can reach $ 288 thousand [11].




Figure 3: eBay complaint form

   Pros of the approach:
      Regulated by law;
      It does not require significant material investments for implementation.
   Cons of the approach:
      Based on trust;
      Accuracy is low;
      Unable to authenticate for time-tested stores.

2.3.2. Development of instructions for finding the difference between the
original and the counterfeit

    For each of its products, the manufacturer creates instructions to distinguish the original on specific
grounds when buying the product. The method is based on physical and visual inspection. However,
this method has already failed. In 2018, Baby Foot created an official website with all the necessary
items to identify the original. Ironically, this instruction was used by counterfeiters to confuse the buyer
[12].
    Pros of the approach:
        It does not require significant material investments for implementation.
    Cons of the approach:
        Based on customer awareness;
        Accuracy is low;
        The instructions work for both buyers and manufacturers of counterfeits.

2.3.3. Monitoring and blocking of suspicious resources
    The approach is that the manufacturer monitors Internet resources for infringing goods and their
subsequent blocking. Monitoring such resources in automatic or semi-automatic modes requires
developing specialized software, respectively, and resources for this development. Identification of the
original is based on the buyer's confidence that all counterfeit resources are blocked. The manufacturer
of the product can both monitor and entrust this process to another company. For example, Group-IB
has been providing similar services for a long time and has a wide range of functionality.
    The company monitors the following areas: domain names, aggregators, bulletin boards, search
engines, deep web, social networks, mobile application stores, messengers, contextual advertising.
   When a counterfeit is found, the company takes all necessary pre-trial measures to block resources
and provides full legal support [13].
   Pros of the approach:
       Reliability is above average;
       You can entrust to another company;
       Allows you to block many counterfeit resources effectively.
   Cons of the approach:
       Requires considerable material investment;
       Based on the trust of the buyer;
       Works are only for online shopping.

2.3.4. Use of artificial intelligence to detect counterfeit
   Aspects of machine learning are deeply rooted in our daily lives. It is a compelling technology that
can automate the work of many people. The prospects of this technology are especially tracked in
recognition of something, and the detection of counterfeit goods is no exception. Different companies
have already started using artificial intelligence for similar purposes and in different ways.
   Alibaba group uses the latest developments in the field of machine learning to detect ads for
counterfeit products. The developed system allows to detect of counterfeits on the following grounds:
       Price: the system detects unrealistic changes from the expected price and considers possible
   seasonal discounts, currency conversion, and the fact that the product can be used.
       Image: The system can detect the slightest deviations in the photos of potentially fake ads.
   When a critical number of variations is reached, the program notifies of product suspicion.
       Description: the system analyzes the description of the algorithm to search for suspicious
   phrases. The original goods do not need to impose their authenticity or novelty on the buyer.
   Respectively, the algorithm considers similar details.
   Because the system is based on learning rather than a specific algorithm, the accuracy cannot be
100%. Potential flaws are possible, and the more goods are analyzed, the more legal interests can be
counterfeited. That is why such a system can work only in a semi-automatic mode because the ban on
legal goods can cause problems with the law [14]. According to a 2018 report, Alibaba confiscated $
536 million worth of counterfeit goods from third-party vendors. IBM has demonstrated another way
to use artificial intelligence to detect counterfeits in its Crypto Anchor Verifier product. This latest
technology is a micro-scanner that can be built into the cameras of mobile phones and perform a detailed
analysis of the product's material and on this basis to conclude about its authenticity. The system
contains data about the original product, and based on them, artificial intelligence notices differences
with counterfeit products and draws conclusions based on the results of comparisons. Initially, the
system was developed to recognize the authenticity of diamonds and, after successful use, the company
quickly realized the potential of such technology [15].




Figure 4: Crypto Anchor Verifier in action

   After developing and refining training algorithms, the system successfully analysed the materials of
such goods like wine, clothing, medicine, precious stones, etc. The system can distinguish expensive
wine from cheap, recognize genetically modified products, analyse water quality and even find bacteria
by type of Escherichia coli [16]. In general, the technology is up-and-coming shortly we can expect the
fruits of its widespread use.
   Pros of the approach:
        Reliability is high
        Cheap to use
        Works in a semi-automatic mode
        The popularity of machine learning technology makes it easier to gain the trust of the buyer
   Cons of the approach:
        The technology remains inaccurate
        The development of such systems can take a long time
        Requires additional implementation efforts

2.3.5. Use of unique markings to complicate counterfeiting
    Another way to protect goods is to apply special identification marks on the packaging or product
itself. This solution allows users to identify the original product to expect counterfeiters not to copy the
technology. The application of this technology involves a pitfall, which is a constant race between the
manufacturer of goods and attackers in creating the above signs. Accordingly, the manufacturer's
mission is to develop and use labels with the highest possible complexity of its forgery. The attacker's
mission is to copy the tags as accurately as possible to complicate the difference between the buyer
[17]. Throughout its history, manufacturers have used a variety of markings, both tactile and visual. To
date, the most popular way is to use holograms [18].




Figure 5: Using holograms to mark packaging

   This method is a good option for the protection of goods of medium and low price category. When
a balance between complexity and price is achieved, it can be transferred to mass use without severe
losses in the cost of the final product.
   Pros of the approach:
        Inexpensive with reasonable use;
        Average reliability.
   Cons of the approach:
        Labels can be copied;
        Markings may be distorted during transport.

2.3.6. Using serialization to identify goods
   The technology provides for the serialization of each unit of goods during production and their
unique identifier assignment. The buyer can determine the authenticity of this unit.
   The implementation of the approach is divided into two stages: entering each unit of goods in the
database and referencing the database object in a unique identifier. The database must contain many
products, use indexing to find the desired effect quickly, and be protected from unwanted attempts to
obtain data by attackers. The unique identifier generation algorithm should avoid any possible
correlations. The identification mark itself must be machine-readable. Such types of labels as QR-Code,
Data Matrix or NFC-label can be used [19].
   One implementation of this approach is a joint development of Louis Vuitton SE and Microsoft. The
result is called Aura Ledger and is based on blockchain technology.
   The product uses NFC tags to identify goods and the blockchain as a database. The blockchain stores
data on the entire product life cycle, starting with materials and production and ending with the end
customer. However, the storage of such a volume of information is often redundant [20].
   The use of blockchain has many advantages for this approach. The technology is characterized by
high security, reliability and transparency.
   Pros of the approach:
         High reliability;
         Ability to track each unit of product;
         Causes trust in customers.
   Cons of the approach:
         The external label can be copied;
         Required costs are above average.

2.3.7. The results of the analysis of approaches
  After considering the available approaches, we collect the primary accumulated data in one
comparative table. Comparisons of methods are given in Table 1.

Table 1
Approach comparison table
           Approach                                  Pros                          Cons
                                              Regulated by law             Based on trust
                                              It does not require          Accuracy is low
            Legislative               significant material                  Unable to authenticate
                                      investments for                for unverified stores
                                      implementation
                                              It does not require           Based on customer
  Development of instructions         significant material           awareness
    for finding the difference        investments for                        Accuracy is low
  between the original and the        implementation                         Counterfeit
            counterfeit                                              manufacturers also use
                                                                     instructions
                                             Reliability is above           Requires considerable
                                      average                        material investment
                                             You can entrust to             Based on the trust of
   Monitoring and blocking of
                                      another company                the buyer
     suspicious resources
                                             Allows you to block            Works only for online
                                      counterfeit resources          shopping
                                      effectively
                                             Reliability is high           The technology
                                             Cheap to use           remains inaccurate
                                             Works in a semi-              The development of
  Use of artificial intelligence to
                                      automatic mode                 such systems can take a long
       detect counterfeit
                                             The popularity of      time
                                      machine technology inspires           Requires additional
                                      the confidence of the buyer    implementation efforts
                                            Inexpensive with                 Labels can be copied
    Use of special markings to
                                    reasonable use                            Markings may be
    complicate counterfeiting
                                            Average reliability       distorted during transport
                                            High reliability                 The external label can
                                            Ability to track each     be copied
  Using serialization to identify
                                    unit of product                           Required costs are
              goods
                                            Causes trust in           above average
                                    customers

    After analyzing the approaches presented in this paper, the most promising was implementing
serialization of goods using blockchain technology in the project Aura Ledger from Microsoft and
LVMH. This approach potential is explained by the high accuracy and security of implementation and
the high trust of customers. In addition to the above advantages, the technology has room to improve
and correct existing shortcomings, mainly using expensive NFC labels for each product and the
possibility of multiple uses of tags by contract manufacturers. This work aims to improve the
serialization system using blockchain technology, using cheaper QR-codes and the introduction of 2-
stage product identification, which provides labels on the outside and inside the package to prevent the
possibility of re-use of labels. The external title serves to identify the product, and the internal label
contains the private data of each product and serves as a label invalid. As a result of the analysis and
processing of literature sources, conclusions were drawn about the counterfeit goods problem's
relevance today. Unable to compete, some companies choose to follow a crooked path and profit from
the results of others by supplying counterfeit goods to the market. The world economy loses hundreds
of billions of dollars due to counterfeiting every year. Moreover, low-quality counterfeit threatens the
health of buyers. These two factors explain the urgency of this problem. There are many ways to identify
original products, from legislative to technical. The system implemented in the course of this work is
the result of improving existing blockchain-based technology. Two-stage identification and cheaper
analogues of labels are introduced. As a result, we get more accuracy and less cost. It should be noted,

3. Material and methods
3.1. System analysis of the object of study

   Systems analysis is a discipline that studies systems to solve problems of various origins. The subject
develops and applies methods of representation and analysis of systems in various final manifestations.
The developed models represent the systems in the form of relationships between the components that
make up the system's structure and consider the solution of fundamental problems in the developed
model. System analysis is based on a system approach [21]. A systems approach is a research
methodology that considers objects as separate systems. The general statement of the process is that the
whole world is a system and the objects that make up the world are subsystems. They, in turn, also
consist of smaller designs. Thus, the world is a hierarchical structure of systems and subsystems.
   According to the system approach of IP authentication of goods based on blockchain technology - a
system that forms the structure of subsystems that interact for the general-purpose - to keep secure
records of each unit of goods to identify the correct product by the buyer. The principles of the system
approach consider IP in terms of their specification in the application of this system:
        According to the principle of the ultimate goal, all components of the system function is to
   ensure the goods authentication functionality.
        According to the principles of unity, connectivity and modularity, the system is considered as
   a whole from the outside. It contains an internal structure, which is generally represented in inputs
   (product key, manufacturer reference) and outputs (product opinion, additional product
   information).
        According to the hierarchy principle, the system is a hierarchical structure, on top of which are
   the software application modules of the manufacturer and customer application of the buyer,
   specified by subroutines and components at lower levels.
       According to the principle of functionality, the structure of the system is built around the
   functionality of secure accounting of goods and finding specific units, and when adding new
   functionality, the previous frame will be changed
       According to the principle of development, the system is flexible and ready to expand its
   functionality, and blockchain technology ideally provides a secure, uninterrupted accumulation of
   information.
       According to the principle of decentralization, the system goes to the minimum centralization,
   using the server only to establish communication between network nodes
       According to the uncertainty principle, the system is developed considering unforeseen
   situations and provides processing of such in the processes of creation, management and definition
   of goods.




Figure 6: Goal tree

   A target tree was built for further systematic analysis of the product authentication system based on
blockchain technology. One of the models of systems analysis is the goal tree. This model allowed you
to present the system in the form of a hierarchy of goals at different levels and identified the most
priority criteria for the success of system development for a detailed description of the overall plan.
   The developed goal tree consists of 4 levels: general goal, aspects, sub-aspects and criteria.
    According to the developed model, the goal contains the following aspects:
         Elaboration of problems
         Designing relationships
         System implementation
    These are the main aspects necessary to achieve the overall goal. In the future, each element will be
specified using sub-aspects and criteria.
    Elaboration of the problem is a theoretical and methodological foundation on which the following
aspects will be based. Aspect is a set of analysis of issues, possible solutions and workarounds at
different levels of system implementation. It consists of the following sub-aspects:
         Analysis of methods of counterfeiting goods: search for available modes of counterfeiting
    goods, studying production methods and copying various interests to form an initial information
    base, based on which methods of control will be developed identification of the most common and
    successful strategies.
         Data collection on anti-counterfeiting methods is an analysis of existing forms of anti-
    counterfeiting to highlight the advantages and disadvantages of different approaches that will be
    used in the development of methods of the final system.
         Analysis of the bypasses of counterfeiters: finding ways for fraudsters to compromise security
    methods to identify potential threats and the formation of priority areas that require a higher level of
    protection.
         Analysis of the buyer's view on the fight against counterfeiting is studying the buyer's point of
    view on the current state of the market in the fight and the development of counterfeit to find ways
    to establish ways of trust between the buyer and the manufacturer.
    The criteria for the success of the aspect are persuasiveness and competitiveness. Convincingness
shows how much the implementation of the system inspires confidence in the final buyer of goods.
Competitiveness offers the coefficient of security of the system to methods of counterfeiting and ways
to circumvent protection against counterfeiting. The set of criteria determines the project's potential
success, provided that the requirements of the following aspects are met.
    The second aspect is the design of relationships. This aspect involves determining the architecture
of the system and the relationships between them at different levels of implementation. Sets the
behaviour of the product in its application of sub-aspects are:
         Development of the product life cycle scheme defines all stages of the product life cycle,
    including the steps of creation and receipt of the product by the buyer and all intermediate stages
    between them.
         Designing the communication of components at different stages of the product life cycle: the
    result of this sub-aspect are specific patterns of behaviour of all parts of the system following the
    product life cycle. Such a template allows you to efficiently distribute large-scale applications with
    the possibility of separate consideration at different levels.
         Designing the internal structure of components determines the behaviour of each of the
    elements and their implementation methodology.
         Provision of communication with other systems: placement of entry and exit points for
    integration with other applications. It is essential to plan the places of integration before the start of
    the program implementation.
    The criteria for this aspect are flexibility and stability. Flexibility allows the system to expand with
as little effort as possible and fine-tuning individual components without global intervention in the
implementation. Strength determines how well the system can operate without increasing expectations
with increasing load or scale of performance. The last aspect is the implementation of the system. The
aspect is responsible for all stages of realization of previously prepared plans into reality. Performance
is the most extended and most demanding. It would help if you started this stage after full
implementation of the previous ones. Sub-aspects are:
         Selection and development of the necessary data management algorithms: a secure accounting
    system requires careful selection of the required algorithms. This stage involves the analysis of
    possible algorithms considering the latest and most promising achievements of cryptography and
    blockchain.
        Development of system components is the implementation of each element and connections
    between them according to the created specifications and the chosen algorithmic applications.
        Testing the system on a trial batch: checking the design on a test batch of goods. Establishing
    the fact of meeting the requirements of all previous success criteria.
        Implementation of the system in mass use: the last stage after testing. Requires a complete
    system that provides all phases of putting the plan into use by end customers.
    The criteria of the latter aspect are accuracy and security. Accuracy shows the ratio of the number
of successfully detected original goods to all attempts to identify interests using the developed system.
Security offers the degree of protection of the system from possible attacks and ways to compromise
data. The next step is to choose the type of information system to achieve the overall goal. For
functioning and tasks, consider the following IS:
    1. The information retrieval system searches for information without its semantic processing.
    2. Information and reference system. Uses queries as input to apply mathematical functions and
algorithms. The results of this application are the initial data of the system.
    3. Information and management system. The purpose of these systems is to solve and automate
management aspects.
    4. Decision support system. Such a system aims to make the most optimal decision from possible
alternatives based on the collected data.
    5. Intelligent information system. Systems simulate the solution of complex human problems that
can not be solved algorithmically or have a significant advantage over them. Such systems include:
        Intelligent information retrieval system - a search engine that works with search queries close
    to natural. Interpretation of logical connections of the question is processed using smart algorithms.
        A computational logic system is a system that allows users to use complex machine methods
    through interaction with a computer.
        Expert system - a system that provides digitization of areas that are difficult to present using
    mathematical models. Intelligent algorithms guarantee an effective alternative to these models.
    The choice of the type of information system will be made using the method of analytical hierarchy.
For this purpose, the four most suitable types were chosen: decision support system (A1), intelligent
information retrieval system (A2), computational logic system (A3), information reference system
(A4). The choice of design will be based on the following criteria: persuasiveness (K1), competitiveness
(K2), flexibility (K3), stability (K4), accuracy (K5), security (K6). The method involves constructing a
series of matrices based on expert assessments, expressed using a scale of significance. As a result, final
scores will be determined for each of the four types. The scale is shown in Table 2.

Table 2
The scale of the relative importance of alternatives
                           Significance level                   Characteristic
                                    1                        Lack of significance
                                    2                         Weak significance
                                    3                      Mediocre significance
                                    4                      Significant significance
                                    5                        Strong significance
                                    6                     Very strong significance
                                    7                    The significance is obvious
                                    8                        Insane significance
                                    9                       Absolute significance

   For each of the matrices, two final parameters are defined: eigenvalues and eigenvectors.
   The following formula performs the calculation of eigenvalues:
                                      ВЧ = (∏𝑛𝑗=1 𝑎𝑗 )1/𝑛 .                                          (1)
   In turn, the calculation of eigenvectors is performed by the following formula:
                                                   𝑤𝑖                                                (2)
                                         ВВ = 𝑛          .
                                                 ∑𝑖=1 𝑤𝑖
   Therefore, the first step will be to create a matrix of comparisons of criteria. Each of the selected
system quality criteria will be compared in pairs.

Table 3
A matrix of comparisons of criteria
                K1      K2          K3         K4            K5        K6          HF            BB
     K1        1.00    0.50        1.00       0.25          0.14      0.20        0.39          0.05
     K2        2.00    1.00        3.00       0.33          0.20      0.50        0.76          0.10
     K3        1.00    0.33        1.00       0.50          0.33      0.50        0.55          0.07
     K4        4.00    3.00        2.00       1.00          0.33      0.50        1.26          0.17
     K5        7.00    5.00        3.00       3.00          1.00      2.00        2.93          0.39
     K6        5.00    2.00        2.00       2.00          0.50      1.00        1.65          0.22

    After constructing a matrix of criteria comparisons, it is necessary to build a matrix of comparisons
of alternatives to the requirements on a similar principle. Such matrices will be created for each
criterion, as well as for the primary goal.

Table 4
Matrices for each criterion
  Persuasiveness          A1            A2            A3            A4          HF             BB
        A1               1.00          0.50          0.33          0.50        0.54           0.12
        A2               2.00          1.00          0.50          1.00        1.00           0.23
        A3               3.00          2.00          1.00          2.00        1.86           0.42
        A4               2.00          1.00          0.50          1.00        1.00           0.23
 Competitiveness          A1            A2            A3            A4          HF             BB
        A1               1.00          3.00          3.00          0.50        1.46           0.30
        A2               0.33          1.00          0.50          0.25        0.45           0.09
        A3               0.33          2.00          1.00          0.25        0.64           0.13
        A4               2.00          4.00          4.00          1.00        2.38           0.48
    Flexibility           A1            A2            A3            A4          HF             BB
        A1               1.00          4.00          3.00          2.00        2.21           0.45
        A2               0.25          1.00          2.00          0.33        0.64           0.13
        A3               0.33          0.50          1.00          0.25        0.45           0.09
        A4               0.50          3.00          4.00          1.00        1.57           0.32
     Stability            A1            A2            A3            A4          HF             BB
        A1               1.00          0.25          0.50          0.33        0.45           0.09
        A2               4.00          1.00          0.50          0.20        0.80           0.17
        A3               2.00          2.00          1.00          0.50        1.19           0.25
        A4               3.00          5.00          2.00          1.00        2.34           0.49
     Accuracy             A1            A2            A3            A4          HF             BB
        A1               1.00          0.50          0.25          0.25        0.42           0.08
        A2               2.00          1.00          0.25          0.25        0.59           0.12
        A3               4.00          4.00          1.00          1.00        2.00           0.40
        A4               4.00          4.00          1.00          1.00        2.00           0.40
     Security             A1            A2            A3            A4          HF             BB
        A1               1.00          2.00          0.33          0.17        0.58           0.10
        A2               0.50          1.00          0.25          0.14        0.37           0.07
        A3               3.00          4.00          1.00          0.50        1.57           0.28
        A4               6.00          7.00          2.00          1.00        3.03           0.55
    main goal              A1             A2           A3           A4             HF              BB
       A1                 1.00           1.00         0.50         0.50           0.71            0.17
       A2                 1.00           1.00         1.00         0.50           0.84            0.20
       A3                 2.00           1.00         1.00         1.00           1.19            0.29
       A4                 2.00           2.00         1.00         1.00           1.41            0.34

    At this stage, all the necessary data for the formation of the final table are obtained. The last step is
to create a matrix for comparing types of information systems.

Table 5
A matrix for comparing types of information systems
                  K1           K2          K3        K4                 K5           K6        Significance
 Alternatives
                 0.05         0.10        0.07      0.17               0.39         0.22          factor
      A1         0.12         0.30        0.45      0.09               0.08         0.10           0.14
      A2         0.23         0.09        0.13      0.17               0.12         0.07           0.12
      A3         0.42         0.13        0.09      0.25               0.40         0.28           0.30
      A4         0.23         0.48        0.32      0.49               0.40         0.55           0.44

   According to the results of this table, the following results were obtained:
      Decision support system. A1 = 0.14;
      Intelligent information retrieval system. A2 = 0.12;
      Calculation and logic system. A3 = 0.30;
      Information and reference system. A4 = 0.44.
   According to the results of the comparison, the most beneficial system is the Information and
Reference System.

3.2.    Concretization of system functioning
    The second part of the system analysis of this work is to build a context diagram to detail the system's
structure. Among the alternatives, the IDEF0 functional diagram was chosen. The process of describing
at this stage requires the diagram construction itself, and it is detailing to the first and second levels.
The context diagram of IDEF0 is given in Fig. 7.
    The primary process in this chart is "Check the product for authenticity". This process summarizes
all the structures of the lower levels of the hierarchy. It determines system inputs (arrows on the left),
system outputs (arrows on the right), factors of influence (arrows at the top), resources (arrows at the
bottom). Consider each of the types in more detail. System inputs define the data or objects that a system
needs to get started, and the system uses that to get a unique result. The information of the developed
techniques are:
        Manufacturer link. Since the general system is a set of software implementations of different
    manufacturers, the client's correct functioning requires a reference to a specific manufacturer.
    Depending on this, the behaviour may change.
        Serialized product key. A unique identifier of a unit of goods that has been encoded for correct
    perception of characters by most data transmission media such as URL links and others.
    The outputs of the system represent the result of the functioning of the system. The outcome can be
one or several. The products can be divided into primary and additional. Additional exits are optional,
so you should not rely on their presence. The outputs of the developed system are:
        Conclusion about the product. The main output shows the buyer's condition, namely whether
    the product has already been used or not. Based on these data, the buyer concludes the authenticity
    of the goods.
        Additional information about the product. The other parameter provides the buyer with general
    data about the product or private data of the buyer about a specific unit of goods. The output depends
    on the software implementation of the manufacturer.
Figure 7: IDEF0 diagram

    Factors influencing the system are the elements according to which the system performs its primary
function and directly or indirectly impacts the outcome of the system. Factors influencing the developed
system are:
        Set of actions on the product. This factor is the history of all transactions performed on the
    product, influencing the processing of goods according to input data.
        Network communications. Many standards and implementations of networks through which
    system nodes communicate with each other affect data transfer paths and algorithms in P2P
    networks.
    System resources are a list of elements involved in the functioning of system processes. They can
be both physical and intellectual. The resources of the developed system are:
        Technologies of serialization and cryptography. These technologies may differ for each
    manufacturer. Participate in the formation and management of keys and digital signatures. Also used
    for data encryption / decryption.
        Blockchain technologies. Provide basic and techniques for secure storage, transmission and
    supplementation of product data at the level of communication nodes in the P2P network.
        Network of nodes. Consolidation of all available manufacturers into one P2P network used for
    data exchange, updating and reliability.
        Data warehouse. Unlike a shared blockchain, the data warehouse is personal to each
    manufacturer. It is used to store information that is not written to the blockchain or is subject to
    change.
    After that, the context diagram is detailed to the first level. Finally, the decomposition diagram is
shown in Fig. 8. The result is a model consisting of 4 processes:
        Connect to the manufacturer
        Check the key for validity
        Update blockchain status
        Check the condition of the goods
    In general, even such a high level of process hierarchy allows conveying in sufficient detail the
structure and method of operation and use of the system
    Since the diagram in Fig. 7 contained only one process, its specification has the same inputs, outputs,
influencing factors and resources. Each process controls its elements, which may be different for each
function. Between the processes, there are intermediate outputs that allow you to start a new approach
and link them together in a single chain or organize the branching of processes.
Figure 8: Decomposition of the primary process

    The decomposition diagram also contains the branching of the elements. If necessary, any aspect
can be applied simultaneously to all diagram processes by branching. We decompose and detail each
of the methods listed above. The Connect to Manufacturer process is the first process of decomposing
the primary process and acts as an entry point. Because the system consists of a plurality of vendor
nodes integrated into a P2P network, the first step in the application will be to connect to a specific
vendor. The link plays the central role in this process to the manufacturer, through the search and
identification is carried out. In addition, the process takes a serialized key as input and outputs the
manufacturer's environment, the influencing factor on which other behaviour depends. The
decomposition of the process is shown in Fig. 9.
    This decomposition diagram contains four processes:
        Find a host. The process of finding a host by link depends on the organization of network
    communications. The output is a specific host found on the network.
        Establish a connection. This process establishes a connection between the client and the host.
    The type of connection depends on the client, the received host, and the network communications.
    The result of the process is an established connection that can be used for data exchange.
        Send data. The process is data exchange between the client and the host. The data to be sent is
    the serialized key of the product, which is the process's input. Connections and network
    communications affect how data is transmitted. The output is the sent data.
        Accept host data. Receiving data is from the client based on network communications. The
    output of the process is the manufacturer's environment, which is then used to determine the
    implementation of subsequent operations.
    The "Validate Key" process is a kind of filter that receives, converts and filters data. It is a second
process because it requires a manufacturer's environment. The main goal is to get the key and convert
it into an easy to perceive format by different algorithms and pass it on. All data that do not meet the
requirements at any stage of the process are irrevocably eliminated. The product key, which is the output
of the process, is necessary for the operation of the following two approaches.
    The decomposition of the process is shown in Fig. 10.
Figure 9: Decomposition process "Connect to manufacturer"




Figure 10: Decomposition process "Connect to manufacturer"

  The resulting diagram contains the following processes:
      Deserialize the key. The function receives a serialized access and converts it from an easy-to-
  transmit format to an algorithm-friendly format. The implementation of the process depends on the
  environment of the manufacturer and uses serialization technologies. At the output, we get a
  deserialized product key.
      Check the critical structure. The process uses the obtained deserialized key and verifies that it
  is a valid cryptographic key built according to the necessary algorithms. The manufacturer's
  environment affects this process. The output is the correct key. All incorrect keys are eliminated.
      Find the key in the manufacturer's data warehouse. Searches the manufacturer's database is for
  the access obtained as a result of the previous process. The manufacturer's environment affects the
   organization of data and behaviour in cases of finding and not finding the product. The way out is
   the key to the found goods.
   The Update Blockchain Status process is the third process among the IDEF0 chart decomposition
processes. It can be performed simultaneously as the previous one, but it is performed synchronously
to prevent unnecessary actions. The purpose of the process is to find the nodes of the manufacturers
with the most up-to-date blockchain, request updates from them, and update your blockchain with the
correct update. The result is an updated blockchain that the following processes can work.
   The process decomposition diagram is shown in Fig. 11.




Figure 11: Decomposition of the "Update blockchain status" process

   The developed diagram contains four processes:
       Update the list of nodes. The process does not use an empty product key as a trigger to start
   operations. Loads a list of P2P network nodes is by communicating with neighbouring nodes or
   contacting a dedicated server. Network communications affect the nodes obtained during the
   download process. The output is a list of updated nodes.
       Download blockchain updates. Monitors loaded P2P nodes in search of nodes with the most
   significant number of blocks in the blockchain. Gets the blockchain update from the node with the
   highest priority. The solution is to update the blockchain. Network communications affect the
   download process.
       Validate the update. Different end devices can be P2P network node. Among them may be
   attackers who seek to replace/distort the data, so each update received is checked for validity. Uses
   manufacturer data store and blockchain technology is for the verification process. A valid update is
   a way out of the process.
       Attach the update to the main blockchain. After receiving the correct update, you must add the
   update blocks to the manufacturer's main blockchain stored in its repository. The connection is
   performed using blockchain technologies. The output of the process is an updated blockchain that
   reflects the most current status of goods.
   The process "Check the condition of the goods" is the final process, which results from the cycle
"Check the goods for authenticity". One way or another, the process requires data obtained in previous
methods or their derivatives. The process is responsible for collecting the necessary data in the
blockchain according to the input parameters, processing this data to obtain the result, and performing
additional actions to acquire other data about the product, which will be similarly sent to the customer.
   The decomposition of the process is shown in Fig. 12.
Figure 12: Decomposition of the process "Check the condition of the goods"

   The developed diagram consists of the following processes:
       Find the correct transactions by key. Scans the blockchain and selects all transactions, the
   sender or recipient of a product with a permit received from the transaction input. Uses the updated
   blockchain for search is Blockchain technologies search. The way out is the transactions found.
       Get and decrypt product data. Analyzes the received transactions for encrypted data and
   translates them using the product key. Uses cryptography and blockchain technologies to manipulate
   data. At the output, we receive additional data about the product.
       Calculate the balance of goods. The most critical process is to calculate the condition of the
   product using the received transactions. With the blockchain technologies help and according to the
   executed transactions, the process gets the goods balance and sends the conclusion to the client.

3.3.    Building a hierarchy of tasks

   The last stage of system analysis is to build a diagram of the hierarchy of tasks, which reflects the
system's structure in the form of an order. The diagram is given in Fig. 13.




Figure 13: Task hierarchy diagram
    There are several ways to represent such a chart. A tree structure was chosen to perform this work.
The diagram is made based on the developed functional diagram. The main task is to "Check the
authenticity of the product". It consists of the following subtasks:
    Connect to the manufacturer. It consists of the following subtasks:
        Find a host;
        Establish a connection;
        Send data;
        Accept host data.
    Check the key for validity. It consists of the following subtasks:
        Deserialize the key;
        Check the critical structure;
        Find the key in the manufacturer's data warehouse.
    Update blockchain status. It consists of the following subtasks:
        Update the list of nodes;
        Download blockchain updates;
        Validate the update;
        Attach the update to the main blockchain.
    Check the condition of the goods. It consists of the following subtasks:
        Find the correct transactions by key;
        Get and decrypt product data;
        Calculate the balance of interests.
    During the second section of the work, a system analysis was performed for the topic "Information
system for the authenticity of goods based on blockchain technology." As a result, a tree of goals of the
system was constructed, which allowed to allocate them to a hierarchical structure to obtain aspects,
subaspects and criteria. Based on the criteria, the type of system was selected using the method of
analytical hierarchy. The kind of system established is the Information and reference system.
    After that, to detail the system's structure, a functional diagram IDEF0 was constructed, and this
diagram was decomposed to the first and second levels. The result is a detailed structure of processes
and system resources. The final stage of the section was to build a diagram of the processes hierarchy
in the form of a tree structure, which allowed to consider the system in problems and subtasks.

3.4. Software tools for solving the problem
3.4.1. Selection and substantiation of means of problem-solving
    At this stage, it is necessary to analyze the available tools for solving the problem and choose the
best strategies for use in the implementation of the information system. To form a set of tools, you need
to determine the issues that need to be solved. So the main tasks are the following:
        It would help if you created software that allows you to operate data and blockchain in a
    dialogue mode with the user interface.
        The developed software must have high performance of arithmetic and algorithmic operations,
    be flexible, and adjust and scale.
        The developed software must network connectivity to other applications, particularly the same
    software object on other end devices, for their integration into a P2P network.
        It would help if you created a P2P server to control the exchange of information between nodes.
        You need to create a client application in the form of a mobile application or website.
    After the generated list of tasks, the selection of tools and technologies for their solution begins.
First of all, we choose the technical means for the implementation of the leading software application.
The technologies used in creating the program are as follows: Java, Spring Boot, JavaFX, GSON,
Maven. The same set of technologies was used to implement the P2P server and implement the website's
server part. The following technology stack was used to create the client part: HTML, CSS, JavaScript.
    First of all, you need to choose the primary programming language. Possible options include Java,
Python, C ++, C #. To achieve high performance, the language must be compiled. From the available
options, the Java programming language was chosen.
    Java is an object-oriented programming language developed by Sun Microsystems, which
eventually became the property of Oracle. Programs created using this language are compiled into
bytecode, which allows you to achieve high performance. Java is compiled into unique code that is
recognized by a Java virtual machine (JVM). Thanks to which programs can be run on any operating
system that supports JVM. This multi-platform is a big plus for the developed system, as it allows you
to build clients and servers for different platforms [22]. Java is also object-oriented, which will let the
developed method to be flexible and scalable. Developing software using a pure programming language
is a very complex and costly task. That is why it is necessary to introduce support for development tools
and aids [23]. The first essential tool should be a framework for centralized object management. Modern
corporate programs are extensive and consist of hundreds of classes. With such an organization, the
program can quickly become highly connected and unscaled. To avoid such consequences, the program
must follow the following rules:
        Program classes should be weakly connected (Low Coupling);
        Each class should have only one duty (Single Responsibility Principle) [24].
    When one object creates another object, it performs the duty of creating objects, i.e. according to the
SRP, it should not be engaged in anything other than the construction of objects. Also, objects perform
several functions at once without even considering the creation of other objects. To help in this situation
come three design templates: strategy, control inversion and injection of dependencies.
    Strategy is a design template that allows the class to expand its functionality by delegating
additional work to ancillary objects. Thanks to this template, all classes will have one primary
responsibility, and all others will be delegated.
    Dependency Injection is a design template that changes the order of assignment of auxiliary objects
to the main. The class does not create additional objects itself but only declares containers for them.
The control program must inject other objects into the main. In this way, the object avoids the obligation
to construct objects.
    Inversion of control is a design template, which is a module that registers and constructs program
objects. This template allows you to automate the process of injection of dependencies, thereby
significantly reducing the connectivity of the program [25].
    The program's high flexibility and scalability can be achieved Using these design templates. 2
possible frameworks were selected for the developed system: Google, Guice and Spring Boot. Of
which we chose the latter because of its greater functionality [26].
    The next step is to choose a tool to create the user interface. Such devices for the Java programming
language are small and consist of Swing and JavaFX[27].
    Both tools allow you to create a high-quality user interface, and both were developed under Oracle's
guidance. As of version 9 of Java, JavaFX is no longer part of the main JDK development package and
is being developed separately from Oracle. JavaFX was chosen for this work because of its convenience
and higher functionality, particularly the ability to create designs in FXML files with XML mark-up
when Swing can only generate and populate components programmatically.
    One of the processes, the manual implementation of which requires a lot of extra time, is serialization
and deserialization. Serialization is converting an object into a byte or character format convenient for
transferring in non-Java environments. Deserialization is the reverse process, i.e., converting a character
or byte format back into a program object. The symbolic data transmission format was chosen for this
program, JavaScript Object Notation (JSON) [28], because it is easy to implement and easy to read.
It is required to track and demonstrate intermediate program results.
    Possible implementations of this technology are Google GSON [29] and Jackson. GSON was
chosen because of its higher popularity, which provides more active work on the software product.
    For convenient development and ensuring the correct interaction of all software components, it is
advisable to use one assembly system. These systems automatically compile and assemble all modules
into one software package and control all parts and the main product. There are three following systems
for Java: Ant, Maven and Gradle. Today, Ant is an outdated system. Of the two modern systems, was
chosen Maven [30] due to the high prevalence of its repositories. Although Gradle is a more modern
and advanced system, not all components are compatible with it.
    One of the critical points in the development of the main program is network communications. The
required method is data exchange using the TCP protocol. Unlike UDP, TCP[31] monitors the data
sent for possible losses, which is necessary for a secure and accurate system. One way to implement
such communication is to use HTTP application layer protocol because it is based on TCP. In addition,
there are many frameworks for Java that allow you to implement such functionality quickly.
    Nevertheless, for executing all P2P communications, the standard Java functionality was chosen to
create Socket / Server connections. This technique allows you to establish a channel between the client
and the server, which can both listen and edit. This approach is necessary for implementing a P2P
network because higher-level protocols do not regulate the communication of such a connection to be
arbitrary for the developed product.
    Although the HTTP protocol was implemented to implement the P2P network, it is an integral part
of the webserver. For the client application, an option was chosen on an Internet site that communicates
with the server using the HTTP protocol. HTTP is an application layer protocol based on the TCP / IP
protocol stack. Communication between the server and the client is performed through a request-
response template. The client generates a request, fills it with data and sends it to the server. In turn, the
server processes the request and sends a response to the client. Communication takes place using one
of the following methods: GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, TRACE,
CONNECT [32]. In most cases, the first four methods are used.
    There are several basic ways to implement such a server, but they are all based on a Servlet container.
ServletIs a software unit (object) that processes a client request in a separate thread. The most popular
implementation of the Servlet container is Tomcat [33]. But Spring Boot already used in the developed
program contains an extension over the standard behaviour of Tomcat, which increases its functionality
and simplifies interaction with other components of Spring Boot, which is why this tool is chosen for
the implementation of the webserver.
    In turn, the client part is a web application. Any website is based on three leading technologies:
HTML, CSS, JavaScript. This stack of technologies has no relevant analogues today, so the choice is
quite simple. At the beginning of the development of the Internet, various tools could be used to create
a site, but they were all pushed out of the market over time.
    HTML is a hypertext markup language. Allows you to build the framework of the future site using
a set of predefined markup tags. At this stage, the site is not yet stylized and contains only the content.
Although each tag can be given properties manually, it is not recommended. There is a specialized CSS
language for such purposes.
    CSS is a language of cascading tables and styles. Based on the name, this language performs the
function of stylizing the content of the site. This process is as follows:
         The required tags are selected using selectors. Many selectors are defined for this language,
    such as selectors by tag name, class, attributes, content, etc.
         Styles are already defined for a specific selector. As a result, it is possible to stylize many blocks
    at once, avoiding the manual stylization of each tag.
    JavaScript is a scripting language that is executed every time the site is launched. Used to perform
is all the site's logic and ensure user interaction with the website and for asynchronous communication
with the server. A language execution environment, such as a browser, usually restricts a language's
access to the owner's device resources, so visiting websites is utterly secure because dangerous scripts
have been prevented from running. Since the language is a script, the user can call new commands
directly while using the site [34]. Once the technology stack has been formed, it is time to choose
software development and testing environments. The first such environment should be developing,
compiling and running code in the Java programming language. Today's main competitors in the market
are Eclipse and JetBrains IntelliJ Idea. NetBeans used to be actively involved in this fight, but now its
market share is minimal. A general overview of the previous tools shows that these are compelling and
functional tools. A more detailed comparison is given in Table 6.

Table 6
Comparison of IntelliJ Idea and Eclipse
           Parameters                         IntelliJ Idea                              Eclipse
      System requirements                At least 2 GB of RAM                   At least 0.5 GB of RAM
      Distribution method             Free with the paid version                          Free
           Debugging                 An advanced set of debugging              Standard debugging tools
                                                  tools
             Plugins                          750+ plugins                       1250+ plugins
          Autocomplete                         Automatic                  Using the keyboard shortcut
                                                                                  Ctrl + Space
           Productivity                 Optimized for indexed                 Faster at high loads
                                             operations
           Refactoring                 An advanced set of tools            The standard set of tools
             Design                   Modern design, easy to use           Outdated and overloaded
                                                                                    design
           Orientation                 Small and medium projects                 Big projects

    A student license for the software product IntelliJ Idea Ultimate Edition was obtained to perform
this work [35]. A second necessary tool is a tool for debugging and testing a client web application.
Most browsers today have built-in tools designed for this. The most popular of these are Google
Chrome, Firefox and Opera. Among the tools listed above, the choice fell on Google Chrome because
of its functionality and ease of use.


3.4.2. Technical characteristics of selected software development tools
   All hardware and software in paragraph 3.1. are used to perform this work in a specific configuration.
Each of them contains unique parameters that characterize a particular application. Most tools include
features such as product version, developer, system requirements, etc. For selected software products,
we give their detailed characteristics. Technical characteristics of the Intelli Idea are shown in Table 7.
Google Chrome specifications are listed in Table 8.

Table 7
Technical characteristics of IntelliJ Idea
               Attribute                                            Value
             Date of issue                                      03/27/2019
            Product version                                        2019.1
          Subscription version                                Ultimate Edition
                Owner                                             JetBrains
        Development language                                         Java
           Operating Systems               Microsoft Windows 10/8/7 / Vista / 2003 / XP, OS X, Linux
                 RAM                                       2 GB recommended
            Hard disk space                                    At least 1.3 GB
    The minimum version of the JDK                                    1.8
                License                                          Apache 2.0

Table 8
Google Chrome specifications
           Attribute                                      Value
         Date of issue                                 11/02/2020
        Product version                              86.0.4240.185
             Type                                  The current is stable
            Owner                                      Google LLC
   Development languages                   C ++, Assembler, Python, JavaScript
      Operating Systems      Microsoft Windows 10/8/7 / Vista / 2003 / XP, OS X, Linux, Android
             RAM                                         512 MB
        Hard disk space                                  350 MB
            License                                        BSD
   Technical characteristics of Java are given in Table 9.

Table 9
Technical characteristics of Java
                                Attribute               Value
                               Date of issue        07/16/2019
                             Product version          SE 11.0.4
                                   Type              Open JDK
                                  Owner          Oracle Corporation
                        Development languages       C, C ++, Java
                           Operating Systems       Multiplatform
                                   RAM                 128 MB
                             Hard disk space           124 MB
                                 License      GNU General Public License

   Technical characteristics of Maven are given in Table 10.

Table 10
Technical characteristics of Maven
               Attribute                                   Value
             Date of issue                              11/22/2015
            Product version                                 3.6.3
                 Type                              The current is stable
                Owner                           Apache Software Foundation
        Development languages                               Java
           Operating Systems       Microsoft Windows 10/8/7 / Vista / 2003 / XP, OS X, Linux
                 RAM                                      128 MB
            Hard disk space                                64 MB
    The minimum version of the JDK                           1.7
                License                                 Apache 2.0

   The list of versions of used libraries and frameworks is given below:
       Spring Boot - v.2.4.2. Developer: Pivotal Software;
       JavaFX - 13. Developer: Sun Microsystems;
       GSON - v.2.8.6. Developer: Google LLC.

3.4.3. Blockchain and means of its implementation

    The most complex and large-scale part of this work is the development of blockchain functionality.
    Blockchain is a distributed database, which implies a chain of interconnected blocks, as the name
suggests. This technology was first introduced in 1991 by Scott Stornett and Stuart Haber. Their work
described the possibility of creating secure documents, which were combined into a structure of
cryptographically protected linked blocks. Today, blockchain has become very common. It is used in
many areas of everyday life, especially in cryptocurrencies such as Bitcoin, Ethereum, Binance Coin,
Tether, Bitcoin Cash, Litecoin and others [36]. The principle of operation of the blockchain is shown
in Fig. 14. The main qualitative characteristic of this technology is the security and transparency of such
a data structure because you can only add new blocks to the chain of blocks without the ability to edit
them. This means that any data that enters the blockchain becomes visible to all its members and
remains there in its original format throughout the blockchain existence. There are many blockchain
implementations, so its behaviour and characteristics can often vary from one product to another. The
basis for this work was the first successful and most famous implementation of the blockchain - Bitcoin.
Figure 14: Principles of blockchain operation

    Block is the central structural unit of the blockchain. The only operation to change a blockchain is
to add a new block to an existing chain. Nodes, blockchain networks are engaged in the creation of
blocks. In addition to being a structural unit of a chain, its most important function is to be a container
for data that must be immutable.
    The block consists of the title and primary data. The block header is also called its metadata. This
division was created since prolonged use of the blockchain can reach substantial sizes. So the
cryptocurrency Bitcoin today occupies more than 200 GB. It is not a problem for specialized fixed
devices, but downloading 200 GB of data can be a problem for mobile devices. The block was divided
into a header containing the minimum required data set and the central part of optimising. Due to this,
there is an opportunity to develop mobile clients that work only with block headers. Such mobile clients
have one disadvantage. If necessary, they have to download the required data, and when using such a
client, it is essential to make sure that this download is carried out from a reliable source. The structure
of the block is given in Table 11. Thus, the size of the block header is 112 bytes. Next, consider each
of the components in more detail [37].

Table 11
Block structure
                            Field                                  Size
                                                   Title
                  Hash of the previous block                    32 Bytes
                          Block hash                            32 Bytes
                          Hash root                             32 Bytes
                        Creation time                            8 bytes
                    Appendix (nonsense)                          8 bytes
                                                 Main part
                           Hash tree           It depends on the number of transactions
                     List of transactions             Limited to implementation

    Block Hash is a unique block identifier obtained by passing a block header through a hash function.
The hashing algorithm that is used to perform this work is SHA-256. The algorithm was developed by
the US National Security Agency and generated a 256-bit hash for any data.
    To form a chain, the blocks must be interconnected in a certain way. Each block contains a reference
to the previous block in the form of Previous Block Hash. As a result, having the last block, it is
possible to trace the initial block, moving by previous hashes. The hash of the last block is part of the
data on the basis of which the hash of the current block is calculated. In this way, protection against
data distortion is achieved. If you change the data of any blockchain block, all subsequent blocks
become invalid.
    Hash root (Merkle root) is the root of the hash tree. A hash tree (Merkle tree) is a tree built on
the hash of transaction values. The tree is made according to the following algorithm:
         Construction begins with the leaves of the tree, which are the hashes of each of the submitted
    transactions;
         Transaction hashes form a queue;
         Two elements are selected from the queue, and on their basis, a parent node is created;
         The parent node is created by skipping the concatenation of children's hashes through the hash
    function;
         The resulting node is added to the queue of the next stage;
         The operation is repeated until the current queue ends, after which the queue of the next step
    becomes current;
         The general algorithm is repeated until there is one element left in the final queue. It is the root
    of the tree.
    Thus, each parent node is a hash of the child node hashes [38-40].
    This tree is used to save the computing resources of the device. When checking a block for validity
or checking that a transaction belongs to a block in a mobile client, it is necessary to calculate the hashes
of all transactions. The number of transactions in the unit can reach several thousand, so the calculation
of several such functions negatively affects the program's performance. When using a hash tree, the
complexity of the operation of checking the transaction belonging to the block is O (log (n)), which
with a large number of transactions gives a significant advantage over O (n).
    Typically, a hash tree is used even with a small number of block transactions.
    Time of creation (Time) - time showing the exact date of creation of the block served in
milliseconds. Creating a block and the time of its writing to the blockchain can differ significantly,
which is why the blocks of the chain do not necessarily have to go in chronological order.
    Application (Nonce) - a specific numerical value that is added to each block. This numeric value is
the result of block mining. This number does not affect the block's content but is only an application
that makes a difference in determining the hash of the block.
    Blockchain nodes always accept only the longest chain of blocks. All others are considered irrelevant
and are discarded. The blockchain is already protected from data distortion by hashing it, but what
prevents an attacker from creating a long chain of blocks so that other nodes will take the fake
blockchain for real? An algorithm was developed to avoid such a situation
    Proof-of-Work. The algorithm is that the creation of each block must be accompanied by specific
resource and time costs of the processor. The process that provides such costs is
    Mining (Mining). Mining a block means selecting such a value None that the block hash starts with
a certain number of zeros. The number of zeros that must be at the beginning of the hash is determined
complexity of mining. Complexity is a configuration parameter that can be used to control the duration
of mining. There are two main algorithms for selecting the value of Nonce: iteration and the use of
random numbers. Random numbers allow you to run this algorithm in parallel in multithreading mode
to increase mining productivity. Thus, to create a fake circuit longer than the current one, it is necessary
to perform Proof-of-work for each new circuit block. If you take 10 minutes for the length of mining
and try to compromise a blockchain with a size of 1000 blocks, it will take 10,000 minutes. It makes
the possibility of such attacks virtually impossible.
    The primary data of the block are its transactions. Transaction stores protected data that can interact
with each other. The person who creates the block (miner) is not necessarily the owner of the
transactions. The node receives transactions from other nodes, combines them into one block and adds
them to the blockchain. The content of the transaction can be anything. In the Bitcoin system and this
work program, the filling in the numerical balance transfer form from one purse to another is used. The
transaction consists of transaction id, sender address, recipient address, transferred balance, inputs,
outputs, additional data and electronic digital signature. Consider each of the elements in more detail:
    Transaction Id is its unique identifier, which is assigned after its creation.
   Sender and recipient addresses and are the public keys of the sender's and recipient's wallets.
   A purse is a set of public and private cryptographic keys. For the wallet, you can calculate its
balance. The sender uses the wallet to create a money transfer transaction to another wallet. The wallet's
public key is used as its address as well as to verify the digital signature. The private wallet key is used
to create EDS transactions. Public and private keys are generated using an algorithm RSA. The
generation of such keys depends on random numbers. In turn, the algorithm for generating such
numbers must have no patterns.
   RSA is an asymmetric cryptographic encryption algorithm based on the properties of large prime
numbers. The purpose of the algorithm is to encrypt data and create EDS. The algorithm is widely used
today and is used in many applications [39]. An example of the RSA algorithm is shown in Fig. 15.




Figure 15: Example of encryption using the RSA algorithm

    An electronic digital signature (EDS) is a type of signature applied to electronic documents. Such
a signature allows you to confirm the signed data's immutability and establish the author of the
signature. According to the laws of Ukraine, an electronic signature is equated to a non-electronic one.
In a blockchain, such a signature is a guarantee of the immutability of transaction data. If you change
any signature data, it becomes invalid. Any transaction must be signed with an EDS. It is necessary to
establish that the transaction was made by the owner of the sender's wallet, not someone else. The
signature is created using a private key that is known only to the wallet owner. And you can check the
signature with public access that is known to all.
    Additional data is arbitrary data that is written to the transaction. Such data may be unrestricted. In
the developed system, this field is used for the storage of private data of the goods.
    Transferred balance is the numerical value of the balance that the sender wants to transfer to the
recipient in this transaction.
    Each transaction must contain inputs and outputs.
    Transaction input is a new transaction output that contains a specific numeric value that the wallet
owner can operate. The wallet owner cannot send more than the sum of the transaction input values.
Once input is applied, it becomes used and can no longer be used as a transaction input. Inputs are
converted to unused outputs that can be used later.
    The output of the transaction is a numeric value passed from one wallet to another. Such a result
can be spent, i.e. used as the input of another transaction, or unused.
    After the transaction, two outputs are created: the amount sent to the recipient and the input
values balance after sending to the recipient. The balance is sent back to the sender so that he can use
it in subsequent transactions. The amount of new exits is the balance of the wallet.
    To get started, you need to combine nodes into a single network because the reliability of the
blockchain directly depends on the number of users. When implementing the standard, it was decided
to move away from the standard centralized client-server model favouring the decentralized P2P model.
   P2P is a network topology in which each member can simultaneously act as a client, making requests
to one group of nodes and being a server, responding to requests from another group of nodes. Such a
network is not hierarchical, and all its end devices are on the same level. If one of the nodes fails, the
network can still work correctly. The nodes of such a network are called peers.
   There are several ways to organize such a network: decentralized, centralized and mixed.
Decentralized P2P consists only of nodes located on 1 level. To find nodes, adjacent peers are used. In
centralized P2P, there is a server that knows the addresses of the nodes. When communicating, the peers
contact the server to obtain the addresses of other peers. The mixed-method uses both approaches.
   The view of the P2P network is shown in Fig. 16.




Figure 16: Comparison of P2P network and client-server network

    The blockchain each has its local copy of the blockchain. When the node starts working, it scans the
network for the longest chain of blocks. If it finds one, it updates the local copy. When a node creates
a block, it sends that block to all available peers. Both processes are united by one thing - validation.
    Network nodes can include both trusted feathers and attackers who promote fake data. To avoid
blockchain distortion, each node checks all data received on the network for validity. The validation
algorithm goes through each block sequentially and lists all the data, searching for inconsistencies such
as transactions created by the non-wallet owner, distorted block data, etc. Such a check can be slow
with a large number of blocks. When planning the implementation of the blockchain, you must carefully
choose the means of its creation. It was decided to create all the logic in the programming language
Java. To demonstrate the work and structure of the blockchain, it was decided not to use auxiliary
libraries to develop it but to implement it manually. Also, the manual implementation provides more
flexibility in development and controllability.
    The next stage is the selection of auxiliary algorithms and the means of their implementation.
    The hashing algorithm SHA256 was chosen, as it is pretty standard and used in the Bitcoin product,
which became the basis for the developed IP. The algorithm can be conveniently implemented with
java.security Java package. RSA is selected as a cryptographic algorithm, primarily because of its
timely implementation using the package java.security. Its primary analogue was the algorithm
ECDSA, based on the properties of elliptic curves, but the possibility of its performance via Java is
complicated. A tool was chosen to generate random numbers SecureRandom from java.security
package. When selecting the type of network topology, the main criterion was managing nodes for
commercialization. That is why the centralized type was specified.
    As a result of this section of this work, a list of technological and software tools needed to create an
information system for the goods authenticity based on blockchain technology was formed [41-54].
Each of the selected devices was described in detail, justified its choice on the given technical
characteristics based on article analysis [55-67]. Java, GSON, Spring Boot, JavaFX, Maven, HTML,
CSS, JavaScript. IntelliJ Idea and Google Chrome have become software tools for debugging and
testing programs . A detailed principle of the blockchain operation and its related algorithms was given
and a reasonable choice of means of its implementation based on article analysis [68-79].

4. Experiments, results and discussion
4.1. Description of the created software
   The first stage of the fourth section is a description of the created software. The report is executed
according to the GOST 19.402-78 standard "Description of the program".
4.1.1. General information about the program
   The information system for authenticating goods based on blockchain technology consists of two
programs: ProductChain and ProductChainServer.
   The main program is ProductChain, which is run using the executable file "ProductChain.jar". The
program performs the basic logic of the system and consists of three modules:
       Blockchain: the module that is the technological root of the whole system. Responsible for all
   operations related to blockchain logic.
       GUI: the module that contains the user interface of a typical manufacturer's workspace. This
   module is designed only to demonstrate the operation of the system. When transferring the product,
   each manufacturer implements this module at its discretion.
       Webserver: the module contains the logic responsible for the interaction of the client interface
   with the application. This module is designed only to demonstrate the operation of the system. When
   transferring the product, each manufacturer implements this module at its discretion.
   An additional program for the main program is a server that combines the various processes of the
main application. We started using the executable file "ProductChainServer.jar". Program interface
language: English. The size of the executable file "ProductChain.jar": 33,640 KB. The size of the
executable file "ProductChainServer.jar": 254 KB.

4.1.2. Functional purpose
   The implementation of the system is pervasive and consists of various modules. In this regard, we
present the essential functions of the program. Blockchain, GUI and Web server modules are organized
with the help of unique components - managers, each of which is responsible for its area of
functionality. In this way, you can conveniently separate work objects and their behaviour. If desired,
you can change this behaviour without additional edits to work objects.
   TransactionManager:
        initiateTransaction, processTransaction, signTransaction, and commitTransaction: Methods
   are responsible for the transaction's life and perform operations such as creating a transaction, filling
   in data, using EDS, and using a transaction.
        validateTransaction: checks the transaction for correctness verifies the balance and digital
   signature of the transaction.
   TransactionOutputManager:
        updateUnspentOutputs and removeUnspentOutputs: methods are responsible for adding and
   removing selected outputs.
        getUnspentOutputsByPublicKey: allows you to get outputs by output recipient.
   BlockManager - createBlock: is responsible for creating and mining a block according to the
provided list of transactions.
   WalletManager:
        createWallet: method that creates a wallet with a pair of keys.
        sendFunds: using the provided wallet, sends its funds to another wallet.
        getBalance: calculates the wallet balance by calculating unused outputs.
   BlockChainManager:
        init: is responsible for the program initialization process. Performs all start-up actions such as
   creating a base block, base transaction, base wallet, etc.
        requestFromCoinBase: requests funds to the base wallet.
        addTransaction: Adds a transaction to the transaction pool.
        flush: uses available transactions from the pool to form a block and add it to the blockchain.
   ProductManager:
        createProductType and createProductUnit: methods create product types and product units.
        applyProductUnit: adds a unit of goods to the blockchain by sending it one balance.
        consumeProductUnit: consumes a unit of goods by returning 1 balance to the product type.
        isProductUnitConsumed: checks whether a unit of goods is consumed according to the
    following algorithm. If the balance of a unit of goods = 0, then the unit is consumed.
    Miner:
        mineBlock: carries out mining of the block according to the set complexity
        checkBlock: checks whether the block has been mined correctly
    ChainValidator - isChainValid: rebuilds the blockchain from scratch and checks each block for
inconsistencies.
    Sha256HashGenerator - doDataHashing: hashes the received tape according to the SHA256
algorithm.
    MerkleTreeCreator - createMerkleTree: builds a hash tree based on the received list of transaction
hashes.
    RSAKeyGenerator:
        generateKeys: generates random keys using the RSA cryptographic algorithm and the
    SecureRandom random number generation algorithm.
        restoreKeys: restores keys from received byte arrays.
    RSASignatureManager:
        applySignature: creates an EDS based on the received data and a private key.
        verifySignature: checks whether the EDS was created by the owner of the received public key.
    RSAEncryptionManager:
        encrypt: encrypts data using a public key.
        decrypt: decrypts data using a private key.
           Util - class contains methods of conversion and comparison of keys
    BlockChainToFXTreeConverter - convert: converts a blockchain as a JSON object into a tree
interface.
    JavaFXBlockChainInteractionController- this class contains methods that are listeners of
blockchain events. The class serves as a bridge between the network part and the interface part.
    PeerClient:
        sendMethodRequest: sends a request using a socket connection.
        loadBlockChain: downloads the largest blockchain from a P2P network.
        sendBlock: sends the block to all P2P nodes of the network.
        registerPeer: registers the node on the P2P server.
        loadPeerList: gets a list of nodes in the P2P server.
    PeerServer – class that is responsible for the P2P server of the node. The server runs in the
background and accepts all requests from other hosts.
    PeerWorkerThread - class of the P2P server, responsible for receiving requests from other nodes.
    Methods that implement the behaviour of a specific method of the P2P server node implement the
interface PeerServerMethodHandler and abstract class AbstractPeerServerMethodHandler:
        GetBlockChainMethodHandler – class that sends a blockchain on request.
        GetBlockChainSizeMethodHandler – class that provides the size of the current version of the
    blockchain on request.
        SendBlockMethodHandler – class that sends a new block after its successful mining.
    MainController:
        showProduct: The HTTP server method returns an HTML page of public product information.
        consumeProduct: The HTTP server method returns an HTML page of private product
    information and consumes the product in a blockchain. The application.properties file is responsible
    for configuring all processes and methods. This file contains the parameters of various modules,
    which allows you to change the program's behaviour quickly.

4.1.3. Description of the logical structure of the system
   To demonstrate the operation of the blockchain, these software applications are run manually.
   The ProductChain server program is organized as an application that is controlled in a dialogue mode
with a user interface. When you start the program, a download window is displayed, which corresponds
to the initialization of the program in the P2P network. After successful download of the blockchain,
the user gets to the main menu of the program. This menu consists of 4 options: Products, Transactions,
Blockchain, Exit. The first three buttons lead to the launch of the corresponding usage options:
         Products: Opens a scene for viewing and creating product types. This scene is organized in the
    form of a table. Below the table, possible scene options: go back, create product type, available
    product units. Create product type opens a modal window containing fields to fill in a new product
    type. Functional units of goods lead to the opening of a similar tabular scene and units of goods.
         Transactions: Opens the transaction view scene. The scene is organized in the form of a table.
    Below the table is the scene options: go back, update transactions, create and perform block mining.
    The block creation option opens a modal window that requires confirmation of the start of the
    operation. At the time of mining, the window displays the operation screen. After successfully or
    unsuccessfully adding a block, the window shows the status of the operation and the key to close the
    window.
         Blockchain: Opens the blockchain viewing scene. The scene is organized in the form of a tree
    list that can be expanded and collapsed. By default, this list is collapsed, and the blocks in it are
    sorted in descending order.
    The Back button in all scenes plays the previous location in the background opening history.
    The "Exit" key is responsible for closing the program.
    The server part of the application on HTTP requests returns HTML pages that cannot interact. The
browser opens these pages and is divided into 2 main blocks: the title and the information part.
    ProductChainServer is a command-line dialogue program. When the server starts, the command line
displays the status of its execution. To close the server, use the key combination Ctrl + C or the
command key to close the command line.

4.1.4. Used technical means

    The program is designed to run on devices such as a personal computer. The program is controlled
in the mode of dialogue with the operator. Devices are used for control: monitor, keyboard, manipulator
type "Mouse". The program is stored on the hard disk. In working condition, the data is stored in RAM.
A network adapter is used for communications. Client requests are executed on both stationary devices
(PCs) and mobile devices. PC requirements:
       Windows 7/8/10 operating system;
       Java software version 11 and higher installed;
       free hard disk space 64 MB;
       free 4 GB of RAM;
       internet access with a bandwidth of 10 Mbps.
    Mobile device requirements:
       Chrome / Opera / Firefox / Safari Internet browser or other browsers that supports HTTP
    communication and ECMAScript6 standard is installed;
       Internet access with a bandwidth of 1 Mbps.

4.1.5. Call and download
   Both ProductChain and ProductChainServer come in a packaged archive. After unpacking, the
programs are launched using the command line and the necessary parameters. The ProductChain
program is called with the following command: java [command line parameters in the form
parameter_name=parameter value] -jar (relative path to the executable file) /ProductChain.jar.
   The ProductChainServer program is called with the following command: java -cp (relative path to
the executable file) /ProductChain.jar com.oprokipchuk.ProductChainServer.Main (command line
parameters as parameter_name=parameter value)
   The browser page is opened by clicking on the appropriate links.
4.1.6. Incoming data
   The input data for the developed software applications are the command line input parameters.
   ProductChain startup options are listed in Table 12.

Table 12
ProductChain command-line options
            Parameter                      Type                                  Default value
     -DWEB_SERVER_PORT            Number within [0, 65535]                           8080
          -DSERVER_IP               Xxxx format string                            127.0.0.1
        -DSERVER_PORT             Number within [0, 65535]                           8001
           -DCLIENT_IP              Xxxx format string                            127.0.0.1
         -DCLIENT_PORT            Number within [0, 65535]                           8101

   Consider the purpose of each of the parameters in more detail:
       WEB_SERVER_PORT. The parameter is responsible for the port on which the application's
   HTTP server is deployed. The specified port must be free, i.e. not occupied by another program. To
   run multiple program processes on the same device, you must use different values for this parameter.
       SERVER_IP. The parameter must specify a valid IP address for the P2P server.
       SERVER_PORT. The parameter must specify a valid P2P server port.
       CLIENT_IP. The parameter is responsible for the IP on which the P2P node is deployed. The
   specified IP address is used when registering a host on a P2P server.
       CLIENT_PORT. The parameter is responsible for the port on which the P2P node is deployed.
   The port must be accessible. Different values are specified to start multiple processes.
   ProductChainServer contains one parameter called port (default value 8001), responsible for the port
on which the P2P server is deployed. The parameters port and SERVER_PORT must match for the
system to work correctly. In the actual application, the standard values of IP parameters need to be
changed because they indicate the local address of the device (localhost).

4.1.7. Output data

    The output of the developed programs is made in the form of a visual display in the appropriate
interfaces. For the ProductChain program, the results are the current status of the blockchain, which can
be viewed in the blockchain scene of the user interface and information about the product and the
product position sent in response to an HTTP request.
    For ProductChainServer, the result is a query history that is displayed on the command line.

4.2. User manual
4.2.1. Introduction

   The information system is designed to establish a relationship of trust between the manufacturer of
the product and the buyer based on verifying this product authenticity.
   Among the developed software are the manufacturer's tools with which he creates products. When
creating a product, unique identifiers are generated for it in the form of public and private keys and the
corresponding links to the manufacturer's web server, which processes HTTP requests for the purchased
product. The manufacturer uses the received links to place two QR-codes.
   The public QR-code is placed on the product packaging. When scanning such a code, the buyer
receives a link through which he receives general information about the product, checks the
manufacturer's resource and finds out whether this product has already been used or not.
   The personal QR code is placed inside the product packaging. A link to such a code leads to the
product activation page, allowing you to get private information about the product.
4.2.2. General information about the program
    The developed software package consists of two applications: "ProductChain" and
"ProductChainServer". The program consists of the leading blockchain module, which provides
constant functionality and auxiliary modules, which are designed to demonstrate typical uses of the
system. Implementations of additional modules differ depending on the manufacturer. The server part
of the program is created using java, spring boot, maven, gson and JavaFX. The website was created
using HTML, CSS, javascript. Any modern browser is enough to run a website correctly.

4.2.3. Classes of solved tasks
   ProductChain is designed to provide product management tools through a dialogue with the
manufacturer's user interface, which allows you to perform the following actions:
       Create / view products and product types.
       Add created products to the blockchain.
       Send the created blocks to P2P network nodes.
       Receive data from P2P network nodes.
       View current blockchain content.
   The server part of the application allows accepting HTTP requests. It is responsible for two actions:
access to public product information (response to a shared link request) and access to private product
information and product activation (response to a personal link request).
   ProductChainServer is a P2P server that integrates client applications into a P2P network. This
program keeps a register of all system nodes and provides information about all registered nodes.

4.2.4. Description of the main characteristics and features of the program
    To use the manufacturer's client application, you must have a personal computer running Windows
and a stable connection and high bandwidth. Like any other interactive program, you must have a basic
set of devices for interaction (keyboard, mouse, monitor). To download and send a large amount of data
requires a good Internet, it directly affects the program's quality. It is also essential to have the mighty
computing power of the PC because the blockchain involves many resource-intensive tasks. First of all,
the mining process should take place as soon as possible because whoever creates the block first, the
block will be valid. All other nodes must cancel mining and start again.
    Each vendor has its implementation of non-core modules, so the availability of some features
directly depends on the availability of the vendor's server.
    To use the system on the buyer's part, access to any of the modern browsers is enough.

4.2.5. Information about functional limitations on the application

    The main indirect limitation on the application is the bandwidth of the Internet and the device's
computing resources. Although minimal resources are sufficient for local use, it will be impossible to
successfully use the application without powerful hardware in the conditions of a real application with
a thousand nodes. When using the program, there is a limit on creating private data for the product in
117 characters. It is due to the peculiarity of the encryption algorithm based on RSA keys. The limit is
increased by using larger keys.
    To maintain the manufacturer's server and the P2P server, you must have a dedicated IP address
service from the provider. As you know, any Internet device can send requests, but only devices with a
dedicated IP can receive requests. Another restriction on the maintenance of such servers is in the ports
used. Such ports must be "open", i.e. the connection to them should not be blocked either by the PC and
OS's internal security systems or by external Internet routing systems and the provider.

4.3.    Analysis of the control example
   To demonstrate the operation of a comprehensive system for the authenticity of goods based on
blockchain technology, we give a control example of use. This example consists of two parts: the actions
performed by the manufacturer when creating and adding goods to the blockchain and the actions
performed by the buyer to verify the authenticity of the goods.
   To start, you need to start a P2P server. Run the server on the command line with the following
command: java -cp ProductChainServer.jar com.oprokipchuk.ProductChainServer.Main port = 8001.




Figure 17: P2P server running

   Caption «Waiting for next connection "signals that the server is ready to start. You can then run the
manufacturer's client application. For the first process, this was done with the following command: java
-DSERVER_PORT = 8001 -DCLIENT_PORT = 8101 -DWEB_SERVER_PORT = 8081 -jar
ProductChain.jar. When you start the application, the download screen appears, which can take a long
time depending on the speed of the Internet and the device's capacity.




Figure 18: ProductChain main menu

   The first step in using the program is to go to the products menu "Products". After the transition,
you can see an empty table of product types and possible options.
Figure 19: Scene of product types

   To create a new product type, press the "Units" key. After clicking, a modal window opens with the
ability to enter new product data. A feature of this window is the ability to record the product type's
keys manually and automatic generation using the "Generate Keys".




Figure 20: Product type creation window

    As a result of creating several types of products, the window for viewing these types will look like
this.




Figure 21: Scene of product types

   At this stage, you need to select a specific product type and press the "Units "to go to particular units
of goods.
Figure 22: Scene of product units

   Every physical commodity is a unit of product. Although different units may have one type of
product, each product unit has unique identifiers to identify the required product. We create several
units of goods using the "Add" key.




Figure 23: Product unit creation window

   There is a specific key for automatic field generation for the product type creation window and for
the product unit creation window. In this case, the field "Public Info and Private Info must be saved.
They will be needed later.




Figure 24: Scene of product units

    It is what the product unit scene looks like after creating multiple instances. The next step is to add
the created data to the blockchain. To do this, return to the main menu and open the transaction scene
using the “Transactions”. Only an empty transaction table will be displayed when you open this scene
because transactions have not yet been created. To automatically make the necessary transactions, you
need to press the "Refresh" key. In Fig. 25 you can see 4 automatically generated transactions. Three
of them correspond to the three created units of goods and have a balance of 1, and the last transaction,
with a balance of 1000, corresponds to the transfer of funds from the base wallet to a specific type of
goods. It is necessary so that the type of product can be created as a unit. After such a transfer, it is
possible to build 1000 units of goods of one type.
Figure 25: Transaction viewing scene

   To create a block based on these transactions and add it to the blockchain, you need to press the
"Create and our new block" key, which leads to the appearance of the modal window "Create Block".




Figure 26: Stages of block creation

   Creating a block is visually divided into 3 stages:
       Notification of how many transactions will be added to the created block. This value depends
   on the number of transactions made and the maximum possible number of transactions in the block.
   In this example, the maximum number of transactions is set to 4, so all transactions fall into the
   block. If there are more transactions, it is necessary to repeat the creation of the block until the full
   application of all transactions.
       The mining stage is the longest stage, depending on the established complexity.
       Block creation status can be both successful and unsuccessful.
   After creating a block, you can go to the main menu and the blockchain scene by pressing the
"Blocks" key.




Figure 27: Block viewing scene
    You can view all the blocks in this scene, and the values are written to the blockchain. By default,
this list is organized into a tree structure, sorted by blocks in descending order, and all its values are
collapsed. With the "Refresh" key, you can update the list of blocks to the current one.
    Now the manufacturer needs to generate QR-codes using any generator based on the saved fields
"Public info" and "Private Info" and place them on the product packaging.




Figure 28: Generated QR-codes

    Then the control example is continued by the buyer of the goods, and the first stage of its application
is the scanning of the public code. Upon receipt of the product before unpacking, the buyer can scan
the external QR code and find out whether this product has already been used and whether this code
leads to the correct manufacturer. In Figure 4.13. shows a view of such a page from a mobile device.
From the received information, it is possible to establish the correct site of the manufacturer,
characteristics of the actual goods coincide with the information on a site, and also the status of the
goods - is not used. Therefore it is possible to conclude that the goods are authentic.
    Otherwise, counterfeit goods are established, and the buyer can either refuse to buy the goods or
apply to the relevant authorities to protect the rights of buyers.
    Because this product is authentic, the buyer opens the package and scans the internal OR code.




Figure 29: The transition to Public Info                   Figure 30: The transition to Private Info
   As a result of scanning the internal QR-code, the buyer receives information related to a specific
product, such as activation codes, promo codes, etc. Here comes the second factor of authentication:
the buyer checks whether the product id from the public and private QR-codes match and scans the
public QR-code again, resulting from which the status of the product changes to "used".




Figure 31: The site as a result of re-transition to Private Info

    After re-scanning the external QR code, the buyer observes the fact that the product is now used. At
the moment, the authentication is completed, and the buyer begins to use the received goods.
    Next, the control example is continued by the manufacturer. The Product Chain application creates
a consumption transaction at the private link, which can be seen in Fig. 13, which must also be added
to the block and then to the blockchain.




Figure 32: Transaction of consumption of goods




Figure 33: 2 Product Chain application processes are running simultaneously

   Because the application is connected to a P2P server, it can send and receive data from other nodes.
   Let's start another process of the client application of the manufacturer working on other ports using
the command: java -DSERVER_PORT = 8001 -DCLIENT_PORT = 8102 -DWEB_SERVER_PORT
= 8082 -jar ProductChain.jar. The new application will no longer have an open blockchain but will load
an existing blockchain from the first node. Both processes contain the same number of blocks. From
this point on, after each new block mining, this block is distributed throughout the blockchain network
so that all its nodes have the most current state. However, the same feature is problematic because if a
node gets a new block in the mining process, it will have to cancel mining and start creating it again.
    To demonstrate this phenomenon, run mining simultaneously on two processes, as shown in Fig. 34.




Figure 34: The result of simultaneous mining of blocks of two processes

   According to the conclusions of each of the blocks, the mining of the first process was unsuccessful,
and the second - successful. In other words, the first process received a new block during mining and
stopped it to attach the block to the local copy of the blockchain and convert the transactions.

4.4.    Research the behaviour of the program
   To optimize further work with the program and the search for opportunities to increase returns by
changing the working environment, we study the system's performance depending on the adjustment of
specific parameters. The first such parameter is the complexity of mining. This parameter specifies the
number of zeros at the beginning of the hash to assume that the job is confirmed. So we investigate the
range of complexity from 1 to 7 (on complexity 8 and more mining on the working device takes too
long). The results of the analysis are shown in Fig. 35.




Figure 35: Graph of the dependence of mining time on its complexity
   Time is given in milliseconds. From this graph, it is seen that with each subsequent complexity
increases the total time several times. It is due to a significant increase in the number of operations that
must be performed during mining. Of course, mining also depends on the capacity of the hardware.
Real devices that are engaged in mining regularly are a set of advanced processors and video cards.
   The dependence of mining time on the processor frequency is shown in Figure 4.19.




Figure 36: Graph of mining time dependence on CPU frequency

   The analysis was performed for the complexity of mining - 5. From the obtained data, the additional
power of the processor can significantly reduce mining time. The next subject of research is the creation
of a block. The main resource load this stage is the calculation of hash functions for transactions, for
the block, and the construction of a hash tree. The results of the study are shown in Fig. 37.




Figure 37: Graph of the dependence of the block creation time on the number of transactions

   From the obtained data, the number of transactions of the unit is its primary resource load. It should
be taken into account when choosing the maximum number of transactions per block.
   The latest study is to identify the dependence of time validation of the blockchain on the number of
blocks. The results of this study are presented in Fig. 38.




Figure 38: Graph of blockchain validation time depending on the number of blocks
     On the received graph, it is possible to observe linear dependence of the time of validation of a
blockchain on the quantity of blocks. It signals that the validation process is not overloaded with
resource-dependent operations. When expanding the blockchain over time, you can count on the
expected duration of the blockchain's validation according to the linear relationship.
     As a result of the implementation of this section, the description of the created software according
to the GOST 19.402-78 standard "Description of the program" was carried out. According to the
standard, information about the software, functions, logical structure, inputs and outputs was prepared.
     A user manual was also generated, which provides information on the use of the system, features
and various limitations. An analysis of the control example was given, which analyzed the sample of
use by both the manufacturer of goods and the buyer.
     Finally, the behaviour of the developed software was analysed depending on the change of mining
complexity parameters and the maximum number of transactions in the application.properties file
block. In addition, the relationship between CPU frequency and mining time and the relationship
between blockchain validation time and the number of blocks was determined. Based on the kept data,
it is possible to make further optimization and system configuration decisions.
     The topic of this work is an information system for the authenticity of goods based on blockchain
technology. Given the current prevalence of commodity-market relations and the damage caused to
them by the counterfeit market, the issue of protection against counterfeiting is becoming increasingly
important daily. Every year, the share of counterfeit goods in the market only grows, as well as the
damage it causes. And this is not only material damage but also damage to the environment and human
health. In the worst cases, such carelessness can lead to death. That is why large companies today are
beginning to invent a variety of solutions to combat counterfeiting. The developed information system
is designed to help buyers of goods identify the original product by placing on the product two scanning
identification codes that lead to information in the secure data structure of the blockchain. This system
is economically feasible for companies producing goods because it can significantly reduce the material
damage caused by manufacturers of counterfeit goods.
     Positive perceptions of this software product by potential consumers of goods are also expected, as
the system will allow users to have exactly what they want - not to come across counterfeits and save
money. An additional advantage will be the use of today's popular technology - blockchain.
     The fight against counterfeiting is actively going on every day, and many ways have already been
developed to identify authentic goods. The most popular are: legislative, the method of developing
recommendations, the method of complicating copying, the method of monitoring suspicious ads and
the method of keeping records of each unit of goods. The developed system belongs to the last category.
The market for the use of anti-counterfeiting methods is relatively developed, as most companies
already use at least one of these methods. Among the analogues of the system, we can highlight the
product Microsoft Aura Ledger, which also uses blockchain technology and comes in the form of
software for manufacturers of goods. The advantage of the developed product is that it unites many
manufacturers into a single network to ensure more excellent reliability and transparency of data and
two-stage identification, which gives greater accuracy. The primary consumers are producers of goods
that suffer material damage from counterfeiters. Such manufacturers want to minimize the impact of
counterfeit products on their profits and maintain the reputation and trust of their customers.
     Competitors are other vendors of anti-counterfeiting software at the same level of protection. Levels
of security in a separate production can be combined. According to existing examples, states have a
positive attitude to combating counterfeiting and are ready to cooperate.
     Given the general state of counterfeiting, as well as the low prevalence of such methods in Ukraine,
we can conclude that it is advisable to develop a strategy of counterfeiting for the Ukrainian market,
which is an improvement of a similar software product (Microsoft Aura Ledger), which has already
gained some popularity abroad. Consumers of the product will be manufacturers of goods, which, when
purchased, will receive a set of necessary software and access to a standard blockchain network.
     Based on the above data, it is developing a new product with related services was chosen for
implementation. As a result of the market analysis, a rather painful problem of counterfeiting in the
goods market was found, so the developed system of the authenticity of goods based on blockchain
technology should receive a positive response from consumers. The use of the latest technologies, such
as blockchain, allows to achieve a very high level of protection of information of manufacturers of
goods and has a positive effect on the desire of buyers to use this system of protection. Many indirect
competitors offer protection against counterfeiting at other levels, but they are not a substitute for the
developed product but complement a comprehensive protection system. The product's analogue is the
Microsoft Aura Ledger counterfeit protection system, which is also based on a blockchain. The
advantages of the presented product are that it is cheaper to implement and uses two-stage identification,
which will allow you to compete for a large share of consumers. The product also provides software
adaptation services for each consumer and consolidation consumers into a single P2P network.
   As a result of this section, a detailed description of the information system for verifying the
authenticity of goods based on blockchain technology in terms of its economic feasibility was complex.
Potential consumers were identified as producers of goods that focus on the medium and low cost of
implementation. Direct and indirect competitors were analyzed, the main one being Microsoft Aura
Ledger. According to the listed advantages of the presented product, it has the potential to obtain the
required market share. In addition, a choice was made as to the strategic product alternatives of both
groups. The strategy of developing a new product with related services was chosen from the first group.
The product development strategy was selected from the second group.

5. Conclusions
    As a result, information system for verifying the authenticity of goods based on blockchain
technology were developed. All the necessary modules have been developed to fully demonstrate the
system's operation, including blockchain modules, the manufacturer's user interface and a web server.
Also implemented P2P server, which allows you to interact with developed software applications. The
issues were studied, system analysis and selection of technical means of implementation were carried
out. After that, the system was created, and its behaviour was investigated. In addition, an analysis of
the economic feasibility of the system was conducted. The article was carried out thanks to the current
condition of counterfeit goods for today, and scales of losses exceeding 300 annually was received.
Billions of dollars, not taking into account the damage to the health of buyers. At the end of the section,
a detailed analysis of existing methods of combating counterfeiting from legislative to technological
was made. The main advantages and disadvantages of each of these methods were identified. Thanks
to this study, the main competitor of the developed system - Microsoft Aura Ledger - was identified.
Based on the existing competitor, the advantages of the developed system in greater transparency,
reliability and low cost of implementation have been established. This paper began with the construction
of the system implementation goals, as a result of which the most critical development criteria were
identified: persuasiveness, competitiveness, flexibility, stability, accuracy and security. Based on these
criteria, the type of system was chosen: information and reference system. After that, the section
continued with the construction of process diagrams and their decomposition in IDEF0 notation. The
area ends with constructing a diagram of the hierarchy of tasks based on the obtained processes.
    The result of the article was the choice of means of implementing the system. First of all, the analysis
was given, and the choice of technological means of development was substantiated. They were the
means of stationary development: java, maven, gson, spring boot and JavaFX. To implement network
communications, it was decided to use the tools of socket-server development of the java programming
language. It was decided to use HTML, CSS and JavaScript to develop the Web part. The development
environment between IntelliJ Idea and Eclipse was then chosen in favour of the first tool. The last stage
was the choice of blockchain implementation technologies and auxiliary algorithms. For this purpose,
standard java programming tools were chosen and RSA, SHA256 algorithms, and a network type - a
decentralized P2P network with a navigation server.
    The paper focuses on the implementation of the system and what is associated with it. Therefore,
this article began with a detailed description of the implemented system, covering aspects such as
general information, logical and functional structures, technical requirements, inputs, and system
outputs. The user's instruction with the description of principles and nuances of application was given.
After that, the analysis of the control example was carried out both by buyers of goods and by
manufacturers. At the end of the section, a statistical study of the program's behaviour was performed
for further optimization based on dependencies such as time, mining complexity, block size, and
processor frequency. The main conclusions of such studies are the need to improve mining algorithms
further and increase the capacity of the device used.
6. References
[1] O. Kuzmin, M. Bublyk, Economic evaluation and government regulation of technogenic (man-
     made) damage in the national economy, in: Computer sciences and information technologies
     (CSIT), 2016, pp. 37-39.
[2] Y. Matseliukh, V. Vysotska, M. Bublyk, T. Kopach, O. Korolenko, Network Modelling of
     Resource Consumption Intensities in Human Capital Management in Digital Business Enterprises
     by the Critical Path Method, volume 2851 of CEUR Workshop Proceedings, 2021, pp. 366-380.
[3] Allison. Behind the industry of counterfeit products in China and lawsuit success cases, 2021.
     URL: https://daxueconsulting.com/counterfeit-products-in-china/.
[4] F. Richter, U.S. Companies Most Affected by Counterfeiting, 2019. URL:
     https://www.statista.com/chart/17407/countries-most-affected-by-counterfeit-and-pirated-goods/.
[5] F. Richter, The Industries Most Affected by Counterfeit Products, 2019. URL:
     https://www.statista.com/chart/17410/counterfeit-and-pirated-products-by-category/.
[6] C. Thompson, Buyer beware: That low-priced, high-end makeup could be counterfeit, and toxic,
     2018. URL: https://komonews.com/news/consumer/buyer-beware-that-low-priced-high-end-
     makeup-could-be-counterfeit-and-toxic.
[7] D.          Law,       Counterfeiting       and      consumer       harm,       2019.      URL:
     https://www.lexology.com/library/detail.aspx?g=34dcef89-4614-4215-8111-95935d554513.
[8] S. Alipour, Ninety Eight Per Cent Of Fake Or Lookalike IPhone Chargers Put Consumers At Risk
     Of Lethal Electric Shock And Fire, 2017. URL: https://www.electricalsafetyfirst.org.uk/media-
     centre/press-releases/2017/12/ninety-eight-per-cent-of-fake-or-lookalike-iphone-chargers-put-
     consumers-at-risk-of-lethal-electric-shock-and-fire/.
[9] B. Casassus, Health agency reveals scourge of fake drugs in developing world, 2017. URL:
     https://www.nature.com/news/health-agency-reveals-scourge-of-fake-drugs-in-developing-
     world-1.23051.
[10] M. Yarovaya, Poddelki na marketpleysakh: kak s nimi boryutsya v YES i chto delat' ukrainskim
     pokupatelyam, 2019. URL: https://ain.ua/2019/03/21/poddelki-na-marketplejsax.
[11] S. Rybachuk, Kontrafakt v e-commerce: pobedit', nel'zya smirit'sya, 2020. URL:
     https://www.retail.ru/articles/kontrafakt-v-e-commerce-pobedit-nelzya-smiritsya/.
[12] Ye. Bashurina, Poddel'naya radost': kak brendy boryutsya s kontrafaktnoy kosmetikoy s
     pomoshch'yu blokcheyna, 2021. URL: https://www.forbes.ru/forbes-woman/420249-poddelnaya-
     radost-kak-brendy-boryutsya-s-kontrafaktnoy-kosmetikoy-s-pomoshchyu.
[13] Group-IB Digital Risk Protection, 2019. URL: https://www.tadviser.ru/index.php/
     %D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82:Group-IB_Digital_Risk_
     Protection_(%D1%80%D0%B0%D0%BD%D0%B5%D0%B5_Brand_Protection).
[14] M.O. Medykovskyi, I.G. Tsmots, O.V. Skorokhoda, Spectrum neural network filtration
     technology for improving the forecast accuracy of dynamic processes in economics, volume
     162(12) of Actual Problems of Economics, 2014, pp. 410-416.
[15] IBM has found a way to defeat counterfeiting, 2018. URL: https://getsiz.ru/ibm-nashla-sposob-
     pobedit-kontrafakt.html.
[16] I Mozul, IBM sozdala portativnyy detektor kontrafaktnoy produktsii, 2018. URL:
     https://itc.ua/news/ibm-sozdala-portativnyiy-detektor-kontrafaktnoy-produktsii/.
[17] Defeating Counterfeiting Begins With Smart Packaging, 2020. URL: https://www.sepioproducts.
     com/blog/2020/06/23/defeating-counterfeiting-begins-with-smart-packaging/.
[18] How holograms can stop counterfeiting, 2014. URL: https://www.packagingdigest.com/smart-
     packaging/how-holograms-can-stop-counterfeiting.
[19] How Smart Packaging In Pharmaceuticals Can Take The Fight To Counterfeit Medicines, 2019.
     URL: https://qliktagsoftware.medium.com/how-smart-packaging-in-pharmaceuticals-can-take-
     the-fight-to-counterfeit-medicines-b9618fe17791.
[20] M. Venkataraman, How Blockchain Can Fight Counterfeiting and Fraud, 2019. URL:
     https://www.globaltrademag.com/how-blockchain-can-fight-counterfeiting-and-fraud/.
[21] P. Bidyuk, A. Gozhyj, Y. Matsuki, N. Kuznetsova, I. Kalinina, Modeling and forecasting economic
     and financial processes using combined adaptive models, volume 1246 of Advances in Intelligent
     Systems and Computing, 2021, AISC, pp. 395-408.
[22] V. Danylyk, V. Vysotska, V. Lytvyn, S. Vyshemyrska, I. Lurie, M. Luchkevych, Detecting Items
     with the Biggest Weight Based on Neural Network and Machine Learning Methods, volume 1158
     of Communications in Computer and Information Science, 2020, pp. 383-396.
[23] R. Martin, Clean Architecture: A Craftsman's Guide To Software Structure And Design. U.S.A.:
     Pearson, 2017.
[24] V. Vysotska, A. Berko, V. Lytvyn, P. Kravets, L. Dzyubyk, Y. Bardachov, S. Vyshemyrska,
     Information Resource Management Technology Based on Fuzzy Logic, volume 1246 of Advances
     in Intelligent Systems and Computing, 2020, pp. 164-182. DOI: 10.1007/978-3-030-54215-3_11
[25] C. Walls, Spring in Action. New York: Manning Publications, 2018.
[26] C. Walls, Spring Boot in Action. New York: Manning Publications, 2018.
[27] S. Grinev, Mastering JavaFX 10: Build advanced and visually stunning Java applications. New
     York: Packt Publishing, 2018.
[28] S. Chaitanya, JSON Tutorial: Learn JSON in 10 Minutes, 2015. URL:
     https://beginnersbook.com/2015/04/json-tutorial/.
[29] M. Aravind, Gson Library, 2017. URL: https://medium.com/@manuaravindpta/gson-library-
     b7d4ef0381e2.
[30] Maven: The Definitive Guide: The Definitive Guide – New York: O'Reilly Media, 2008.
[31] R. Schlager, The OSI Model: simply explained. New York: CreateSpace Independent Publishing
     Platform, 2013.
[32] D.Gourley, B. Totty, M. Sayer, A. Aggarwal, HTTP: The Definitive Guide: The Definitive Guide.
     New York: O'Reilly Media, 2002.
[33] B. Kurniawan, How Tomcat Works: A Guide to Developing Your Own Java Servlet Container.
     New York: Brainy Software, 2005.
[34] C. Aquino, T. Gandee, Front-End Web Development: The Big Nerd Ranch Guide. New York: Big
     Nerd Ranch Guides, 2016.
[35] B. Kommadi, IntelliJ vs Eclipse Complete IDE Comparison, 2019. URL:
     https://medium.com/@bhagvankommadi/hi-team-6d2dee22d8b2.
[36] J. Reed, Blockchain: The Essential Guide to Understanding the Blockchain Revolution. New York:
     CreateSpace Independent Publishing Platform, 2016.
[37] G. Walker, Block Header. A summary of the data in the block, 2016. URL:
     https://learnmeabitcoin.com/technical/block-header.
[38] G. Walker, Merkle Root. A fingerprint for all the transactions in a block, 2016. URL:
     https://learnmeabitcoin.com/technical/merkle-root.
[39] R.       Canty,        Understanding       Cryptography          with      RSA,        2020.     URL:
     https://jryancanty.medium.com/understanding-cryptography-with-rsa-74721350331f.
[40] A. Nagpal, How to create your own decentralized file sharing service using python, 2018. URL:
     https://medium.com/@amannagpal4/how-to-create-your-own-decentralized-file-sharing-service-
     using-python-2e00005bdc4a.
[41] I. Lurie, et al., Inductive technology of the target clusterization of enterprise's economic indicators
     of Ukraine, CEUR Workshop Proceedings, 2019, 2353, pp. 848-859.
[42] V. Lytvynenko, D. Nikytenko, M. Voronenko, N. Savina, O. Naumov, Assessing the Possibility
     of a Country's Economic Growth Using Dynamic Bayesian Network Models, in: IEEE 15th
     International Scientific and Technical Conference on Computer Sciences and Information
     Technologies, CSIT, 2020, pp. 36-39.
[43] V. Lytvynenko, et al., Comparative studies of self-organizing algorithms for forecasting economic
     parameters, Int. Journal of Modern Education and Computer Science, 2020, 12(6), pp. 1-15.
[44] M. Voronenko, D. Nikytenko, J. Krejci, N. Savina, V. Lytvynenko, Assessing the possibility of a
     country's economic growth using static Bayesian network models, volume 2608 of CEUR
     Workshop Proceedings, 2020, pp. 462-473.
[45] M. Grinchenko, O. Cherednichenko, I. Babych, Long-term forecasting technology of
     macroeconomic systems development: Regional aspect, volume 137 of Lecture Notes in Business
     Information Processing, 2013, pp. 49-60.
[46] P. Pukach, K. Shakhovska, The mathematical method development of decisions supporting
     concerning products placement based on analysis of market basket content, in: 14th International
     Conference The Experience of Designing and Application of CAD Systems in Microelectronics,
     CADSM, 2017, pp. 347-350.
[47] V. Ilkiv, Z., Nytrebych, P. Pukach, I. Kohut, B. Pakholok, Order relation on scalar products in real
     linear spaces, in: 15th International Conference on the Experience of Designing and Application
     of CAD Systems, CADSM, 2019, pp. 32-35.
[48] A. Demchuk, V. Lytvyn, V. Vysotska, M. Dilai, Methods and Means of Web Content
     Personalization for Commercial Information Products Distribution, volume 1020 of Advances in
     Intelligent Systems and Computing, 2020, pp. 332-347. DOI: 10.1007/978-3-030-26474-1_24
[49] V. Lytvyn, V. Vysotska, Y. Burov, O. Veres, I. Rishnyak, The Contextual Search Method Based
     on Domain Thesaurus, volume 689 of Advances in Intelligent Systems and Computing, 2018, pp.
     310-319. () DOI: 10.1007/978-3-319-70581-1_22
[50] V. Vysotska, L. Chyrun, L. Chyrun, Information Technology of Processing Information Resources
     in Electronic Content Commerce Systems, in: Proceedings of the International Conference on
     Computer Sciences and Information Technologies, CSIT, 2016, pp. 212-222. DOI: 10.1109/STC-
     CSIT.2016.7589909
[51] V. Vysotska, I. Rishnyak, L. Chyrun, Analysis and evaluation of risks in electronic commerce, in:
     Proceedings of the 9th International Conference on CAD Systems in Microelectronics, 2007, pp.
     332-333. DOI: 10.1109/CADSM.2007.4297570
[52] K. Alieksieieva, A. Berko, V. Vysotska, Technology of commercial web-resource processing, in:
     Proceedings of 13th International Conference: The Experience of Designing and Application of
     CAD Systems in Microelectronics, CADSM, 2015.
[53] V. Vysotska, L. Chyrun, Methods of information resources processing in electronic content
     commerce systems, in: Proceedings of 13th International Conference: The Experience of
     Designing and Application of CAD Systems in Microelectronics, CADSM, 2015.
[54] O. Cherednichenko, O. Yanholenko, O. Kanishcheva, Developing the Key Attributes for Product
     Matching Based on the Item’s Image Tag Comparison, volume Vol-2631 of CEUR Workshop
     Proceedings, 2020, pp. 237-247.
[55] O. Piatykop, O. Proninа, Model Selection of the Target Audience in Social Networks in Order to
     Promote the Product, volume Vol-2604 of CEUR workshop proceedings, 2020, pp. 396-406.
[56] B. Rusyn, L. Pohreliuk, O. Kapshii, J. Varetskyy, A. Demchuk, I. Karpov, A. Gozhyj, V. Gozhyj,
     I. Kalinina, An Intelligent System for Commercial of Information Products Distribution Based
     SEO and Sitecore CMS, CEUR workshop proceedings, 2020, Vol-2604, pp. 760-777.
[57] T. Borovska, D. Grishin, I. Kolesnik, V. Severilov, I. Stanislavsky, T. Shestakevych, Research and
     Development of Models and Program for Optimal Product Line Control, Advances in Intelligent
     Systems and Computing IV, Springer Nature Switzerland AG, 2020, 1080, pp. 186-201.
[58] V. Lytvyn, V. Vysotska, V. Shatskykh, I. Kohut, O. Petruchenko, L. Dzyubyk, V. Bobrivetc, V.
     Panasyuk, S. Sachenko, M. Komar, Design of a recommendation system based on Collaborative
     Filtering and machine learning considering personal needs of the user, volume 4(2-100) of Eastern-
     European Journal of Enterprise Technologies, 2019, pp. 6-28. DOI: 10.15587/1729-
     4061.2019.175507
[59] I. Rishnyak, O. Veres, V. Lytvyn, M. Bublyk, I. Karpov, V. Vysotska, V. Panasyuk,
     Implementation models application for IT project risk management, volume Vol-2805 of CEUR
     Workshop Proceedings, 2020, pp. 102–117.
[60] T. Shestakevych, V. Pasichnyk, M. Nazaruk, M. Medykovskiy, N. Antonyuk, Web-Products,
     Actual for Inclusive School Graduates: Evaluating the Accessibility, volume 871 of Advances in
     Intelligent Systems and Computing, 2019, pp. 350-363.
[61] N. Shakhovska, Consolidated processing for differential information products, in: International
     Conference on Perspective Technologies and Methods in MEMS Design, 2011, pp. 176-177.
[62] N. Shakhovska, O. Vovk, Y. Kryvenchuk, Uncertainty reduction in Big data catalogue for
     information product quality evaluation, volume 1(2-91) of Eastern-European Journal of Enterprise
     Technologies, 2018, pp. 12-20.
[63] V. Vysotska, A. Berko, M. Bublyk, L. Chyrun, A. Vysotsky, K. Doroshkevych, Methods and tools
     for web resources processing in e-commercial content systems, in: IEEE 15th International
     Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT,
     2020, pp. 114-118. DOI: 10.1109/CSIT49958.2020.9321950
[64] V. Kuchkovskiy, N. Shakhovska, Information technology of Blockchain: Database, smart
     contracts, architecture, in: IEEE 14th International Scientific and Technical Conference on
     Computer Sciences and Information Technologies, CSIT, 2019, pp. 55-59.
[65] A. Berko, M. Bublyk, L. Chyrun, Y. Matseliukh, R. Levus, V. Panasyuk, O. Brodyak, L. Dzyubyk,
     O. Garbich-Moshora, Models and Methods for E-Commerce Systems Designing in the Global
     Economy Development Conditions Based on Mealy and Moore Machines, volume Vol-2870 of
     CEUR Workshop Proceedings, 2021, pp. 1574-1593.
[66] M. Bublyk, Y. Matseliukh, Small-Batteries Utilization Analysis Based on Mathematical Statistics
     Methods in Challenges of Circular Economy, volume Vol-2870 of CEUR Workshop Proceedings,
     2021, pp. 1594-1603.
[67] M. Bublyk, V. Mykhailov, Y. Matseliukh, T. Pihniak, A. Selskyi, I. Grybyk, Change Management
     in R&D-Quality Costs in Challenges of the Global Economy, volume Vol-2870 of CEUR
     Workshop Proceedings, 2021, pp. 1139-1151.
[68] A. Berko, I. Pelekh, L. Chyrun, M. Bublyk, I. Bobyk, Y. Matseliukh, L. Chyrun, Application of
     ontologies and meta-models for dynamic integration of weakly structured data, in: Proceedings of
     the IEEE 3rd International Conference on Data Stream Mining and Processing, DSMP, 2020, pp.
     432-437. DOI: 10.1109/DSMP47368.2020.9204321
[69] L. Chyrun, The E-Commerce Systems Modelling Based on Petri Networks, volume Vol-2870 of
     CEUR Workshop Proceedings, 2021, pp. 1604-1631.
[70] A. Berko, V. Andrunyk, L. Chyrun, M. Sorokovskyy, O. Oborska, O. Oryshchyn, M. Luchkevych,
     O. Brodovska, The Content Analysis Method for the Information Resources Formation in
     Electronic Content Commerce Systems, volume Vol-2870 of CEUR Workshop Proceedings, 2021,
     pp. 1632-1651.
[71] V. Kuchkovskiy, V. Andrunyk, M. Krylyshyn, L. Chyrun, A. Vysotskyi, S. Chyrun, N. Sokulska,
     I. Brodovska, Application of Online Marketing Methods and SEO Technologies for Web
     Resources Analysis within the Region, volume Vol-2870 of CEUR Workshop Proceedings, 2021,
     pp. 1652-1693.
[72] V. Vysotska, V.B. Fernandes, M. Emmerich, Web content support method in electronic business
     systems, volume Vol-2136 of CEUR Workshop Proceedings, 2018, pp. 20-41.
[73] L. Chyrun, et al., Online Business Processes Support Methods, in: IEEE 15th International
     Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT,
     2020, pp. 125-133.
[74] A. Kopp, D. Orlovskyi, S. Orekhov, An Approach and Software Prototype for Translation of
     Natural Language Business Rules into Database Structure, volume Vol-2870 of CEUR Workshop
     Proceedings, 2021, pp. 1274-1291.
[75] H. Lipyanina, A. Sachenko, T. Lendyuk, S. Nadvynychny, S. Grodskyi, Decision tree based
     targeting model of customer interaction with business page, CEUR Workshop Proceedings, 2020,
     pp. 1001-1012.
[76] R. Allmendinger, M.T.M. Emmerich, J. Hakanen, Y. Jin, E. Rigoni, Surrogate-assisted
     multicriteria optimization: Complexities, prospective solutions, and business case, volume 24(1-
     2) of Journal of Multi-Criteria Decision Analysis, 2017, pp. 5-24.
[77] I. Oksanych, I. Shevchenko, I. Shcherbak, S. Shcherbak, Development of specialized services for
     predicting the business activity indicators based on micro-service architecture, volume 2(2-86) of
     Eastern-European Journal of Enterprise Technologies, 2017, pp. 50-55.
[78] A.Y. Berko, Methods and models of data integration in E-business systems, volume 10 of Actual
     Problems of Economics, 2008, pp. 17-24.
[79] A. Berko, Consolidated data models for electronic business systems, in: The Experience of
     Designing and Application of CAD Systems in Microelectronics, CADSM, 2007, pp. 341-342.