An IOTA based Distributed Sensor Node System

8 downloads 0 Views 1MB Size Report
Abstract— Internet of Things (IoT) is the current technological ... a distributed sensor node system that utilizes IOTA protocol, a ... processing power and excess of energy could be traded in an .... already referenced using the bitcoin, a protocol with intrinsic ..... as the data integrity it exposes, and the new business model.
An IOTA based Distributed Sensor Node System Odysseas Lamtzidis Electrical and Computer Engineering University of Patras Patras, Greece [email protected]

John Gialelis Electrical and Computer Engineering University of Patras Patras, Greece [email protected]

Abstract— Internet of Things (IoT) is the current technological breakthrough, enabling computing and sensing devices embedded in everyday processes to seamlessly exchange data, thus shaping the smart-everything concept. Alongside IoT, blockchain is transforming Internet by enabling Trustless, Distributed and Secure exchange of everything of value. In this paper, we propose a distributed sensor node system that utilizes IOTA protocol, a novel distributed ledger technology, to exchange data in an M2M fashion and establish a data monetization economy paradigm. Keywords—IOTA, Blockchain, IoT, M2M Economy, Data Monetization

I. INTRODUCTION In this paper, a distributed sensor node system that collects, stores and processes field data utilizing the IOTA protocol - an innovative distributed ledger cryptocurrency that uses a Directed Acyclic Graph (DAG) instead of a block-chain- enabling transactions of data and value within each transfer is proposed. It is designed to be robust, modular and easily adopted to the application domain and its uniqueness lies in the way it operates, since it utilizes the features of IOTA [1] . The proposed system uses IOTA’s ledger, called Tangle, as a database to store the data it aggregates by issuing transactions [2] . Each system’s node, called Super Node (SN) is able to connect to a number of sensors, from which it aggregates sensor data and packages them into transactions. These transactions are eventually sent to an IOTA Full-Node (FN) waiting to be issued. Once issued, these transactions propagate through the IOTA network using a gossip protocol [3] . The data stored in the Tangle is required to be accessible only to those having the proper authorization. In order to satisfy this requirement, a data communication protocol -the Masked Authenticated Messaging (MAM)- is introduced, which adds the needed functionality to emit and access an encrypted data stream, over the Tangle [4] . Therefore, access is managed using specific keys, through a designated server in the cloud, in which the Tangle is located and decrypted. Another designated characteristic is the system’s ability to share resources (i.e., data processing, data storage, , excess of energy, etc). Each SN is able to share its aforementioned resources with any IOTA compliant device. Moreover, the system incorporates a data marketplace (different from that of the IOTA foundation) comprising new features, such as the data dynamic worth evaluation that will serve as an incentive to gather data and use the platform [5] . The number of SNs the system is able to support, is a challenge since the FN needs to execute a process called Proof-of-Work (PoW)[6] . Its execution on a regular computer requires certain amount of time (i.e., minutes), which

is expected to be reduced down to few seconds on a GPU intense server. Thus, in regard to execution time, it is critical to define how many SNs can be served by a FN, while maintaining a reasonable transaction issuance time (i.e., one - two minutes). The dynamic evaluation of resources and the monetization of sensor data is another field which research is needed in order to construct the proper algorithms. In a nutshell, the proposed system is a distributed wireless sensor node system enforcing data integrity across the data pipeline by combining a cryptocurrency and the notion of “sharing economy” where sensor data, storage capabilities, processing power and excess of energy could be traded in an automated machine to machine (M2M) ecosystem thus, filling a technology gap in many application domains such as precision agriculture, digital industry, digital city, smart grid, etc. The rest of the paper is organized as follows. Section II briefly describes IOTA and its constituents as well as their characteristics. Section III depicts the current state of the art in regard to interconnection of blockchain technology and IoT. Section IV decomposes the proposed system in its components while Section V depicts its functionality. Section VI presents a use case example and Section VII depicts the conclusions and summarizes the progress made so far along with the future steps to follow. II.

IOTA TECHNOLOGY

IOTA was introduced in 2015 deviating substantially from most of the existing cryptocurrencies exchibiting features like the quantum resistance, the Ternary system and replaces the block-chain approach with a Directed Acyclic Graph (DAG)[7]

Fig. 1. The Tangle vs time elapsed

