17 lines
31 KiB
HTML
17 lines
31 KiB
HTML
<!doctype html>
|
||
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-protocol/modules/filetree">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="generator" content="Docusaurus v2.4.0">
|
||
<title data-rh="true">filetree Module | Jackal Chain Docs</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.jackalprotocol.com/docs/protocol/modules/filetree"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="filetree Module | Jackal Chain Docs"><meta data-rh="true" name="description" content="Overview"><meta data-rh="true" property="og:description" content="Overview"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.jackalprotocol.com/docs/protocol/modules/filetree"><link data-rh="true" rel="alternate" href="https://docs.jackalprotocol.com/docs/protocol/modules/filetree" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.jackalprotocol.com/docs/protocol/modules/filetree" hreflang="x-default"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap">
|
||
<link rel="stylesheet" href="https://fonts.cdnfonts.com/css/segoe-ui-4"><link rel="stylesheet" href="/assets/css/styles.79723e9d.css">
|
||
<link rel="preload" href="/assets/js/runtime~main.8937eb3a.js" as="script">
|
||
<link rel="preload" href="/assets/js/main.3642d910.js" as="script">
|
||
</head>
|
||
<body class="navigation-with-keyboard">
|
||
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
|
||
<div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/jklimage.png" alt="Jackal Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/jklimage.png" alt="Jackal Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Jackal Docs</b></a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/jackallabs/canine-chain" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebar_njMd"><nav class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro">Welcome to Jackal Wiki</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/overview/jackal-tldr">Overview</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/using-jackal/wallet/keplr">Using Jackal</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/contributors/join">Community and Contributors</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/protocol/modules/module-overview">The Protocol</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/docs/protocol/modules/module-overview">Blockchain Modules</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/module-overview">Module Overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/jklmint">jklmint Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/lp">lp Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/rns">rns Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/wasm">wasm Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/storage">storage Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/modules/dsig">dsig Module</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/protocol/modules/filetree">filetree Module</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/p-o-p">Jackal Proof-of-Persistence</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/tokens">Tokens</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/encryption">Encryption</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/protocol/storageproviders/overview">Storage Providers</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/protocol/validators">Validators</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/explorer">Jackal Explorer</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/official-links/jackal-protocol">Official Links</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/ecosystem/grants-funding">Ecosystem</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/nodes/install">Nodes & Providers</a></div></li></ul></nav></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_OVgt"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">The Protocol</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Blockchain Modules</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">filetree Module</span><meta itemprop="position" content="3"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>filetree Module</h1><h2 class="anchor anchorWithStickyNavbar_LWe7" id="overview">Overview<a class="hash-link" href="#overview" title="Direct link to heading"></a></h2><p>The File Tree module is responsible for keeping records of a user's files and organizing them in a way that is accessible. When a user uploads a file using the Storage module, the file is only accessible from the File ID (FID) which makes the process clunky and obtuse to remember every file uploaded to Jackal. Furthermore, every single upload would be required to be public, or the user would need to keep track of every symmetric key used to encrypt the files and manually map them to the FIDs. The solution to this is a tree structure storing each file as an entry in the tree. Organizing this structure is also trivial as we can assign children to pseudo files that we call folders. Finally to keep track of encryption keys, the protocol maps every file to its respective key.</p><p><img loading="lazy" alt="Protocol Overview" src="/assets/images/filetree1-e947ab740b90156234b2fadb69a00533.png" width="542" height="842" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="folder-abstraction">Folder Abstraction<a class="hash-link" href="#folder-abstraction" title="Direct link to heading"></a></h2><p>These, of course, are all abstractions of what’s actually under the hood. The File Tree module doesn’t actually handle any of the folder logic, the system believes it is storing files that act as metadata stores, which then update to reflect changes in folders. This gives the user experience the feeling that folders and files are separate entities in the tree, but in reality they are identical.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="file-entry-structure">File Entry Structure<a class="hash-link" href="#file-entry-structure" title="Direct link to heading"></a></h2><p>Storing file entries on-chain is a hurdle being that the chain itself is public. This requires the use of client-side encryption before uploading data to the chain itself. The main component of a file is location (Address), allowing users to query the rest of the data from the file. You can think of the location as a key in a traditional key-value store or a path in bucket-based storage. The address is hashed using SHA256 to ensure it is impossible to retrieve the plain-text representation of the file name, while still being able to query the file using its given name. </p><p><img loading="lazy" alt="Protocol Overview" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ8AAADcCAYAAABu8iQLAAAenUlEQVR4Xu2dCbAcVRWGQVBxVzQaFwRBEERLUYFIkF0IiwbZFDcWSYDSgCABFQslyqaArHHDrVzADRcEERQsFClQBKOguCEoS9CgICK4tfVd607d15nbc1+/mfzv9fu/qqm86Znp02den7/vvf1y/pUqY4xpwUr1DcYYU4LFwxjTCouHMaYVFg9jTCssHsaYVlg8jDGtsHgYY1ph8TDGtMLiYYxphcXDGNMKi4cxphUWD2NMKywexphWWDyMMa2weBhjWmHxMMa0wuJhjGmFxcMY0wqLhzGmFRYPY0wrLB7GmFZYPIwxrbB4GGNaYfEwxrTC4mGMaYXFwxjTCouHMaYVFg9jTCssHsaYVsjEY6uttqpWWmklP/zwYwIP6kiFTDxI3BgzMZR1JIusTNqYrqCsI1lkZdLGdAVlHckiK5M2piso60gWWZm0MV1BWUeyyMqkjekKyjqSRVYmbUxXUNaRLLIyaWO6grKOZJGVSZuqmj17dvWQhzykWmWVVcY87rzzzuoDH/hA9aY3vSm873GPe1z1hz/8ofZpM1lQ1pEssjJp83/x+MxnPlPfHPj73/9e3XPPPeFni8fkRllHssjKpE2zeORGHt/85jer5z//+dVznvOcascdd6xuv/329GNGgLKOZJGVSZvxi8cdd9xRPf7xj69+9rOfhe0nn3xy9apXvSr9mBGgrCNZZGXS5v/igTA85SlP6T3WXnvt8Fo/8fj0pz9dzZkzp/f5v/3tb9Wqq65a/fvf/+5tMyseZR3JIiuTNv8Xj7POOiuMKOJj6dKl4bV+4sG2Rz3qUdWaa67ZezAS4XNGh7KOZJGVSZvxT1t479y5c2vvNGqUdSSLrEzajF88uIU7Y8aM6le/+lXYfs0111QLFixIP2YEKOtIFlmZtBm/eEC827LOOutUL3zhC6vvf//76ceMAGUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJFViZtTFdQ1pEssjJpY7qCso5kkZVJG9MVlHUki6xM2piuoKwjWWRl0sZ0BWUdySKvtdZaIXE//PCj/YM6UiETDxI3xkwMZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZ5GElvWzZstAeb968efWXxvDBD36w1x2rzmQ1Nrr00kuzx5V2+zLTl2HVURtkkUuS/spXvlLftBxnnnlmtWjRomAb8I9//KP+co/xisdksBR45StfWV111VX1zeHYUlc3M30pqaNRIYtckjS9Mgex8cYbV7/97W+r+fPnV+edd15vO0Ky9957V8985jNDv06a9UbxuPjii6tnP/vZwfkM4cFCAPG49tprqxe84AXV6173umqrrbYK7825pN18883Vy172srCfZz3rWdXxxx/fuP0Xv/hF8ILtB6MI3o8AbrbZZiGfE088sXr4wx8etiGip5xySrXvvvuG43vnO985ZuTB8X/4wx+uXv7yl4fv7Ljjjuvt+4QTTqjWWGON6sUvfnH1kY98JFgmmO5QUkejQha5JOlB4nHDDTcEYYArrrii2mmnnXqvLV68uNp8882rf/3rX9Vf//rXaoMNNgjFxlX7aU97WhCQ+D4MnxGPJUuWBG+SKEJNLmlvfvObq/e+973hZ/a/++67h39z2zFJ+vrXvx62p/zpT3+qnvCEJ1T33ntveP7JT36yOvvss8PPG264YW/kccYZZ4TpGcICqXg88YlPDIICf/zjH6uHPexhYWRy4403VquvvnrI48EHHwzfz6Dv1EwtSupoVMgi55L+xCc+EaYRPCjq+PNHP/rR+lurhQsXVh/60IfCz//973/D1RuLAHj1q19dnXrqqb33vv3tbw/FxgiA/UUYoXAsiAci8YhHPKL6z3/+E15rckl73/veV2255ZbV1Vdf3Xs/5LbnuP/++4NAkcef//znMa+l4sH0bIcddui9VhePn/zkJ73XEKPf/e53YTSSWkKee+65Fo+OkaujFYEscknSTSd6HEE89rGP7QkMw3yG98AQnqt45P3vf38otiuvvHK5ofsjH/nInniwz0iTSxojGqYETGmwaoxCldveBIW/5557hn1vt912ofChLh6vfe1re5+pi8evf/3r3mvxOdOXdJ2H3Ju+UzP1KKmjUSGLXJJ004l+0UUXjbkSA0XImgDstddeYZE08ra3vS0UEkP5dOTBaCIdeTz96U/vvVbqkoYREp9jzaRke45//vOf1dFHH1294hWvCM/r4sFaTKREPLCT3GOPPXrbmY41fadm6lFSR6NCFrkk6aYTHXGIU5YURgc//elPg3Cw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" width="271" height="220" class="img_ev3q"></p><p>The second most important data point in a file is the content of the file, this field is extremely versatile as it can store any string. Traditionally this is used to store a JSON list of FIDs to point to a file on the Storage Module, however, the protocol can also theoretically use it to store short bits of text like encrypted passwords for a private password manager. The owner tag is a hashed version of the owner hiding what address owns each file, this field can be changed to reflect the transferral of ownership. When making changes to the file such as deletion, movement or adding/removing viewers/editors, the owner field is consulted to determine permissions. The same applies for edit access, editors can update the contents but nothing else. </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="encrypted-viewing-access">Encrypted Viewing Access<a class="hash-link" href="#encrypted-viewing-access" title="Direct link to heading"></a></h2><p>For users to view files, they need access to the symmetric keys used to encrypt the files. To do this, the protocol has a map of hashed addresses with each user’s respective version of the symmetric key encrypted with that address's corresponding public key. The protocol can then store that map in the file entry to act as an encryption key discovery layer. The addresses in this viewing list are only able to access files and decrypt the data in their client, they have no privileges over the modification of the file entry in any way.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/filetree.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/protocol/modules/dsig"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">dsig Module</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/protocol/p-o-p"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Jackal Proof-of-Persistence</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link toc-highlight">Overview</a></li><li><a href="#folder-abstraction" class="table-of-contents__link toc-highlight">Folder Abstraction</a></li><li><a href="#file-entry-structure" class="table-of-contents__link toc-highlight">File Entry Structure</a></li><li><a href="#encrypted-viewing-access" class="table-of-contents__link toc-highlight">Encrypted Viewing Access</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Jackal</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://jackalprotocol.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Website<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Connect With Us</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://discord.com/invite/5GKym3p6rj" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/Jackal_Protocol" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Developers</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://docs.jackalprotocol.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Documentation</a></li><li class="footer__item"><a href="https://github.com/jackallabs/canine-docs" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contribute to Docs<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Jackal Labs</div></div></div></footer></div>
|
||
<script src="/assets/js/runtime~main.8937eb3a.js"></script>
|
||
<script src="/assets/js/main.3642d910.js"></script>
|
||
</body>
|
||
</html> |