# A Design Concept for a Tourism Recommender System for Regional Development
## 4 Results
### Blockchain-Based Tourism Product Representation  
The distributed ledger technology (DLT) is a way to ensure reliability, uniqueness, and integrity of digital files, and to enhance data resilience against hacks and cyberattacks [48]. To identify the data blocks in a distributed ledger, a unique identifier being the resulting hash value is used. It is added both to its header and to any transactions with block data. The ledger itself is formed from blocks of transactions linked by the previous block hash included into the data structures of the current block with calculating the hash thereof. In our case, operations to form and change data blocks with user information and tourist preferences in the distributed ledger of their digital avatars, and those with synthesized tourist routes in the distributed ledger of tourism products are termed as transactions. Thus, two chains of data blocks are formed, with the links between thereof being established when selecting tourism products and matching their parameters with tourist preferences. Blockchain data of tourism products contain characteristics of tourist preferences; data on digital user avatars; temporal, spatial, financial, and other logistics data about the tourist route; information about key points with text and graphics (photos, images, animation)materials; audio and video recordings; links to third-party services; information resources for the user convenience when choosing or synthesizing a tourism product. The integrity of the accumulated information in distributed ledgers is ensured by triple hashing. The links of successive entries of each ledger are implemented by two hashes that are calculated both for the main entry and the metadata. Wherein, each calculated hashes is used to calculate another one, and the resulting hash is inserted into the header of the next entry. The third hash pair establishes a link between the two ledgers. When choosing a route for a particular user, the calculated digital avatar hash is inserted into the header of the data block with the selected tourism product, and, conversely, the hash of the selected product is added to the digital avatar data block. Next, the number of tourism product hashes accumulated in the user digital avatar block is used as a tourist experience estimate to be used in tourism rating depending on the number of trips. If the hash is not found in the entry or does not match after being calculated, then the entry is modified. To authenticate user digital avatars and those of tourism products, a smart contract that executes the linearly homomorphic signature (LHS) algorithm of an avatar (product) [44; 45] is used. The verified identifier of a digital avatar or product (unique signature) is synthesized by combining two hash functions:  
1. \(H_{1}\) (\(Id\),(\(X\),\(Y\))), where \(Id\) (digital avatar (product) identifier) and \(X\),\(Y\) (latitude and longitude coordinates of the user location (starting point of the route) are the input data;
2. \(H_{2}\) (\(T\)(\(x\),\(y\))), where \(T\) is a point on the elliptic curve over a finite field with (\(x\),\(y\)) coordinates:  
Figure 3: Stages of the algorithm for developing an individual tourism product. \[l(\alpha,y)\in(\mathbb{R}_{p})^{2}\ \mid\ y^{2}=x^{3}+ax+b\ (mod\ p),\ 4a^{3}+27b^{2}\
eq 0\ (mod\ p) \mid\cup\{0\} \tag{1}\]  
where \(\mathbb{R}_{p}\) is a finite field of \(a\), \(b\) integers modulo \(p\), and \(0\) is a point at infinity. The elliptic curve point is to enhance the security of digital avatar (product) data in order to complicate the procedure for potential signature decryption based on the elliptic curve discrete logarithm problem. The generated signature can be represented as a combined \(S\) hash:  
\[S=(H_{1}(Id,(X,Y)),H_{2}(T(x,y)) \tag{2}\]  
To calculate the first part \(H_{1}(Id,(X,Y))\) of the digital signature, the secure hash algorithm with a digest size of 256 bits (SHA-256) is used, being applied as a bitcoin hashing algorithm in the blockchain.