A. IOTA Constituents ΙΟΤΑ uses a directed acyclic graph (DAG) as a distributed ledger which stores all transaction data of the IOTA network, called Tangle. The tip set of the DAG consists of the transactions issued in the network. In order for a node to issue a transaction, it firstly has to verify 2 previous transactions. These approvals are represented as directed edges that constitute the edge set of the graph. Fig. 1 shows that transaction “15” directly references transactions “10” and “6” and indirectly references all the transactions that are referenced, either directly or indirectly, by “10” and “6”. The Tip-Selection Algorithm (TSA) is a reference rule that most nodes will follow regarding the random selection of attachment sites for new transactions that arrive. The attachment sites, called “Tips”, are transactions that are part of the Tangle but not referenced by any previous transaction and thus uncofirmed. It currently uses an algorithm of the Markov Chain Monte Carlo (MCMC) family[8] . A seed is the user’s master private key. used to derive all corresponding private and public keys. Seeds in IOTA consist of 81 Trytes ('A-Z,9'), which is equivalent to 384 bits security[9] . A public address is derived from the seed, security level (1: 81-trit security 2: 162-trit security 3: 243-trit security )and Key Index (an integer, specifying which key to derive from the seed.subSeed = hash(seed + KeyIndex) ). Addresses in IOTA consist of 81 Trytes. The smallest unit of data in IOTA is the Transaction, which consists of 2673 trytes and can be used either to transfer value and/or to transfer data on the tangle. Transactions which are grouped during the creation of a transfer are called Bundles. Bundles are unique transfers, thus, either all transactions inside the Bundle are accepted, or none. As the Tangle increases in size, due to new transactions, so are its requirements for processing power, RAM and storage across the FNs. For this reason, the network performs a syncronized snapshot, where each address balance is saved and the Tangle is wiped. Thus, each Full-Node has a database with the balance of each address before the snapshop and the actual Tangle that was created after. The FN is responsible for issuing and storing transactions in the Tangle til the last snapshot. SNs are low cost nodes dedicated to aggregate and forward sensor data to FNs. Eventually, IOTA intents to support a third option, PermanentNodes (PNs), in which the entirety of the Tangle history will be stored and they will serve as an alternative to FNs[10] . B. IOTA Functionality IOTA signing scheme and constant address generation, is implemented as follows: each time a user transfers monetary units (IOTAs), a new address is generated in which the remainder units of the user will be transferred. This stems from the use of a Winternitz type one-time signature scheme (WOTS) as the basis of the signing scheme [20]. A transfer is issued by establishing multiple transactions as part of a bundle which indicate the source address (input), the receiver address (output) and the transactions carrying the input’s transaction signature (meta-transaction). It is apparent, that to make a valid bundle the sum of the value of a bundle’s transactions should be 0. For each transaction a FN performs three (3) operations: i)

signs the transaction by using the address private key, stores that signature in the meta-transaction, and creates the bundle, ii) using a MCMC algorithm, the FN picks two Tips from the current state of the Tangle and verifies these two transactions as well as the transactions that are directly or indirectly referenced by them. The verification process includes both the correctness of the transactions’ elements (signatures, PoW, hashes, etc.) as well as the absence of conflicts, iii) the required PoW is performed to detect a nonce and generate the transaction hash for spam protection. After the above listed steps are completed, a final transaction object is propagated in the network and is added to the Tangle that is stored in each IOTA Full Node in the network. C. IOTA MAM data layer The proposed system not only leverages IOTA as the backbone to perform M2M transactions, but also as an agent to store and circulate data. To enable this functionality, MAM on top of the IOTA protocol is used. In MAM, a user can either create a channel or subscribe to a channel. A channel is a chain of messages, each message being itself a 0-value transaction published in the Tangle. Access to channels is managed using a combination of generated private keys. These keys in turn create addresses that become the leaves of Merklee Trees. Each time a user publishes a message, an address from the Tree is used as “sender’s address” while the “receiver’s address is also generated in this process. This last address is generated from the root of the Tree and can be combined with a nonce called side key. Three types of channels are being referenced in this work: Public: Address is the Root of the Merklee Tree Private: Address is the Hash of the Root Restricted: Address is the Hash of the Root & side_key Eventually, the message is encrypted using the root and an index as a one-time pad cipher. By providing the root and the side_key, a user is able to locate the MAM bundle and decrypt a message. MAM messages are grouped into Merklee Trees, and each message has a field to indicate the next “receiver’s address” that continues the stream. If the Merklee Tree has N>1 leaves, each message (as a particular leaf is used as address) can point to a different Merklee Tree, thus forking the channel. As each message provides no information for the previous “receiver’s address” the channel is characterized of forward secrecy. Fig. 2 depicts the above described process. III.

STATE OF THE ART

Distributed WSNS are gaining great attention from both the industrial and research community. Most systems have a highly centralized structure, as they consist of a sensor network that sends the data to a central server. These networks also are usually organized into sensor nodes and gateways, with the second being the aggregators of the data. The central server is responsible for undertaking the bulk of processing and storage of the data as also serving the end-user. Fog computing is also becoming prevalent in numerous IoT applications, such as Smart Grid, Smart City, etc., bringing the Cloud Computing paradigm to the edge of the network [11] .

Fig. 2. Grouping of messages into Merklee Trees

The interconnection of blockchain technology and IoT have been studied to solve critical IoT challenges, related to security and privacy. Introducing the blockchain technology in IoT systems is a challenging task, mainly due to the considerable computational burden the PoW induces as well as the low attainable throughput for various applications (i.e. 8 transfers/second) [12] . Moreover, sensor data monetization is already referenced using the bitcoin, a protocol with intrinsic scalability issues and not intended to transfer data [13] . In contrast, IOTA was designed especially for the IoT, by incorporating quantum proof cryptography and attempting to solve the blockchain’s scalability issues [12] . Finally, in the distributed ledger technology spectrum, there are solutions using a private blockchain that are production ready and scalable but are no longer permission-less (i.e Hyperledger Fabric) [14] . IV. SYSTEM DESCRIPTION The proposed system comprises three primary elements, the SNs, serving as data aggregators and/or actuators, the FNs, serving as IOTA transaction issuers and the Back-End server hosted in the cloud. The structure is highly decentralized as each node operates independently. The data is stored in the Tangle and the Back-End server acts as a coordinator. The system proposes the use of a private FN for optimization but since it will sync with the network, each SN can use any FN on the IOTA network.The current structure will be decentralized even further as more IOTA’s features become available, like the Swarm Node that enables running a distributed FN over multiple devices [2] . A. Super Nodes The SNs adhere to the Fog Computing paradigm, according to which most of the computing and decision making is done to multiple nodes, close to the data source (sensors) [15] . SNs gather data from a limited area around them, thus forming sensing cells. Although each sensing cell acts as a unit, that may belong to certain context (user, location, etc.), the SNs cooperate and facilitate these units by exploiting the IOTA token.

SNs incorporate a SoC CPU, RAM, RF connectivity (LoRaWAN, Zigbee and Bluetooth.), support TCP/UDP/IP stack and an LCD screen. Regarding the housing, a standardized tamper proof container with solar power source is envisaged. SNs in certain application domains (i.e. shipping industry, aviation industry) will be able to perform various tasks in the absence of internet access since they will make use of their P2P capabilities. Because of the current IOTA’s inefficiencies regarding various functionalities, the prototype will be more computationally powerful than it is expected in the finalized design. The prototype will incorporate a 1Ghx ARM 11 core, 512 of RAM, a micro-SD slot, micro-USB for power and/or data and a GPIO (General Purpose Input Output) array to interface various sensors and peripherals. B. Back-End Server A Back-End Server hosted in the cloud is required to support the sensor network and offer its services. One of its main constituents, relates to an IOTA FN array hosted in a cloud responsible for issuing the transactions that are sent by the SNs with considerably processing power to minimize the PoW time To increase the number of issued transactions/second, it might be optimum to run multiple FNs under a load balancer that will receive the transactions and forward them to the FN that is currently not issuing any transactions. The other main constituents regard an Application Programming Interface (API) for 3rd parties that enables the system to be integrated into 3rd party solutions in various application domain, a SN dashboard which features a simple web interface to monitor the status of the SNs and the database for the SNs metadata. C. The data marketplace In a world that is increasingly populated by sensors, being able to commercialize the aggregated data to other interesting parties constitutes a serious incentive to make sensor data public. Data Monetization is one of the key aspects of the proposed system as the corresponding service will evaluate the data offered by the SNs and set up their price. Although the IOTA foundation is setting up its own data marketplace, the proposed marketplace differs substantially since it allows the

prices to change dynamically. According to a 2014 Commission report, up to 72% of consumers in Europe will acquire a domestic smart electricity meter by 2020 [16] . D. System security & Privacy Considering that the number of sensors and IoT devices increases with a fast pace [17] , it is crucial to safeguard their security and the privacy of the users. Moreover, the recent research advancements in the area of quantum computers threatens even further the development of the IoT as most encryptions are based on the elliptic-curve cryptography that is proven to be rendered obsolete by quantum computing [18] . On the other hand, IOTA uses a custom signing scheme based on W-OTS and the Kerl hash function (a ternary modification of Keccak SHA3-384) and is considered to be quantum resilient. The signing scheme dictates that each private key used to sign data is used once, as each time it is used, a random part of the key is revealed [19] . Using the same key repetitively leads to almost certain forge-ability. Regarding the data streams, MAM messages use a Merklee based signature scheme in combination with the IOTA signing scheme described above. Each data payload is encrypted as described in Section II C. Regarding the privacy characteristics, each SN will use a specific seed for each key generation as per the specifications of the IOTA protocol which will be not know to the platform, thus the Back-End server will serve as key-management. V.

SYSTEM FUNCTIONALITΥ

A. SN Functionality A SN enters the initialization state when it is turned on. Then, it enters an idle state until activated by an event (timer, command from server, etc.) to which it will act on before reentering the idle state. During the initialization, the SN creates a Merklee Tree called genesis tree (i.e., a public ID) by using the MAM module. This tree will be used to encrypt the genesis messages using a private MAM channel. Each genesis message will hold the information regarding a particular data-stream and will branch into that particular data-stream in Restricted mode. After issuing these transactions, the SN will send an “INIT” packet to the server and perform a Supersingular Isogeny Key Exchange (SIDH), a post-quantum analogous to Diffie-Hellman key exchange. Having established a shared key, the server and the SN can use any established symmetrical key cryptography scheme to exchange data (i.e. AES-256) as they are largely considered quantum resilient. Having established a secure communications channel, the SN will provide the server the genesis tree root. In regard to connectivity, at the Physical layer, low power and low bandwidth protocols are utilized as the bandwidth requirements are kept to a minimum (an IOTA transaction object is 1589 bytes) thus, the system supports either direct connectivity with peers using IEEE 802.15.4 (Zigbee) or with a gateway using (LoRa)to transmit all the needed data. At the higher network layers, MQTT (subscriber-broker applications) and CoAp (RESTful applications) protocols are available. The SN performs three main activities:

1. Log data After the SN establishes connection with the sensors and aggregates their data, it formulates the streams where it assigns the data and eventually constructs the appropriate MAM Bundle (payload I). In this process, the data will be encrypted in the data payload of the MAM bundle and a root-side key combination that unlocks them will be generated. The root side_key combination will be encrypted with the key generated in the initialization period and will be sent to the Βack-end server while the MAM bundle will be sent to an IOTA Full Node to be issued in the Tangle. Each data-stream is a different chain of MAM messages (i.e., transactions) with each message to hold up to 1.3kbytes of information (1300 ASCII characters). Although IOTA is feeless, each transaction requires PoW, thus posing extra costs (i.e., electricity) with each extra data-stream, posing serious scalability issues. On the other hand, more discrete data-streams means that the user has more fine-grained control over the accessed data. Thus, the system must be able to balance between greater control of access (by increasing the number of discrete data-streams) and the growing demand for PoW. Possible solutions have been already explored, like the use of dedicated FPGA with considerable efficiency. Lastly, every M roots (M is arbitrary), the side_key changes in order to grant and revoke access to the data-stream. By not providing the side_key, a user may have the root but will not be able to generate the next address in the MAM message chain. 2. Share Resources In situations where nodes have limited internet access or need more power, the utilization of a SN stands as the most efficient solution since, a SN is able to interface with other IOTA powered devices and acquire the needed resources in exchange for IOTA. These devices can be neighboring SNs that have physical access to power or network sources or could be an IOTA powered drone (e.g., lands and recharges using QI contact charging technology [21] The value of these resources will be evaluated in a live basis on the Back-End Server using established big data research and an overview will be covered later in this paper. 3. Action This category is a generic case where the SN is in need to perform a specific action in response to either an event or to a command. This action can could be the activation of a certain actuator (servo, pump, relay, etc.) or the processing of certain information. B. Server Functionality The Back-End Server maintains a database comprising of [SN ID, SN Metadata (i.e., geolocation, status, etc.), DIHS symmetric keys, available data-streams, root / side_key for the data-streams]. On top, it maintains a data marketplace and provides a user-friendly interface for the system’s SNs through which users are able to purchase data and perform the necessary IOTA transactions. Specifically, the users are able to search the available from the SNs data within a range of criteria (i.e., type, history, geographical location quantity, etc) and after successful authentication they receive the keys needed to access the

requested data in the Tangle. An additional component features a service through which the resources offered from the SNs are evaluated, taking into account information as the IOTA token price, the scarcity of the selected resource as well as demand. C. Scalability of the system. IOTA’s extended transaction size due to quantum-proof cryptography and the need of PoW for each transaction, pose several challenges for typical IoT devices, i.e., processing power, autonomy, storage capacity, and so on. In the proposed system, the PoW is expected to be conducted smoothly and timely since it is accommodated by the back-end FN. In any case the amount of conducted PoW is expected to be significantly increased either by increasing the number of backend FNs or/and their processing power while balancing their cost. The size of each transaction is 1589 kilobytes and each MAM message is one MAM bundle, thus 3 transactions. When using long range communication (e.g., LoRa), though, it is not feasible to transmit efficiently these packet sizes over long distances. It is then envisaged, to add a gateway device that will process the packets before transmitting them to the Internet. Therefore, each SN will not send the entire bundle, but it will merely send the necessary data, i.e. the signature and the encrypted data. Then the gateway device will proceed to formulate the bundle and broadcast it to the FN. VI.

USE CASE SCENARIO

To demonstrate the operability of the proposed system the application domain of precision agriculture is chosen due to numerous sensors being used enabling the farmers to closely monitor the field and take precaution actions- thus increasing the yield- and the use case of “Request Data”, which the corresponding diagrams are depicted, is described. In this particular case, the system will be used to gather the needed data from the farm plots, monetize them and depict the synergies that could emerge among SNs of different clusters. Each sensing cell is 25m radius and the minimum distance between two SNs is 50m as depicted in Fig.3 . We define cluster density as: %&'()* +, -)./+*/ ρ" = (1) 0*)1 ρc is dynamic based on the requirements of the application and the domain. In the particular use-case, the sensing cells gather various set of data (soil moisture & temperature, humidity & temperature, etc.) and there is a solar panel in farmfield 2 that is used for electricity production. The scenario describes that the owner of farm-land 1 has agreed to buy electricity from the farm-field 2 when it’s needed, thus creating a SN controlled micro-grid even though each cluster uses a different gateway. In the case which a gateway goes offline, the cluster can adapt and request from the neighboring clusters access to the internet by compensating them. The physical installation of the required nodes and devices is in progress and will be completed in the very near future. Via the “Request Data” service a user purchases data (distinct pieces of data-streams by getting the appropriate key/root combination after transferring the required IOTAs. Specifically, the user interacts through an API with the BackEnd server and eventually with the IOTA FN, initiates the

Fig. 3 Envisaged topology for the application use case

“session” after successfully signing-in, consumes the “Request data” service and selects the desired data to be unlocked. Then, the back-end, based on several factors, evaluates the request, informs the user for the corresponding cost and sends a specific IOTA address and a token in case the user accepts the offer. After the user performs the IOTA transfer to the designated address using the token, the Back-End server searches for the right key/root in the database that unlocks the data-streams requested, retrieves the data from the Tangle via the corresponding FN and delivers them to the user alongside the “purchased” Keys/Root. Fig. 4 depicts the corresponding sequence diagram while Fig. 5 shows the details of the interactions among the implemented subsystems / modules.

Fig. 4 Sequence diagram of “Request Data” service

depicted, and the use-case example demonstrates the overall functionality of the proposed system. Future actions include the conduction of exhaustive system audits in the field to assess the proposed technologies as well as the unobstructed connectivity of the SNs. ACKNOWLEDGMENT This research has been co-financed by the European Union and Greek national funds through the Regional Operational Program "Western Greece 2014-2020", under the Call "Regional research and innovation strategies for smart specialization (RIS3) in Microelectronics and Advanced Materials" (project: 5021449 entitled "Intelligent Services Based on the Internet of Things to Support Agriculture “AgrIoT”) REFERENCES [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Fig. 5 Interactions among the implemented subsystems / modules [16]

VII.

CONCLUSIONS

In this paper, a distributed sensor node system is proposed that securely collects, stores and processes field data by utilizing features of the IOTA protocol enabling M2M transactions of data and value (data monetization). It is designed to be robust, modular and easily adopted to any application domain. Its uniqueness lies in the way it integrates features of IOTA as well as the data integrity it exposes, and the new business model entailed. All its architectural as well as operational aspects are

[17] [18] [19] [20] [21]

I. Foundation, "Landing Page. Available: www.iota.org S. Popov, "The Tangle," 30 4 2018. Available: https://assets.ctfassets.net/r1dr6vzfxhev/2t4uxvsIqk0EUau6g2sw0g/45ea e33637ca92f85dd9f4a3a218e1ec/iota1_4_3.pdf. K. Birman, " The promise, and limitations, of gossip protocols," ACM SIGOPS Operating Systems Review, vol. 41, no. 5, pp. 8-13, 2007. P. Handy, "Introducing Masked Authenticated Messaging," 4 November 2017. Available: https://blog.iota.org/introducing-masked-authenticatedmessaging-e55c1822d50e. I. Foundation, "IOTA Data Marketplace," IOTA Foundation, [Online]. Available: https://data.iota.org/. A. Back, "Hashcash," August 2002. [Online]. Available: http://www.hashcash.org/papers/hashcash.pdf. D. C. M. Fiore M., "The Algebra of Directed Acyclic Graphs," Computation, Logic, Games, and Quantum Foundations. The Many Facets of Samson Abramsky”, Springer, 2013, pp. 37-51. S. Brooks, A. Gelman, G. L. Jones and X.-L. Meng, Handbook of Markov Chain Monte Carlo, New York: Chapman & Hall/CRC, 2011. A. K. Lenstra, "Key Length. Contribution to The Handbook of Information Security," 2004. D. Sonstebo, "IOTA Development Roadmap," 17 March 2017. [Online]. Available: https://blog.iota.org/iota-development-roadmap74741f37ed01. F. Bonomi, R. Milito and S. Addepali, "Fog computing and its role in the internet of things," in ACM SIGCOMM, Helsinki, 2012. C. K. e. al., "On Scaling Decentralized Blockchains," in Financial Cryptography and Data Security FC, 2016. D. Worner and T. vom Bomhard, "When your sensor earns money exchaning data for cash with bitcoin," in ACM International Joint Conference on Pervasive and Ubiquitous Computing, Seattle, 2014. "Hyperledger," The Linux Foundation, [Online]. Available: https://www.hyperledger.org/. M. . Yannuzzi, R. A. Milito, R. . Serral-Gracià, D. . Montero and M. . Nemirovsky, "Key ingredients in an IoT recipe: Fog Computing, Cloud computing, and more Fog Computing," , 2014. [Online]. Available: http://ieeexplore.ieee.org/document/7033259. E. Commission, "Benchmarking smart metering deployment in the EU-27 with a focus on electricity," 2014. "IHS Markit," https://cdn.ihs.com/www/pdf/IoT_ebook.pdf. [18] G. Brassard, P. Hyer and A. Tapp, "Quantum cryptanalysis of hash and claw-free functions," Lecture Notes in Computer Science, no. 1380, pp. 163-169, 1998. B. J., D. E., E. S., H. A. and R. M, "On the Security of the Winternitz OneTime Signature Scheme," in Lectore Notes in Computer Science, vol. 6737, Springer, 2011. A.Hulsing, "W-OTS+– Shorter Signatures for Hash-Based Signature Schemes,”," in AFRICACRYPT 2013. A. B. Junaid, A. Konoiko, Z. Yahya, M. Sahinkaya and L. Seneviratne, "Autonomous Wireless Self-Charging for Multi-Rotor Unmanned Aerial Vehicles," Energies, vol. 10, no. 6, 2017.

Suggest Documents