diff --git a/.editorconfig b/.editorconfig index 74b21386..766abc14 100644 --- a/.editorconfig +++ b/.editorconfig @@ -24,7 +24,7 @@ indent_size = 2 max_line_length = 150 # Ignore paths -[{.git/**/*,LICENSE,**/Move.lock,mdbook-admonish.css,theme/**/*}] +[{.git/**/*,LICENSE,**/Move.lock,mdbook-admonish.css,theme/**/*,po/*}] charset = unset end_of_line = unset indent_size = unset diff --git a/.gitignore b/.gitignore index e5ab4eba..72d64cce 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ __pycache__/ config.yml working_dir *.log +*~ # Walrus binary and configuration walrus diff --git a/README.md b/README.md index 6c503991..6a3fcca6 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,24 @@ You can also build and access the documentation locally (assuming you have Rust cargo install mdbook cargo install mdbook-admonish@1.18.0 --locked cargo install mdbook-katex@0.9.0 --locked +cargo install mdbook-i18n-helpers --locked mdbook serve ``` +### Using translated versions + +If there is a translated resource in `po/` directory, it can be specified through the +`MDBOOK_BOOK__LANGUAGE` environment variable. For example, to build or serve the Chinese +translation: + +```bash +MDBOOK_BOOK__LANGUAGE=zh_CN mdbook build +MDBOOK_BOOK__LANGUAGE=zh_CN mdbook serve +``` + +Please consult [TRANSLATING.md](./TRANSLATING.md) for further information on how to create and +maintain translations. + ## Get help and report issues If you have general questions or require help on how to use Walrus, please check for [existing diff --git a/TRANSLATING.md b/TRANSLATING.md new file mode 100644 index 00000000..dffc29cc --- /dev/null +++ b/TRANSLATING.md @@ -0,0 +1,52 @@ +# Translation Guidelines + +The Walrus documentation uses [mdbook-i18n-helpers] as a translation framework. + +## Preparation + +The following tools are required: + +- GNU gettext utilities (`msgmerge` and `msgcat`) +- mdbook-i18n-helpers (`cargo install mdbook-i18n-helpers`) + +## Creating and updating translations + +Please see the [mdbook-i18n-helpers USAGE] file for the detailed usage of mdbook-i18n-helpers. +We summarize the most important commands below. + +### Generating a message template + +The generated message template `po/messages.pot` is required to create or update translations. + +```bash +MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot"}}' mdbook build -d po +``` + +### Creating a new translation resource + +In the following, replace `xx` by the [ISO 639][iso_639] language code. + +```bash +msginit -i po/messages.pot -l xx -o po/xx.po +``` + +### Updating an existing translation resource + +```bash +msgmerge --update po/xx.po po/messages.pot +``` + +## Editing translation resources + +After generating a translation resource `po/xx.po`, you can write translation messages +in `msgstr` entry of `po/xx.po`. +To build a translated book, the following command can be used. + +```bash +MDBOOK_BOOK__LANGUAGE=xx mdbook build +MDBOOK_BOOK__LANGUAGE=xx mdbook serve +``` + +[mdbook-i18n-helpers]: https://github.com/google/mdbook-i18n-helpers +[mdbook-i18n-helpers USAGE]: https://github.com/google/mdbook-i18n-helpers/blob/main/i18n-helpers +[iso_639]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes diff --git a/book.toml b/book.toml index 1142e10d..ff00a24b 100644 --- a/book.toml +++ b/book.toml @@ -7,6 +7,7 @@ title = "Walrus" [build] build-dir = "build" +extra-watch-dirs = ["po"] [output.html] theme = "theme" @@ -34,3 +35,6 @@ assets_version = "3.0.2" # do not edit: managed by `mdbook-admonish install` # Using `\(` and `\)` for inline math and `\[` and `\]` for math blocks. block-delimiter = { left = "\\[", right = "\\]" } inline-delimiter = { left = "\\(", right = "\\)" } + +[preprocessor.gettext] +after = ["links"] diff --git a/po/messages.pot b/po/messages.pot new file mode 100644 index 00000000..fb4db24d --- /dev/null +++ b/po/messages.pot @@ -0,0 +1,8199 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Walrus\n" +"POT-Creation-Date: 2024-10-30T04:43:24+08:00\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: docs/SUMMARY.md:3 +msgid "Summary" +msgstr "" + +#: docs/SUMMARY.md:5 docs/index.md:3 +msgid "Walrus" +msgstr "" + +#: docs/SUMMARY.md:9 +msgid "Dev Blog" +msgstr "" + +#: docs/SUMMARY.md:11 +msgid "Blog Preface" +msgstr "" + +#: docs/SUMMARY.md:12 +msgid "Announcing Walrus" +msgstr "" + +#: docs/SUMMARY.md:13 docs/blog/02_devnet_update.md:3 +msgid "Devnet Update" +msgstr "" + +#: docs/SUMMARY.md:14 +msgid "Announcing the Walrus Whitepaper" +msgstr "" + +#: docs/SUMMARY.md:15 docs/blog/04_testnet_update.md:3 +msgid "Announcing Testnet" +msgstr "" + +#: docs/SUMMARY.md:19 +msgid "Design" +msgstr "" + +#: docs/SUMMARY.md:21 docs/design/objectives_use_cases.md:3 +msgid "Objectives and use cases" +msgstr "" + +#: docs/SUMMARY.md:22 +msgid "Overview" +msgstr "" + +#: docs/SUMMARY.md:23 docs/usage/setup.md:84 +msgid "Architecture" +msgstr "" + +#: docs/SUMMARY.md:24 +msgid "Encoding" +msgstr "" + +#: docs/SUMMARY.md:25 docs/SUMMARY.md:40 docs/design/operations.md:3 +#: docs/dev-guide/dev-operations.md:3 +msgid "Operations" +msgstr "" + +#: docs/SUMMARY.md:26 +msgid "Sui operations" +msgstr "" + +#: docs/SUMMARY.md:27 docs/design/operations-off-chain.md:3 +msgid "Off-chain operations" +msgstr "" + +#: docs/SUMMARY.md:28 +msgid "Properties" +msgstr "" + +#: docs/SUMMARY.md:29 docs/design/future.md:3 +msgid "Future discussion" +msgstr "" + +#: docs/SUMMARY.md:31 +msgid "Usage" +msgstr "" + +#: docs/SUMMARY.md:33 docs/usage/setup.md:3 +msgid "Setup" +msgstr "" + +#: docs/SUMMARY.md:34 docs/usage/interacting.md:3 +msgid "Interacting with Walrus" +msgstr "" + +#: docs/SUMMARY.md:35 +msgid "Using the client CLI" +msgstr "" + +#: docs/SUMMARY.md:36 +msgid "Using the client JSON API" +msgstr "" + +#: docs/SUMMARY.md:37 +msgid "Using the client HTTP API" +msgstr "" + +#: docs/SUMMARY.md:38 docs/dev-guide/dev-guide.md:3 +msgid "Developer guide" +msgstr "" + +#: docs/SUMMARY.md:39 docs/dev-guide/components.md:3 +msgid "Components" +msgstr "" + +#: docs/SUMMARY.md:41 +msgid "Sui structures" +msgstr "" + +#: docs/SUMMARY.md:42 docs/operator-guide/operator-guide.md:3 +msgid "Operator guide" +msgstr "" + +#: docs/SUMMARY.md:43 +msgid "Storage node" +msgstr "" + +#: docs/SUMMARY.md:44 +msgid "Aggregator" +msgstr "" + +#: docs/SUMMARY.md:45 +msgid "Stake and Unstake" +msgstr "" + +#: docs/SUMMARY.md:46 docs/usage/examples.md:3 +msgid "Examples" +msgstr "" + +#: docs/SUMMARY.md:47 docs/usage/troubleshooting.md:3 +msgid "Troubleshooting" +msgstr "" + +#: docs/SUMMARY.md:49 +msgid "Walrus Sites" +msgstr "" + +#: docs/SUMMARY.md:51 docs/walrus-sites/intro.md:3 +msgid "Introduction to Walrus Sites" +msgstr "" + +#: docs/SUMMARY.md:52 docs/walrus-sites/tutorial.md:3 +msgid "Your first Walrus Site" +msgstr "" + +#: docs/SUMMARY.md:53 docs/walrus-sites/tutorial-install.md:3 +msgid "Installing the site builder" +msgstr "" + +#: docs/SUMMARY.md:54 docs/walrus-sites/tutorial-publish.md:3 +msgid "Publishing a Walrus Site" +msgstr "" + +#: docs/SUMMARY.md:55 docs/walrus-sites/tutorial-suins.md:3 +msgid "Bonus: Set a SuiNS name" +msgstr "" + +#: docs/SUMMARY.md:56 +msgid "Migrating your site from Devnet" +msgstr "" + +#: docs/SUMMARY.md:57 docs/walrus-sites/advanced.md:3 +msgid "Advanced functionality" +msgstr "" + +#: docs/SUMMARY.md:58 docs/walrus-sites/commands.md:3 +msgid "Site builder commands" +msgstr "" + +#: docs/SUMMARY.md:59 +msgid "Advanced site-builder configuration" +msgstr "" + +#: docs/SUMMARY.md:60 docs/walrus-sites/routing.md:3 +msgid "Specifying headers and routing" +msgstr "" + +#: docs/SUMMARY.md:61 docs/walrus-sites/linking.md:3 +msgid "Linking from and to Walrus Sites" +msgstr "" + +#: docs/SUMMARY.md:62 docs/walrus-sites/redirects.md:3 +msgid "Redirecting objects to Walrus Sites" +msgstr "" + +#: docs/SUMMARY.md:63 +msgid "Technical overview" +msgstr "" + +#: docs/SUMMARY.md:64 docs/walrus-sites/portal.md:3 +msgid "The Walrus Sites portal" +msgstr "" + +#: docs/SUMMARY.md:65 docs/walrus-sites/authentication.md:3 +msgid "Site data authentication" +msgstr "" + +#: docs/SUMMARY.md:66 docs/walrus-sites/restrictions.md:3 +msgid "Known restrictions" +msgstr "" + +#: docs/SUMMARY.md:67 +msgid "Terms of service" +msgstr "" + +#: docs/SUMMARY.md:71 +msgid "Glossary Devnet terms of service Testnet terms of service Privacy policy" +msgstr "" + +#: docs/index.md:5 +msgid "" +"Welcome to the developer documentation for Walrus, a decentralized storage " +"and data availability protocol designed specifically for large binary files, " +"or \"blobs\". Walrus focuses on providing a robust but affordable solution " +"for storing unstructured content on decentralized storage nodes while " +"ensuring high availability and reliability even in the presence of Byzantine " +"faults." +msgstr "" + +#: docs/index.md:10 +msgid "" +"```admonish tip title=\"Fun fact\"\n" +"If you are viewing this site at , you are fetching " +"this from\n" +"Walrus behind the scenes. See the [Walrus Sites " +"chapter](./walrus-sites/intro.md) for further\n" +"details on how this works.\n" +"```" +msgstr "" + +#: docs/index.md:16 docs/dev-guide/dev-guide.md:19 +msgid "" +"```admonish danger title=\"Disclaimer about the Walrus Testnet\"\n" +"The current Testnet release of Walrus and Walrus Sites is a preview intended " +"to showcase\n" +"the technology and solicit feedback from builders, users, and storage-node " +"operators.\n" +"All transactions are executed on the Sui Testnet and use Testnet WAL and SUI " +"which have no\n" +"value. The state of the store **can and will be wiped** at any point and " +"possibly with no warning.\n" +"Do not rely on this Testnet for any production purposes, it comes with no " +"availability or\n" +"persistence guarantees.\n" +"\n" +"Furthermore, encodings and blob IDs may be incompatible with the future " +"Testnet and Mainnet, and\n" +"developers will be responsible for migrating any Testnet applications and " +"data to Mainnet. Detailed\n" +"migration guides will be provided when Mainnet becomes available.\n" +"\n" +"Also see the [Testnet terms of service](../testnet_tos.md) under which this " +"Testnet is made\n" +"available.\n" +"```" +msgstr "" + +#: docs/index.md:32 docs/usage/client-cli.md:59 +#: docs/dev-guide/dev-operations.md:17 +msgid "" +"```admonish danger title=\"Public access\"\n" +"**All blobs stored in Walrus are public and discoverable by all.** Therefore " +"you must not use Walrus\n" +"to store anything that contains secrets or private data without additional " +"measures to protect\n" +"confidentiality.\n" +"```" +msgstr "" + +#: docs/index.md:38 +msgid "" +"```admonish danger title=\"Discontinuation of Walrus Devnet\"\n" +"The previous Walrus Devnet instance is now deprecated and **will be shut " +"down after 2024-10-31**.\n" +"All data stored on Walrus Devnet (including Walrus Sites) will no longer be " +"accessible at that\n" +"point. You need to re-upload all data to Walrus Testnet if you want it to " +"remain accessible. Walrus\n" +"Sites also need to be migrated as described on the dedicated [migration\n" +"page](./walrus-sites/tutorial-migration.md).\n" +"```" +msgstr "" + +#: docs/index.md:46 +msgid "Features" +msgstr "" + +#: docs/index.md:48 +msgid "" +"**Storage and retrieval:** Walrus supports storage operations to write and " +"read blobs. It also allows anyone to prove that a blob has been stored and " +"is available for retrieval at a later time." +msgstr "" + +#: docs/index.md:52 +msgid "" +"**Cost efficiency:** By utilizing advanced erasure coding, Walrus maintains " +"storage costs at approximately five times the size of the stored blobs, and " +"encoded parts of each blob are stored on each storage node. This is " +"significantly more cost-effective than traditional full-replication methods " +"and much more robust against failures than protocols that only store each " +"blob on a subset of storage nodes." +msgstr "" + +#: docs/index.md:58 +msgid "" +"**Integration with the Sui blockchain:** Walrus leverages " +"[Sui](https://github.com/MystenLabs/sui) for coordination, attesting " +"availability, and payments. Storage space is represented as a resource on " +"Sui, which can be owned, split, merged, and transferred. Stored blobs are " +"also represented by objects on Sui, which means that smart contracts can " +"check whether a blob is available and for how long, extend its lifetime or " +"optionally delete it." +msgstr "" + +#: docs/index.md:64 +msgid "" +"**Epochs, tokenomics, and delegated proof of stake** Walrus is operated by a " +"committee of storage nodes that evolve between epochs. A native token, WAL " +"(and its subdivision FROST, where 1 WAL is equal to 1 billion FROST), is " +"used to delegate stake to storage nodes, and those with high stake become " +"part of the epoch committee. The WAL token is also used for payments for " +"storage. At the end of each epoch, rewards for selecting storage nodes, " +"storing and serving blobs are distributed to storage nodes and whose that " +"stake with them. All these processes are mediated by smart contracts on the " +"Sui platform." +msgstr "" + +#: docs/index.md:72 +msgid "" +"**Flexible access:** Users can interact with Walrus through a command-line " +"interface (CLI), software development kits (SDKs), and web2 HTTP " +"technologies. Walrus is designed to work well with traditional caches and " +"content distribution networks (CDNs), while ensuring all operations can also " +"be run using local tools to maximize decentralization." +msgstr "" + +#: docs/index.md:77 +msgid "Architecture and operations" +msgstr "" + +#: docs/index.md:79 +msgid "" +"Walrus's architecture ensures that content remains accessible and " +"retrievable even when many storage nodes are unavailable or malicious. Under " +"the hood it uses modern error correction techniques based on fast linear " +"fountain codes, augmented to ensure resilience against Byzantine faults, and " +"a dynamically changing set of storage nodes. The core of Walrus remains " +"simple, and storage node management and blob certification leverages Sui " +"smart contracts." +msgstr "" + +#: docs/index.md:85 +msgid "Organization" +msgstr "" + +#: docs/index.md:87 +msgid "This documentation is split into several parts:" +msgstr "" + +#: docs/index.md:89 +msgid "_Dev blog_ contains announcements and other blog posts." +msgstr "" + +#: docs/index.md:90 +msgid "" +"_Design_ describes the objectives, security properties, and architecture of " +"Walrus." +msgstr "" + +#: docs/index.md:91 +msgid "" +"_Usage_ provides concrete information for developers. If you want to get " +"started quickly, you can jump directly to the [setup " +"chapter](./usage/setup.md)." +msgstr "" + +#: docs/index.md:93 +msgid "" +"_Walrus Sites_ describes how you can use Walrus and Sui together to build " +"truly decentralized websites." +msgstr "" + +#: docs/index.md:96 +msgid "" +"Finally, we provide a [glossary](./glossary.md) that explains the " +"terminology used throughout the documentation." +msgstr "" + +#: docs/index.md:99 +msgid "Sources" +msgstr "" + +#: docs/index.md:101 +msgid "" +"This documentation is built using " +"[mdBook](https://rust-lang.github.io/mdBook/) from source files in " +". Please report or fix any " +"errors you find in this documentation in that GitHub project." +msgstr "" + +#: docs/blog/00_intro.md:3 +msgid "The Walrus Dev Blog" +msgstr "" + +#: docs/blog/00_intro.md:5 +msgid "" +"This part of the Walrus documentation is used to publish news and updates " +"about Walrus's development!" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:3 +msgid "Announcing Walrus: A Decentralized Storage and Data Availability Protocol" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:5 +msgid "" +"Walrus is an innovative decentralized storage network for blockchain apps " +"and autonomous agents. The Walrus storage system is being released today as " +"a developer preview for Sui builders in order to gather feedback. We expect " +"a broad rollout to other web3 communities very soon!" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:9 +msgid "" +"Leveraging innovations in erasure coding, Walrus enables fast and robust " +"encoding of unstructured data blobs into smaller slivers distributed and " +"stored over a network of storage nodes. A subset of slivers can be used to " +"rapidly reconstruct the original blob, even when up to two-thirds of the " +"slivers are missing. This is possible while keeping the replication factor " +"down to a minimal 4x-5x, similar to existing cloud-based services, but with " +"the additional benefits of decentralization and resilience to more " +"widespread faults." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:16 +msgid "The Replication Challenge" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:18 +msgid "" +"Sui is the most advanced blockchain system in relation to storage on " +"validators, with innovations such as a [storage " +"fund](https://docs.sui.io/concepts/tokenomics/storage-fund) that " +"future-proofs the cost of storing data on-chain. Nevertheless, Sui still " +"requires complete data replication among all validators, resulting in a " +"replication factor of 100x or more in today’s Sui Mainnet. While this is " +"necessary for replicated computing and smart contracts acting on the state " +"of the blockchain, it is inefficient for simply storing unstructured data " +"blobs, such as music, video, blockchain history, etc." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:26 +msgid "Introducing Walrus: Efficient and Robust Decentralized Storage" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:28 +msgid "" +"To tackle the challenge of high replication costs, Mysten Labs has developed " +"Walrus, a decentralized storage network offering exceptional data " +"availability and robustness with a minimal replication factor of 4x-5x. " +"Walrus provides two key benefits:" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:32 +msgid "" +"**Cost-Effective Blob Storage:** Walrus allows for the uploading of " +"gigabytes of data at a time with minimal cost, making it an ideal solution " +"for storing large volumes of data. Walrus can do this because the data blob " +"is transmitted only once over the network, and storage nodes only spend a " +"fraction of resources compared to the blob size. As a result, the more " +"storage nodes the system has, the fewer resources each storage node uses per " +"blob." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:38 +msgid "" +"**High Availability and Robustness:** Data stored on Walrus enjoys enhanced " +"reliability and availability under fault conditions. Data recovery is still " +"possible even if two-thirds of the storage nodes crash or come under " +"adversarial control. Further, availability may be certified efficiently " +"without downloading the full blob." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:43 +msgid "" +"Decentralized storage can take multiple forms in modern ecosystems. For " +"instance, it offers better guarantees for digital assets traded as NFTs. " +"Unlike current designs that store data off-chain, decentralized storage " +"ensures users own the actual resource, not just metadata, mitigating risks " +"of data being taken down or misrepresented." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:48 +msgid "" +"Additionally, decentralized storage is not only useful for storing data such " +"as pictures or files with high availability; it can also double as a " +"low-cost data availability layer for rollups. Here, sequencers can upload " +"transactions on Walrus, and the rollup executor only needs to temporarily " +"reconstruct them for execution." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:53 +msgid "" +"We also believe Walrus will accompany existing disaster recovery strategies " +"for millions of enterprise companies. Not only is Walrus low-cost, it also " +"provides unmatched layers of data availability, integrity, transparency, and " +"resilience that centralized solutions by design cannot offer." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:58 +msgid "" +"Walrus is powered by the Sui Network and scales horizontally to hundreds or " +"thousands of networked decentralized storage nodes. This should enable " +"Walrus to offer Exabytes of storage at costs competitive with current " +"centralized offerings, given the higher assurance and decentralization." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:62 +msgid "The Future of Walrus" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:64 +msgid "" +"By releasing this developer preview we hope to share some of the design " +"decisions with the decentralized app developer community and gather feedback " +"on the approach and the APIs for storing, retrieving, and certifying blobs. " +"In this developer preview, all storage nodes are operated by Mysten Labs to " +"help us understand use cases, fix bugs, and improve the performance of the " +"software." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:69 +msgid "" +"Future updates to Walrus will allow for dynamically changing the set of " +"decentralized storage nodes, as well as changing the mapping of what slivers " +"are managed by each storage node. The available operations and tools will " +"also be expanded to cover more storage-related use cases. Many of these " +"functions will be designed with the feedback we gather in mind." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:74 +msgid "" +"Stay tuned for more updates on how Walrus will revolutionize data storage in " +"the web3 ecosystem." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:76 +msgid "What can developers build?" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:78 +msgid "" +"As part of this developer preview, we provide a binary client (currently " +"macOS, ubuntu) that can be operated from the [command line " +"interface](https://docs.walrus.site/usage/client-cli.html), a [JSON " +"API](https://docs.walrus.site/usage/json-api.html), and an [HTTP " +"API](https://docs.walrus.site/usage/web-api.html). We also offer the " +"community an aggregator and publisher service and a Devnet deployment of 10 " +"storage nodes operated by Mysten Labs." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:84 +msgid "" +"We hope developers will experiment with building applications that leverage " +"the Walrus Decentralized Store in a variety of ways. As examples, we hope to " +"see the community build:" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:87 +msgid "" +"**Storage of media for NFT or dapps:** Walrus can directly store and serve " +"media such as images, sounds, sprites, videos, other game assets, etc. This " +"is publicly available media that can be accessed using HTTP requests at " +"caches to create multimedia dapps." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:91 +msgid "" +"**AI-related use cases:** Walrus can store clean data sets of training data, " +"datasets with a known and verified provenance, model weights, and proofs of " +"correct training for AI models. Or it may be used to store and ensure the " +"availability and authenticity of an AI model output." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:95 +msgid "" +"**Storage of long term archival of blockchain history:** Walrus can be used " +"as a lower-cost decentralized store to store blockchain history. For Sui, " +"this can include sequences of checkpoints with all associated transaction " +"and effects content, as well as historic snapshots of the blockchain state, " +"code, or binaries." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:100 +msgid "" +"**Support availability for L2s:** Walrus enables parties to certify the " +"availability of blobs, as required by L2s that need data to be stored and " +"attested as available to all. This may also include the availability of " +"extra audit data such as validity proofs, zero-knowledge proofs of correct " +"execution, or large fraud proofs." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:105 +msgid "" +"**Support a full decentralized web experience:** Walrus can host full " +"decentralized web experiences including all resources (such as js, css, " +"html, and media). These can provide content but also host the UX of dapps, " +"enabling fully decentralized front- and back-ends on chain. It brings the " +"full \"web\" back into \"web3\"." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:110 +msgid "" +"**Support subscription models for media:** Creators can store encrypted " +"media on Walrus and only provide access via decryption keys to parties that " +"have paid a subscription fee or have paid for content. (Note that Walrus " +"provides the storage; encryption and decryption must be done off Walrus)." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:115 +msgid "We are excited to see what else the web3 developer community can imagine!" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:117 +msgid "Getting Started" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:119 +msgid "" +"For this developer preview the public Walrus Devnet is openly available to " +"all developers. Developer documentation is available at " +"." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:122 +msgid "" +"SUI Testnet token is the main currency for interacting with Walrus. " +"Developers pay for Walrus Devnet storage using SUI Testnet tokens which can " +"be acquired at the [Sui Testnet Discord " +"faucet](https://discord.com/channels/916379725201563759/1037811694564560966)." +msgstr "" + +#: docs/blog/01_announcing_walrus.md:126 +msgid "One more thing …" +msgstr "" + +#: docs/blog/01_announcing_walrus.md:128 +msgid "" +"The [Walrus Sites website](https://walrus.site), the [Walrus " +"docs](https://docs.walrus.site), and [this very " +"blog](https://blog.walrus.site) are hosted on Walrus. To learn more about " +"Walrus Sites and how you can deploy your own, [click " +"here](https://docs.walrus.site/walrus-sites/intro.html)." +msgstr "" + +#: docs/blog/02_devnet_update.md:5 +msgid "Published on: 2024-08-12" +msgstr "" + +#: docs/blog/02_devnet_update.md:7 +msgid "" +"We have redeployed the Walrus Devnet to incorporate various improvements to " +"the Walrus storage nodes and clients. In this process, all blobs stored on " +"Walrus were wiped. Note that this may happen again on Devnet and Testnet, " +"but obviously _not on the future Mainnet_." +msgstr "" + +#: docs/blog/02_devnet_update.md:11 +msgid "Migration and Re-deployment of Walrus Sites" +msgstr "" + +#: docs/blog/02_devnet_update.md:13 +msgid "" +"You can obtain the latest version of the `walrus` binary and the new " +"configuration as described in the [setup chapter](../usage/setup.md)." +msgstr "" + +#: docs/blog/02_devnet_update.md:16 +msgid "" +"If you had deployed any Walrus Sites, the site object on Sui and any SuiNS " +"name are still valid. However, you need to re-store all blobs on Walrus. You " +"can achieve this by running the site-builder tool (from the `walrus-sites` " +"directory) as follows:" +msgstr "" + +#: docs/blog/02_devnet_update.md:25 +msgid "Changes" +msgstr "" + +#: docs/blog/02_devnet_update.md:27 +msgid "" +"Besides many improvements to the storage nodes, the new version of Walrus " +"includes the following user-facing changes:" +msgstr "" + +#: docs/blog/02_devnet_update.md:30 +msgid "" +"Improved coin management: The client now better selects coins for gas and " +"storage fees. Users no longer require multiple coins in their wallet." +msgstr "" + +#: docs/blog/02_devnet_update.md:32 +msgid "" +"Improved connection management: The client now limits the number of parallel " +"connections to improve performance for users with low network bandwidth " +"storing large blobs." +msgstr "" + +#: docs/blog/02_devnet_update.md:34 +msgid "" +"OpenAPI specification: Walrus storage nodes, aggregators, and publishers " +"expose their API specifications at the path `/v1/api`." +msgstr "" + +#: docs/blog/02_devnet_update.md:36 +msgid "" +"System info in JSON: The `info` command is now also available in JSON mode." +msgstr "" + +#: docs/blog/02_devnet_update.md:37 +msgid "Client version: The `walrus` CLI now has a `--version` option." +msgstr "" + +#: docs/blog/02_devnet_update.md:38 +msgid "Support for the empty blob: The empty blob is now supported by Walrus." +msgstr "" + +#: docs/blog/02_devnet_update.md:39 +msgid "" +"Default configuration-file paths: The client now looks for configuration " +"files in `~/.config/walrus` in addition to `~/.walrus` and recognizes the " +"extension `.yml` in addition to `.yaml`." +msgstr "" + +#: docs/blog/02_devnet_update.md:42 +msgid "" +"Home directory in paths: Paths specified in configuration files now expand " +"the `~` symbol at the beginning to the user's home directory." +msgstr "" + +#: docs/blog/02_devnet_update.md:44 +msgid "" +"More robust store and status check: The `store` and `blob-status` commands " +"are now more robust against Sui full nodes that aggressively prune past " +"events and against load-balancers that send transactions to different full " +"nodes." +msgstr "" + +#: docs/blog/02_devnet_update.md:47 +msgid "" +"Fix CLI parsing: The `walrus` CLI now properly handles hyphens in blob IDs." +msgstr "" + +#: docs/blog/02_devnet_update.md:49 +msgid "" +"This update also increases the number of shards to 1000, which is more " +"representative of the expected value in Testnet and Mainnet." +msgstr "" + +#: docs/blog/03_whitepaper.md:3 +msgid "Announcing the Official Walrus Whitepaper" +msgstr "" + +#: docs/blog/03_whitepaper.md:5 +msgid "" +"In June, Mysten Labs announced Walrus, a new decentralized secure blob store " +"design, and introduced a developer preview that currently stores over " +"[12TiB](https://capacity.walrus.site/) of data. [Breaking the " +"Ice](https://info.breakingtheice.sui.io/) gathered over 200 developers to " +"build apps leveraging decentralized storage." +msgstr "" + +#: docs/blog/03_whitepaper.md:10 +msgid "" +"It is time to unveil the next stage of the project: Walrus will become an " +"independent decentralized network with its own utility token, WAL, that will " +"play a key role in the operation and governance of the network. Walrus will " +"be operated by storage nodes through a delegated proof-of-stake mechanism " +"using the WAL token. An independent Walrus foundation will encourage the " +"advancement and adoption of Walrus, and support its community of users and " +"developers." +msgstr "" + +#: docs/blog/03_whitepaper.md:16 +msgid "" +"Today, we published the Walrus [whitepaper](../walrus.pdf) (also on " +"[GitHub](https://github.com/MystenLabs/walrus-docs/blob/main/docs/walrus.pdf)) " +"that offers additional details, including:" +msgstr "" + +#: docs/blog/03_whitepaper.md:20 +msgid "" +"The encoding scheme and Read / Write operations Walrus uses to ensure both " +"security and efficient scaling to 100s and 1000s of storage nodes, including " +"interactions with the Sui blockchain which serves as a coordination layer " +"for Walrus’ operations." +msgstr "" + +#: docs/blog/03_whitepaper.md:23 +msgid "" +"The reconfiguration of storage nodes across epochs, and how the protocol " +"ensures available blobs on Walrus remain available over long periods of time." +msgstr "" + +#: docs/blog/03_whitepaper.md:25 +msgid "" +"The tokenomics of Walrus based on the WAL token, including how staking and " +"staking rewards are structured, how pricing and payments for storage are " +"handled and distributed in each epoch, and the governance of key system " +"parameters." +msgstr "" + +#: docs/blog/03_whitepaper.md:28 +msgid "" +"Forward-looking design options, such as a cheap mechanism to challenge and " +"audit storage nodes, options for ensuring reads with a higher service " +"quality, possibly against a payment, and designs that empower light nodes to " +"meaningfully contribute to the protocol’s robustness, serve reads, and be " +"rewarded." +msgstr "" + +#: docs/blog/03_whitepaper.md:33 +msgid "" +"The whitepaper focuses on the steady-state design aspects of Walrus. Further " +"details about the project, such as timelines, opportunities for community " +"participation, how to join the network as a storage node, and plans around " +"light nodes, will be shared in subsequent posts." +msgstr "" + +#: docs/blog/03_whitepaper.md:37 +msgid "To be part of this journey:" +msgstr "" + +#: docs/blog/03_whitepaper.md:39 +msgid "Follow us on [Twitter](https://x.com/WalrusProtocol)" +msgstr "" + +#: docs/blog/03_whitepaper.md:40 +msgid "Join our [Discord](https://discord.com/invite/walrusprotocol)" +msgstr "" + +#: docs/blog/03_whitepaper.md:41 +msgid "[Build apps](../index.md) on Walrus" +msgstr "" + +#: docs/blog/03_whitepaper.md:42 +msgid "[Publish a Walrus Site](../walrus-sites/intro.md) and share it" +msgstr "" + +#: docs/blog/04_testnet_update.md:5 +msgid "Published on: 2024-10-17" +msgstr "" + +#: docs/blog/04_testnet_update.md:7 +msgid "" +"Today, a community of operators launches the first public Walrus Testnet. " +"This is an important milestone in validating the operation of Walrus as a " +"decentralized blob store, by operating it on a set of independent storage " +"nodes, that change over time through a delegated proof of stake mechanism. " +"The Testnet also brings functionality updates relating to governance, " +"epochs, and blob deletion." +msgstr "" + +#: docs/blog/04_testnet_update.md:13 +msgid "Blob deletion" +msgstr "" + +#: docs/blog/04_testnet_update.md:15 +msgid "" +"The most important user-facing new feature is optional blob deletion. The " +"uploader of a blob can optionally indicate a blob is \"deletable\". This " +"information is stored in the Sui blob metadata object, and is also included " +"in the event denoting when the blob is certified. Subsequently, the owner of " +"the Sui blob metadata object can \"delete\" it. As a result storage for the " +"remaining period is reclaimed and can be used by subsequent blob storage " +"operations." +msgstr "" + +#: docs/blog/04_testnet_update.md:21 +msgid "" +"Blob deletion allows more fine-grained storage cost management: smart " +"contracts that wrap blob metadata objects can define logic that stores blobs " +"and delete them to minimize costs, and reclaim storage space before Walrus " +"epochs end." +msgstr "" + +#: docs/blog/04_testnet_update.md:25 +msgid "" +"However, blob deletion is not an effective privacy mechanism in itself: " +"copies of the blob may exist outside Walrus storage nodes on caches and " +"end-user stores or devices. Furthermore, if the identical blob is stored by " +"multiple Walrus users, the blob will still be available on Walrus until no " +"copy exists. Thus deleting your own copy of a blob cannot guarantee that it " +"is deleted from Walrus as a whole." +msgstr "" + +#: docs/blog/04_testnet_update.md:31 +msgid "" +"Find out how to [upload and delete deletable " +"blobs](../usage/client-cli.md#reclaiming-space-via-deletable-blobs) thought " +"the CLI." +msgstr "" + +#: docs/blog/04_testnet_update.md:34 +msgid "" +"Find out more about how [delete operations " +"work](../dev-guide/dev-operations.md#delete)." +msgstr "" + +#: docs/blog/04_testnet_update.md:36 +msgid "Epochs" +msgstr "" + +#: docs/blog/04_testnet_update.md:38 +msgid "" +"Walrus Testnet enables multiple epochs. Initially, the epoch duration is set " +"to a single day to ensure the logic of epoch change is thoroughly tested. At " +"Mainnet, epochs will likely be multiple weeks long." +msgstr "" + +#: docs/blog/04_testnet_update.md:42 +msgid "" +"The progress of epochs makes the expiry epoch of blobs meaningful, and blobs " +"will become unavailable after their expiry epoch. The store command may be " +"used to extend the expiry epoch of a blob that is still available. This " +"operation is efficient and only affects payments and metadata, and does not " +"re-upload blob contents." +msgstr "" + +#: docs/blog/04_testnet_update.md:47 +msgid "" +"Find out the [current " +"epoch](../usage/client-cli.md#walrus-system-information) through the CLI." +msgstr "" + +#: docs/blog/04_testnet_update.md:48 +msgid "" +"Find out how to store a blob for [multiple " +"epochs](../usage/client-cli.md#storing-querying-status-and-reading-blobs)." +msgstr "" + +#: docs/blog/04_testnet_update.md:51 +msgid "The WAL token and the Testnet WAL faucet" +msgstr "" + +#: docs/blog/04_testnet_update.md:53 +msgid "" +"Payments for blob storage and extending blob expiry are denominated in " +"Testnet WAL, a Walrus token issued on the Sui Testnet. Testnet WAL has no " +"value, and an unlimited supply; so no need to covet or hoard it, it's just " +"for testing purposes and only issued on Sui Testnet." +msgstr "" + +#: docs/blog/04_testnet_update.md:57 +msgid "" +"WAL also has a smaller unit called FROST, similar to MIST for SUI. 1 WAL is " +"equal to 1 billion (1000000000) FROST." +msgstr "" + +#: docs/blog/04_testnet_update.md:60 +msgid "" +"To make Testnet WAL available to all who want to experiment with the Walrus " +"Testnet we provide a utility and smart contract to convert Testnet SUI " +"(which also has no value) into Testnet WAL using a one-to-one exchange rate. " +"This is chosen arbitrarily, and generally one should not read too much into " +"the actual WAL denominated costs of storage on Testnet. They have been " +"chosen arbitrarily." +msgstr "" + +#: docs/blog/04_testnet_update.md:65 +msgid "" +"Find out how to [request Testnet WAL " +"tokens](../usage/setup.md#testnet-wal-faucet) through the CLI." +msgstr "" + +#: docs/blog/04_testnet_update.md:67 +msgid "Decentralization through staking & unstaking" +msgstr "" + +#: docs/blog/04_testnet_update.md:69 +msgid "" +"The WAL token may also be used to stake with storage operators. Staked WAL " +"can be unstaked and re-staked with other operators or used to purchase " +"storage." +msgstr "" + +#: docs/blog/04_testnet_update.md:72 +msgid "" +"Each epoch storage nodes are selected and allocated storage shards according " +"to their delegated stake. At the end of each epoch payments for storing " +"blobs for the epoch are distributed to storage nodes and those that delegate " +"stake to them. Furthermore, important network parameters (such as total " +"available storage and storage price) are set by the selected storage " +"operators each epoch according to their stake weight." +msgstr "" + +#: docs/blog/04_testnet_update.md:78 +msgid "" +"A staking web dApp is provided to experiment with this functionality. " +"Community members have also created explorers that can be used to view " +"storage nodes when considering who to stake with. Staking ensures that the " +"ultimate governance of Walrus, directly in terms of storage nodes, and " +"indirectly in terms of parameters and software they chose, rests with WAL " +"Token holders." +msgstr "" + +#: docs/blog/04_testnet_update.md:83 +msgid "" +"Under the hood and over the next months we will be testing many aspects of " +"epoch changes and storage node committee changes: better shard allocation " +"mechanisms upon changes or storage node stake; efficient ways to sync state " +"between storage nodes; as well as better ways for storage nodes to follow " +"Sui event streams." +msgstr "" + +#: docs/blog/04_testnet_update.md:88 +msgid "Explore the [Walrus staking dApp](https://stake.walrus.site)." +msgstr "" + +#: docs/blog/04_testnet_update.md:89 +msgid "" +"Look at recent activity on the [Walrus " +"Explorer](https://walruscan.com/testnet/home)." +msgstr "" + +#: docs/blog/04_testnet_update.md:91 +msgid "New Move contracts & documentation" +msgstr "" + +#: docs/blog/04_testnet_update.md:93 +msgid "" +"As part of the Testnet release of Walrus, the documentation and Move Smart " +"contracts have been updated, and can be found in the [`walrus-docs` " +"repository](https://github.com/MystenLabs/walrus-docs)." +msgstr "" + +#: docs/blog/04_testnet_update.md:97 +msgid "New Walrus Sites features" +msgstr "" + +#: docs/blog/04_testnet_update.md:99 +msgid "" +"With the move to Walrus Testnet, Walrus Sites have also been updated! The " +"new features in this update greatly increase the flexibility, speed, and " +"security of Walrus Sites. Developers can now specify client-side routing " +"rules, and add custom HTTP headers to the portals' responses for their site, " +"expanding the possibilities for what Walrus Sites can do." +msgstr "" + +#: docs/blog/04_testnet_update.md:104 +msgid "" +"[Migrate now](../walrus-sites/tutorial-migration.md) to take advantage of " +"these new features! The old Walrus Sites, based on Walrus Devnet, will still " +"be available for a short time. However, Devnet will be wiped soon (as " +"described below), so it is recommended to migrate as soon as possible." +msgstr "" + +#: docs/blog/04_testnet_update.md:108 +msgid "Discontinuation of Walrus Devnet" +msgstr "" + +#: docs/blog/04_testnet_update.md:110 +msgid "" +"The previous Walrus Devnet instance is now deprecated and **will be shut " +"down after 2024-10-31**. All data stored on Walrus Devnet (including Walrus " +"Sites) will no longer be accessible at that point. You need to re-upload all " +"data to Walrus Testnet if you want it to remain accessible. Walrus Sites " +"also need to be migrated as described on the dedicated [migration " +"page](../walrus-sites/tutorial-migration.md)." +msgstr "" + +#: docs/design/objectives_use_cases.md:5 +msgid "" +"Walrus supports operations to store and read blobs, and to prove and verify " +"their availability. It ensures content survives storage nodes suffering " +"Byzantine faults and remains available and retrievable. It provides APIs to " +"access the stored content over a CLI, SDKs and over web2 HTTP technologies, " +"and supports content delivery infrastructures like caches and content " +"distribution networks (CDNs)." +msgstr "" + +#: docs/design/objectives_use_cases.md:11 +msgid "" +"Under the hood, storage cost is a small fixed multiple of the size of blobs " +"(around 5x). Advanced erasure coding keeps the cost low, in contrast to the " +"full replication of data traditional to blockchains, such as the >100x " +"multiple for data stored in Sui objects. As a result, storage of much bigger " +"resources (up to several GiB) is possible on Walrus at substantially lower " +"cost than on Sui or other blockchains. Because encoded blobs are stored on " +"all storage nodes, Walrus also provides superior robustness than designs " +"with a small amount of replicas storing the full blob." +msgstr "" + +#: docs/design/objectives_use_cases.md:18 +msgid "" +"Walrus uses the Sui chain for coordination and payments. Available storage " +"is represented as Sui objects that can be acquired, owned, split, merged, " +"and transferred. Storage space can be tied to a stored blob for a period of " +"time, with the resulting Sui object used to prove availability on chain in " +"smart contracts, or off chain using light clients." +msgstr "" + +#: docs/design/objectives_use_cases.md:23 +msgid "" +"The [next chapter](./overview.md) discusses the above operations relating to " +"storage, retrieval, and availability in detail." +msgstr "" + +#: docs/design/objectives_use_cases.md:26 +msgid "" +"In the future, we plan to include in Walrus some minimal governance to allow " +"storage nodes to change between storage epochs. Walrus is also compatible " +"with periodic payments for continued storage. We also plan to implement " +"storage attestation based on challenges to get confidence that blobs are " +"stored or at least available. Walrus also allows light nodes that store " +"small parts of blobs to get rewards for proving availability and assisting " +"recovery. We will cover these topics in later documents. We also provide " +"details of the encoding scheme in a separate document." +msgstr "" + +#: docs/design/objectives_use_cases.md:33 +msgid "Non-objectives" +msgstr "" + +#: docs/design/objectives_use_cases.md:35 +msgid "There are a few things that Walrus explicitly is not:" +msgstr "" + +#: docs/design/objectives_use_cases.md:37 +msgid "" +"Walrus does not reimplement a CDN that might be geo-replicated or have less " +"than tens of milliseconds of latency. Instead, it ensures that traditional " +"CDNs are usable and compatible with Walrus caches." +msgstr "" + +#: docs/design/objectives_use_cases.md:41 +msgid "" +"Walrus does not re-implement a full smart contracts platform with consensus " +"or execution. It relies on Sui smart contracts when necessary, to manage " +"Walrus resources and processes including payments, storage epochs, and so on." +msgstr "" + +#: docs/design/objectives_use_cases.md:45 +msgid "" +"Walrus supports storage of any blob, including encrypted blobs. However, " +"Walrus itself is not the distributed key management infrastructure that " +"manages and distributed encryption or decryption keys to support a full " +"private storage eco-system. It can, however, provide the storage layer for " +"such infrastructures." +msgstr "" + +#: docs/design/objectives_use_cases.md:50 +msgid "Use cases" +msgstr "" + +#: docs/design/objectives_use_cases.md:52 +msgid "" +"App builders may use Walrus in conjunction with any L1 or L2 blockchains to " +"build experiences that require large amounts of data to be stored in a " +"decentralized manner and possibly certified as available:" +msgstr "" + +#: docs/design/objectives_use_cases.md:56 +msgid "" +"**Storage of media for NFT or dApps:** Walrus can directly store and serve " +"media such as images, sounds, sprites, videos, other game assets, and so on. " +"This is publicly available media that is accessed using HTTP requests at " +"caches to create multimedia dApps." +msgstr "" + +#: docs/design/objectives_use_cases.md:60 +msgid "" +"**AI related use cases:** Walrus can store clean data sets of training data, " +"datasets with a known and verified provenance, models, weights and proofs of " +"correct training for AI models. It can also store and ensure the " +"availability of an AI model output." +msgstr "" + +#: docs/design/objectives_use_cases.md:64 +msgid "" +"**Storage of long term archival of blockchain history:** Walrus can act as a " +"lower-cost decentralized store to store blockchain history. For Sui, this " +"can include sequences of checkpoints with all associated transaction and " +"effects content, as well as historic snapshots of the blockchain state, " +"code, or binaries." +msgstr "" + +#: docs/design/objectives_use_cases.md:69 +msgid "" +"**Support availability for L2s:** Walrus allows parties to certify the " +"availability of blobs, as required by L2s that need data to be stored and be " +"attested as available to all. This may also include availability of extra " +"audit data such as validity proofs, zero knowledge proofs of correct " +"execution or large fraud proofs." +msgstr "" + +#: docs/design/objectives_use_cases.md:74 +msgid "" +"**Support a fully decentralized web experience:** Walrus can host fully " +"decentralized web experiences, including all resources (such as js, css, " +"html, media). These can not only provide content, but also host the UX of " +"dApps to enable applications with fully decentralized front end and back " +"ends on chain. Walrus puts the full \"web\" into web3." +msgstr "" + +#: docs/design/objectives_use_cases.md:79 +msgid "" +"**Support subscription models for media:** Creators can store encrypted " +"media on Walrus and only provide access via decryption keys to parties that " +"have paid a subscription fee or have paid for content. Walrus provides the " +"storage, encryption and decryption needs to happen off the system." +msgstr "" + +#: docs/design/overview.md:3 +msgid "System overview" +msgstr "" + +#: docs/design/overview.md:5 +msgid "" +"This chapter provides an overview of the [architecture](./architecture.md) " +"and [encoding mechanisms](./encoding.md) of the Walrus system." +msgstr "" + +#: docs/design/overview.md:8 +msgid "" +"Use the [glossary](../glossary.md) as a reference for many of the bolded " +"terms used in this documentation." +msgstr "" + +#: docs/design/architecture.md:3 +msgid "Basic architecture and security assumptions" +msgstr "" + +#: docs/design/architecture.md:5 +msgid "The key actors in the Walrus architecture are the following:" +msgstr "" + +#: docs/design/architecture.md:7 +msgid "" +"**Users** through **clients** want to store and read **blobs** identified by " +"their **blob ID**." +msgstr "" + +#: docs/design/architecture.md:9 +msgid "" +"These actors are ready to pay for service when it comes to writes and " +"non-best-effort reads. Users also want to prove the **availability** of a " +"blob to third parties without the cost of sending or receiving the full blob." +msgstr "" + +#: docs/design/architecture.md:14 +msgid "" +"Users might be malicious in various ways: they might not want to pay for " +"services, prove the availability of unavailable blobs, modify/delete blobs " +"without authorization, try to exhaust resources of storage nodes, and so on." +msgstr "" + +#: docs/design/architecture.md:18 +msgid "**Storage nodes** hold one or many **shards** within a **storage epoch**." +msgstr "" + +#: docs/design/architecture.md:20 +msgid "" +"Each blob is erasure-encoded into many **slivers**. Slivers from each stored " +"blob become part of all shards. A shard at any storage epoch is associated " +"with a storage node that actually stores all slivers of the shard and is " +"ready to serve them." +msgstr "" + +#: docs/design/architecture.md:24 +msgid "" +"A Sui smart contract controls the assignment of shards to storage nodes " +"within **storage epochs**, and Walrus assumes that more than 2/3 of the " +"shards are managed by correct storage nodes within each storage epoch. This " +"means that Walrus must tolerate up to 1/3 of the shards managed by Byzantine " +"storage nodes (approximately 1/3 of the storage nodes being Byzantine) " +"within each storage epoch and across storage epochs." +msgstr "" + +#: docs/design/architecture.md:30 +msgid "" +"All clients and storage nodes operate a blockchain client (specifically on " +"Sui), and mediate payments, resources (space), mapping of shards to storage " +"nodes, and metadata through blockchain smart contracts. Users interact with " +"the blockchain to acquire storage resources and upload certificates for " +"stored blobs. Storage nodes listen to the blockchain events to coordinate " +"their operations." +msgstr "" + +#: docs/design/architecture.md:36 +msgid "" +"Walrus supports any additional number of optional infrastructure actors that " +"can operate in a permissionless way:" +msgstr "" + +#: docs/design/architecture.md:39 +msgid "" +"**Aggregators** are clients that reconstruct blobs from slivers and make " +"them available to users over traditional web2 technologies (such as HTTP). " +"They are optional in that end users may reconstruct blobs directly or run a " +"local aggregator to perform Walrus reads over web2 technologies locally." +msgstr "" + +#: docs/design/architecture.md:44 +msgid "" +"**Caches** are aggregators with additional caching functionality to decrease " +"latency and reduce load on storage nodes. Such cache infrastructures may " +"also act as CDNs, split the cost of blob reconstruction over many requests, " +"be better connected, and so on. A client can always verify that reads from " +"such infrastructures are correct." +msgstr "" + +#: docs/design/architecture.md:49 +msgid "" +"**Publishers** are clients that help end users store a blob using web2 " +"technologies, using less bandwidth and custom logic." +msgstr "" + +#: docs/design/architecture.md:52 +msgid "" +"In effect, they receive the blob to be published over traditional web2 " +"protocols (like HTTP) and run the Walrus store protocol on the end user's " +"behalf. This includes encoding the blob into slivers, distributing the " +"slivers to storage nodes, collecting storage-node signatures and aggregating " +"them into a certificate, as well as all other on-chain actions." +msgstr "" + +#: docs/design/architecture.md:57 +msgid "" +"They are optional in that a user can directly interact with Sui and the " +"storage nodes to store blobs. An end user can always verify that a publisher " +"performed their duties correctly by checking that an event associated with " +"the **[point of availability](./properties.md)** for the blob exists on " +"chain and then either performing a read to see if Walrus returns the blob or " +"encoding the blob and comparing the result to the blob ID in the certificate." +msgstr "" + +#: docs/design/architecture.md:64 +msgid "" +"Aggregators, publishers, and end users are not considered trusted components " +"of the system, and they might deviate from the protocol arbitrarily. " +"However, some of the security properties of Walrus only hold for honest end " +"users that use honest intermediaries (caches and publishers). Walrus " +"provides a means for end users to audit the correct operation of both caches " +"and publishers." +msgstr "" + +#: docs/design/encoding.md:3 +msgid "Encoding, overheads, and verification" +msgstr "" + +#: docs/design/encoding.md:5 +msgid "" +"The following list summarizes the basic encoding and cryptographic " +"techniques used in Walrus:" +msgstr "" + +#: docs/design/encoding.md:7 +msgid "" +"An [erasure code](https://en.wikipedia.org/wiki/Erasure_code) encode " +"algorithm takes a blob, splits it into a number k " +"of symbols, and encodes it into n\\>k symbols in " +"such a way that a subset of these n symbols can be used to " +"reconstruct the blob." +msgstr "" + +#: docs/design/encoding.md:11 +msgid "" +"Walrus uses a highly efficient erasure code and selects k such that a " +"third of symbols can be used to reconstruct the blob by the decode algorithm." +msgstr "" + +#: docs/design/encoding.md:14 +msgid "" +"The encoding is _systematic_, meaning that some storage nodes hold part of " +"the original blob, allowing for fast random-access reads." +msgstr "" + +#: docs/design/encoding.md:17 +msgid "" +"All encoding and decoding operations are deterministic, and encoders have no " +"discretion about it." +msgstr "" + +#: docs/design/encoding.md:19 +msgid "" +"For each blob, multiple symbols are combined into a **sliver**, which is " +"then assigned to a shard." +msgstr "" + +#: docs/design/encoding.md:21 +msgid "" +"Storage nodes manage one or more shards, and corresponding slivers of each " +"blob are distributed to all the storage shards." +msgstr "" + +#: docs/design/encoding.md:24 +msgid "" +"The detailed encoding setup results in an expansion of the blob size by a " +"factor of 4.55. This is independent of the " +"number of shards and the number of storage nodes." +msgstr "" + +#: docs/design/encoding.md:29 +msgid "" +"Each blob is also associated with some metadata including a **blob ID** to " +"allow verification:" +msgstr "" + +#: docs/design/encoding.md:31 +msgid "" +"The blob ID is computed as an authenticator of the set of all shard data and " +"metadata (byte size, encoding, blob hash)." +msgstr "" + +#: docs/design/encoding.md:34 +msgid "" +"Walrus hashes a sliver representation in each of the shards and adds the " +"resulting hashes into a Merkle tree. Then the root of the Merkle tree is the " +"blob hash used to derive the blob ID that identifies the blob in the system." +msgstr "" + +#: docs/design/encoding.md:38 +msgid "" +"Each storage node can use the blob ID to check if some shard data belongs to " +"a blob using the authenticated structure corresponding to the blob hash " +"(Merkle tree). A successful check means that the data is indeed as intended " +"by the writer of the blob." +msgstr "" + +#: docs/design/encoding.md:42 +msgid "" +"As the writer of a blob might have incorrectly encoded a blob (by mistake or " +"on purpose), any party that reconstructs a blob ID from shard slivers must " +"check that it encodes to the correct blob ID. The same is necessary when " +"accepting any blob claiming to be a specific blob ID." +msgstr "" + +#: docs/design/encoding.md:46 +msgid "" +"This process involves re-encoding the blob using the erasure code, and " +"deriving the blob ID again to check that the blob matches. This prevents a " +"malformed blob (incorrectly erasure coded) from ever being read as a valid " +"blob at any correct recipient." +msgstr "" + +#: docs/design/encoding.md:50 +msgid "" +"A set of slivers equal to the reconstruction threshold belonging to a blob " +"ID that are either inconsistent or lead to the reconstruction of a different " +"ID represent an incorrect encoding. This happens only if the user that " +"encoded the blob was faulty or malicious and encoded it incorrectly." +msgstr "" + +#: docs/design/encoding.md:54 +msgid "" +"Walrus can extract one symbol per sliver to form an inconsistency proof. " +"Storage nodes can delete slivers belonging to inconsistently encoded blobs, " +"and upon request return either the inconsistency proof or an inconsistency " +"certificate posted on chain." +msgstr "" + +#: docs/design/operations.md:5 +msgid "" +"Walrus operations can be separated in [interactions with the Sui " +"chain](./operations-sui.md), which is used by Walrus for coordination and " +"governance, and [off-chain interactions](./operations-off-chain.md) between " +"clients and storage nodes." +msgstr "" + +#: docs/design/operations-sui.md:3 +msgid "Operations on Sui" +msgstr "" + +#: docs/design/operations-sui.md:5 +msgid "" +"Walrus uses Sui smart contracts to coordinate storage operations as " +"resources that have a lifetime, and payments. Smart contracts also " +"facilitate governance to determine the storage nodes holding each storage " +"shard. The following content outlines these operations and refers to them as " +"part of the read/write paths." +msgstr "" + +#: docs/design/operations-sui.md:10 +msgid "" +"Metadata is the only blob element ever exposed to Sui or its validators, as " +"the content of blobs is always stored off chain on Walrus storage nodes and " +"caches. The storage nodes or caches do not have to overlap with any Sui " +"infrastructure components (such as validators), and the storage epochs can " +"be of different lengths and not have the same start/end times as Sui epochs." +msgstr "" + +#: docs/design/operations-sui.md:15 +msgid "Storage resource life cycle on Sui" +msgstr "" + +#: docs/design/operations-sui.md:17 +msgid "" +"A number of Sui smart contracts hold the metadata of the Walrus system and " +"all its entities." +msgstr "" + +#: docs/design/operations-sui.md:19 +msgid "" +"A **Walrus system object** holds the committee of storage nodes for the " +"current storage epoch. The system object also holds the total available " +"space on Walrus and the price per unit of storage (1 KiB)." +msgstr "" + +#: docs/design/operations-sui.md:23 +msgid "" +"These values are determined by 2/3 agreement between the storage nodes for " +"the storage epoch. Users can pay to purchase storage space for some time " +"duration. These space resources can be split, merged, and transferred. " +"Later, they can be used to place a blob ID into Walrus." +msgstr "" + +#: docs/design/operations-sui.md:27 +msgid "" +"The **storage fund** holds funds for storing blobs over one or multiple " +"storage epochs. When purchasing storage space from the system object, users " +"pay into the storage fund separated over multiple storage epochs. Payments " +"are made each epoch to storage nodes according to performance (details " +"follow)." +msgstr "" + +#: docs/design/operations-sui.md:32 +msgid "" +"A user acquires some storage through the contracts or transfer and can " +"assign to it a blob ID, signifying they want to store this blob ID into it. " +"This emits a Move **resource event** that storage nodes listen for to expect " +"and authorize off-chain storage operations." +msgstr "" + +#: docs/design/operations-sui.md:36 +msgid "" +"Eventually a user holds an off-chain **availability certificate** from " +"storage nodes for a blob ID. The user **uploads the certificate on chain** " +"to signal that the blob ID is available for an availability period. The " +"certificate is checked against the latest Walrus committee, and an " +"**availability event** is emitted for the blob ID if correct. This is the " +"point of availability for the blob." +msgstr "" + +#: docs/design/operations-sui.md:42 +msgid "" +"At a later time, a certified blob's storage can be **extended** by adding a " +"storage object to it with a longer expiry period. This facility can be used " +"by smart contracts to extend the availability of blobs stored in perpetuity " +"as long as funds exist to continue providing storage." +msgstr "" + +#: docs/design/operations-sui.md:46 +msgid "" +"In case a blob ID is not correctly encoded, an **inconsistency proof " +"certificate** can be uploaded on chain at a later time. This action emits an " +"**inconsistent blob event**, signaling that the blob ID read results always " +"return `None`. This indicates that its slivers can be deleted by storage " +"nodes, except for an indicator to return `None`." +msgstr "" + +#: docs/design/operations-sui.md:51 +msgid "" +"Users writing to Walrus, need to perform Sui transactions to acquire storage " +"and certify blobs. Users creating or consuming proofs for attestations of " +"blob availability read the chain only to prove or verify emission of events. " +"Nodes read the blockchain to get committee metadata only once per epoch, and " +"then request slivers directly from storage nodes by blob ID to perform reads " +"on Walrus resources." +msgstr "" + +#: docs/design/operations-sui.md:57 +msgid "Governance operations on Sui" +msgstr "" + +#: docs/design/operations-sui.md:59 +msgid "" +"Each Walrus storage epoch is represented by the Walrus system object that " +"contains a storage committee and various metadata or storage nodes, like the " +"mapping between shards and storage nodes, available space, and current costs." +msgstr "" + +#: docs/design/operations-sui.md:63 +msgid "" +"Users can go to the system object for the period and **buy some storage** " +"amount for one or more storage epochs. At each storage epoch there is a " +"price for storage, and the payment provided becomes part of a **storage " +"fund** for all the storage epochs that span the storage bought. There is a " +"maximum number of storage epochs in the future for which storage can be " +"bought (approximately 2 years). Storage is a resource that can be split, " +"merged, and transferred." +msgstr "" + +#: docs/design/operations-sui.md:69 +msgid "" +"At the end of the storage epoch, part of the funds in the **storage fund " +"need to be allocated to storage nodes**. The idea here is for storage nodes " +"to perform light audits of each other, and suggest which nodes are to be " +"paid based on the performance of these audits." +msgstr "" + +#: docs/design/operations-off-chain.md:5 +msgid "" +"While Walrus operations happen off Sui, they might interact with the " +"blockchain flows defining the resource life cycle." +msgstr "" + +#: docs/design/operations-off-chain.md:8 +msgid "Write paths" +msgstr "" + +#: docs/design/operations-off-chain.md:10 +msgid "![Write paths of Walrus](../assets/WriteFlow.png)" +msgstr "" + +#: docs/design/operations-off-chain.md:12 +msgid "Systems overview of writes, illustrated in the previous image:" +msgstr "" + +#: docs/design/operations-off-chain.md:14 +msgid "" +"A user acquires a storage resource of appropriate size and duration on " +"chain, either by directly buying it on the Walrus system object or a " +"secondary market. A user can split, merge, and transfer owned storage " +"resources." +msgstr "" + +#: docs/design/operations-off-chain.md:18 +msgid "" +"When users want to store a blob, they first erasure code it and compute the " +"blob ID. Then they can perform the following steps themselves, or use a " +"publisher to perform steps on their behalf." +msgstr "" + +#: docs/design/operations-off-chain.md:22 +msgid "" +"The user goes on chain (Sui) and updates a storage resource to register the " +"blob ID with the desired size and lifetime. This emits an event, received by " +"storage nodes. After the user receives they then continue the upload." +msgstr "" + +#: docs/design/operations-off-chain.md:26 +msgid "" +"The user sends the blob metadata to all storage nodes and each of the blob " +"slivers to the storage node that currently manages the corresponding shard." +msgstr "" + +#: docs/design/operations-off-chain.md:29 +msgid "" +"A storage node managing a shard receives a sliver and checks it against the " +"blob ID. It also checks that there is a blob resource with the blob ID that " +"is authorized to store a blob. If correct, the storage node then signs a " +"statement that it holds the sliver for blob ID (and metadata) and returns it " +"to the user." +msgstr "" + +#: docs/design/operations-off-chain.md:34 +msgid "" +"The user puts together the signatures returned from storage nodes into an " +"availability certificate and submits it to the chain. When the certificate " +"is verified on chain, an availability event for the blob ID is emitted, and " +"all other storage nodes seek to download any missing shards for the blob ID. " +"This event emitted by Sui is the [point of availability " +"(PoA)](./properties.md) for the blob ID." +msgstr "" + +#: docs/design/operations-off-chain.md:40 +msgid "" +"After the PoA, and without user involvement, storage nodes sync and recover " +"any missing metadata and slivers." +msgstr "" + +#: docs/design/operations-off-chain.md:43 +msgid "" +"The user waits for 2/3 of shard signatures to return to create the " +"certificate of availability. The rate of the code is below 1/3, allowing for " +"reconstruction even if only 1/3 of shards return the sliver for a read. " +"Because at most 1/3 of the storage nodes can fail, this ensures " +"reconstruction if a reader requests slivers from all storage nodes. The full " +"process can be mediated by a publisher that receives a blob and drives the " +"process to completion." +msgstr "" + +#: docs/design/operations-off-chain.md:49 +msgid "Refresh availability" +msgstr "" + +#: docs/design/operations-off-chain.md:51 +msgid "" +"Because no content data is required to refresh the duration of storage, " +"refresh is conducted fully on chain within the protocol. To request an " +"extension to the availability of a blob, a user provides an appropriate " +"storage resource. Upon success this emits an event that storage nodes " +"receive to extend the time for which each sliver is stored." +msgstr "" + +#: docs/design/operations-off-chain.md:56 +msgid "Inconsistent resource flow" +msgstr "" + +#: docs/design/operations-off-chain.md:58 +msgid "" +"When a correct storage node tries to reconstruct a sliver for a blob past " +"[PoA](./properties.md), this may fail if the encoding of the blob was " +"incorrect. In this case, the storage node can instead extract an " +"inconsistency proof for the blob ID. It then uses the proof to create an " +"inconsistency certificate and upload it on chain." +msgstr "" + +#: docs/design/operations-off-chain.md:63 +msgid "The flow is as follows:" +msgstr "" + +#: docs/design/operations-off-chain.md:65 +msgid "" +"A storage node fails to reconstruct a sliver, and instead computes an " +"inconsistency proof." +msgstr "" + +#: docs/design/operations-off-chain.md:67 +msgid "" +"The storage node sends the blob ID and inconsistency proof to all storage " +"nodes of the Walrus epoch. The storage nodes verify the proof and sign it." +msgstr "" + +#: docs/design/operations-off-chain.md:70 +msgid "" +"The storage node who found the inconsistency aggregates the signatures into " +"an inconsistency certificate and sends it to the Walrus smart contract, " +"which verifies it and emits a inconsistent resource event." +msgstr "" + +#: docs/design/operations-off-chain.md:74 +msgid "" +"Upon receiving an inconsistent resource event, correct storage nodes delete " +"sliver data for the blob ID and record in the metadata to return `None` for " +"the blob ID for the [availability period](./properties.md). No storage " +"attestation challenges are issued for this blob ID." +msgstr "" + +#: docs/design/operations-off-chain.md:79 +msgid "" +"```admonish tip title=\"Reading inconsistent blobs\"\n" +"A blob ID that is inconsistent always resolves to `None` upon reading " +"because\n" +"the read process re-encodes the received blob to check that the blob ID is " +"correctly derived from a\n" +"consistent encoding. This means that an inconsistency proof reveals only a " +"true fact to storage\n" +"nodes (that do not otherwise run decoding), and does not change the output " +"of read in any case.\n" +"\n" +"However, partial reads leveraging the systematic nature of the encoding " +"might successfully return\n" +"partial reads for inconsistently encoded files. Thus, if consistency and " +"availability of reads is\n" +"important, dApps should do full reads rather than partial reads.\n" +"```" +msgstr "" + +#: docs/design/operations-off-chain.md:90 +msgid "Read paths" +msgstr "" + +#: docs/design/operations-off-chain.md:92 +msgid "" +"A user can read stored blobs either directly or through an aggregator/cache. " +"The operations are the same for direct user access, for aggregators, and " +"caches in case of cache misses. In practice, most reads happen through " +"caches for blobs that are hot and do not result in requests to storage nodes." +msgstr "" + +#: docs/design/operations-off-chain.md:96 +msgid "" +"The reader gets the metadata for the blob ID from any storage node, and " +"authenticates it using the blob ID." +msgstr "" + +#: docs/design/operations-off-chain.md:99 +msgid "" +"The reader then sends a request to the storage nodes for the shards " +"corresponding to the blob ID and waits for f+1 to respond. Sufficient requests " +"are sent in parallel to ensure low latency for reads." +msgstr "" + +#: docs/design/operations-off-chain.md:103 +msgid "" +"The reader authenticates the slivers returned with the blob ID, reconstructs " +"the blob, and decides whether the contents are a valid blob or inconsistent." +msgstr "" + +#: docs/design/operations-off-chain.md:106 +msgid "" +"Optionally, for a cache, the result is cached and can be served without " +"reconstruction until it is evicted from the cache. Requests for the blob to " +"the cache return the blob contents, or a proof that the blob is " +"inconsistently encoded." +msgstr "" + +#: docs/design/operations-off-chain.md:110 +msgid "Challenge mechanism for storage attestation" +msgstr "" + +#: docs/design/operations-off-chain.md:112 +msgid "" +"During an epoch, a correct storage node challenges all shards to provide " +"symbols for blob slivers past PoA:" +msgstr "" + +#: docs/design/operations-off-chain.md:115 +msgid "" +"The list of available blobs for the epoch is determined by the sequence of " +"Sui events up to the past epoch. Inconsistent blobs are not challenged, and " +"a record proving this status can be returned instead." +msgstr "" + +#: docs/design/operations-off-chain.md:119 +msgid "" +"A challenge sequence is determined by providing a seed to the challenged " +"shard. The sequence is then computed based both on the seed **and** the " +"content of each challenged blob ID. This creates a sequential read " +"dependency." +msgstr "" + +#: docs/design/operations-off-chain.md:123 +msgid "" +"The response to the challenge provides the sequence of shard contents for " +"the blob IDs in a timely manner." +msgstr "" + +#: docs/design/operations-off-chain.md:126 +msgid "" +"The challenger node uses thresholds to determine whether the challenge was " +"passed, and reports the result on chain." +msgstr "" + +#: docs/design/operations-off-chain.md:129 +msgid "The challenge/response communication is authenticated." +msgstr "" + +#: docs/design/operations-off-chain.md:131 +msgid "" +"Challenges provide some reassurance that the storage node can actually " +"recover shard data in a probabilistic manner, avoiding storage nodes getting " +"payment without any evidence they might retrieve shard data. The sequential " +"nature of the challenge and some reasonable timeout also ensures that the " +"process is timely." +msgstr "" + +#: docs/design/properties.md:3 +msgid "Walrus assurance and security properties" +msgstr "" + +#: docs/design/properties.md:5 +msgid "" +"The properties below hold true subject to the assumption that for all " +"storage epochs 2/3 of shards are operated by storage nodes that faithfully " +"and correctly follow the Walrus protocol." +msgstr "" + +#: docs/design/properties.md:8 +msgid "" +"As described [before](./encoding.md), each blob is encoded into slivers " +"using an erasure code and a blob ID is cryptographically derived. For a " +"given blob ID there is a **point of availability (PoA)** and an " +"**availability period**, observable through an event on the Sui chain." +msgstr "" + +#: docs/design/properties.md:12 +msgid "The following properties relate to the PoA:" +msgstr "" + +#: docs/design/properties.md:14 +msgid "" +"After the PoA, for a blob ID, any correct user that performs a read within " +"the availability period will eventually terminate and get a value V which is " +"either the blob contents F or `None`." +msgstr "" + +#: docs/design/properties.md:16 +msgid "" +"After the PoA, if two correct users perform a read and get V and V, " +"respectively, then V=V." +msgstr "" + +#: docs/design/properties.md:18 +msgid "" +"A correct user with an appropriate storage resource can always perform store " +"for a blob F with a blob " +"ID and advance the protocol until the PoA." +msgstr "" + +#: docs/design/properties.md:20 +msgid "" +"A read after the PoA for a blob F " +"stored by a correct user, will result in F." +msgstr "" + +#: docs/design/properties.md:22 +msgid "" +"Some assurance properties ensure the correct internal processes of Walrus " +"storage nodes. For the purposes of defining these, an **inconsistency " +"proof** proves that a blob ID was stored by a user that incorrectly encoded " +"a blob." +msgstr "" + +#: docs/design/properties.md:26 +msgid "" +"After the PoA and for a blob ID stored by a correct user, a storage node is " +"always able to recover the correct slivers for its shards for this blob ID." +msgstr "" + +#: docs/design/properties.md:28 +msgid "" +"After the PoA, if a correct storage node cannot recover a sliver, it can " +"produce an inconsistency proof for the blob ID." +msgstr "" + +#: docs/design/properties.md:30 +msgid "" +"If a blob ID is stored by a correct user, an inconsistently proof cannot be " +"derived for it." +msgstr "" + +#: docs/design/properties.md:31 +msgid "" +"A read by a correct user for a blob ID for which an inconsistency proof may " +"exist returns `None`." +msgstr "" + +#: docs/design/properties.md:33 +msgid "" +"Note that there is no delete operation and a blob ID past the PoA will be " +"available for the full availability period." +msgstr "" + +#: docs/design/properties.md:36 +msgid "" +"```admonish tip title=\"Rule of thumb\"\n" +"Before the PoA it is the responsibility of a client to ensure the " +"availability of a blob and its\n" +"upload to Walrus. After the PoA it is the responsibility of Walrus as a " +"system to maintain the\n" +"availability of the blob as part of its operation for the full availability " +"period remaining.\n" +"Emission of the event corresponding to the PoA for a blob ID attests its " +"availability.\n" +"```" +msgstr "" + +#: docs/design/future.md:5 +msgid "In this document, we left out details of the following features:" +msgstr "" + +#: docs/design/future.md:7 +msgid "" +"**Shard transfer and recovery upon storage epoch change:** The encoding " +"scheme used in Walrus has been designed to allow for highly efficient " +"recovery in case of shard failures. A storage node attempting to recover " +"slivers only needs to get data of the same magnitude as the missing data to " +"reconstruct them." +msgstr "" + +#: docs/design/future.md:11 +msgid "" +"**Details of light clients that can be used to sample availability:** " +"Individual clients may sample the certified blobs from Sui metadata and " +"sample the availability of some slivers that they store. On-chain bounties " +"may be used to retrieve these slivers for missing blobs." +msgstr "" + +#: docs/usage/setup.md:5 +msgid "" +"At this stage of the project, our Walrus code is not yet public. Instead, we " +"provide a pre-compiled `walrus` client binary for macOS (Intel and Apple " +"CPUs) and Ubuntu, which supports different usage patterns (see [the next " +"chapter](./interacting.md)). This chapter describes the " +"[prerequisites](#prerequisites), [installation](#installation), and " +"[configuration](#configuration) of the Walrus client." +msgstr "" + +#: docs/usage/setup.md:11 +msgid "Prerequisites: Sui wallet and Testnet SUI" +msgstr "" + +#: docs/usage/setup.md:13 +msgid "" +"```admonish tip title=\"Quick wallet setup\"\n" +"If you just want to set up a new SUI wallet for Walrus, you can skip this " +"section and use the\n" +"`walrus generate-sui-wallet` command after [installing " +"Walrus](#installation). In that case, make\n" +"sure to set the `wallet_config` parameter in the [Walrus\n" +"configuration](#advanced-configuration-optional) to the newly generated " +"wallet.\n" +"```" +msgstr "" + +#: docs/usage/setup.md:20 +msgid "" +"Interacting with Walrus requires a valid Sui Testnet wallet with some amount " +"of SUI tokens. The normal way to set this up is via the Sui CLI; see the " +"[installation " +"instructions](https://docs.sui.io/guides/developer/getting-started/sui-install) " +"in the Sui documentation." +msgstr "" + +#: docs/usage/setup.md:25 +msgid "" +"After installing the Sui CLI, you need to set up a Testnet wallet by running " +"`sui client`, which prompts you to set up a new configuration. Make sure to " +"point it to Sui Testnet, you can use the full node at " +"`https://fullnode.testnet.sui.io:443` for this. See " +"[here](https://docs.sui.io/guides/developer/getting-started/connect) for " +"further details." +msgstr "" + +#: docs/usage/setup.md:30 +msgid "" +"If you already have a Sui wallet configured, you can directly set up the " +"Testnet environment (if you don't have it yet)," +msgstr "" + +#: docs/usage/setup.md:37 +msgid "and switch the active environment to it:" +msgstr "" + +#: docs/usage/setup.md:43 +msgid "" +"After this, you should get something like this (everything besides the " +"`testnet` line is optional):" +msgstr "" + +#: docs/usage/setup.md:45 +msgid "" +"```terminal\n" +"$ sui client envs\n" +"╭──────────┬─────────────────────────────────────┬────────╮\n" +"│ alias │ url │ active │\n" +"├──────────┼─────────────────────────────────────┼────────┤\n" +"│ devnet │ https://fullnode.devnet.sui.io:443 │ │\n" +"│ localnet │ http://127.0.0.1:9000 │ │\n" +"│ testnet │ https://fullnode.testnet.sui.io:443 │ * │\n" +"│ mainnet │ https://fullnode.mainnet.sui.io:443 │ │\n" +"╰──────────┴─────────────────────────────────────┴────────╯\n" +"```" +msgstr "" + +#: docs/usage/setup.md:57 +msgid "" +"Finally, make sure you have at least one gas coin with at least 1 SUI. You " +"can obtain one from the Testnet faucet:" +msgstr "" + +#: docs/usage/setup.md:64 +msgid "After some seconds, you should see your new SUI coins:" +msgstr "" + +#: docs/usage/setup.md:75 +msgid "" +"The system-wide wallet will be used by Walrus if no other path is specified. " +"If you want to use a different Sui wallet, you can specify this in the " +"[Walrus configuration file](#configuration) or when [running the " +"CLI](./interacting.md)." +msgstr "" + +#: docs/usage/setup.md:79 +msgid "Installation" +msgstr "" + +#: docs/usage/setup.md:81 +msgid "" +"We currently provide the `walrus` client binary for macOS (Intel and Apple " +"CPUs), Ubuntu, and Windows:" +msgstr "" + +#: docs/usage/setup.md:84 +msgid "OS" +msgstr "" + +#: docs/usage/setup.md:84 +msgid "CPU" +msgstr "" + +#: docs/usage/setup.md:86 docs/usage/setup.md:87 +msgid "Ubuntu" +msgstr "" + +#: docs/usage/setup.md:86 docs/usage/setup.md:89 docs/usage/setup.md:90 +msgid "Intel 64bit" +msgstr "" + +#: docs/usage/setup.md:86 +msgid "" +"[`ubuntu-x86_64`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-testnet-latest-ubuntu-x86_64)" +msgstr "" + +#: docs/usage/setup.md:87 +msgid "Intel 64bit (generic)" +msgstr "" + +#: docs/usage/setup.md:87 +msgid "" +"[`ubuntu-x86_64-generic`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-testnet-latest-ubuntu-x86_64-generic)" +msgstr "" + +#: docs/usage/setup.md:88 docs/usage/setup.md:89 +msgid "MacOS" +msgstr "" + +#: docs/usage/setup.md:88 +msgid "Apple Silicon" +msgstr "" + +#: docs/usage/setup.md:88 +msgid "" +"[`macos-arm64`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-testnet-latest-macos-arm64)" +msgstr "" + +#: docs/usage/setup.md:89 +msgid "" +"[`macos-x86_64`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-testnet-latest-macos-x86_64)" +msgstr "" + +#: docs/usage/setup.md:90 +msgid "Windows" +msgstr "" + +#: docs/usage/setup.md:90 +msgid "" +"[`windows-x86_64.exe`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-testnet-latest-windows-x86_64.exe)" +msgstr "" + +#: docs/usage/setup.md:92 +msgid "" +"```admonish title=\"Windows\"\n" +"We now offer a pre-built binary also for Windows. However, most of the " +"remaining instructions assume\n" +"a UNIX-based system for the directory structure, commands, etc. If you use " +"Windows, you may need to\n" +"adapt most of those.\n" +"```" +msgstr "" + +#: docs/usage/setup.md:98 +msgid "" +"You can download the latest build from our Google Cloud Storage (GCS) bucket " +"(correctly setting the `$SYSTEM` variable):" +msgstr "" + +#: docs/usage/setup.md:102 +msgid "" +"# set this to your system: ubuntu-x86_64, ubuntu-x86_64-generic, " +"macos-x86_64, macos-arm64, windows-x86_64.exe\n" +msgstr "" + +#: docs/usage/setup.md:107 +msgid "" +"On Ubuntu, you should generally use the `ubuntu-x86_64` version. However, " +"this is incompatible with old hardware and certain virtualized environments " +"(throwing an \"Illegal instruction (core dumped)\" error); in these cases " +"you can use the `ubuntu-x86_64-generic` version." +msgstr "" + +#: docs/usage/setup.md:111 +msgid "" +"To be able to run it simply as `walrus`, move the binary to any directory " +"included in your `$PATH` environment variable. Standard locations are " +"`/usr/local/bin/`, `$HOME/bin/`, or `$HOME/.local/bin/`." +msgstr "" + +#: docs/usage/setup.md:121 +msgid "" +"Once this is done, you should be able to simply type `walrus` in your " +"terminal. For example you can get usage instructions (see [the next " +"chapter](./interacting.md) for further details):" +msgstr "" + +#: docs/usage/setup.md:134 +msgid "" +"```admonish tip\n" +"Our latest Testnet Walrus binaries are also available on Walrus itself, " +"namely on\n" +", for example, " +".\n" +"```" +msgstr "" + +#: docs/usage/setup.md:139 +msgid "Previous versions (optional)" +msgstr "" + +#: docs/usage/setup.md:141 +msgid "" +"In addition to the latest version of the `walrus` binary, the GCS bucket " +"also contains previous versions. An overview in XML format is available at " +"." +msgstr "" + +#: docs/usage/setup.md:145 +msgid "Configuration" +msgstr "" + +#: docs/usage/setup.md:147 +msgid "" +"The Walrus client needs to know about the Sui objects that store the Walrus " +"system and staking information, see the [developer " +"guide](../dev-guide/sui-struct.md#system-and-staking-information). These " +"need to be configured in a file `~/.config/walrus/client_config.yaml`." +msgstr "" + +#: docs/usage/setup.md:151 +msgid "The current Testnet deployment uses the following objects:" +msgstr "" + +#: docs/usage/setup.md:154 docs/operator-guide/storage-node.md:40 +msgid "system_object" +msgstr "" + +#: docs/usage/setup.md:154 docs/usage/setup.md:176 +msgid "staking_object" +msgstr "" + +#: docs/usage/setup.md:155 docs/usage/setup.md:177 +msgid "exchange_object" +msgstr "" + +#: docs/usage/setup.md:159 +msgid "" +"The easiest way to obtain the latest configuration is by downloading it from " +"." +msgstr "" + +#: docs/usage/setup.md:162 +msgid "Custom path (optional)" +msgstr "" + +#: docs/usage/setup.md:164 +msgid "" +"By default, the Walrus client will look for the `client_config.yaml` (or " +"`client_config.yml`) configuration file in the current directory, " +"`$XDG_CONFIG_HOME/walrus/`, `~/.config/walrus/`, or `~/.walrus/`. However, " +"you can place the file anywhere and name it anything you like; in this case " +"you need to use the `--config` option when running the `walrus` binary." +msgstr "" + +#: docs/usage/setup.md:169 +msgid "Advanced configuration (optional)" +msgstr "" + +#: docs/usage/setup.md:171 +msgid "The configuration file currently supports the following parameters:" +msgstr "" + +#: docs/usage/setup.md:174 +msgid "" +"# These are the only mandatory fields. These objects are specific for a " +"particular Walrus\n" +"# deployment but then do not change over time.\n" +"system_object" +msgstr "" + +#: docs/usage/setup.md:179 +msgid "" +"# You can define a custom path to your Sui wallet configuration here. If " +"this is unset or `null`,\n" +"# the wallet is configured from `./sui_config.yaml` (relative to your " +"current working directory), or\n" +"# the system-wide wallet at `~/.sui/sui_config/client.yaml` in this order.\n" +"wallet_config" +msgstr "" + +#: docs/usage/setup.md:184 +msgid "" +"# The following parameters can be used to tune the networking behavior of " +"the client. There is no\n" +"# risk in playing around with these values. In the worst case, you may not " +"be able to store/read\n" +"# blob due to timeouts or other networking errors.\n" +"communication_config" +msgstr "" + +#: docs/usage/setup.md:189 +msgid "max_concurrent_writes" +msgstr "" + +#: docs/usage/setup.md:190 +msgid "max_concurrent_sliver_reads" +msgstr "" + +#: docs/usage/setup.md:191 +msgid "max_concurrent_metadata_reads" +msgstr "" + +#: docs/usage/setup.md:192 +msgid "max_concurrent_status_reads" +msgstr "" + +#: docs/usage/setup.md:193 +msgid "max_data_in_flight" +msgstr "" + +#: docs/usage/setup.md:194 +msgid "reqwest_config" +msgstr "" + +#: docs/usage/setup.md:195 +msgid "total_timeout" +msgstr "" + +#: docs/usage/setup.md:196 docs/usage/setup.md:200 docs/usage/setup.md:203 +#: docs/usage/setup.md:210 docs/usage/setup.md:213 docs/usage/setup.md:220 +msgid "secs" +msgstr "" + +#: docs/usage/setup.md:197 docs/usage/setup.md:201 docs/usage/setup.md:204 +#: docs/usage/setup.md:211 docs/usage/setup.md:214 docs/usage/setup.md:221 +msgid "nanos" +msgstr "" + +#: docs/usage/setup.md:198 +msgid "pool_idle_timeout" +msgstr "" + +#: docs/usage/setup.md:199 +msgid "http2_keep_alive_timeout" +msgstr "" + +#: docs/usage/setup.md:202 +msgid "http2_keep_alive_interval" +msgstr "" + +#: docs/usage/setup.md:205 +msgid "http2_keep_alive_while_idle" +msgstr "" + +#: docs/usage/setup.md:206 +msgid "request_rate_config" +msgstr "" + +#: docs/usage/setup.md:207 +msgid "max_node_connections" +msgstr "" + +#: docs/usage/setup.md:208 +msgid "max_retries" +msgstr "" + +#: docs/usage/setup.md:209 +msgid "min_backoff" +msgstr "" + +#: docs/usage/setup.md:212 +msgid "max_backoff" +msgstr "" + +#: docs/usage/setup.md:215 +msgid "disable_proxy" +msgstr "" + +#: docs/usage/setup.md:216 +msgid "disable_native_certs" +msgstr "" + +#: docs/usage/setup.md:217 +msgid "sliver_write_extra_time" +msgstr "" + +#: docs/usage/setup.md:218 +msgid "factor" +msgstr "" + +#: docs/usage/setup.md:219 +msgid "base" +msgstr "" + +#: docs/usage/setup.md:224 +msgid "" +"```admonish warning title=\"Important\"\n" +"If you specify a wallet path, make sure your wallet is set up for Sui " +"**Testnet**.\n" +"```" +msgstr "" + +#: docs/usage/setup.md:228 +msgid "Testnet WAL faucet" +msgstr "" + +#: docs/usage/setup.md:230 +msgid "" +"The Walrus Testnet uses Testnet WAL tokens to buy storage and stake. Testnet " +"WAL tokens have no value and can be exchanged (at a 1:1 rate) for some " +"Testnet SUI tokens, which also have no value, through the following command:" +msgstr "" + +#: docs/usage/setup.md:238 +msgid "" +"You can check that you have received Testnet WAL by checking the Sui " +"balances:" +msgstr "" + +#: docs/usage/setup.md:254 +msgid "" +"By default, 0.5 SUI are exchanged for 0.5 WAL, but a different amount of SUI " +"may be exchanged using the `--amount` option (the value is in MIST/FROST), " +"and a specific SUI/WAL exchange object may be used through the " +"`--exchange-id` option. The `walrus get-wal --help` command provides more " +"information about those." +msgstr "" + +#: docs/usage/interacting.md:5 +msgid "We provide 3 ways to interact directly with the Walrus storage system:" +msgstr "" + +#: docs/usage/interacting.md:7 +msgid "" +"Through the Walrus [client command line interface (CLI)](./client-cli.md)." +msgstr "" + +#: docs/usage/interacting.md:8 +msgid "Through a [JSON API](./json-api.md) of the Walrus CLI." +msgstr "" + +#: docs/usage/interacting.md:9 +msgid "" +"Through an [HTTP API](./web-api.md) exposed by a public or local Walrus " +"client daemon." +msgstr "" + +#: docs/usage/interacting.md:11 +msgid "" +"Furthermore, users can [stake and unstake](./stake.md) through the staking " +"dApp or Sui smart contracts." +msgstr "" + +#: docs/usage/client-cli.md:3 +msgid "Using the Walrus client" +msgstr "" + +#: docs/usage/client-cli.md:5 +msgid "" +"The `walrus` binary can be used to interact with Walrus as a client. See the " +"[setup chapter](./setup.md) for prerequisites, installation, and " +"configuration." +msgstr "" + +#: docs/usage/client-cli.md:8 +msgid "Detailed usage information is available through" +msgstr "" + +#: docs/usage/client-cli.md:14 +msgid "" +"Each sub-command of `walrus` can also be called with `--help` to print its " +"specific arguments and their meaning." +msgstr "" + +#: docs/usage/client-cli.md:17 +msgid "Walrus system information" +msgstr "" + +#: docs/usage/client-cli.md:19 +msgid "" +"Information about the Walrus system is available through the `walrus info` " +"command. For example, `walrus info` gives an overview of the number of " +"storage nodes and shards in the system, the maximum blob size, and the " +"current cost in (Testnet) WAL for storing blobs:" +msgstr "" + +#: docs/usage/client-cli.md:48 +msgid "" +"```admonish tip title=\"FROST and WAL\"\n" +"FROST is the smaller unit of WAL, similar to MIST for SUI. The conversion is " +"also the same as for\n" +"SUI: `1 WAL = 1 000 000 000 FROST`.\n" +"```" +msgstr "" + +#: docs/usage/client-cli.md:53 +msgid "" +"Additional information such as encoding parameters and sizes, BFT system " +"information, and information on the storage nodes and their shard " +"distribution can be viewed with the `--dev` argument: `walrus info --dev`." +msgstr "" + +#: docs/usage/client-cli.md:57 +msgid "Storing, querying status, and reading blobs" +msgstr "" + +#: docs/usage/client-cli.md:71 +msgid "" +"```admonish tip title=\"Obtaining Testnet WAL\"\n" +"You can exchange Testnet SUI for Testnet WAL by running `walrus get-wal`. " +"See the [setup\n" +"page](./setup.md#testnet-wal-faucet) for further details.\n" +"```" +msgstr "" + +#: docs/usage/client-cli.md:76 +msgid "Storing blobs on Walrus can be achieved through the following command:" +msgstr "" + +#: docs/usage/client-cli.md:82 +msgid "" +"The store command takes a CLI argument `--epochs ` (or `-e`) " +"indicating the number of epochs the blob should be stored for. This defaults " +"to 1 epoch, namely the current one." +msgstr "" + +#: docs/usage/client-cli.md:85 +msgid "" +"```admonish tip title=\"Automatic optimizations\"\n" +"When storing a blob, the client performs a number of automatic " +"optimizations, including the\n" +"following:\n" +"\n" +"- If the blob is already stored as a *permanent blob* on Walrus for a " +"sufficient number of epochs\n" +" the command does not store it again. This behavior can be overwritten with " +"the `--force` (or `-f`)\n" +" CLI option, which stores the blob again and creates a fresh blob object on " +"Sui belonging to the\n" +" wallet address.\n" +"- If the user's wallet has a compatible storage resource, this one is " +"(re-)used instead of buying a\n" +" new one.\n" +"- If the blob is already certified on Walrus but as a *deletable* blob or " +"not for a sufficient\n" +" number of epochs, the command skips sending data to the storage nodes and " +"just collects the\n" +" availability certificate\n" +"```" +msgstr "" + +#: docs/usage/client-cli.md:100 +msgid "" +"The status of a blob can be queried through one of the following commands:" +msgstr "" + +#: docs/usage/client-cli.md:107 +msgid "" +"This returns whether the blob is stored and its availability period. If you " +"specify a file with the `--file` option,the CLI re-encodes the content of " +"the file and derives the blob ID before checking the status." +msgstr "" + +#: docs/usage/client-cli.md:111 +msgid "" +"When the blob is available, the `blob-status` command also returns the " +"`BlobCertified` Sui event ID, which consists of a transaction ID and a " +"sequence number in the events emitted by the transaction. The existence of " +"this event certifies the availability of the blob." +msgstr "" + +#: docs/usage/client-cli.md:115 +msgid "Reading blobs from Walrus can be achieved through the following command:" +msgstr "" + +#: docs/usage/client-cli.md:121 +msgid "" +"By default the blob data is written to the standard output. The `--out " +"` CLI option (or `-o`) can be used to specify an output file name. The " +"`--rpc-url ` (or `-r`) may be used to specify a Sui RPC node to use " +"instead of the one set in the wallet configuration or the default one." +msgstr "" + +#: docs/usage/client-cli.md:125 +msgid "Reclaiming space via deletable blobs" +msgstr "" + +#: docs/usage/client-cli.md:127 +msgid "" +"By default `walrus store` uploads a blob and Walrus will keep it available " +"until after its expiry epoch. Not even the uploader may delete it " +"beforehand. However, optionally, the store command may be invoked with the " +"`--deletable` flag, to indicate the blob may be deleted before its expiry by " +"the owner of the Sui blob object representing the blob. Deletable blobs are " +"indicated as such in the Sui events that certify them, and should not be " +"relied upon for availability by others." +msgstr "" + +#: docs/usage/client-cli.md:133 +msgid "A deletable blob may be deleted with the command:" +msgstr "" + +#: docs/usage/client-cli.md:139 +msgid "" +"Optionally the delete command can be invoked by specifying a `--file ` " +"option, to derive the blob ID from a file, or `--object-id ` to " +"delete the blob in the Sui blob object specified." +msgstr "" + +#: docs/usage/client-cli.md:142 +msgid "" +"The `delete` command reclaims the storage object associated with the deleted " +"blob, which is re-used to store new blobs. The delete operation provides " +"flexibility around managing storage costs and re-using storage." +msgstr "" + +#: docs/usage/client-cli.md:146 +msgid "" +"The delete operation has limited utility for privacy: It only deletes " +"slivers from the current epoch storage nodes, and subsequent epoch storage " +"nodes, if no other user has uploaded a copy of the same blob. If another " +"copy of the same blob exists in Walrus the delete operation will not make " +"the blob unavailable for download, and `walrus read` invocations will " +"download it. Copies of the public blob may be cached or downloaded by users, " +"and these copies are not deleted." +msgstr "" + +#: docs/usage/client-cli.md:152 +msgid "" +"```admonish danger title=\"Delete reclaims space only\"\n" +"**All blobs stored in Walrus are public and discoverable by all.** The " +"`delete` command will\n" +"not delete slivers if other copies of the blob are stored on Walrus possibly " +"by other users.\n" +"It does not delete blobs from caches, slivers from past storage nodes, or " +"copies\n" +"that could have been made by users before the blob was deleted.\n" +"```" +msgstr "" + +#: docs/usage/client-cli.md:159 +msgid "Blob ID utilities" +msgstr "" + +#: docs/usage/client-cli.md:161 +msgid "" +"The `walrus blob-id ` may be used to derive the blob ID of any file. " +"The blob ID is a commitment to the file, and any blob with the same ID will " +"decode to the same content. The blob ID is a 256 bit number and represented " +"on some Sui explorer as a decimal large number. The command `walrus " +"convert-blob-id ` may be used to convert it to a base64 URL " +"safe encoding used by the command line tools and other APIs." +msgstr "" + +#: docs/usage/client-cli.md:167 +msgid "" +"The `walrus list-blobs` command lists all the non expired Sui blob object " +"that the current account owns, including their blob ID, object ID, and " +"metadata about expiry and deletable status. The option `--include-expired` " +"also lists expired blob objects." +msgstr "" + +#: docs/usage/client-cli.md:171 +msgid "Changing the default configuration" +msgstr "" + +#: docs/usage/client-cli.md:173 +msgid "" +"Use the `--config` option to specify a custom path to the [configuration " +"location](../usage/setup.md#configuration)." +msgstr "" + +#: docs/usage/client-cli.md:176 +msgid "" +"The `--wallet ` argument may be used to specify a non-standard Sui " +"wallet configuration file. And a `--gas-budget ` argument may be " +"used to change the maximum amount of Sui (in MIST) that the command is " +"allowed to use." +msgstr "" + +#: docs/usage/json-api.md:3 +msgid "JSON mode" +msgstr "" + +#: docs/usage/json-api.md:5 +msgid "" +"All Walrus client commands are also available in JSON mode. In this mode, " +"all the command-line flags of the original CLI command can be specified in " +"JSON format. The JSON mode therefore simplifies programmatic access to the " +"CLI." +msgstr "" + +#: docs/usage/json-api.md:9 +msgid "For example, to store a blob, run:" +msgstr "" + +#: docs/usage/json-api.md:13 +msgid "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"store\": {\n" +" \"file\": \"README.md\"\n" +" }\n" +" }\n" +" }'" +msgstr "" + +#: docs/usage/json-api.md:23 +msgid "Or, to read a blob knowing the blob ID:" +msgstr "" + +#: docs/usage/json-api.md:27 +msgid "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"read\": {\n" +" \"blobId\": \"4BKcDC0Ih5RJ8R0tFMz3MZVNZV8b2goT6_JiEEwNHQo\"\n" +" }\n" +" }\n" +" }'" +msgstr "" + +#: docs/usage/json-api.md:37 +msgid "" +"All options, default values, and commands are equal to those of the " +"\"standard\" CLI mode, except that they are written in \"camelCase\" instead " +"of \"kebab-case\"." +msgstr "" + +#: docs/usage/json-api.md:40 +msgid "The `json` command also accepts input from `stdin`." +msgstr "" + +#: docs/usage/json-api.md:42 +msgid "" +"The output of a `json` command will itself be JSON-formatted, again to " +"simplify parsing the results in a programmatic way. For example, the JSON " +"output can be piped to the `jq` command for parsing and manually extracting " +"relevant fields." +msgstr "" + +#: docs/usage/web-api.md:3 +msgid "Client Daemon mode & HTTP API" +msgstr "" + +#: docs/usage/web-api.md:5 +msgid "" +"In addition to the CLI and JSON modes, the Walrus client offers a _daemon " +"mode_. In this mode, it runs a simple web server offering HTTP interfaces to " +"store and read blobs in an _aggregator_ and _publisher_ role respectively. " +"We also offer [public aggregator and publisher services](#public-services) " +"to try the Walrus HTTP APIs without the need to run a local client." +msgstr "" + +#: docs/usage/web-api.md:11 +msgid "Starting the daemon locally" +msgstr "" + +#: docs/usage/web-api.md:13 +msgid "" +"You can run the daemon with the following command, to offer both an " +"aggregator and publisher on the same address (`127.0.0.1`) and port " +"(`31415`):" +msgstr "" + +#: docs/usage/web-api.md:17 +msgid "\"127.0.0.1:31415\"" +msgstr "" + +#: docs/usage/web-api.md:20 +msgid "" +"Or you may run the aggregator and publisher processes separately on " +"different addresses/ports:" +msgstr "" + +#: docs/usage/web-api.md:23 +msgid "\"127.0.0.1:31415\" # run an aggregator to read blobs\n" +msgstr "" + +#: docs/usage/web-api.md:24 +msgid "\"127.0.0.1:31416\" # run a publisher to store blobs\n" +msgstr "" + +#: docs/usage/web-api.md:27 +msgid "" +"The aggregator provides all read APIs, the publisher all the store APIs, and " +"the daemon provides both." +msgstr "" + +#: docs/usage/web-api.md:36 +msgid "Using a public aggregator or publisher" +msgstr "" + +#: docs/usage/web-api.md:38 +msgid "" +"For some use cases (e.g., a public website), or to just try out the HTTP " +"API, a publicly accessible aggregator and/or publisher is required. Several " +"entities run such aggregators and publishers, see the lists of public " +"[aggregators](#public-aggregators) and [publishers](#public-publishers) " +"below." +msgstr "" + +#: docs/usage/web-api.md:42 +msgid "" +"Public publishers limit requests to 10 MiB by default. If you want to upload " +"larger files, you need to [run your own publisher](#local-daemon) or use the " +"[CLI](./client-cli.md)." +msgstr "" + +#: docs/usage/web-api.md:45 +msgid "" +"Also, note that the publisher consumes (Testnet) SUI and WAL on the service " +"side, and a Mainnet deployment would likely not be able to provide " +"uncontrolled public access to publishing without requiring some " +"authentication and compensation for the funds used." +msgstr "" + +#: docs/usage/web-api.md:49 +msgid "Public aggregators" +msgstr "" + +#: docs/usage/web-api.md:51 +msgid "" +"The following is a list of know public aggregators; they are checked " +"periodically, but each of them may still be temporarily unavailable:" +msgstr "" + +#: docs/usage/web-api.md:54 +msgid "`https://aggregator.walrus-testnet.walrus.space`" +msgstr "" + +#: docs/usage/web-api.md:55 +msgid "`https://wal-aggregator-testnet.staketab.org`" +msgstr "" + +#: docs/usage/web-api.md:56 +msgid "`https://walrus-testnet-aggregator.bartestnet.com`" +msgstr "" + +#: docs/usage/web-api.md:57 +msgid "`https://walrus-testnet.blockscope.net`" +msgstr "" + +#: docs/usage/web-api.md:58 +msgid "`https://walrus-testnet-aggregator.nodes.guru`" +msgstr "" + +#: docs/usage/web-api.md:59 +msgid "`https://walrus-cache-testnet.overclock.run`" +msgstr "" + +#: docs/usage/web-api.md:60 +msgid "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" +msgstr "" + +#: docs/usage/web-api.md:61 +msgid "`https://walrus-testnet-aggregator.stakin-nodes.com`" +msgstr "" + +#: docs/usage/web-api.md:62 +msgid "`https://testnet-aggregator-walrus.kiliglab.io`" +msgstr "" + +#: docs/usage/web-api.md:63 +msgid "`https://walrus-cache-testnet.latitude-sui.com`" +msgstr "" + +#: docs/usage/web-api.md:64 +msgid "`https://walrus-testnet-aggregator.nodeinfra.com`" +msgstr "" + +#: docs/usage/web-api.md:65 +msgid "`https://walrus-tn.juicystake.io:9443`" +msgstr "" + +#: docs/usage/web-api.md:66 +msgid "`https://walrus-agg-testnet.chainode.tech:9002`" +msgstr "" + +#: docs/usage/web-api.md:67 +msgid "`https://walrus-testnet-aggregator.starduststaking.com:11444`" +msgstr "" + +#: docs/usage/web-api.md:68 +msgid "`http://walrus-testnet-aggregator.everstake.one:9000`" +msgstr "" + +#: docs/usage/web-api.md:69 +msgid "`http://walrus.testnet.pops.one:9000`" +msgstr "" + +#: docs/usage/web-api.md:70 +msgid "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" +msgstr "" + +#: docs/usage/web-api.md:71 +msgid "`http://aggregator.testnet.sui.rpcpool.com:9000`" +msgstr "" + +#: docs/usage/web-api.md:72 +msgid "`http://walrus.krates.ai:9000`" +msgstr "" + +#: docs/usage/web-api.md:73 +msgid "`http://walrus-testnet.stakingdefenseleague.com:9000`" +msgstr "" + +#: docs/usage/web-api.md:74 +msgid "`http://walrus.sui.thepassivetrust.com:9000`" +msgstr "" + +#: docs/usage/web-api.md:76 +msgid "Public publishers" +msgstr "" + +#: docs/usage/web-api.md:78 +msgid "`https://publisher.walrus-testnet.walrus.space`" +msgstr "" + +#: docs/usage/web-api.md:79 +msgid "`https://wal-publisher-testnet.staketab.org`" +msgstr "" + +#: docs/usage/web-api.md:80 +msgid "`https://walrus-testnet-publisher.bartestnet.com`" +msgstr "" + +#: docs/usage/web-api.md:81 +msgid "`https://walrus-testnet-publisher.nodes.guru`" +msgstr "" + +#: docs/usage/web-api.md:82 +msgid "`https://sui-walrus-testnet.bwarelabs.com/publisher`" +msgstr "" + +#: docs/usage/web-api.md:83 +msgid "`https://walrus-testnet-publisher.stakin-nodes.com`" +msgstr "" + +#: docs/usage/web-api.md:84 +msgid "`https://testnet-publisher-walrus.kiliglab.io`" +msgstr "" + +#: docs/usage/web-api.md:85 +msgid "`https://walrus-testnet-publisher.nodeinfra.com`" +msgstr "" + +#: docs/usage/web-api.md:86 +msgid "`https://walrus-testnet.blockscope.net:11444`" +msgstr "" + +#: docs/usage/web-api.md:87 +msgid "`https://walrus-publish-testnet.chainode.tech:9003`" +msgstr "" + +#: docs/usage/web-api.md:88 +msgid "`https://walrus-testnet-publisher.starduststaking.com:11445`" +msgstr "" + +#: docs/usage/web-api.md:89 +msgid "`http://walrus-publisher-testnet.overclock.run:9001`" +msgstr "" + +#: docs/usage/web-api.md:90 +msgid "`http://walrus-testnet-publisher.everstake.one:9001`" +msgstr "" + +#: docs/usage/web-api.md:91 +msgid "`http://walrus.testnet.pops.one:9001`" +msgstr "" + +#: docs/usage/web-api.md:92 +msgid "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" +msgstr "" + +#: docs/usage/web-api.md:93 +msgid "`http://publisher.testnet.sui.rpcpool.com:9001`" +msgstr "" + +#: docs/usage/web-api.md:94 +msgid "`http://walrus.krates.ai:9001`" +msgstr "" + +#: docs/usage/web-api.md:95 +msgid "`http://walrus-publisher-testnet.latitude-sui.com:9001`" +msgstr "" + +#: docs/usage/web-api.md:96 +msgid "`http://walrus-tn.juicystake.io:9090`" +msgstr "" + +#: docs/usage/web-api.md:97 +msgid "`http://walrus-testnet.stakingdefenseleague.com:9001`" +msgstr "" + +#: docs/usage/web-api.md:98 +msgid "`http://walrus.sui.thepassivetrust.com:9001`" +msgstr "" + +#: docs/usage/web-api.md:100 +msgid "HTTP API Usage" +msgstr "" + +#: docs/usage/web-api.md:102 +msgid "" +"For the following examples, we assume you set the `AGGREGATOR` and " +"`PUBLISHER` environment variables to your desired aggregator and publisher, " +"respectively. For example:" +msgstr "" + +#: docs/usage/web-api.md:106 +msgid "https://aggregator.walrus-testnet.walrus.space" +msgstr "" + +#: docs/usage/web-api.md:107 +msgid "https://publisher.walrus-testnet.walrus.space" +msgstr "" + +#: docs/usage/web-api.md:110 +msgid "" +"```admonish tip title=\"API specification\"\n" +"Walrus aggregators and publishers expose their API specifications at the " +"path `/v1/api`. You can\n" +"view this in the browser, e.g., at " +"\n" +"```" +msgstr "" + +#: docs/usage/web-api.md:115 docs/dev-guide/dev-operations.md:13 +msgid "Store" +msgstr "" + +#: docs/usage/web-api.md:117 +msgid "" +"You can interact with the daemon through simple HTTP PUT requests. For " +"example, with [cURL](https://curl.se), you can store blobs using a publisher " +"or daemon as follows:" +msgstr "" + +#: docs/usage/web-api.md:121 docs/usage/web-api.md:130 +#: docs/usage/web-api.md:159 +msgid "\"$PUBLISHER/v1/store\"" +msgstr "" + +#: docs/usage/web-api.md:121 +msgid "\"some string\" # store the string `some string` for 1 storage epoch\n" +msgstr "" + +#: docs/usage/web-api.md:122 +msgid "\"$PUBLISHER/v1/store?epochs=5\"" +msgstr "" + +#: docs/usage/web-api.md:122 +msgid "\"some/file\" # store file `some/file` for 5 storage epochs\n" +msgstr "" + +#: docs/usage/web-api.md:125 +msgid "" +"The store HTTP API end points return information about the blob stored in " +"JSON format. When a blob is stored for the first time, a `newlyCreated` " +"field contains information about the new blob:" +msgstr "" + +#: docs/usage/web-api.md:130 docs/usage/web-api.md:159 +msgid "\"some other string\"" +msgstr "" + +#: docs/usage/web-api.md:132 +msgid "\"newlyCreated\"" +msgstr "" + +#: docs/usage/web-api.md:133 +msgid "\"blobObject\"" +msgstr "" + +#: docs/usage/web-api.md:134 docs/usage/web-api.md:141 +msgid "\"id\"" +msgstr "" + +#: docs/usage/web-api.md:134 +msgid "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" +msgstr "" + +#: docs/usage/web-api.md:135 +msgid "\"storedEpoch\"" +msgstr "" + +#: docs/usage/web-api.md:136 docs/usage/web-api.md:162 +msgid "\"blobId\"" +msgstr "" + +#: docs/usage/web-api.md:136 docs/usage/web-api.md:162 +msgid "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" +msgstr "" + +#: docs/usage/web-api.md:137 +msgid "\"size\"" +msgstr "" + +#: docs/usage/web-api.md:138 +msgid "\"erasureCodeType\"" +msgstr "" + +#: docs/usage/web-api.md:138 +msgid "\"RedStuff\"" +msgstr "" + +#: docs/usage/web-api.md:139 +msgid "\"certifiedEpoch\"" +msgstr "" + +#: docs/usage/web-api.md:140 +msgid "\"storage\"" +msgstr "" + +#: docs/usage/web-api.md:141 +msgid "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" +msgstr "" + +#: docs/usage/web-api.md:142 +msgid "\"startEpoch\"" +msgstr "" + +#: docs/usage/web-api.md:143 docs/usage/web-api.md:167 +msgid "\"endEpoch\"" +msgstr "" + +#: docs/usage/web-api.md:144 +msgid "\"storageSize\"" +msgstr "" + +#: docs/usage/web-api.md:147 +msgid "\"encodedSize\"" +msgstr "" + +#: docs/usage/web-api.md:148 +msgid "\"cost\"" +msgstr "" + +#: docs/usage/web-api.md:153 +msgid "" +"The information returned is the content of the [Sui blob " +"object](../dev-guide/sui-struct.md)." +msgstr "" + +#: docs/usage/web-api.md:155 +msgid "" +"When the aggregator finds a certified blob with the same blob ID and a " +"sufficient validity period, it returns a `alreadyCertified` JSON structure:" +msgstr "" + +#: docs/usage/web-api.md:161 +msgid "\"alreadyCertified\"" +msgstr "" + +#: docs/usage/web-api.md:163 +msgid "\"event\"" +msgstr "" + +#: docs/usage/web-api.md:164 +msgid "\"txDigest\"" +msgstr "" + +#: docs/usage/web-api.md:164 +msgid "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" +msgstr "" + +#: docs/usage/web-api.md:165 +msgid "\"eventSeq\"" +msgstr "" + +#: docs/usage/web-api.md:165 +msgid "\"0\"" +msgstr "" + +#: docs/usage/web-api.md:172 +msgid "" +"The field `event` returns the [Sui event ID](../dev-guide/sui-struct.md) " +"that can be used to find the transaction that created the Sui Blob object on " +"the Sui explorer or using a Sui SDK." +msgstr "" + +#: docs/usage/web-api.md:175 docs/dev-guide/dev-operations.md:48 +msgid "Read" +msgstr "" + +#: docs/usage/web-api.md:177 +msgid "" +"Blobs may be read from an aggregator or daemon using HTTP GET. For example, " +"the following cURL command reads a blob and writes it to an output file:" +msgstr "" + +#: docs/usage/web-api.md:181 docs/usage/web-api.md:187 +msgid "\"$AGGREGATOR/v1/\"" +msgstr "" + +#: docs/usage/web-api.md:184 +msgid "" +"Alternatively you may print the contents of a blob in the terminal with the " +"cURL command:" +msgstr "" + +#: docs/usage/web-api.md:190 +msgid "" +"```admonish tip title=\"Content sniffing\"\n" +"Modern browsers will attempt to sniff the content type for such resources, " +"and will generally do a\n" +"good job of inferring content types for media. However, the aggregator on " +"purpose prevents such\n" +"sniffing from inferring dangerous executable types such as JavaScript or " +"style sheet types.\n" +"```" +msgstr "" + +#: docs/dev-guide/dev-guide.md:5 +msgid "" +"This guide introduces all the concepts needed to build applications that use " +"Walrus as a storage or availability layer. The " +"[overview](../design/overview.md) provides more background and explains in " +"more detail how Walrus operates internally." +msgstr "" + +#: docs/dev-guide/dev-guide.md:9 +msgid "This developer guide describes the following:" +msgstr "" + +#: docs/dev-guide/dev-guide.md:11 +msgid "" +"[Components](components.md) of Walrus of interest to developers that wish to " +"use it for storage or availability." +msgstr "" + +#: docs/dev-guide/dev-guide.md:13 +msgid "" +"[Operations](dev-operations.md) supported through client binaries, APIs, or " +"Sui operations." +msgstr "" + +#: docs/dev-guide/dev-guide.md:14 +msgid "" +"[The Sui structures](sui-struct.md) Walrus uses to store metadata, and how " +"they can be read from Sui smart contracts, or through the Sui SDK." +msgstr "" + +#: docs/dev-guide/dev-guide.md:17 +msgid "Refer again to the [glossary](../glossary.md) of terms as a reference." +msgstr "" + +#: docs/dev-guide/components.md:5 +msgid "" +"From a developer perspective, some Walrus components are objects and smart " +"contracts on Sui, and some components are Walrus-specific binaries and " +"services. As a rule, Sui is used to manage blob and storage node metadata, " +"while Walrus-specific services are used to store and read blob contents, " +"which can be very large." +msgstr "" + +#: docs/dev-guide/components.md:10 +msgid "Walrus defines a number of objects and smart contracts on Sui:" +msgstr "" + +#: docs/dev-guide/components.md:12 +msgid "" +"A shared _system object_ records and manages the current committee of " +"storage nodes." +msgstr "" + +#: docs/dev-guide/components.md:13 +msgid "" +"_Storage resources_ represent empty storage space that may be used to store " +"blobs." +msgstr "" + +#: docs/dev-guide/components.md:14 +msgid "" +"_Blob resources_ represent blobs being registered and certified as stored." +msgstr "" + +#: docs/dev-guide/components.md:15 +msgid "Changes to these objects emit _Walrus-related events_." +msgstr "" + +#: docs/dev-guide/components.md:17 +msgid "" +"The Walrus system object ID can be found in the Walrus `client_config.yaml` " +"file (see [Configuration](../usage/setup.md#configuration)). You may use any " +"Sui explorer to look at its content, as well as explore the content of blob " +"objects. There is more information about these in the [quick reference to " +"the Walrus Sui structures](sui-struct.md)." +msgstr "" + +#: docs/dev-guide/components.md:22 +msgid "" +"Walrus is also composed of a number of Walrus-specific services and binaries:" +msgstr "" + +#: docs/dev-guide/components.md:24 +msgid "" +"A client (binary) can be executed locally and provides a [Command Line " +"Interface (CLI)](../usage/client-cli.md), a [JSON API](../usage/json-api.md) " +"and an [HTTP API](../usage/web-api.md) to perform Walrus operations." +msgstr "" + +#: docs/dev-guide/components.md:27 +msgid "Aggregator services allow reading blobs via HTTP requests." +msgstr "" + +#: docs/dev-guide/components.md:28 +msgid "Publisher services are used store blobs to Walrus." +msgstr "" + +#: docs/dev-guide/components.md:29 +msgid "" +"A set of storage nodes store encoded blobs. These nodes form the " +"decentralized storage infrastructure of Walrus." +msgstr "" + +#: docs/dev-guide/components.md:32 +msgid "" +"Aggregators, publishers, and other services use the client APIs to interact " +"with Walrus. End users of services using Walrus interact with the store via " +"custom services, aggregators, or publishers that expose HTTP APIs to avoid " +"the need to run locally a binary client." +msgstr "" + +#: docs/dev-guide/dev-operations.md:5 +msgid "Blob encoding and blob ID" +msgstr "" + +#: docs/dev-guide/dev-operations.md:7 +msgid "" +"Walrus stores blobs across storage nodes in an [encoded " +"form](../design/encoding.md), and refers to blobs by their _blob ID_. The " +"blob ID is deterministically derived from the content of a blob and the " +"Walrus configuration. The blob ID of two files with the same content will be " +"the same." +msgstr "" + +#: docs/dev-guide/dev-operations.md:11 +msgid "" +"You can derive the blob ID of a file locally using the command: `walrus " +"blob-id `." +msgstr "" + +#: docs/dev-guide/dev-operations.md:15 +msgid "" +"Walrus may be used to **store a blob**, via the native client APIs or a " +"publisher." +msgstr "" + +#: docs/dev-guide/dev-operations.md:23 +msgid "" +"Under the hood a number of operations happen both on Sui as well as on " +"storage nodes:" +msgstr "" + +#: docs/dev-guide/dev-operations.md:25 +msgid "" +"The client or publisher encodes the blob and derives a _blob ID_ that " +"identifies the blob. This is a `u256` often encoded as a URL-safe base64 " +"string." +msgstr "" + +#: docs/dev-guide/dev-operations.md:27 +msgid "" +"A transaction is executed on Sui to purchase some storage from the system " +"object, and then to _register the blob ID_ occupying this storage. Client " +"APIs return the _Sui blob object ID_. The transactions use SUI to purchase " +"storage and pay for gas." +msgstr "" + +#: docs/dev-guide/dev-operations.md:30 +msgid "" +"Encoded slivers of the blob are distributed to all storage nodes. They each " +"sign a receipt." +msgstr "" + +#: docs/dev-guide/dev-operations.md:31 +msgid "" +"Signed receipts are aggregated and submitted to the Sui blob object to " +"_certify the blob_. Certifying a blob emits a Sui event with the blob ID and " +"the period of availability." +msgstr "" + +#: docs/dev-guide/dev-operations.md:34 +msgid "" +"A blob is considered available on Walrus once the corresponding Sui blob " +"object has been certified in the final step. The steps involved in a store " +"operation can be executed by the binary client, or a publisher that accepts " +"and publishes blobs via HTTP." +msgstr "" + +#: docs/dev-guide/dev-operations.md:38 +msgid "" +"Walrus currently allows the storage of blobs up to a maximum size that may " +"be determined through the [`walrus " +"info`](../usage/client-cli.md#walrus-system-information) CLI command. The " +"maximum blob size is currently 13.3 GiB. You may store larger blobs by " +"splitting them into smaller chunks." +msgstr "" + +#: docs/dev-guide/dev-operations.md:43 +msgid "" +"Blobs are stored for a certain number of _epochs_, as specified at the time " +"they were stored. Walrus storage nodes ensure that within these epochs a " +"read succeeds. The current Testnet uses a short epoch duration of one day " +"for testing purposes, but Mainnet epochs are likely to be longer such as " +"many weeks each." +msgstr "" + +#: docs/dev-guide/dev-operations.md:50 +msgid "" +"Walrus can also be used to **read a blob** after it is stored by providing " +"its blob ID. A read is executed by performing the following steps:" +msgstr "" + +#: docs/dev-guide/dev-operations.md:53 +msgid "" +"The system object on Sui is read to determine the Walrus storage node " +"committee." +msgstr "" + +#: docs/dev-guide/dev-operations.md:54 +msgid "" +"A number of storage nodes are queried for blob metadata and the slivers they " +"store." +msgstr "" + +#: docs/dev-guide/dev-operations.md:55 +msgid "" +"The blob is reconstructed from the recovered slivers and checked against the " +"blob ID." +msgstr "" + +#: docs/dev-guide/dev-operations.md:57 +msgid "" +"The steps involved in the read operation are performed by the binary client, " +"or the aggregator service that exposes an HTTP interface to read blobs. " +"Reads are extremely resilient and will succeed in recovering the blob in all " +"cases even if up to one-third of storage nodes are unavailable. In most " +"cases, after synchronization is complete, blob can be read even if " +"two-thirds of storage nodes are down." +msgstr "" + +#: docs/dev-guide/dev-operations.md:63 +msgid "Certify Availability" +msgstr "" + +#: docs/dev-guide/dev-operations.md:65 +msgid "" +"Walrus can be used to **certify the availability of a blob** using Sui. " +"Checking that this happened may currently be done in 3 different ways:" +msgstr "" + +#: docs/dev-guide/dev-operations.md:68 +msgid "" +"A Sui SDK read can be used to authenticate the certified blob event emitted " +"when the blob ID was certified on Sui. The client `walrus blob-status` " +"command may be used to identify the event ID that needs to be checked." +msgstr "" + +#: docs/dev-guide/dev-operations.md:71 +msgid "" +"A Sui SDK read may be used to authenticate the Sui blob object corresponding " +"to the blob ID, and check it is certified, before the expiry epoch, and not " +"deletable." +msgstr "" + +#: docs/dev-guide/dev-operations.md:74 +msgid "" +"A Sui smart contract can read the blob object on Sui (or a reference to it) " +"to check it is certified, before the expiry epoch, and not deletable." +msgstr "" + +#: docs/dev-guide/dev-operations.md:77 +msgid "" +"The underlying protocol of the [Sui light " +"client](https://github.com/MystenLabs/sui/tree/main/crates/sui-light-client) " +"returns digitally signed evidence for emitted events or objects, and can be " +"used by off-line or non-interactive applications as a proof of availability " +"for the blob ID for a certain number of epochs." +msgstr "" + +#: docs/dev-guide/dev-operations.md:83 +msgid "" +"Once a blob is certified, Walrus will ensure that sufficient slivers will " +"always be available on storage nodes to recover it within the specified " +"epochs." +msgstr "" + +#: docs/dev-guide/dev-operations.md:86 +msgid "Delete" +msgstr "" + +#: docs/dev-guide/dev-operations.md:88 +msgid "" +"Stored blobs can be optionally set as deletable by the user that creates " +"them. This metadata is stored in the Sui blob object, and whether a blob is " +"deletable or not is included in certified blob events. A deletable blob may " +"be deleted by the owner of the blob object, to reclaim and re-use the " +"storage resource associated with it." +msgstr "" + +#: docs/dev-guide/dev-operations.md:93 +msgid "" +"If no other copies of the blob exist in Walrus, deleting a blob will " +"eventually make it unrecoverable using read commands. However, if other " +"copies of the blob exist on Walrus, a delete command will reclaim storage " +"space for the user that invoked it, but will not make the blob unavailable " +"until all other copies have been deleted or expire." +msgstr "" + +#: docs/dev-guide/sui-struct.md:3 +msgid "Sui Structures" +msgstr "" + +#: docs/dev-guide/sui-struct.md:5 +msgid "This section is optional and enables advanced use cases." +msgstr "" + +#: docs/dev-guide/sui-struct.md:7 +msgid "" +"You can interact with Walrus purely through the client CLI, and JSON or HTTP " +"APIs provided, without querying or executing transactions on Sui directly. " +"However, Walrus uses Sui to manage its metadata and smart contract " +"developers can read information about the Walrus system, as well as stored " +"blobs, on Sui." +msgstr "" + +#: docs/dev-guide/sui-struct.md:12 +msgid "" +"The Move code of the Walrus Testnet contracts is available at " +". An example " +"package using the Walrus contracts is available at " +"." +msgstr "" + +#: docs/dev-guide/sui-struct.md:17 +msgid "" +"The following sections provide further insights into the contract and an " +"overview of how you may use Walrus objects in your own Sui smart contracts." +msgstr "" + +#: docs/dev-guide/sui-struct.md:20 +msgid "" +"```admonish danger title=\"A word of caution\"\n" +"Walrus Mainnet will use new Move packages with `struct` layouts and function " +"signatures that may not\n" +"be compatible with this package. Move code that builds against this package " +"will need to rewritten.\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:25 +msgid "Blob and storage objects" +msgstr "" + +#: docs/dev-guide/sui-struct.md:27 +msgid "" +"Walrus blobs are represented as Sui objects of type `Blob`. A blob is first " +"registered, indicating that the storage nodes should expect slivers from a " +"Blob ID to be stored. Then a blob is certified, indicating that a sufficient " +"number of slivers have been stored to guarantee the blob's availability. " +"When a blob is certified, its `certified_epoch` field contains the epoch in " +"which it was certified." +msgstr "" + +#: docs/dev-guide/sui-struct.md:33 +msgid "" +"A `Blob` object is always associated with a `Storage` object, reserving " +"enough space for a long enough period for the blob's storage. A certified " +"blob is available for the period the underlying storage resource guarantees " +"storage." +msgstr "" + +#: docs/dev-guide/sui-struct.md:37 +msgid "" +"Concretely, `Blob` and `Storage` objects have the following fields, which " +"can be read through the Sui SDKs:" +msgstr "" + +#: docs/dev-guide/sui-struct.md:40 +msgid "" +"```move\n" +"\n" +"/// The blob structure represents a blob that has been registered to with " +"some storage,\n" +"/// and then may eventually be certified as being available in the system.\n" +"public struct Blob has key, store {\n" +" id: UID,\n" +" registered_epoch: u32,\n" +" blob_id: u256,\n" +" size: u64,\n" +" encoding_type: u8,\n" +" // Stores the epoch first certified.\n" +" certified_epoch: option::Option,\n" +" storage: Storage,\n" +" // Marks if this blob can be deleted.\n" +" deletable: bool,\n" +"}\n" +"\n" +"/// Reservation for storage for a given period, which is inclusive start, " +"exclusive end.\n" +"public struct Storage has key, store {\n" +" id: UID,\n" +" start_epoch: u32,\n" +" end_epoch: u32,\n" +" storage_size: u64,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:66 +msgid "" +"All fields of `Blob` and `Storage` objects can be read using the expected " +"functions:" +msgstr "" + +#: docs/dev-guide/sui-struct.md:68 +msgid "" +"```move\n" +"// Blob functions\n" +"public fun blob_id(b: &Blob): u256;\n" +"public fun size(b: &Blob): u64;\n" +"public fun erasure_code_type(b: &Blob): u8;\n" +"public fun registered_epoch(self: &Blob): u32;\n" +"public fun certified_epoch(b: &Blob): &Option;\n" +"public fun storage(b: &Blob): &Storage;\n" +"...\n" +"\n" +"// Storage functions\n" +"public fun start_epoch(self: &Storage): u32;\n" +"public fun end_epoch(self: &Storage): u32;\n" +"public fun storage_size(self: &Storage): u64;\n" +"...\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:85 +msgid "Events" +msgstr "" + +#: docs/dev-guide/sui-struct.md:87 +msgid "" +"When a blob is first registered, a `BlobRegistered` event is emitted that " +"informs storage nodes that they should expect slivers associated with its " +"Blob ID. Eventually when the blob is certified, a `BlobCertified` is emitted " +"containing information about the blob ID and the epoch after which the blob " +"will be deleted. Before that epoch the blob is guaranteed to be available." +msgstr "" + +#: docs/dev-guide/sui-struct.md:92 +msgid "" +"```move\n" +"/// Signals that a blob with metadata has been registered.\n" +"public struct BlobRegistered has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" size: u64,\n" +" encoding_type: u8,\n" +" end_epoch: u32,\n" +" deletable: bool,\n" +" // The object id of the related `Blob` object\n" +" object_id: ID,\n" +"}\n" +"\n" +"/// Signals that a blob is certified.\n" +"public struct BlobCertified has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" end_epoch: u32,\n" +" deletable: bool,\n" +" // The object id of the related `Blob` object\n" +" object_id: ID,\n" +" // Marks if this is an extension for explorers, etc.\n" +" is_extension: bool,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:118 +msgid "" +"The `BlobCertified` event with `deletable` set to false and a `end_epoch` in " +"the future indicates that the blob will be available until this epoch. A " +"light client proof this event was emitted for a blob ID constitutes a proof " +"of availability for the data with this blob ID." +msgstr "" + +#: docs/dev-guide/sui-struct.md:122 +msgid "When a deletable blob is deleted, a `BlobDeleted` event is emitted:" +msgstr "" + +#: docs/dev-guide/sui-struct.md:124 +msgid "" +"```move\n" +"/// Signals that a blob has been deleted.\n" +"public struct BlobDeleted has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" end_epoch: u32,\n" +" // The object ID of the related `Blob` object.\n" +" object_id: ID,\n" +" // If the blob object was previously certified.\n" +" was_certified: bool,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:137 +msgid "" +"The `InvalidBlobID` event is emitted when storage nodes detect an " +"incorrectly encoded blob. Anyone attempting a read on such a blob is " +"guaranteed to also detect it as invalid." +msgstr "" + +#: docs/dev-guide/sui-struct.md:140 +msgid "" +"```move\n" +"/// Signals that a BlobID is invalid.\n" +"public struct InvalidBlobID has copy, drop {\n" +" epoch: u32, // The epoch in which the blob ID is first registered as " +"invalid\n" +" blob_id: u256,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:148 +msgid "" +"System level events such as `EpochChangeStart` and `EpochChangeDone` " +"indicate transitions between epochs. And associated events such as " +"`ShardsReceived`, `EpochParametersSelected`, and `ShardRecoveryStart` " +"indicate storage node level events related to epoch transitions, shard " +"migrations and epoch parameters." +msgstr "" + +#: docs/dev-guide/sui-struct.md:153 +msgid "System and staking information" +msgstr "" + +#: docs/dev-guide/sui-struct.md:155 +msgid "" +"The Walrus system object contains metadata about the available and used " +"storage, as well as the price of storage per KiB of storage in FROST. The " +"committee structure within the system object can be used to read the current " +"epoch number, as well as information about the committee." +msgstr "" + +#: docs/dev-guide/sui-struct.md:160 +msgid "" +"```move\n" +"public struct SystemStateInnerV1 has key, store {\n" +" id: UID,\n" +" /// The current committee, with the current epoch.\n" +" committee: BlsCommittee,\n" +" // Some accounting\n" +" total_capacity_size: u64,\n" +" used_capacity_size: u64,\n" +" /// The price per unit size of storage.\n" +" storage_price_per_unit_size: u64,\n" +" /// The write price per unit size.\n" +" write_price_per_unit_size: u64,\n" +" /// Accounting ring buffer for future epochs.\n" +" future_accounting: FutureAccountingRingBuffer,\n" +" /// Event blob certification state\n" +" event_blob_certification_state: EventBlobCertificationState,\n" +"}\n" +"\n" +"/// This represents a BLS signing committee for a given epoch.\n" +"public struct BlsCommittee has store, copy, drop {\n" +" /// A vector of committee members\n" +" members: vector,\n" +" /// The total number of shards held by the committee\n" +" n_shards: u16,\n" +" /// The epoch in which the committee is active.\n" +" epoch: u32,\n" +"}\n" +"\n" +"public struct BlsCommitteeMember has store, copy, drop {\n" +" public_key: Element,\n" +" weight: u16,\n" +" node_id: ID,\n" +"}\n" +"\n" +"```" +msgstr "" + +#: docs/operator-guide/operator-guide.md:5 +msgid "" +"This chapter introduces all the concepts needed for operators of the " +"different components that make up the Walrus system. It is currently a work " +"in progress and will be updated as the platform matures." +msgstr "" + +#: docs/operator-guide/operator-guide.md:9 +msgid "Specifically, this guide describes the following:" +msgstr "" + +#: docs/operator-guide/operator-guide.md:11 +msgid "" +"[Storage node](storage-node.md) contains the most relevant instructions for " +"operators of a Walrus storage node." +msgstr "" + +#: docs/operator-guide/operator-guide.md:13 +msgid "" +"[Aggregator](aggregator.md) describes the operation of a Walrus aggregator " +"host." +msgstr "" + +#: docs/operator-guide/storage-node.md:3 +msgid "Operating a storage node" +msgstr "" + +#: docs/operator-guide/storage-node.md:6 +msgid "" +"The binary of the storage node is not yet publicly available. Prior to " +"official network launch the code will be open-sourced." +msgstr "" + +#: docs/operator-guide/storage-node.md:9 +msgid "A basic systemd service running the Storage Node could look like this:" +msgstr "" + +#: docs/operator-guide/storage-node.md:25 +msgid "Make sure to adjust any paths and, if desired, the log level." +msgstr "" + +#: docs/operator-guide/storage-node.md:27 +msgid "" +"The `walrus-node` binary stores slivers in RocksDB, which means the data " +"will be stored on disk, to a path configured by the " +"`/opt/walrus/config/walrus-node.yaml` file. The full format with all " +"mandatory and optional configuration parameters will be made available with " +"the binary." +msgstr "" + +#: docs/operator-guide/storage-node.md:31 +msgid "" +"Here are some important config params from a shortened version of the " +"`walrus-node.yaml` config file:" +msgstr "" + +#: docs/operator-guide/storage-node.md:35 +msgid "storage_path" +msgstr "" + +#: docs/operator-guide/storage-node.md:35 +msgid "/opt/walrus/db" +msgstr "" + +#: docs/operator-guide/storage-node.md:35 +msgid "metrics_address" +msgstr "" + +#: docs/operator-guide/storage-node.md:36 +msgid "127.0.0.1:9184" +msgstr "" + +#: docs/operator-guide/storage-node.md:36 +msgid "rest_api_address" +msgstr "" + +#: docs/operator-guide/storage-node.md:37 +msgid "0.0.0.0:9185" +msgstr "" + +#: docs/operator-guide/storage-node.md:37 +msgid "sui" +msgstr "" + +#: docs/operator-guide/storage-node.md:39 +msgid "rpc" +msgstr "" + +#: docs/operator-guide/storage-node.md:39 +msgid "https://fullnode.testnet.sui.io:443" +msgstr "" + +#: docs/operator-guide/storage-node.md:40 +msgid "0xWALRUS_CONTRACT" +msgstr "" + +#: docs/operator-guide/storage-node.md:40 +msgid "blob_recovery" +msgstr "" + +#: docs/operator-guide/storage-node.md:42 +msgid "max_concurrent_blob_syncs" +msgstr "" + +#: docs/operator-guide/storage-node.md:43 +msgid "retry_interval_min_secs" +msgstr "" + +#: docs/operator-guide/storage-node.md:44 +msgid "retry_interval_max_secs" +msgstr "" + +#: docs/operator-guide/storage-node.md:45 +msgid "metadata_request_timeout_secs" +msgstr "" + +#: docs/operator-guide/storage-node.md:46 +msgid "max_concurrent_metadata_requests" +msgstr "" + +#: docs/operator-guide/storage-node.md:47 +msgid "sliver_request_timeout_secs" +msgstr "" + +#: docs/operator-guide/storage-node.md:48 +msgid "invalidity_sync_timeout_secs" +msgstr "" + +#: docs/operator-guide/storage-node.md:51 +msgid "" +"For monitoring, you can configure Grafana Agent to fetch metrics from " +"`localhost:9184/metrics` (or whatever you've configured `metrics_address` to " +"be)." +msgstr "" + +#: docs/operator-guide/aggregator.md:3 +msgid "Operating an aggregator" +msgstr "" + +#: docs/operator-guide/aggregator.md:6 +msgid "" +"Below is an example of an aggregator node which hosts a HTTP endpoint that " +"can be used to fetch data from Walrus over the web." +msgstr "" + +#: docs/operator-guide/aggregator.md:9 +msgid "" +"The aggregator process is run via the `walrus` client binary in [daemon " +"mode](../usage/web-api.md). It can be run in many ways, one example being " +"via a systemd service:" +msgstr "" + +#: docs/usage/stake.md:3 +msgid "Staking" +msgstr "" + +#: docs/usage/stake.md:5 +msgid "" +"In Walrus, anyone can delegate stake to storage nodes and, by doing so, " +"influence, which storage nodes get selected for the committee in future " +"epochs, and how many shards these nodes will hold. Shards are assigned to " +"storage nodes every epoch, roughly proportional to the amount of stake that " +"was delegated to them. By staking with a storage node, users also earn " +"rewards, as they will receive a share of the storage fees." +msgstr "" + +#: docs/usage/stake.md:11 +msgid "" +"Since moving shards from one storage node to another requires transferring a " +"lot of data, and storage nodes potentially need to expand their storage " +"capacity, the selection of the committee for the next epoch is done ahead of " +"time, in the middle of the previous epoch. This provides sufficient time to " +"storage-node operators to provision additional resources, if needed." +msgstr "" + +#: docs/usage/stake.md:16 +msgid "" +"For stake to affect the shard distribution in epoch `e` and become " +"\"active\", it must be staked before the committee for this epoch has been " +"selected, meaning that it has to be staked before the midpoint of epoch `e - " +"1`. If it is staked after that point in time, it will only influence the " +"committee selection for epoch `e + 1` and thus only become active, and " +"accrue rewards, in that epoch." +msgstr "" + +#: docs/usage/stake.md:22 +msgid "" +"Unstaking has a similar delay: because unstaking funds only has an effect on " +"the committee in the next committee selection, the stake will remain active " +"until that committee takes over. This means that, to unstake at the start of " +"epoch `e`, the user needs to \"request withdrawal\" before the midpoint of " +"epoch `e - 1`. Otherwise, that is, if the user unstakes after this point, " +"the stake will remain active, and continue to accrue rewards, throughout " +"epoch `e`, and the balance and rewards will be available to withdraw at the " +"start of epoch `e + 1`." +msgstr "" + +#: docs/usage/stake.md:29 +msgid "How to stake with the Walrus Staking dApp" +msgstr "" + +#: docs/usage/stake.md:31 +msgid "" +"The Walrus Staking dApp allows users to stake (or unstake) to any of the " +"storage nodes of the system." +msgstr "" + +#: docs/usage/stake.md:34 +msgid "" +"To use the dApp, visit and connect your wallet:" +msgstr "" + +#: docs/usage/stake.md:36 +msgid "Click the `Connect Wallet` button at the top right corner." +msgstr "" + +#: docs/usage/stake.md:37 +msgid "" +"Select the wallet (if the wallet was connected before, this and the next " +"step won't be required)." +msgstr "" + +#: docs/usage/stake.md:38 +msgid "Approve the connection." +msgstr "" + +#: docs/usage/stake.md:39 +msgid "(Make sure the selected wallet network is Testnet)." +msgstr "" + +#: docs/usage/stake.md:41 +msgid "Exchange Testnet SUI to WAL" +msgstr "" + +#: docs/usage/stake.md:43 +msgid "" +"To be able to stake you will need to have Testnet WAL in your wallet. You " +"can exchange your Testnet SUI to WAL using the dApp as follows:" +msgstr "" + +#: docs/usage/stake.md:46 +msgid "Click the `Get WAL` button." +msgstr "" + +#: docs/usage/stake.md:47 +msgid "Select the amount of SUI. This will be exchanged to WAL at a 1:1 rate." +msgstr "" + +#: docs/usage/stake.md:48 +msgid "And click `Exchange`." +msgstr "" + +#: docs/usage/stake.md:49 docs/usage/stake.md:60 docs/usage/stake.md:70 +msgid "_Follow the instructions in your wallet to approve the transaction._" +msgstr "" + +#: docs/usage/stake.md:51 +msgid "Stake" +msgstr "" + +#: docs/usage/stake.md:53 +msgid "Find the storage node that you want to stake to." +msgstr "" + +#: docs/usage/stake.md:54 +msgid "" +"Below the system stats, there is the list of the \"Current Committee\" of " +"storage nodes." +msgstr "" + +#: docs/usage/stake.md:55 +msgid "" +"You can select one of the nodes in that list or, if the storage node is not " +"in the current committee, you find all the storage nodes at the bottom of " +"the page." +msgstr "" + +#: docs/usage/stake.md:57 +msgid "Once you selected the storage node, click the stake button." +msgstr "" + +#: docs/usage/stake.md:58 +msgid "Select the amount of WAL." +msgstr "" + +#: docs/usage/stake.md:59 +msgid "Click Stake." +msgstr "" + +#: docs/usage/stake.md:62 +msgid "Unstake" +msgstr "" + +#: docs/usage/stake.md:64 +msgid "Find the `Staked WAL` you want to unstake." +msgstr "" + +#: docs/usage/stake.md:65 +msgid "Below the \"Current Committee\" list you will find all your `Staked WAL`." +msgstr "" + +#: docs/usage/stake.md:66 +msgid "" +"Also you can expand a storage node and find all your stakes with that node." +msgstr "" + +#: docs/usage/stake.md:67 +msgid "" +"Depending on the state of the `Staked WAL` you will be able to unstake or " +"Withdraw your funds." +msgstr "" + +#: docs/usage/stake.md:68 +msgid "Click the `Unstake` or `Withdraw` button." +msgstr "" + +#: docs/usage/stake.md:69 +msgid "Click continue to confirm your action." +msgstr "" + +#: docs/usage/examples.md:5 +msgid "" +"As inspiration, we provide several simple examples in different programming " +"languages to interact with Walrus through the various interfaces. They are " +"located at " +"and described below." +msgstr "" + +#: docs/usage/examples.md:9 +msgid "" +"In addition, we have built actual applications on top of Walrus. The prime " +"example is [Walrus Sites](../walrus-sites/intro.md), with code available in " +"the repository." +msgstr "" + +#: docs/usage/examples.md:13 +msgid "" +"And for an example of how to build a static website and store it as a Walrus " +"Site with GitHub actions, just look at the [CI " +"workflow](https://github.com/MystenLabs/walrus-docs/blob/main/.github/workflows/publish.yaml) " +"we use to publish this very site." +msgstr "" + +#: docs/usage/examples.md:18 +msgid "Python" +msgstr "" + +#: docs/usage/examples.md:20 +msgid "" +"The [Python " +"examples](https://github.com/MystenLabs/walrus-docs/tree/main/examples/python) " +"folder contains a number of examples:" +msgstr "" + +#: docs/usage/examples.md:23 +msgid "" +"How to [use the HTTP " +"API](https://github.com/MystenLabs/walrus-docs/blob/main/examples/python/hello_walrus_webapi.py) " +"to store and read a blob." +msgstr "" + +#: docs/usage/examples.md:26 +msgid "" +"How to [use the JSON " +"API](https://github.com/MystenLabs/walrus-docs/blob/main/examples/python/hello_walrus_jsonapi.py) " +"to store, read, and check the availability of a blob. Checking the " +"certification of a blob illustrates reading the Blob Sui object that " +"certifies (see the [Walrus Sui reference](../dev-guide/sui-struct.md))." +msgstr "" + +#: docs/usage/examples.md:31 +msgid "" +"How to [read information from the Walrus system " +"object](https://github.com/MystenLabs/walrus-docs/blob/main/examples/python/hello_walrus_sui_system.py)." +msgstr "" + +#: docs/usage/examples.md:33 +msgid "" +"How to [track Walrus related " +"Events](https://github.com/MystenLabs/walrus-docs/blob/main/examples/python/track_walrus_events.py)." +msgstr "" + +#: docs/usage/examples.md:36 +msgid "JavaScript" +msgstr "" + +#: docs/usage/examples.md:38 +msgid "" +"A [JavaScript " +"example](https://github.com/MystenLabs/walrus-docs/tree/main/examples/javascript) " +"is provided showing how to upload and download a blob through a web form " +"using the HTTP API." +msgstr "" + +#: docs/usage/examples.md:41 +msgid "Move" +msgstr "" + +#: docs/usage/examples.md:43 +msgid "" +"For more complex applications, you may want to interact with Walrus on-chain " +"objects. For that purpose, the currently deployed Walrus contracts are " +"included [in our GitHub " +"repository](https://github.com/MystenLabs/walrus-docs/tree/main/contracts)." +msgstr "" + +#: docs/usage/examples.md:47 +msgid "" +"Furthermore, we provide a simple [example " +"contract](https://github.com/MystenLabs/walrus-docs/tree/main/examples/move) " +"that imports and uses the Walrus objects." +msgstr "" + +#: docs/usage/troubleshooting.md:5 +msgid "" +"```admonish tip title=\"Debug logging\"\n" +"You can enable debug logging for Walrus by setting the environment variable " +"`RUST_LOG=walrus=debug`.\n" +"```" +msgstr "" + +#: docs/usage/troubleshooting.md:9 +msgid "Latest binary" +msgstr "" + +#: docs/usage/troubleshooting.md:11 +msgid "" +"Before undertaking any other steps, make sure you have the [latest `walrus` " +"binary](./setup.md#installation). If you have multiple versions in different " +"locations, find the the binary that will actually be used with `which " +"walrus`." +msgstr "" + +#: docs/usage/troubleshooting.md:15 +msgid "Old hardware or incompatible VMs" +msgstr "" + +#: docs/usage/troubleshooting.md:17 +msgid "" +"Our standard Ubuntu binary is known to cause problems on certain old " +"hardware and in certain virtualized environments. If you experience errors " +"like \"Illegal instruction (core dumped)\", " +"[install](./setup.md#installation) the `ubuntu-x86_64-generic` version " +"instead, which is compiled specifically to be compatible with almost all " +"physical and virtual x86-64 CPUs." +msgstr "" + +#: docs/usage/troubleshooting.md:22 +msgid "Latest Walrus configuration" +msgstr "" + +#: docs/usage/troubleshooting.md:24 +msgid "" +"The Walrus Devnet and Testnet are wiped periodically and require updating to " +"the latest binary and configuration. If you get an error like \"could not " +"retrieve enough confirmations to certify the blob\", you are probably using " +"an outdated configuration pointing to an inactive Walrus system. In this " +"case, update your configuration file with the latest " +"[configuration](./setup.md#configuration) and make sure the CLI uses the " +"intended configuration." +msgstr "" + +#: docs/usage/troubleshooting.md:35 +msgid "Correct Sui network configuration" +msgstr "" + +#: docs/usage/troubleshooting.md:37 +msgid "" +"If you get an error like \"the specified Walrus system object does not " +"exist\", make sure your wallet is set up for Sui **Testnet** and you use the " +"latest [configuration](./setup.md#configuration)." +msgstr "" + +#: docs/walrus-sites/intro.md:5 +msgid "" +"_Walrus Sites_ are \"web\"-sites that use Sui and Walrus as their underlying " +"technology. They are a prime example of how Walrus can be used to build new " +"and exciting decentralized applications. Anyone can build and deploy a " +"Walrus Site and make it accessible to the world! Funnily, this documentation " +"is itself available as a Walrus Site at " +" (if you aren't there " +"already)." +msgstr "" + +#: docs/walrus-sites/intro.md:11 +msgid "" +"```admonish tip title=\"Make sure you update!\"\n" +"With the move to Walrus Testnet, Walrus Sites are also being updated! They " +"now use Walrus Testnet as\n" +"the backing store, and they have been improved with new awesome features. " +"[Migrate your\n" +"site](./tutorial-migration.md) today to take advantage of these new " +"features!\n" +"```" +msgstr "" + +#: docs/walrus-sites/intro.md:17 +msgid "" +"```admonish danger title=\"Walrus Sites Devnet being discontinued\"\n" +"Since the Walrus Devnet will [be shut down\n" +"soon](../index.md#admonition-discontinuation-of-walrus-devnet), all the " +"Walrus Sites stored on it will\n" +"be wiped. To minimize the downtime, the Devnet Walrus Sites will be " +"available after the Testnet\n" +"upgrade for two weeks (until **2024-10-31**), to ensure that everyone has " +"enough time to update.\n" +"\n" +"Make sure to reupload your sites to the Walrus Testnet before the shutdown " +"to avoid downtime!\n" +"```" +msgstr "" + +#: docs/walrus-sites/intro.md:26 +msgid "At a high level, here are some of the most exciting features:" +msgstr "" + +#: docs/walrus-sites/intro.md:28 +msgid "" +"Publishing a site does not require managing servers or complex " +"configurations; just provide the source files (produced by your favorite web " +"framework), publish them to Walrus Sites using the [site-builder " +"tool](./overview.md#the-site-builder), and you are done!" +msgstr "" + +#: docs/walrus-sites/intro.md:31 +msgid "" +"Sites can be linked to from ordinary Sui objects. This feature enables, for " +"example, creating an NFT collection in which _every single NFT_ has a " +"_personalized website dedicated to it_." +msgstr "" + +#: docs/walrus-sites/intro.md:33 +msgid "" +"Walrus Sites are owned by addresses on Sui and can be exchanged, shared, and " +"updated thanks to Sui's flexible programming model. This means, among other " +"things, that Walrus Sites can leverage the [SuiNS](https://suins.io/) naming " +"system to have human-readable names. No more messing around with DNS!" +msgstr "" + +#: docs/walrus-sites/intro.md:37 +msgid "" +"Thanks to Walrus's decentralization and extremely high data availability, " +"there is no risk of having your site wiped for no reason." +msgstr "" + +#: docs/walrus-sites/intro.md:39 +msgid "" +"Since they live on Walrus, these sites cannot have a backend in the " +"traditional sense, and can be therefore considered \"static\" sites. " +"However, the developer can integrate with Sui-compatible wallets and harness " +"Sui's programmability to add backend functionality to Walrus Sites!" +msgstr "" + +#: docs/walrus-sites/intro.md:43 +msgid "Show me" +msgstr "" + +#: docs/walrus-sites/intro.md:45 +msgid "" +"To give you a very high-level intuition of how Walrus Sites work, let's look " +"at an example: A simple NFT collection on Sui that has a frontend dApp to " +"mint the NFTs hosted on Walrus Sites, and in which _each NFT_ has a " +"_specific, personalized Walrus Site_." +msgstr "" + +#: docs/walrus-sites/intro.md:49 +msgid "" +"You can check out the mint page at . This " +"site is served to your browser through the Walrus Site _portal_ " +". While the portal's operation is explained in a [later " +"section](./portal.md), consider for now that there can be many portals " +"(hosted by whoever wants to have their own, and even on `localhost`). " +"Further, the only function of the portal is to provide the browser with some " +"code (specifically, a service worker) that allows it to fetch the Walrus " +"Site from Sui and Walrus." +msgstr "" + +#: docs/walrus-sites/intro.md:56 +msgid "" +"If you have a Sui wallet with some Testnet SUI, you can try and \"mint a new " +"Flatlander\" from the site. This creates an NFT from the collection and " +"shows you two links: one to the explorer, and one to the \"Flatlander " +"site\". This latter site is a special Walrus Site that exists only for that " +"NFT, and has special characteristics (the background color, the image, ...) " +"that are based on the contents of the NFT." +msgstr "" + +#: docs/walrus-sites/intro.md:62 +msgid "" +"The URL to this per-NFT site looks something like this: " +"`https://2hzpawjycxuiuh36047yocxapc69g8ercrypa7ccsk8ek4iqu6.walrus.site/`. " +"You'll notice that the domain remains `walrus.site`, but the subdomain is a " +"long and random-looking string. This string is actually the " +"[Base36](https://en.wikipedia.org/wiki/Base36) encoding of the object ID of " +"the NFT, which is " +"[0x644bc958...](https://suiscan.xyz/testnet/object/0x644bc958052463785c026a13be051d579c8a4d2dc93b1874dce5839d4fb18c5e)." +msgstr "" + +#: docs/walrus-sites/intro.md:69 +msgid "In summary:" +msgstr "" + +#: docs/walrus-sites/intro.md:71 +msgid "" +"Walrus Sites are served through a portal; in this case, " +"`https://walrus.site`. There can be many portals, and anyone can host one." +msgstr "" + +#: docs/walrus-sites/intro.md:73 +msgid "" +"The subdomain on the URL points to a specific object on Sui that allows the " +"browser to fetch and render the site resources. This pointer can be" +msgstr "" + +#: docs/walrus-sites/intro.md:75 +msgid "a SuiNS name, such as `flatland` in `https://flatland.walrus.site`, or" +msgstr "" + +#: docs/walrus-sites/intro.md:76 +msgid "" +"the Base36 encoding of a the Sui object ID, such as `0x644bc958...` in the " +"example above." +msgstr "" + +#: docs/walrus-sites/intro.md:78 +msgid "" +"Curious to know how this magic is possible? Read the [technical " +"overview](./overview.md)! If you just want to get started trying Walrus " +"Sites out, check the [tutorial](./tutorial.md)." +msgstr "" + +#: docs/walrus-sites/tutorial.md:5 +msgid "" +"This tutorial walks you through the steps necessary to publish a Walrus " +"Site. We also provide the instructions on how to add a SuiNS name to it for " +"convenient browsing." +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:5 +msgid "" +"This section describes the steps necessary to setup the Walrus Sites' " +"`site-builder` tool and prepare your environment for development." +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:8 +msgid "Prerequisites" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:10 +msgid "Before you start, make sure you" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:12 +msgid "" +"have a recent version of [Rust](https://www.rust-lang.org/tools/install) " +"installed;" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:13 +msgid "have `git` installed; and" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:14 +msgid "followed all [Walrus setup instructions](../usage/setup.md)." +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:16 +msgid "Then, follow these additional setup steps." +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:18 +msgid "Clone the repository and build the `site-builder` tool" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:20 +msgid "" +"First, clone and enter the Walrus Sites repo from " +":" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:27 +msgid "Then, build the release version of the site builder:" +msgstr "" + +#: docs/walrus-sites/tutorial-install.md:33 +msgid "After the build process completes, you are ready to run the site builder:" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:5 +msgid "" +"Now that everything is installed and configured, you should be able to start " +"publishing your first Walrus Site!" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:8 +msgid "Select the source material for the site" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:10 +msgid "" +"The `site-builder` works by uploading a directory of files produced by any " +"web framework to Walrus and adding the relevant metadata to Sui. This " +"directory should have a file called `index.html` in its root, which will be " +"the entry point to the Walrus Site." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:14 +msgid "" +"For the rest of the tutorial, we will use as an example the simple site " +"contained in `./examples/snake`." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:17 +msgid "Publish the site" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:19 +msgid "" +"Since we have placed the `walrus` binary and configuration in their default " +"locations, publishing the `./examples/snake` site is as simple as calling " +"the publishing command:" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:37 +msgid "The end of the output should look like the following:" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:53 +msgid "" +"This output tells you that, for each file in the folder, a new Walrus blob " +"was created, and the respective blob ID. Further, it prints the object ID of " +"the Walrus Site object on Sui (so you can have a look in the explorer and " +"use it to set the SuiNS name) and, finally, the URL at which you can browse " +"the site." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:58 +msgid "" +"Note here that we are passing the default config `./sites-config.yaml` as " +"the config for the site builder. The configuration file is necessary to " +"ensure that the `site-builder` knows the correct Sui package for the Walrus " +"Sites logic." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:62 +msgid "" +"More details on the configuration of the `site-builder` can be found under " +"the [advanced configuration](./builder-config.md) section." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:65 +msgid "Update the site" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:67 +msgid "" +"Let's say now you want to update the content of the site, for example by " +"changing the title from \"eat all the blobs!\" to \"Glob all the Blobs!\"." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:70 +msgid "First, make this edit on in the `./examples/snake/index.html` file." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:72 +msgid "" +"Then, you can update the existing site by running the `update` command, " +"providing the directory where to find the updated files (still " +"`./example/snake`) and the object ID of the existing site (`0x407a3081...`):" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:80 +msgid "The output this time should be:" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:93 +msgid "" +"Compared to the `publish` action, we can see that now the only actions " +"performed were to delete the old `index.html`, and update it with the newer " +"one." +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:96 +msgid "" +"Browsing to the provided URL should reflect the change. You've updated the " +"site!" +msgstr "" + +#: docs/walrus-sites/tutorial-publish.md:102 +msgid "" +"```admonish danger title=\"Extending the expiration date of an existing " +"site\"\n" +"To extend the expiration date of a previously-stored site, use the `update` " +"command with the\n" +"`--force` flag, and specify the number of additional epochs (from the " +"current epoch) with the\n" +"`--epochs` flag.\n" +"```" +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:5 +msgid "" +"Browsing a URL like " +"`https://1lupgq2auevjruy7hs9z7tskqwjp5cc8c5ebhci4v57qyl4piy.walrus.site` is " +"not particularly nice. Therefore, Walrus Sites allows to use SuiNS names " +"(this is like DNS for Sui) to assign a human-readable name to a Walrus Site. " +"To do so, you simply have to get a SuiNS name you like, and point it to the " +"object ID of the Walrus Site (as provided by the `publish` or `update` " +"commands)." +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:11 +msgid "Let's do this step by step." +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:13 +msgid "Get a SuiNS name" +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:15 +msgid "" +"Navigate to and buy a domain name with your " +"Testnet wallet. For example, `walrusgame` (this specific one is already " +"taken, choose another you like)." +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:23 +msgid "Map the SuiNS name to the Walrus Site" +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:25 +msgid "" +"Now, you can set the SuiNS name to point to the address of your Walrus Site. " +"To do so, go to the [\"names you " +"own\"](https://testnet.suins.io/account/my-names) section of the SuiNS " +"website, click on the \"three dots\" menu icon above the name you want to " +"map, and click \"Link To Wallet Address\". Paste in the bar the object ID of " +"the Walrus Site, check that it is correct, and click \"Apply\"." +msgstr "" + +#: docs/walrus-sites/tutorial-suins.md:30 +msgid "" +"After approving the transaction, we can now browse " +"!" +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:3 +msgid "Migrating your site from Devnet to Testnet" +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:5 +msgid "" +"The migration of a Walrus Site from the Devnet to the Testnet is a very " +"simple manual process. This is required because both the storage backing the " +"sites (Walrus) and the contracts on Sui implementing the Walrus Sites " +"functionality have been updated." +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:14 +msgid "" +"```admonish danger title=\"New default configuration path\"\n" +"The default configuration file for the `site-builder` has been moved to the " +"`./sites-config.yaml`\n" +"instead of the old `./site-builder/assets/builder-example.yaml`.\n" +"```" +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:19 +msgid "The steps are the following:" +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:21 +msgid "" +"Get the latest version of the `walrus` binary, as well as the latest Walrus " +"configuration file, following the [Walrus installation " +"instructions](../usage/setup.md)." +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:23 +msgid "" +"Ensure you have the latest version of the `site-builder` binary by following " +"the [installation instructions](./tutorial-install.md) again. Remember to " +"`git pull` if you are building from the repo and have cloned it previously. " +"Pulling the repo also guarantees you have the latest sites configuration " +"file, pointing to the correct contracts." +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:27 +msgid "" +"Run the `site-builder` with the `publish` command on your site directory. " +"This will create a new Walrus Site object on Sui, using the new contracts, " +"and store the site files anew on Walrus Testnet. Note that this operation " +"will create a new object ID for your site!" +msgstr "" + +#: docs/walrus-sites/tutorial-migration.md:30 +msgid "" +"Optional: If you had set up a SuiNS name for your site, you will need to " +"point the name to the new site's object ID. See the [tutorial on setting a " +"SuiNS name](./tutorial-suins.md) for more details." +msgstr "" + +#: docs/walrus-sites/advanced.md:5 +msgid "" +"Keep reading to learn about the advanced features of Walrus Sites, including " +"configuring the site builder, specifying headers and routing for site " +"resources, and _redirecting Sui objects to Walrus Sites_ to create " +"per-object websites!" +msgstr "" + +#: docs/walrus-sites/commands.md:5 +msgid "" +"We now describe in more detail the commands available through the site " +"builder." +msgstr "" + +#: docs/walrus-sites/commands.md:13 +msgid "`publish`" +msgstr "" + +#: docs/walrus-sites/commands.md:15 +msgid "" +"The `publish` command, as described in the [previous " +"section](./tutorial-publish.md), publishes a new site on Sui. The command " +"takes a directory as input and creates a new Walrus Site from the resources " +"contained within." +msgstr "" + +#: docs/walrus-sites/commands.md:19 +msgid "" +"The `--epochs` flag allows you to specify for how long the site data will be " +"stored on Walrus. By default, this is set to `1` epoch." +msgstr "" + +#: docs/walrus-sites/commands.md:22 +msgid "" +"```admonish danger title=\"Epoch duration on Walrus Testnet\"\n" +"On Walrus Testnet, one epoch will last **1 day**. Therefore, consider " +"storing your site for a large\n" +"number of epochs if you want to make it available for the following months! " +"The maximum duration is\n" +"set to 200 epochs.\n" +"```" +msgstr "" + +#: docs/walrus-sites/commands.md:28 +msgid "" +"If you are just uploading raw files without an `index.html`, you may want to " +"use the `--list-directory` flag, which will automatically create an index " +"page to browse the files. See for example ." +msgstr "" + +#: docs/walrus-sites/commands.md:32 +msgid "" +"The `publish` command will also respect the instructions in the " +"`ws-resources.json` configuration file. To know more, see the section on " +"[specifying headers and routing](./routing.md)." +msgstr "" + +#: docs/walrus-sites/commands.md:35 +msgid "`update`" +msgstr "" + +#: docs/walrus-sites/commands.md:37 +msgid "" +"This command is the equivalent of `publish`, but for updating an existing " +"site. It takes the same arguments, with the addition of the Sui object ID of " +"the site to update." +msgstr "" + +#: docs/walrus-sites/commands.md:45 +msgid "`convert`" +msgstr "" + +#: docs/walrus-sites/commands.md:47 +msgid "" +"The `convert` command converts an object ID in hex format to the equivalent " +"Base36 format. This command is useful if you have the Sui object ID of a " +"Walrus Site, and want to know the subdomain where you can browse it." +msgstr "" + +#: docs/walrus-sites/commands.md:51 +msgid "`site-map`" +msgstr "" + +#: docs/walrus-sites/commands.md:53 +msgid "" +"The `sitemap` command shows the resources that compose the Walrus Site at " +"the given object ID." +msgstr "" + +#: docs/walrus-sites/commands.md:55 +msgid "`list-directory`" +msgstr "" + +#: docs/walrus-sites/commands.md:57 +msgid "" +"With `list-directory`, you can obtain the `index.html` file that would be " +"generated by running `publish` or `update` with the `--list-directory` flag. " +"This is useful to see how the index page would look like before publishing " +"it—and possibly editing to make it look nicer!" +msgstr "" + +#: docs/walrus-sites/builder-config.md:3 +msgid "Configuring the site builder" +msgstr "" + +#: docs/walrus-sites/builder-config.md:5 +msgid "" +"Configuring the `site-builder` tool is straightforward, but care is required " +"to ensure that everything works correctly." +msgstr "" + +#: docs/walrus-sites/builder-config.md:8 +msgid "" +"The `site-builder` tool requires a configuration file to know which package " +"to use on Sui, which wallet to use, the gas budget, and other operational " +"details. Most of these are abstracted away through sensible defaults, so you " +"should not need to touch them. Yet, for completeness, we provide here the " +"details for all the configuration options." +msgstr "" + +#: docs/walrus-sites/builder-config.md:13 +msgid "Minimal configuration" +msgstr "" + +#: docs/walrus-sites/builder-config.md:15 +msgid "" +"The config file is expected to be in `./sites-config.yaml`, and it is " +"possible to point elsewhere with the `--config` flag. For your first run, it " +"should be sufficient to call the `site-builder` with `--config " +"sites-config.yaml`, which is already configured appropriately." +msgstr "" + +#: docs/walrus-sites/builder-config.md:19 +msgid "" +"If, for any reason, you didn't add `walrus` to `$PATH`, make sure to " +"configure a pointer to the binary, see below." +msgstr "" + +#: docs/walrus-sites/builder-config.md:22 +msgid "Additional options" +msgstr "" + +#: docs/walrus-sites/builder-config.md:24 +msgid "" +"If you want to have more control over the behavior of the site builder, you " +"can customize the following variables in the config file:" +msgstr "" + +#: docs/walrus-sites/builder-config.md:27 +msgid "" +"`package`: the object ID of the Walrus Sites package on Sui. This must " +"always be specified in the config, and is already appropriately configured " +"in `assets/example-config.yaml`." +msgstr "" + +#: docs/walrus-sites/builder-config.md:29 +msgid "" +"`portal`: the name of the portal through which the site will be viewed; this " +"only affects the output of the CLI, and nothing else (default: " +"`walrus.site`). All Walrus Sites are accessible through any portal " +"independent of this setting." +msgstr "" + +#: docs/walrus-sites/builder-config.md:32 +msgid "" +"`general`: these are general options that can be configured both through the " +"CLI and the config:" +msgstr "" + +#: docs/walrus-sites/builder-config.md:33 +msgid "" +"`rpc_url`: The URL of the Sui RPC node to use. If not set, the " +"`site-builder` will infer it from the wallet." +msgstr "" + +#: docs/walrus-sites/builder-config.md:35 +msgid "" +"`wallet`: Pointer to the Sui wallet to be used. By default, it uses the " +"system-wide wallet (the one from `sui client addresses`)." +msgstr "" + +#: docs/walrus-sites/builder-config.md:37 +msgid "" +"`walrus_binary`: Pointer to the `walrus` binary. By default, this is " +"expected to be run from `$PATH`." +msgstr "" + +#: docs/walrus-sites/builder-config.md:39 +msgid "" +"`walrus_config`: The configuration for the `walrus` client binary, see the " +"[relevant chapter](../usage/setup.md)." +msgstr "" + +#: docs/walrus-sites/builder-config.md:41 +msgid "" +"`gas_budget`: The maximum amount of gas to be spent for transactions " +"(default: 500M MIST)." +msgstr "" + +#: docs/walrus-sites/routing.md:5 +msgid "" +"```admonish tip title=\"New with Walrus Sites Testnet version\"\n" +"The following features have been released with the Walrus Sites Testnet " +"version.\n" +"```" +msgstr "" + +#: docs/walrus-sites/routing.md:9 +msgid "" +"In its base configuration, Walrus Sites serves static assets through a " +"portal. However, many modern web applications require more advanced " +"features, such as custom headers and client-side routing." +msgstr "" + +#: docs/walrus-sites/routing.md:12 +msgid "" +"Therefore, the site-builder can read a `ws-resource.json` configuration " +"file, in which you can directly specify resource headers and routing rules." +msgstr "" + +#: docs/walrus-sites/routing.md:15 +msgid "The `ws-resources.json` file" +msgstr "" + +#: docs/walrus-sites/routing.md:17 +msgid "" +"This file is optionally placed in the root of the site directory, and it is " +"_not_ uploaded with the site's resources (in other words, the file is not " +"part of the resulting Walrus Site and is not served by the portal)." +msgstr "" + +#: docs/walrus-sites/routing.md:21 +msgid "" +"If you don't want to use this default location, you can specify the path to " +"the configuration file with the `--ws-resources` flag when running the " +"`publish` or `update` commands." +msgstr "" + +#: docs/walrus-sites/routing.md:24 +msgid "The file is JSON-formatted, and looks like the following:" +msgstr "" + +#: docs/walrus-sites/routing.md:28 +msgid "\"headers\"" +msgstr "" + +#: docs/walrus-sites/routing.md:29 docs/walrus-sites/routing.md:35 +#: docs/walrus-sites/routing.md:111 +msgid "\"/index.html\"" +msgstr "" + +#: docs/walrus-sites/routing.md:30 +msgid "\"Content-Type\"" +msgstr "" + +#: docs/walrus-sites/routing.md:30 +msgid "\"text/html; charset=utf-8\"" +msgstr "" + +#: docs/walrus-sites/routing.md:31 +msgid "\"Cache-Control\"" +msgstr "" + +#: docs/walrus-sites/routing.md:31 +msgid "\"max-age=3500\"" +msgstr "" + +#: docs/walrus-sites/routing.md:34 docs/walrus-sites/routing.md:110 +msgid "\"routes\"" +msgstr "" + +#: docs/walrus-sites/routing.md:35 docs/walrus-sites/routing.md:111 +msgid "\"/*\"" +msgstr "" + +#: docs/walrus-sites/routing.md:36 +msgid "\"/accounts/*\"" +msgstr "" + +#: docs/walrus-sites/routing.md:36 docs/walrus-sites/routing.md:112 +msgid "\"/accounts.html\"" +msgstr "" + +#: docs/walrus-sites/routing.md:37 docs/walrus-sites/routing.md:113 +msgid "\"/path/assets/*\"" +msgstr "" + +#: docs/walrus-sites/routing.md:37 docs/walrus-sites/routing.md:113 +msgid "\"/assets/asset_router.html\"" +msgstr "" + +#: docs/walrus-sites/routing.md:42 +msgid "" +"We now describe in details the two sections of the configuration file, " +"`headers` and `routes`." +msgstr "" + +#: docs/walrus-sites/routing.md:44 +msgid "Specifying HTTP response headers" +msgstr "" + +#: docs/walrus-sites/routing.md:46 +msgid "" +"The `headers` section allows you to specify custom HTTP response headers for " +"specific resources. The keys in the `headers` object are the paths of the " +"resources, and the values are lists of key-value pairs corresponding to the " +"headers that the portal will attach to the response." +msgstr "" + +#: docs/walrus-sites/routing.md:50 +msgid "" +"For example, in the configuration above, the file `index.html` will be " +"served with the `Content-Type` header set to `text/html; charset=utf-8` and " +"the `Cache-Control` header set to `max-age=3500`." +msgstr "" + +#: docs/walrus-sites/routing.md:54 +msgid "" +"This mechanism allows you to control various aspects of the resource " +"delivery, such as caching, encoding, and content types." +msgstr "" + +#: docs/walrus-sites/routing.md:61 +msgid "Default headers" +msgstr "" + +#: docs/walrus-sites/routing.md:63 +msgid "" +"By default, no headers need to be specified, and the `ws-resources.json` " +"file can be omitted. The site-builder will automatically try to infer the " +"`Content-Type` header based on the file extension, and set the " +"`Content-Encoding` to `identity` (no transformation)." +msgstr "" + +#: docs/walrus-sites/routing.md:67 +msgid "" +"In case the content type cannot be inferred, the `Content-Type` will be set " +"to `application/octet-stream`." +msgstr "" + +#: docs/walrus-sites/routing.md:70 +msgid "" +"These defaults will be overridden by any headers specified in the " +"`ws-resources.json` file." +msgstr "" + +#: docs/walrus-sites/routing.md:72 +msgid "Specifying client-side routing" +msgstr "" + +#: docs/walrus-sites/routing.md:74 +msgid "" +"The `routes` section allows you to specify client-side routing rules for " +"your site. This is useful when you want to use a single-page application " +"(SPA) framework, such as React or Angular." +msgstr "" + +#: docs/walrus-sites/routing.md:77 +msgid "" +"The configuration in the `routes` object is a mapping from route keys to " +"resource paths." +msgstr "" + +#: docs/walrus-sites/routing.md:79 +msgid "" +"The **`routes` keys** are path patterns in the form `/path/to/some/*`, where " +"the `*` character represents a wildcard." +msgstr "" + +#: docs/walrus-sites/routing.md:87 +msgid "" +"The **`routes` values** are the resource paths that should be served when " +"the route key is matched." +msgstr "" + +#: docs/walrus-sites/routing.md:89 +msgid "" +"```admonish danger title=\"Important\"\n" +"The paths in the values **must** be valid resource paths, meaning that they " +"must be present among\n" +"the site's resources. The Walrus sites contract will **abort** if the user " +"tries to create a route\n" +"that points to a non-existing resource.\n" +"```" +msgstr "" + +#: docs/walrus-sites/routing.md:95 +msgid "The simple routing algorithm is as follows:" +msgstr "" + +#: docs/walrus-sites/routing.md:97 +msgid "" +"Whenever a resource path _is not found among the sites resources_, the " +"portal tries to match the path to the `routes`." +msgstr "" + +#: docs/walrus-sites/routing.md:99 +msgid "" +"All matching routes are then _lexicographically ordered_, and the _longest_ " +"match is chosen." +msgstr "" + +#: docs/walrus-sites/routing.md:100 +msgid "The resource corresponding to this longest match is then served." +msgstr "" + +#: docs/walrus-sites/routing.md:107 +msgid "Recall the example above:" +msgstr "" + +#: docs/walrus-sites/routing.md:112 +msgid "\"/path/*\"" +msgstr "" + +#: docs/walrus-sites/routing.md:117 +msgid "The following matchings will occur:" +msgstr "" + +#: docs/walrus-sites/routing.md:119 +msgid "browsing `/any/other/test.html` will serve `/index.html`;" +msgstr "" + +#: docs/walrus-sites/routing.md:120 +msgid "" +"browsing `/path/test.html` will serve `/accounts.html`, as it is a more " +"specific match than the previous one;" +msgstr "" + +#: docs/walrus-sites/routing.md:122 +msgid "" +"similarly, browsing `/path/assets/test.html` will serve " +"`/assets/asset_router.html`." +msgstr "" + +#: docs/walrus-sites/routing.md:124 +msgid "" +"`/index.html`, `/accounts.html`, and `/assets/asset_router.html` are all " +"existing resources on the Walrus Sites object on Sui." +msgstr "" + +#: docs/walrus-sites/linking.md:5 +msgid "" +"Links in Walrus Sites work _almost_ as you would expect in a regular " +"website. We specify here a few of the details." +msgstr "" + +#: docs/walrus-sites/linking.md:8 +msgid "Linking to resources within the same site" +msgstr "" + +#: docs/walrus-sites/linking.md:10 +msgid "" +"Relative and absolute links (`href=\"/path/to/resource.html\"`) work as " +"usual." +msgstr "" + +#: docs/walrus-sites/linking.md:12 +msgid "Linking to resources on the web" +msgstr "" + +#: docs/walrus-sites/linking.md:14 +msgid "" +"Linking to a resource on the web " +"(`href=\"https://some.cdn.example.com/stylesheet.css\"`) also works as usual." +msgstr "" + +#: docs/walrus-sites/linking.md:17 +msgid "Linking to resources in other Walrus Sites" +msgstr "" + +#: docs/walrus-sites/linking.md:19 +msgid "" +"Here is the part that is a bit different. Assume there is some image that " +"you can browse at `https://gallery.walrus.site/walrus_arctic.webp`, and you " +"want to link it from your own Walrus Site." +msgstr "" + +#: docs/walrus-sites/linking.md:22 +msgid "" +"Recall that, however, `https://walrus.site` is just one of the possibly many " +"portals. I.e., the same resource is browsable from a local portal " +"(`http://gallery.localhost:8080/walrus_arctic.webp`), or from any other " +"portal (e.g., `https://gallery.blob.store/walrus_arctic.webp`). Therefore, " +"how can you link the resource in a _portal-independent way_? This is " +"important for interoperability, availability, and respecting the user's " +"choice of portal." +msgstr "" + +#: docs/walrus-sites/linking.md:28 +msgid "The solution: Walrus Sites links" +msgstr "" + +#: docs/walrus-sites/linking.md:30 +msgid "" +"We solve this problem by having the portals interpret special links that are " +"normally invalid on the web and redirect to the corresponding Walrus Sites " +"resource in the portal itself." +msgstr "" + +#: docs/walrus-sites/linking.md:33 +msgid "" +"Consider the example above, where the resource `/walrus_arctic.webp` is " +"browsed from the Walrus Site with SuiNS name `gallery`, which points to the " +"object ID `abcd123…` (in Base36 encoding). Then, the portal-independent link " +"is: `https://gallery.suiobj/walrus_arctic.webp`. To fix the object ID " +"instead of the SuiNS name, you can use " +"`https://abcd123….suiobj/walrus_arctic.webp`." +msgstr "" + +#: docs/walrus-sites/linking.md:38 +msgid "" +"Another possibility is to directly point to the Walrus _blob ID_ of the " +"resource, and have the browser \"sniff\" the content type. This works for " +"images, for example, but not for script or stylesheets. For example to point " +"to the blob ID (e.g., containing an image) `qwer5678…`, use the URL " +"`https://blobid.walrus/qwer5678…`." +msgstr "" + +#: docs/walrus-sites/linking.md:43 +msgid "" +"With such a link, the portal will extract the blob ID and redirect the " +"request to the aggregator it is using to fetch blobs." +msgstr "" + +#: docs/walrus-sites/redirects.md:5 +msgid "" +"We have seen in the [overview](./overview.md) how a Walrus Site object on " +"Sui looks like. We will discuss now how you can create ensure that a _set of " +"arbitrary objects_ can all be tied to a specific, and possibly unique, " +"Walrus Site." +msgstr "" + +#: docs/walrus-sites/redirects.md:9 +msgid "The goal" +msgstr "" + +#: docs/walrus-sites/redirects.md:11 +msgid "" +"Consider a collection of NFTs, such as the one published by " +". As we show there, each minted NFT has its " +"own Walrus Site, which can be personalized based on the contents (e.g., the " +"color) of the NFT itself. How can we achieve this?" +msgstr "" + +#: docs/walrus-sites/redirects.md:15 +msgid "Redirect links" +msgstr "" + +#: docs/walrus-sites/redirects.md:17 +msgid "" +"The solution is simple: We add a \"redirect\" in the NFT's " +"[`Display`](https://docs.sui.io/standards/display#sui-utility-objects) " +"property. Each time an NFT's object ID is browsed through a portal, the " +"portal will check the `Display` of the NFT and, if it encounters the `walrus " +"site address` key, it will go fetch the Walrus Site that is at the " +"corresponding object ID." +msgstr "" + +#: docs/walrus-sites/redirects.md:23 +msgid "Redirects in Move" +msgstr "" + +#: docs/walrus-sites/redirects.md:25 +msgid "" +"Practically speaking, when creating the `Display` of the NFT, you can " +"include the key-value pair that points to the Walrus Site that is to be used." +msgstr "" + +#: docs/walrus-sites/redirects.md:28 +msgid "" +"```move\n" +"...\n" +"const VISUALIZATION_SITE: address = @0x901fb0...;\n" +"display.add(b\"walrus site address\".to_string(), " +"VISUALIZATION_SITE.to_string());\n" +"...\n" +"```" +msgstr "" + +#: docs/walrus-sites/redirects.md:35 +msgid "How to change the site based on the NFT?" +msgstr "" + +#: docs/walrus-sites/redirects.md:37 +msgid "" +"The code above will only open the specified Walrus Site when browsing the " +"object ID of the NFT. How do we ensure that the properties of the NFT can be " +"used to personalize the site?" +msgstr "" + +#: docs/walrus-sites/redirects.md:40 +msgid "" +"This needs to be done in the `VISUALIZATION_SITE`: Since the subdomain is " +"still pointing to the NFT's object ID, the Walrus Site that is loaded can " +"check its `origin` in JavaScript, and use the subdomain to determine the " +"NFT, fetch it from chain, and use its internal fields to modify the " +"displayed site." +msgstr "" + +#: docs/walrus-sites/redirects.md:45 +msgid "" +"For an end-to-end example, see the `flatland` " +"[repo](https://github.com/MystenLabs/example-walrus-sites/tree/main/flatland)." +msgstr "" + +#: docs/walrus-sites/overview.md:3 +msgid "Technical Overview" +msgstr "" + +#: docs/walrus-sites/overview.md:5 +msgid "" +"In the following sections, we delve deeper in the technical specification of " +"Walrus Sites." +msgstr "" + +#: docs/walrus-sites/overview.md:7 +msgid "High-level picture" +msgstr "" + +#: docs/walrus-sites/overview.md:9 +msgid "" +"Walrus Sites are enabled by Sui and Walrus. The resources of the Walrus Site " +"(`html`, `css`, `js`, images, etc.) are stored on Walrus, while the main " +"entry point to it is an object stored on Sui, which contains the metadata " +"for the site and point to the Walrus blob IDs." +msgstr "" + +#: docs/walrus-sites/overview.md:13 +msgid "The Walrus Sites objects on Sui" +msgstr "" + +#: docs/walrus-sites/overview.md:15 +msgid "A Walrus `Site` is represented on Sui as a very simple object:" +msgstr "" + +#: docs/walrus-sites/overview.md:24 +msgid "" +"The resources associated with this site are then added to this object as " +"[dynamic fields](https://docs.sui.io/concepts/dynamic-fields/) of type " +"`Resource`:" +msgstr "" + +#: docs/walrus-sites/overview.md:27 +msgid "" +"```move\n" +"struct Resource has store, drop {\n" +" path: String,\n" +" // The walrus blob id containing the bytes for this resource\n" +" blob_id: u256,\n" +" ⋮\n" +"}\n" +"```" +msgstr "" + +#: docs/walrus-sites/overview.md:36 +msgid "Importantly, each resource contains:" +msgstr "" + +#: docs/walrus-sites/overview.md:38 +msgid "" +"the `path` of the resource, for example `/index.html` (all the paths are " +"always represented as starting from root `/`);" +msgstr "" + +#: docs/walrus-sites/overview.md:40 +msgid "" +"the `blob_id`, which is the Walrus blob ID where the resource can be found; " +"and" +msgstr "" + +#: docs/walrus-sites/overview.md:41 +msgid "additional fields, that will be explained later in the documentation." +msgstr "" + +#: docs/walrus-sites/overview.md:43 +msgid "" +"These `Resource` dynamic fields are keyed with a struct of type " +"`ResourcePath`" +msgstr "" + +#: docs/walrus-sites/overview.md:51 +msgid "" +"This struct just holds the string of the path (`/index.html`); having a " +"separate type ensures that we will not have namespace collisions with other " +"dynamic fields, possibly added by other packages." +msgstr "" + +#: docs/walrus-sites/overview.md:54 +msgid "" +"To see this in action, look at [a Walrus Site in the " +"explorer](https://suiscan.xyz/testnet/object/0xd20b90149409ba5d005d4a2cd981db9494bc3cdb2f04c47ca1af98dd8f71610a), " +"and check its dynamic fields." +msgstr "" + +#: docs/walrus-sites/overview.md:58 +msgid "The site rendering path" +msgstr "" + +#: docs/walrus-sites/overview.md:60 +msgid "" +"Given the Sui object ID of a Walrus Site, it is easy to look up the " +"resources that compose it by looking at the dynamic fields, and then fetch " +"these resources from Walrus using the blob ID contained in the `Resource` " +"struct." +msgstr "" + +#: docs/walrus-sites/overview.md:64 +msgid "" +"The only outstanding question is, therefore, how to perform these lookups on " +"the client. A few approaches are possible:" +msgstr "" + +#: docs/walrus-sites/overview.md:67 +msgid "" +"Having a server that accepts requests for a Sui object ID and possibly a " +"path, and performs this resolution on behalf of the client, serving back the " +"resource as a standard HTML Response." +msgstr "" + +#: docs/walrus-sites/overview.md:69 +msgid "" +"Using a custom application on the client that has both a web browser and " +"knowledge of how Walrus Sites work, and can locally perform this resolution." +msgstr "" + +#: docs/walrus-sites/overview.md:71 +msgid "" +"A hybrid approach based on service workers, where a service worker that is " +"able to perform the resolution is installed in the browser from a portal." +msgstr "" + +#: docs/walrus-sites/overview.md:74 +msgid "" +"All of these approaches are viable (the first has been used for similar " +"applications in IPFS gateways, for example), and have trade-offs." +msgstr "" + +#: docs/walrus-sites/overview.md:77 +msgid "" +"Currently, we provide the server-side and the service-worker based " +"approaches." +msgstr "" + +#: docs/walrus-sites/overview.md:79 +msgid "Browsing and domain isolation" +msgstr "" + +#: docs/walrus-sites/overview.md:81 +msgid "" +"We must ensure that, when browsing multiple sites through a portal, for " +"example the one hosted at , these sites are isolated. " +"Isolation is necessary for security, and to ensure that the wallet " +"connection in the browser works as expected." +msgstr "" + +#: docs/walrus-sites/overview.md:85 +msgid "" +"To do so, we give each Walrus Site a specific _subdomain_ of the portal's " +"domain. For example, the Flatland mint dApp is hosted at " +", where the subdomain `flatland` is uniquely " +"associated to the object ID of the Walrus Site through SuiNS." +msgstr "" + +#: docs/walrus-sites/overview.md:89 +msgid "" +"Walrus Sites also work without SuiNS: a site can _always_ be browsed by " +"using as subdomain the Base36 encoding of the Sui object ID of the site. For " +"the Flatland dApp, this URL is: " +"." +msgstr "" + +#: docs/walrus-sites/overview.md:93 +msgid "Base36 was chosen for two reasons, forced by the subdomain standards:" +msgstr "" + +#: docs/walrus-sites/overview.md:95 +msgid "" +"A subdomain can have at most 63 characters, while a Hex-encoded Sui object " +"ID requires 64." +msgstr "" + +#: docs/walrus-sites/overview.md:96 +msgid "" +"A subdomain is case _insensitive_, ruling out other popular encodings, e.g., " +"Base64 or Base58." +msgstr "" + +#: docs/walrus-sites/overview.md:98 +msgid "Walrus Site portals" +msgstr "" + +#: docs/walrus-sites/overview.md:100 +msgid "Portal types" +msgstr "" + +#: docs/walrus-sites/overview.md:102 +msgid "" +"As mentioned before, we provide two types of portals to browse Walrus Sites:" +msgstr "" + +#: docs/walrus-sites/overview.md:104 +msgid "" +"The server-side portal, which is a server that resolves a Walrus Site, " +"returning it to the browser. The server-side portal is hosted at " +"." +msgstr "" + +#: docs/walrus-sites/overview.md:106 +msgid "" +"The service-worker portal, which is a service worker that is installed in " +"the browser and resolves a Walrus Site. The service-worker portal is hosted " +"at ." +msgstr "" + +#: docs/walrus-sites/overview.md:109 +msgid "" +"We now describe the resolution process of a Walrus Site in the browser using " +"the service-worker portal as an example." +msgstr "" + +#: docs/walrus-sites/overview.md:112 +msgid "The end-to-end resolution of a Walrus Site" +msgstr "" + +#: docs/walrus-sites/overview.md:114 +msgid "" +"We now show in greater detail how a Walrus Site is rendered in a client's " +"browser with the service worker approach. The steps below all reference the " +"following figure:" +msgstr "" + +#: docs/walrus-sites/overview.md:117 +msgid "![Walrus Site resolution](../assets/walrus-site-diagram.svg)" +msgstr "" + +#: docs/walrus-sites/overview.md:119 +msgid "" +"**Site publishing** (step 0): The site developer publishes the Walrus Site " +"using the [`site-builder`](#the-site-builder), or making use of a publisher. " +"Assume the developer uses the SuiNS name `dapp.sui` to point to the object " +"ID of the created Walrus Site." +msgstr "" + +#: docs/walrus-sites/overview.md:122 +msgid "" +"**Browsing starts** (step 1): A client browses `dapp.walrus.site/index.html` " +"in their browser." +msgstr "" + +#: docs/walrus-sites/overview.md:123 +msgid "" +"**Service worker installation** (steps 2-6): The browser connects to the " +"portal hosted at `walrus.site`, which responds with a page that installs the " +"service worker for `dapp.walrus.site`. The page is refreshed to activate the " +"service worker." +msgstr "" + +#: docs/walrus-sites/overview.md:126 +msgid "" +"**Site resolution** (steps 7-10): The service worker, which is now " +"installed, interprets its _origin_ `dapp.walrus.site`, and makes a SuiNS " +"resolution for `dapp.sui`, obtaining the related object ID. Using the object " +"ID, it then fetches the dynamic fields of the object (also checking " +"[redirects](./portal.md)). From the dynamic fields, it selects the one for " +"`/index.html`, and extracts its Walrus blob ID and headers (see the " +"[advanced section on headers](./routing.md))." +msgstr "" + +#: docs/walrus-sites/overview.md:131 +msgid "" +"**Blob fetch** (steps 11-14): Given the blob ID, the service worker queries " +"a Walrus aggregator for the blob." +msgstr "" + +#: docs/walrus-sites/overview.md:133 +msgid "" +"**Returning the response** (steps 15-16): Now that the service worker has " +"the bytes for `/index.html`, and its headers, it can craft a response that " +"is then rendered by the browser." +msgstr "" + +#: docs/walrus-sites/overview.md:137 +msgid "" +"These steps are executed for all resources the browser may query thereafter " +"(for example, if `/index.html` points to `assets/cat.png`)." +msgstr "" + +#: docs/walrus-sites/overview.md:140 +msgid "The site builder" +msgstr "" + +#: docs/walrus-sites/overview.md:142 +msgid "" +"To facilitate the creation of Walrus Sites, we provide the \"site builder\" " +"tool. The site builder takes care of creating Walrus Sites object on Sui, " +"with the correct structure, and stores the site resources to Walrus. Refer " +"to the [tutorial](./tutorial.md) for setup and usage instructions." +msgstr "" + +#: docs/walrus-sites/portal.md:5 +msgid "" +"We use the term \"portal\" to indicate any technology that is used to access " +"an browse Walrus Sites. As mentioned in the " +"[overview](./overview.md#the-site-rendering-path), we foresee three kinds of " +"portals:" +msgstr "" + +#: docs/walrus-sites/portal.md:9 +msgid "server-side portals;" +msgstr "" + +#: docs/walrus-sites/portal.md:10 +msgid "custom local apps; and" +msgstr "" + +#: docs/walrus-sites/portal.md:11 +msgid "service-worker based portals in the browser." +msgstr "" + +#: docs/walrus-sites/portal.md:13 +msgid "" +"Currently, the server-side and service-workers portals are available at " +" and , respectively." +msgstr "" + +#: docs/walrus-sites/portal.md:16 +msgid "Running the portal locally" +msgstr "" + +#: docs/walrus-sites/portal.md:18 +msgid "" +"You can run a service-worker portal locally if you want to browse Walrus " +"Sites without accessing external portals or for development purposes." +msgstr "" + +#: docs/walrus-sites/portal.md:21 +msgid "" +"This requires having the [`pnpm`](https://pnpm.io/) tool installed. To " +"start, clone the `walrus-sites` repo and enter the `portal` directory. Here, " +"run" +msgstr "" + +#: docs/walrus-sites/portal.md:26 +msgid "# Build the portal you want to use, or both\n" +msgstr "" + +#: docs/walrus-sites/portal.md:32 +msgid "" +"to install the dependencies, and then either one of the following commands:" +msgstr "" + +#: docs/walrus-sites/portal.md:35 +msgid "# Serve the server-side portal\n" +msgstr "" + +#: docs/walrus-sites/portal.md:37 +msgid "# Serve the service-worker portal\n" +msgstr "" + +#: docs/walrus-sites/portal.md:42 +msgid "" +"to serve one of the portals. Typically, you will find it served at " +"`localhost:8080` (but check the output of the serve command)." +msgstr "" + +#: docs/walrus-sites/portal.md:45 +msgid "" +"For the production versions, use the `prod` commands: `serve:prod:server` " +"and `serve:prod:worker`." +msgstr "" + +#: docs/walrus-sites/portal.md:47 +msgid "Configuring the portal" +msgstr "" + +#: docs/walrus-sites/portal.md:49 +msgid "" +"The most important configuration parameters for the portal are in " +"`portal/common/lib/constants.ts`:" +msgstr "" + +#: docs/walrus-sites/portal.md:51 +msgid "" +"`NETWORK`: The Sui network to be used for fetching the Walrus Sites objects. " +"Currently, we use Sui `testnet`." +msgstr "" + +#: docs/walrus-sites/portal.md:53 +msgid "" +"`AGGREGATOR`: The URL of the [aggregator](../usage/web-api.md) from which " +"the service worker will fetch the Walrus blobs." +msgstr "" + +#: docs/walrus-sites/portal.md:55 +msgid "`SITE_PACKAGE`: The Sui object ID of the Walrus Sites package." +msgstr "" + +#: docs/walrus-sites/portal.md:56 +msgid "" +"`MAX_REDIRECT_DEPTH`: The number of [redirects](./redirects.md) the service " +"worker will follow before stopping." +msgstr "" + +#: docs/walrus-sites/portal.md:58 +msgid "" +"`SITE_NAMES`: Hard coded `name: objectID` mappings, to override the SuiNS " +"names. For development only." +msgstr "" + +#: docs/walrus-sites/authentication.md:5 +msgid "" +"Walrus Sites offer a simple mechanism to authenticate the data that is " +"served from the Walrus storage on the client side. Thus, Walrus Sites can " +"guarantee (with various degrees of confidence, depending on the setup) that " +"the site data is authentic and has not been tampered with by a malicious " +"aggregator." +msgstr "" + +#: docs/walrus-sites/authentication.md:10 +msgid "Authentication mechanism" +msgstr "" + +#: docs/walrus-sites/authentication.md:12 +msgid "" +"The Walrus Sites resource object on Sui stores, alongside the resource " +"information, a SHA-256 hash of the resource's content." +msgstr "" + +#: docs/walrus-sites/authentication.md:15 +msgid "" +"When the client requests a resource, the portal will check that the hash of " +"the data received from the Walrus storage (and the Walrus aggregator in " +"particular) matches the hash stored on Sui." +msgstr "" + +#: docs/walrus-sites/authentication.md:18 +msgid "" +"If the hashes do not match, the portal will return the following warning " +"page:" +msgstr "" + +#: docs/walrus-sites/authentication.md:20 +msgid "![Hash mismatch warning page](../assets/walrus-sites-hash-mismatch.png)" +msgstr "" + +#: docs/walrus-sites/authentication.md:22 +msgid "Authentication Guarantees" +msgstr "" + +#: docs/walrus-sites/authentication.md:24 +msgid "" +"Depending on the type of deployment, this technique gives increasing levels " +"of confidence that the site data is authentic. We list them here in " +"increasing order of assurance." +msgstr "" + +#: docs/walrus-sites/authentication.md:27 +msgid "Remote server-side portal deployment" +msgstr "" + +#: docs/walrus-sites/authentication.md:29 +msgid "" +"In this case, the user must fully trust the portal provider to authenticate " +"the data. With a trusted portal, the authentication mechanism guarantees " +"that the aggregator or cache (from which the blob has been fetched) did not " +"tamper with the contents of the blob." +msgstr "" + +#: docs/walrus-sites/authentication.md:33 +msgid "Remote service-worker portal deployment" +msgstr "" + +#: docs/walrus-sites/authentication.md:35 +msgid "" +"Here, the portal provider is only trusted to provide the correct service " +"worker code to the user. The user's browser will then perform the fetching " +"and authentication. The guarantees are therefore the same as with the remote " +"server-site portal, with the addition that the user can inspect the code " +"returned by the portal provider and verify its integrity (e.g., by comparing " +"it the hash of the service worker code to one that is known to be correct)." +msgstr "" + +#: docs/walrus-sites/authentication.md:41 +msgid "Local portal deployment" +msgstr "" + +#: docs/walrus-sites/authentication.md:43 +msgid "" +"Finally, a user can clone the Walrus Sites repository and deploy a portal " +"locally, browsing Walrus Sites through `localhost`. In this case, the user " +"has full control over the portal code and can verify its operation. " +"Therefore, they can fully authenticate that the data served by Walrus and " +"Walrus Sites is what the original developer intended." +msgstr "" + +#: docs/walrus-sites/restrictions.md:5 +msgid "" +"Walrus Sites can be used to deploy almost any form of traditional static " +"web2 website build for modern browsers. There are, however, a number of " +"restrictions that a developer should keep in mind when creating or porting a " +"website to Walrus Sites." +msgstr "" + +#: docs/walrus-sites/restrictions.md:9 +msgid "No secret values" +msgstr "" + +#: docs/walrus-sites/restrictions.md:11 +msgid "" +"Walrus Sites are fully publicly accessible, as the metadata is stored on " +"Sui, and the site content is stored on Walrus. Therefore, developers _must " +"not_ store secret values within the sites." +msgstr "" + +#: docs/walrus-sites/restrictions.md:14 +msgid "" +"We emphasize again that any such backend-specific operations (storing secret " +"values, authentication, etc.) are achievable by leveraging the integration " +"with the Sui blockchain and a Sui-compatible wallet." +msgstr "" + +#: docs/walrus-sites/restrictions.md:18 +msgid "There is a maximum redirect depth" +msgstr "" + +#: docs/walrus-sites/restrictions.md:20 +msgid "" +"The number of consecutive redirects a Walrus Site can perform is capped by " +"the portal (see [Portal configuration](./portal.md)). This measure ensures " +"that loading a Walrus Site does not result in an infinite loading loop." +msgstr "" + +#: docs/walrus-sites/restrictions.md:24 +msgid "" +"Different portals can set this limit as they desire. The limit for the " +"portal hosted at has a maximum redirect depth of 3." +msgstr "" + +#: docs/walrus-sites/restrictions.md:27 +msgid "Service workers are not available" +msgstr "" + +#: docs/walrus-sites/restrictions.md:29 +msgid "" +"Walrus Sites leverage service workers in the clients' browsers to perform " +"essential operations:" +msgstr "" + +#: docs/walrus-sites/restrictions.md:31 +msgid "reading the site metadata from Sui;" +msgstr "" + +#: docs/walrus-sites/restrictions.md:32 +msgid "fetching the page content from Walrus; and" +msgstr "" + +#: docs/walrus-sites/restrictions.md:33 +msgid "serving the content to the browser." +msgstr "" + +#: docs/walrus-sites/restrictions.md:35 +msgid "" +"Therefore, a site deployed on Walrus Sites cannot use service workers " +"itself. Installing a service worker from within a Walrus Site will result in " +"a dysfunctional site and a poor experience for the user." +msgstr "" + +#: docs/walrus-sites/restrictions.md:44 +msgid "iOS Sui mobile wallets do not work with the service-worker portal" +msgstr "" + +#: docs/walrus-sites/restrictions.md:46 +msgid "" +"Service workers cannot be loaded inside an in-app browser on iOS, because of " +"a limitation of the WebKit engine. As a consequence, Walrus Sites cannot be " +"used within Sui-compatible wallet apps on iOS. Therefore, Sui wallets cannot " +"currently be used on a service-worker portal on iOS. Note, however, that " +"_browsing_ a Walrus Site is still possible on iOS through any browser." +msgstr "" + +#: docs/walrus-sites/restrictions.md:51 +msgid "" +"To provide a seamless experience for iOS users (and other users on browsers " +"that do not support service workers), we implemented a redirect to a " +"server-side portal (). Whenever a user on an iOS wallet " +"browses a Walrus Site, the redirect will automatically take them to the " +"`.blob.store` server-side portal. This way, the user can still " +"use the wallet." +msgstr "" + +#: docs/walrus-sites/restrictions.md:61 +msgid "No support for progressive web apps (PWAs)" +msgstr "" + +#: docs/walrus-sites/restrictions.md:63 +msgid "" +"With the current design, Walrus Sites cannot be used for progressive web " +"apps (PWAs)." +msgstr "" + +#: docs/walrus-sites/restrictions.md:65 +msgid "" +"Two characteristics of the service-worker portal prevent support for PWAs:" +msgstr "" + +#: docs/walrus-sites/restrictions.md:67 +msgid "" +"Since the service worker needs to be registered for the page to work, the " +"PWA's manifest file cannot be loaded by the browser directly." +msgstr "" + +#: docs/walrus-sites/restrictions.md:69 +msgid "" +"There can only be one service worker registered per origin. Therefore, " +"registering a PWA's service worker would remove the Walrus Sites service " +"worker, breaking Walrus Sites' functionality." +msgstr "" + +#: docs/walrus-sites/restrictions.md:72 +msgid "" +"Note that the server-side portal does not share these limitations. However, " +"for the moment, we support both technologies: Walrus Sites must be able to " +"load from both a service-worker portal and a server-side portal, and " +"therefore have to be built with the more restrictive feature set. For more " +"details, see the [installation requirements for " +"PWAs](https://en.wikipedia.org/wiki/Progressive_web_app#Installation_criteria)." +msgstr "" + +#: docs/walrus-sites/tos.md:5 +msgid "Walrus Sites - TERMS of SERVICE" +msgstr "" + +#: docs/walrus-sites/tos.md:7 +msgid "Last Updated: June 18, 2024" +msgstr "" + +#: docs/walrus-sites/tos.md:9 +msgid "" +"These Terms of Service (“**Terms**”) govern your use of certain software " +"services, including Walrus Sites provided by Mysten Labs, Inc. (“**Mysten " +"Labs**”) (collectively the \"**Services**\"). By accessing the Services, you " +"agree to and accept these terms and conditions. If you don’t agree to be " +"bound by these Terms, do not use the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:14 +msgid "" +"IMPORTANT NOTICE REGARDING ARBITRATION FOR U.S. CUSTOMERS: WHEN YOU AGREE TO " +"THESE TERMS YOU ARE AGREEING (WITH LIMITED EXCEPTION) TO RESOLVE ANY DISPUTE " +"BETWEEN YOU AND MYSTEN LABS THROUGH BINDING, INDIVIDUAL ARBITRATION RATHER " +"THAN IN COURT. PLEASE REVIEW CAREFULLY SECTION XIV “DISPUTE RESOLUTION” " +"BELOW FOR DETAILS REGARDING ARBITRATION." +msgstr "" + +#: docs/walrus-sites/tos.md:19 +msgid "I. Privacy Policy" +msgstr "" + +#: docs/walrus-sites/tos.md:21 +msgid "" +"Please review our [Privacy Policy](../legal/privacy.md), which also governs " +"your use of the Services, for information on how we collect, use and share " +"your information. By using the Services you agree to be bound by our Privacy " +"Policy." +msgstr "" + +#: docs/walrus-sites/tos.md:25 +msgid "II. Eligibility" +msgstr "" + +#: docs/walrus-sites/tos.md:27 +msgid "" +"You may use the Services only if you are 18 years or older and capable of " +"forming a binding contract with Mysten Labs, and not otherwise barred from " +"using the Services under applicable law, including applicable U.S. and " +"non-U.S. export control and trade sanctions laws." +msgstr "" + +#: docs/walrus-sites/tos.md:31 +msgid "III. Walrus Sites" +msgstr "" + +#: docs/walrus-sites/tos.md:33 +msgid "" +"The Services allow you access website resources (“**Stored Objects**”) that " +"are stored in the Walrus Store and linked by the Sui blockchain. In " +"providing the Services, Mysten Labs provides you with a means to access the " +"Stored Objects, but Mysten Labs does not process the Stored Objects " +"directly. Mysten Labs has no responsibility to screen or moderate Stored " +"Objects accessible via the Services. Stored Objects are developed by people " +"over whom Mysten Labs exercises no control. The Services may provide you " +"with access to Stored Objects that some people find objectionable, " +"inappropriate, or offensive. We assume no responsibility for the content of " +"Stored Objects accessed through the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:42 +msgid "IV. Service Conditions and Disclaimers" +msgstr "" + +#: docs/walrus-sites/tos.md:44 +msgid "" +"Fees. We may charge fees for some or part of the Services we make " +"available to you. We reserve the right to change those fees at any time, in " +"our sole and absolute discretion." +msgstr "" + +#: docs/walrus-sites/tos.md:46 +msgid "" +"Acknowledgment of Certain Risks; Disclaimers. Mysten Labs disclaims " +"any and all responsibility or liability for the accuracy, content, " +"completeness, legality, reliability, or operability or availability of " +"information or material accessed via the Services. Mysten Labs disclaims any " +"responsibility for the deletion, failure to store, misdelivery, or untimely " +"delivery of any information or material. Mysten Labs disclaims any " +"responsibility for any harm resulting from accessing any information or " +"material on any blockchain through the Services. YOU UNDERSTAND AND AGREE " +"THAT YOU DOWNLOAD OR OTHERWISE OBTAIN MATERIAL OR DATA THROUGH THE USE OF " +"THE SERVICES AT YOUR OWN DISCRETION AND RISK AND THAT YOU WILL BE SOLELY " +"RESPONSIBLE FOR ANY DAMAGES TO YOUR COMPUTER SYSTEM OR LOSS OF DATA THAT " +"RESULTS IN THE DOWNLOAD OF SUCH MATERIAL OR DATA." +msgstr "" + +#: docs/walrus-sites/tos.md:57 +msgid "" +"The Services could be impacted by one or more regulatory inquiries or " +"regulatory actions, which could impede or limit the ability of Mysten Labs " +"to continue to make its proprietary software, and thus, could impede or " +"limit your ability to continue to use the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:61 +msgid "" +"You understand that the Walrus Store and Sui blockchain (and all other " +"networks with which the Services may be compatible) remain under " +"development, which creates technological and security risks when using the " +"Services in addition to uncertainty relating to Digital Assets and " +"transactions therein. You acknowledge that the cost of transacting on the " +"Sui blockchain is variable and may increase at any time, thereby impacting " +"any activities taking place on the Sui blockchain, which may result in price " +"fluctuations or increased prices for using the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:68 +msgid "" +"The Services are provided to you \"as-is\" and \"with all faults.\" We make " +"no warranties or representations regarding the functionality, quality, or " +"fitness for a particular purpose of the Services. By using the Services, you " +"acknowledge and agree to the following:" +msgstr "" + +#: docs/walrus-sites/tos.md:72 +msgid "" +"Mysten Labs disclaims all warranties, whether express, implied, or " +"statutory, including but not limited to any warranties of merchantability, " +"non-infringement, and fitness for a particular purpose." +msgstr "" + +#: docs/walrus-sites/tos.md:75 +msgid "" +"Mysten Labs does not guarantee that the Services will be free from errors, " +"bugs, or interruptions in service, including failed transactions for which " +"you have paid associated gas fees. Any use of the Services is at your own " +"risk." +msgstr "" + +#: docs/walrus-sites/tos.md:78 +msgid "" +"Mysten Labs shall not be liable for any direct, indirect, incidental, " +"special, or consequential damages, whether arising from the use of the " +"Services or any inability to use the Services, even if Mysten Labs has been " +"advised of the possibility of such damages." +msgstr "" + +#: docs/walrus-sites/tos.md:81 +msgid "" +"It is your responsibility to evaluate the accuracy, completeness, and " +"usefulness of any information, content, or data provided by the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:83 +msgid "" +"Mysten Labs is under no obligation to provide support, maintenance, updates, " +"or fixes for the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:85 +msgid "" +"Mysten Labs is not obligated to correct or address any errors, defects, or " +"issues identified in the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:87 +msgid "" +"Mysten Labs may change, update, or discontinue the Services at any time " +"without notice." +msgstr "" + +#: docs/walrus-sites/tos.md:88 +msgid "" +"Your use of the Services indicates your acceptance of the risk associated " +"with its use." +msgstr "" + +#: docs/walrus-sites/tos.md:91 +msgid "V. Ownership" +msgstr "" + +#: docs/walrus-sites/tos.md:93 +msgid "" +"We grant you a limited, non-exclusive, revocable, non-transferable, " +"non-sublicensable license to use the Services, only as authorized in these " +"Terms. We reserve all rights not expressly granted to you in these Terms. " +"The Services are protected by copyright, trademark, patent, and other laws " +"of the United States and other countries. We own all rights, title, interest " +"in and to the Services and all copies of the Services. These Terms do not " +"grant you any rights to our trademarks or service marks." +msgstr "" + +#: docs/walrus-sites/tos.md:99 +msgid "" +"You may submit feedback, comments, or ideas about the Services " +"(“**Ideas**”). Submitting Ideas is entirely voluntary, and we will be free " +"to use such Ideas as we see fit and without any obligation to you." +msgstr "" + +#: docs/walrus-sites/tos.md:104 +msgid "VI. General Prohibitions and Mysten Labs’s Enforcement Rights." +msgstr "" + +#: docs/walrus-sites/tos.md:106 +msgid "You agree not to do any of the following:" +msgstr "" + +#: docs/walrus-sites/tos.md:108 +msgid "" +"Use, display, mirror or frame the Services or any individual element within " +"the Services, Mysten Labs’s name, any Mysten Labs trademark, logo or other " +"proprietary information, or the layout and design of any page or form " +"contained on a page, without Mysten Labs’s express written consent;" +msgstr "" + +#: docs/walrus-sites/tos.md:111 +msgid "" +"Access, tamper with, or use non-public areas of the Services, Mysten Labs’s " +"computer systems, or the technical delivery systems of Mysten Labs’s " +"providers;" +msgstr "" + +#: docs/walrus-sites/tos.md:113 +msgid "" +"Attempt to probe, scan or test the vulnerability of any Mysten Labs system " +"or network or breach any security or authentication measures;" +msgstr "" + +#: docs/walrus-sites/tos.md:115 +msgid "" +"Avoid, bypass, remove, deactivate, impair, descramble or otherwise " +"circumvent any technological measure implemented by Mysten Labs or any of " +"Mysten Labs’s providers or any other third party (including another user) to " +"protect the Services;" +msgstr "" + +#: docs/walrus-sites/tos.md:118 +msgid "" +"Attempt to access or search the Services or download content from the " +"Services using any engine, software, tool, agent, device or mechanism " +"(including spiders, robots, crawlers, data mining tools or the like) other " +"than the software and/or search agents provided by Mysten Labs or other " +"generally available third-party web browsers;" +msgstr "" + +#: docs/walrus-sites/tos.md:122 +msgid "" +"Send any unsolicited or unauthorized advertising, promotional materials, " +"email, junk mail, spam, chain letters or other form of solicitation;" +msgstr "" + +#: docs/walrus-sites/tos.md:124 +msgid "" +"Use any meta tags or other hidden text or metadata utilizing a Mysten Labs " +"trademark, logo URL or product name without Mysten Labs’s express written " +"consent;" +msgstr "" + +#: docs/walrus-sites/tos.md:126 +msgid "" +"Use the Services, or any portion thereof, for any commercial purpose or for " +"the benefit of any third party or in any manner not permitted by these Terms;" +msgstr "" + +#: docs/walrus-sites/tos.md:128 +msgid "" +"Forge any TCP/IP packet header or any part of the header information in any " +"email or newsgroup posting, or in any way use the Services to send altered, " +"deceptive or false source-identifying information;" +msgstr "" + +#: docs/walrus-sites/tos.md:131 +msgid "" +"Attempt to decipher, decompile, disassemble or reverse engineer any of the " +"software used to provide the Services;" +msgstr "" + +#: docs/walrus-sites/tos.md:133 +msgid "" +"Interfere with, or attempt to interfere with, the access of any user, host " +"or network, including, without limitation, sending a virus, overloading, " +"flooding, spamming, or mail-bombing the Services;" +msgstr "" + +#: docs/walrus-sites/tos.md:136 +msgid "" +"Collect or store any personally identifiable information from the Services " +"from other users of the Services without their express permission;" +msgstr "" + +#: docs/walrus-sites/tos.md:138 +msgid "Impersonate or misrepresent your affiliation with any person or entity;" +msgstr "" + +#: docs/walrus-sites/tos.md:139 +msgid "Violate any applicable law or regulation; or" +msgstr "" + +#: docs/walrus-sites/tos.md:140 +msgid "" +"Encourage or enable any other individual to do any of the foregoing. Mysten " +"Labs is not obligated to monitor access to or use of the Services or to " +"review or edit any content. However, we have the right to do so for the " +"purpose of operating the Services, to ensure compliance with these Terms and " +"to comply with applicable law or other legal requirements. We reserve the " +"right, but are not obligated, to remove or disable access to any content, at " +"any time and without notice, including, but not limited to, if we, at our " +"sole discretion, consider it objectionable or in violation of these Terms." +msgstr "" + +#: docs/walrus-sites/tos.md:148 +msgid "" +"We have the right to investigate violations of these Terms or conduct that " +"affects the Services. We may also consult and cooperate with law enforcement " +"authorities to prosecute users who violate the law." +msgstr "" + +#: docs/walrus-sites/tos.md:151 +msgid "VII. DMCA/Copyright Policy" +msgstr "" + +#: docs/walrus-sites/tos.md:153 +msgid "" +"Mysten Labs respects copyright law and expects its users to do the same. It " +"is Mysten Labs’ policy to terminate in appropriate circumstances users who " +"repeatedly infringe or are believed to be repeatedly infringing the rights " +"of copyright holders." +msgstr "" + +#: docs/walrus-sites/tos.md:157 +msgid "VIII. Sanctions" +msgstr "" + +#: docs/walrus-sites/tos.md:159 +msgid "" +"Without limiting the foregoing, you may not download or use the Services if " +"(i) you are in, under the control of, or a national or resident of Cuba, " +"Iran, North Korea, Syria or any other country subject to United States " +"embargo, or if you are on the U.S. Treasury Department's Specially " +"Designated Nationals List or the U.S. Commerce Department's Denied Persons " +"List, Unverified List, or Entity List; or (ii) you intend to supply any " +"Services to Cuba, Iran, North Korea, Sudan or Syria or any other country " +"subject to United States embargo (or a national or resident of one of these " +"countries), or to a person on the Specially Designated Nationals List, " +"Denied Persons List, Unverified List, or Entity List." +msgstr "" + +#: docs/walrus-sites/tos.md:168 +msgid "IX. Termination" +msgstr "" + +#: docs/walrus-sites/tos.md:170 +msgid "" +"We may suspend or terminate your access to and use of the Services, " +"including suspending access to or terminating your account, at our sole " +"discretion, at any time and without notice to you. You may cancel your " +"account, if you have one, at any time by removing the Wallet web browser " +"extension and ceasing any and all use of the Services. Upon any termination, " +"discontinuation or cancellation of the Services or your account, the " +"following Sections will survive: VIII and IX- XV" +msgstr "" + +#: docs/walrus-sites/tos.md:176 +msgid "X. Warranty Disclaimers" +msgstr "" + +#: docs/walrus-sites/tos.md:178 +msgid "" +"THE SERVICES ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND. WITHOUT " +"LIMITING THE FOREGOING, WE EXPLICITLY DISCLAIM ANY IMPLIED WARRANTIES OF " +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT AND " +"NON-INFRINGEMENT, AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR " +"USAGE OF TRADE. We make no warranty that the Services will meet your " +"requirements, will function as intended, will be free from bugs or errors, " +"or be available on an uninterrupted, secure, or error-free basis. We make no " +"warranty regarding the quality, accuracy, timeliness, truthfulness, " +"completeness or reliability of any information or content on the Services. " +"We may modify or terminate the Services at any time, with or without notice " +"to you." +msgstr "" + +#: docs/walrus-sites/tos.md:187 +msgid "XI. Indemnity" +msgstr "" + +#: docs/walrus-sites/tos.md:189 +msgid "" +"You will indemnify and hold Mysten Labs and its officers, directors, " +"employees and agents, harmless from and against any claims, disputes, " +"demands, liabilities, damages, losses, and costs and expenses, including, " +"without limitation, reasonable legal and accounting fees arising out of or " +"in any way connected with (a) your access to or use of the Services, (b) " +"your User Content, or (c) your violation of these Terms." +msgstr "" + +#: docs/walrus-sites/tos.md:195 +msgid "XII. Limitation of Liability" +msgstr "" + +#: docs/walrus-sites/tos.md:197 +msgid "" +"TO THE MAXIMUM EXTENT PERMITTED BY LAW, NEITHER MYSTEN LABS NOR ITS SERVICE " +"PROVIDERS INVOLVED IN CREATING, PRODUCING, OR DELIVERING THE SERVICES WILL " +"BE LIABLE FOR ANY INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES, " +"OR DAMAGES FOR LOST PROFITS, LOST REVENUES, LOST SAVINGS, LOST BUSINESS " +"OPPORTUNITY, LOSS OF DATA OR GOODWILL, SERVICE INTERRUPTION, COMPUTER DAMAGE " +"OR SYSTEM FAILURE OR THE COST OF SUBSTITUTE SERVICES OF ANY KIND ARISING OUT " +"OF OR IN CONNECTION WITH THESE TERMS OR FROM THE USE OF OR INABILITY TO USE " +"THE SERVICES, WHETHER BASED ON WARRANTY, CONTRACT, TORT (INCLUDING " +"NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER LEGAL THEORY, AND WHETHER OR NOT " +"MYSTEN LABS OR ITS SERVICE PROVIDERS HAVE BEEN INFORMED OF THE POSSIBILITY " +"OF SUCH DAMAGE, EVEN IF A LIMITED REMEDY SET FORTH HEREIN IS FOUND TO HAVE " +"FAILED OF ITS ESSENTIAL PURPOSE." +msgstr "" + +#: docs/walrus-sites/tos.md:206 +msgid "" +"TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT WILL MYSTEN LABS’ TOTAL " +"LIABILITY ARISING OUT OF OR IN CONNECTION WITH THESE TERMS OR FROM THE USE " +"OF OR INABILITY TO USE THE SERVICES EXCEED THE AMOUNTS YOU HAVE PAID OR ARE " +"PAYABLE BY YOU TO MYSTEN LABS FOR USE OF THE SERVICES OR ONE HUNDRED DOLLARS " +"($100), IF YOU HAVE NOT HAD ANY PAYMENT OBLIGATIONS TO MYSTEN LABS, AS " +"APPLICABLE." +msgstr "" + +#: docs/walrus-sites/tos.md:211 +msgid "" +"THE EXCLUSIONS AND LIMITATIONS OF DAMAGES SET FORTH ABOVE ARE FUNDAMENTAL " +"ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN MYSTEN LABS AND YOU." +msgstr "" + +#: docs/walrus-sites/tos.md:214 +msgid "XIII. Governing Law and Forum Choice." +msgstr "" + +#: docs/walrus-sites/tos.md:216 +msgid "" +"These Terms and any action related thereto will be governed by the Federal " +"Arbitration Act, federal arbitration law, and the laws of the State of " +"California, without regard to its conflict of laws provisions. Except as " +"otherwise expressly set forth in Section XVII “Dispute Resolution,” the " +"exclusive jurisdiction for all Disputes (defined below) that you and Mysten " +"Labs are not required to arbitrate will be the state and federal courts " +"located in the County of Santa Clara, and you and Mysten Labs each waive any " +"objection to jurisdiction and venue in such courts." +msgstr "" + +#: docs/walrus-sites/tos.md:223 +msgid "XIV. Dispute Resolution" +msgstr "" + +#: docs/walrus-sites/tos.md:225 +msgid "" +"Mandatory Arbitration of Disputes. We each agree that any dispute, " +"claim or controversy arising out of or relating to these Terms or the " +"breach, termination, enforcement, interpretation or validity thereof or the " +"use of the Services (collectively, “Disputes”) will be resolved solely by " +"binding, individual arbitration and not in a class, representative or " +"consolidated action or proceeding. You and Mysten Labs agree that the U.S. " +"Federal Arbitration Act governs the interpretation and enforcement of these " +"Terms, and that you and Mysten Labs are each waiving the right to a trial by " +"jury or to participate in a class action. This arbitration provision shall " +"survive termination of these Terms." +msgstr "" + +#: docs/walrus-sites/tos.md:233 +msgid "" +"Exceptions. As limited exceptions to Section XVII(A) above: (i) we " +"both may seek to resolve a Dispute in small claims court if it qualifies; " +"and (ii) we each retain the right to seek injunctive or other equitable " +"relief from a court to prevent (or enjoin) the infringement or " +"misappropriation of our intellectual property rights." +msgstr "" + +#: docs/walrus-sites/tos.md:237 +msgid "" +"Conducting Arbitration and Arbitration Rules. The arbitration will be " +"conducted by the American Arbitration Association (“AAA”) under its Consumer " +"Arbitration Rules (the “AAA Rules”) then in effect, except as modified by " +"these Terms. The AAA Rules are available at www.adr.org or by calling " +"1-800-778-7879. A party who wishes to start arbitration must submit a " +"written Demand for Arbitration to AAA and give notice to the other party as " +"specified in the AAA Rules. The AAA provides a form Demand for Arbitration " +"at [www.adr.org](http://www.adr.org). Any arbitration hearings will " +"take place in the county (or parish) where you live, unless we both agree to " +"a different location. The parties agree that the arbitrator shall have " +"exclusive authority to decide all issues relating to the interpretation, " +"applicability, enforceability and scope of this arbitration agreement." +msgstr "" + +#: docs/walrus-sites/tos.md:247 +msgid "" +"Arbitration Costs. Payment of all filing, administration and " +"arbitrator fees will be governed by the AAA Rules, and we won’t seek to " +"recover the administration and arbitrator fees we are responsible for " +"paying, unless the arbitrator finds your Dispute frivolous. If we prevail in " +"arbitration we’ll pay all of our attorneys’ fees and costs and won’t seek to " +"recover them from you. If you prevail in arbitration you will be entitled to " +"an award of attorneys’ fees and expenses to the extent provided under " +"applicable law." +msgstr "" + +#: docs/walrus-sites/tos.md:253 +msgid "" +"Injunctive and Declaratory Relief. Except as provided in Section " +"XIV(B) above, the arbitrator shall determine all issues of liability on the " +"merits of any claim asserted by either party and may award declaratory or " +"injunctive relief only in favor of the individual party seeking relief and " +"only to the extent necessary to provide relief warranted by that party’s " +"individual claim. To the extent that you or we prevail on a claim and seek " +"public injunctive relief (that is, injunctive relief that has the primary " +"purpose and effect of prohibiting unlawful acts that threaten future injury " +"to the public), the entitlement to and extent of such relief must be " +"litigated in a civil court of competent jurisdiction and not in arbitration. " +"The parties agree that litigation of any issues of public injunctive relief " +"shall be stayed pending the outcome of the merits of any individual claims " +"in arbitration." +msgstr "" + +#: docs/walrus-sites/tos.md:263 +msgid "" +"Class Action Waiver. YOU AND MYSTEN LABS AGREE THAT EACH MAY BRING " +"CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS " +"A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE " +"PROCEEDING. Further, if the parties’ Dispute is resolved through " +"arbitration, the arbitrator may not consolidate another person’s claims with " +"your claims, and may not otherwise preside over any form of a representative " +"or class proceeding. If this specific provision is found to be " +"unenforceable, then the entirety of this Dispute Resolution section shall be " +"null and void." +msgstr "" + +#: docs/walrus-sites/tos.md:270 +msgid "" +"Severability. With the exception of any of the provisions in Section " +"XVII(F) of these Terms (“**Class Action Waiver**”), if an arbitrator or " +"court of competent jurisdiction decides that any part of these Terms is " +"invalid or unenforceable, the other parts of these Terms will still apply." +msgstr "" + +#: docs/walrus-sites/tos.md:275 +msgid "XV. General Terms" +msgstr "" + +#: docs/walrus-sites/tos.md:277 +msgid "" +"Reservation of Rights. Mysten Labs and its licensors exclusively own " +"all right, title and interest in and to the Services, including all " +"associated intellectual property rights. You acknowledge that the Services " +"are protected by copyright, trademark, and other laws of the United States " +"and foreign countries. You agree not to remove, alter or obscure any " +"copyright, trademark, service mark or other proprietary rights notices " +"incorporated in or accompanying the Services." +msgstr "" + +#: docs/walrus-sites/tos.md:282 +msgid "" +"Entire Agreement. These Terms constitute the entire and exclusive " +"understanding and agreement between Mysten Labs and you regarding the " +"Services, and these Terms supersede and replace all prior oral or written " +"understandings or agreements between Mysten Labs and you regarding the " +"Services. If any provision of these Terms is held invalid or unenforceable " +"by an arbitrator or a court of competent jurisdiction, that provision will " +"be enforced to the maximum extent permissible and the other provisions of " +"these Terms will remain in full force and effect. Except where provided by " +"applicable law in your jurisdiction, you may not assign or transfer these " +"Terms, by operation of law or otherwise, without Mysten Labs’ prior written " +"consent. Any attempt by you to assign or transfer these Terms absent our " +"consent or your statutory right, without such consent, will be null. Mysten " +"Labs may freely assign or transfer these Terms without restriction. Subject " +"to the foregoing, these Terms will bind and inure to the benefit of the " +"parties, their successors and permitted assigns." +msgstr "" + +#: docs/walrus-sites/tos.md:294 +msgid "" +"Notices. Any notices or other communications provided by Mysten Labs " +"under these Terms will be given: (i) via email; or (ii) by posting to the " +"Services. For notices made by email, the date of receipt will be deemed the " +"date on which such notice is transmitted." +msgstr "" + +#: docs/walrus-sites/tos.md:297 +msgid "" +"Waiver of Rights. Mysten Labs’ failure to enforce any right or " +"provision of these Terms will not be considered a waiver of such right or " +"provision. The waiver of any such right or provision will be effective only " +"if in writing and signed by a duly authorized representative of Mysten Labs. " +"Except as expressly set forth in these Terms, the exercise by either party " +"of any of its remedies under these Terms will be without prejudice to its " +"other remedies under these Terms or otherwise." +msgstr "" + +#: docs/walrus-sites/tos.md:304 +msgid "XVI. Contact Information" +msgstr "" + +#: docs/walrus-sites/tos.md:306 +msgid "" +"If you have any questions about these Terms or the Services, please contact " +"Mysten Labs at [legal@mystenlabs.com](mailto:legal@mystenlabs.com)." +msgstr "" + +#: docs/glossary.md:3 +msgid "Walrus Glossary" +msgstr "" + +#: docs/glossary.md:5 +msgid "" +"To make communication as clear and efficient as possible, we make sure to " +"use a single term for every Walrus entity/concept and _do not_ use any " +"synonyms. The following table lists various concepts, their canonical name, " +"and how they relate to or differ from other terms." +msgstr "" + +#: docs/glossary.md:9 +msgid "" +"Italicized terms in the description indicate other specific Walrus terms " +"contained in the table." +msgstr "" + +#: docs/glossary.md:11 +msgid "Approved name" +msgstr "" + +#: docs/glossary.md:11 +msgid "Description" +msgstr "" + +#: docs/glossary.md:13 +msgid "storage node (SN)" +msgstr "" + +#: docs/glossary.md:13 +msgid "entity storing data for Walrus; holds one or several _shards_" +msgstr "" + +#: docs/glossary.md:14 +msgid "blob" +msgstr "" + +#: docs/glossary.md:14 +msgid "single unstructured data object stored on Walrus" +msgstr "" + +#: docs/glossary.md:15 +msgid "permanent blob" +msgstr "" + +#: docs/glossary.md:15 +msgid "" +"blob which cannot be deleted by its owner and is guaranteed to be available " +"until at least its expiry epoch (assuming it is valid)" +msgstr "" + +#: docs/glossary.md:16 +msgid "deletable blob" +msgstr "" + +#: docs/glossary.md:16 +msgid "" +"blob which can be deleted by its owner at any time to be able to reuse the " +"storage resource" +msgstr "" + +#: docs/glossary.md:17 +msgid "shard" +msgstr "" + +#: docs/glossary.md:17 +msgid "" +"(disjoint) subset of erasure-encoded data of all _blobs_; at every point in " +"time, a _shard_ is assigned to and stored on a single _SN_" +msgstr "" + +#: docs/glossary.md:18 +msgid "RedStuff" +msgstr "" + +#: docs/glossary.md:18 +msgid "" +"our erasure-encoding approach, which uses two different encodings (_primary_ " +"and _secondary_) to enable shard recovery; details are available in the " +"[whitepaper](./walrus.pdf)" +msgstr "" + +#: docs/glossary.md:19 +msgid "sliver" +msgstr "" + +#: docs/glossary.md:19 +msgid "" +"erasure-encoded data of one _shard_ corresponding to a single blob for one " +"of the two encodings; this contains several erasure-encoded symbols of that " +"blob but not the _blob metadata_" +msgstr "" + +#: docs/glossary.md:20 +msgid "sliver pair" +msgstr "" + +#: docs/glossary.md:20 +msgid "the combination of a shard’s primary and secondary sliver" +msgstr "" + +#: docs/glossary.md:21 +msgid "blob ID" +msgstr "" + +#: docs/glossary.md:21 +msgid "cryptographic ID computed from a _blob_’s _slivers_" +msgstr "" + +#: docs/glossary.md:22 +msgid "blob metadata" +msgstr "" + +#: docs/glossary.md:22 +msgid "" +"metadata of one _blob_; in particular, this contains a hash per _shard_ to " +"enable the authentication of _slivers_ and recovery symbols" +msgstr "" + +#: docs/glossary.md:23 +msgid "(end) user" +msgstr "" + +#: docs/glossary.md:23 +msgid "" +"any entity/person that wants to store or read _blobs_ on/from Walrus; can " +"act as a Walrus client itself or use the simple interface exposed by " +"_publishers_ and _caches_" +msgstr "" + +#: docs/glossary.md:24 +msgid "publisher" +msgstr "" + +#: docs/glossary.md:24 +msgid "" +"service interacting with Sui and the _SNs_ to store _blobs_ on Walrus; " +"offers a simple `HTTP POST` endpoint to _end users_" +msgstr "" + +#: docs/glossary.md:25 +msgid "aggregator" +msgstr "" + +#: docs/glossary.md:25 +msgid "" +"service that reconstructs _blobs_ by interacting with _SNs_ and exposes a " +"simple `HTTP GET` endpoint to _end users_" +msgstr "" + +#: docs/glossary.md:26 +msgid "cache" +msgstr "" + +#: docs/glossary.md:26 +msgid "an _aggregator_ with additional caching capabilities" +msgstr "" + +#: docs/glossary.md:27 +msgid "(Walrus) client" +msgstr "" + +#: docs/glossary.md:27 +msgid "" +"entity interacting directly with the _SNs_; this can be an " +"_aggregator_/_cache_, a _publisher_, or an _end user_" +msgstr "" + +#: docs/glossary.md:28 +msgid "(blob) reconstruction" +msgstr "" + +#: docs/glossary.md:28 +msgid "" +"decoding of the primary _slivers_ to obtain the blob; includes re-encoding " +"the _blob_ and checking the Merkle proofs" +msgstr "" + +#: docs/glossary.md:29 +msgid "(shard/sliver) recovery" +msgstr "" + +#: docs/glossary.md:29 +msgid "" +"process of an _SN_ recovering a _sliver_ or full _shard_ by obtaining " +"recovery symbols from other _SNs_" +msgstr "" + +#: docs/glossary.md:30 +msgid "storage attestation" +msgstr "" + +#: docs/glossary.md:30 +msgid "" +"process where _SNs_ exchange challenges and responses to demonstrate that " +"they are storing their currently assigned _shards_" +msgstr "" + +#: docs/glossary.md:31 +msgid "certificate of availability (CoA)" +msgstr "" + +#: docs/glossary.md:31 +msgid "" +"a _blob ID_ with signatures of _SNs_ holding at least 2f+1 _shards_ in a specific _epoch_" +msgstr "" + +#: docs/glossary.md:32 +msgid "point of availability (PoA)" +msgstr "" + +#: docs/glossary.md:32 +msgid "" +"point in time when a _CoA_ is submitted to Sui and the corresponding _blob_ " +"is guaranteed to be available until its expiration" +msgstr "" + +#: docs/glossary.md:33 +msgid "inconsistency proof" +msgstr "" + +#: docs/glossary.md:33 +msgid "" +"set of several recovery symbols with their Merkle proofs such that the " +"decoded _sliver_ does not match the corresponding hash; this proves an " +"incorrect/inconsistent encoding by the client" +msgstr "" + +#: docs/glossary.md:34 +msgid "inconsistency certificate" +msgstr "" + +#: docs/glossary.md:34 +msgid "" +"an aggregated signature from 2/3 of _SNs_ (weighted by their number of " +"_shards_) that they have seen and stored an _inconsistency proof_ for a " +"_blob ID_" +msgstr "" + +#: docs/glossary.md:35 +msgid "storage committee" +msgstr "" + +#: docs/glossary.md:35 +msgid "" +"the set of _SNs_ for a _storage epoch_, including metadata about the " +"_shards_ they are responsible for and other metadata" +msgstr "" + +#: docs/glossary.md:36 +msgid "member" +msgstr "" + +#: docs/glossary.md:36 +msgid "an _SN_ that is part of a _committee_ at some _epoch_" +msgstr "" + +#: docs/glossary.md:37 +msgid "storage epoch" +msgstr "" + +#: docs/glossary.md:37 +msgid "the epoch for Walrus as distinct to the epoch for Sui" +msgstr "" + +#: docs/glossary.md:38 +msgid "availability period" +msgstr "" + +#: docs/glossary.md:38 +msgid "" +"the period specified in _storage epochs_ for which a _blob_ is certified to " +"be available on Walrus" +msgstr "" + +#: docs/glossary.md:39 +msgid "expiry" +msgstr "" + +#: docs/glossary.md:39 +msgid "" +"the end epoch at which a blob is no longer available and can be deleted; the " +"end epoch is always exclusive" +msgstr "" + +#: docs/glossary.md:40 +msgid "WAL" +msgstr "" + +#: docs/glossary.md:40 +msgid "the native Token of Walrus" +msgstr "" + +#: docs/glossary.md:41 +msgid "FROST" +msgstr "" + +#: docs/glossary.md:41 +msgid "" +"the smallest unit of WAL (similar to MIST for SUI); 1 WAL is equal to 1 " +"billion (1000000000) FROST" +msgstr "" + +#: docs/legal/devnet_tos.md:4 +msgid "DEVNET TERMS OF SERVICE - WALRUS" +msgstr "" + +#: docs/legal/devnet_tos.md:6 +msgid "Last updated: June 13, 2024" +msgstr "" + +#: docs/legal/devnet_tos.md:8 +msgid "" +"By using Mysten Labs Devnet software, technologies, tools, and other " +"services (collectively “Devnet”), you agree to the general Terms of Service " +"and these additional Devnet Terms of Service (together, the “Terms”). If you " +"do not agree, do not participate in Devnet. If you are using Devnet on " +"behalf of an organization, you represent and warrant that you are an " +"authorized representative of that organization and have the authority to " +"bind that business or entity to the Terms." +msgstr "" + +#: docs/legal/devnet_tos.md:14 docs/legal/testnet_tos.md:21 +msgid "Eligibility Criteria" +msgstr "" + +#: docs/legal/devnet_tos.md:16 +msgid "You may use Devnet only if you:" +msgstr "" + +#: docs/legal/devnet_tos.md:18 docs/legal/testnet_tos.md:25 +msgid "Are 18 years or older and capable of forming a binding contract with us." +msgstr "" + +#: docs/legal/devnet_tos.md:19 +msgid "" +"Are not otherwise barred from participating in Devnet under applicable law." +msgstr "" + +#: docs/legal/devnet_tos.md:21 +msgid "" +"We may, at our discretion, introduce new or change existing eligibility " +"criteria or conditions we deem appropriate. Devnet may operate in certain " +"phases, and your participation in any one phase of Devnet does not guarantee " +"that you will be selected for any other phases of Devnet." +msgstr "" + +#: docs/legal/devnet_tos.md:25 docs/legal/testnet_tos.md:32 +msgid "Duration" +msgstr "" + +#: docs/legal/devnet_tos.md:27 +msgid "" +"Devnet will commence on the date we prescribe and continue until terminated " +"at our discretion. We may change, discontinue, or wipe, temporarily or " +"permanently, all or any part of Devnet, at any time and without notice at " +"our discretion, including, without limitation, the modification of the " +"presence, amounts, or any other conditions applicable to data you have " +"stored within Devnet, without any liability to you or other Devnet users." +msgstr "" + +#: docs/legal/devnet_tos.md:33 docs/legal/testnet_tos.md:57 +msgid "No Warranty" +msgstr "" + +#: docs/legal/devnet_tos.md:35 +msgid "" +"Mysten Labs provides the Devnet platform solely as a developer preview. " +"Devnet is provided \"as is\" and \"with all faults.\" We make no warranties, " +"express or implied, regarding the reliability, accuracy, performance, or " +"fitness for a particular purpose of the service provided. You accept all " +"risks associated with the use of Devnet and agree that Mysten Labs, its " +"affiliates, and its employees shall not be liable for any damages, whether " +"direct, indirect, incidental, special, consequential, or punitive, arising " +"out of the use or inability to use the service, including but not limited to " +"lost profits, loss of business, or data loss." +msgstr "" + +#: docs/legal/devnet_tos.md:43 docs/legal/testnet_tos.md:67 +msgid "" +"No employee or representative of Mysten Labs is authorized to make any " +"warranties or representations beyond those stated in this agreement. Any " +"statements made by employees or representatives of Mysten Labs regarding the " +"service shall not be construed as warranties or representations, and " +"customers agree to indemnify and hold harmless Mysten Labs from any such " +"statements." +msgstr "" + +#: docs/legal/devnet_tos.md:48 +msgid "" +"Any deficiencies or errors in the Devnet platform shall not constitute a " +"breach of this agreement, and customers agree to waive any right to seek a " +"refund or compensation based on such deficiencies or errors. This \"as is, " +"no warranty\" provision shall survive the termination or expiration of any " +"other agreements between you and Mysten Labs." +msgstr "" + +#: docs/legal/testnet_tos.md:4 +msgid "TESTNET TERMS OF SERVICE - WALRUS" +msgstr "" + +#: docs/legal/testnet_tos.md:6 +msgid "Last updated: October 17, 2024" +msgstr "" + +#: docs/legal/testnet_tos.md:8 +msgid "" +"By using Mysten Labs Testnet software, technologies, tools, and other " +"services (collectively **“Testnet”**), you agree to the general Terms of " +"Service and these additional Testnet Terms of Service (together, the " +"**“Terms”**). If you do not agree, do not participate in Testnet. If you are " +"using Testnet on behalf of an organization, you represent and warrant that " +"you are an authorized representative of that organization and have the " +"authority to bind that business or entity to the Terms." +msgstr "" + +#: docs/legal/testnet_tos.md:15 +msgid "Privacy Policy" +msgstr "" + +#: docs/legal/testnet_tos.md:17 +msgid "" +"Please review our [Privacy Policy](../legal/privacy.md), which also governs " +"your use of Testnet, for information on how we collect, use and share your " +"information. By using Testnet you agree to be bound by our Privacy Policy." +msgstr "" + +#: docs/legal/testnet_tos.md:23 +msgid "You may use Testnet only if you:" +msgstr "" + +#: docs/legal/testnet_tos.md:26 +msgid "" +"Are not otherwise barred from participating in Testnet under applicable law." +msgstr "" + +#: docs/legal/testnet_tos.md:28 +msgid "" +"We may, at our discretion, introduce new or change existing eligibility " +"criteria or conditions we deem appropriate. Testnet may operate in certain " +"phases, and your participation in any one phase of Testnet does not " +"guarantee that you will be able to participate in any other phases of " +"Testnet." +msgstr "" + +#: docs/legal/testnet_tos.md:34 +msgid "" +"Testnet will commence on the date we prescribe and continue until terminated " +"at our discretion. We may change, discontinue, or wipe, temporarily or " +"permanently, all or any part of Testnet, at any time and without notice at " +"our discretion, including, without limitation, the modification of the " +"presence, amounts, or any other conditions applicable to the Testnet tokens, " +"without any liability to you or other Testnet users. We do not guarantee " +"that Testnet tokens will continue to be offered for any particular length of " +"time and you may not rely upon the continued availability of any Testnet " +"tokens. In the event of the expiration of Testnet, you acknowledge and agree " +"that your access to and use of your Testnet tokens will be removed, and all " +"accrued Testnet tokens will be deleted from the Testnet system. Testnet " +"tokens will not be converted into any future rewards offered by Mysten Labs." +msgstr "" + +#: docs/legal/testnet_tos.md:45 +msgid "Testnet Tokens" +msgstr "" + +#: docs/legal/testnet_tos.md:47 +msgid "" +"During Testnet you may accumulate Testnet tokens, such as through the " +"Testnet faucet, which are not, and will never convert to or accrue to become " +"Mainnet tokens or any other tokens or virtual assets. Testnet tokens are " +"virtual items with no monetary value. Testnet tokens do not constitute any " +"currency or property of any type and are not redeemable, refundable, or " +"eligible for any fiat or virtual currency or anything else of monetary " +"value, under any circumstances. Testnet tokens are not transferable between " +"users outside of the Testnet, and you may not attempt to sell, trade, or " +"transfer any Testnet tokens outside of the Testnet, or obtain any manner of " +"credit using any Testnet tokens. Any attempt to sell, trade, or transfer any " +"Testnet tokens outside of the Testnet will be null and void." +msgstr "" + +#: docs/legal/testnet_tos.md:59 +msgid "" +"Mysten Labs provides the Testnet platform solely as a developer test " +"environment. Testnet is provided \"as is\" and \"with all faults.\" We make " +"no warranties, express or implied, regarding the reliability, accuracy, " +"performance, or fitness for a particular purpose of the service provided. " +"You accept all risks associated with the use of Testnet and agree that " +"Mysten Labs, its affiliates, and its employees shall not be liable for any " +"damages, whether direct, indirect, incidental, special, consequential, or " +"punitive, arising out of the use or inability to use the service, including " +"but not limited to lost profits, loss of business, or data loss." +msgstr "" + +#: docs/legal/testnet_tos.md:72 +msgid "" +"Any deficiencies or errors in the Testnet platform shall not constitute a " +"breach of this agreement, and customers agree to waive any right to seek a " +"refund or compensation based on such deficiencies or errors. This \"as is, " +"no warranty\" provision shall survive the termination or expiration of any " +"other agreements between you and Mysten Labs." +msgstr "" + +#: docs/legal/privacy.md:5 +msgid "PRIVACY POLICY" +msgstr "" + +#: docs/legal/privacy.md:7 +msgid "**Last Updated:** June 18, 2024" +msgstr "" + +#: docs/legal/privacy.md:9 +msgid "" +"This Privacy Policy is designed to help you understand how Mysten Labs, " +"Inc., its subsidiaries and affiliates (collectively called \"**Mysten " +"Labs**\", \"**we**,\" \"**us**,\" and \"**our**\") collects, uses, and " +"shares your personal information and to help you understand and exercise " +"your privacy rights in accordance with applicable law. This Policy applies " +"when you use our websites, contact our team members, engage with us on " +"social media or otherwise interact with us." +msgstr "" + +#: docs/legal/privacy.md:15 +msgid "[SCOPE](#scope)" +msgstr "" + +#: docs/legal/privacy.md:16 +msgid "[CHANGES TO OUR PRIVACY POLICY](#changes-to-our-privacy-policy)" +msgstr "" + +#: docs/legal/privacy.md:17 +msgid "[PERSONAL INFORMATION WE COLLECT](#personal-information-we-collect)" +msgstr "" + +#: docs/legal/privacy.md:19 +msgid "[HOW WE USE YOUR INFORMATION](#how-we-use-your-information)" +msgstr "" + +#: docs/legal/privacy.md:20 +msgid "[HOW WE DISCLOSE YOUR INFORMATION](#how-we-disclose-your-information)" +msgstr "" + +#: docs/legal/privacy.md:22 +msgid "[YOUR PRIVACY CHOICES AND RIGHTS](#your-privacy-choices-and-rights)" +msgstr "" + +#: docs/legal/privacy.md:24 +msgid "[SECURITY OF YOUR INFORMATION](#security-of-your-information)" +msgstr "" + +#: docs/legal/privacy.md:26 +msgid "[INTERNATIONAL DATA TRANSFERS](#international-data-transfers)" +msgstr "" + +#: docs/legal/privacy.md:28 +msgid "[RETENTION OF PERSONAL INFORMATION](#retention-of-personal-information)" +msgstr "" + +#: docs/legal/privacy.md:30 +msgid "" +"[SUPPLEMENTAL NOTICE FOR CALIFORNIA " +"RESIDENTS](#supplemental-notice-for-california-residents)" +msgstr "" + +#: docs/legal/privacy.md:32 +msgid "" +"[SUPPLEMENTAL NOTICE FOR NEVADA " +"RESIDENTS](#supplemental-notice-for-nevada-residents)" +msgstr "" + +#: docs/legal/privacy.md:34 +msgid "[CHILDREN'S INFORMATION](#childrens-information)" +msgstr "" + +#: docs/legal/privacy.md:35 +msgid "[THIRD-PARTY'S WEBSITES/APPLICATIONS](#third-party-websitesapplications)" +msgstr "" + +#: docs/legal/privacy.md:37 +msgid "[SUPERVISORY AUTHORITY](#supervisory-authority)" +msgstr "" + +#: docs/legal/privacy.md:38 +msgid "[CONTACT US](#contact-us)" +msgstr "" + +#: docs/legal/privacy.md:40 +msgid "SCOPE" +msgstr "" + +#: docs/legal/privacy.md:42 +msgid "" +"This Privacy Policy applies to personal information processed by Mysten " +"Labs, including on our websites (the \"**Site**\"), and other online and " +"offline offerings. The Site, our services and our other online and offline " +"offerings are collectively called the \"**Services**.\" For clarity, the " +"Services do not include the Walrus Protocol or any other decentralized " +"aspect of the Walrus or Sui Blockchain that is not controlled by Mysten Labs " +"due to the decentralized nature of these blockchains." +msgstr "" + +#: docs/legal/privacy.md:51 +msgid "CHANGES TO OUR PRIVACY POLICY" +msgstr "" + +#: docs/legal/privacy.md:53 +msgid "" +"We may revise this Privacy Policy from time to time in our sole discretion. " +"If there are any material changes to this Privacy Policy, we will notify you " +"as required by applicable law. You understand and agree that you will be " +"deemed to have accepted the updated Privacy Policy if you continue to use " +"our Services after the new Privacy Policy takes effect." +msgstr "" + +#: docs/legal/privacy.md:60 +msgid "PERSONAL INFORMATION WE COLLECT" +msgstr "" + +#: docs/legal/privacy.md:62 +msgid "" +"The categories of personal information we collect depend on how you interact " +"with us, our Services and the requirements of applicable law. We collect " +"information that you provide to us, information we obtain automatically when " +"you use our Services, and information from other sources such as third-party " +"services and organizations, as described below." +msgstr "" + +#: docs/legal/privacy.md:69 +msgid "A. **Information You Provide to Us Directly**" +msgstr "" + +#: docs/legal/privacy.md:71 +msgid "We may collect the following personal information that you provide to us." +msgstr "" + +#: docs/legal/privacy.md:74 +msgid "" +"**Account Creation**. We may collect information if you create an account " +"with us, such as your name, username, email address, or password." +msgstr "" + +#: docs/legal/privacy.md:77 +msgid "" +"**Wallet and Transaction Information.** In order to engage in transactions " +"on the Services, you may need to provide us or our third-party payment " +"processors with access to or information about your digital wallet. We will " +"never ask you for or collect your private keys." +msgstr "" + +#: docs/legal/privacy.md:82 +msgid "" +"**Other Transactions**. We may collect personal information and details " +"associated with your activities on our Services, including to deliver you " +"your rewards associated with your use of the Services." +msgstr "" + +#: docs/legal/privacy.md:86 +msgid "" +"**Your Communications with Us**. We may collect personal information, such " +"as email address when you request information about our Services, register " +"for our newsletter or marketing promotions, request customer or technical " +"support, apply for a job or otherwise communicate with us." +msgstr "" + +#: docs/legal/privacy.md:91 +msgid "" +"**Interactive Features**. We and others who use our Services may collect " +"personal information that you submit or make available through our " +"interactive features (e.g., via the Mysten Labs community, commenting " +"functionalities, forums, blogs, and social media pages). Any personal " +"information you provide on the public sections of these features will be " +"considered \"public,\" unless otherwise required by applicable law, and is " +"not subject to the privacy protections referenced herein." +msgstr "" + +#: docs/legal/privacy.md:99 +msgid "" +"**Surveys**. We may contact you to participate in surveys. If you decide to " +"participate, you may be asked to provide certain information which may " +"include personal information." +msgstr "" + +#: docs/legal/privacy.md:102 +msgid "" +"**Sweepstakes, Giveaways or Contests**. We may collect personal information " +"you provide for any sweepstakes, giveaways or contests that we offer. In " +"some jurisdictions, we are required to publicly share information of " +"sweepstakes and contest winners." +msgstr "" + +#: docs/legal/privacy.md:106 +msgid "" +"**Events.** We may collect personal information from individuals when we " +"attend or host conferences, trade shows, and other events." +msgstr "" + +#: docs/legal/privacy.md:108 +msgid "" +"**Business Development and Strategic Partnerships.** We may collect personal " +"information from individuals and third parties to assess and pursue " +"potential business opportunities." +msgstr "" + +#: docs/legal/privacy.md:111 +msgid "" +"**Job Applications.** We may post job openings and opportunities on our " +"Services. If you reply to one of these postings by submitting your " +"application, CV and/or cover letter to us, we will collect and use this " +"information to assess your qualifications." +msgstr "" + +#: docs/legal/privacy.md:116 +msgid "B. **Information Collected Automatically**" +msgstr "" + +#: docs/legal/privacy.md:118 +msgid "" +"We may collect personal information automatically when you use our Services:" +msgstr "" + +#: docs/legal/privacy.md:120 +msgid "" +"**Automatic Data Collection**. We may collect certain information " +"automatically when you use our Services, such as your Internet protocol (IP) " +"address, user settings, MAC address, cookie identifiers, mobile carrier, " +"mobile advertising and other unique identifiers, browser or device " +"information, location information (including approximate location derived " +"from IP address), Internet service provider, and metadata about the content " +"you provide. We may also automatically collect information regarding your " +"use of our Services, such as pages that you visit before, during and after " +"using our Services, information about the links you click, the types of " +"content you interact with, the frequency and duration of your activities, " +"and other information about how you use our Services." +msgstr "" + +#: docs/legal/privacy.md:132 +msgid "" +"**Cookies, Pixel Tags/Web Beacons, and Other Technologies**. We, as well as " +"third parties that provide content, advertising, or other functionality on " +"our Services, may use cookies, pixel tags, local storage, and other " +"technologies (\"**Technologies**\") to automatically collect information " +"through your use of our Services." +msgstr "" + +#: docs/legal/privacy.md:137 +msgid "" +"**Cookies**. Cookies are small text files placed in device browsers that " +"store preferences and facilitate and enhance your experience." +msgstr "" + +#: docs/legal/privacy.md:139 +msgid "" +"**Pixel Tags/Web Beacons**. A pixel tag (also known as a web beacon) is a " +"piece of code embedded in our Services that collects information about " +"engagement on our Services. The use of a pixel tag allows us to record, for " +"example, that a user has visited a particular web page or clicked on a " +"particular advertisement. We may also include web beacons in e-mails to " +"understand whether messages have been opened, acted on, or forwarded." +msgstr "" + +#: docs/legal/privacy.md:147 +msgid "" +"Our uses of these Technologies fall into the following general categories:" +msgstr "" + +#: docs/legal/privacy.md:150 +msgid "" +"**Operationally Necessary**. This includes Technologies that allow you " +"access to our Services, applications, and tools that are required to " +"identify irregular website behavior, prevent fraudulent activity, improve " +"security, or allow you to make use of our functionality;" +msgstr "" + +#: docs/legal/privacy.md:155 +msgid "" +"**Performance-Related**. We may use Technologies to assess the performance " +"of our Services, including as part of our analytic practices to help us " +"understand how individuals use our Services (_see Analytics below_);" +msgstr "" + +#: docs/legal/privacy.md:159 +msgid "" +"**Functionality-Related**. We may use Technologies that allow us to offer " +"you enhanced functionality when accessing or using our Services. This may " +"include identifying you when you sign into our Services or keeping track of " +"your specified preferences, interests, or past items viewed;" +msgstr "" + +#: docs/legal/privacy.md:164 +msgid "" +"**Advertising- or Targeting-Related**. We may use first party or third-party " +"Technologies to deliver content, including ads relevant to your interests, " +"on our Services or on third-party websites." +msgstr "" + +#: docs/legal/privacy.md:168 +msgid "" +"_See \"[Your Privacy Choices and Rights](#your-privacy-choices-and-rights)\" " +"below to understand your choices regarding these Technologies._" +msgstr "" + +#: docs/legal/privacy.md:172 +msgid "" +"**Analytics**. We may use our Technologies and other third-party tools to " +"process analytics information on our Services. These technologies allow us " +"to process usage data to better understand how our website and web-related " +"Services are used, and to continually improve and personalize our Services. " +"Some of our analytics partners include:" +msgstr "" + +#: docs/legal/privacy.md:178 +msgid "" +"**Google Analytics**. For more information about how Google uses your data " +"(including for its own purposes, e.g., for profiling or linking it to other " +"data), please visit [Google Analytics' Privacy " +"Policy](http://www.google.com/policies/privacy/partners/). To learn more " +"about how to opt-out of Google Analytics' use of your information, please " +"click [here](http://tools.google.com/dlpage/gaoptout)." +msgstr "" + +#: docs/legal/privacy.md:185 +msgid "" +"**LinkedIn Analytics**. For more information, please visit [LinkedIn " +"Analytics' Privacy Policy](https://www.linkedin.com/legal/privacy-policy). " +"To learn more about how to opt-out of LinkedIn's use of your information, " +"please click " +"[here](https://www.linkedin.com/help/linkedin/answer/62931?trk=microsites-frontend_legal_privacy-policy&lang=en)." +msgstr "" + +#: docs/legal/privacy.md:191 +msgid "" +"**Facebook Connect**. For more information, please visit Facebook's [Data " +"Policy](https://www.facebook.com/policy.php?ref=pf). You can object to the " +"collection of your data by Facebook pixel, or to the use of your data for " +"the purpose of displaying Facebook ads by contacting the following address " +"while logged into your Facebook account: " +"https://www.facebook.com/settings?tab=ads." +msgstr "" + +#: docs/legal/privacy.md:198 +msgid "" +"**Mixpanel**. For more information about Mixpanel, please visit [Mixpanel's " +"Privacy Policy](https://mixpanel.com/legal/privacy-policy/)." +msgstr "" + +#: docs/legal/privacy.md:201 +msgid "" +"**Social Media Platforms**. Our Services may contain social media buttons, " +"such as Discord, Twitter, Instagram, TikTok, Youtube, and Telegram, which " +"might include widgets such as the \"share this\" button or other interactive " +"mini programs. These features may collect your IP address and which page you " +"are visiting on our Services and may set a cookie to enable the feature to " +"function properly. Your interactions with these platforms are governed by " +"the privacy policy of the company providing it." +msgstr "" + +#: docs/legal/privacy.md:210 +msgid "C. **Information Collected from Other Sources**" +msgstr "" + +#: docs/legal/privacy.md:212 +msgid "" +"**Third-Party Sources.** We may obtain information about you from other " +"sources, including through third-party services and organizations. For " +"example, if you access our Services through a third-party application, such " +"as an app store, a third-party login service, or a social networking site, " +"we may collect information about you from that third-party application that " +"you have made available via your privacy settings." +msgstr "" + +#: docs/legal/privacy.md:219 +msgid "" +"**Referrals, Sharing and Other Features**. Our Services may offer various " +"tools and functionalities that allow you to provide information about your " +"friends through our referral service; third parties may also use these " +"services to upload information about you. Our referral services may also " +"allow you to forward or share certain content with a friend or colleague, " +"such as an email inviting your friend to use our Services. Please only share " +"with us contact information of people with whom you have a relationship " +"(e.g., relative, friend, neighbor, or co-worker)." +msgstr "" + +#: docs/legal/privacy.md:229 +msgid "HOW WE USE YOUR INFORMATION" +msgstr "" + +#: docs/legal/privacy.md:231 +msgid "" +"We use your information for a variety of business purposes, including to " +"provide our Services, for administrative purposes, and to market our " +"products and Services, as described below." +msgstr "" + +#: docs/legal/privacy.md:235 +msgid "A. **Provide Our Services**" +msgstr "" + +#: docs/legal/privacy.md:237 +msgid "" +"We use your information to fulfill our contract with you and provide you " +"with our Services and perform our contract with you, such as:" +msgstr "" + +#: docs/legal/privacy.md:240 +msgid "Managing your information and accounts;" +msgstr "" + +#: docs/legal/privacy.md:241 +msgid "" +"Providing access to certain areas, functionalities, and features of our " +"Services;" +msgstr "" + +#: docs/legal/privacy.md:243 +msgid "Answering requests for customer or technical support;" +msgstr "" + +#: docs/legal/privacy.md:244 +msgid "" +"Communicating with you about your account, activities on our Services, and " +"policy changes;" +msgstr "" + +#: docs/legal/privacy.md:246 +msgid "" +"Processing information about your wallet to facilitate transfers via the " +"Services;" +msgstr "" + +#: docs/legal/privacy.md:248 +msgid "" +"Processing applications if you apply for a job, we post on our Services; and" +msgstr "" + +#: docs/legal/privacy.md:250 +msgid "Allowing you to register for events." +msgstr "" + +#: docs/legal/privacy.md:252 +msgid "B. **Administrative Purposes**" +msgstr "" + +#: docs/legal/privacy.md:254 +msgid "We use your information for our legitimate interest, such as:" +msgstr "" + +#: docs/legal/privacy.md:256 +msgid "" +"Pursuing our legitimate interests such as direct marketing, research and " +"development (including marketing research), network and information " +"security, and fraud prevention;" +msgstr "" + +#: docs/legal/privacy.md:259 +msgid "" +"Detecting security incidents, protecting against malicious, deceptive, " +"fraudulent or illegal activity, and prosecuting those responsible for that " +"activity;" +msgstr "" + +#: docs/legal/privacy.md:262 +msgid "Measuring interest and engagement in our Services;" +msgstr "" + +#: docs/legal/privacy.md:263 +msgid "Improving, upgrading or enhancing our Services;" +msgstr "" + +#: docs/legal/privacy.md:264 +msgid "Developing new products and Services;" +msgstr "" + +#: docs/legal/privacy.md:265 +msgid "Ensuring internal quality control and safety;" +msgstr "" + +#: docs/legal/privacy.md:266 +msgid "Authenticating and verifying individual identities;" +msgstr "" + +#: docs/legal/privacy.md:267 +msgid "Debugging to identify and repair errors with our Services;" +msgstr "" + +#: docs/legal/privacy.md:268 +msgid "" +"Auditing relating to interactions, transfers and other compliance activities;" +msgstr "" + +#: docs/legal/privacy.md:270 +msgid "Sharing information with third parties as needed to provide the Services;" +msgstr "" + +#: docs/legal/privacy.md:272 +msgid "Enforcing our agreements and policies; and" +msgstr "" + +#: docs/legal/privacy.md:273 +msgid "Other uses as required to comply with our legal obligations." +msgstr "" + +#: docs/legal/privacy.md:275 +msgid "C. **Marketing and Advertising our Products and Services**" +msgstr "" + +#: docs/legal/privacy.md:277 +msgid "" +"We may use personal information to tailor and provide you with content and " +"advertisements. We may provide you with these materials as permitted by " +"applicable law. Some of the ways we may market to you include email " +"campaigns, custom audiences advertising, and \"interest-based\" or " +"\"personalized advertising,\" including through cross-device tracking." +msgstr "" + +#: docs/legal/privacy.md:283 +msgid "" +"If you have any questions about our marketing practices or if you would like " +"to opt out of the use of your personal information for marketing purposes, " +"you may contact us at any time as set forth in \"[Contact Us](#contact-us)\" " +"below." +msgstr "" + +#: docs/legal/privacy.md:288 +msgid "D. **With Your Consent**" +msgstr "" + +#: docs/legal/privacy.md:290 +msgid "" +"We may use personal information for other purposes that are clearly " +"disclosed to you at the time you provide personal information or with your " +"consent." +msgstr "" + +#: docs/legal/privacy.md:294 +msgid "E. **Other Purposes**" +msgstr "" + +#: docs/legal/privacy.md:296 +msgid "" +"We also use your information for other purposes as requested by you or as " +"permitted by applicable law." +msgstr "" + +#: docs/legal/privacy.md:299 +msgid "" +"**Automated Decision Making**. We may engage in automated decision making, " +"including profiling. Mysten Labs's processing of your personal information " +"will not result in a decision based solely on automated processing that " +"significantly affects you unless such a decision is necessary as part of a " +"contract we have with you, we have your consent, or we are permitted by law " +"to engage in such automated decision making. If you have questions about our " +"automated decision making, you may contact us as set forth in \"[Contact " +"Us](#contact-us)\" below." +msgstr "" + +#: docs/legal/privacy.md:308 +msgid "" +"**De-identified and Aggregated Information.** We may use personal " +"information and other information about you to create de-identified and/or " +"aggregated information, such as de-identified demographic information, " +"de-identified location information, information about the device from which " +"you access our Services, or other analyses we create." +msgstr "" + +#: docs/legal/privacy.md:315 +msgid "HOW WE DISCLOSE YOUR INFORMATION" +msgstr "" + +#: docs/legal/privacy.md:317 +msgid "" +"We disclose your information to third parties for a variety of business " +"purposes, including to provide our Services, to protect us or others, or in " +"the event of a major business transaction such as a merger, sale, or asset " +"transfer, as described below." +msgstr "" + +#: docs/legal/privacy.md:322 +msgid "A. **Disclosures to Provide our Services**" +msgstr "" + +#: docs/legal/privacy.md:324 +msgid "" +"The categories of third parties with whom we may share your information are " +"described below." +msgstr "" + +#: docs/legal/privacy.md:327 +msgid "" +"**Notice Regarding Use of Blockchain.** Transactions on the Services will be " +"conducted via Blockchain. Information about your transfers will be provided " +"to a Blockchain and may be accessible to third parties due to the public " +"nature of the Blockchain. Because entries to a Blockchain are, by their " +"nature, public, and because it may be possible for someone to identify you " +"through your pseudonymous, public wallet address using external sources of " +"information, any transaction you enter onto the Blockchain could possibly be " +"used to identify you, or information about you." +msgstr "" + +#: docs/legal/privacy.md:336 +msgid "" +"**Other Users of the Services and Parties You Transact With.** Some of your " +"personal information may be visible to other users of the Services (e.g., " +"information featured on generally accessible parts of your profile; " +"usernames of other Mysten Labs Services users). In addition, to complete " +"transfers via the Services, we will need to share some of your personal " +"information with the party that you are transacting with." +msgstr "" + +#: docs/legal/privacy.md:343 +msgid "" +"**Third Party Websites and Applications.** You may choose to share personal " +"information or interact with third-party websites and/or third-party " +"applications, including, but not limited to, third-party electronic wallet " +"extensions. Once your personal information has been shared with a " +"third-party website or a third-party application, it will also be subject to " +"such third party's privacy policy. We encourage you to closely read each " +"third-party website or third-party application privacy policy before sharing " +"your personal information or otherwise interacting with them. Please note " +"that we do not control, and we are not responsible for the third-party " +"website's or the third-party application's processing of your personal " +"information." +msgstr "" + +#: docs/legal/privacy.md:355 +msgid "" +"**Service Providers**. We may share your personal information with our " +"third-party service providers who use that information to help us provide " +"our Services. This includes service providers that provide us with IT " +"support, hosting, customer service, and related services." +msgstr "" + +#: docs/legal/privacy.md:360 +msgid "" +"**Business Partners**. We may share your personal information with business " +"partners to provide you with a product or service you have requested. We may " +"also share your personal information to business partners with whom we " +"jointly offer products or services." +msgstr "" + +#: docs/legal/privacy.md:364 +msgid "" +"**Affiliates**. We may share your personal information with members of our " +"corporate family." +msgstr "" + +#: docs/legal/privacy.md:366 +msgid "" +"**Other Users/Website Visitors**. As described above in \"[Personal " +"Information We Collect](#personal-information-we-collect),\" our Services " +"allow you to share your profile and/or User Content with other users or " +"publicly, including to those who do not use our Services." +msgstr "" + +#: docs/legal/privacy.md:372 +msgid "" +"**Advertising Partners**. We may share your personal information with " +"third-party advertising partners. These third-party advertising partners may " +"set Technologies and other tracking tools on our Services to collect " +"information regarding your activities and your device (e.g., your IP " +"address, cookie identifiers, page(s) visited, location, time of day). These " +"advertising partners may use this information (and similar information " +"collected from other services) for purposes of delivering personalized " +"advertisements to you when you visit digital properties within their " +"networks. This practice is commonly referred to as \"interest-based " +"advertising\" or \"personalized advertising.\"" +msgstr "" + +#: docs/legal/privacy.md:383 +msgid "" +"**APIs/SDKs**. We may use third-party application program interfaces " +"(\"**APIs**\") and software development kits (\"**SDKs**\") as part of the " +"functionality of our Services. For more information about our use of APIs " +"and SDKs, please contact us as set forth in \"[Contact Us](#contact-us)\" " +"below." +msgstr "" + +#: docs/legal/privacy.md:389 +msgid "B. **Disclosures to Protect Us or Others**" +msgstr "" + +#: docs/legal/privacy.md:391 +msgid "" +"We may access, preserve, and disclose any information we store associated " +"with you to external parties if we, in good faith, believe doing so is " +"required or appropriate to: comply with law enforcement or national security " +"requests and legal process, such as a court order or subpoena; protect your, " +"our, or others' rights, property, or safety; enforce our policies or " +"contracts; collect amounts owed to us; or assist with an investigation or " +"prosecution of suspected or actual illegal activity." +msgstr "" + +#: docs/legal/privacy.md:400 +msgid "C. **Disclosure in the Event of Merger, Sale, or Other Asset Transfers**" +msgstr "" + +#: docs/legal/privacy.md:403 +msgid "" +"If we are involved in a merger, acquisition, financing due diligence, " +"reorganization, bankruptcy, receivership, purchase or sale of assets, or " +"transition of service to another provider, your information may be sold or " +"transferred as part of such a transaction, as permitted by law and/or " +"contract." +msgstr "" + +#: docs/legal/privacy.md:409 +msgid "YOUR PRIVACY CHOICES AND RIGHTS" +msgstr "" + +#: docs/legal/privacy.md:411 +msgid "" +"**Your Privacy Choices**. The privacy choices you may have about your " +"personal information are determined by applicable law and are described " +"below." +msgstr "" + +#: docs/legal/privacy.md:415 +msgid "" +"**Email Communications**. If you receive an unwanted email from us, you can " +"use the unsubscribe link found at the bottom of the email to opt out of " +"receiving future emails. Note that you will continue to receive " +"transfer-related emails regarding Services you have requested. We may also " +"send you certain non-promotional communications regarding us and our " +"Services, and you will not be able to opt out of those communications (e.g., " +"communications regarding our Services or updates to our Terms of Service or " +"this Privacy Policy)." +msgstr "" + +#: docs/legal/privacy.md:424 +msgid "" +"**Text Messages**. You may opt out of receiving text messages from us by " +"following the instructions in the text message you have received from us or " +"by otherwise contacting us." +msgstr "" + +#: docs/legal/privacy.md:427 +msgid "" +"**Mobile Devices**. We may send you push notifications through our mobile " +"application. You may opt out from receiving these push notifications by " +"changing the settings on your mobile device. With your consent, we may also " +"collect precise location-based information via our mobile application. You " +"may opt out of this collection by changing the settings on your mobile " +"device." +msgstr "" + +#: docs/legal/privacy.md:433 +msgid "" +"**\"Do Not Track**.**\"** Do Not Track (\"**DNT**\") is a privacy preference " +"that users can set in certain web browsers. Please note that we do not " +"respond to or honor DNT signals or similar mechanisms transmitted by web " +"browsers." +msgstr "" + +#: docs/legal/privacy.md:437 +msgid "" +"**Cookies and Interest-Based Advertising**. You may stop or restrict the " +"placement of Technologies on your device or remove them by adjusting your " +"preferences as your browser or device permits. However, if you adjust your " +"preferences, our Services may not work properly. Please note that " +"cookie-based opt-outs are not effective on mobile applications. However, you " +"may opt-out of personalized advertisements on some mobile applications by " +"following the instructions for " +"[Android](https://support.google.com/googleplay/android-developer/answer/6048248?hl=en), " +"[iOS](https://support.apple.com/en-us/HT202074) and " +"[others](https://www.networkadvertising.org/mobile-choice/)." +msgstr "" + +#: docs/legal/privacy.md:449 +msgid "" +"The online advertising industry also provides websites from which you may " +"opt out of receiving targeted ads from data partners and other advertising " +"partners that participate in self-regulatory programs. You can access these " +"and learn more about targeted advertising and consumer choice and privacy by " +"visiting the [Network Advertising " +"Initiative](http://www.networkadvertising.org/managing/opt_out.asp), [the " +"Digital Advertising Alliance](http://www.aboutads.info/choices/), [the " +"European Digital Advertising Alliance](https://www.youronlinechoices.eu/), " +"and [the Digital Advertising Alliance of " +"Canada](https://youradchoices.ca/choices/)." +msgstr "" + +#: docs/legal/privacy.md:462 +msgid "" +"Please note you must separately opt out in each browser and on each device." +msgstr "" + +#: docs/legal/privacy.md:465 +msgid "" +"**Your Privacy Rights**. In accordance with applicable law, you may have the " +"right to:" +msgstr "" + +#: docs/legal/privacy.md:468 +msgid "" +"**Access Personal Information about you, including: (i) confirming whether " +"we are processing your personal information; (ii) obtaining access to or a " +"copy of your personal information; or (iii) receiving an electronic copy of " +"personal information that you have provided to us, or asking us to send that " +"information to another company (aka the right of data portability);**" +msgstr "" + +#: docs/legal/privacy.md:473 +msgid "" +"**Request Correction** of your personal information where it is inaccurate " +"or incomplete. In some cases, we may provide self-service tools that enable " +"you to update your personal information;" +msgstr "" + +#: docs/legal/privacy.md:477 +msgid "Request Deletion of your personal information;" +msgstr "" + +#: docs/legal/privacy.md:479 +msgid "" +"**Request Restriction of or Object** to our processing of your personal " +"information, including where the processing of your personal information is " +"based on our legitimate interest or for direct marketing purposes; and" +msgstr "" + +#: docs/legal/privacy.md:484 +msgid "" +"**Withdraw Your Consent to our processing of your personal information. " +"Please note that your withdrawal will only take effect for future processing " +"and will not affect the lawfulness of processing before the withdrawal.**" +msgstr "" + +#: docs/legal/privacy.md:488 +msgid "" +"If you would like to exercise any of these rights, please contact us as set " +"forth in \"[Contact Us](#contact-us)\" below. We will process such requests " +"in accordance with applicable laws." +msgstr "" + +#: docs/legal/privacy.md:492 +msgid "SECURITY OF YOUR INFORMATION" +msgstr "" + +#: docs/legal/privacy.md:494 +msgid "" +"We take steps designed to ensure that your information is treated securely " +"and in accordance with this Privacy Policy. Unfortunately, no system is 100% " +"secure, and we cannot ensure or warrant the security of any information you " +"provide to us. To the fullest extent permitted by applicable law, we do not " +"accept liability for unauthorized disclosure." +msgstr "" + +#: docs/legal/privacy.md:500 +msgid "" +"By using our Services or providing personal information to us, you agree " +"that we may communicate with you electronically regarding security, privacy, " +"and administrative issues relating to your use of our Services. If we learn " +"of a security system's breach, we may attempt to notify you electronically " +"by posting a notice on our Services, by mail or by sending an email to you." +msgstr "" + +#: docs/legal/privacy.md:507 +msgid "INTERNATIONAL DATA TRANSFERS" +msgstr "" + +#: docs/legal/privacy.md:509 +msgid "" +"All information processed by us may be transferred, processed, and stored " +"anywhere in the world, including, but not limited to, the United States or " +"other countries, which may have data protection laws that are different from " +"the laws where you live. We endeavor to safeguard your information " +"consistent with the requirements of applicable laws." +msgstr "" + +#: docs/legal/privacy.md:515 +msgid "" +"If we transfer personal information which originates in the European " +"Economic Area, Switzerland, and/or the United Kingdom to a country that has " +"not been found to provide an adequate level of protection under applicable " +"data protection laws, one of the safeguards we may use to support such " +"transfer is the EU Standard Contractual Clauses." +msgstr "" + +#: docs/legal/privacy.md:521 +msgid "RETENTION OF PERSONAL INFORMATION" +msgstr "" + +#: docs/legal/privacy.md:523 +msgid "" +"We store the personal information we collect as described in this Privacy " +"Policy for as long as you use our Services or as necessary to fulfill the " +"purpose(s) for which it was collected, provide our Services, resolve " +"disputes, establish legal defenses, conduct audits, pursue legitimate " +"business purposes, enforce our agreements, and comply with applicable laws." +msgstr "" + +#: docs/legal/privacy.md:530 +msgid "" +"To determine the appropriate retention period for personal information, we " +"may consider applicable legal requirements, the amount, nature, and " +"sensitivity of the personal information, certain risk factors, the purposes " +"for which we process your personal information, and whether we can achieve " +"those purposes through other means." +msgstr "" + +#: docs/legal/privacy.md:536 +msgid "SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS" +msgstr "" + +#: docs/legal/privacy.md:538 +msgid "" +"This Supplemental Notice for California Residents only applies to our " +"processing of personal information that is subject to the California " +"Consumer Privacy Act of 2018 (\"**CCPA**\"). Mysten Labs does not believe it " +"is subject to the CCPA. That said, Mysten Labs provides this supplemental " +"notice for purposes of transparency. The CCPA provides California residents " +"with the right to know what categories of personal information Mysten Labs " +"has collected about them and whether Mysten Labs disclosed that personal " +"information for a business purpose (e.g., to a service provider) in the " +"preceding twelve months. California residents can find this information " +"below:" +msgstr "" + +#: docs/legal/privacy.md:662 +msgid "" +"The categories of sources from which we collect personal information and our " +"business and commercial purposes for using personal information are set " +"forth in \"[Personal Information we " +"Collect](#personal-information-we-collect)\" and \"[How We Use of Your " +"Information](#how-we-use-your-information)\" above, respectively." +msgstr "" + +#: docs/legal/privacy.md:669 +msgid "" +"**\"Sales\" of Personal Information under the CCPA.** For purposes of the " +"CCPA, Mysten Labs does not \"sell\" personal information, nor do we have " +"actual knowledge of any \"sale\" of personal information of minors under 16 " +"years of age." +msgstr "" + +#: docs/legal/privacy.md:674 +msgid "**Additional Privacy Rights for California Residents**" +msgstr "" + +#: docs/legal/privacy.md:676 +msgid "" +"**Non-Discrimination.** California residents have the right not to receive " +"discriminatory treatment by us for the exercise of their rights conferred by " +"the CCPA." +msgstr "" + +#: docs/legal/privacy.md:680 +msgid "" +"**Authorized Agent.** Only you, or someone legally authorized to act on your " +"behalf, may make a verifiable consumer request related to your personal " +"information. To designate an authorized agent, please contact us as set " +"forth in \"[Contact Us](#contact-us)\" below and provide written " +"authorization signed by you and your designated agent." +msgstr "" + +#: docs/legal/privacy.md:686 +msgid "" +"**Verification**. To protect your privacy, we will take the following steps " +"to verify your identity before fulfilling your request. When you make a " +"request, we will ask you to provide sufficient information that allows us to " +"reasonably verify you are the person about whom we collected personal " +"information or an authorized representative, which may include confirming " +"the email address associated with any personal information we have about " +"you. If you are a California resident and would like to exercise any of your " +"rights under the CCPA, please contact us as set forth in \"[Contact " +"Us](#contact-us)\" below. We will process such requests in accordance with " +"applicable laws." +msgstr "" + +#: docs/legal/privacy.md:697 +msgid "" +"\\*\\*Refer-a-Friend and Similar In \"[How We Use Your Personal " +"Information](#how-we-use-your-information) we may offer referral programs or " +"other incentivized data collection programs. For example, we may offer " +"incentives to you such as discounts or promotional items or credit in " +"connection with these programs, wherein you provide your personal " +"information in exchange for a reward, or provide personal information " +"regarding your friends or colleagues (such as their email address) and " +"receive rewards when they sign up to use our Services. (The referred party " +"may also receive rewards for signing up via your referral.) These programs " +"are entirely voluntary and allow us to grow our business and provide " +"additional benefits to you. The value of your data to us depends on how you " +"ultimately use our Services, whereas the value of the referred party's data " +"to us depends on whether the referred party ultimately becomes a user and " +"uses our Services. Said value will be reflected in the incentive offered in " +"connection with each program." +msgstr "" + +#: docs/legal/privacy.md:714 +msgid "" +"**Accessibility**. This Privacy Policy uses industry-standard technologies " +"and was developed in line with the World Wide Web Consortium's Web Content " +"Accessibility Guidelines, version 2.1. If you wish to print this policy, " +"please do so from your web browser or by saving the page as a PDF." +msgstr "" + +#: docs/legal/privacy.md:720 +msgid "" +"**California Shine the Light**. The California \"Shine the Light\" law " +"permits users who are California residents to request and obtain from us " +"once a year, free of charge, a list of the third parties to whom we have " +"disclosed their personal information (if any) for their direct marketing " +"purposes in the prior calendar year, as well as the type of personal " +"information disclosed to those parties." +msgstr "" + +#: docs/legal/privacy.md:727 +msgid "" +"**Right for minors to remove posted content.** Where required by law, " +"California residents under the age of 18 may request to have their posted " +"content or information removed from the publicly viewable portions of the " +"Services by contacting us directly as set forth in \"[Contact " +"Us](#contact-us)\" below." +msgstr "" + +#: docs/legal/privacy.md:733 +msgid "SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS" +msgstr "" + +#: docs/legal/privacy.md:735 +msgid "" +"If you are a resident of Nevada, you have the right to opt-out of the sale " +"of certain personal information to third parties who intend to license or " +"sell that personal information. You can exercise this right by contacting us " +"as set forth in \"[Contact Us](#contact-us)\" below with the subject line " +"\"Nevada Do Not Sell Request\" and providing us with your name and the email " +"address associated with your account. Please note that we do not currently " +"sell your personal information as sales are defined in Nevada Revised " +"Statutes Chapter 603A." +msgstr "" + +#: docs/legal/privacy.md:745 +msgid "CHILDREN'S INFORMATION" +msgstr "" + +#: docs/legal/privacy.md:747 +msgid "" +"The Services are not directed to children under 13 (or other age as required " +"by local law), and we do not knowingly collect personal information from " +"children. If you learn that your child has provided us with personal " +"information without your consent, you may contact us as set forth in " +"\"[Contact Us](#contact-us)\" below. If we learn that we have collected a " +"child's personal information in violation of applicable law, we will " +"promptly take steps to delete such information." +msgstr "" + +#: docs/legal/privacy.md:756 +msgid "THIRD-PARTY WEBSITES/APPLICATIONS" +msgstr "" + +#: docs/legal/privacy.md:758 +msgid "" +"The Services may contain links to other websites/applications (such as " +"GitHub) and other websites/applications may reference or link to our " +"Services. These third-party services are not controlled by us. We encourage " +"our users to read the privacy policies of each website and application with " +"which they interact. We do not endorse, screen or approve, and are not " +"responsible for, the privacy practices or content of such other websites or " +"applications. Providing personal information to third-party websites or " +"applications is at your own risk." +msgstr "" + +#: docs/legal/privacy.md:767 +msgid "SUPERVISORY AUTHORITY" +msgstr "" + +#: docs/legal/privacy.md:769 +msgid "" +"If you are located in the European Economic Area, Switzerland, the United " +"Kingdom, or Brazil, you have the right to lodge a complaint with a " +"supervisory authority if you believe our processing of your personal " +"information violates applicable law." +msgstr "" + +#: docs/legal/privacy.md:774 +msgid "CONTACT US" +msgstr "" + +#: docs/legal/privacy.md:776 +msgid "" +"If you have any questions about our privacy practices or this Privacy " +"Policy, or to exercise your rights as detailed in this Privacy Policy, " +"please contact us at:" +msgstr "" + +#: docs/legal/privacy.md:780 +msgid "" +"Mysten Labs, Inc. \n" +"Attn: Privacy Group \n" +"379 University Ave, #200 \n" +"Palo Alto, CA 94301 \n" +"[privacy@mystenlabs.com](mailto:privacy@mystenlabs.com) \n" +"+1 (408) 384-8237" +msgstr "" + diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..f5ae4b74 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,10012 @@ +msgid "" +msgstr "" +"Project-Id-Version: Walrus\n" +"POT-Creation-Date: 2024-10-30T04:43:24+08:00\n" +"PO-Revision-Date: 2024-10-29 20:05+0800\n" +"Last-Translator: lispking \n" +"Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: docs/SUMMARY.md:3 +msgid "Summary" +msgstr "摘要" + +#: docs/SUMMARY.md:5 docs/index.md:3 +msgid "Walrus" +msgstr "Walrus" + +#: docs/SUMMARY.md:9 +msgid "Dev Blog" +msgstr "开发手册" + +#: docs/SUMMARY.md:11 +msgid "Blog Preface" +msgstr "开发前言" + +#: docs/SUMMARY.md:12 +msgid "Announcing Walrus" +msgstr "发布Walrus" + +#: docs/SUMMARY.md:13 docs/blog/02_devnet_update.md:3 +msgid "Devnet Update" +msgstr "开发网络更新" + +#: docs/SUMMARY.md:14 +msgid "Announcing the Walrus Whitepaper" +msgstr "发布Walrus白皮书" + +#: docs/SUMMARY.md:15 docs/blog/04_testnet_update.md:3 +msgid "Announcing Testnet" +msgstr "发布测试网络" + +#: docs/SUMMARY.md:19 +msgid "Design" +msgstr "设计" + +#: docs/SUMMARY.md:21 docs/design/objectives_use_cases.md:3 +msgid "Objectives and use cases" +msgstr "目标和用例" + +#: docs/SUMMARY.md:22 +msgid "Overview" +msgstr "概述" + +#: docs/SUMMARY.md:23 docs/usage/setup.md:84 +msgid "Architecture" +msgstr "架构" + +#: docs/SUMMARY.md:24 +msgid "Encoding" +msgstr "编码" + +#: docs/SUMMARY.md:25 docs/SUMMARY.md:40 docs/design/operations.md:3 +#: docs/dev-guide/dev-operations.md:3 +msgid "Operations" +msgstr "操作" + +#: docs/SUMMARY.md:26 +msgid "Sui operations" +msgstr "Sui操作" + +#: docs/SUMMARY.md:27 docs/design/operations-off-chain.md:3 +msgid "Off-chain operations" +msgstr "链下操作" + +#: docs/SUMMARY.md:28 +msgid "Properties" +msgstr "属性" + +#: docs/SUMMARY.md:29 docs/design/future.md:3 +msgid "Future discussion" +msgstr "未来讨论" + +#: docs/SUMMARY.md:31 +msgid "Usage" +msgstr "使用" + +#: docs/SUMMARY.md:33 docs/usage/setup.md:3 +msgid "Setup" +msgstr "设置" + +#: docs/SUMMARY.md:34 docs/usage/interacting.md:3 +msgid "Interacting with Walrus" +msgstr "与Walrus互动" + +#: docs/SUMMARY.md:35 +msgid "Using the client CLI" +msgstr "使用客户端CLI" + +#: docs/SUMMARY.md:36 +msgid "Using the client JSON API" +msgstr "使用客户端JSON API" + +#: docs/SUMMARY.md:37 +msgid "Using the client HTTP API" +msgstr "使用客户端HTTP API" + +#: docs/SUMMARY.md:38 docs/dev-guide/dev-guide.md:3 +msgid "Developer guide" +msgstr "开发者指南" + +#: docs/SUMMARY.md:39 docs/dev-guide/components.md:3 +msgid "Components" +msgstr "组件" + +#: docs/SUMMARY.md:41 +msgid "Sui structures" +msgstr "Sui结构" + +#: docs/SUMMARY.md:42 docs/operator-guide/operator-guide.md:3 +msgid "Operator guide" +msgstr "操作指南" + +#: docs/SUMMARY.md:43 +msgid "Storage node" +msgstr "存储节点" + +#: docs/SUMMARY.md:44 +msgid "Aggregator" +msgstr "聚合器" + +#: docs/SUMMARY.md:45 +msgid "Stake and Unstake" +msgstr "质押和解除质押" + +#: docs/SUMMARY.md:46 docs/usage/examples.md:3 +msgid "Examples" +msgstr "示例" + +#: docs/SUMMARY.md:47 docs/usage/troubleshooting.md:3 +msgid "Troubleshooting" +msgstr "故障排除" + +#: docs/SUMMARY.md:49 +msgid "Walrus Sites" +msgstr "Walrus站点" + +#: docs/SUMMARY.md:51 docs/walrus-sites/intro.md:3 +msgid "Introduction to Walrus Sites" +msgstr "Walrus站点介绍" + +#: docs/SUMMARY.md:52 docs/walrus-sites/tutorial.md:3 +msgid "Your first Walrus Site" +msgstr "您的第一个Walrus站点" + +#: docs/SUMMARY.md:53 docs/walrus-sites/tutorial-install.md:3 +msgid "Installing the site builder" +msgstr "安装站点构建器" + +#: docs/SUMMARY.md:54 docs/walrus-sites/tutorial-publish.md:3 +msgid "Publishing a Walrus Site" +msgstr "发布Walrus站点" + +#: docs/SUMMARY.md:55 docs/walrus-sites/tutorial-suins.md:3 +msgid "Bonus: Set a SuiNS name" +msgstr "附加:设置SuiNS名称" + +#: docs/SUMMARY.md:56 +msgid "Migrating your site from Devnet" +msgstr "从开发网络迁移您的站点" + +#: docs/SUMMARY.md:57 docs/walrus-sites/advanced.md:3 +msgid "Advanced functionality" +msgstr "高级功能" + +#: docs/SUMMARY.md:58 docs/walrus-sites/commands.md:3 +msgid "Site builder commands" +msgstr "站点构建器命令" + +#: docs/SUMMARY.md:59 +msgid "Advanced site-builder configuration" +msgstr "高级站点构建器配置" + +#: docs/SUMMARY.md:60 docs/walrus-sites/routing.md:3 +msgid "Specifying headers and routing" +msgstr "指定头和路由" + +#: docs/SUMMARY.md:61 docs/walrus-sites/linking.md:3 +msgid "Linking from and to Walrus Sites" +msgstr "链接 Walrus 站点以及从 Walrus 站点链接出去" + +#: docs/SUMMARY.md:62 docs/walrus-sites/redirects.md:3 +msgid "Redirecting objects to Walrus Sites" +msgstr "重定向对象到Walrus站点" + +#: docs/SUMMARY.md:63 +msgid "Technical overview" +msgstr "技术概述" + +#: docs/SUMMARY.md:64 docs/walrus-sites/portal.md:3 +msgid "The Walrus Sites portal" +msgstr "Walrus站点门户" + +#: docs/SUMMARY.md:65 docs/walrus-sites/authentication.md:3 +msgid "Site data authentication" +msgstr "站点数据认证" + +#: docs/SUMMARY.md:66 docs/walrus-sites/restrictions.md:3 +msgid "Known restrictions" +msgstr "已知限制" + +#: docs/SUMMARY.md:67 +msgid "Terms of service" +msgstr "服务条款" + +#: docs/SUMMARY.md:71 +msgid "Glossary" +msgstr "术语表" + +#: docs/SUMMARY.md:71 +msgid "Devnet terms of service" +msgstr "开发网络服务条款" + +#: docs/SUMMARY.md:71 +msgid "Testnet terms of service" +msgstr "测试网络服务条款" + +#: docs/SUMMARY.md:71 +msgid "Privacy policy" +msgstr "隐私政策" + +#: docs/index.md:5 +msgid "" +"Welcome to the developer documentation for Walrus, a decentralized storage " +"and data availability protocol designed specifically for large binary files, " +"or \"blobs\". Walrus focuses on providing a robust but affordable solution " +"for storing unstructured content on decentralized storage nodes while " +"ensuring high availability and reliability even in the presence of Byzantine " +"faults." +msgstr "" +"欢迎使用Walrus开发者文档,Walrus是一个专为大型二进制文件(或称为“blobs”)设计" +"的去中心化存储和数据可用性协议。Walrus专注于提供一种强大但经济实惠的解决方" +"案,用于在去中心化存储节点上存储非结构化内容,同时确保即使在拜占庭故障的情况" +"下也能保持高可用性和可靠性。" + +#: docs/index.md:10 +msgid "" +"```admonish tip title=\"Fun fact\"\n" +"If you are viewing this site at , you are fetching " +"this from\n" +"Walrus behind the scenes. See the [Walrus Sites chapter](./walrus-sites/" +"intro.md) for further\n" +"details on how this works.\n" +"```" +msgstr "" +"```admonish tip title=\"趣味事实\"\n" +"如果你在查看此站点,你实际上是在后台从Walrus获取内" +"容。请参阅[Walrus站点章节](./walrus-sites/intro.md)了解更多关于其工作原理的详" +"细信息。\n" +"```" + +#: docs/index.md:16 docs/dev-guide/dev-guide.md:19 +msgid "" +"```admonish danger title=\"Disclaimer about the Walrus Testnet\"\n" +"The current Testnet release of Walrus and Walrus Sites is a preview intended " +"to showcase\n" +"the technology and solicit feedback from builders, users, and storage-node " +"operators.\n" +"All transactions are executed on the Sui Testnet and use Testnet WAL and SUI " +"which have no\n" +"value. The state of the store **can and will be wiped** at any point and " +"possibly with no warning.\n" +"Do not rely on this Testnet for any production purposes, it comes with no " +"availability or\n" +"persistence guarantees.\n" +"\n" +"Furthermore, encodings and blob IDs may be incompatible with the future " +"Testnet and Mainnet, and\n" +"developers will be responsible for migrating any Testnet applications and " +"data to Mainnet. Detailed\n" +"migration guides will be provided when Mainnet becomes available.\n" +"\n" +"Also see the [Testnet terms of service](../testnet_tos.md) under which this " +"Testnet is made\n" +"available.\n" +"```" +msgstr "" +"```admonish danger title=\"关于Walrus测试网的免责声明\"\n" +"当前的Walrus和Walrus站点测试网版本是一个预览,旨在展示技术并征求构建者、用户" +"和存储节点操作员的反馈。所有交易都在Sui测试网上执行,并使用没有价值的测试网" +"WAL和SUI。存储状态**可能会在任何时候被清除**,并且可能没有任何警告。不要依赖" +"此测试网进行任何生产用途,它不提供任何可用性或持久性保证。\n" +"\n" +"此外,编码和blob ID可能与未来的测试网和主网不兼容,开发人员将负责将任何测试网" +"应用程序和数据迁移到主网。当主网可用时,将提供详细的迁移指南。\n" +"\n" +"另请参阅[测试网服务条款](../testnet_tos.md),了解此测试网的使用条款。\n" +"```" + +#: docs/index.md:32 docs/usage/client-cli.md:59 +#: docs/dev-guide/dev-operations.md:17 +msgid "" +"```admonish danger title=\"Public access\"\n" +"**All blobs stored in Walrus are public and discoverable by all.** Therefore " +"you must not use Walrus\n" +"to store anything that contains secrets or private data without additional " +"measures to protect\n" +"confidentiality.\n" +"```" +msgstr "" +"```admonish danger title=\"公开访问\"\n" +"**存储在Walrus中的所有blob都是公开的,所有人都可以发现。** 因此,你不得使用" +"Walrus存储任何包含秘密或私人数据的内容,除非采取额外措施保护机密性。\n" +"```" + +#: docs/index.md:38 +msgid "" +"```admonish danger title=\"Discontinuation of Walrus Devnet\"\n" +"The previous Walrus Devnet instance is now deprecated and **will be shut " +"down after 2024-10-31**.\n" +"All data stored on Walrus Devnet (including Walrus Sites) will no longer be " +"accessible at that\n" +"point. You need to re-upload all data to Walrus Testnet if you want it to " +"remain accessible. Walrus\n" +"Sites also need to be migrated as described on the dedicated [migration\n" +"page](./walrus-sites/tutorial-migration.md).\n" +"```" +msgstr "" +"```admonish danger title=\"Walrus开发网的停用\"\n" +"之前的Walrus开发网实例现已弃用,并且**将在2024-10-31之后关闭**。存储在Walrus" +"开发网中的所有数据(包括Walrus站点)在那时将不再可访问。如果你希望数据保持可" +"访问状态,需要将所有数据重新上传到Walrus测试网。Walrus站点也需要按照专门的[迁" +"移页面](./walrus-sites/tutorial-migration.md)中描述的进行迁移。\n" +"```" + +#: docs/index.md:46 +msgid "Features" +msgstr "功能" + +#: docs/index.md:48 +msgid "" +"**Storage and retrieval:** Walrus supports storage operations to write and " +"read blobs. It also allows anyone to prove that a blob has been stored and " +"is available for retrieval at a later time." +msgstr "" +"**存储和检索:** Walrus支持写入和读取blob的存储操作。它还允许任何人证明某个" +"blob已被存储,并且可以在以后检索。" + +#: docs/index.md:52 +msgid "" +"**Cost efficiency:** By utilizing advanced erasure coding, Walrus maintains " +"storage costs at approximately five times the size of the stored blobs, and " +"encoded parts of each blob are stored on each storage node. This is " +"significantly more cost-effective than traditional full-replication methods " +"and much more robust against failures than protocols that only store each " +"blob on a subset of storage nodes." +msgstr "" +"**成本效益:** 通过利用先进的纠删编码,Walrus将存储成本维持在大约是存储blob大" +"小的五倍,并且每个blob的编码部分存储在每个存储节点上。这比传统的全复制方法显" +"著更具成本效益,并且比仅在部分存储节点上存储每个blob的协议更能抵御故障。" + +#: docs/index.md:58 +msgid "" +"**Integration with the Sui blockchain:** Walrus leverages [Sui](https://" +"github.com/MystenLabs/sui) for coordination, attesting availability, and " +"payments. Storage space is represented as a resource on Sui, which can be " +"owned, split, merged, and transferred. Stored blobs are also represented by " +"objects on Sui, which means that smart contracts can check whether a blob is " +"available and for how long, extend its lifetime or optionally delete it." +msgstr "" +"**与Sui区块链的集成:** Walrus利用[Sui](https://github.com/MystenLabs/sui)进" +"行协调、证明可用性和支付。存储空间在Sui上表示为一种资源,可以被拥有、拆分、合" +"并和转移。存储的blob也由Sui上的对象表示,这意味着智能合约可以检查某个blob是否" +"可用以及可用时间,延长其生命周期或选择性地删除它。" + +#: docs/index.md:64 +msgid "" +"**Epochs, tokenomics, and delegated proof of stake** Walrus is operated by a " +"committee of storage nodes that evolve between epochs. A native token, WAL " +"(and its subdivision FROST, where 1 WAL is equal to 1 billion FROST), is " +"used to delegate stake to storage nodes, and those with high stake become " +"part of the epoch committee. The WAL token is also used for payments for " +"storage. At the end of each epoch, rewards for selecting storage nodes, " +"storing and serving blobs are distributed to storage nodes and whose that " +"stake with them. All these processes are mediated by smart contracts on the " +"Sui platform." +msgstr "" +"**纪元、代币经济学和委托权益证明:** Walrus由在纪元之间演变的存储节点委员会操" +"作。一种原生代币WAL(及其子单位FROST,其中1 WAL等于10亿FROST)用于将权益委托" +"给存储节点,那些拥有高权益的节点成为纪元委员会的一部分。WAL代币也用于存储支" +"付。在每个纪元结束时,选择存储节点、存储和服务blob的奖励分配给存储节点及其权" +"益委托者。所有这些过程都由Sui平台上的智能合约调解。" + +#: docs/index.md:72 +msgid "" +"**Flexible access:** Users can interact with Walrus through a command-line " +"interface (CLI), software development kits (SDKs), and web2 HTTP " +"technologies. Walrus is designed to work well with traditional caches and " +"content distribution networks (CDNs), while ensuring all operations can also " +"be run using local tools to maximize decentralization." +msgstr "" +"**灵活访问:** 用户可以通过命令行界面(CLI)、软件开发工具包(SDK)和web2 " +"HTTP技术与Walrus交互。Walrus设计为能够很好地与传统缓存和内容分发网络(CDN)配" +"合工作,同时确保所有操作也可以使用本地工具运行,以最大限度地实现去中心化。" + +#: docs/index.md:77 +msgid "Architecture and operations" +msgstr "架构和操作" + +#: docs/index.md:79 +msgid "" +"Walrus's architecture ensures that content remains accessible and " +"retrievable even when many storage nodes are unavailable or malicious. Under " +"the hood it uses modern error correction techniques based on fast linear " +"fountain codes, augmented to ensure resilience against Byzantine faults, and " +"a dynamically changing set of storage nodes. The core of Walrus remains " +"simple, and storage node management and blob certification leverages Sui " +"smart contracts." +msgstr "" +"Walrus的架构确保即使在许多存储节点不可用或恶意的情况下,内容仍然可以访问和检" +"索。其底层使用基于快速线性喷泉码的现代纠错技术,增强以确保对拜占庭故障的弹" +"性,并且存储节点集动态变化。Walrus的核心保持简单,存储节点管理和blob认证利用" +"Sui智能合约。" + +#: docs/index.md:85 +msgid "Organization" +msgstr "组织" + +#: docs/index.md:87 +msgid "This documentation is split into several parts:" +msgstr "本文档分为几个部分:" + +#: docs/index.md:89 +msgid "_Dev blog_ contains announcements and other blog posts." +msgstr "_开发博客_ 包含公告和其他博客文章。" + +#: docs/index.md:90 +msgid "" +"_Design_ describes the objectives, security properties, and architecture of " +"Walrus." +msgstr "_设计_ 描述了Walrus的目标、安全属性和架构。" + +#: docs/index.md:91 +msgid "" +"_Usage_ provides concrete information for developers. If you want to get " +"started quickly, you can jump directly to the [setup chapter](./usage/setup." +"md)." +msgstr "" +"_使用_ 为开发者提供具体信息。如果你想快速入门,可以直接跳到[设置章节](./" +"usage/setup.md)。" + +#: docs/index.md:93 +msgid "" +"_Walrus Sites_ describes how you can use Walrus and Sui together to build " +"truly decentralized websites." +msgstr "_Walrus站点_ 描述了如何使用Walrus和Sui一起构建真正的去中心化网站。" + +#: docs/index.md:96 +msgid "" +"Finally, we provide a [glossary](./glossary.md) that explains the " +"terminology used throughout the documentation." +msgstr "最后,我们提供了一个[术语表](./glossary.md),解释了文档中使用的术语。" + +#: docs/index.md:99 +msgid "Sources" +msgstr "来源" + +#: docs/index.md:101 +msgid "" +"This documentation is built using [mdBook](https://rust-lang.github.io/" +"mdBook/) from source files in . " +"Please report or fix any errors you find in this documentation in that " +"GitHub project." +msgstr "" +"本文档使用[mdBook](https://rust-lang.github.io/mdBook/)从中的源文件构建。请在该GitHub项目中报告或修复你在本文" +"档中发现的任何错误。" + +#: docs/blog/00_intro.md:3 +msgid "The Walrus Dev Blog" +msgstr "Walrus开发手册" + +#: docs/blog/00_intro.md:5 +msgid "" +"This part of the Walrus documentation is used to publish news and updates " +"about Walrus's development!" +msgstr "Walrus文档的这一部分用于发布Walrus开发的新闻和更新!" + +#: docs/blog/01_announcing_walrus.md:3 +msgid "" +"Announcing Walrus: A Decentralized Storage and Data Availability Protocol" +msgstr "发布Walrus:一个去中心化存储和数据可用性协议" + +#: docs/blog/01_announcing_walrus.md:5 +msgid "" +"Walrus is an innovative decentralized storage network for blockchain apps " +"and autonomous agents. The Walrus storage system is being released today as " +"a developer preview for Sui builders in order to gather feedback. We expect " +"a broad rollout to other web3 communities very soon!" +msgstr "" +"Walrus是一个创新的区块链应用和自主代理的去中心化存储网络。Walrus存储系统今天" +"作为开发者预览版发布给Sui构建者,以收集反馈。我们预计很快会向其他web3社区广泛" +"推出!" + +#: docs/blog/01_announcing_walrus.md:9 +msgid "" +"Leveraging innovations in erasure coding, Walrus enables fast and robust " +"encoding of unstructured data blobs into smaller slivers distributed and " +"stored over a network of storage nodes. A subset of slivers can be used to " +"rapidly reconstruct the original blob, even when up to two-thirds of the " +"slivers are missing. This is possible while keeping the replication factor " +"down to a minimal 4x-5x, similar to existing cloud-based services, but with " +"the additional benefits of decentralization and resilience to more " +"widespread faults." +msgstr "" +"利用擦除编码的创新,Walrus能够快速且稳健地将非结构化数据blob编码成较小的切" +"片,分布并存储在存储节点网络中。即使多达三分之二的slivers丢失,也可以使用部分切" +"片快速重建原始blob。这在将复制因子保持在最低4x-5x的同时实现,类似于现有的基于" +"云的服务,但具有去中心化和对更广泛故障的弹性等额外优势。" + +#: docs/blog/01_announcing_walrus.md:16 +msgid "The Replication Challenge" +msgstr "复制挑战" + +#: docs/blog/01_announcing_walrus.md:18 +msgid "" +"Sui is the most advanced blockchain system in relation to storage on " +"validators, with innovations such as a [storage fund](https://docs.sui.io/" +"concepts/tokenomics/storage-fund) that future-proofs the cost of storing " +"data on-chain. Nevertheless, Sui still requires complete data replication " +"among all validators, resulting in a replication factor of 100x or more in " +"today’s Sui Mainnet. While this is necessary for replicated computing and " +"smart contracts acting on the state of the blockchain, it is inefficient for " +"simply storing unstructured data blobs, such as music, video, blockchain " +"history, etc." +msgstr "" +"Sui是与验证器存储相关的最先进的区块链系统,具有诸如[存储基金](https://docs." +"sui.io/concepts/tokenomics/storage-fund)等创新,可以为链上存储数据的成本提供" +"未来保障。尽管如此,Sui仍然需要在所有验证器之间进行完整的数据复制,导致今天的" +"Sui主网中的复制因子达到100倍或更多。虽然这对于复制计算和在区块链状态上运行的" +"智能合约是必要的,但对于简单地存储非结构化数据blob(如音乐、视频、区块链历史" +"等)来说是低效的。" + +#: docs/blog/01_announcing_walrus.md:26 +msgid "Introducing Walrus: Efficient and Robust Decentralized Storage" +msgstr "介绍Walrus:高效且稳健的去中心化存储" + +#: docs/blog/01_announcing_walrus.md:28 +msgid "" +"To tackle the challenge of high replication costs, Mysten Labs has developed " +"Walrus, a decentralized storage network offering exceptional data " +"availability and robustness with a minimal replication factor of 4x-5x. " +"Walrus provides two key benefits:" +msgstr "" +"为了应对高复制成本的挑战,Mysten Labs开发了Walrus,一个去中心化存储网络,提供" +"卓越的数据可用性和稳健性,复制因子最低为4x-5x。Walrus提供了两个关键优势:" + +#: docs/blog/01_announcing_walrus.md:32 +msgid "" +"**Cost-Effective Blob Storage:** Walrus allows for the uploading of " +"gigabytes of data at a time with minimal cost, making it an ideal solution " +"for storing large volumes of data. Walrus can do this because the data blob " +"is transmitted only once over the network, and storage nodes only spend a " +"fraction of resources compared to the blob size. As a result, the more " +"storage nodes the system has, the fewer resources each storage node uses per " +"blob." +msgstr "" +"**成本效益高的Blob存储:** Walrus允许一次上传数GB的数据,成本极低,使其成为存" +"储大量数据的理想解决方案。Walrus能够做到这一点,因为数据blob在网络上传输一" +"次,存储节点仅消耗与blob大小相比的一小部分资源。因此,系统中的存储节点越多," +"每个存储节点使用的资源就越少。" + +#: docs/blog/01_announcing_walrus.md:38 +msgid "" +"**High Availability and Robustness:** Data stored on Walrus enjoys enhanced " +"reliability and availability under fault conditions. Data recovery is still " +"possible even if two-thirds of the storage nodes crash or come under " +"adversarial control. Further, availability may be certified efficiently " +"without downloading the full blob." +msgstr "" +"**高可用性和稳健性:** 存储在Walrus上的数据在故障条件下具有更高的可靠性和可用" +"性。即使三分之二的存储节点崩溃或受到对手控制,数据恢复仍然是可能的。此外,无" +"需下载完整的blob即可高效地认证可用性。" + +#: docs/blog/01_announcing_walrus.md:43 +msgid "" +"Decentralized storage can take multiple forms in modern ecosystems. For " +"instance, it offers better guarantees for digital assets traded as NFTs. " +"Unlike current designs that store data off-chain, decentralized storage " +"ensures users own the actual resource, not just metadata, mitigating risks " +"of data being taken down or misrepresented." +msgstr "" +"在现代生态系统中,去中心化存储可以采取多种形式。例如,它为作为NFT交易的数字资" +"产提供了更好的保障。与当前将数据存储在链下的设计不同,去中心化存储确保用户拥" +"有实际资源,而不仅仅是元数据,从而减轻数据被删除或被误传的风险。" + +#: docs/blog/01_announcing_walrus.md:48 +msgid "" +"Additionally, decentralized storage is not only useful for storing data such " +"as pictures or files with high availability; it can also double as a low-" +"cost data availability layer for rollups. Here, sequencers can upload " +"transactions on Walrus, and the rollup executor only needs to temporarily " +"reconstruct them for execution." +msgstr "" +"此外,去中心化存储不仅对存储高可用性的数据(如图片或文件)有用;它还可以作为" +"rollups的低成本数据可用性层。在这里,排序器可以在Walrus上上传交易,rollup执行" +"器只需要临时重建它们以进行执行。" + +#: docs/blog/01_announcing_walrus.md:53 +msgid "" +"We also believe Walrus will accompany existing disaster recovery strategies " +"for millions of enterprise companies. Not only is Walrus low-cost, it also " +"provides unmatched layers of data availability, integrity, transparency, and " +"resilience that centralized solutions by design cannot offer." +msgstr "" +"我们还认为Walrus将伴随数百万企业公司的现有灾难恢复策略。Walrus不仅成本低,而" +"且提供了集中式解决方案设计无法提供的无与伦比的数据可用性、完整性、透明性和弹" +"性层。" + +#: docs/blog/01_announcing_walrus.md:58 +msgid "" +"Walrus is powered by the Sui Network and scales horizontally to hundreds or " +"thousands of networked decentralized storage nodes. This should enable " +"Walrus to offer Exabytes of storage at costs competitive with current " +"centralized offerings, given the higher assurance and decentralization." +msgstr "" +"Walrus由Sui网络提供支持,并横向扩展到数百或数千个联网的去中心化存储节点。鉴于" +"更高的保证和去中心化,这应该使Walrus能够以与当前集中式产品竞争的成本提供" +"Exabytes的存储。" + +#: docs/blog/01_announcing_walrus.md:62 +msgid "The Future of Walrus" +msgstr "Walrus的未来" + +#: docs/blog/01_announcing_walrus.md:64 +msgid "" +"By releasing this developer preview we hope to share some of the design " +"decisions with the decentralized app developer community and gather feedback " +"on the approach and the APIs for storing, retrieving, and certifying blobs. " +"In this developer preview, all storage nodes are operated by Mysten Labs to " +"help us understand use cases, fix bugs, and improve the performance of the " +"software." +msgstr "" +"通过发布这个开发者预览版,我们希望与去中心化应用开发者社区分享一些设计决策," +"并收集关于存储、检索和认证blob的方法和API的反馈。在这个开发者预览版中,所有存" +"储节点都由Mysten Labs操作,以帮助我们了解用例、修复错误并提高软件性能。" + +#: docs/blog/01_announcing_walrus.md:69 +msgid "" +"Future updates to Walrus will allow for dynamically changing the set of " +"decentralized storage nodes, as well as changing the mapping of what slivers " +"are managed by each storage node. The available operations and tools will " +"also be expanded to cover more storage-related use cases. Many of these " +"functions will be designed with the feedback we gather in mind." +msgstr "" +"Walrus的未来更新将允许动态更改去中心化存储节点的集合,以及更改每个存储节点管" +"理的slivers的映射。可用的操作和工具也将扩展到涵盖更多与存储相关的用例。许多这些" +"功能将根据我们收集的反馈进行设计。" + +#: docs/blog/01_announcing_walrus.md:74 +msgid "" +"Stay tuned for more updates on how Walrus will revolutionize data storage in " +"the web3 ecosystem." +msgstr "敬请关注更多关于Walrus如何在web3生态系统中革新数据存储的更新。" + +#: docs/blog/01_announcing_walrus.md:76 +msgid "What can developers build?" +msgstr "开发者可以构建什么?" + +#: docs/blog/01_announcing_walrus.md:78 +msgid "" +"As part of this developer preview, we provide a binary client (currently " +"macOS, ubuntu) that can be operated from the [command line interface]" +"(https://docs.walrus.site/usage/client-cli.html), a [JSON API](https://docs." +"walrus.site/usage/json-api.html), and an [HTTP API](https://docs.walrus.site/" +"usage/web-api.html). We also offer the community an aggregator and publisher " +"service and a Devnet deployment of 10 storage nodes operated by Mysten Labs." +msgstr "" +"作为这个开发者预览版的一部分,我们提供一个二进制客户端(目前支持macOS和" +"ubuntu),可以从[命令行界面](https://docs.walrus.site/usage/client-cli.html)" +"操作,一个[JSON API](https://docs.walrus.site/usage/json-api.html),以及一个" +"[HTTP API](https://docs.walrus.site/usage/web-api.html)。我们还为社区提供一个" +"聚合和发布服务,以及由Mysten Labs操作的10个存储节点的Devnet部署。" + +#: docs/blog/01_announcing_walrus.md:84 +msgid "" +"We hope developers will experiment with building applications that leverage " +"the Walrus Decentralized Store in a variety of ways. As examples, we hope to " +"see the community build:" +msgstr "" +"我们希望开发者能够尝试以各种方式构建利用Walrus去中心化存储的应用程序。例如," +"我们希望看到社区构建:" + +#: docs/blog/01_announcing_walrus.md:87 +msgid "" +"**Storage of media for NFT or dapps:** Walrus can directly store and serve " +"media such as images, sounds, sprites, videos, other game assets, etc. This " +"is publicly available media that can be accessed using HTTP requests at " +"caches to create multimedia dapps." +msgstr "" +"**NFT或dapps的媒体存储:** Walrus可以直接存储和提供媒体,如图像、声音、精灵、" +"视频、其他游戏资产等。这是可以通过HTTP请求在缓存中访问的公开可用媒体,以创建" +"多媒体dapps。" + +#: docs/blog/01_announcing_walrus.md:91 +msgid "" +"**AI-related use cases:** Walrus can store clean data sets of training data, " +"datasets with a known and verified provenance, model weights, and proofs of " +"correct training for AI models. Or it may be used to store and ensure the " +"availability and authenticity of an AI model output." +msgstr "" +"**与AI相关的用例:** Walrus可以存储干净的训练数据集、具有已知和验证来源的数据" +"集、模型权重和AI模型的正确训练证明。或者它可以用于存储和确保AI模型输出的可用" +"性和真实性。" + +#: docs/blog/01_announcing_walrus.md:95 +msgid "" +"**Storage of long term archival of blockchain history:** Walrus can be used " +"as a lower-cost decentralized store to store blockchain history. For Sui, " +"this can include sequences of checkpoints with all associated transaction " +"and effects content, as well as historic snapshots of the blockchain state, " +"code, or binaries." +msgstr "" +"**区块链历史的长期存档存储:** Walrus可以用作低成本的去中心化存储来存储区块链" +"历史。对于Sui,这可以包括所有相关交易和效果内容的检查点序列,以及区块链状态、" +"代码或二进制文件的历史快照。" + +#: docs/blog/01_announcing_walrus.md:100 +msgid "" +"**Support availability for L2s:** Walrus enables parties to certify the " +"availability of blobs, as required by L2s that need data to be stored and " +"attested as available to all. This may also include the availability of " +"extra audit data such as validity proofs, zero-knowledge proofs of correct " +"execution, or large fraud proofs." +msgstr "" +"**支持L2的可用性:** Walrus使各方能够认证blob的可用性,这是L2需要的数据存储和" +"认证为所有人可用的要求。这还可能包括额外审计数据的可用性,如有效性证明、正确" +"执行的零知识证明或大规模欺诈证明。" + +#: docs/blog/01_announcing_walrus.md:105 +msgid "" +"**Support a full decentralized web experience:** Walrus can host full " +"decentralized web experiences including all resources (such as js, css, " +"html, and media). These can provide content but also host the UX of dapps, " +"enabling fully decentralized front- and back-ends on chain. It brings the " +"full \"web\" back into \"web3\"." +msgstr "" +"**支持完整的去中心化网络体验:** Walrus可以托管完整的去中心化网络体验,包括所" +"有资源(如js、css、html和媒体)。这些可以提供内容,但也可以托管dapps的用户体" +"验,使链上完全去中心化的前端和后端成为可能。它将完整的“web”带回“web3”。" + +#: docs/blog/01_announcing_walrus.md:110 +msgid "" +"**Support subscription models for media:** Creators can store encrypted " +"media on Walrus and only provide access via decryption keys to parties that " +"have paid a subscription fee or have paid for content. (Note that Walrus " +"provides the storage; encryption and decryption must be done off Walrus)." +msgstr "" +"**支持媒体的订阅模式:** 创作者可以在Walrus上存储加密媒体,并仅通过解密密钥向" +"支付订阅费或支付内容的各方提供访问权限。(请注意,Walrus提供存储;加密和解密" +"必须在Walrus之外完成)。" + +#: docs/blog/01_announcing_walrus.md:115 +msgid "" +"We are excited to see what else the web3 developer community can imagine!" +msgstr "我们很高兴看到web3开发者社区还能想象出什么!" + +#: docs/blog/01_announcing_walrus.md:117 +msgid "Getting Started" +msgstr "入门" + +#: docs/blog/01_announcing_walrus.md:119 +msgid "" +"For this developer preview the public Walrus Devnet is openly available to " +"all developers. Developer documentation is available at ." +msgstr "" +"对于这个开发者预览版,公共Walrus Devnet对所有开发者开放。开发者文档可在" +"获取。" + +#: docs/blog/01_announcing_walrus.md:122 +msgid "" +"SUI Testnet token is the main currency for interacting with Walrus. " +"Developers pay for Walrus Devnet storage using SUI Testnet tokens which can " +"be acquired at the [Sui Testnet Discord faucet](https://discord.com/" +"channels/916379725201563759/1037811694564560966)." +msgstr "" +"SUI测试网代币是与Walrus交互的主要货币。开发者使用SUI测试网代币支付Walrus " +"Devnet存储费用,这些代币可以在[Sui测试网Discord水龙头](https://discord.com/" +"channels/916379725201563759/1037811694564560966)获取。" + +#: docs/blog/01_announcing_walrus.md:126 +msgid "One more thing …" +msgstr "还有一件事……" + +#: docs/blog/01_announcing_walrus.md:128 +msgid "" +"The [Walrus Sites website](https://walrus.site), the [Walrus docs](https://" +"docs.walrus.site), and [this very blog](https://blog.walrus.site) are hosted " +"on Walrus. To learn more about Walrus Sites and how you can deploy your own, " +"[click here](https://docs.walrus.site/walrus-sites/intro.html)." +msgstr "" +"[Walrus Sites网站](https://walrus.site)、[Walrus文档](https://docs.walrus." +"site)和[这个博客](https://blog.walrus.site)都托管在Walrus上。要了解更多关于" +"Walrus Sites的信息以及如何部署你自己的,请[点击这里](https://docs.walrus." +"site/walrus-sites/intro.html)。" + +#: docs/blog/02_devnet_update.md:5 +msgid "Published on: 2024-08-12" +msgstr "发布日期:2024-08-12" + +#: docs/blog/02_devnet_update.md:7 +msgid "" +"We have redeployed the Walrus Devnet to incorporate various improvements to " +"the Walrus storage nodes and clients. In this process, all blobs stored on " +"Walrus were wiped. Note that this may happen again on Devnet and Testnet, " +"but obviously _not on the future Mainnet_." +msgstr "" +"我们重新部署了Walrus Devnet,以整合对Walrus存储节点和客户端的各种改进。在此过" +"程中,存储在Walrus上的所有blob都被清除。请注意,这可能会在Devnet和Testnet上再" +"次发生,但显然不会在未来的主网上发生。" + +#: docs/blog/02_devnet_update.md:11 +msgid "Migration and Re-deployment of Walrus Sites" +msgstr "Walrus Sites的迁移和重新部署" + +#: docs/blog/02_devnet_update.md:13 +msgid "" +"You can obtain the latest version of the `walrus` binary and the new " +"configuration as described in the [setup chapter](../usage/setup.md)." +msgstr "" +"你可以按照[设置章节](../usage/setup.md)中的描述获取最新版本的`walrus`二进制文" +"件和新配置。" + +#: docs/blog/02_devnet_update.md:16 +msgid "" +"If you had deployed any Walrus Sites, the site object on Sui and any SuiNS " +"name are still valid. However, you need to re-store all blobs on Walrus. You " +"can achieve this by running the site-builder tool (from the `walrus-sites` " +"directory) as follows:" +msgstr "" +"如果你已经部署了任何Walrus Sites,Sui上的站点对象和任何SuiNS名称仍然有效。但" +"是,你需要在Walrus上重新存储所有blob。你可以通过运行site-builder工具(在" +"`walrus-sites`目录中)来实现这一点,如下所示:" + +#: docs/blog/02_devnet_update.md:25 +msgid "Changes" +msgstr "更改" + +#: docs/blog/02_devnet_update.md:27 +msgid "" +"Besides many improvements to the storage nodes, the new version of Walrus " +"includes the following user-facing changes:" +msgstr "除了对存储节点的许多改进外,新版本的Walrus还包括以下面向用户的更改:" + +#: docs/blog/02_devnet_update.md:30 +msgid "" +"Improved coin management: The client now better selects coins for gas and " +"storage fees. Users no longer require multiple coins in their wallet." +msgstr "" +"改进的币管理:客户端现在更好地选择用于gas和存储费用的币。用户不再需要在钱包中" +"持有多个币。" + +#: docs/blog/02_devnet_update.md:32 +msgid "" +"Improved connection management: The client now limits the number of parallel " +"connections to improve performance for users with low network bandwidth " +"storing large blobs." +msgstr "" +"改进的连接管理:客户端现在限制并行连接的数量,以提高低网络带宽用户存储大blob" +"的性能。" + +#: docs/blog/02_devnet_update.md:34 +msgid "" +"OpenAPI specification: Walrus storage nodes, aggregators, and publishers " +"expose their API specifications at the path `/v1/api`." +msgstr "" +"OpenAPI规范:Walrus存储节点、聚合器和发布器在路径`/v1/api`公开其API规范。" + +#: docs/blog/02_devnet_update.md:36 +msgid "" +"System info in JSON: The `info` command is now also available in JSON mode." +msgstr "JSON格式的系统信息:`info`命令现在也可以以JSON模式使用。" + +#: docs/blog/02_devnet_update.md:37 +msgid "Client version: The `walrus` CLI now has a `--version` option." +msgstr "客户端版本:`walrus` CLI现在有一个`--version`选项。" + +#: docs/blog/02_devnet_update.md:38 +msgid "Support for the empty blob: The empty blob is now supported by Walrus." +msgstr "支持空blob:Walrus现在支持空blob。" + +#: docs/blog/02_devnet_update.md:39 +msgid "" +"Default configuration-file paths: The client now looks for configuration " +"files in `~/.config/walrus` in addition to `~/.walrus` and recognizes the " +"extension `.yml` in addition to `.yaml`." +msgstr "" +"默认配置文件路径:客户端现在除了在`~/.walrus`中查找配置文件外,还会在`~/." +"config/walrus`中查找,并且除了`.yaml`外,还识别`.yml`扩展名。" + +#: docs/blog/02_devnet_update.md:42 +msgid "" +"Home directory in paths: Paths specified in configuration files now expand " +"the `~` symbol at the beginning to the user's home directory." +msgstr "" +"路径中的主目录:配置文件中指定的路径现在将开头的`~`符号扩展为用户的主目录。" + +#: docs/blog/02_devnet_update.md:44 +msgid "" +"More robust store and status check: The `store` and `blob-status` commands " +"are now more robust against Sui full nodes that aggressively prune past " +"events and against load-balancers that send transactions to different full " +"nodes." +msgstr "" +"更强健的存储和状态检查:`store`和`blob-status`命令现在对积极修剪过去事件的Sui" +"全节点以及将交易发送到不同全节点的负载均衡器更强健。" + +#: docs/blog/02_devnet_update.md:47 +msgid "" +"Fix CLI parsing: The `walrus` CLI now properly handles hyphens in blob IDs." +msgstr "修复CLI解析:`walrus` CLI现在可以正确处理blob ID中的连字符。" + +#: docs/blog/02_devnet_update.md:49 +msgid "" +"This update also increases the number of shards to 1000, which is more " +"representative of the expected value in Testnet and Mainnet." +msgstr "此更新还将分片数量增加到1000,这更能代表Testnet和Mainnet中的预期值。" + +#: docs/blog/03_whitepaper.md:3 +msgid "Announcing the Official Walrus Whitepaper" +msgstr "宣布官方Walrus白皮书" + +#: docs/blog/03_whitepaper.md:5 +msgid "" +"In June, Mysten Labs announced Walrus, a new decentralized secure blob store " +"design, and introduced a developer preview that currently stores over [12TiB]" +"(https://capacity.walrus.site/) of data. [Breaking the Ice](https://info." +"breakingtheice.sui.io/) gathered over 200 developers to build apps " +"leveraging decentralized storage." +msgstr "" +"在六月,Mysten Labs宣布了Walrus,一个新的去中心化安全blob存储设计,并推出了一" +"个开发者预览版,目前存储了超过[12TiB](https://capacity.walrus.site/)的数据。" +"[Breaking the Ice](https://info.breakingtheice.sui.io/)聚集了超过200名开发" +"者,构建利用去中心化存储的应用。" + +#: docs/blog/03_whitepaper.md:10 +msgid "" +"It is time to unveil the next stage of the project: Walrus will become an " +"independent decentralized network with its own utility token, WAL, that will " +"play a key role in the operation and governance of the network. Walrus will " +"be operated by storage nodes through a delegated proof-of-stake mechanism " +"using the WAL token. An independent Walrus foundation will encourage the " +"advancement and adoption of Walrus, and support its community of users and " +"developers." +msgstr "" +"是时候揭开项目的下一个阶段了:Walrus将成为一个独立的去中心化网络,拥有自己的" +"效用代币WAL,该代币将在网络的运营和治理中发挥关键作用。Walrus将通过使用WAL代" +"币的委托权益证明机制由存储节点操作。一个独立的Walrus基金会将鼓励Walrus的进步" +"和采用,并支持其用户和开发者社区。" + +#: docs/blog/03_whitepaper.md:16 +msgid "" +"Today, we published the Walrus [whitepaper](../walrus.pdf) (also on [GitHub]" +"(https://github.com/MystenLabs/walrus-docs/blob/main/docs/walrus.pdf)) that " +"offers additional details, including:" +msgstr "" +"今天,我们发布了Walrus[白皮书](../walrus.pdf)(也在[GitHub](https://github." +"com/MystenLabs/walrus-docs/blob/main/docs/walrus.pdf)上),提供了更多细节,包" +"括:" + +#: docs/blog/03_whitepaper.md:20 +msgid "" +"The encoding scheme and Read / Write operations Walrus uses to ensure both " +"security and efficient scaling to 100s and 1000s of storage nodes, including " +"interactions with the Sui blockchain which serves as a coordination layer " +"for Walrus’ operations." +msgstr "" +"Walrus使用的编码方案和读/写操作,以确保安全性和高效扩展到数百和数千个存储节" +"点,包括与作为Walrus操作协调层的Sui区块链的交互。" + +#: docs/blog/03_whitepaper.md:23 +msgid "" +"The reconfiguration of storage nodes across epochs, and how the protocol " +"ensures available blobs on Walrus remain available over long periods of time." +msgstr "" +"跨纪元的存储节点重新配置,以及协议如何确保Walrus上的可用blob在长时间内保持可" +"用。" + +#: docs/blog/03_whitepaper.md:25 +msgid "" +"The tokenomics of Walrus based on the WAL token, including how staking and " +"staking rewards are structured, how pricing and payments for storage are " +"handled and distributed in each epoch, and the governance of key system " +"parameters." +msgstr "" +"基于WAL代币的Walrus代币经济学,包括质押和质押奖励的结构,存储的定价和支付在每" +"个纪元中的处理和分配,以及关键系统参数的治理。" + +#: docs/blog/03_whitepaper.md:28 +msgid "" +"Forward-looking design options, such as a cheap mechanism to challenge and " +"audit storage nodes, options for ensuring reads with a higher service " +"quality, possibly against a payment, and designs that empower light nodes to " +"meaningfully contribute to the protocol’s robustness, serve reads, and be " +"rewarded." +msgstr "" +"前瞻性的设计选项,例如挑战和审计存储节点的廉价机制,确保更高服务质量的读取选" +"项,可能需要支付,以及使轻节点能够有意义地贡献于协议的稳健性、提供读取服务并" +"获得奖励的设计。" + +#: docs/blog/03_whitepaper.md:33 +msgid "" +"The whitepaper focuses on the steady-state design aspects of Walrus. Further " +"details about the project, such as timelines, opportunities for community " +"participation, how to join the network as a storage node, and plans around " +"light nodes, will be shared in subsequent posts." +msgstr "" +"白皮书重点介绍了Walrus的稳态设计方面。关于项目的更多细节,例如时间表、社区参" +"与的机会、如何作为存储节点加入网络以及围绕轻节点的计划,将在后续帖子中分享。" + +#: docs/blog/03_whitepaper.md:37 +msgid "To be part of this journey:" +msgstr "成为这段旅程的一部分:" + +#: docs/blog/03_whitepaper.md:39 +msgid "Follow us on [Twitter](https://x.com/WalrusProtocol)" +msgstr "在[Twitter](https://x.com/WalrusProtocol)上关注我们" + +#: docs/blog/03_whitepaper.md:40 +msgid "Join our [Discord](https://discord.com/invite/walrusprotocol)" +msgstr "加入我们的[Discord](https://discord.com/invite/walrusprotocol)" + +#: docs/blog/03_whitepaper.md:41 +msgid "[Build apps](../index.md) on Walrus" +msgstr "在Walrus上[构建应用](../README.md)" + +#: docs/blog/03_whitepaper.md:42 +msgid "[Publish a Walrus Site](../walrus-sites/intro.md) and share it" +msgstr "[发布一个Walrus站点](../walrus-sites/intro.md)并分享它" + +#: docs/blog/04_testnet_update.md:5 +msgid "Published on: 2024-10-17" +msgstr "发布日期:2024-10-17" + +#: docs/blog/04_testnet_update.md:7 +msgid "" +"Today, a community of operators launches the first public Walrus Testnet. " +"This is an important milestone in validating the operation of Walrus as a " +"decentralized blob store, by operating it on a set of independent storage " +"nodes, that change over time through a delegated proof of stake mechanism. " +"The Testnet also brings functionality updates relating to governance, " +"epochs, and blob deletion." +msgstr "" +"今天,一个运营者社区启动了第一个公共Walrus Testnet。这是验证Walrus作为去中心" +"化blob存储操作的重要里程碑,通过在一组独立的存储节点上操作,这些节点通过委托" +"权益证明机制随时间变化。Testnet还带来了与治理、纪元和blob删除相关的功能更新。" + +#: docs/blog/04_testnet_update.md:13 +msgid "Blob deletion" +msgstr "Blob删除" + +#: docs/blog/04_testnet_update.md:15 +msgid "" +"The most important user-facing new feature is optional blob deletion. The " +"uploader of a blob can optionally indicate a blob is \"deletable\". This " +"information is stored in the Sui blob metadata object, and is also included " +"in the event denoting when the blob is certified. Subsequently, the owner of " +"the Sui blob metadata object can \"delete\" it. As a result storage for the " +"remaining period is reclaimed and can be used by subsequent blob storage " +"operations." +msgstr "" +"最重要的面向用户的新功能是可选的blob删除。blob的上传者可以选择性地指示一个" +"blob是“可删除的”。此信息存储在Sui blob元数据对象中,并且还包括在表示blob被认" +"证的事件中。随后,Sui blob元数据对象的所有者可以“删除”它。因此,剩余时间段的" +"存储空间被回收,并可用于后续的blob存储操作。" + +#: docs/blog/04_testnet_update.md:21 +msgid "" +"Blob deletion allows more fine-grained storage cost management: smart " +"contracts that wrap blob metadata objects can define logic that stores blobs " +"and delete them to minimize costs, and reclaim storage space before Walrus " +"epochs end." +msgstr "" +"Blob删除允许更细粒度的存储成本管理:包装blob元数据对象的智能合约可以定义存储" +"blob并删除它们的逻辑,以最小化成本,并在Walrus纪元结束前回收存储空间。" + +#: docs/blog/04_testnet_update.md:25 +msgid "" +"However, blob deletion is not an effective privacy mechanism in itself: " +"copies of the blob may exist outside Walrus storage nodes on caches and end-" +"user stores or devices. Furthermore, if the identical blob is stored by " +"multiple Walrus users, the blob will still be available on Walrus until no " +"copy exists. Thus deleting your own copy of a blob cannot guarantee that it " +"is deleted from Walrus as a whole." +msgstr "" +"然而,blob删除本身并不是一种有效的隐私机制:blob的副本可能存在于Walrus存储节" +"点之外的缓存和终端用户存储或设备上。此外,如果相同的blob被多个Walrus用户存" +"储,那么在没有副本存在之前,该blob仍将在Walrus上可用。因此,删除你自己的blob" +"副本不能保证它从Walrus整体上被删除。" + +#: docs/blog/04_testnet_update.md:31 +msgid "" +"Find out how to [upload and delete deletable blobs](../usage/client-cli." +"md#reclaiming-space-via-deletable-blobs) thought the CLI." +msgstr "" +"通过CLI了解如何[上传和删除可删除的blob](../usage/client-cli.md#reclaiming-" +"space-via-deletable-blobs)。" + +#: docs/blog/04_testnet_update.md:34 +msgid "" +"Find out more about how [delete operations work](../dev-guide/dev-operations." +"md#delete)." +msgstr "" +"了解更多关于[删除操作如何工作](../dev-guide/dev-operations.md#delete)。" + +#: docs/blog/04_testnet_update.md:36 +msgid "Epochs" +msgstr "纪元" + +#: docs/blog/04_testnet_update.md:38 +msgid "" +"Walrus Testnet enables multiple epochs. Initially, the epoch duration is set " +"to a single day to ensure the logic of epoch change is thoroughly tested. At " +"Mainnet, epochs will likely be multiple weeks long." +msgstr "" +"Walrus Testnet支持多个纪元。最初,纪元持续时间设置为一天,以确保纪元更改的逻" +"辑得到彻底测试。在主网中,纪元可能会持续数周。" + +#: docs/blog/04_testnet_update.md:42 +msgid "" +"The progress of epochs makes the expiry epoch of blobs meaningful, and blobs " +"will become unavailable after their expiry epoch. The store command may be " +"used to extend the expiry epoch of a blob that is still available. This " +"operation is efficient and only affects payments and metadata, and does not " +"re-upload blob contents." +msgstr "" +"纪元的进展使得blob的到期纪元变得有意义,blob将在其到期纪元后变得不可用。存储" +"命令可用于延长仍然可用的blob的到期纪元。此操作高效且仅影响支付和元数据,不会" +"重新上传blob内容。" + +#: docs/blog/04_testnet_update.md:47 +msgid "" +"Find out the [current epoch](../usage/client-cli.md#walrus-system-" +"information) through the CLI." +msgstr "" +"通过CLI了解[当前纪元](../usage/client-cli.md#walrus-system-information)。" + +#: docs/blog/04_testnet_update.md:48 +msgid "" +"Find out how to store a blob for [multiple epochs](../usage/client-cli." +"md#storing-querying-status-and-reading-blobs)." +msgstr "" +"了解如何存储一个blob以用于[多个纪元](../usage/client-cli.md#storing-querying-" +"status-and-reading-blobs)。" + +#: docs/blog/04_testnet_update.md:51 +msgid "The WAL token and the Testnet WAL faucet" +msgstr "WAL代币和Testnet WAL水龙头" + +#: docs/blog/04_testnet_update.md:53 +msgid "" +"Payments for blob storage and extending blob expiry are denominated in " +"Testnet WAL, a Walrus token issued on the Sui Testnet. Testnet WAL has no " +"value, and an unlimited supply; so no need to covet or hoard it, it's just " +"for testing purposes and only issued on Sui Testnet." +msgstr "" +"blob存储和延长blob到期的支付以Testnet WAL计价,这是一种在Sui Testnet上发行的" +"Walrus代币。Testnet WAL没有价值,供应无限;所以不需要觊觎或囤积它,它只是用于" +"测试目的,并且只在Sui Testnet上发行。" + +#: docs/blog/04_testnet_update.md:57 +msgid "" +"WAL also has a smaller unit called FROST, similar to MIST for SUI. 1 WAL is " +"equal to 1 billion (1000000000) FROST." +msgstr "" +"WAL还有一个较小的单位,称为FROST,类似于SUI的MIST。1 WAL等于10亿" +"(1000000000)FROST。" + +#: docs/blog/04_testnet_update.md:60 +msgid "" +"To make Testnet WAL available to all who want to experiment with the Walrus " +"Testnet we provide a utility and smart contract to convert Testnet SUI " +"(which also has no value) into Testnet WAL using a one-to-one exchange rate. " +"This is chosen arbitrarily, and generally one should not read too much into " +"the actual WAL denominated costs of storage on Testnet. They have been " +"chosen arbitrarily." +msgstr "" +"为了使所有想要试验Walrus Testnet的人都能获得Testnet WAL,我们提供了一个工具和" +"智能合约,将Testnet SUI(也没有价值)按一比一的汇率转换为Testnet WAL。这是任" +"意选择的,通常不应过多解读Testnet上以WAL计价的存储成本。它们是任意选择的。" + +#: docs/blog/04_testnet_update.md:65 +msgid "" +"Find out how to [request Testnet WAL tokens](../usage/setup.md#testnet-wal-" +"faucet) through the CLI." +msgstr "" +"通过CLI了解如何[请求Testnet WAL代币](../usage/setup.md#testnet-wal-faucet)。" + +#: docs/blog/04_testnet_update.md:67 +msgid "Decentralization through staking & unstaking" +msgstr "通过质押和解除质押实现去中心化" + +#: docs/blog/04_testnet_update.md:69 +msgid "" +"The WAL token may also be used to stake with storage operators. Staked WAL " +"can be unstaked and re-staked with other operators or used to purchase " +"storage." +msgstr "" +"WAL代币还可以用于与存储运营商进行质押。质押的WAL可以解除质押并重新质押给其他" +"运营商,或用于购买存储。" + +#: docs/blog/04_testnet_update.md:72 +msgid "" +"Each epoch storage nodes are selected and allocated storage shards according " +"to their delegated stake. At the end of each epoch payments for storing " +"blobs for the epoch are distributed to storage nodes and those that delegate " +"stake to them. Furthermore, important network parameters (such as total " +"available storage and storage price) are set by the selected storage " +"operators each epoch according to their stake weight." +msgstr "" +"每个纪元,存储节点根据其委托的质押被选择并分配存储分片。在每个纪元结束时,存" +"储blob的支付分配给存储节点和那些委托质押给它们的人。此外,每个纪元的重要网络" +"参数(如总可用存储和存储价格)由选定的存储运营商根据其质押权重设置。" + +#: docs/blog/04_testnet_update.md:78 +msgid "" +"A staking web dApp is provided to experiment with this functionality. " +"Community members have also created explorers that can be used to view " +"storage nodes when considering who to stake with. Staking ensures that the " +"ultimate governance of Walrus, directly in terms of storage nodes, and " +"indirectly in terms of parameters and software they chose, rests with WAL " +"Token holders." +msgstr "" +"提供了一个质押web dApp来试验此功能。社区成员还创建了浏览器,可以在考虑与谁质" +"押时查看存储节点。质押确保了Walrus的最终治理,直接在存储节点方面,间接在他们" +"选择的参数和软件方面,归WAL代币持有者所有。" + +#: docs/blog/04_testnet_update.md:83 +msgid "" +"Under the hood and over the next months we will be testing many aspects of " +"epoch changes and storage node committee changes: better shard allocation " +"mechanisms upon changes or storage node stake; efficient ways to sync state " +"between storage nodes; as well as better ways for storage nodes to follow " +"Sui event streams." +msgstr "" +"在接下来的几个月里,我们将在幕后测试纪元变化和存储节点委员会变化的许多方面:" +"在变化或存储节点质押时更好的分片分配机制;在存储节点之间同步状态的有效方法;" +"以及存储节点跟随Sui事件流的更好方法。" + +#: docs/blog/04_testnet_update.md:88 +msgid "Explore the [Walrus staking dApp](https://stake.walrus.site)." +msgstr "探索[Walrus质押dApp](https://stake.walrus.site)。" + +#: docs/blog/04_testnet_update.md:89 +msgid "" +"Look at recent activity on the [Walrus Explorer](https://walruscan.com/" +"testnet/home)." +msgstr "" +"查看[Walrus Explorer](https://walruscan.com/testnet/home)上的最新活动。" + +#: docs/blog/04_testnet_update.md:91 +msgid "New Move contracts & documentation" +msgstr "新的Move合约和文档" + +#: docs/blog/04_testnet_update.md:93 +msgid "" +"As part of the Testnet release of Walrus, the documentation and Move Smart " +"contracts have been updated, and can be found in the [`walrus-docs` " +"repository](https://github.com/MystenLabs/walrus-docs)." +msgstr "" +"作为Walrus Testnet发布的一部分,文档和Move智能合约已更新,可以在[`walrus-" +"docs`仓库](https://github.com/MystenLabs/walrus-docs)中找到。" + +#: docs/blog/04_testnet_update.md:97 +msgid "New Walrus Sites features" +msgstr "新的Walrus站点功能" + +#: docs/blog/04_testnet_update.md:99 +msgid "" +"With the move to Walrus Testnet, Walrus Sites have also been updated! The " +"new features in this update greatly increase the flexibility, speed, and " +"security of Walrus Sites. Developers can now specify client-side routing " +"rules, and add custom HTTP headers to the portals' responses for their site, " +"expanding the possibilities for what Walrus Sites can do." +msgstr "" +"随着迁移到Walrus Testnet,Walrus站点也已更新!此更新中的新功能大大增加了" +"Walrus站点的灵活性、速度和安全性。开发人员现在可以为其站点指定客户端路由规" +"则,并为门户的响应添加自定义HTTP头,扩展了Walrus站点的可能性。" + +#: docs/blog/04_testnet_update.md:104 +msgid "" +"[Migrate now](../walrus-sites/tutorial-migration.md) to take advantage of " +"these new features! The old Walrus Sites, based on Walrus Devnet, will still " +"be available for a short time. However, Devnet will be wiped soon (as " +"described below), so it is recommended to migrate as soon as possible." +msgstr "" +"[立即迁移](../walrus-sites/tutorial-migration.md)以利用这些新功能!基于" +"Walrus Devnet的旧Walrus站点仍将在短时间内可用。然而,Devnet将很快被清除(如下" +"所述),因此建议尽快迁移。" + +#: docs/blog/04_testnet_update.md:108 +msgid "Discontinuation of Walrus Devnet" +msgstr "停止Walrus Devnet" + +#: docs/blog/04_testnet_update.md:110 +msgid "" +"The previous Walrus Devnet instance is now deprecated and **will be shut " +"down after 2024-10-31**. All data stored on Walrus Devnet (including Walrus " +"Sites) will no longer be accessible at that point. You need to re-upload all " +"data to Walrus Testnet if you want it to remain accessible. Walrus Sites " +"also need to be migrated as described on the dedicated [migration page](../" +"walrus-sites/tutorial-migration.md)." +msgstr "" +"之前的Walrus Devnet实例现在已被弃用,并且**将在2024-10-31之后关闭**。存储在" +"Walrus Devnet上的所有数据(包括Walrus站点)在那时将不再可访问。如果你希望它保" +"持可访问状态,你需要将所有数据重新上传到Walrus Testnet。Walrus站点也需要按照" +"专门的[迁移页面](../walrus-sites/tutorial-migration.md)中描述的进行迁移。" + +#: docs/design/objectives_use_cases.md:5 +msgid "" +"Walrus supports operations to store and read blobs, and to prove and verify " +"their availability. It ensures content survives storage nodes suffering " +"Byzantine faults and remains available and retrievable. It provides APIs to " +"access the stored content over a CLI, SDKs and over web2 HTTP technologies, " +"and supports content delivery infrastructures like caches and content " +"distribution networks (CDNs)." +msgstr "" +"Walrus支持存储和读取blob的操作,并证明和验证其可用性。它确保内容在存储节点遭" +"受拜占庭故障时仍然可用和可检索。它提供API,通过CLI、SDK和web2 HTTP技术访问存" +"储的内容,并支持缓存和内容分发网络(CDN)等内容交付基础设施。" + +#: docs/design/objectives_use_cases.md:11 +msgid "" +"Under the hood, storage cost is a small fixed multiple of the size of blobs " +"(around 5x). Advanced erasure coding keeps the cost low, in contrast to the " +"full replication of data traditional to blockchains, such as the >100x " +"multiple for data stored in Sui objects. As a result, storage of much bigger " +"resources (up to several GiB) is possible on Walrus at substantially lower " +"cost than on Sui or other blockchains. Because encoded blobs are stored on " +"all storage nodes, Walrus also provides superior robustness than designs " +"with a small amount of replicas storing the full blob." +msgstr "" +"在底层,存储成本是blob大小的一个小的固定倍数(大约5倍)。高级纠删编码使成本保" +"持较低,与传统区块链的数据完全复制形成对比,例如存储在Sui对象中的数据的>100倍" +"倍数。因此,在Walrus上存储更大资源(最多几个GiB)的成本比在Sui或其他区块链上" +"低得多。由于编码的blob存储在所有存储节点上,Walrus还提供了比少量副本存储完整" +"blob的设计更高的鲁棒性。" + +#: docs/design/objectives_use_cases.md:18 +msgid "" +"Walrus uses the Sui chain for coordination and payments. Available storage " +"is represented as Sui objects that can be acquired, owned, split, merged, " +"and transferred. Storage space can be tied to a stored blob for a period of " +"time, with the resulting Sui object used to prove availability on chain in " +"smart contracts, or off chain using light clients." +msgstr "" +"Walrus使用Sui链进行协调和支付。可用存储表示为可以获取、拥有、拆分、合并和转移" +"的Sui对象。存储空间可以在一段时间内绑定到存储的blob,生成的Sui对象用于在链上" +"通过智能合约证明可用性,或在链下使用轻客户端证明可用性。" + +#: docs/design/objectives_use_cases.md:23 +msgid "" +"The [next chapter](./overview.md) discusses the above operations relating to " +"storage, retrieval, and availability in detail." +msgstr "[下一章](./overview.md)详细讨论了与存储、检索和可用性相关的上述操作。" + +#: docs/design/objectives_use_cases.md:26 +msgid "" +"In the future, we plan to include in Walrus some minimal governance to allow " +"storage nodes to change between storage epochs. Walrus is also compatible " +"with periodic payments for continued storage. We also plan to implement " +"storage attestation based on challenges to get confidence that blobs are " +"stored or at least available. Walrus also allows light nodes that store " +"small parts of blobs to get rewards for proving availability and assisting " +"recovery. We will cover these topics in later documents. We also provide " +"details of the encoding scheme in a separate document." +msgstr "" +"未来,我们计划在Walrus中包含一些最小的治理,以允许存储节点在存储周期之间进行" +"更改。Walrus还兼容定期支付以继续存储。我们还计划实施基于挑战的存储认证,以确" +"保blob已存储或至少可用。Walrus还允许存储小部分blob的轻节点通过证明可用性和协" +"助恢复获得奖励。我们将在后续文档中讨论这些主题。我们还在单独的文档中提供编码" +"方案的详细信息。" + +#: docs/design/objectives_use_cases.md:33 +msgid "Non-objectives" +msgstr "非目标" + +#: docs/design/objectives_use_cases.md:35 +msgid "There are a few things that Walrus explicitly is not:" +msgstr "有几件事是Walrus明确不做的:" + +#: docs/design/objectives_use_cases.md:37 +msgid "" +"Walrus does not reimplement a CDN that might be geo-replicated or have less " +"than tens of milliseconds of latency. Instead, it ensures that traditional " +"CDNs are usable and compatible with Walrus caches." +msgstr "" +"Walrus不会重新实现可能进行地理复制或延迟小于几十毫秒的CDN。相反,它确保传统" +"CDN可用并与Walrus缓存兼容。" + +#: docs/design/objectives_use_cases.md:41 +msgid "" +"Walrus does not re-implement a full smart contracts platform with consensus " +"or execution. It relies on Sui smart contracts when necessary, to manage " +"Walrus resources and processes including payments, storage epochs, and so on." +msgstr "" +"Walrus不会重新实现具有共识或执行功能的完整智能合约平台。它在必要时依赖Sui智能" +"合约来管理Walrus资源和流程,包括支付、存储周期等。" + +#: docs/design/objectives_use_cases.md:45 +msgid "" +"Walrus supports storage of any blob, including encrypted blobs. However, " +"Walrus itself is not the distributed key management infrastructure that " +"manages and distributed encryption or decryption keys to support a full " +"private storage eco-system. It can, however, provide the storage layer for " +"such infrastructures." +msgstr "" +"Walrus支持存储任何blob,包括加密的blob。然而,Walrus本身不是分布式密钥管理基" +"础设施,不管理和分发加密或解密密钥以支持完整的私有存储生态系统。然而,它可以" +"为此类基础设施提供存储层。" + +#: docs/design/objectives_use_cases.md:50 +msgid "Use cases" +msgstr "用例" + +#: docs/design/objectives_use_cases.md:52 +msgid "" +"App builders may use Walrus in conjunction with any L1 or L2 blockchains to " +"build experiences that require large amounts of data to be stored in a " +"decentralized manner and possibly certified as available:" +msgstr "" +"应用程序构建者可以将Walrus与任何L1或L2区块链结合使用,以构建需要以去中心化方" +"式存储大量数据并可能认证为可用的体验:" + +#: docs/design/objectives_use_cases.md:56 +msgid "" +"**Storage of media for NFT or dApps:** Walrus can directly store and serve " +"media such as images, sounds, sprites, videos, other game assets, and so on. " +"This is publicly available media that is accessed using HTTP requests at " +"caches to create multimedia dApps." +msgstr "" +"**NFT或dapps的媒体存储:** Walrus可以直接存储和提供媒体,如图像、声音、精灵、" +"视频、其他游戏资产等。这是可以通过HTTP请求在缓存中访问的公开可用媒体,以创建" +"多媒体dapps。" + +#: docs/design/objectives_use_cases.md:60 +msgid "" +"**AI related use cases:** Walrus can store clean data sets of training data, " +"datasets with a known and verified provenance, models, weights and proofs of " +"correct training for AI models. It can also store and ensure the " +"availability of an AI model output." +msgstr "" +"**与AI相关的用例:** Walrus可以存储干净的训练数据集、具有已知和验证来源的数据" +"集、模型权重和AI模型的正确训练证明。或者它可以用于存储和确保AI模型输出的可用" +"性和真实性。" + +#: docs/design/objectives_use_cases.md:64 +msgid "" +"**Storage of long term archival of blockchain history:** Walrus can act as a " +"lower-cost decentralized store to store blockchain history. For Sui, this " +"can include sequences of checkpoints with all associated transaction and " +"effects content, as well as historic snapshots of the blockchain state, " +"code, or binaries." +msgstr "" +"**区块链历史的长期存档存储:** Walrus可以用作低成本的去中心化存储来存储区块链" +"历史。对于Sui,这可以包括所有相关交易和效果内容的检查点序列,以及区块链状态、" +"代码或二进制文件的历史快照。" + +#: docs/design/objectives_use_cases.md:69 +msgid "" +"**Support availability for L2s:** Walrus allows parties to certify the " +"availability of blobs, as required by L2s that need data to be stored and be " +"attested as available to all. This may also include availability of extra " +"audit data such as validity proofs, zero knowledge proofs of correct " +"execution or large fraud proofs." +msgstr "" +"**支持L2的可用性:** Walrus使各方能够认证blob的可用性,这是L2需要的数据存储和" +"认证为所有人可用的要求。这还可能包括额外审计数据的可用性,如有效性证明、正确" +"执行的零知识证明或大规模欺诈证明。" + +#: docs/design/objectives_use_cases.md:74 +msgid "" +"**Support a fully decentralized web experience:** Walrus can host fully " +"decentralized web experiences, including all resources (such as js, css, " +"html, media). These can not only provide content, but also host the UX of " +"dApps to enable applications with fully decentralized front end and back " +"ends on chain. Walrus puts the full \"web\" into web3." +msgstr "" +"**支持完整的去中心化网络体验:** Walrus可以托管完整的去中心化网络体验,包括所" +"有资源(如js、css、html和媒体)。这些可以提供内容,但也可以托管dapps的用户体" +"验,使链上完全去中心化的前端和后端成为可能。它将完整的“web”带回“web3”。" + +#: docs/design/objectives_use_cases.md:79 +msgid "" +"**Support subscription models for media:** Creators can store encrypted " +"media on Walrus and only provide access via decryption keys to parties that " +"have paid a subscription fee or have paid for content. Walrus provides the " +"storage, encryption and decryption needs to happen off the system." +msgstr "" +"**支持媒体的订阅模式:** 创作者可以在Walrus上存储加密媒体,并仅通过解密密钥向" +"支付订阅费或支付内容的各方提供访问权限。(请注意,Walrus提供存储;加密和解密" +"必须在Walrus之外完成)。" + +#: docs/design/overview.md:3 +msgid "System overview" +msgstr "概述" + +#: docs/design/overview.md:5 +msgid "" +"This chapter provides an overview of the [architecture](./architecture.md) " +"and [encoding mechanisms](./encoding.md) of the Walrus system." +msgstr "" +"本章概述了Walrus系统的[架构](./architecture.md)和[编码机制](./encoding.md)。" + +#: docs/design/overview.md:8 +msgid "" +"Use the [glossary](../glossary.md) as a reference for many of the bolded " +"terms used in this documentation." +msgstr "使用[术语表](../glossary.md)作为本文件中许多加粗术语的参考。" + +#: docs/design/architecture.md:3 +msgid "Basic architecture and security assumptions" +msgstr "基本架构和安全假设" + +#: docs/design/architecture.md:5 +msgid "The key actors in the Walrus architecture are the following:" +msgstr "Walrus架构中的关键角色如下:" + +#: docs/design/architecture.md:7 +msgid "" +"**Users** through **clients** want to store and read **blobs** identified by " +"their **blob ID**." +msgstr "**用户**通过**客户端**希望存储和读取由**blob ID**标识的**blob**。" + +#: docs/design/architecture.md:9 +msgid "" +"These actors are ready to pay for service when it comes to writes and non-" +"best-effort reads. Users also want to prove the **availability** of a blob " +"to third parties without the cost of sending or receiving the full blob." +msgstr "" +"这些角色在写入和非尽力而为的读取时准备支付服务费用。用户还希望向第三方证明" +"blob的**可用性**,而无需发送或接收完整的blob。" + +#: docs/design/architecture.md:14 +msgid "" +"Users might be malicious in various ways: they might not want to pay for " +"services, prove the availability of unavailable blobs, modify/delete blobs " +"without authorization, try to exhaust resources of storage nodes, and so on." +msgstr "" +"用户可能会以各种方式进行恶意操作:他们可能不想支付服务费用,证明不可用的blob" +"的可用性,未经授权修改/删除blob,试图耗尽存储节点的资源,等等。" + +#: docs/design/architecture.md:18 +msgid "" +"**Storage nodes** hold one or many **shards** within a **storage epoch**." +msgstr "**存储节点**在**存储纪元**内持有一个或多个**分片**。" + +#: docs/design/architecture.md:20 +msgid "" +"Each blob is erasure-encoded into many **slivers**. Slivers from each stored " +"blob become part of all shards. A shard at any storage epoch is associated " +"with a storage node that actually stores all slivers of the shard and is " +"ready to serve them." +msgstr "" +"每个blob都被擦除编码成多个**slivers**。每个存储的blob的slivers成为所有分片的一部" +"分。在任何存储纪元中的一个分片都与一个存储节点相关联,该节点实际存储该分片的" +"所有slivers并准备提供服务。" + +#: docs/design/architecture.md:24 +msgid "" +"A Sui smart contract controls the assignment of shards to storage nodes " +"within **storage epochs**, and Walrus assumes that more than 2/3 of the " +"shards are managed by correct storage nodes within each storage epoch. This " +"means that Walrus must tolerate up to 1/3 of the shards managed by Byzantine " +"storage nodes (approximately 1/3 of the storage nodes being Byzantine) " +"within each storage epoch and across storage epochs." +msgstr "" +"Sui智能合约控制在**存储纪元**内将分片分配给存储节点,Walrus假设每个存储纪元内" +"超过2/3的分片由正确的存储节点管理。这意味着Walrus必须容忍多达1/3的分片由拜占" +"庭存储节点管理(大约1/3的存储节点是拜占庭节点),在每个存储纪元内和跨存储纪" +"元。" + +#: docs/design/architecture.md:30 +msgid "" +"All clients and storage nodes operate a blockchain client (specifically on " +"Sui), and mediate payments, resources (space), mapping of shards to storage " +"nodes, and metadata through blockchain smart contracts. Users interact with " +"the blockchain to acquire storage resources and upload certificates for " +"stored blobs. Storage nodes listen to the blockchain events to coordinate " +"their operations." +msgstr "" +"所有客户端和存储节点都运行一个区块链客户端(特别是在Sui上),并通过区块链智能" +"合约调解支付、资源(空间)、分片到存储节点的映射和元数据。用户与区块链交互以" +"获取存储资源并上传存储的blob的证书。存储节点监听区块链事件以协调其操作。" + +#: docs/design/architecture.md:36 +msgid "" +"Walrus supports any additional number of optional infrastructure actors that " +"can operate in a permissionless way:" +msgstr "" +"Walrus支持任何数量的可选基础设施角色,这些角色可以在无需许可的情况下操作:" + +#: docs/design/architecture.md:39 +msgid "" +"**Aggregators** are clients that reconstruct blobs from slivers and make " +"them available to users over traditional web2 technologies (such as HTTP). " +"They are optional in that end users may reconstruct blobs directly or run a " +"local aggregator to perform Walrus reads over web2 technologies locally." +msgstr "" +"**聚合器**是从slivers重建blob并通过传统的web2技术(如HTTP)将其提供给用户的客户" +"端。它们是可选的,因为最终用户可以直接重建blob或运行本地聚合器以通过本地的" +"web2技术执行Walrus读取。" + +#: docs/design/architecture.md:44 +msgid "" +"**Caches** are aggregators with additional caching functionality to decrease " +"latency and reduce load on storage nodes. Such cache infrastructures may " +"also act as CDNs, split the cost of blob reconstruction over many requests, " +"be better connected, and so on. A client can always verify that reads from " +"such infrastructures are correct." +msgstr "" +"**缓存**是具有额外缓存功能的聚合器,以减少延迟和减轻存储节点的负载。这种缓存" +"基础设施还可以充当CDN,分摊多个请求的blob重建成本,连接更好,等等。客户端始终" +"可以验证从这些基础设施读取的数据是否正确。" + +#: docs/design/architecture.md:49 +msgid "" +"**Publishers** are clients that help end users store a blob using web2 " +"technologies, using less bandwidth and custom logic." +msgstr "" +"**发布器**是使用web2技术帮助最终用户存储blob的客户端,使用更少的带宽和自定义" +"逻辑。" + +#: docs/design/architecture.md:52 +msgid "" +"In effect, they receive the blob to be published over traditional web2 " +"protocols (like HTTP) and run the Walrus store protocol on the end user's " +"behalf. This includes encoding the blob into slivers, distributing the " +"slivers to storage nodes, collecting storage-node signatures and aggregating " +"them into a certificate, as well as all other on-chain actions." +msgstr "" +"实际上,他们通过传统的web2协议(如HTTP)接收要发布的blob,并代表最终用户运行" +"Walrus存储协议。这包括将blob编码成slivers,将slivers分发到存储节点,收集存储节点签" +"名并将其聚合成证书,以及所有其他链上操作。" + +#: docs/design/architecture.md:57 +msgid "" +"They are optional in that a user can directly interact with Sui and the " +"storage nodes to store blobs. An end user can always verify that a publisher " +"performed their duties correctly by checking that an event associated with " +"the **[point of availability](./properties.md)** for the blob exists on " +"chain and then either performing a read to see if Walrus returns the blob or " +"encoding the blob and comparing the result to the blob ID in the certificate." +msgstr "" +"它们是可选的,因为用户可以直接与Sui和存储节点交互以存储blob。最终用户始终可以" +"通过检查链上与blob的**[可用性点](./properties.md)**相关的事件来验证发布器是否" +"正确履行了职责,然后执行读取以查看Walrus是否返回blob,或对blob进行编码并将结" +"果与证书中的blob ID进行比较。" + +#: docs/design/architecture.md:64 +msgid "" +"Aggregators, publishers, and end users are not considered trusted components " +"of the system, and they might deviate from the protocol arbitrarily. " +"However, some of the security properties of Walrus only hold for honest end " +"users that use honest intermediaries (caches and publishers). Walrus " +"provides a means for end users to audit the correct operation of both caches " +"and publishers." +msgstr "" +"聚合器、发布器和最终用户不被视为系统的可信组件,它们可能会任意偏离协议。然" +"而,Walrus的一些安全属性仅适用于使用诚实中介(缓存和发布器)的诚实最终用户。" +"Walrus为最终用户提供了一种审计缓存和发布器正确操作的方法。" + +#: docs/design/encoding.md:3 +msgid "Encoding, overheads, and verification" +msgstr "编码、开销和验证" + +#: docs/design/encoding.md:5 +msgid "" +"The following list summarizes the basic encoding and cryptographic " +"techniques used in Walrus:" +msgstr "以下列表总结了Walrus中使用的基本编码和加密技术:" + +#: docs/design/encoding.md:7 +msgid "" +"An [erasure code](https://en.wikipedia.org/wiki/Erasure_code) encode " +"algorithm takes a blob, splits it into a number k " +"of symbols, and encodes it into n\\>k symbols in such a way that a subset of these n symbols can be used " +"to reconstruct the blob." +msgstr "" +"一个[擦除编码](https://en.wikipedia.org/wiki/Erasure_code)编码算法将一个blob" +"分成若干个k符号,并将其编" +"码成n\\>k符号,以便这些n符号的一个子集可以用来重建blob。" + +#: docs/design/encoding.md:11 +msgid "" +"Walrus uses a highly efficient erasure code and selects k such that a third of symbols can be used to reconstruct the " +"blob by the decode algorithm." +msgstr "" +"Walrus使用高效的擦除编码,并选择k,使得解码算法" +"可以使用三分之一的符号来重建blob。" + +#: docs/design/encoding.md:14 +msgid "" +"The encoding is _systematic_, meaning that some storage nodes hold part of " +"the original blob, allowing for fast random-access reads." +msgstr "" +"编码是_系统化_的,这意味着一些存储节点持有原始blob的一部分,从而允许快速随机" +"访问读取。" + +#: docs/design/encoding.md:17 +msgid "" +"All encoding and decoding operations are deterministic, and encoders have no " +"discretion about it." +msgstr "所有编码和解码操作都是确定性的,编码器对此没有自由裁量权。" + +#: docs/design/encoding.md:19 +msgid "" +"For each blob, multiple symbols are combined into a **sliver**, which is " +"then assigned to a shard." +msgstr "对于每个blob,多个符号被组合成一个**slivers**,然后分配给一个分片。" + +#: docs/design/encoding.md:21 +msgid "" +"Storage nodes manage one or more shards, and corresponding slivers of each " +"blob are distributed to all the storage shards." +msgstr "存储节点管理一个或多个分片,每个blob的相应slivers分布到所有存储分片。" + +#: docs/design/encoding.md:24 +msgid "" +"The detailed encoding setup results in an expansion of the blob size by a " +"factor of 4.55. This is independent of the number of shards and the number of " +"storage nodes." +msgstr "" +"详细的编码设置导致blob大小扩展了4.55倍。这与分片数量和存储节点数量无关。" + +#: docs/design/encoding.md:29 +msgid "" +"Each blob is also associated with some metadata including a **blob ID** to " +"allow verification:" +msgstr "每个blob还与一些元数据相关联,包括一个**blob ID**以允许验证:" + +#: docs/design/encoding.md:31 +msgid "" +"The blob ID is computed as an authenticator of the set of all shard data and " +"metadata (byte size, encoding, blob hash)." +msgstr "" +"blob ID被计算为所有分片数据和元数据(字节大小、编码、blob哈希)集合的认证器。" + +#: docs/design/encoding.md:34 +msgid "" +"Walrus hashes a sliver representation in each of the shards and adds the " +"resulting hashes into a Merkle tree. Then the root of the Merkle tree is the " +"blob hash used to derive the blob ID that identifies the blob in the system." +msgstr "" +"Walrus对每个分片中的slivers表示进行哈希处理,并将生成的哈希添加到Merkle树中。然" +"后,Merkle树的根是用于派生系统中标识blob的blob哈希。" + +#: docs/design/encoding.md:38 +msgid "" +"Each storage node can use the blob ID to check if some shard data belongs to " +"a blob using the authenticated structure corresponding to the blob hash " +"(Merkle tree). A successful check means that the data is indeed as intended " +"by the writer of the blob." +msgstr "" +"每个存储节点可以使用blob ID检查某些分片数据是否属于一个blob,使用与blob哈希" +"(Merkle树)对应的认证结构。成功的检查意味着数据确实是由blob的编写者所预期" +"的。" + +#: docs/design/encoding.md:42 +msgid "" +"As the writer of a blob might have incorrectly encoded a blob (by mistake or " +"on purpose), any party that reconstructs a blob ID from shard slivers must " +"check that it encodes to the correct blob ID. The same is necessary when " +"accepting any blob claiming to be a specific blob ID." +msgstr "" +"由于blob的编写者可能错误地编码了一个blob(无论是错误还是故意),任何从分片切" +"片重建blob ID的方都必须检查它是否编码为正确的blob ID。在接受任何声称是特定" +"blob ID的blob时也是如此。" + +#: docs/design/encoding.md:46 +msgid "" +"This process involves re-encoding the blob using the erasure code, and " +"deriving the blob ID again to check that the blob matches. This prevents a " +"malformed blob (incorrectly erasure coded) from ever being read as a valid " +"blob at any correct recipient." +msgstr "" +"此过程涉及使用擦除编码重新编码blob,并再次派生blob ID以检查blob是否匹配。这防" +"止了格式错误的blob(错误擦除编码)在任何正确的接收者处被读取为有效的blob。" + +#: docs/design/encoding.md:50 +msgid "" +"A set of slivers equal to the reconstruction threshold belonging to a blob " +"ID that are either inconsistent or lead to the reconstruction of a different " +"ID represent an incorrect encoding. This happens only if the user that " +"encoded the blob was faulty or malicious and encoded it incorrectly." +msgstr "" +"一组等于重建阈值的slivers属于一个blob ID,这些slivers要么不一致,要么导致重建不同的" +"ID,代表了不正确的编码。这只有在编码blob的用户有故障或恶意并且错误编码时才会" +"发生。" + +#: docs/design/encoding.md:54 +msgid "" +"Walrus can extract one symbol per sliver to form an inconsistency proof. " +"Storage nodes can delete slivers belonging to inconsistently encoded blobs, " +"and upon request return either the inconsistency proof or an inconsistency " +"certificate posted on chain." +msgstr "" +"Walrus可以从每个slivers中提取一个符号以形成不一致证明。存储节点可以删除属于不一" +"致编码blob的slivers,并在请求时返回不一致证明或链上发布的不一致证书。" + +#: docs/design/operations.md:5 +msgid "" +"Walrus operations can be separated in [interactions with the Sui chain](./" +"operations-sui.md), which is used by Walrus for coordination and governance, " +"and [off-chain interactions](./operations-off-chain.md) between clients and " +"storage nodes." +msgstr "" +"Walrus操作可以分为[与Sui链的交互](./operations-sui.md),Walrus用于协调和治" +"理,以及客户端和存储节点之间的[链下交互](./operations-off-chain.md)。" + +#: docs/design/operations-sui.md:3 +msgid "Operations on Sui" +msgstr "在Sui上的操作" + +#: docs/design/operations-sui.md:5 +msgid "" +"Walrus uses Sui smart contracts to coordinate storage operations as " +"resources that have a lifetime, and payments. Smart contracts also " +"facilitate governance to determine the storage nodes holding each storage " +"shard. The following content outlines these operations and refers to them as " +"part of the read/write paths." +msgstr "" +"Walrus使用Sui智能合约来协调作为具有生命周期的资源的存储操作和支付。智能合约还" +"促进治理,以确定持有每个存储分片的存储节点。以下内容概述了这些操作,并将其作" +"为读/写路径的一部分。" + +#: docs/design/operations-sui.md:10 +msgid "" +"Metadata is the only blob element ever exposed to Sui or its validators, as " +"the content of blobs is always stored off chain on Walrus storage nodes and " +"caches. The storage nodes or caches do not have to overlap with any Sui " +"infrastructure components (such as validators), and the storage epochs can " +"be of different lengths and not have the same start/end times as Sui epochs." +msgstr "" +"元数据是唯一暴露给Sui或其验证者的blob元素,因为blob的内容始终存储在Walrus存储" +"节点和缓存的链下。存储节点或缓存不必与任何Sui基础设施组件(如验证者)重叠,并" +"且存储纪元可以有不同的长度,并且与Sui纪元的开始/结束时间不同。" + +#: docs/design/operations-sui.md:15 +msgid "Storage resource life cycle on Sui" +msgstr "在Sui上的存储资源生命周期" + +#: docs/design/operations-sui.md:17 +msgid "" +"A number of Sui smart contracts hold the metadata of the Walrus system and " +"all its entities." +msgstr "一些Sui智能合约持有Walrus系统及其所有实体的元数据。" + +#: docs/design/operations-sui.md:19 +msgid "" +"A **Walrus system object** holds the committee of storage nodes for the " +"current storage epoch. The system object also holds the total available " +"space on Walrus and the price per unit of storage (1 KiB)." +msgstr "" +"**Walrus系统对象**持有当前存储纪元的存储节点委员会。系统对象还持有Walrus上的" +"总可用空间和每单位存储(1 KiB)的价格。" + +#: docs/design/operations-sui.md:23 +msgid "" +"These values are determined by 2/3 agreement between the storage nodes for " +"the storage epoch. Users can pay to purchase storage space for some time " +"duration. These space resources can be split, merged, and transferred. " +"Later, they can be used to place a blob ID into Walrus." +msgstr "" +"这些值由存储纪元的存储节点之间的2/3协议决定。用户可以支付购买一段时间的存储空" +"间。这些空间资源可以拆分、合并和转移。之后,它们可以用于将一个blob ID放入" +"Walrus。" + +#: docs/design/operations-sui.md:27 +msgid "" +"The **storage fund** holds funds for storing blobs over one or multiple " +"storage epochs. When purchasing storage space from the system object, users " +"pay into the storage fund separated over multiple storage epochs. Payments " +"are made each epoch to storage nodes according to performance (details " +"follow)." +msgstr "" +"**存储基金**持有用于在一个或多个存储纪元中存储blob的资金。当从系统对象购买存" +"储空间时,用户支付到分布在多个存储纪元的存储基金中。每个纪元根据性能向存储节" +"点支付(详细信息如下)。" + +#: docs/design/operations-sui.md:32 +msgid "" +"A user acquires some storage through the contracts or transfer and can " +"assign to it a blob ID, signifying they want to store this blob ID into it. " +"This emits a Move **resource event** that storage nodes listen for to expect " +"and authorize off-chain storage operations." +msgstr "" +"用户通过合约或转移获得一些存储,并可以分配一个blob ID,表示他们想将这个blob " +"ID存储到其中。这会发出一个Move **资源事件**,存储节点会监听该事件以期望和授权" +"链下存储操作。" + +#: docs/design/operations-sui.md:36 +msgid "" +"Eventually a user holds an off-chain **availability certificate** from " +"storage nodes for a blob ID. The user **uploads the certificate on chain** " +"to signal that the blob ID is available for an availability period. The " +"certificate is checked against the latest Walrus committee, and an " +"**availability event** is emitted for the blob ID if correct. This is the " +"point of availability for the blob." +msgstr "" +"最终,用户持有来自存储节点的一个blob ID的链下**可用性证书**。用户**将证书上传" +"到链上**,以表示该blob ID在一个可用期内是可用的。证书会与最新的Walrus委员会进" +"行核对,如果正确,则会为该blob ID发出一个**可用性事件**。这是该blob的可用性" +"点。" + +#: docs/design/operations-sui.md:42 +msgid "" +"At a later time, a certified blob's storage can be **extended** by adding a " +"storage object to it with a longer expiry period. This facility can be used " +"by smart contracts to extend the availability of blobs stored in perpetuity " +"as long as funds exist to continue providing storage." +msgstr "" +"在稍后的时间,通过添加一个具有更长到期时间的存储对象,可以**扩展**已认证的" +"blob的存储。只要有资金继续提供存储,智能合约就可以使用此功能来延长永久存储的" +"blob的可用性。" + +#: docs/design/operations-sui.md:46 +msgid "" +"In case a blob ID is not correctly encoded, an **inconsistency proof " +"certificate** can be uploaded on chain at a later time. This action emits an " +"**inconsistent blob event**, signaling that the blob ID read results always " +"return `None`. This indicates that its slivers can be deleted by storage " +"nodes, except for an indicator to return `None`." +msgstr "" +"如果一个blob ID没有正确编码,可以在稍后时间将一个**不一致证明证书**上传到链" +"上。此操作会发出一个**不一致的blob事件**,表示该blob ID的读取结果总是返回" +"`None`。这表明其slivers可以被存储节点删除,除了一个返回`None`的指示器。" + +#: docs/design/operations-sui.md:51 +msgid "" +"Users writing to Walrus, need to perform Sui transactions to acquire storage " +"and certify blobs. Users creating or consuming proofs for attestations of " +"blob availability read the chain only to prove or verify emission of events. " +"Nodes read the blockchain to get committee metadata only once per epoch, and " +"then request slivers directly from storage nodes by blob ID to perform reads " +"on Walrus resources." +msgstr "" +"向Walrus写入数据的用户需要执行Sui交易以获取存储并认证blob。创建或使用blob可用" +"性证明的用户仅读取链以证明或验证事件的发出。节点每个纪元只读取一次区块链以获" +"取委员会元数据,然后通过blob ID直接从存储节点请求slivers以读取Walrus资源。" + +#: docs/design/operations-sui.md:57 +msgid "Governance operations on Sui" +msgstr "在Sui上的治理操作" + +#: docs/design/operations-sui.md:59 +msgid "" +"Each Walrus storage epoch is represented by the Walrus system object that " +"contains a storage committee and various metadata or storage nodes, like the " +"mapping between shards and storage nodes, available space, and current costs." +msgstr "" +"每个Walrus存储纪元由Walrus系统对象表示,该对象包含一个存储委员会和各种元数据" +"或存储节点,如分片和存储节点之间的映射、可用空间和当前成本。" + +#: docs/design/operations-sui.md:63 +msgid "" +"Users can go to the system object for the period and **buy some storage** " +"amount for one or more storage epochs. At each storage epoch there is a " +"price for storage, and the payment provided becomes part of a **storage " +"fund** for all the storage epochs that span the storage bought. There is a " +"maximum number of storage epochs in the future for which storage can be " +"bought (approximately 2 years). Storage is a resource that can be split, " +"merged, and transferred." +msgstr "" +"用户可以在该期间访问系统对象并**购买一些存储**量用于一个或多个存储纪元。在每" +"个存储纪元都有一个存储价格,所提供的支付成为跨越所购买存储的所有存储纪元的**" +"存储基金**的一部分。未来可以购买存储的最大存储纪元数(大约2年)。存储是一种可" +"以拆分、合并和转移的资源。" + +#: docs/design/operations-sui.md:69 +msgid "" +"At the end of the storage epoch, part of the funds in the **storage fund " +"need to be allocated to storage nodes**. The idea here is for storage nodes " +"to perform light audits of each other, and suggest which nodes are to be " +"paid based on the performance of these audits." +msgstr "" +"在存储纪元结束时,**存储基金**中的部分资金需要分配给存储节点。这里的想法是存" +"储节点相互进行轻度审计,并根据这些审计的表现建议哪些节点应获得支付。" + +#: docs/design/operations-off-chain.md:5 +msgid "" +"While Walrus operations happen off Sui, they might interact with the " +"blockchain flows defining the resource life cycle." +msgstr "" +"虽然 Walrus 操作发生在 Sui 之外,但它们可能会与定义资源生命周期的区块链流程交" +"互。" + +#: docs/design/operations-off-chain.md:8 +msgid "Write paths" +msgstr "写入路径" + +#: docs/design/operations-off-chain.md:10 +msgid "![Write paths of Walrus](../assets/WriteFlow.png)" +msgstr "![Walrus 的写入路径](../assets/WriteFlow.png)" + +#: docs/design/operations-off-chain.md:12 +msgid "Systems overview of writes, illustrated in the previous image:" +msgstr "写入的系统概述,如上图所示:" + +#: docs/design/operations-off-chain.md:14 +msgid "" +"A user acquires a storage resource of appropriate size and duration on " +"chain, either by directly buying it on the Walrus system object or a " +"secondary market. A user can split, merge, and transfer owned storage " +"resources." +msgstr "" +"用户在链上获取适当大小和持续时间的存储资源,可以通过直接在 Walrus 系统对象上" +"购买或在二级市场购买。用户可以拆分、合并和转移拥有的存储资源。" + +#: docs/design/operations-off-chain.md:18 +msgid "" +"When users want to store a blob, they first erasure code it and compute the " +"blob ID. Then they can perform the following steps themselves, or use a " +"publisher to perform steps on their behalf." +msgstr "" +"当用户想要存储一个 blob 时,他们首先对其进行纠删编码并计算 blob ID。然后他们" +"可以自己执行以下步骤,或者使用发布器代为执行这些步骤。" + +#: docs/design/operations-off-chain.md:22 +msgid "" +"The user goes on chain (Sui) and updates a storage resource to register the " +"blob ID with the desired size and lifetime. This emits an event, received by " +"storage nodes. After the user receives they then continue the upload." +msgstr "" +"用户在链上(Sui)更新存储资源以注册具有所需大小和生命周期的 blob ID。这会发出" +"一个事件,由存储节点接收。用户接收后继续上传。" + +#: docs/design/operations-off-chain.md:26 +msgid "" +"The user sends the blob metadata to all storage nodes and each of the blob " +"slivers to the storage node that currently manages the corresponding shard." +msgstr "" +"用户将 blob 元数据发送到所有存储节点,并将每个 blob slivers发送到当前管理相应分" +"片的存储节点。" + +#: docs/design/operations-off-chain.md:29 +msgid "" +"A storage node managing a shard receives a sliver and checks it against the " +"blob ID. It also checks that there is a blob resource with the blob ID that " +"is authorized to store a blob. If correct, the storage node then signs a " +"statement that it holds the sliver for blob ID (and metadata) and returns it " +"to the user." +msgstr "" +"管理分片的存储节点接收一个slivers并根据 blob ID 进行检查。它还检查是否存在具有 " +"blob ID 的 blob 资源,该资源被授权存储 blob。如果正确,存储节点会签署一份声" +"明,表明它持有 blob ID(和元数据)的slivers,并将其返回给用户。" + +#: docs/design/operations-off-chain.md:34 +msgid "" +"The user puts together the signatures returned from storage nodes into an " +"availability certificate and submits it to the chain. When the certificate " +"is verified on chain, an availability event for the blob ID is emitted, and " +"all other storage nodes seek to download any missing shards for the blob ID. " +"This event emitted by Sui is the [point of availability (PoA)](./properties." +"md) for the blob ID." +msgstr "" +"用户将存储节点返回的签名汇总成一个可用性证书并提交到链上。当证书在链上验证" +"后,会发出一个 blob ID 的可用性事件,所有其他存储节点会尝试下载 blob ID 的任" +"何缺失分片。由 Sui 发出的此事件是 blob ID 的 [ 可用性点 (PoA) ](./properties." +"md)。" + +#: docs/design/operations-off-chain.md:40 +msgid "" +"After the PoA, and without user involvement, storage nodes sync and recover " +"any missing metadata and slivers." +msgstr "" +"在 PoA 之后,无需用户参与,存储节点会同步并恢复任何缺失的元数据和slivers。" + +#: docs/design/operations-off-chain.md:43 +msgid "" +"The user waits for 2/3 of shard signatures to return to create the " +"certificate of availability. The rate of the code is below 1/3, allowing for " +"reconstruction even if only 1/3 of shards return the sliver for a read. " +"Because at most 1/3 of the storage nodes can fail, this ensures " +"reconstruction if a reader requests slivers from all storage nodes. The full " +"process can be mediated by a publisher that receives a blob and drives the " +"process to completion." +msgstr "" +"用户等待 2/3 的分片签名返回以创建可用性证书。代码的速率低于 1/3,即使只有 " +"1/3 的分片返回slivers进行读取,也允许重建。因为最多 1/3 的存储节点可能会失败,这" +"确保了如果读取者从所有存储节点请求slivers时的重建。整个过程可以由接收 blob 并推" +"动过程完成的发布器进行调解。" + +#: docs/design/operations-off-chain.md:49 +msgid "Refresh availability" +msgstr "刷新可用性" + +#: docs/design/operations-off-chain.md:51 +msgid "" +"Because no content data is required to refresh the duration of storage, " +"refresh is conducted fully on chain within the protocol. To request an " +"extension to the availability of a blob, a user provides an appropriate " +"storage resource. Upon success this emits an event that storage nodes " +"receive to extend the time for which each sliver is stored." +msgstr "" +"因为刷新存储持续时间不需要内容数据,刷新完全在协议内的链上进行。要请求延长 " +"blob 的可用性,用户提供适当的存储资源。成功后,这会发出一个事件,存储节点接收" +"该事件以延长每个slivers的存储时间。" + +#: docs/design/operations-off-chain.md:56 +msgid "Inconsistent resource flow" +msgstr "不一致的资源流" + +#: docs/design/operations-off-chain.md:58 +msgid "" +"When a correct storage node tries to reconstruct a sliver for a blob past " +"[PoA](./properties.md), this may fail if the encoding of the blob was " +"incorrect. In this case, the storage node can instead extract an " +"inconsistency proof for the blob ID. It then uses the proof to create an " +"inconsistency certificate and upload it on chain." +msgstr "" +"当一个正确的存储节点尝试重建一个超过 [ PoA ](./properties.md) 的 blob 的slivers" +"时,如果 blob 的编码不正确,这可能会失败。在这种情况下,存储节点可以提取 " +"blob ID 的不一致证明。然后它使用该证明创建一个不一致证书并将其上传到链上。" + +#: docs/design/operations-off-chain.md:63 +msgid "The flow is as follows:" +msgstr "流程如下:" + +#: docs/design/operations-off-chain.md:65 +msgid "" +"A storage node fails to reconstruct a sliver, and instead computes an " +"inconsistency proof." +msgstr "存储节点未能重建slivers,而是计算出不一致证明。" + +#: docs/design/operations-off-chain.md:67 +msgid "" +"The storage node sends the blob ID and inconsistency proof to all storage " +"nodes of the Walrus epoch. The storage nodes verify the proof and sign it." +msgstr "" +"存储节点将 blob ID 和不一致证明发送给 Walrus 纪元的所有存储节点。存储节点验证" +"证明并签署。" + +#: docs/design/operations-off-chain.md:70 +msgid "" +"The storage node who found the inconsistency aggregates the signatures into " +"an inconsistency certificate and sends it to the Walrus smart contract, " +"which verifies it and emits a inconsistent resource event." +msgstr "" +"发现不一致的存储节点将签名汇总成一个不一致证书并将其发送到 Walrus 智能合约," +"智能合约验证并发出不一致资源事件。" + +#: docs/design/operations-off-chain.md:74 +msgid "" +"Upon receiving an inconsistent resource event, correct storage nodes delete " +"sliver data for the blob ID and record in the metadata to return `None` for " +"the blob ID for the [availability period](./properties.md). No storage " +"attestation challenges are issued for this blob ID." +msgstr "" +"在收到不一致资源事件后,正确的存储节点删除 blob ID 的slivers数据,并在元数据中记" +"录在 [ 可用性期间 ](./properties.md) 返回 `None`。不会为此 blob ID 发出存储认" +"证挑战。" + +#: docs/design/operations-off-chain.md:79 +msgid "" +"```admonish tip title=\"Reading inconsistent blobs\"\n" +"A blob ID that is inconsistent always resolves to `None` upon reading " +"because\n" +"the read process re-encodes the received blob to check that the blob ID is " +"correctly derived from a\n" +"consistent encoding. This means that an inconsistency proof reveals only a " +"true fact to storage\n" +"nodes (that do not otherwise run decoding), and does not change the output " +"of read in any case.\n" +"\n" +"However, partial reads leveraging the systematic nature of the encoding " +"might successfully return\n" +"partial reads for inconsistently encoded files. Thus, if consistency and " +"availability of reads is\n" +"important, dApps should do full reads rather than partial reads.\n" +"```" +msgstr "" +"```admonish tip title=\"读取不一致的 blobs\"\n" +"一个不一致的 blob ID 在读取时总是解析为 `None`,因为\n" +"读取过程会重新编码接收到的 blob 以检查 blob ID 是否正确地从\n" +"一致的编码中派生。这意味着不一致证明只向存储节点揭示了一个真实的事实\n" +"(否则不会运行解码),并且不会在任何情况下改变读取的输出。\n" +"\n" +"然而,利用编码系统性质的部分读取可能会成功返回\n" +"不一致编码文件的部分读取。因此,如果读取的一致性和可用性很重要,dApps 应该进" +"行完整读取而不是部分读取。\n" +"```" + +#: docs/design/operations-off-chain.md:90 +msgid "Read paths" +msgstr "读取路径" + +#: docs/design/operations-off-chain.md:92 +msgid "" +"A user can read stored blobs either directly or through an aggregator/cache. " +"The operations are the same for direct user access, for aggregators, and " +"caches in case of cache misses. In practice, most reads happen through " +"caches for blobs that are hot and do not result in requests to storage nodes." +msgstr "" +"用户可以直接或通过聚合器/缓存读取存储的 blobs。对于直接用户访问、聚合器和缓存" +"(在缓存未命中的情况下),操作是相同的。实际上,大多数读取通过缓存发生在热门 " +"blobs 上,并且不会导致对存储节点的请求。" + +#: docs/design/operations-off-chain.md:96 +msgid "" +"The reader gets the metadata for the blob ID from any storage node, and " +"authenticates it using the blob ID." +msgstr "" +"读取者从任何存储节点获取 blob ID 的元数据,并使用 blob ID 进行身份验证。" + +#: docs/design/operations-off-chain.md:99 +msgid "" +"The reader then sends a request to the storage nodes for the shards " +"corresponding to the blob ID and waits for f+1 to respond. Sufficient requests are sent in parallel to ensure " +"low latency for reads." +msgstr "" +"然后,读取者向存储节点发送请求以获取与 blob ID 对应的分片,并等待 f+1 的响应。并行发送足够的请求以确保读取的低延迟。" + +#: docs/design/operations-off-chain.md:103 +msgid "" +"The reader authenticates the slivers returned with the blob ID, reconstructs " +"the blob, and decides whether the contents are a valid blob or inconsistent." +msgstr "" +"读取者使用 blob ID 验证返回的slivers,重建 blob,并决定内容是有效的 blob 还是不" +"一致的。" + +#: docs/design/operations-off-chain.md:106 +msgid "" +"Optionally, for a cache, the result is cached and can be served without " +"reconstruction until it is evicted from the cache. Requests for the blob to " +"the cache return the blob contents, or a proof that the blob is " +"inconsistently encoded." +msgstr "" +"可选地,对于缓存,结果被缓存并且可以在不重建的情况下提供,直到它被从缓存中驱" +"逐。对缓存的 blob 请求返回 blob 内容,或证明 blob 是不一致编码的。" + +#: docs/design/operations-off-chain.md:110 +msgid "Challenge mechanism for storage attestation" +msgstr "存储认证的挑战机制" + +#: docs/design/operations-off-chain.md:112 +msgid "" +"During an epoch, a correct storage node challenges all shards to provide " +"symbols for blob slivers past PoA:" +msgstr "" +"在一个纪元期间,正确的存储节点挑战所有分片以提供超过 PoA 的 blob slivers的符号:" + +#: docs/design/operations-off-chain.md:115 +msgid "" +"The list of available blobs for the epoch is determined by the sequence of " +"Sui events up to the past epoch. Inconsistent blobs are not challenged, and " +"a record proving this status can be returned instead." +msgstr "" +"该纪元的可用 blobs 列表由直到上一个纪元的 Sui 事件序列确定。不一致的 blobs 不" +"会被挑战,并且可以返回证明此状态的记录。" + +#: docs/design/operations-off-chain.md:119 +msgid "" +"A challenge sequence is determined by providing a seed to the challenged " +"shard. The sequence is then computed based both on the seed **and** the " +"content of each challenged blob ID. This creates a sequential read " +"dependency." +msgstr "" +"挑战序列是通过向被挑战的分片提供种子来确定的。然后基于种子 **和** 每个被挑战" +"的 blob ID 的内容计算序列。这创建了一个顺序读取依赖关系。" + +#: docs/design/operations-off-chain.md:123 +msgid "" +"The response to the challenge provides the sequence of shard contents for " +"the blob IDs in a timely manner." +msgstr "对挑战的响应及时提供 blob ID 的分片内容序列。" + +#: docs/design/operations-off-chain.md:126 +msgid "" +"The challenger node uses thresholds to determine whether the challenge was " +"passed, and reports the result on chain." +msgstr "挑战者节点使用阈值来确定挑战是否通过,并在链上报告结果。" + +#: docs/design/operations-off-chain.md:129 +msgid "The challenge/response communication is authenticated." +msgstr "挑战/响应通信是经过身份验证的。" + +#: docs/design/operations-off-chain.md:131 +msgid "" +"Challenges provide some reassurance that the storage node can actually " +"recover shard data in a probabilistic manner, avoiding storage nodes getting " +"payment without any evidence they might retrieve shard data. The sequential " +"nature of the challenge and some reasonable timeout also ensures that the " +"process is timely." +msgstr "" +"挑战提供了一些保证,即存储节点可以以概率方式实际恢复分片数据,避免存储节点在" +"没有任何证据表明它们可能检索分片数据的情况下获得支付。挑战的顺序性质和一些合" +"理的超时也确保了过程的及时性。" + +#: docs/design/properties.md:3 +msgid "Walrus assurance and security properties" +msgstr "基本架构和安全假设" + +#: docs/design/properties.md:5 +msgid "" +"The properties below hold true subject to the assumption that for all " +"storage epochs 2/3 of shards are operated by storage nodes that faithfully " +"and correctly follow the Walrus protocol." +msgstr "" +"以下属性在假设所有存储纪元中有 2/3 的分片由忠实且正确遵循 Walrus 协议的存储节" +"点操作的前提下成立。" + +#: docs/design/properties.md:8 +msgid "" +"As described [before](./encoding.md), each blob is encoded into slivers " +"using an erasure code and a blob ID is cryptographically derived. For a " +"given blob ID there is a **point of availability (PoA)** and an " +"**availability period**, observable through an event on the Sui chain." +msgstr "" +"如前所述,每个 blob 使用纠删码编码成小块,并且 blob ID 是通过加密方式派生的。" +"对于给定的 blob ID,有一个 **可用性点 (PoA)** 和一个 **可用性周期**,可以通" +"过 Sui 链上的事件观察到。" + +#: docs/design/properties.md:12 +msgid "The following properties relate to the PoA:" +msgstr "以下属性与 PoA 相关:" + +#: docs/design/properties.md:14 +msgid "" +"After the PoA, for a blob ID, any correct user that performs a read within " +"the availability period will eventually terminate and get a value V which is either the blob contents F " +"or `None`." +msgstr "" +"在 PoA 之后读取由正确用户存储的 blob F,将得到 F。" + +#: docs/design/properties.md:16 +msgid "" +"After the PoA, if two correct users perform a read and get V and V, respectively, then V=V." +msgstr "" +"在 PoA 之后,如果两个正确的用户执行读取并分别得到 VV,那么 V=V。" + +#: docs/design/properties.md:18 +msgid "" +"A correct user with an appropriate storage resource can always perform store " +"for a blob F with a blob " +"ID and advance the protocol until the PoA." +msgstr "" +"具有适当存储资源的正确用户始终可以为 blob F " +"执行存储,并使用 blob ID 推进协议直到 PoA。" + +#: docs/design/properties.md:20 +msgid "" +"A read after the PoA for a blob F stored by a " +"correct user, will result in F." +msgstr "" +"在 PoA 之后读取由正确用户存储的 blob F,将得到 F。" + +#: docs/design/properties.md:22 +msgid "" +"Some assurance properties ensure the correct internal processes of Walrus " +"storage nodes. For the purposes of defining these, an **inconsistency " +"proof** proves that a blob ID was stored by a user that incorrectly encoded " +"a blob." +msgstr "" +"一些保证属性确保 Walrus 存储节点的正确内部过程。为了定义这些属性, **不一致性" +"证明** 证明了一个 blob ID 是由错误编码 blob 的用户存储的。" + +#: docs/design/properties.md:26 +msgid "" +"After the PoA and for a blob ID stored by a correct user, a storage node is " +"always able to recover the correct slivers for its shards for this blob ID." +msgstr "" +"在 PoA 之后,对于由正确用户存储的 blob ID,存储节点始终能够恢复其分片的正确切" +"片。" + +#: docs/design/properties.md:28 +msgid "" +"After the PoA, if a correct storage node cannot recover a sliver, it can " +"produce an inconsistency proof for the blob ID." +msgstr "" +"在 PoA 之后,如果正确的存储节点无法恢复slivers,它可以为该 blob ID 生成不一致性" +"证明。" + +#: docs/design/properties.md:30 +msgid "" +"If a blob ID is stored by a correct user, an inconsistently proof cannot be " +"derived for it." +msgstr "如果一个 blob ID 是由正确用户存储的,则无法为其得出不一致性证明。" + +#: docs/design/properties.md:31 +msgid "" +"A read by a correct user for a blob ID for which an inconsistency proof may " +"exist returns `None`." +msgstr "正确用户对可能存在不一致性证明的 blob ID 的读取将返回 `None`。" + +#: docs/design/properties.md:33 +msgid "" +"Note that there is no delete operation and a blob ID past the PoA will be " +"available for the full availability period." +msgstr "请注意,没有删除操作,PoA 之后的 blob ID 将在整个可用期内可用。" + +#: docs/design/properties.md:36 +msgid "" +"```admonish tip title=\"Rule of thumb\"\n" +"Before the PoA it is the responsibility of a client to ensure the " +"availability of a blob and its\n" +"upload to Walrus. After the PoA it is the responsibility of Walrus as a " +"system to maintain the\n" +"availability of the blob as part of its operation for the full availability " +"period remaining.\n" +"Emission of the event corresponding to the PoA for a blob ID attests its " +"availability.\n" +"```" +msgstr "" +"```admonish tip title=\"经验法则\"\n" +"在 PoA 之前,确保 blob 的可用性及其上传到 Walrus 是客户端的责任。在 PoA 之" +"后,确保 blob 的可用性是 Walrus 作为系统的一部分操作的责任,并在剩余的整个可" +"用期内保持其可用性。\n" +"对应于 blob ID 的 PoA 事件的发出证明了其可用性。\n" +"```" + +#: docs/design/future.md:5 +msgid "In this document, we left out details of the following features:" +msgstr "在本文档中,我们省略了以下功能的详细信息:" + +#: docs/design/future.md:7 +msgid "" +"**Shard transfer and recovery upon storage epoch change:** The encoding " +"scheme used in Walrus has been designed to allow for highly efficient " +"recovery in case of shard failures. A storage node attempting to recover " +"slivers only needs to get data of the same magnitude as the missing data to " +"reconstruct them." +msgstr "" +"**存储纪元更改时的分片传输和恢复:** Walrus 使用的编码方案旨在允许在分片故障" +"的情况下进行高效恢复。尝试恢复slivers的存储节点只需获取与丢失数据相同数量级的数" +"据即可重建它们。" + +#: docs/design/future.md:11 +msgid "" +"**Details of light clients that can be used to sample availability:** " +"Individual clients may sample the certified blobs from Sui metadata and " +"sample the availability of some slivers that they store. On-chain bounties " +"may be used to retrieve these slivers for missing blobs." +msgstr "" +"**可用于采样可用性的轻客户端的详细信息:** 个人客户端可以从 Sui 元数据中采样" +"已认证的 blobs,并采样它们存储的某些slivers的可用性。链上赏金可用于检索这些丢失 " +"blob 的slivers。" + +#: docs/usage/setup.md:5 +msgid "" +"At this stage of the project, our Walrus code is not yet public. Instead, we " +"provide a pre-compiled `walrus` client binary for macOS (Intel and Apple " +"CPUs) and Ubuntu, which supports different usage patterns (see [the next " +"chapter](./interacting.md)). This chapter describes the [prerequisites]" +"(#prerequisites), [installation](#installation), and [configuration]" +"(#configuration) of the Walrus client." +msgstr "" +"在项目的这个阶段,我们的 Walrus 代码尚未公开。相反,我们提供了适用于 macOS" +"(Intel 和 Apple CPU)和 Ubuntu 的预编译 `walrus` 客户端二进制文件,支持不同" +"的使用模式(请参阅[下一章](./interacting.md))。本章介绍了 Walrus 客户端的[先" +"决条件](#prerequisites)、[安装](#installation)和[配置](#configuration)。" + +#: docs/usage/setup.md:11 +msgid "Prerequisites: Sui wallet and Testnet SUI" +msgstr "先决条件:Sui 钱包和测试网 SUI" + +#: docs/usage/setup.md:13 +msgid "" +"```admonish tip title=\"Quick wallet setup\"\n" +"If you just want to set up a new SUI wallet for Walrus, you can skip this " +"section and use the\n" +"`walrus generate-sui-wallet` command after [installing Walrus]" +"(#installation). In that case, make\n" +"sure to set the `wallet_config` parameter in the [Walrus\n" +"configuration](#advanced-configuration-optional) to the newly generated " +"wallet.\n" +"```" +msgstr "" +"```admonish tip title=\"快速钱包设置\"\n" +"如果您只想为 Walrus 设置一个新的 SUI 钱包,可以跳过本节并在[安装 Walrus]" +"(#installation)后使用\n" +"`walrus generate-sui-wallet` 命令。在这种情况下,请确保将 [Walrus 配置]" +"(#advanced-configuration-optional) 中的 `wallet_config` 参数设置为新生成的钱" +"包。\n" +"```" + +#: docs/usage/setup.md:20 +msgid "" +"Interacting with Walrus requires a valid Sui Testnet wallet with some amount " +"of SUI tokens. The normal way to set this up is via the Sui CLI; see the " +"[installation instructions](https://docs.sui.io/guides/developer/getting-" +"started/sui-install) in the Sui documentation." +msgstr "" +"与 Walrus 交互需要一个有效的 Sui 测试网钱包和一些 SUI 代币。设置此钱包的正常" +"方法是通过 Sui CLI;请参阅 Sui 文档中的[安装说明](https://docs.sui.io/guides/" +"developer/getting-started/sui-install)。" + +#: docs/usage/setup.md:25 +msgid "" +"After installing the Sui CLI, you need to set up a Testnet wallet by running " +"`sui client`, which prompts you to set up a new configuration. Make sure to " +"point it to Sui Testnet, you can use the full node at `https://fullnode." +"testnet.sui.io:443` for this. See [here](https://docs.sui.io/guides/" +"developer/getting-started/connect) for further details." +msgstr "" +"安装 Sui CLI 后,您需要通过运行 `sui client` 来设置测试网钱包,这会提示您设置" +"新配置。请确保将其指向 Sui 测试网,您可以使用 `https://fullnode.testnet.sui." +"io:443` 的全节点。有关更多详细信息,请参见[此处](https://docs.sui.io/guides/" +"developer/getting-started/connect)。" + +#: docs/usage/setup.md:30 +msgid "" +"If you already have a Sui wallet configured, you can directly set up the " +"Testnet environment (if you don't have it yet)," +msgstr "如果您已经配置了 Sui 钱包,可以直接设置测试网环境(如果您还没有)," + +#: docs/usage/setup.md:37 +msgid "and switch the active environment to it:" +msgstr "并将活动环境切换到它:" + +#: docs/usage/setup.md:43 +msgid "" +"After this, you should get something like this (everything besides the " +"`testnet` line is optional):" +msgstr "" +"之后,您应该会得到类似的内容(除了 `testnet` 行之外的所有内容都是可选的):" + +#: docs/usage/setup.md:45 +msgid "" +"```terminal\n" +"$ sui client envs\n" +"╭──────────┬─────────────────────────────────────┬────────╮\n" +"│ alias │ url │ active │\n" +"├──────────┼─────────────────────────────────────┼────────┤\n" +"│ devnet │ https://fullnode.devnet.sui.io:443 │ │\n" +"│ localnet │ http://127.0.0.1:9000 │ │\n" +"│ testnet │ https://fullnode.testnet.sui.io:443 │ * │\n" +"│ mainnet │ https://fullnode.mainnet.sui.io:443 │ │\n" +"╰──────────┴─────────────────────────────────────┴────────╯\n" +"```" +msgstr "" + +#: docs/usage/setup.md:57 +msgid "" +"Finally, make sure you have at least one gas coin with at least 1 SUI. You " +"can obtain one from the Testnet faucet:" +msgstr "" +"最后,确保您至少有一个至少包含 1 SUI 的 gas 代币。您可以从测试网水龙头获得一" +"个:" + +#: docs/usage/setup.md:64 +msgid "After some seconds, you should see your new SUI coins:" +msgstr "几秒钟后,您应该会看到您的新 SUI 代币:" + +#: docs/usage/setup.md:75 +msgid "" +"The system-wide wallet will be used by Walrus if no other path is specified. " +"If you want to use a different Sui wallet, you can specify this in the " +"[Walrus configuration file](#configuration) or when [running the CLI](./" +"interacting.md)." +msgstr "" +"如果没有指定其他路径,Walrus 将使用系统范围的钱包。如果您想使用不同的 Sui 钱" +"包,可以在 [Walrus 配置文件](#configuration) 中指定,或在[运行 CLI](./" +"interacting.md) 时指定。" + +#: docs/usage/setup.md:79 +msgid "Installation" +msgstr "安装" + +#: docs/usage/setup.md:81 +msgid "" +"We currently provide the `walrus` client binary for macOS (Intel and Apple " +"CPUs), Ubuntu, and Windows:" +msgstr "" +"我们目前提供适用于 macOS(Intel 和 Apple CPU)、Ubuntu 和 Windows 的 " +"`walrus` 客户端二进制文件:" + +#: docs/usage/setup.md:84 +msgid "OS" +msgstr "操作系统" + +#: docs/usage/setup.md:84 +msgid "CPU" +msgstr "CPU" + +#: docs/usage/setup.md:86 docs/usage/setup.md:87 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: docs/usage/setup.md:86 docs/usage/setup.md:89 docs/usage/setup.md:90 +msgid "Intel 64bit" +msgstr "Intel 64位" + +#: docs/usage/setup.md:86 +msgid "" +"[`ubuntu-x86_64`](https://storage.googleapis.com/mysten-walrus-binaries/" +"walrus-testnet-latest-ubuntu-x86_64)" +msgstr "" + +#: docs/usage/setup.md:87 +msgid "Intel 64bit (generic)" +msgstr "Intel 64位(通用)" + +#: docs/usage/setup.md:87 +msgid "" +"[`ubuntu-x86_64-generic`](https://storage.googleapis.com/mysten-walrus-" +"binaries/walrus-testnet-latest-ubuntu-x86_64-generic)" +msgstr "" + +#: docs/usage/setup.md:88 docs/usage/setup.md:89 +msgid "MacOS" +msgstr "MacOS" + +#: docs/usage/setup.md:88 +msgid "Apple Silicon" +msgstr "Apple Silicon" + +#: docs/usage/setup.md:88 +msgid "" +"[`macos-arm64`](https://storage.googleapis.com/mysten-walrus-binaries/walrus-" +"testnet-latest-macos-arm64)" +msgstr "" + +#: docs/usage/setup.md:89 +msgid "" +"[`macos-x86_64`](https://storage.googleapis.com/mysten-walrus-binaries/" +"walrus-testnet-latest-macos-x86_64)" +msgstr "" + +#: docs/usage/setup.md:90 +msgid "Windows" +msgstr "Windows" + +#: docs/usage/setup.md:90 +msgid "" +"[`windows-x86_64.exe`](https://storage.googleapis.com/mysten-walrus-binaries/" +"walrus-testnet-latest-windows-x86_64.exe)" +msgstr "" + +#: docs/usage/setup.md:92 +msgid "" +"```admonish title=\"Windows\"\n" +"We now offer a pre-built binary also for Windows. However, most of the " +"remaining instructions assume\n" +"a UNIX-based system for the directory structure, commands, etc. If you use " +"Windows, you may need to\n" +"adapt most of those.\n" +"```" +msgstr "" +"```admonish title=\"Windows\"\n" +"我们现在也提供适用于 Windows 的预构建二进制文件。但是,大多数剩余说明假设\n" +"基于 UNIX 的系统用于目录结构、命令等。如果您使用 Windows,您可能需要\n" +"调整其中的大部分。\n" +"```" + +#: docs/usage/setup.md:98 +msgid "" +"You can download the latest build from our Google Cloud Storage (GCS) bucket " +"(correctly setting the `$SYSTEM` variable):" +msgstr "" +"您可以从我们的 Google Cloud Storage (GCS) 存储桶下载最新版本(正确设置 " +"`$SYSTEM` 变量):" + +#: docs/usage/setup.md:102 +msgid "" +"# set this to your system: ubuntu-x86_64, ubuntu-x86_64-generic, macos-" +"x86_64, macos-arm64, windows-x86_64.exe\n" +msgstr "" +"# 将此设置为您的系统:ubuntu-x86_64, ubuntu-x86_64-generic, macos-x86_64, " +"macos-arm64, windows-x86_64.exe\n" + +#: docs/usage/setup.md:107 +msgid "" +"On Ubuntu, you should generally use the `ubuntu-x86_64` version. However, " +"this is incompatible with old hardware and certain virtualized environments " +"(throwing an \"Illegal instruction (core dumped)\" error); in these cases " +"you can use the `ubuntu-x86_64-generic` version." +msgstr "" +"在 Ubuntu 上,您通常应使用 `ubuntu-x86_64` 版本。然而,这与旧硬件和某些虚拟化" +"环境不兼容(会抛出 \"Illegal instruction (core dumped)\" 错误);在这些情况" +"下,您可以使用 `ubuntu-x86_64-generic` 版本。" + +#: docs/usage/setup.md:111 +msgid "" +"To be able to run it simply as `walrus`, move the binary to any directory " +"included in your `$PATH` environment variable. Standard locations are `/usr/" +"local/bin/`, `$HOME/bin/`, or `$HOME/.local/bin/`." +msgstr "" +"为了能够简单地以 `walrus` 运行它,请将二进制文件移动到包含在您的 `$PATH` 环境" +"变量中的任何目录。标准位置是 `/usr/local/bin/`,`$HOME/bin/` 或 `$HOME/." +"local/bin/`。" + +#: docs/usage/setup.md:121 +msgid "" +"Once this is done, you should be able to simply type `walrus` in your " +"terminal. For example you can get usage instructions (see [the next chapter]" +"(./interacting.md) for further details):" +msgstr "" +"完成此操作后,您应该能够在终端中简单地键入 `walrus`。例如,您可以获取使用说明" +"(有关详细信息,请参见[下一章](./interacting.md)):" + +#: docs/usage/setup.md:134 +msgid "" +"```admonish tip\n" +"Our latest Testnet Walrus binaries are also available on Walrus itself, " +"namely on\n" +", for example, .\n" +"```" +msgstr "" +"```admonish tip\n" +"我们最新的 Testnet Walrus 二进制文件也可以在 Walrus 本身上找到,即\n" +",例如,。\n" +"```" + +#: docs/usage/setup.md:139 +msgid "Previous versions (optional)" +msgstr "以前的版本(可选)" + +#: docs/usage/setup.md:141 +msgid "" +"In addition to the latest version of the `walrus` binary, the GCS bucket " +"also contains previous versions. An overview in XML format is available at " +"." +msgstr "" +"除了最新版本的 `walrus` 二进制文件外,GCS 存储桶还包含以前的版本。XML 格式的" +"概览可在 获得。" + +#: docs/usage/setup.md:145 +msgid "Configuration" +msgstr "配置" + +#: docs/usage/setup.md:147 +msgid "" +"The Walrus client needs to know about the Sui objects that store the Walrus " +"system and staking information, see the [developer guide](../dev-guide/sui-" +"struct.md#system-and-staking-information). These need to be configured in a " +"file `~/.config/walrus/client_config.yaml`." +msgstr "" +"Walrus 客户端需要了解存储 Walrus 系统和质押信息的 Sui 对象,请参阅[开发者指" +"南](../dev-guide/sui-struct.md#system-and-staking-information)。这些需要在文" +"件 `~/.config/walrus/client_config.yaml` 中配置。" + +#: docs/usage/setup.md:151 +msgid "The current Testnet deployment uses the following objects:" +msgstr "当前的 Testnet 部署使用以下对象:" + +#: docs/usage/setup.md:154 docs/operator-guide/storage-node.md:40 +msgid "system_object" +msgstr "system_object" + +#: docs/usage/setup.md:154 docs/usage/setup.md:176 +msgid "staking_object" +msgstr "staking_object" + +#: docs/usage/setup.md:155 docs/usage/setup.md:177 +msgid "exchange_object" +msgstr "exchange_object" + +#: docs/usage/setup.md:159 +msgid "" +"The easiest way to obtain the latest configuration is by downloading it from " +"." +msgstr "" +"获取最新配置的最简单方法是从 下载。" + +#: docs/usage/setup.md:162 +msgid "Custom path (optional)" +msgstr "自定义路径(可选)" + +#: docs/usage/setup.md:164 +msgid "" +"By default, the Walrus client will look for the `client_config.yaml` (or " +"`client_config.yml`) configuration file in the current directory, " +"`$XDG_CONFIG_HOME/walrus/`, `~/.config/walrus/`, or `~/.walrus/`. However, " +"you can place the file anywhere and name it anything you like; in this case " +"you need to use the `--config` option when running the `walrus` binary." +msgstr "" +"默认情况下,Walrus 客户端将在当前目录、`$XDG_CONFIG_HOME/walrus/`、`~/." +"config/walrus/` 或 `~/.walrus/` 中查找 `client_config.yaml`(或 " +"`client_config.yml`)配置文件。但是,您可以将文件放置在任何位置并命名为任何您" +"喜欢的名称;在这种情况下,您需要在运行 `walrus` 二进制文件时使用 `--config` " +"选项。" + +#: docs/usage/setup.md:169 +msgid "Advanced configuration (optional)" +msgstr "高级配置(可选)" + +#: docs/usage/setup.md:171 +msgid "The configuration file currently supports the following parameters:" +msgstr "配置文件当前支持以下参数:" + +#: docs/usage/setup.md:174 +msgid "" +"# These are the only mandatory fields. These objects are specific for a " +"particular Walrus\n" +"# deployment but then do not change over time.\n" +"system_object" +msgstr "" +"# 这些是唯一的必填字段。这些对象特定于特定的 Walrus\n" +"# 部署,但不会随时间变化。\n" +"system_object" + +#: docs/usage/setup.md:179 +msgid "" +"# You can define a custom path to your Sui wallet configuration here. If " +"this is unset or `null`,\n" +"# the wallet is configured from `./sui_config.yaml` (relative to your " +"current working directory), or\n" +"# the system-wide wallet at `~/.sui/sui_config/client.yaml` in this order.\n" +"wallet_config" +msgstr "" +"# 您可以在此处定义 Sui 钱包配置的自定义路径。如果未设置或为 `null`,\n" +"# 钱包将从 `./sui_config.yaml`(相对于您的当前工作目录)或\n" +"# 系统范围的钱包 `~/.sui/sui_config/client.yaml` 中配置,按此顺序。\n" +"wallet_config" + +#: docs/usage/setup.md:184 +msgid "" +"# The following parameters can be used to tune the networking behavior of " +"the client. There is no\n" +"# risk in playing around with these values. In the worst case, you may not " +"be able to store/read\n" +"# blob due to timeouts or other networking errors.\n" +"communication_config" +msgstr "" +"# 以下参数可用于调整客户端的网络行为。玩弄这些值没有风险。\n" +"# 在最坏的情况下,您可能无法存储/读取\n" +"# blob,因为超时或其他网络错误。\n" +"communication_config" + +#: docs/usage/setup.md:189 +msgid "max_concurrent_writes" +msgstr "max_concurrent_writes" + +#: docs/usage/setup.md:190 +msgid "max_concurrent_sliver_reads" +msgstr "max_concurrent_sliver_reads" + +#: docs/usage/setup.md:191 +msgid "max_concurrent_metadata_reads" +msgstr "max_concurrent_metadata_reads" + +#: docs/usage/setup.md:192 +msgid "max_concurrent_status_reads" +msgstr "max_concurrent_status_reads" + +#: docs/usage/setup.md:193 +msgid "max_data_in_flight" +msgstr "max_data_in_flight" + +#: docs/usage/setup.md:194 +msgid "reqwest_config" +msgstr "reqwest_config" + +#: docs/usage/setup.md:195 +msgid "total_timeout" +msgstr "total_timeout" + +#: docs/usage/setup.md:196 docs/usage/setup.md:200 docs/usage/setup.md:203 +#: docs/usage/setup.md:210 docs/usage/setup.md:213 docs/usage/setup.md:220 +msgid "secs" +msgstr "secs" + +#: docs/usage/setup.md:197 docs/usage/setup.md:201 docs/usage/setup.md:204 +#: docs/usage/setup.md:211 docs/usage/setup.md:214 docs/usage/setup.md:221 +msgid "nanos" +msgstr "nanos" + +#: docs/usage/setup.md:198 +msgid "pool_idle_timeout" +msgstr "pool_idle_timeout" + +#: docs/usage/setup.md:199 +msgid "http2_keep_alive_timeout" +msgstr "http2_keep_alive_timeout" + +#: docs/usage/setup.md:202 +msgid "http2_keep_alive_interval" +msgstr "http2_keep_alive_interval" + +#: docs/usage/setup.md:205 +msgid "http2_keep_alive_while_idle" +msgstr "http2_keep_alive_while_idle" + +#: docs/usage/setup.md:206 +msgid "request_rate_config" +msgstr "request_rate_config" + +#: docs/usage/setup.md:207 +msgid "max_node_connections" +msgstr "max_node_connections" + +#: docs/usage/setup.md:208 +msgid "max_retries" +msgstr "max_retries" + +#: docs/usage/setup.md:209 +msgid "min_backoff" +msgstr "min_backoff" + +#: docs/usage/setup.md:212 +msgid "max_backoff" +msgstr "max_backoff" + +#: docs/usage/setup.md:215 +msgid "disable_proxy" +msgstr "disable_proxy" + +#: docs/usage/setup.md:216 +msgid "disable_native_certs" +msgstr "disable_native_certs" + +#: docs/usage/setup.md:217 +msgid "sliver_write_extra_time" +msgstr "sliver_write_extra_time" + +#: docs/usage/setup.md:218 +msgid "factor" +msgstr "factor" + +#: docs/usage/setup.md:219 +msgid "base" +msgstr "base" + +#: docs/usage/setup.md:224 +msgid "" +"```admonish warning title=\"Important\"\n" +"If you specify a wallet path, make sure your wallet is set up for Sui " +"**Testnet**.\n" +"```" +msgstr "" +"```admonish warning title=\"重要\"\n" +"如果您指定了钱包路径,请确保您的钱包已设置为 Sui **Testnet**。\n" +"```" + +#: docs/usage/setup.md:228 +msgid "Testnet WAL faucet" +msgstr "Testnet WAL 水龙头" + +#: docs/usage/setup.md:230 +msgid "" +"The Walrus Testnet uses Testnet WAL tokens to buy storage and stake. Testnet " +"WAL tokens have no value and can be exchanged (at a 1:1 rate) for some " +"Testnet SUI tokens, which also have no value, through the following command:" +msgstr "" +"Walrus Testnet 使用 Testnet WAL 代币来购买存储和质押。Testnet WAL 代币没有价" +"值,可以通过以下命令以 1:1 的比例兑换一些 Testnet SUI 代币,这些代币也没有价" +"值:" + +#: docs/usage/setup.md:238 +msgid "" +"You can check that you have received Testnet WAL by checking the Sui " +"balances:" +msgstr "您可以通过检查 Sui 余额来确认您是否已收到 Testnet WAL:" + +#: docs/usage/setup.md:254 +msgid "" +"By default, 0.5 SUI are exchanged for 0.5 WAL, but a different amount of SUI " +"may be exchanged using the `--amount` option (the value is in MIST/FROST), " +"and a specific SUI/WAL exchange object may be used through the `--exchange-" +"id` option. The `walrus get-wal --help` command provides more information " +"about those." +msgstr "" +"默认情况下,0.5 SUI 兑换 0.5 WAL,但可以使用 `--amount` 选项兑换不同数量的 " +"SUI(值以 MIST/FROST 为单位),并且可以通过 `--exchange-id` 选项使用特定的 " +"SUI/WAL 兑换对象。`walrus get-wal --help` 命令提供了有关这些的更多信息。" + +#: docs/usage/interacting.md:5 +msgid "We provide 3 ways to interact directly with the Walrus storage system:" +msgstr "我们提供 3 种方式直接与 Walrus 存储系统进行交互:" + +#: docs/usage/interacting.md:7 +msgid "" +"Through the Walrus [client command line interface (CLI)](./client-cli.md)." +msgstr "通过 Walrus [客户端命令行界面 (CLI)](./client-cli.md)。" + +#: docs/usage/interacting.md:8 +msgid "Through a [JSON API](./json-api.md) of the Walrus CLI." +msgstr "通过 Walrus CLI 的 [JSON API](./json-api.md)。" + +#: docs/usage/interacting.md:9 +msgid "" +"Through an [HTTP API](./web-api.md) exposed by a public or local Walrus " +"client daemon." +msgstr "通过公共或本地 Walrus 客户端守护进程公开的 [HTTP API](./web-api.md)。" + +#: docs/usage/interacting.md:11 +msgid "" +"Furthermore, users can [stake and unstake](./stake.md) through the staking " +"dApp or Sui smart contracts." +msgstr "" +"此外,用户可以通过质押 dApp 或 Sui 智能合约 [质押和取消质押](./stake.md)。" + +#: docs/usage/client-cli.md:3 +msgid "Using the Walrus client" +msgstr "使用 Walrus 客户端" + +#: docs/usage/client-cli.md:5 +msgid "" +"The `walrus` binary can be used to interact with Walrus as a client. See the " +"[setup chapter](./setup.md) for prerequisites, installation, and " +"configuration." +msgstr "" +"`walrus` 二进制文件可用作客户端与 Walrus 进行交互。有关先决条件、安装和配置," +"请参阅 [设置章节](./setup.md)。" + +#: docs/usage/client-cli.md:8 +msgid "Detailed usage information is available through" +msgstr "详细的使用信息可以通过以下方式获得" + +#: docs/usage/client-cli.md:14 +msgid "" +"Each sub-command of `walrus` can also be called with `--help` to print its " +"specific arguments and their meaning." +msgstr "" +"`walrus` 的每个子命令也可以使用 `--help` 调用,以打印其特定参数及其含义。" + +#: docs/usage/client-cli.md:17 +msgid "Walrus system information" +msgstr "Walrus 系统信息" + +#: docs/usage/client-cli.md:19 +msgid "" +"Information about the Walrus system is available through the `walrus info` " +"command. For example, `walrus info` gives an overview of the number of " +"storage nodes and shards in the system, the maximum blob size, and the " +"current cost in (Testnet) WAL for storing blobs:" +msgstr "" +"有关 Walrus 系统的信息可以通过 `walrus info` 命令获得。例如,`walrus info` 提" +"供了系统中存储节点和分片的数量概述、最大 blob 大小以及存储 blob 的当前 " +"(Testnet) WAL 成本:" + +#: docs/usage/client-cli.md:48 +msgid "" +"```admonish tip title=\"FROST and WAL\"\n" +"FROST is the smaller unit of WAL, similar to MIST for SUI. The conversion is " +"also the same as for\n" +"SUI: `1 WAL = 1 000 000 000 FROST`.\n" +"```" +msgstr "" +"```admonish tip title=\"FROST 和 WAL\"\n" +"FROST 是 WAL 的较小单位,类似于 SUI 的 MIST。转换也与 SUI 相同:`1 WAL = 1 " +"000 000 000 FROST`。\n" +"```" + +#: docs/usage/client-cli.md:53 +msgid "" +"Additional information such as encoding parameters and sizes, BFT system " +"information, and information on the storage nodes and their shard " +"distribution can be viewed with the `--dev` argument: `walrus info --dev`." +msgstr "" +"其他信息,如编码参数和大小、BFT 系统信息以及存储节点及其分片分布的信息,可以" +"使用 `--dev` 参数查看:`walrus info --dev`。" + +#: docs/usage/client-cli.md:57 +msgid "Storing, querying status, and reading blobs" +msgstr "存储、查询状态和读取 blob" + +#: docs/usage/client-cli.md:71 +msgid "" +"```admonish tip title=\"Obtaining Testnet WAL\"\n" +"You can exchange Testnet SUI for Testnet WAL by running `walrus get-wal`. " +"See the [setup\n" +"page](./setup.md#testnet-wal-faucet) for further details.\n" +"```" +msgstr "" +"```admonish tip title=\"获取 Testnet WAL\"\n" +"您可以通过运行 `walrus get-wal` 将 Testnet SUI 兑换为 Testnet WAL。有关详细信" +"息,请参阅 [设置页面](./setup.md#testnet-wal-faucet)。\n" +"```" + +#: docs/usage/client-cli.md:76 +msgid "Storing blobs on Walrus can be achieved through the following command:" +msgstr "可以通过以下命令在 Walrus 上存储 blob:" + +#: docs/usage/client-cli.md:82 +msgid "" +"The store command takes a CLI argument `--epochs ` (or `-e`) " +"indicating the number of epochs the blob should be stored for. This defaults " +"to 1 epoch, namely the current one." +msgstr "" +"store 命令接受一个 CLI 参数 `--epochs `(或 `-e`),指示 blob 应存储" +"的 epoch 数量。默认值为 1 个 epoch,即当前 epoch。" + +#: docs/usage/client-cli.md:85 +msgid "" +"```admonish tip title=\"Automatic optimizations\"\n" +"When storing a blob, the client performs a number of automatic " +"optimizations, including the\n" +"following:\n" +"\n" +"- If the blob is already stored as a *permanent blob* on Walrus for a " +"sufficient number of epochs\n" +" the command does not store it again. This behavior can be overwritten with " +"the `--force` (or `-f`)\n" +" CLI option, which stores the blob again and creates a fresh blob object on " +"Sui belonging to the\n" +" wallet address.\n" +"- If the user's wallet has a compatible storage resource, this one is " +"(re-)used instead of buying a\n" +" new one.\n" +"- If the blob is already certified on Walrus but as a *deletable* blob or " +"not for a sufficient\n" +" number of epochs, the command skips sending data to the storage nodes and " +"just collects the\n" +" availability certificate\n" +"```" +msgstr "" +"```admonish tip title=\"自动优化\"\n" +"在存储 blob 时,客户端会执行许多自动优化,包括以下内容:\n" +"\n" +"- 如果 blob 已经作为 *永久 blob* 在 Walrus 上存储了足够多的 epoch,则命令不会" +"再次存储它。此行为可以通过 `--force`(或 `-f`)CLI 选项覆盖,该选项会再次存" +"储 blob 并在 Sui 上创建一个属于钱包地址的新 blob 对象。\n" +"- 如果用户的钱包有兼容的存储资源,则会(重新)使用此资源,而不是购买新的资" +"源。\n" +"- 如果 blob 已经在 Walrus 上认证,但作为 *可删除* blob 或者没有足够多的 " +"epoch,则命令会跳过向存储节点发送数据,只收集可用性证书。\n" +"```" + +#: docs/usage/client-cli.md:100 +msgid "" +"The status of a blob can be queried through one of the following commands:" +msgstr "可以通过以下命令之一查询 blob 的状态:" + +#: docs/usage/client-cli.md:107 +msgid "" +"This returns whether the blob is stored and its availability period. If you " +"specify a file with the `--file` option,the CLI re-encodes the content of " +"the file and derives the blob ID before checking the status." +msgstr "" +"这将返回 blob 是否已存储及其可用期。如果使用 `--file` 选项指定文件,CLI 将重" +"新编码文件内容并在检查状态之前派生 blob ID。" + +#: docs/usage/client-cli.md:111 +msgid "" +"When the blob is available, the `blob-status` command also returns the " +"`BlobCertified` Sui event ID, which consists of a transaction ID and a " +"sequence number in the events emitted by the transaction. The existence of " +"this event certifies the availability of the blob." +msgstr "" +"当 blob 可用时,`blob-status` 命令还会返回 `BlobCertified` Sui 事件 ID,该 " +"ID 由交易 ID 和交易发出的事件中的序列号组成。此事件的存在证明了 blob 的可用" +"性。" + +#: docs/usage/client-cli.md:115 +msgid "" +"Reading blobs from Walrus can be achieved through the following command:" +msgstr "可以通过以下命令从 Walrus 读取 blob:" + +#: docs/usage/client-cli.md:121 +msgid "" +"By default the blob data is written to the standard output. The `--out " +"` CLI option (or `-o`) can be used to specify an output file name. The " +"`--rpc-url ` (or `-r`) may be used to specify a Sui RPC node to use " +"instead of the one set in the wallet configuration or the default one." +msgstr "" +"默认情况下,blob 数据写入标准输出。可以使用 `--out ` CLI 选项(或 `-o`)" +"指定输出文件名。可以使用 `--rpc-url `(或 `-r`)指定要使用的 Sui RPC 节" +"点,而不是钱包配置中设置的节点或默认节点。" + +#: docs/usage/client-cli.md:125 +msgid "Reclaiming space via deletable blobs" +msgstr "通过可删除的 blob 回收空间" + +#: docs/usage/client-cli.md:127 +msgid "" +"By default `walrus store` uploads a blob and Walrus will keep it available " +"until after its expiry epoch. Not even the uploader may delete it " +"beforehand. However, optionally, the store command may be invoked with the " +"`--deletable` flag, to indicate the blob may be deleted before its expiry by " +"the owner of the Sui blob object representing the blob. Deletable blobs are " +"indicated as such in the Sui events that certify them, and should not be " +"relied upon for availability by others." +msgstr "" +"默认情况下,`walrus store` 上传一个 blob,Walrus 会在其到期纪元之后保持其可用" +"性。即使是上传者也不能提前删除它。但是,可以选择使用 `--deletable` 标志调用 " +"store 命令,以指示 blob 可以在其到期之前由表示该 blob 的 Sui blob 对象的所有" +"者删除。可删除的 blob 在证明它们的 Sui 事件中被如此标示,不应依赖其他人来保证" +"其可用性。" + +#: docs/usage/client-cli.md:133 +msgid "A deletable blob may be deleted with the command:" +msgstr "可以使用以下命令删除可删除的 blob:" + +#: docs/usage/client-cli.md:139 +msgid "" +"Optionally the delete command can be invoked by specifying a `--file ` " +"option, to derive the blob ID from a file, or `--object-id ` to " +"delete the blob in the Sui blob object specified." +msgstr "" +"可以选择通过指定 `--file ` 选项来调用 delete 命令,从文件中派生 blob " +"ID,或 `--object-id ` 删除指定的 Sui blob 对象中的 blob。" + +#: docs/usage/client-cli.md:142 +msgid "" +"The `delete` command reclaims the storage object associated with the deleted " +"blob, which is re-used to store new blobs. The delete operation provides " +"flexibility around managing storage costs and re-using storage." +msgstr "" +"`delete` 命令回收与已删除 blob 关联的存储对象,该对象被重新用于存储新 blob。" +"删除操作在管理存储成本和重新使用存储方面提供了灵活性。" + +#: docs/usage/client-cli.md:146 +msgid "" +"The delete operation has limited utility for privacy: It only deletes " +"slivers from the current epoch storage nodes, and subsequent epoch storage " +"nodes, if no other user has uploaded a copy of the same blob. If another " +"copy of the same blob exists in Walrus the delete operation will not make " +"the blob unavailable for download, and `walrus read` invocations will " +"download it. Copies of the public blob may be cached or downloaded by users, " +"and these copies are not deleted." +msgstr "" +"删除操作对隐私的作用有限:它只删除当前纪元存储节点和后续纪元存储节点中的碎" +"片,如果没有其他用户上传相同 blob 的副本。如果 Walrus 中存在相同 blob 的另一" +"个副本,删除操作不会使该 blob 无法下载,并且 `walrus read` 调用将下载它。公" +"共 blob 的副本可能会被用户缓存或下载,这些副本不会被删除。" + +#: docs/usage/client-cli.md:152 +msgid "" +"```admonish danger title=\"Delete reclaims space only\"\n" +"**All blobs stored in Walrus are public and discoverable by all.** The " +"`delete` command will\n" +"not delete slivers if other copies of the blob are stored on Walrus possibly " +"by other users.\n" +"It does not delete blobs from caches, slivers from past storage nodes, or " +"copies\n" +"that could have been made by users before the blob was deleted.\n" +"```" +msgstr "" +"```admonish danger title=\"删除仅回收空间\"\n" +"** 存储在 Walrus 中的所有 blob 都是公开的,所有人都可以发现。** `delete` 命令" +"不会删除 Walrus 上可能由其他用户存储的 blob 的其他副本的碎片。\n" +"它不会从缓存中删除 blob,不会从过去的存储节点中删除碎片,也不会删除用户在 " +"blob 被删除之前可能制作的副本。\n" +"```" + +#: docs/usage/client-cli.md:159 +msgid "Blob ID utilities" +msgstr "Blob ID 工具" + +#: docs/usage/client-cli.md:161 +msgid "" +"The `walrus blob-id ` may be used to derive the blob ID of any file. " +"The blob ID is a commitment to the file, and any blob with the same ID will " +"decode to the same content. The blob ID is a 256 bit number and represented " +"on some Sui explorer as a decimal large number. The command `walrus convert-" +"blob-id ` may be used to convert it to a base64 URL safe " +"encoding used by the command line tools and other APIs." +msgstr "" +"`walrus blob-id ` 可用于派生任何文件的 blob ID。blob ID 是对文件的承" +"诺,任何具有相同 ID 的 blob 都将解码为相同的内容。blob ID 是一个 256 位数字," +"在某些 Sui explorer 上表示为十进制大数字。命令 `walrus convert-blob-id " +"` 可用于将其转换为命令行工具和其他 API 使用的 base64 URL 安" +"全编码。" + +#: docs/usage/client-cli.md:167 +msgid "" +"The `walrus list-blobs` command lists all the non expired Sui blob object " +"that the current account owns, including their blob ID, object ID, and " +"metadata about expiry and deletable status. The option `--include-expired` " +"also lists expired blob objects." +msgstr "" +"`walrus list-blobs` 命令列出当前帐户拥有的所有未过期的 Sui blob 对象,包括它" +"们的 blob ID、对象 ID 以及有关到期和可删除状态的元数据。选项 `--include-" +"expired` 还会列出已过期的 blob 对象。" + +#: docs/usage/client-cli.md:171 +msgid "Changing the default configuration" +msgstr "更改默认配置" + +#: docs/usage/client-cli.md:173 +msgid "" +"Use the `--config` option to specify a custom path to the [configuration " +"location](../usage/setup.md#configuration)." +msgstr "" +"使用 `--config` 选项指定 [配置位置](../usage/setup.md#configuration) 的自定义" +"路径。" + +#: docs/usage/client-cli.md:176 +msgid "" +"The `--wallet ` argument may be used to specify a non-standard Sui " +"wallet configuration file. And a `--gas-budget ` argument may be " +"used to change the maximum amount of Sui (in MIST) that the command is " +"allowed to use." +msgstr "" +"`--wallet ` 参数可用于指定非标准 Sui 钱包配置文件。`--gas-budget " +"` 参数可用于更改命令允许使用的最大 Sui 数量(以 MIST 为单位)。" + +#: docs/usage/json-api.md:3 +msgid "JSON mode" +msgstr "JSON 模式" + +#: docs/usage/json-api.md:5 +msgid "" +"All Walrus client commands are also available in JSON mode. In this mode, " +"all the command-line flags of the original CLI command can be specified in " +"JSON format. The JSON mode therefore simplifies programmatic access to the " +"CLI." +msgstr "" +"所有 Walrus 客户端命令也都可以在 JSON 模式下使用。在此模式下,原始 CLI 命令的" +"所有命令行标志都可以用 JSON 格式指定。因此,JSON 模式简化了对 CLI 的编程访" +"问。" + +#: docs/usage/json-api.md:9 +msgid "For example, to store a blob, run:" +msgstr "例如,要存储一个 blob,请运行:" + +#: docs/usage/json-api.md:13 +msgid "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"store\": {\n" +" \"file\": \"README.md\"\n" +" }\n" +" }\n" +" }'" +msgstr "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"store\": {\n" +" \"file\": \"README.md\"\n" +" }\n" +" }\n" +" }'" + +#: docs/usage/json-api.md:23 +msgid "Or, to read a blob knowing the blob ID:" +msgstr "或者,知道 blob ID 后读取 blob:" + +#: docs/usage/json-api.md:27 +msgid "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"read\": {\n" +" \"blobId\": \"4BKcDC0Ih5RJ8R0tFMz3MZVNZV8b2goT6_JiEEwNHQo\"\n" +" }\n" +" }\n" +" }'" +msgstr "" +"'{\n" +" \"config\": \"path/to/client_config.yaml\",\n" +" \"command\": {\n" +" \"read\": {\n" +" \"blobId\": \"4BKcDC0Ih5RJ8R0tFMz3MZVNZV8b2goT6_JiEEwNHQo\"\n" +" }\n" +" }\n" +" }'" + +#: docs/usage/json-api.md:37 +msgid "" +"All options, default values, and commands are equal to those of the " +"\"standard\" CLI mode, except that they are written in \"camelCase\" instead " +"of \"kebab-case\"." +msgstr "" +"所有选项、默认值和命令都与“标准”CLI 模式相同,只是它们以“camelCase”而不" +"是“kebab-case”编写。" + +#: docs/usage/json-api.md:40 +msgid "The `json` command also accepts input from `stdin`." +msgstr "`json` 命令也接受来自 `stdin` 的输入。" + +#: docs/usage/json-api.md:42 +msgid "" +"The output of a `json` command will itself be JSON-formatted, again to " +"simplify parsing the results in a programmatic way. For example, the JSON " +"output can be piped to the `jq` command for parsing and manually extracting " +"relevant fields." +msgstr "" +"`json` 命令的输出本身将是 JSON 格式的,再次简化了以编程方式解析结果。例如," +"JSON 输出可以通过管道传输到 `jq` 命令以解析和手动提取相关字段。" + +#: docs/usage/web-api.md:3 +msgid "Client Daemon mode & HTTP API" +msgstr "客户端守护进程模式和 HTTP API" + +#: docs/usage/web-api.md:5 +msgid "" +"In addition to the CLI and JSON modes, the Walrus client offers a _daemon " +"mode_. In this mode, it runs a simple web server offering HTTP interfaces to " +"store and read blobs in an _aggregator_ and _publisher_ role respectively. " +"We also offer [public aggregator and publisher services](#public-services) " +"to try the Walrus HTTP APIs without the need to run a local client." +msgstr "" +"除了 CLI 和 JSON 模式外,Walrus 客户端还提供 _daemon 模式。在此模式下,它运行" +"一个简单的 Web 服务器,分别在 _aggregator_ 和 _publisher_ 角色中提供存储和读" +"取 blob 的 HTTP 接口。我们还提供 [公共聚合器和发布器服务](#public-services) " +"以尝试 Walrus HTTP API,而无需运行本地客户端。" + +#: docs/usage/web-api.md:11 +msgid "Starting the daemon locally" +msgstr "本地启动守护进程" + +#: docs/usage/web-api.md:13 +msgid "" +"You can run the daemon with the following command, to offer both an " +"aggregator and publisher on the same address (`127.0.0.1`) and port " +"(`31415`):" +msgstr "" +"您可以使用以下命令运行守护进程,在同一地址 (`127.0.0.1`) 和端口 (`31415`) 上" +"同时提供聚合器和发布器:" + +#: docs/usage/web-api.md:17 +msgid "\"127.0.0.1:31415\"" +msgstr "\"127.0.0.1:31415\"" + +#: docs/usage/web-api.md:20 +msgid "" +"Or you may run the aggregator and publisher processes separately on " +"different addresses/ports:" +msgstr "或者,您可以在不同的地址/端口上分别运行聚合器和发布器进程:" + +#: docs/usage/web-api.md:23 +msgid "\"127.0.0.1:31415\" # run an aggregator to read blobs\n" +msgstr "\"127.0.0.1:31415\" # 运行聚合器以读取 blob\n" + +#: docs/usage/web-api.md:24 +msgid "\"127.0.0.1:31416\" # run a publisher to store blobs\n" +msgstr "\"127.0.0.1:31416\" # 运行发布器以存储 blob\n" + +#: docs/usage/web-api.md:27 +msgid "" +"The aggregator provides all read APIs, the publisher all the store APIs, and " +"the daemon provides both." +msgstr "聚合器提供所有读取 API,发布器提供所有存储 API,守护进程提供两者。" + +#: docs/usage/web-api.md:36 +msgid "Using a public aggregator or publisher" +msgstr "使用公共聚合器或发布器" + +#: docs/usage/web-api.md:38 +msgid "" +"For some use cases (e.g., a public website), or to just try out the HTTP " +"API, a publicly accessible aggregator and/or publisher is required. Several " +"entities run such aggregators and publishers, see the lists of public " +"[aggregators](#public-aggregators) and [publishers](#public-publishers) " +"below." +msgstr "" +"对于某些用例(例如,公共网站),或者只是尝试 HTTP API,需要一个公开可访问的聚" +"合器和/或发布器。几家公司运行此类聚合器和发布器,请参阅下面的公共 [聚合器]" +"(#public-aggregators) 和 [发布器](#public-publishers) 列表。" + +#: docs/usage/web-api.md:42 +msgid "" +"Public publishers limit requests to 10 MiB by default. If you want to upload " +"larger files, you need to [run your own publisher](#local-daemon) or use the " +"[CLI](./client-cli.md)." +msgstr "" +"公共发布器默认将请求限制为 10 MiB。如果您想上传更大的文件,您需要 [运行自己的" +"发布器](#local-daemon) 或使用 [CLI](./client-cli.md)。" + +#: docs/usage/web-api.md:45 +msgid "" +"Also, note that the publisher consumes (Testnet) SUI and WAL on the service " +"side, and a Mainnet deployment would likely not be able to provide " +"uncontrolled public access to publishing without requiring some " +"authentication and compensation for the funds used." +msgstr "" +"另外,请注意,发布器在服务端消耗 (Testnet) SUI 和 WAL,主网部署可能无法在不要" +"求某些身份验证和补偿所用资金的情况下提供不受控制的公共发布访问。" + +#: docs/usage/web-api.md:49 +msgid "Public aggregators" +msgstr "公共聚合器" + +#: docs/usage/web-api.md:51 +msgid "" +"The following is a list of know public aggregators; they are checked " +"periodically, but each of them may still be temporarily unavailable:" +msgstr "" +"以下是已知公共聚合器的列表;它们会定期检查,但每个聚合器可能仍会暂时不可用:" + +#: docs/usage/web-api.md:54 +msgid "`https://aggregator.walrus-testnet.walrus.space`" +msgstr "`https://aggregator.walrus-testnet.walrus.space`" + +#: docs/usage/web-api.md:55 +msgid "`https://wal-aggregator-testnet.staketab.org`" +msgstr "`https://wal-aggregator-testnet.staketab.org`" + +#: docs/usage/web-api.md:56 +msgid "`https://walrus-testnet-aggregator.bartestnet.com`" +msgstr "`https://walrus-testnet-aggregator.bartestnet.com`" + +#: docs/usage/web-api.md:57 +msgid "`https://walrus-testnet.blockscope.net`" +msgstr "`https://walrus-testnet.blockscope.net`" + +#: docs/usage/web-api.md:58 +msgid "`https://walrus-testnet-aggregator.nodes.guru`" +msgstr "`https://walrus-testnet-aggregator.nodes.guru`" + +#: docs/usage/web-api.md:59 +msgid "`https://walrus-cache-testnet.overclock.run`" +msgstr "`https://walrus-cache-testnet.overclock.run`" + +#: docs/usage/web-api.md:60 +msgid "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" +msgstr "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" + +#: docs/usage/web-api.md:61 +msgid "`https://walrus-testnet-aggregator.stakin-nodes.com`" +msgstr "`https://walrus-testnet-aggregator.stakin-nodes.com`" + +#: docs/usage/web-api.md:62 +msgid "`https://testnet-aggregator-walrus.kiliglab.io`" +msgstr "`https://testnet-aggregator-walrus.kiliglab.io`" + +#: docs/usage/web-api.md:63 +msgid "`https://walrus-cache-testnet.latitude-sui.com`" +msgstr "`https://walrus-cache-testnet.latitude-sui.com`" + +#: docs/usage/web-api.md:64 +msgid "`https://walrus-testnet-aggregator.nodeinfra.com`" +msgstr "`https://walrus-testnet-aggregator.nodeinfra.com`" + +#: docs/usage/web-api.md:65 +msgid "`https://walrus-tn.juicystake.io:9443`" +msgstr "`https://walrus-tn.juicystake.io:9443`" + +#: docs/usage/web-api.md:66 +msgid "`https://walrus-agg-testnet.chainode.tech:9002`" +msgstr "`https://walrus-agg-testnet.chainode.tech:9002`" + +#: docs/usage/web-api.md:67 +msgid "`https://walrus-testnet-aggregator.starduststaking.com:11444`" +msgstr "`https://walrus-testnet-aggregator.starduststaking.com:11444`" + +#: docs/usage/web-api.md:68 +msgid "`http://walrus-testnet-aggregator.everstake.one:9000`" +msgstr "`http://walrus-testnet-aggregator.everstake.one:9000`" + +#: docs/usage/web-api.md:69 +msgid "`http://walrus.testnet.pops.one:9000`" +msgstr "`http://walrus.testnet.pops.one:9000`" + +#: docs/usage/web-api.md:70 +msgid "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" +msgstr "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" + +#: docs/usage/web-api.md:71 +msgid "`http://aggregator.testnet.sui.rpcpool.com:9000`" +msgstr "`http://aggregator.testnet.sui.rpcpool.com:9000`" + +#: docs/usage/web-api.md:72 +msgid "`http://walrus.krates.ai:9000`" +msgstr "`http://walrus.krates.ai:9000`" + +#: docs/usage/web-api.md:73 +msgid "`http://walrus-testnet.stakingdefenseleague.com:9000`" +msgstr "`http://walrus-testnet.stakingdefenseleague.com:9000`" + +#: docs/usage/web-api.md:74 +msgid "`http://walrus.sui.thepassivetrust.com:9000`" +msgstr "`http://walrus.sui.thepassivetrust.com:9000`" + +#: docs/usage/web-api.md:76 +msgid "Public publishers" +msgstr "公共发布器" + +#: docs/usage/web-api.md:78 +msgid "`https://publisher.walrus-testnet.walrus.space`" +msgstr "`https://publisher.walrus-testnet.walrus.space`" + +#: docs/usage/web-api.md:79 +msgid "`https://wal-publisher-testnet.staketab.org`" +msgstr "`https://wal-publisher-testnet.staketab.org`" + +#: docs/usage/web-api.md:80 +msgid "`https://walrus-testnet-publisher.bartestnet.com`" +msgstr "`https://walrus-testnet-publisher.bartestnet.com`" + +#: docs/usage/web-api.md:81 +msgid "`https://walrus-testnet-publisher.nodes.guru`" +msgstr "`https://walrus-testnet-publisher.nodes.guru`" + +#: docs/usage/web-api.md:82 +msgid "`https://sui-walrus-testnet.bwarelabs.com/publisher`" +msgstr "`https://sui-walrus-testnet.bwarelabs.com/publisher`" + +#: docs/usage/web-api.md:83 +msgid "`https://walrus-testnet-publisher.stakin-nodes.com`" +msgstr "`https://walrus-testnet-publisher.stakin-nodes.com`" + +#: docs/usage/web-api.md:84 +msgid "`https://testnet-publisher-walrus.kiliglab.io`" +msgstr "`https://testnet-publisher-walrus.kiliglab.io`" + +#: docs/usage/web-api.md:85 +msgid "`https://walrus-testnet-publisher.nodeinfra.com`" +msgstr "`https://walrus-testnet-publisher.nodeinfra.com`" + +#: docs/usage/web-api.md:86 +msgid "`https://walrus-testnet.blockscope.net:11444`" +msgstr "`https://walrus-testnet.blockscope.net:11444`" + +#: docs/usage/web-api.md:87 +msgid "`https://walrus-publish-testnet.chainode.tech:9003`" +msgstr "`https://walrus-publish-testnet.chainode.tech:9003`" + +#: docs/usage/web-api.md:88 +msgid "`https://walrus-testnet-publisher.starduststaking.com:11445`" +msgstr "`https://walrus-testnet-publisher.starduststaking.com:11445`" + +#: docs/usage/web-api.md:89 +msgid "`http://walrus-publisher-testnet.overclock.run:9001`" +msgstr "`http://walrus-publisher-testnet.overclock.run:9001`" + +#: docs/usage/web-api.md:90 +msgid "`http://walrus-testnet-publisher.everstake.one:9001`" +msgstr "`http://walrus-testnet-publisher.everstake.one:9001`" + +#: docs/usage/web-api.md:91 +msgid "`http://walrus.testnet.pops.one:9001`" +msgstr "`http://walrus.testnet.pops.one:9001`" + +#: docs/usage/web-api.md:92 +msgid "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" +msgstr "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" + +#: docs/usage/web-api.md:93 +msgid "`http://publisher.testnet.sui.rpcpool.com:9001`" +msgstr "`http://publisher.testnet.sui.rpcpool.com:9001`" + +#: docs/usage/web-api.md:94 +msgid "`http://walrus.krates.ai:9001`" +msgstr "`http://walrus.krates.ai:9001`" + +#: docs/usage/web-api.md:95 +msgid "`http://walrus-publisher-testnet.latitude-sui.com:9001`" +msgstr "`http://walrus-publisher-testnet.latitude-sui.com:9001`" + +#: docs/usage/web-api.md:96 +msgid "`http://walrus-tn.juicystake.io:9090`" +msgstr "`http://walrus-tn.juicystake.io:9090`" + +#: docs/usage/web-api.md:97 +msgid "`http://walrus-testnet.stakingdefenseleague.com:9001`" +msgstr "`http://walrus-testnet.stakingdefenseleague.com:9001`" + +#: docs/usage/web-api.md:98 +msgid "`http://walrus.sui.thepassivetrust.com:9001`" +msgstr "`http://walrus.sui.thepassivetrust.com:9001`" + +#: docs/usage/web-api.md:100 +msgid "HTTP API Usage" +msgstr "HTTP API 使用" + +#: docs/usage/web-api.md:102 +msgid "" +"For the following examples, we assume you set the `AGGREGATOR` and " +"`PUBLISHER` environment variables to your desired aggregator and publisher, " +"respectively. For example:" +msgstr "" +"对于以下示例,我们假设您将 `AGGREGATOR` 和 `PUBLISHER` 环境变量设置为您所需的" +"聚合器和发布器。例如:" + +#: docs/usage/web-api.md:106 +msgid "https://aggregator.walrus-testnet.walrus.space" +msgstr "https://aggregator.walrus-testnet.walrus.space" + +#: docs/usage/web-api.md:107 +msgid "https://publisher.walrus-testnet.walrus.space" +msgstr "https://publisher.walrus-testnet.walrus.space" + +#: docs/usage/web-api.md:110 +msgid "" +"```admonish tip title=\"API specification\"\n" +"Walrus aggregators and publishers expose their API specifications at the " +"path `/v1/api`. You can\n" +"view this in the browser, e.g., at \n" +"```" +msgstr "" +"```admonish tip title=\"API 规范\"\n" +"Walrus 聚合器和发布器在路径 `/v1/api` 公开其 API 规范。您可以在浏览器中查看," +"例如,\n" +"```" + +#: docs/usage/web-api.md:115 docs/dev-guide/dev-operations.md:13 +msgid "Store" +msgstr "存储" + +#: docs/usage/web-api.md:117 +msgid "" +"You can interact with the daemon through simple HTTP PUT requests. For " +"example, with [cURL](https://curl.se), you can store blobs using a publisher " +"or daemon as follows:" +msgstr "" +"您可以通过简单的 HTTP PUT 请求与守护进程交互。例如,使用 [cURL](https://curl." +"se),您可以使用发布器或守护进程存储 blob,如下所示:" + +#: docs/usage/web-api.md:121 docs/usage/web-api.md:130 +#: docs/usage/web-api.md:159 +msgid "\"$PUBLISHER/v1/store\"" +msgstr "\"$PUBLISHER/v1/store\"" + +#: docs/usage/web-api.md:121 +msgid "\"some string\" # store the string `some string` for 1 storage epoch\n" +msgstr "\"some string\" # 将字符串 `some string` 存储 1 个存储周期\n" + +#: docs/usage/web-api.md:122 +msgid "\"$PUBLISHER/v1/store?epochs=5\"" +msgstr "\"$PUBLISHER/v1/store?epochs=5\"" + +#: docs/usage/web-api.md:122 +msgid "\"some/file\" # store file `some/file` for 5 storage epochs\n" +msgstr "\"some/file\" # 将文件 `some/file` 存储 5 个存储周期\n" + +#: docs/usage/web-api.md:125 +msgid "" +"The store HTTP API end points return information about the blob stored in " +"JSON format. When a blob is stored for the first time, a `newlyCreated` " +"field contains information about the new blob:" +msgstr "" +"存储 HTTP API 端点以 JSON 格式返回有关存储的 blob 的信息。当首次存储 blob " +"时,`newlyCreated` 字段包含有关新 blob 的信息:" + +#: docs/usage/web-api.md:130 docs/usage/web-api.md:159 +msgid "\"some other string\"" +msgstr "\"some other string\"" + +#: docs/usage/web-api.md:132 +msgid "\"newlyCreated\"" +msgstr "\"newlyCreated\"" + +#: docs/usage/web-api.md:133 +msgid "\"blobObject\"" +msgstr "\"blobObject\"" + +#: docs/usage/web-api.md:134 docs/usage/web-api.md:141 +msgid "\"id\"" +msgstr "\"id\"" + +#: docs/usage/web-api.md:134 +msgid "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" +msgstr "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" + +#: docs/usage/web-api.md:135 +msgid "\"storedEpoch\"" +msgstr "\"storedEpoch\"" + +#: docs/usage/web-api.md:136 docs/usage/web-api.md:162 +msgid "\"blobId\"" +msgstr "\"blobId\"" + +#: docs/usage/web-api.md:136 docs/usage/web-api.md:162 +msgid "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" +msgstr "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" + +#: docs/usage/web-api.md:137 +msgid "\"size\"" +msgstr "\"size\"" + +#: docs/usage/web-api.md:138 +msgid "\"erasureCodeType\"" +msgstr "\"erasureCodeType\"" + +#: docs/usage/web-api.md:138 +msgid "\"RedStuff\"" +msgstr "\"RedStuff\"" + +#: docs/usage/web-api.md:139 +msgid "\"certifiedEpoch\"" +msgstr "\"certifiedEpoch\"" + +#: docs/usage/web-api.md:140 +msgid "\"storage\"" +msgstr "\"storage\"" + +#: docs/usage/web-api.md:141 +msgid "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" +msgstr "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" + +#: docs/usage/web-api.md:142 +msgid "\"startEpoch\"" +msgstr "\"startEpoch\"" + +#: docs/usage/web-api.md:143 docs/usage/web-api.md:167 +msgid "\"endEpoch\"" +msgstr "\"endEpoch\"" + +#: docs/usage/web-api.md:144 +msgid "\"storageSize\"" +msgstr "\"storageSize\"" + +#: docs/usage/web-api.md:147 +msgid "\"encodedSize\"" +msgstr "\"encodedSize\"" + +#: docs/usage/web-api.md:148 +msgid "\"cost\"" +msgstr "\"cost\"" + +#: docs/usage/web-api.md:153 +msgid "" +"The information returned is the content of the [Sui blob object](../dev-" +"guide/sui-struct.md)." +msgstr "返回的信息是 [Sui blob 对象](../dev-guide/sui-struct.md) 的内容。" + +#: docs/usage/web-api.md:155 +msgid "" +"When the aggregator finds a certified blob with the same blob ID and a " +"sufficient validity period, it returns a `alreadyCertified` JSON structure:" +msgstr "" +"当聚合器找到具有相同 blob ID 和足够有效期的已认证 blob 时,它会返回一个 " +"`alreadyCertified` JSON 结构:" + +#: docs/usage/web-api.md:161 +msgid "\"alreadyCertified\"" +msgstr "\"alreadyCertified\"" + +#: docs/usage/web-api.md:163 +msgid "\"event\"" +msgstr "\"event\"" + +#: docs/usage/web-api.md:164 +msgid "\"txDigest\"" +msgstr "\"txDigest\"" + +#: docs/usage/web-api.md:164 +msgid "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" +msgstr "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" + +#: docs/usage/web-api.md:165 +msgid "\"eventSeq\"" +msgstr "\"eventSeq\"" + +#: docs/usage/web-api.md:165 +msgid "\"0\"" +msgstr "\"0\"" + +#: docs/usage/web-api.md:172 +msgid "" +"The field `event` returns the [Sui event ID](../dev-guide/sui-struct.md) " +"that can be used to find the transaction that created the Sui Blob object on " +"the Sui explorer or using a Sui SDK." +msgstr "" +"字段 `event` 返回 [Sui 事件 ID](../dev-guide/sui-struct.md),可用于查找在 " +"Sui explorer 上创建 Sui Blob 对象的交易或使用 Sui SDK。" + +#: docs/usage/web-api.md:175 docs/dev-guide/dev-operations.md:48 +msgid "Read" +msgstr "读取" + +#: docs/usage/web-api.md:177 +msgid "" +"Blobs may be read from an aggregator or daemon using HTTP GET. For example, " +"the following cURL command reads a blob and writes it to an output file:" +msgstr "" +"可以使用 HTTP GET 从聚合器或守护进程读取 blob。例如,以下 cURL 命令读取一个 " +"blob 并将其写入输出文件:" + +#: docs/usage/web-api.md:181 docs/usage/web-api.md:187 +msgid "\"$AGGREGATOR/v1/\"" +msgstr "\"$AGGREGATOR/v1/\"" + +#: docs/usage/web-api.md:184 +msgid "" +"Alternatively you may print the contents of a blob in the terminal with the " +"cURL command:" +msgstr "或者,您可以使用 cURL 命令在终端中打印 blob 的内容:" + +#: docs/usage/web-api.md:190 +msgid "" +"```admonish tip title=\"Content sniffing\"\n" +"Modern browsers will attempt to sniff the content type for such resources, " +"and will generally do a\n" +"good job of inferring content types for media. However, the aggregator on " +"purpose prevents such\n" +"sniffing from inferring dangerous executable types such as JavaScript or " +"style sheet types.\n" +"```" +msgstr "" +"```admonish tip title=\"内容嗅探\"\n" +"现代浏览器会尝试嗅探此类资源的内容类型,并且通常会很好地推断媒体的内容类型。" +"然而,聚合器故意阻止此类\n" +"嗅探推断危险的可执行类型,例如 JavaScript 或样式表类型。\n" +"```" + +#: docs/dev-guide/dev-guide.md:5 +msgid "" +"This guide introduces all the concepts needed to build applications that use " +"Walrus as a storage or availability layer. The [overview](../design/overview." +"md) provides more background and explains in more detail how Walrus operates " +"internally." +msgstr "" +"本指南介绍了构建使用 Walrus 作为存储或可用性层的应用程序所需的所有概念。[概" +"述](../design/overview.md) 提供了更多背景信息,并更详细地解释了 Walrus 如何在" +"内部运行。" + +#: docs/dev-guide/dev-guide.md:9 +msgid "This developer guide describes the following:" +msgstr "本开发者指南描述了以下内容:" + +#: docs/dev-guide/dev-guide.md:11 +msgid "" +"[Components](components.md) of Walrus of interest to developers that wish to " +"use it for storage or availability." +msgstr "" +"开发人员感兴趣的 Walrus [组件](components.md),希望将其用于存储或可用性。" + +#: docs/dev-guide/dev-guide.md:13 +msgid "" +"[Operations](dev-operations.md) supported through client binaries, APIs, or " +"Sui operations." +msgstr "" +"通过客户端二进制文件、API 或 Sui 操作支持的 [操作](dev-operations.md)。" + +#: docs/dev-guide/dev-guide.md:14 +msgid "" +"[The Sui structures](sui-struct.md) Walrus uses to store metadata, and how " +"they can be read from Sui smart contracts, or through the Sui SDK." +msgstr "" +"Walrus 用于存储元数据的 [Sui 结构](sui-struct.md),以及如何从 Sui 智能合约中" +"读取它们,或通过 Sui SDK 读取它们。" + +#: docs/dev-guide/dev-guide.md:17 +msgid "Refer again to the [glossary](../glossary.md) of terms as a reference." +msgstr "再次参考术语 [词汇表](../glossary.md) 作为参考。" + +#: docs/dev-guide/components.md:5 +msgid "" +"From a developer perspective, some Walrus components are objects and smart " +"contracts on Sui, and some components are Walrus-specific binaries and " +"services. As a rule, Sui is used to manage blob and storage node metadata, " +"while Walrus-specific services are used to store and read blob contents, " +"which can be very large." +msgstr "" +"从开发人员的角度来看,一些 Walrus 组件是 Sui 上的对象和智能合约,一些组件是 " +"Walrus 特定的二进制文件和服务。通常,Sui 用于管理 blob 和存储节点元数据,而 " +"Walrus 特定的服务用于存储和读取 blob 内容,这些内容可能非常大。" + +#: docs/dev-guide/components.md:10 +msgid "Walrus defines a number of objects and smart contracts on Sui:" +msgstr "Walrus 在 Sui 上定义了许多对象和智能合约:" + +#: docs/dev-guide/components.md:12 +msgid "" +"A shared _system object_ records and manages the current committee of " +"storage nodes." +msgstr "共享的 _系统对象_ 记录和管理当前的存储节点委员会。" + +#: docs/dev-guide/components.md:13 +msgid "" +"_Storage resources_ represent empty storage space that may be used to store " +"blobs." +msgstr "_存储资源_ 代表可用于存储 blob 的空存储空间。" + +#: docs/dev-guide/components.md:14 +msgid "" +"_Blob resources_ represent blobs being registered and certified as stored." +msgstr "_Blob 资源_ 代表已注册并认证为存储的 blob。" + +#: docs/dev-guide/components.md:15 +msgid "Changes to these objects emit _Walrus-related events_." +msgstr "对这些对象的更改会发出 _Walrus 相关事件_。" + +#: docs/dev-guide/components.md:17 +msgid "" +"The Walrus system object ID can be found in the Walrus `client_config.yaml` " +"file (see [Configuration](../usage/setup.md#configuration)). You may use any " +"Sui explorer to look at its content, as well as explore the content of blob " +"objects. There is more information about these in the [quick reference to " +"the Walrus Sui structures](sui-struct.md)." +msgstr "" +"Walrus 系统对象 ID 可以在 Walrus `client_config.yaml` 文件中找到(请参阅 [配" +"置](../usage/setup.md#configuration))。您可以使用任何 Sui explorer 查看其内" +"容,并探索 blob 对象的内容。有关这些的更多信息,请参阅 [Walrus Sui 结构快速参" +"考](sui-struct.md)。" + +#: docs/dev-guide/components.md:22 +msgid "" +"Walrus is also composed of a number of Walrus-specific services and binaries:" +msgstr "Walrus 还由许多 Walrus 特定的服务和二进制文件组成:" + +#: docs/dev-guide/components.md:24 +msgid "" +"A client (binary) can be executed locally and provides a [Command Line " +"Interface (CLI)](../usage/client-cli.md), a [JSON API](../usage/json-api.md) " +"and an [HTTP API](../usage/web-api.md) to perform Walrus operations." +msgstr "" +"客户端(二进制文件)可以在本地执行,并提供 [命令行界面 (CLI)](../usage/" +"client-cli.md)、[JSON API](../usage/json-api.md) 和 [HTTP API](../usage/web-" +"api.md) 以执行 Walrus 操作。" + +#: docs/dev-guide/components.md:27 +msgid "Aggregator services allow reading blobs via HTTP requests." +msgstr "聚合器服务允许通过 HTTP 请求读取 blob。" + +#: docs/dev-guide/components.md:28 +msgid "Publisher services are used store blobs to Walrus." +msgstr "发布器服务用于将 blob 存储到 Walrus。" + +#: docs/dev-guide/components.md:29 +msgid "" +"A set of storage nodes store encoded blobs. These nodes form the " +"decentralized storage infrastructure of Walrus." +msgstr "" +"一组存储节点存储编码的 blob。这些节点构成了 Walrus 的去中心化存储基础设施。" + +#: docs/dev-guide/components.md:32 +msgid "" +"Aggregators, publishers, and other services use the client APIs to interact " +"with Walrus. End users of services using Walrus interact with the store via " +"custom services, aggregators, or publishers that expose HTTP APIs to avoid " +"the need to run locally a binary client." +msgstr "" +"聚合器、发布器和其他服务使用客户端 API 与 Walrus 交互。使用 Walrus 的服务的最" +"终用户通过公开 HTTP API 的自定义服务、聚合器或发布器与存储交互,以避免在本地" +"运行二进制客户端的需要。" + +#: docs/dev-guide/dev-operations.md:5 +msgid "Blob encoding and blob ID" +msgstr "Blob 编码和 blob ID" + +#: docs/dev-guide/dev-operations.md:7 +msgid "" +"Walrus stores blobs across storage nodes in an [encoded form](../design/" +"encoding.md), and refers to blobs by their _blob ID_. The blob ID is " +"deterministically derived from the content of a blob and the Walrus " +"configuration. The blob ID of two files with the same content will be the " +"same." +msgstr "" +"Walrus 以 [编码形式](../design/encoding.md) 在存储节点之间存储 blob,并通过" +"其 _blob ID_ 引用 blob。blob ID 是从 blob 的内容和 Walrus 配置中确定性派生" +"的。具有相同内容的两个文件的 blob ID 将是相同的。" + +#: docs/dev-guide/dev-operations.md:11 +msgid "" +"You can derive the blob ID of a file locally using the command: `walrus blob-" +"id `." +msgstr "您可以使用命令在本地派生文件的 blob ID:`walrus blob-id `。" + +#: docs/dev-guide/dev-operations.md:15 +msgid "" +"Walrus may be used to **store a blob**, via the native client APIs or a " +"publisher." +msgstr "Walrus 可以通过本机客户端 API 或发布器 **存储 blob**。" + +#: docs/dev-guide/dev-operations.md:23 +msgid "" +"Under the hood a number of operations happen both on Sui as well as on " +"storage nodes:" +msgstr "在底层,一些操作同时发生在 Sui 和存储节点上:" + +#: docs/dev-guide/dev-operations.md:25 +msgid "" +"The client or publisher encodes the blob and derives a _blob ID_ that " +"identifies the blob. This is a `u256` often encoded as a URL-safe base64 " +"string." +msgstr "" +"客户端或发布器对 blob 进行编码并派生一个标识 blob 的 _blob ID_。这是一个 " +"`u256`,通常编码为 URL 安全的 base64 字符串。" + +#: docs/dev-guide/dev-operations.md:27 +msgid "" +"A transaction is executed on Sui to purchase some storage from the system " +"object, and then to _register the blob ID_ occupying this storage. Client " +"APIs return the _Sui blob object ID_. The transactions use SUI to purchase " +"storage and pay for gas." +msgstr "" +"在 Sui 上执行交易以从系统对象购买一些存储,然后 _注册占用此存储的 blob ID_。" +"客户端 API 返回 _Sui blob 对象 ID_。交易使用 SUI 购买存储并支付 gas。" + +#: docs/dev-guide/dev-operations.md:30 +msgid "" +"Encoded slivers of the blob are distributed to all storage nodes. They each " +"sign a receipt." +msgstr "blob 的编码片段分发到所有存储节点。它们每个都签署一份收据。" + +#: docs/dev-guide/dev-operations.md:31 +msgid "" +"Signed receipts are aggregated and submitted to the Sui blob object to " +"_certify the blob_. Certifying a blob emits a Sui event with the blob ID and " +"the period of availability." +msgstr "" +"签署的收据被汇总并提交给 Sui blob 对象以 _认证 blob_。认证 blob 会发出一个包" +"含 blob ID 和可用期的 Sui 事件。" + +#: docs/dev-guide/dev-operations.md:34 +msgid "" +"A blob is considered available on Walrus once the corresponding Sui blob " +"object has been certified in the final step. The steps involved in a store " +"operation can be executed by the binary client, or a publisher that accepts " +"and publishes blobs via HTTP." +msgstr "" +"一旦在最后一步中认证了相应的 Sui blob 对象,blob 就被认为在 Walrus 上可用。存" +"储操作中涉及的步骤可以由二进制客户端执行,或者由通过 HTTP 接受和发布 blob 的" +"发布器执行。" + +#: docs/dev-guide/dev-operations.md:38 +msgid "" +"Walrus currently allows the storage of blobs up to a maximum size that may " +"be determined through the [`walrus info`](../usage/client-cli.md#walrus-" +"system-information) CLI command. The maximum blob size is currently " +"13.3 GiB. You may store larger blobs by splitting them into smaller chunks." +msgstr "" +"Walrus 目前允许存储的 blob 最大大小可以通过 [`walrus info`](../usage/client-" +"cli.md#walrus-system-information) CLI 命令确定。当前最大 blob 大小为 13.3 " +"GiB。您可以通过将它们拆分为更小的块来存储更大的 blob。" + +#: docs/dev-guide/dev-operations.md:43 +msgid "" +"Blobs are stored for a certain number of _epochs_, as specified at the time " +"they were stored. Walrus storage nodes ensure that within these epochs a " +"read succeeds. The current Testnet uses a short epoch duration of one day " +"for testing purposes, but Mainnet epochs are likely to be longer such as " +"many weeks each." +msgstr "" +"blob 存储了指定数量的 _epochs_,在存储时指定。Walrus 存储节点确保在这些 " +"epochs 内读取成功。当前的测试网使用一天的短 epoch 持续时间进行测试,但主网 " +"epochs 可能会更长,例如每个 epoch 持续数周。" + +#: docs/dev-guide/dev-operations.md:50 +msgid "" +"Walrus can also be used to **read a blob** after it is stored by providing " +"its blob ID. A read is executed by performing the following steps:" +msgstr "" +"Walrus 还可以在存储后通过提供其 blob ID 来 **读取 blob**。读取通过执行以下步" +"骤来执行:" + +#: docs/dev-guide/dev-operations.md:53 +msgid "" +"The system object on Sui is read to determine the Walrus storage node " +"committee." +msgstr "读取 Sui 上的系统对象以确定 Walrus 存储节点委员会。" + +#: docs/dev-guide/dev-operations.md:54 +msgid "" +"A number of storage nodes are queried for blob metadata and the slivers they " +"store." +msgstr "查询多个存储节点以获取 blob 元数据和它们存储的片段。" + +#: docs/dev-guide/dev-operations.md:55 +msgid "" +"The blob is reconstructed from the recovered slivers and checked against the " +"blob ID." +msgstr "从恢复的片段中重建 blob,并根据 blob ID 进行检查。" + +#: docs/dev-guide/dev-operations.md:57 +msgid "" +"The steps involved in the read operation are performed by the binary client, " +"or the aggregator service that exposes an HTTP interface to read blobs. " +"Reads are extremely resilient and will succeed in recovering the blob in all " +"cases even if up to one-third of storage nodes are unavailable. In most " +"cases, after synchronization is complete, blob can be read even if two-" +"thirds of storage nodes are down." +msgstr "" +"读取操作中涉及的步骤由二进制客户端执行,或由公开 HTTP 接口读取 blob 的聚合器" +"服务执行。读取具有极高的弹性,即使多达三分之一的存储节点不可用,也能成功恢复 " +"blob。在大多数情况下,同步完成后,即使三分之二的存储节点宕机,也可以读取 " +"blob。" + +#: docs/dev-guide/dev-operations.md:63 +msgid "Certify Availability" +msgstr "认证可用性" + +#: docs/dev-guide/dev-operations.md:65 +msgid "" +"Walrus can be used to **certify the availability of a blob** using Sui. " +"Checking that this happened may currently be done in 3 different ways:" +msgstr "" +"Walrus 可以使用 Sui **认证 blob 的可用性**。目前可以通过 3 种不同的方式检查是" +"否发生了这种情况:" + +#: docs/dev-guide/dev-operations.md:68 +msgid "" +"A Sui SDK read can be used to authenticate the certified blob event emitted " +"when the blob ID was certified on Sui. The client `walrus blob-status` " +"command may be used to identify the event ID that needs to be checked." +msgstr "" +"Sui SDK 读取可用于验证在 Sui 上认证 blob ID 时发出的认证 blob 事件。客户端 " +"`walrus blob-status` 命令可用于识别需要检查的事件 ID。" + +#: docs/dev-guide/dev-operations.md:71 +msgid "" +"A Sui SDK read may be used to authenticate the Sui blob object corresponding " +"to the blob ID, and check it is certified, before the expiry epoch, and not " +"deletable." +msgstr "" +"Sui SDK 读取可用于验证与 blob ID 对应的 Sui blob 对象,并检查其是否在到期 " +"epoch 之前认证且不可删除。" + +#: docs/dev-guide/dev-operations.md:74 +msgid "" +"A Sui smart contract can read the blob object on Sui (or a reference to it) " +"to check it is certified, before the expiry epoch, and not deletable." +msgstr "" +"Sui 智能合约可以读取 Sui 上的 blob 对象(或其引用),以检查其是否在到期 " +"epoch 之前认证且不可删除。" + +#: docs/dev-guide/dev-operations.md:77 +msgid "" +"The underlying protocol of the [Sui light client](https://github.com/" +"MystenLabs/sui/tree/main/crates/sui-light-client) returns digitally signed " +"evidence for emitted events or objects, and can be used by off-line or non-" +"interactive applications as a proof of availability for the blob ID for a " +"certain number of epochs." +msgstr "" +"[Sui 轻客户端](https://github.com/MystenLabs/sui/tree/main/crates/sui-light-" +"client) 的底层协议返回发出事件或对象的数字签名证据,可由离线或非交互式应用程" +"序用作 blob ID 在一定数量的 epochs 内的可用性证明。" + +#: docs/dev-guide/dev-operations.md:83 +msgid "" +"Once a blob is certified, Walrus will ensure that sufficient slivers will " +"always be available on storage nodes to recover it within the specified " +"epochs." +msgstr "" +"一旦 blob 被认证,Walrus 将确保在指定的 epochs 内,存储节点上始终有足够的片段" +"可用于恢复它。" + +#: docs/dev-guide/dev-operations.md:86 +msgid "Delete" +msgstr "删除" + +#: docs/dev-guide/dev-operations.md:88 +msgid "" +"Stored blobs can be optionally set as deletable by the user that creates " +"them. This metadata is stored in the Sui blob object, and whether a blob is " +"deletable or not is included in certified blob events. A deletable blob may " +"be deleted by the owner of the blob object, to reclaim and re-use the " +"storage resource associated with it." +msgstr "" +"存储的 blob 可以由创建它们的用户选择设置为可删除。此元数据存储在 Sui blob 对" +"象中,blob 是否可删除包含在认证 blob 事件中。可删除的 blob 可以由 blob 对象的" +"所有者删除,以回收和重新使用与其关联的存储资源。" + +#: docs/dev-guide/dev-operations.md:93 +msgid "" +"If no other copies of the blob exist in Walrus, deleting a blob will " +"eventually make it unrecoverable using read commands. However, if other " +"copies of the blob exist on Walrus, a delete command will reclaim storage " +"space for the user that invoked it, but will not make the blob unavailable " +"until all other copies have been deleted or expire." +msgstr "" +"如果 Walrus 中不存在 blob 的其他副本,删除 blob 最终将使其无法通过读取命令恢" +"复。然而,如果 Walrus 中存在 blob 的其他副本,删除命令将为调用它的用户回收存" +"储空间,但在所有其他副本被删除或过期之前,不会使 blob 不可用。" + +#: docs/dev-guide/sui-struct.md:3 +msgid "Sui Structures" +msgstr "Sui 结构" + +#: docs/dev-guide/sui-struct.md:5 +msgid "This section is optional and enables advanced use cases." +msgstr "本节是可选的,并启用高级用例。" + +#: docs/dev-guide/sui-struct.md:7 +msgid "" +"You can interact with Walrus purely through the client CLI, and JSON or HTTP " +"APIs provided, without querying or executing transactions on Sui directly. " +"However, Walrus uses Sui to manage its metadata and smart contract " +"developers can read information about the Walrus system, as well as stored " +"blobs, on Sui." +msgstr "" +"您可以纯粹通过客户端 CLI 以及提供的 JSON 或 HTTP API 与 Walrus 交互,而无需直" +"接在 Sui 上查询或执行交易。然而,Walrus 使用 Sui 来管理其元数据,智能合约开发" +"人员可以在 Sui 上读取有关 Walrus 系统以及存储的 blob 的信息。" + +#: docs/dev-guide/sui-struct.md:12 +msgid "" +"The Move code of the Walrus Testnet contracts is available at . An example package " +"using the Walrus contracts is available at ." +msgstr "" +"Walrus 测试网合约的 Move 代码可在 获取。使用 Walrus 合约的示例包可在 获取。" + +#: docs/dev-guide/sui-struct.md:17 +msgid "" +"The following sections provide further insights into the contract and an " +"overview of how you may use Walrus objects in your own Sui smart contracts." +msgstr "" +"以下部分提供了对合约的进一步见解,并概述了如何在您自己的 Sui 智能合约中使用 " +"Walrus 对象。" + +#: docs/dev-guide/sui-struct.md:20 +msgid "" +"```admonish danger title=\"A word of caution\"\n" +"Walrus Mainnet will use new Move packages with `struct` layouts and function " +"signatures that may not\n" +"be compatible with this package. Move code that builds against this package " +"will need to rewritten.\n" +"```" +msgstr "" +"```admonish danger title=\"注意\"\n" +"Walrus 主网将使用新的 Move 包,其中 `struct` 布局和函数签名可能与此包不兼容。" +"针对该包构建的 Move 代码需要重写。\n" +"```" + +#: docs/dev-guide/sui-struct.md:25 +msgid "Blob and storage objects" +msgstr "Blob 和存储对象" + +#: docs/dev-guide/sui-struct.md:27 +msgid "" +"Walrus blobs are represented as Sui objects of type `Blob`. A blob is first " +"registered, indicating that the storage nodes should expect slivers from a " +"Blob ID to be stored. Then a blob is certified, indicating that a sufficient " +"number of slivers have been stored to guarantee the blob's availability. " +"When a blob is certified, its `certified_epoch` field contains the epoch in " +"which it was certified." +msgstr "" +"Walrus blob 表示为类型为 `Blob` 的 Sui 对象。首先注册一个 blob,表示存储节点" +"应期望存储来自 Blob ID 的片段。然后认证一个 blob,表示已存储足够数量的片段以" +"保证 blob 的可用性。当一个 blob 被认证时,其 `certified_epoch` 字段包含其被认" +"证的 epoch。" + +#: docs/dev-guide/sui-struct.md:33 +msgid "" +"A `Blob` object is always associated with a `Storage` object, reserving " +"enough space for a long enough period for the blob's storage. A certified " +"blob is available for the period the underlying storage resource guarantees " +"storage." +msgstr "" +"`Blob` 对象始终与 `Storage` 对象相关联,为 blob 的存储保留足够长时间的足够空" +"间。认证的 blob 在底层存储资源保证存储的期间内可用。" + +#: docs/dev-guide/sui-struct.md:37 +msgid "" +"Concretely, `Blob` and `Storage` objects have the following fields, which " +"can be read through the Sui SDKs:" +msgstr "" +"具体来说,`Blob` 和 `Storage` 对象具有以下字段,可以通过 Sui SDK 读取:" + +#: docs/dev-guide/sui-struct.md:40 +msgid "" +"```move\n" +"\n" +"/// The blob structure represents a blob that has been registered to with " +"some storage,\n" +"/// and then may eventually be certified as being available in the system.\n" +"public struct Blob has key, store {\n" +" id: UID,\n" +" registered_epoch: u32,\n" +" blob_id: u256,\n" +" size: u64,\n" +" encoding_type: u8,\n" +" // Stores the epoch first certified.\n" +" certified_epoch: option::Option,\n" +" storage: Storage,\n" +" // Marks if this blob can be deleted.\n" +" deletable: bool,\n" +"}\n" +"\n" +"/// Reservation for storage for a given period, which is inclusive start, " +"exclusive end.\n" +"public struct Storage has key, store {\n" +" id: UID,\n" +" start_epoch: u32,\n" +" end_epoch: u32,\n" +" storage_size: u64,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:66 +msgid "" +"All fields of `Blob` and `Storage` objects can be read using the expected " +"functions:" +msgstr "`Blob` 和 `Storage` 对象的所有字段都可以使用预期的函数读取:" + +#: docs/dev-guide/sui-struct.md:68 +msgid "" +"```move\n" +"// Blob functions\n" +"public fun blob_id(b: &Blob): u256;\n" +"public fun size(b: &Blob): u64;\n" +"public fun erasure_code_type(b: &Blob): u8;\n" +"public fun registered_epoch(self: &Blob): u32;\n" +"public fun certified_epoch(b: &Blob): &Option;\n" +"public fun storage(b: &Blob): &Storage;\n" +"...\n" +"\n" +"// Storage functions\n" +"public fun start_epoch(self: &Storage): u32;\n" +"public fun end_epoch(self: &Storage): u32;\n" +"public fun storage_size(self: &Storage): u64;\n" +"...\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:85 +msgid "Events" +msgstr "事件" + +#: docs/dev-guide/sui-struct.md:87 +msgid "" +"When a blob is first registered, a `BlobRegistered` event is emitted that " +"informs storage nodes that they should expect slivers associated with its " +"Blob ID. Eventually when the blob is certified, a `BlobCertified` is emitted " +"containing information about the blob ID and the epoch after which the blob " +"will be deleted. Before that epoch the blob is guaranteed to be available." +msgstr "" +"当一个 blob 首次注册时,会发出一个 `BlobRegistered` 事件,通知存储节点它们应" +"该期望与其 Blob ID 相关的片段。最终,当 blob 被认证时,会发出一个 " +"`BlobCertified` 事件,其中包含有关 blob ID 和 blob 将被删除的 epoch 的信息。" +"在该 epoch 之前,blob 保证可用。" + +#: docs/dev-guide/sui-struct.md:92 +msgid "" +"```move\n" +"/// Signals that a blob with metadata has been registered.\n" +"public struct BlobRegistered has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" size: u64,\n" +" encoding_type: u8,\n" +" end_epoch: u32,\n" +" deletable: bool,\n" +" // The object id of the related `Blob` object\n" +" object_id: ID,\n" +"}\n" +"\n" +"/// Signals that a blob is certified.\n" +"public struct BlobCertified has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" end_epoch: u32,\n" +" deletable: bool,\n" +" // The object id of the related `Blob` object\n" +" object_id: ID,\n" +" // Marks if this is an extension for explorers, etc.\n" +" is_extension: bool,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:118 +msgid "" +"The `BlobCertified` event with `deletable` set to false and a `end_epoch` in " +"the future indicates that the blob will be available until this epoch. A " +"light client proof this event was emitted for a blob ID constitutes a proof " +"of availability for the data with this blob ID." +msgstr "" +"`BlobCertified` 事件中 `deletable` 设置为 false 且 `end_epoch` 在未来,表示" +"该 blob 将在此 epoch 之前可用。轻客户端证明此事件为 blob ID 发出,构成该 " +"blob ID 数据的可用性证明。" + +#: docs/dev-guide/sui-struct.md:122 +msgid "When a deletable blob is deleted, a `BlobDeleted` event is emitted:" +msgstr "当一个可删除的 blob 被删除时,会发出一个 `BlobDeleted` 事件:" + +#: docs/dev-guide/sui-struct.md:124 +msgid "" +"```move\n" +"/// Signals that a blob has been deleted.\n" +"public struct BlobDeleted has copy, drop {\n" +" epoch: u32,\n" +" blob_id: u256,\n" +" end_epoch: u32,\n" +" // The object ID of the related `Blob` object.\n" +" object_id: ID,\n" +" // If the blob object was previously certified.\n" +" was_certified: bool,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:137 +msgid "" +"The `InvalidBlobID` event is emitted when storage nodes detect an " +"incorrectly encoded blob. Anyone attempting a read on such a blob is " +"guaranteed to also detect it as invalid." +msgstr "" +"当存储节点检测到编码错误的 blob 时,会发出 `InvalidBlobID` 事件。任何尝试读取" +"此类 blob 的人都保证会将其检测为无效。" + +#: docs/dev-guide/sui-struct.md:140 +msgid "" +"```move\n" +"/// Signals that a BlobID is invalid.\n" +"public struct InvalidBlobID has copy, drop {\n" +" epoch: u32, // The epoch in which the blob ID is first registered as " +"invalid\n" +" blob_id: u256,\n" +"}\n" +"```" +msgstr "" + +#: docs/dev-guide/sui-struct.md:148 +msgid "" +"System level events such as `EpochChangeStart` and `EpochChangeDone` " +"indicate transitions between epochs. And associated events such as " +"`ShardsReceived`, `EpochParametersSelected`, and `ShardRecoveryStart` " +"indicate storage node level events related to epoch transitions, shard " +"migrations and epoch parameters." +msgstr "" +"系统级事件如 `EpochChangeStart` 和 `EpochChangeDone` 表示 epoch 之间的过渡。" +"相关事件如 `ShardsReceived`、`EpochParametersSelected` 和 " +"`ShardRecoveryStart` 表示与 epoch 过渡、分片迁移和 epoch 参数相关的存储节点级" +"事件。" + +#: docs/dev-guide/sui-struct.md:153 +msgid "System and staking information" +msgstr "系统和质押信息" + +#: docs/dev-guide/sui-struct.md:155 +msgid "" +"The Walrus system object contains metadata about the available and used " +"storage, as well as the price of storage per KiB of storage in FROST. The " +"committee structure within the system object can be used to read the current " +"epoch number, as well as information about the committee." +msgstr "" +"Walrus 系统对象包含有关可用和已用存储的元数据,以及每 KiB 存储的 FROST 存储价" +"格。系统对象内的委员会结构可用于读取当前的 epoch 编号以及有关委员会的信息。" + +#: docs/dev-guide/sui-struct.md:160 +msgid "" +"```move\n" +"public struct SystemStateInnerV1 has key, store {\n" +" id: UID,\n" +" /// The current committee, with the current epoch.\n" +" committee: BlsCommittee,\n" +" // Some accounting\n" +" total_capacity_size: u64,\n" +" used_capacity_size: u64,\n" +" /// The price per unit size of storage.\n" +" storage_price_per_unit_size: u64,\n" +" /// The write price per unit size.\n" +" write_price_per_unit_size: u64,\n" +" /// Accounting ring buffer for future epochs.\n" +" future_accounting: FutureAccountingRingBuffer,\n" +" /// Event blob certification state\n" +" event_blob_certification_state: EventBlobCertificationState,\n" +"}\n" +"\n" +"/// This represents a BLS signing committee for a given epoch.\n" +"public struct BlsCommittee has store, copy, drop {\n" +" /// A vector of committee members\n" +" members: vector,\n" +" /// The total number of shards held by the committee\n" +" n_shards: u16,\n" +" /// The epoch in which the committee is active.\n" +" epoch: u32,\n" +"}\n" +"\n" +"public struct BlsCommitteeMember has store, copy, drop {\n" +" public_key: Element,\n" +" weight: u16,\n" +" node_id: ID,\n" +"}\n" +"\n" +"```" +msgstr "" + +#: docs/operator-guide/operator-guide.md:5 +msgid "" +"This chapter introduces all the concepts needed for operators of the " +"different components that make up the Walrus system. It is currently a work " +"in progress and will be updated as the platform matures." +msgstr "" +"本章介绍了 Walrus 系统中不同组件的操作员所需的所有概念。目前正在进行中,随着" +"平台的成熟将会更新。" + +#: docs/operator-guide/operator-guide.md:9 +msgid "Specifically, this guide describes the following:" +msgstr "具体来说,本指南描述了以下内容:" + +#: docs/operator-guide/operator-guide.md:11 +msgid "" +"[Storage node](storage-node.md) contains the most relevant instructions for " +"operators of a Walrus storage node." +msgstr "[存储节点](storage-node.md) 包含了 Walrus 存储节点操作员的最相关指令。" + +#: docs/operator-guide/operator-guide.md:13 +msgid "" +"[Aggregator](aggregator.md) describes the operation of a Walrus aggregator " +"host." +msgstr "[聚合器](aggregator.md) 描述了 Walrus 聚合器主机的操作。" + +#: docs/operator-guide/storage-node.md:3 +msgid "Operating a storage node" +msgstr "操作存储节点" + +#: docs/operator-guide/storage-node.md:6 +msgid "" +"The binary of the storage node is not yet publicly available. Prior to " +"official network launch the code will be open-sourced." +msgstr "存储节点的二进制文件尚未公开。在正式网络启动之前,代码将开源。" + +#: docs/operator-guide/storage-node.md:9 +msgid "A basic systemd service running the Storage Node could look like this:" +msgstr "运行存储节点的基本 systemd 服务可能如下所示:" + +#: docs/operator-guide/storage-node.md:25 +msgid "Make sure to adjust any paths and, if desired, the log level." +msgstr "确保调整任何路径,并根据需要调整日志级别。" + +#: docs/operator-guide/storage-node.md:27 +msgid "" +"The `walrus-node` binary stores slivers in RocksDB, which means the data " +"will be stored on disk, to a path configured by the `/opt/walrus/config/" +"walrus-node.yaml` file. The full format with all mandatory and optional " +"configuration parameters will be made available with the binary." +msgstr "" +"`walrus-node` 二进制文件将片段存储在 RocksDB 中,这意味着数据将存储在磁盘上," +"路径由 `/opt/walrus/config/walrus-node.yaml` 文件配置。包含所有必需和可选配置" +"参数的完整格式将与二进制文件一起提供。" + +#: docs/operator-guide/storage-node.md:31 +msgid "" +"Here are some important config params from a shortened version of the " +"`walrus-node.yaml` config file:" +msgstr "以下是 `walrus-node.yaml` 配置文件简化版本中的一些重要配置参数:" + +#: docs/operator-guide/storage-node.md:35 +msgid "storage_path" +msgstr "storage_path" + +#: docs/operator-guide/storage-node.md:35 +msgid "/opt/walrus/db" +msgstr "/opt/walrus/db" + +#: docs/operator-guide/storage-node.md:35 +msgid "metrics_address" +msgstr "metrics_address" + +#: docs/operator-guide/storage-node.md:36 +msgid "127.0.0.1:9184" +msgstr "127.0.0.1:9184" + +#: docs/operator-guide/storage-node.md:36 +msgid "rest_api_address" +msgstr "rest_api_address" + +#: docs/operator-guide/storage-node.md:37 +msgid "0.0.0.0:9185" +msgstr "0.0.0.0:9185" + +#: docs/operator-guide/storage-node.md:37 +msgid "sui" +msgstr "sui" + +#: docs/operator-guide/storage-node.md:39 +msgid "rpc" +msgstr "rpc" + +#: docs/operator-guide/storage-node.md:39 +msgid "https://fullnode.testnet.sui.io:443" +msgstr "https://fullnode.testnet.sui.io:443" + +#: docs/operator-guide/storage-node.md:40 +msgid "0xWALRUS_CONTRACT" +msgstr "0xWALRUS_CONTRACT" + +#: docs/operator-guide/storage-node.md:40 +msgid "blob_recovery" +msgstr "blob_recovery" + +#: docs/operator-guide/storage-node.md:42 +msgid "max_concurrent_blob_syncs" +msgstr "max_concurrent_blob_syncs" + +#: docs/operator-guide/storage-node.md:43 +msgid "retry_interval_min_secs" +msgstr "retry_interval_min_secs" + +#: docs/operator-guide/storage-node.md:44 +msgid "retry_interval_max_secs" +msgstr "retry_interval_max_secs" + +#: docs/operator-guide/storage-node.md:45 +msgid "metadata_request_timeout_secs" +msgstr "metadata_request_timeout_secs" + +#: docs/operator-guide/storage-node.md:46 +msgid "max_concurrent_metadata_requests" +msgstr "max_concurrent_metadata_requests" + +#: docs/operator-guide/storage-node.md:47 +msgid "sliver_request_timeout_secs" +msgstr "sliver_request_timeout_secs" + +#: docs/operator-guide/storage-node.md:48 +msgid "invalidity_sync_timeout_secs" +msgstr "invalidity_sync_timeout_secs" + +#: docs/operator-guide/storage-node.md:51 +msgid "" +"For monitoring, you can configure Grafana Agent to fetch metrics from " +"`localhost:9184/metrics` (or whatever you've configured `metrics_address` to " +"be)." +msgstr "" +"对于监控,您可以配置 Grafana Agent 从 `localhost:9184/metrics`(或您配置的 " +"`metrics_address`)获取指标。" + +#: docs/operator-guide/aggregator.md:3 +msgid "Operating an aggregator" +msgstr "操作聚合器" + +#: docs/operator-guide/aggregator.md:6 +msgid "" +"Below is an example of an aggregator node which hosts a HTTP endpoint that " +"can be used to fetch data from Walrus over the web." +msgstr "" +"以下是一个聚合器节点的示例,该节点托管一个 HTTP 端点,可用于通过网络从 " +"Walrus 获取数据。" + +#: docs/operator-guide/aggregator.md:9 +msgid "" +"The aggregator process is run via the `walrus` client binary in [daemon mode]" +"(../usage/web-api.md). It can be run in many ways, one example being via a " +"systemd service:" +msgstr "" +"聚合器进程通过 `walrus` 客户端二进制文件以 [守护进程模式](../usage/web-api." +"md) 运行。它可以通过多种方式运行,其中一个示例是通过 systemd 服务:" + +#: docs/usage/stake.md:3 +msgid "Staking" +msgstr "质押" + +#: docs/usage/stake.md:5 +msgid "" +"In Walrus, anyone can delegate stake to storage nodes and, by doing so, " +"influence, which storage nodes get selected for the committee in future " +"epochs, and how many shards these nodes will hold. Shards are assigned to " +"storage nodes every epoch, roughly proportional to the amount of stake that " +"was delegated to them. By staking with a storage node, users also earn " +"rewards, as they will receive a share of the storage fees." +msgstr "" +"在 Walrus 中,任何人都可以将质押委托给存储节点,并通过这样做,影响哪些存储节" +"点在未来的 epoch 中被选为委员会成员,以及这些节点将持有多少分片。每个 epoch " +"都会将分片分配给存储节点,大致与委托给它们的质押量成比例。通过与存储节点质" +"押,用户还可以获得奖励,因为他们将获得存储费用的一部分。" + +#: docs/usage/stake.md:11 +msgid "" +"Since moving shards from one storage node to another requires transferring a " +"lot of data, and storage nodes potentially need to expand their storage " +"capacity, the selection of the committee for the next epoch is done ahead of " +"time, in the middle of the previous epoch. This provides sufficient time to " +"storage-node operators to provision additional resources, if needed." +msgstr "" +"由于将分片从一个存储节点移动到另一个存储节点需要传输大量数据,并且存储节点可" +"能需要扩展其存储容量,因此下一 epoch 的委员会选择提前进行,在前一个 epoch 的" +"中间进行。这为存储节点操作员提供了足够的时间来提供额外的资源(如果需要)。" + +#: docs/usage/stake.md:16 +msgid "" +"For stake to affect the shard distribution in epoch `e` and become " +"\"active\", it must be staked before the committee for this epoch has been " +"selected, meaning that it has to be staked before the midpoint of epoch `e - " +"1`. If it is staked after that point in time, it will only influence the " +"committee selection for epoch `e + 1` and thus only become active, and " +"accrue rewards, in that epoch." +msgstr "" +"为了使质押影响 epoch `e` 中的分片分配并变得“活跃”,必须在该 epoch 的委员会选" +"出之前进行质押,这意味着必须在 epoch `e - 1` 的中点之前进行质押。如果在那个时" +"间点之后进行质押,它将只影响 epoch `e + 1` 的委员会选择,因此只在那个 epoch " +"中变得活跃并获得奖励。" + +#: docs/usage/stake.md:22 +msgid "" +"Unstaking has a similar delay: because unstaking funds only has an effect on " +"the committee in the next committee selection, the stake will remain active " +"until that committee takes over. This means that, to unstake at the start of " +"epoch `e`, the user needs to \"request withdrawal\" before the midpoint of " +"epoch `e - 1`. Otherwise, that is, if the user unstakes after this point, " +"the stake will remain active, and continue to accrue rewards, throughout " +"epoch `e`, and the balance and rewards will be available to withdraw at the " +"start of epoch `e + 1`." +msgstr "" +"解除质押有类似的延迟:因为解除质押资金只会在下一次委员会选择中生效,所以质押" +"将保持活跃状态,直到该委员会接管。这意味着,要在 epoch `e` 开始时解除质押,用" +"户需要在 epoch `e - 1` 的中点之前“请求提款”。否则,也就是说,如果用户在此时间" +"点之后解除质押,质押将保持活跃状态,并在整个 epoch `e` 期间继续累积奖励,余额" +"和奖励将在 epoch `e + 1` 开始时可供提取。" + +#: docs/usage/stake.md:29 +msgid "How to stake with the Walrus Staking dApp" +msgstr "如何使用 Walrus 质押 dApp 进行质押" + +#: docs/usage/stake.md:31 +msgid "" +"The Walrus Staking dApp allows users to stake (or unstake) to any of the " +"storage nodes of the system." +msgstr "" +"Walrus 质押 dApp 允许用户对系统中的任何存储节点进行质押(或解除质押)。" + +#: docs/usage/stake.md:34 +msgid "" +"To use the dApp, visit and connect your wallet:" +msgstr "要使用 dApp,请访问 并连接您的钱包:" + +#: docs/usage/stake.md:36 +msgid "Click the `Connect Wallet` button at the top right corner." +msgstr "点击右上角的 `连接钱包` 按钮。" + +#: docs/usage/stake.md:37 +msgid "" +"Select the wallet (if the wallet was connected before, this and the next " +"step won't be required)." +msgstr "选择钱包(如果之前已连接钱包,则此步骤和下一步将不需要)。" + +#: docs/usage/stake.md:38 +msgid "Approve the connection." +msgstr "批准连接。" + +#: docs/usage/stake.md:39 +msgid "(Make sure the selected wallet network is Testnet)." +msgstr "(确保选择的钱包网络是测试网)。" + +#: docs/usage/stake.md:41 +msgid "Exchange Testnet SUI to WAL" +msgstr "将测试网 SUI 兑换为 WAL" + +#: docs/usage/stake.md:43 +msgid "" +"To be able to stake you will need to have Testnet WAL in your wallet. You " +"can exchange your Testnet SUI to WAL using the dApp as follows:" +msgstr "" +"要进行质押,您需要在钱包中拥有测试网 WAL。您可以使用 dApp 将测试网 SUI 兑换" +"为 WAL,方法如下:" + +#: docs/usage/stake.md:46 +msgid "Click the `Get WAL` button." +msgstr "点击 `获取 WAL` 按钮。" + +#: docs/usage/stake.md:47 +msgid "Select the amount of SUI. This will be exchanged to WAL at a 1:1 rate." +msgstr "选择 SUI 的数量。这将以 1:1 的比例兑换为 WAL。" + +#: docs/usage/stake.md:48 +msgid "And click `Exchange`." +msgstr "然后点击 `兑换`。" + +#: docs/usage/stake.md:49 docs/usage/stake.md:60 docs/usage/stake.md:70 +msgid "_Follow the instructions in your wallet to approve the transaction._" +msgstr "_按照钱包中的说明批准交易。_" + +#: docs/usage/stake.md:51 +msgid "Stake" +msgstr "质押" + +#: docs/usage/stake.md:53 +msgid "Find the storage node that you want to stake to." +msgstr "找到您要质押的存储节点。" + +#: docs/usage/stake.md:54 +msgid "" +"Below the system stats, there is the list of the \"Current Committee\" of " +"storage nodes." +msgstr "在系统统计信息下方,有一个“当前委员会”存储节点的列表。" + +#: docs/usage/stake.md:55 +msgid "" +"You can select one of the nodes in that list or, if the storage node is not " +"in the current committee, you find all the storage nodes at the bottom of " +"the page." +msgstr "" +"您可以选择该列表中的一个节点,或者,如果存储节点不在当前委员会中,您可以在页" +"面底部找到所有存储节点。" + +#: docs/usage/stake.md:57 +msgid "Once you selected the storage node, click the stake button." +msgstr "选择存储节点后,点击质押按钮。" + +#: docs/usage/stake.md:58 +msgid "Select the amount of WAL." +msgstr "选择 WAL 的数量。" + +#: docs/usage/stake.md:59 +msgid "Click Stake." +msgstr "点击质押。" + +#: docs/usage/stake.md:62 +msgid "Unstake" +msgstr "解除质押" + +#: docs/usage/stake.md:64 +msgid "Find the `Staked WAL` you want to unstake." +msgstr "找到您要解除质押的 `质押 WAL`。" + +#: docs/usage/stake.md:65 +msgid "" +"Below the \"Current Committee\" list you will find all your `Staked WAL`." +msgstr "在“当前委员会”列表下方,您将找到所有的 `质押 WAL`。" + +#: docs/usage/stake.md:66 +msgid "" +"Also you can expand a storage node and find all your stakes with that node." +msgstr "您还可以展开一个存储节点,找到与该节点相关的所有质押。" + +#: docs/usage/stake.md:67 +msgid "" +"Depending on the state of the `Staked WAL` you will be able to unstake or " +"Withdraw your funds." +msgstr "根据 `质押 WAL` 的状态,您将能够解除质押或提取资金。" + +#: docs/usage/stake.md:68 +msgid "Click the `Unstake` or `Withdraw` button." +msgstr "点击 `解除质押` 或 `提取` 按钮。" + +#: docs/usage/stake.md:69 +msgid "Click continue to confirm your action." +msgstr "点击继续以确认您的操作。" + +#: docs/usage/examples.md:5 +msgid "" +"As inspiration, we provide several simple examples in different programming " +"languages to interact with Walrus through the various interfaces. They are " +"located at " +"and described below." +msgstr "" +"作为灵感,我们提供了几个不同编程语言的简单示例,通过各种接口与 Walrus 进行交" +"互。它们位于 " +"并在下面描述。" + +#: docs/usage/examples.md:9 +msgid "" +"In addition, we have built actual applications on top of Walrus. The prime " +"example is [Walrus Sites](../walrus-sites/intro.md), with code available in " +"the repository." +msgstr "" +"此外,我们在 Walrus 之上构建了实际应用程序。主要示例是 [Walrus Sites](../" +"walrus-sites/intro.md),代码可在 仓库中找到。" + +#: docs/usage/examples.md:13 +msgid "" +"And for an example of how to build a static website and store it as a Walrus " +"Site with GitHub actions, just look at the [CI workflow](https://github.com/" +"MystenLabs/walrus-docs/blob/main/.github/workflows/publish.yaml) we use to " +"publish this very site." +msgstr "" +"至于如何构建静态网站并使用 GitHub actions 将其存储为 Walrus Site 的示例,只需" +"查看我们用来发布此站点的 [CI 工作流](https://github.com/MystenLabs/walrus-" +"docs/blob/main/.github/workflows/publish.yaml)。" + +#: docs/usage/examples.md:18 +msgid "Python" +msgstr "Python" + +#: docs/usage/examples.md:20 +msgid "" +"The [Python examples](https://github.com/MystenLabs/walrus-docs/tree/main/" +"examples/python) folder contains a number of examples:" +msgstr "" +"[Python 示例](https://github.com/MystenLabs/walrus-docs/tree/main/examples/" +"python) 文件夹包含多个示例:" + +#: docs/usage/examples.md:23 +msgid "" +"How to [use the HTTP API](https://github.com/MystenLabs/walrus-docs/blob/" +"main/examples/python/hello_walrus_webapi.py) to store and read a blob." +msgstr "" +"如何 [使用 HTTP API](https://github.com/MystenLabs/walrus-docs/blob/main/" +"examples/python/hello_walrus_webapi.py) 存储和读取 blob。" + +#: docs/usage/examples.md:26 +msgid "" +"How to [use the JSON API](https://github.com/MystenLabs/walrus-docs/blob/" +"main/examples/python/hello_walrus_jsonapi.py) to store, read, and check the " +"availability of a blob. Checking the certification of a blob illustrates " +"reading the Blob Sui object that certifies (see the [Walrus Sui reference]" +"(../dev-guide/sui-struct.md))." +msgstr "" +"如何 [使用 JSON API](https://github.com/MystenLabs/walrus-docs/blob/main/" +"examples/python/hello_walrus_jsonapi.py) 存储、读取和检查 blob 的可用性。检" +"查 blob 的认证说明了读取认证的 Blob Sui 对象(参见 [Walrus Sui 参考](../dev-" +"guide/sui-struct.md))。" + +#: docs/usage/examples.md:31 +msgid "" +"How to [read information from the Walrus system object](https://github.com/" +"MystenLabs/walrus-docs/blob/main/examples/python/hello_walrus_sui_system.py)." +msgstr "" +"如何 [从 Walrus 系统对象读取信息](https://github.com/MystenLabs/walrus-docs/" +"blob/main/examples/python/hello_walrus_sui_system.py)。" + +#: docs/usage/examples.md:33 +msgid "" +"How to [track Walrus related Events](https://github.com/MystenLabs/walrus-" +"docs/blob/main/examples/python/track_walrus_events.py)." +msgstr "" +"如何 [跟踪 Walrus 相关事件](https://github.com/MystenLabs/walrus-docs/blob/" +"main/examples/python/track_walrus_events.py)。" + +#: docs/usage/examples.md:36 +msgid "JavaScript" +msgstr "JavaScript" + +#: docs/usage/examples.md:38 +msgid "" +"A [JavaScript example](https://github.com/MystenLabs/walrus-docs/tree/main/" +"examples/javascript) is provided showing how to upload and download a blob " +"through a web form using the HTTP API." +msgstr "" +"提供了一个 [JavaScript 示例](https://github.com/MystenLabs/walrus-docs/tree/" +"main/examples/javascript),展示了如何通过使用 HTTP API 的网页表单上传和下载 " +"blob。" + +#: docs/usage/examples.md:41 +msgid "Move" +msgstr "Move" + +#: docs/usage/examples.md:43 +msgid "" +"For more complex applications, you may want to interact with Walrus on-chain " +"objects. For that purpose, the currently deployed Walrus contracts are " +"included [in our GitHub repository](https://github.com/MystenLabs/walrus-" +"docs/tree/main/contracts)." +msgstr "" +"对于更复杂的应用程序,您可能希望与 Walrus 链上对象进行交互。为此,当前部署的 " +"Walrus 合约包含在 [我们的 GitHub 仓库](https://github.com/MystenLabs/walrus-" +"docs/tree/main/contracts) 中。" + +#: docs/usage/examples.md:47 +msgid "" +"Furthermore, we provide a simple [example contract](https://github.com/" +"MystenLabs/walrus-docs/tree/main/examples/move) that imports and uses the " +"Walrus objects." +msgstr "" +"此外,我们提供了一个简单的 [示例合约](https://github.com/MystenLabs/walrus-" +"docs/tree/main/examples/move),该合约导入并使用 Walrus 对象。" + +#: docs/usage/troubleshooting.md:5 +msgid "" +"```admonish tip title=\"Debug logging\"\n" +"You can enable debug logging for Walrus by setting the environment variable " +"`RUST_LOG=walrus=debug`.\n" +"```" +msgstr "" +"```admonish 提示 标题=\"调试日志记录\"\n" +"您可以通过设置环境变量 `RUST_LOG=walrus=debug` 来启用 Walrus 的调试日志记" +"录。\n" +"```" + +#: docs/usage/troubleshooting.md:9 +msgid "Latest binary" +msgstr "最新二进制文件" + +#: docs/usage/troubleshooting.md:11 +msgid "" +"Before undertaking any other steps, make sure you have the [latest `walrus` " +"binary](./setup.md#installation). If you have multiple versions in different " +"locations, find the the binary that will actually be used with `which " +"walrus`." +msgstr "" +"在进行任何其他步骤之前,请确保您拥有 [最新的 `walrus` 二进制文件](./setup." +"md#installation)。如果您在不同位置有多个版本,请使用 `which walrus` 找到实际" +"将使用的二进制文件。" + +#: docs/usage/troubleshooting.md:15 +msgid "Old hardware or incompatible VMs" +msgstr "旧硬件或不兼容的虚拟机" + +#: docs/usage/troubleshooting.md:17 +msgid "" +"Our standard Ubuntu binary is known to cause problems on certain old " +"hardware and in certain virtualized environments. If you experience errors " +"like \"Illegal instruction (core dumped)\", [install](./setup." +"md#installation) the `ubuntu-x86_64-generic` version instead, which is " +"compiled specifically to be compatible with almost all physical and virtual " +"x86-64 CPUs." +msgstr "" +"我们的标准 Ubuntu 二进制文件已知会在某些旧硬件和某些虚拟化环境中引起问题。如" +"果您遇到类似“非法指令(核心转储)”的错误,请 [安装](./setup.md#installation) " +"`ubuntu-x86_64-generic` 版本,该版本专门编译以兼容几乎所有物理和虚拟 x86-64 " +"CPU。" + +#: docs/usage/troubleshooting.md:22 +msgid "Latest Walrus configuration" +msgstr "最新 Walrus 配置" + +#: docs/usage/troubleshooting.md:24 +msgid "" +"The Walrus Devnet and Testnet are wiped periodically and require updating to " +"the latest binary and configuration. If you get an error like \"could not " +"retrieve enough confirmations to certify the blob\", you are probably using " +"an outdated configuration pointing to an inactive Walrus system. In this " +"case, update your configuration file with the latest [configuration](./setup." +"md#configuration) and make sure the CLI uses the intended configuration." +msgstr "" +"Walrus Devnet 和 Testnet 会定期清除,并需要更新到最新的二进制文件和配置。如果" +"您收到类似“无法检索足够的确认以认证 blob”的错误,您可能正在使用指向非活动 " +"Walrus 系统的过时配置。在这种情况下,请使用最新的 [配置](./setup." +"md#configuration) 更新您的配置文件,并确保 CLI 使用预期的配置。" + +#: docs/usage/troubleshooting.md:35 +msgid "Correct Sui network configuration" +msgstr "正确的 Sui 网络配置" + +#: docs/usage/troubleshooting.md:37 +msgid "" +"If you get an error like \"the specified Walrus system object does not " +"exist\", make sure your wallet is set up for Sui **Testnet** and you use the " +"latest [configuration](./setup.md#configuration)." +msgstr "" +"如果您收到类似“指定的 Walrus 系统对象不存在”的错误,请确保您的钱包已设置为 " +"Sui **测试网** 并使用最新的 [配置](./setup.md#configuration)。" + +#: docs/walrus-sites/intro.md:5 +msgid "" +"_Walrus Sites_ are \"web\"-sites that use Sui and Walrus as their underlying " +"technology. They are a prime example of how Walrus can be used to build new " +"and exciting decentralized applications. Anyone can build and deploy a " +"Walrus Site and make it accessible to the world! Funnily, this documentation " +"is itself available as a Walrus Site at (if you aren't there already)." +msgstr "" +"_Walrus Sites_ 是使用 Sui 和 Walrus 作为其底层技术的“网站”。它们是 Walrus 如" +"何用于构建新的和令人兴奋的去中心化应用程序的主要示例。任何人都可以构建和部署 " +"Walrus Site 并使其对世界开放!有趣的是,此文档本身也作为 Walrus Site 提供,网" +"址为 (如果您还没有在那" +"里)。" + +#: docs/walrus-sites/intro.md:11 +msgid "" +"```admonish tip title=\"Make sure you update!\"\n" +"With the move to Walrus Testnet, Walrus Sites are also being updated! They " +"now use Walrus Testnet as\n" +"the backing store, and they have been improved with new awesome features. " +"[Migrate your\n" +"site](./tutorial-migration.md) today to take advantage of these new " +"features!\n" +"```" +msgstr "" +"```admonish 提示 标题=\"确保您更新!\"\n" +"随着迁移到 Walrus 测试网,Walrus Sites 也在更新!它们现在使用 Walrus 测试网作" +"为\n" +"后备存储,并且它们已经通过新的出色功能得到了改进。今天就 [迁移您的\n" +"站点](./tutorial-migration.md) 以利用这些新功能!\n" +"```" + +#: docs/walrus-sites/intro.md:17 +msgid "" +"```admonish danger title=\"Walrus Sites Devnet being discontinued\"\n" +"Since the Walrus Devnet will [be shut down\n" +"soon](../index.md#admonition-discontinuation-of-walrus-devnet), all the " +"Walrus Sites stored on it will\n" +"be wiped. To minimize the downtime, the Devnet Walrus Sites will be " +"available after the Testnet\n" +"upgrade for two weeks (until **2024-10-31**), to ensure that everyone has " +"enough time to update.\n" +"\n" +"Make sure to reupload your sites to the Walrus Testnet before the shutdown " +"to avoid downtime!\n" +"```" +msgstr "" +"```admonish 危险 标题=\"Walrus Sites Devnet 即将停用\"\n" +"由于 Walrus Devnet 将 [很快关闭\n" +"](../README.md#admonition-discontinuation-of-walrus-devnet),存储在其上的所" +"有 Walrus Sites 将\n" +"被清除。为了尽量减少停机时间,Devnet Walrus Sites 将在测试网\n" +"升级后两周内可用(直到 **2024-10-31**),以确保每个人都有足够的时间进行更" +"新。\n" +"\n" +"请确保在关闭之前将您的站点重新上传到 Walrus 测试网,以避免停机!\n" +"```" + +#: docs/walrus-sites/intro.md:26 +msgid "At a high level, here are some of the most exciting features:" +msgstr "从高层次来看,这里有一些最令人兴奋的功能:" + +#: docs/walrus-sites/intro.md:28 +msgid "" +"Publishing a site does not require managing servers or complex " +"configurations; just provide the source files (produced by your favorite web " +"framework), publish them to Walrus Sites using the [site-builder tool](./" +"overview.md#the-site-builder), and you are done!" +msgstr "" +"发布站点不需要管理服务器或复杂的配置;只需提供源文件(由您喜欢的 Web 框架生" +"成),使用 [site-builder 工具](./overview.md#the-site-builder) 将它们发布到 " +"Walrus Sites,您就完成了!" + +#: docs/walrus-sites/intro.md:31 +msgid "" +"Sites can be linked to from ordinary Sui objects. This feature enables, for " +"example, creating an NFT collection in which _every single NFT_ has a " +"_personalized website dedicated to it_." +msgstr "" +"站点可以从普通的 Sui 对象链接到。这一功能使得,例如,创建一个 NFT 集合,其中 " +"_每个 NFT_ 都有一个 _专属网站_。" + +#: docs/walrus-sites/intro.md:33 +msgid "" +"Walrus Sites are owned by addresses on Sui and can be exchanged, shared, and " +"updated thanks to Sui's flexible programming model. This means, among other " +"things, that Walrus Sites can leverage the [SuiNS](https://suins.io/) naming " +"system to have human-readable names. No more messing around with DNS!" +msgstr "" +"Walrus Sites 由 Sui 上的地址拥有,并且可以交换、共享和更新,这要归功于 Sui 的" +"灵活编程模型。这意味着,除其他外,Walrus Sites 可以利用 [SuiNS](https://" +"suins.io/) 命名系统来拥有可读的名称。不再需要摆弄 DNS!" + +#: docs/walrus-sites/intro.md:37 +msgid "" +"Thanks to Walrus's decentralization and extremely high data availability, " +"there is no risk of having your site wiped for no reason." +msgstr "" +"由于 Walrus 的去中心化和极高的数据可用性,您的站点不会无缘无故地被清除。" + +#: docs/walrus-sites/intro.md:39 +msgid "" +"Since they live on Walrus, these sites cannot have a backend in the " +"traditional sense, and can be therefore considered \"static\" sites. " +"However, the developer can integrate with Sui-compatible wallets and harness " +"Sui's programmability to add backend functionality to Walrus Sites!" +msgstr "" +"由于它们存在于 Walrus 上,这些站点在传统意义上不能有后端,因此可以被视为“静" +"态”站点。然而,开发人员可以与 Sui 兼容的钱包集成,并利用 Sui 的可编程性为 " +"Walrus Sites 添加后端功能!" + +#: docs/walrus-sites/intro.md:43 +msgid "Show me" +msgstr "展示给我看" + +#: docs/walrus-sites/intro.md:45 +msgid "" +"To give you a very high-level intuition of how Walrus Sites work, let's look " +"at an example: A simple NFT collection on Sui that has a frontend dApp to " +"mint the NFTs hosted on Walrus Sites, and in which _each NFT_ has a " +"_specific, personalized Walrus Site_." +msgstr "" +"为了给您一个非常高层次的直观了解 Walrus Sites 如何工作,让我们看一个示例:一" +"个在 Sui 上的简单 NFT 集合,它有一个前端 dApp 来铸造托管在 Walrus Sites 上的 " +"NFT,并且其中 _每个 NFT_ 都有一个 _特定的、个性化的 Walrus Site_。" + +#: docs/walrus-sites/intro.md:49 +msgid "" +"You can check out the mint page at . This " +"site is served to your browser through the Walrus Site _portal_ . While the portal's operation is explained in a [later section]" +"(./portal.md), consider for now that there can be many portals (hosted by " +"whoever wants to have their own, and even on `localhost`). Further, the only " +"function of the portal is to provide the browser with some code " +"(specifically, a service worker) that allows it to fetch the Walrus Site " +"from Sui and Walrus." +msgstr "" +"您可以在 查看铸造页面。此站点通过 Walrus " +"Site _门户_ 提供给您的浏览器。虽然门户的操作在 [后面的" +"部分](./portal.md) 中进行了说明,但现在考虑到可以有许多门户(由任何想要拥有自" +"己门户的人托管,甚至在 `localhost` 上)。此外,门户的唯一功能是向浏览器提供一" +"些代码(特别是服务工作者),使其能够从 Sui 和 Walrus 获取 Walrus Site。" + +#: docs/walrus-sites/intro.md:56 +msgid "" +"If you have a Sui wallet with some Testnet SUI, you can try and \"mint a new " +"Flatlander\" from the site. This creates an NFT from the collection and " +"shows you two links: one to the explorer, and one to the \"Flatlander " +"site\". This latter site is a special Walrus Site that exists only for that " +"NFT, and has special characteristics (the background color, the image, ...) " +"that are based on the contents of the NFT." +msgstr "" +"如果您有一个带有一些测试网 SUI 的 Sui 钱包,您可以尝试从站点“铸造一个新的 " +"Flatlander”。这会从集合中创建一个 NFT,并向您显示两个链接:一个指向浏览器,另" +"一个指向“Flatlander 站点”。后者站点是一个仅存在于该 NFT 的特殊 Walrus Site," +"并且具有基于 NFT 内容的特殊特征(背景颜色、图像等)。" + +#: docs/walrus-sites/intro.md:62 +msgid "" +"The URL to this per-NFT site looks something like this: " +"`https://2hzpawjycxuiuh36047yocxapc69g8ercrypa7ccsk8ek4iqu6.walrus.site/`. " +"You'll notice that the domain remains `walrus.site`, but the subdomain is a " +"long and random-looking string. This string is actually the [Base36](https://" +"en.wikipedia.org/wiki/Base36) encoding of the object ID of the NFT, which is " +"[0x644bc958...](https://suiscan.xyz/testnet/" +"object/0x644bc958052463785c026a13be051d579c8a4d2dc93b1874dce5839d4fb18c5e)." +msgstr "" +"这个每个 NFT 站点的 URL 看起来像这样:" +"`https://2hzpawjycxuiuh36047yocxapc69g8ercrypa7ccsk8ek4iqu6.walrus.site/`。您" +"会注意到域名仍然是 `walrus.site`,但子域名是一个长的、看起来随机的字符串。这" +"个字符串实际上是 NFT 对象 ID 的 [Base36](https://en.wikipedia.org/wiki/" +"Base36) 编码,即 [0x644bc958...](https://suiscan.xyz/testnet/" +"object/0x644bc958052463785c026a13be051d579c8a4d2dc93b1874dce5839d4fb18c5e)。" + +#: docs/walrus-sites/intro.md:69 +msgid "In summary:" +msgstr "总结:" + +#: docs/walrus-sites/intro.md:71 +msgid "" +"Walrus Sites are served through a portal; in this case, `https://walrus." +"site`. There can be many portals, and anyone can host one." +msgstr "" +"Walrus Sites 通过门户提供;在这种情况下,`https://walrus.site`。可以有许多门" +"户,任何人都可以托管一个。" + +#: docs/walrus-sites/intro.md:73 +msgid "" +"The subdomain on the URL points to a specific object on Sui that allows the " +"browser to fetch and render the site resources. This pointer can be" +msgstr "" +"URL 上的子域名指向 Sui 上的一个特定对象,允许浏览器获取和渲染站点资源。这个指" +"针可以是" + +#: docs/walrus-sites/intro.md:75 +msgid "a SuiNS name, such as `flatland` in `https://flatland.walrus.site`, or" +msgstr "SuiNS 名称,例如 `https://flatland.walrus.site` 中的 `flatland`,或" + +#: docs/walrus-sites/intro.md:76 +msgid "" +"the Base36 encoding of a the Sui object ID, such as `0x644bc958...` in the " +"example above." +msgstr "Sui 对象 ID 的 Base36 编码,例如上例中的 `0x644bc958...`。" + +#: docs/walrus-sites/intro.md:78 +msgid "" +"Curious to know how this magic is possible? Read the [technical overview](./" +"overview.md)! If you just want to get started trying Walrus Sites out, check " +"the [tutorial](./tutorial.md)." +msgstr "" +"想知道这种魔法是如何实现的吗?阅读 [技术概述](./overview.md)!如果您只是想开" +"始尝试 Walrus Sites,请查看 [教程](./tutorial.md)。" + +#: docs/walrus-sites/tutorial.md:5 +msgid "" +"This tutorial walks you through the steps necessary to publish a Walrus " +"Site. We also provide the instructions on how to add a SuiNS name to it for " +"convenient browsing." +msgstr "" +"本教程将引导您完成发布 Walrus Site 所需的步骤。我们还提供了如何为其添加 " +"SuiNS 名称以便于浏览的说明。" + +#: docs/walrus-sites/tutorial-install.md:5 +msgid "" +"This section describes the steps necessary to setup the Walrus Sites' `site-" +"builder` tool and prepare your environment for development." +msgstr "" +"本节描述了设置 Walrus Sites 的 `site-builder` 工具并准备您的开发环境所需的步" +"骤。" + +#: docs/walrus-sites/tutorial-install.md:8 +msgid "Prerequisites" +msgstr "先决条件" + +#: docs/walrus-sites/tutorial-install.md:10 +msgid "Before you start, make sure you" +msgstr "在开始之前,请确保您" + +#: docs/walrus-sites/tutorial-install.md:12 +msgid "" +"have a recent version of [Rust](https://www.rust-lang.org/tools/install) " +"installed;" +msgstr "安装了最新版本的 [Rust](https://www.rust-lang.org/tools/install);" + +#: docs/walrus-sites/tutorial-install.md:13 +msgid "have `git` installed; and" +msgstr "安装了 `git`;并且" + +#: docs/walrus-sites/tutorial-install.md:14 +msgid "followed all [Walrus setup instructions](../usage/setup.md)." +msgstr "遵循了所有 [Walrus 设置说明](../usage/setup.md)。" + +#: docs/walrus-sites/tutorial-install.md:16 +msgid "Then, follow these additional setup steps." +msgstr "然后,按照这些额外的设置步骤进行操作。" + +#: docs/walrus-sites/tutorial-install.md:18 +msgid "Clone the repository and build the `site-builder` tool" +msgstr "克隆仓库并构建 `site-builder` 工具" + +#: docs/walrus-sites/tutorial-install.md:20 +msgid "" +"First, clone and enter the Walrus Sites repo from :" +msgstr "" +"首先,从 克隆并进入 Walrus " +"Sites 仓库:" + +#: docs/walrus-sites/tutorial-install.md:27 +msgid "Then, build the release version of the site builder:" +msgstr "然后,构建 site builder 的发布版本:" + +#: docs/walrus-sites/tutorial-install.md:33 +msgid "" +"After the build process completes, you are ready to run the site builder:" +msgstr "构建过程完成后,您就可以运行 site builder:" + +#: docs/walrus-sites/tutorial-publish.md:5 +msgid "" +"Now that everything is installed and configured, you should be able to start " +"publishing your first Walrus Site!" +msgstr "现在一切都已安装和配置,您应该可以开始发布您的第一个 Walrus Site!" + +#: docs/walrus-sites/tutorial-publish.md:8 +msgid "Select the source material for the site" +msgstr "选择站点的源材料" + +#: docs/walrus-sites/tutorial-publish.md:10 +msgid "" +"The `site-builder` works by uploading a directory of files produced by any " +"web framework to Walrus and adding the relevant metadata to Sui. This " +"directory should have a file called `index.html` in its root, which will be " +"the entry point to the Walrus Site." +msgstr "" +"`site-builder` 通过将任何 web 框架生成的文件目录上传到 Walrus 并将相关元数据" +"添加到 Sui 来工作。此目录的根目录中应有一个名为 `index.html` 的文件,该文件将" +"是 Walrus Site 的入口点。" + +#: docs/walrus-sites/tutorial-publish.md:14 +msgid "" +"For the rest of the tutorial, we will use as an example the simple site " +"contained in `./examples/snake`." +msgstr "" +"在本教程的其余部分中,我们将以 `./examples/snake` 中包含的简单站点为例。" + +#: docs/walrus-sites/tutorial-publish.md:17 +msgid "Publish the site" +msgstr "发布站点" + +#: docs/walrus-sites/tutorial-publish.md:19 +msgid "" +"Since we have placed the `walrus` binary and configuration in their default " +"locations, publishing the `./examples/snake` site is as simple as calling " +"the publishing command:" +msgstr "" +"由于我们已将 `walrus` 二进制文件和配置放置在默认位置,发布 `./examples/" +"snake` 站点就像调用发布命令一样简单:" + +#: docs/walrus-sites/tutorial-publish.md:37 +msgid "The end of the output should look like the following:" +msgstr "输出的末尾应如下所示:" + +#: docs/walrus-sites/tutorial-publish.md:53 +msgid "" +"This output tells you that, for each file in the folder, a new Walrus blob " +"was created, and the respective blob ID. Further, it prints the object ID of " +"the Walrus Site object on Sui (so you can have a look in the explorer and " +"use it to set the SuiNS name) and, finally, the URL at which you can browse " +"the site." +msgstr "" +"此输出告诉您,对于文件夹中的每个文件,创建了一个新的 Walrus blob 及其相应的 " +"blob ID。此外,它还打印了 Sui 上 Walrus Site 对象的对象 ID(因此您可以在资源" +"管理器中查看并使用它来设置 SuiNS 名称),最后是您可以浏览站点的 URL。" + +#: docs/walrus-sites/tutorial-publish.md:58 +msgid "" +"Note here that we are passing the default config `./sites-config.yaml` as " +"the config for the site builder. The configuration file is necessary to " +"ensure that the `site-builder` knows the correct Sui package for the Walrus " +"Sites logic." +msgstr "" +"请注意,这里我们将默认配置 `./sites-config.yaml` 作为 site builder 的配置。配" +"置文件是必要的,以确保 `site-builder` 知道 Walrus Sites 逻辑的正确 Sui 包。" + +#: docs/walrus-sites/tutorial-publish.md:62 +msgid "" +"More details on the configuration of the `site-builder` can be found under " +"the [advanced configuration](./builder-config.md) section." +msgstr "" +"有关 `site-builder` 配置的更多详细信息,请参见 [高级配置](./builder-config." +"md) 部分。" + +#: docs/walrus-sites/tutorial-publish.md:65 +msgid "Update the site" +msgstr "更新站点" + +#: docs/walrus-sites/tutorial-publish.md:67 +msgid "" +"Let's say now you want to update the content of the site, for example by " +"changing the title from \"eat all the blobs!\" to \"Glob all the Blobs!\"." +msgstr "" +"假设现在您想更新站点的内容,例如将标题从 \"eat all the blobs!\" 更改为 " +"\"Glob all the Blobs!\"。" + +#: docs/walrus-sites/tutorial-publish.md:70 +msgid "First, make this edit on in the `./examples/snake/index.html` file." +msgstr "首先,在 `./examples/snake/index.html` 文件中进行此编辑。" + +#: docs/walrus-sites/tutorial-publish.md:72 +msgid "" +"Then, you can update the existing site by running the `update` command, " +"providing the directory where to find the updated files (still `./example/" +"snake`) and the object ID of the existing site (`0x407a3081...`):" +msgstr "" +"然后,您可以通过运行 `update` 命令来更新现有站点,提供找到更新文件的目录(仍" +"然是 `./example/snake`)和现有站点的对象 ID (`0x407a3081...`):" + +#: docs/walrus-sites/tutorial-publish.md:80 +msgid "The output this time should be:" +msgstr "这次的输出应为:" + +#: docs/walrus-sites/tutorial-publish.md:93 +msgid "" +"Compared to the `publish` action, we can see that now the only actions " +"performed were to delete the old `index.html`, and update it with the newer " +"one." +msgstr "" +"与 `publish` 操作相比,我们可以看到现在执行的唯一操作是删除旧的 `index." +"html`,并用更新的文件更新它。" + +#: docs/walrus-sites/tutorial-publish.md:96 +msgid "" +"Browsing to the provided URL should reflect the change. You've updated the " +"site!" +msgstr "浏览提供的 URL 应反映更改。您已更新站点!" + +#: docs/walrus-sites/tutorial-publish.md:102 +msgid "" +"```admonish danger title=\"Extending the expiration date of an existing " +"site\"\n" +"To extend the expiration date of a previously-stored site, use the `update` " +"command with the\n" +"`--force` flag, and specify the number of additional epochs (from the " +"current epoch) with the\n" +"`--epochs` flag.\n" +"```" +msgstr "" +"```admonish danger title=\"延长现有站点的到期日期\"\n" +"要延长先前存储的站点的到期日期,请使用 `update` 命令和\n" +"`--force` 标志,并使用\n" +"`--epochs` 标志指定额外的纪元数(从当前纪元开始)。\n" +"```" + +#: docs/walrus-sites/tutorial-suins.md:5 +msgid "" +"Browsing a URL like " +"`https://1lupgq2auevjruy7hs9z7tskqwjp5cc8c5ebhci4v57qyl4piy.walrus.site` is " +"not particularly nice. Therefore, Walrus Sites allows to use SuiNS names " +"(this is like DNS for Sui) to assign a human-readable name to a Walrus Site. " +"To do so, you simply have to get a SuiNS name you like, and point it to the " +"object ID of the Walrus Site (as provided by the `publish` or `update` " +"commands)." +msgstr "" +"浏览像 `https://1lupgq2auevjruy7hs9z7tskqwjp5cc8c5ebhci4v57qyl4piy.walrus." +"site` 这样的 URL 并不是特别好。因此,Walrus Sites 允许使用 SuiNS 名称(这类似" +"于 Sui 的 DNS)为 Walrus Site 分配一个人类可读的名称。为此,您只需获取一个您" +"喜欢的 SuiNS 名称,并将其指向 Walrus Site 的对象 ID(如 `publish` 或 " +"`update` 命令提供)。" + +#: docs/walrus-sites/tutorial-suins.md:11 +msgid "Let's do this step by step." +msgstr "让我们一步一步来。" + +#: docs/walrus-sites/tutorial-suins.md:13 +msgid "Get a SuiNS name" +msgstr "获取 SuiNS 名称" + +#: docs/walrus-sites/tutorial-suins.md:15 +msgid "" +"Navigate to and buy a domain name with your " +"Testnet wallet. For example, `walrusgame` (this specific one is already " +"taken, choose another you like)." +msgstr "" +"导航到 并使用您的测试网钱包购买一个域名。例如," +"`walrusgame`(这个特定的已经被占用了,选择另一个您喜欢的)。" + +#: docs/walrus-sites/tutorial-suins.md:23 +msgid "Map the SuiNS name to the Walrus Site" +msgstr "将 SuiNS 名称映射到 Walrus Site" + +#: docs/walrus-sites/tutorial-suins.md:25 +msgid "" +"Now, you can set the SuiNS name to point to the address of your Walrus Site. " +"To do so, go to the [\"names you own\"](https://testnet.suins.io/account/my-" +"names) section of the SuiNS website, click on the \"three dots\" menu icon " +"above the name you want to map, and click \"Link To Wallet Address\". Paste " +"in the bar the object ID of the Walrus Site, check that it is correct, and " +"click \"Apply\"." +msgstr "" +"现在,您可以将 SuiNS 名称设置为指向您的 Walrus Site 的地址。为此,请转到 " +"SuiNS 网站的 [\"names you own\"](https://testnet.suins.io/account/my-names) " +"部分,点击您要映射的名称上方的 \"三点\" 菜单图标,然后点击 \"Link To Wallet " +"Address\"。在栏中粘贴 Walrus Site 的对象 ID,检查是否正确,然后点击 " +"\"Apply\"。" + +#: docs/walrus-sites/tutorial-suins.md:30 +msgid "" +"After approving the transaction, we can now browse !" +msgstr "批准交易后,我们现在可以浏览 !" + +#: docs/walrus-sites/tutorial-migration.md:3 +msgid "Migrating your site from Devnet to Testnet" +msgstr "将您的站点从 Devnet 迁移到 Testnet" + +#: docs/walrus-sites/tutorial-migration.md:5 +msgid "" +"The migration of a Walrus Site from the Devnet to the Testnet is a very " +"simple manual process. This is required because both the storage backing the " +"sites (Walrus) and the contracts on Sui implementing the Walrus Sites " +"functionality have been updated." +msgstr "" +"将 Walrus Site 从 Devnet 迁移到 Testnet 是一个非常简单的手动过程。这是必需" +"的,因为支持站点的存储(Walrus)和在 Sui 上实现 Walrus Sites 功能的合约都已更" +"新。" + +#: docs/walrus-sites/tutorial-migration.md:14 +msgid "" +"```admonish danger title=\"New default configuration path\"\n" +"The default configuration file for the `site-builder` has been moved to the " +"`./sites-config.yaml`\n" +"instead of the old `./site-builder/assets/builder-example.yaml`.\n" +"```" +msgstr "" +"```admonish danger title=\"新的默认配置路径\"\n" +"`site-builder` 的默认配置文件已移至 `./sites-config.yaml`\n" +"而不是旧的 `./site-builder/assets/builder-example.yaml`。\n" +"```" + +#: docs/walrus-sites/tutorial-migration.md:19 +msgid "The steps are the following:" +msgstr "步骤如下:" + +#: docs/walrus-sites/tutorial-migration.md:21 +msgid "" +"Get the latest version of the `walrus` binary, as well as the latest Walrus " +"configuration file, following the [Walrus installation instructions](../" +"usage/setup.md)." +msgstr "" +"按照 [Walrus 安装说明](../usage/setup.md) 获取最新版本的 `walrus` 二进制文件" +"以及最新的 Walrus 配置文件。" + +#: docs/walrus-sites/tutorial-migration.md:23 +msgid "" +"Ensure you have the latest version of the `site-builder` binary by following " +"the [installation instructions](./tutorial-install.md) again. Remember to " +"`git pull` if you are building from the repo and have cloned it previously. " +"Pulling the repo also guarantees you have the latest sites configuration " +"file, pointing to the correct contracts." +msgstr "" +"通过再次按照 [安装说明](./tutorial-install.md) 确保您拥有最新版本的 `site-" +"builder` 二进制文件。如果您是从仓库构建并且之前已克隆,请记住 `git pull`。拉" +"取仓库还可以保证您拥有最新的站点配置文件,指向正确的合约。" + +#: docs/walrus-sites/tutorial-migration.md:27 +msgid "" +"Run the `site-builder` with the `publish` command on your site directory. " +"This will create a new Walrus Site object on Sui, using the new contracts, " +"and store the site files anew on Walrus Testnet. Note that this operation " +"will create a new object ID for your site!" +msgstr "" +"在您的站点目录上使用 `publish` 命令运行 `site-builder`。这将在 Sui 上创建一个" +"新的 Walrus Site 对象,使用新的合约,并在 Walrus Testnet 上重新存储站点文件。" +"请注意,此操作将为您的站点创建一个新的对象 ID!" + +#: docs/walrus-sites/tutorial-migration.md:30 +msgid "" +"Optional: If you had set up a SuiNS name for your site, you will need to " +"point the name to the new site's object ID. See the [tutorial on setting a " +"SuiNS name](./tutorial-suins.md) for more details." +msgstr "" +"可选:如果您为您的站点设置了 SuiNS 名称,您将需要将该名称指向新站点的对象 " +"ID。有关更多详细信息,请参见 [设置 SuiNS 名称的教程](./tutorial-suins.md)。" + +#: docs/walrus-sites/advanced.md:5 +msgid "" +"Keep reading to learn about the advanced features of Walrus Sites, including " +"configuring the site builder, specifying headers and routing for site " +"resources, and _redirecting Sui objects to Walrus Sites_ to create per-" +"object websites!" +msgstr "" +"继续阅读以了解 Walrus Sites 的高级功能,包括配置 site builder、为站点资源指定" +"标头和路由,以及 _将 Sui 对象重定向到 Walrus Sites_ 以创建每个对象的网站!" + +#: docs/walrus-sites/commands.md:5 +msgid "" +"We now describe in more detail the commands available through the site " +"builder." +msgstr "我们现在更详细地描述通过 site builder 可用的命令。" + +#: docs/walrus-sites/commands.md:13 +msgid "`publish`" +msgstr "`publish`" + +#: docs/walrus-sites/commands.md:15 +msgid "" +"The `publish` command, as described in the [previous section](./tutorial-" +"publish.md), publishes a new site on Sui. The command takes a directory as " +"input and creates a new Walrus Site from the resources contained within." +msgstr "" +"`publish` 命令,如 [上一节](./tutorial-publish.md) 所述,在 Sui 上发布一个新" +"站点。该命令将目录作为输入,并从其中包含的资源创建一个新的 Walrus Site。" + +#: docs/walrus-sites/commands.md:19 +msgid "" +"The `--epochs` flag allows you to specify for how long the site data will be " +"stored on Walrus. By default, this is set to `1` epoch." +msgstr "" +"`--epochs` 标志允许您指定站点数据将在 Walrus 上存储多长时间。默认情况下,这设" +"置为 `1` 纪元。" + +#: docs/walrus-sites/commands.md:22 +msgid "" +"```admonish danger title=\"Epoch duration on Walrus Testnet\"\n" +"On Walrus Testnet, one epoch will last **1 day**. Therefore, consider " +"storing your site for a large\n" +"number of epochs if you want to make it available for the following months! " +"The maximum duration is\n" +"set to 200 epochs.\n" +"```" +msgstr "" +"```admonish danger title=\"Walrus Testnet 上的纪元持续时间\"\n" +"在 Walrus Testnet 上,一个纪元将持续 **1 天**。因此,如果您希望在接下来的几个" +"月内使您的站点可用,请考虑将其存储多个纪元!最大持续时间\n" +"设置为 200 个纪元。\n" +"```" + +#: docs/walrus-sites/commands.md:28 +msgid "" +"If you are just uploading raw files without an `index.html`, you may want to " +"use the `--list-directory` flag, which will automatically create an index " +"page to browse the files. See for example ." +msgstr "" +"如果您只是上传没有 `index.html` 的原始文件,您可能希望使用 `--list-" +"directory` 标志,该标志将自动创建一个索引页面以浏览文件。例如,请参见 " +"。" + +#: docs/walrus-sites/commands.md:32 +msgid "" +"The `publish` command will also respect the instructions in the `ws-" +"resources.json` configuration file. To know more, see the section on " +"[specifying headers and routing](./routing.md)." +msgstr "" +"`publish` 命令还将遵循 `ws-resources.json` 配置文件中的说明。要了解更多信息," +"请参见 [指定标头和路由](./routing.md) 部分。" + +#: docs/walrus-sites/commands.md:35 +msgid "`update`" +msgstr "`update`" + +#: docs/walrus-sites/commands.md:37 +msgid "" +"This command is the equivalent of `publish`, but for updating an existing " +"site. It takes the same arguments, with the addition of the Sui object ID of " +"the site to update." +msgstr "" +"此命令相当于 `publish`,但用于更新现有站点。它采用相同的参数,并添加要更新的" +"站点的 Sui 对象 ID。" + +#: docs/walrus-sites/commands.md:45 +msgid "`convert`" +msgstr "`convert`" + +#: docs/walrus-sites/commands.md:47 +msgid "" +"The `convert` command converts an object ID in hex format to the equivalent " +"Base36 format. This command is useful if you have the Sui object ID of a " +"Walrus Site, and want to know the subdomain where you can browse it." +msgstr "" +"`convert` 命令将十六进制格式的对象 ID 转换为等效的 Base36 格式。如果您有 " +"Walrus Site 的 Sui 对象 ID,并且想知道可以浏览它的子域名,则此命令很有用。" + +#: docs/walrus-sites/commands.md:51 +msgid "`site-map`" +msgstr "`site-map`" + +#: docs/walrus-sites/commands.md:53 +msgid "" +"The `sitemap` command shows the resources that compose the Walrus Site at " +"the given object ID." +msgstr "`sitemap` 命令显示组成给定对象 ID 处的 Walrus Site 的资源。" + +#: docs/walrus-sites/commands.md:55 +msgid "`list-directory`" +msgstr "`list-directory`" + +#: docs/walrus-sites/commands.md:57 +msgid "" +"With `list-directory`, you can obtain the `index.html` file that would be " +"generated by running `publish` or `update` with the `--list-directory` flag. " +"This is useful to see how the index page would look like before publishing it" +"—and possibly editing to make it look nicer!" +msgstr "" +"使用 `list-directory`,您可以获得通过使用 `--list-directory` 标志运行 " +"`publish` 或 `update` 生成的 `index.html` 文件。这对于在发布之前查看索引页面" +"的外观很有用——并且可能会进行编辑以使其看起来更好!" + +#: docs/walrus-sites/builder-config.md:3 +msgid "Configuring the site builder" +msgstr "配置 site builder" + +#: docs/walrus-sites/builder-config.md:5 +msgid "" +"Configuring the `site-builder` tool is straightforward, but care is required " +"to ensure that everything works correctly." +msgstr "配置 `site-builder` 工具很简单,但需要小心以确保一切正常工作。" + +#: docs/walrus-sites/builder-config.md:8 +msgid "" +"The `site-builder` tool requires a configuration file to know which package " +"to use on Sui, which wallet to use, the gas budget, and other operational " +"details. Most of these are abstracted away through sensible defaults, so you " +"should not need to touch them. Yet, for completeness, we provide here the " +"details for all the configuration options." +msgstr "" +"`site-builder` 工具需要一个配置文件来知道在 Sui 上使用哪个包,使用哪个钱包," +"gas 预算和其他操作细节。这些大部分通过合理的默认值抽象出来,所以您不需要触及" +"它们。然而,为了完整性,我们在这里提供所有配置选项的详细信息。" + +#: docs/walrus-sites/builder-config.md:13 +msgid "Minimal configuration" +msgstr "最小配置" + +#: docs/walrus-sites/builder-config.md:15 +msgid "" +"The config file is expected to be in `./sites-config.yaml`, and it is " +"possible to point elsewhere with the `--config` flag. For your first run, it " +"should be sufficient to call the `site-builder` with `--config sites-config." +"yaml`, which is already configured appropriately." +msgstr "" +"配置文件应位于 `./sites-config.yaml` 中,并且可以使用 `--config` 标志指向其他" +"位置。对于您的第一次运行,调用 `site-builder` 并使用 `--config sites-config." +"yaml` 应该就足够了,它已经适当配置。" + +#: docs/walrus-sites/builder-config.md:19 +msgid "" +"If, for any reason, you didn't add `walrus` to `$PATH`, make sure to " +"configure a pointer to the binary, see below." +msgstr "" +"如果由于任何原因,您没有将 `walrus` 添加到 `$PATH`,请确保配置指向二进制文件" +"的指针,请参见下文。" + +#: docs/walrus-sites/builder-config.md:22 +msgid "Additional options" +msgstr "附加选项" + +#: docs/walrus-sites/builder-config.md:24 +msgid "" +"If you want to have more control over the behavior of the site builder, you " +"can customize the following variables in the config file:" +msgstr "" +"如果您想对 site builder 的行为有更多控制,您可以在配置文件中自定义以下变量:" + +#: docs/walrus-sites/builder-config.md:27 +msgid "" +"`package`: the object ID of the Walrus Sites package on Sui. This must " +"always be specified in the config, and is already appropriately configured " +"in `assets/example-config.yaml`." +msgstr "" +"`package`:Sui 上 Walrus Sites 包的对象 ID。这必须始终在配置中指定,并且已在 " +"`assets/example-config.yaml` 中适当配置。" + +#: docs/walrus-sites/builder-config.md:29 +msgid "" +"`portal`: the name of the portal through which the site will be viewed; this " +"only affects the output of the CLI, and nothing else (default: `walrus." +"site`). All Walrus Sites are accessible through any portal independent of " +"this setting." +msgstr "" +"`portal`:查看站点的门户名称;这只影响 CLI 的输出,其他都不影响(默认:" +"`walrus.site`)。所有 Walrus Sites 都可以通过任何门户访问,与此设置无关。" + +#: docs/walrus-sites/builder-config.md:32 +msgid "" +"`general`: these are general options that can be configured both through the " +"CLI and the config:" +msgstr "`general`:这些是可以通过 CLI 和配置进行配置的一般选项:" + +#: docs/walrus-sites/builder-config.md:33 +msgid "" +"`rpc_url`: The URL of the Sui RPC node to use. If not set, the `site-" +"builder` will infer it from the wallet." +msgstr "" +"`rpc_url`:要使用的 Sui RPC 节点的 URL。如果未设置,`site-builder` 将从钱包中" +"推断它。" + +#: docs/walrus-sites/builder-config.md:35 +msgid "" +"`wallet`: Pointer to the Sui wallet to be used. By default, it uses the " +"system-wide wallet (the one from `sui client addresses`)." +msgstr "" +"`wallet`:指向要使用的 Sui 钱包的指针。默认情况下,它使用系统范围的钱包(来" +"自 `sui client addresses` 的那个)。" + +#: docs/walrus-sites/builder-config.md:37 +msgid "" +"`walrus_binary`: Pointer to the `walrus` binary. By default, this is " +"expected to be run from `$PATH`." +msgstr "" +"`walrus_binary`:指向 `walrus` 二进制文件的指针。默认情况下,预计它从 " +"`$PATH` 运行。" + +#: docs/walrus-sites/builder-config.md:39 +msgid "" +"`walrus_config`: The configuration for the `walrus` client binary, see the " +"[relevant chapter](../usage/setup.md)." +msgstr "" +"`walrus_config`:`walrus` 客户端二进制文件的配置,请参见 [相关章节](../usage/" +"setup.md)。" + +#: docs/walrus-sites/builder-config.md:41 +msgid "" +"`gas_budget`: The maximum amount of gas to be spent for transactions " +"(default: 500M MIST)." +msgstr "`gas_budget`:交易所花费的最大 gas 量(默认:500M MIST)。" + +#: docs/walrus-sites/routing.md:5 +msgid "" +"```admonish tip title=\"New with Walrus Sites Testnet version\"\n" +"The following features have been released with the Walrus Sites Testnet " +"version.\n" +"```" +msgstr "" +"```admonish tip title=\"Walrus Sites 测试网版本的新功能\"\n" +"以下功能已在 Walrus Sites 测试网版本中发布。\n" +"```" + +#: docs/walrus-sites/routing.md:9 +msgid "" +"In its base configuration, Walrus Sites serves static assets through a " +"portal. However, many modern web applications require more advanced " +"features, such as custom headers and client-side routing." +msgstr "" +"在其基本配置中,Walrus Sites 通过门户提供静态资产。然而,许多现代 Web 应用程" +"序需要更高级的功能,例如自定义标头和客户端路由。" + +#: docs/walrus-sites/routing.md:12 +msgid "" +"Therefore, the site-builder can read a `ws-resource.json` configuration " +"file, in which you can directly specify resource headers and routing rules." +msgstr "" +"因此,site-builder 可以读取 `ws-resource.json` 配置文件,您可以在其中直接指定" +"资源标头和路由规则。" + +#: docs/walrus-sites/routing.md:15 +msgid "The `ws-resources.json` file" +msgstr "`ws-resources.json` 文件" + +#: docs/walrus-sites/routing.md:17 +msgid "" +"This file is optionally placed in the root of the site directory, and it is " +"_not_ uploaded with the site's resources (in other words, the file is not " +"part of the resulting Walrus Site and is not served by the portal)." +msgstr "" +"此文件可选地放置在站点目录的根目录中,并且 _不会_ 随站点的资源一起上传(换句" +"话说,该文件不是生成的 Walrus Site 的一部分,也不会由门户提供)。" + +#: docs/walrus-sites/routing.md:21 +msgid "" +"If you don't want to use this default location, you can specify the path to " +"the configuration file with the `--ws-resources` flag when running the " +"`publish` or `update` commands." +msgstr "" +"如果您不想使用此默认位置,可以在运行 `publish` 或 `update` 命令时使用 `--ws-" +"resources` 标志指定配置文件的路径。" + +#: docs/walrus-sites/routing.md:24 +msgid "The file is JSON-formatted, and looks like the following:" +msgstr "该文件是 JSON 格式的,类似如下:" + +#: docs/walrus-sites/routing.md:28 +msgid "\"headers\"" +msgstr "\"headers\"" + +#: docs/walrus-sites/routing.md:29 docs/walrus-sites/routing.md:35 +#: docs/walrus-sites/routing.md:111 +msgid "\"/index.html\"" +msgstr "\"/index.html\"" + +#: docs/walrus-sites/routing.md:30 +msgid "\"Content-Type\"" +msgstr "\"Content-Type\"" + +#: docs/walrus-sites/routing.md:30 +msgid "\"text/html; charset=utf-8\"" +msgstr "\"text/html; charset=utf-8\"" + +#: docs/walrus-sites/routing.md:31 +msgid "\"Cache-Control\"" +msgstr "\"Cache-Control\"" + +#: docs/walrus-sites/routing.md:31 +msgid "\"max-age=3500\"" +msgstr "\"max-age=3500\"" + +#: docs/walrus-sites/routing.md:34 docs/walrus-sites/routing.md:110 +msgid "\"routes\"" +msgstr "\"routes\"" + +#: docs/walrus-sites/routing.md:35 docs/walrus-sites/routing.md:111 +msgid "\"/*\"" +msgstr "\"/*\"" + +#: docs/walrus-sites/routing.md:36 +msgid "\"/accounts/*\"" +msgstr "\"/accounts/*\"" + +#: docs/walrus-sites/routing.md:36 docs/walrus-sites/routing.md:112 +msgid "\"/accounts.html\"" +msgstr "\"/accounts.html\"" + +#: docs/walrus-sites/routing.md:37 docs/walrus-sites/routing.md:113 +msgid "\"/path/assets/*\"" +msgstr "\"/path/assets/*\"" + +#: docs/walrus-sites/routing.md:37 docs/walrus-sites/routing.md:113 +msgid "\"/assets/asset_router.html\"" +msgstr "\"/assets/asset_router.html\"" + +#: docs/walrus-sites/routing.md:42 +msgid "" +"We now describe in details the two sections of the configuration file, " +"`headers` and `routes`." +msgstr "我们现在详细描述配置文件的两个部分,`headers` 和 `routes`。" + +#: docs/walrus-sites/routing.md:44 +msgid "Specifying HTTP response headers" +msgstr "指定 HTTP 响应标头" + +#: docs/walrus-sites/routing.md:46 +msgid "" +"The `headers` section allows you to specify custom HTTP response headers for " +"specific resources. The keys in the `headers` object are the paths of the " +"resources, and the values are lists of key-value pairs corresponding to the " +"headers that the portal will attach to the response." +msgstr "" +"`headers` 部分允许您为特定资源指定自定义 HTTP 响应标头。`headers` 对象中的键" +"是资源的路径,值是与门户将附加到响应的标头相对应的键值对列表。" + +#: docs/walrus-sites/routing.md:50 +msgid "" +"For example, in the configuration above, the file `index.html` will be " +"served with the `Content-Type` header set to `text/html; charset=utf-8` and " +"the `Cache-Control` header set to `max-age=3500`." +msgstr "" +"例如,在上述配置中,文件 `index.html` 将以 `Content-Type` 标头设置为 `text/" +"html; charset=utf-8` 和 `Cache-Control` 标头设置为 `max-age=3500` 提供。" + +#: docs/walrus-sites/routing.md:54 +msgid "" +"This mechanism allows you to control various aspects of the resource " +"delivery, such as caching, encoding, and content types." +msgstr "此机制允许您控制资源传递的各个方面,例如缓存、编码和内容类型。" + +#: docs/walrus-sites/routing.md:61 +msgid "Default headers" +msgstr "默认标头" + +#: docs/walrus-sites/routing.md:63 +msgid "" +"By default, no headers need to be specified, and the `ws-resources.json` " +"file can be omitted. The site-builder will automatically try to infer the " +"`Content-Type` header based on the file extension, and set the `Content-" +"Encoding` to `identity` (no transformation)." +msgstr "" +"默认情况下,无需指定标头,并且可以省略 `ws-resources.json` 文件。site-" +"builder 将自动尝试根据文件扩展名推断 `Content-Type` 标头,并将 `Content-" +"Encoding` 设置为 `identity`(无转换)。" + +#: docs/walrus-sites/routing.md:67 +msgid "" +"In case the content type cannot be inferred, the `Content-Type` will be set " +"to `application/octet-stream`." +msgstr "" +"如果无法推断内容类型,则 `Content-Type` 将设置为 `application/octet-stream`。" + +#: docs/walrus-sites/routing.md:70 +msgid "" +"These defaults will be overridden by any headers specified in the `ws-" +"resources.json` file." +msgstr "这些默认值将被 `ws-resources.json` 文件中指定的任何标头覆盖。" + +#: docs/walrus-sites/routing.md:72 +msgid "Specifying client-side routing" +msgstr "指定客户端路由" + +#: docs/walrus-sites/routing.md:74 +msgid "" +"The `routes` section allows you to specify client-side routing rules for " +"your site. This is useful when you want to use a single-page application " +"(SPA) framework, such as React or Angular." +msgstr "" +"`routes` 部分允许您为站点指定客户端路由规则。这在您想要使用单页应用程序 " +"(SPA) 框架(例如 React 或 Angular)时很有用。" + +#: docs/walrus-sites/routing.md:77 +msgid "" +"The configuration in the `routes` object is a mapping from route keys to " +"resource paths." +msgstr "`routes` 对象中的配置是从路由键到资源路径的映射。" + +#: docs/walrus-sites/routing.md:79 +msgid "" +"The **`routes` keys** are path patterns in the form `/path/to/some/*`, where " +"the `*` character represents a wildcard." +msgstr "" +"**`routes` 键** 是 `/path/to/some/*` 形式的路径模式,其中 `*` 字符表示通配" +"符。" + +#: docs/walrus-sites/routing.md:87 +msgid "" +"The **`routes` values** are the resource paths that should be served when " +"the route key is matched." +msgstr "**`routes` 值** 是在匹配路由键时应提供的资源路径。" + +#: docs/walrus-sites/routing.md:89 +msgid "" +"```admonish danger title=\"Important\"\n" +"The paths in the values **must** be valid resource paths, meaning that they " +"must be present among\n" +"the site's resources. The Walrus sites contract will **abort** if the user " +"tries to create a route\n" +"that points to a non-existing resource.\n" +"```" +msgstr "" +"```admonish danger title=\"重要\"\n" +"值中的路径 **必须** 是有效的资源路径,这意味着它们必须存在于\n" +"站点的资源中。如果用户尝试创建指向不存在资源的路由,Walrus 站点合约将 **中止" +"**。\n" +"```" + +#: docs/walrus-sites/routing.md:95 +msgid "The simple routing algorithm is as follows:" +msgstr "简单的路由算法如下:" + +#: docs/walrus-sites/routing.md:97 +msgid "" +"Whenever a resource path _is not found among the sites resources_, the " +"portal tries to match the path to the `routes`." +msgstr "" +"每当在站点资源中 _找不到资源路径_ 时,门户会尝试将路径与 `routes` 匹配。" + +#: docs/walrus-sites/routing.md:99 +msgid "" +"All matching routes are then _lexicographically ordered_, and the _longest_ " +"match is chosen." +msgstr "然后所有匹配的路由都按 _字典顺序排序_,并选择 _最长_ 的匹配。" + +#: docs/walrus-sites/routing.md:100 +msgid "The resource corresponding to this longest match is then served." +msgstr "然后提供与此最长匹配相对应的资源。" + +#: docs/walrus-sites/routing.md:107 +msgid "Recall the example above:" +msgstr "回想上面的例子:" + +#: docs/walrus-sites/routing.md:112 +msgid "\"/path/*\"" +msgstr "\"/path/*\"" + +#: docs/walrus-sites/routing.md:117 +msgid "The following matchings will occur:" +msgstr "将发生以下匹配:" + +#: docs/walrus-sites/routing.md:119 +msgid "browsing `/any/other/test.html` will serve `/index.html`;" +msgstr "浏览 `/any/other/test.html` 将提供 `/index.html`;" + +#: docs/walrus-sites/routing.md:120 +msgid "" +"browsing `/path/test.html` will serve `/accounts.html`, as it is a more " +"specific match than the previous one;" +msgstr "浏览 `/path/test.html` 将提供 `/accounts.html`,因为它比前一个更具体;" + +#: docs/walrus-sites/routing.md:122 +msgid "" +"similarly, browsing `/path/assets/test.html` will serve `/assets/" +"asset_router.html`." +msgstr "" +"同样,浏览 `/path/assets/test.html` 将提供 `/assets/asset_router.html`。" + +#: docs/walrus-sites/routing.md:124 +msgid "" +"`/index.html`, `/accounts.html`, and `/assets/asset_router.html` are all " +"existing resources on the Walrus Sites object on Sui." +msgstr "" +"`/index.html`、`/accounts.html` 和 `/assets/asset_router.html` 都是 Sui 上 " +"Walrus Sites 对象的现有资源。" + +#: docs/walrus-sites/linking.md:5 +msgid "" +"Links in Walrus Sites work _almost_ as you would expect in a regular " +"website. We specify here a few of the details." +msgstr "" +"Walrus 站点中的链接 _几乎_ 像您在常规网站中预期的那样工作。我们在此指定了一些" +"细节。" + +#: docs/walrus-sites/linking.md:8 +msgid "Linking to resources within the same site" +msgstr "链接到同一站点内的资源" + +#: docs/walrus-sites/linking.md:10 +msgid "" +"Relative and absolute links (`href=\"/path/to/resource.html\"`) work as " +"usual." +msgstr "" +"相对链接和绝对链接(`href=\"/path/to/resource.html\"`)像往常一样工作。" + +#: docs/walrus-sites/linking.md:12 +msgid "Linking to resources on the web" +msgstr "链接到网络上的资源" + +#: docs/walrus-sites/linking.md:14 +msgid "" +"Linking to a resource on the web (`href=\"https://some.cdn.example.com/" +"stylesheet.css\"`) also works as usual." +msgstr "" +"链接到网络上的资源(`href=\"https://some.cdn.example.com/stylesheet.css\"`)" +"也像往常一样工作。" + +#: docs/walrus-sites/linking.md:17 +msgid "Linking to resources in other Walrus Sites" +msgstr "链接到其他 Walrus 站点中的资源" + +#: docs/walrus-sites/linking.md:19 +msgid "" +"Here is the part that is a bit different. Assume there is some image that " +"you can browse at `https://gallery.walrus.site/walrus_arctic.webp`, and you " +"want to link it from your own Walrus Site." +msgstr "" +"这里有点不同。假设有一些图像,您可以在 `https://gallery.walrus.site/" +"walrus_arctic.webp` 浏览,并且您想从自己的 Walrus 站点链接它。" + +#: docs/walrus-sites/linking.md:22 +msgid "" +"Recall that, however, `https://walrus.site` is just one of the possibly many " +"portals. I.e., the same resource is browsable from a local portal (`http://" +"gallery.localhost:8080/walrus_arctic.webp`), or from any other portal (e.g., " +"`https://gallery.blob.store/walrus_arctic.webp`). Therefore, how can you " +"link the resource in a _portal-independent way_? This is important for " +"interoperability, availability, and respecting the user's choice of portal." +msgstr "" +"请记住,`https://walrus.site` 只是可能的许多门户之一。也就是说,可以从本地门" +"户(`http://gallery.localhost:8080/walrus_arctic.webp`)或任何其他门户(例" +"如,`https://gallery.blob.store/walrus_arctic.webp`)浏览相同的资源。因此,如" +"何以 _门户无关的方式_ 链接资源?这对于互操作性、可用性以及尊重用户的门户选择" +"非常重要。" + +#: docs/walrus-sites/linking.md:28 +msgid "The solution: Walrus Sites links" +msgstr "解决方案: Walrus 站点链接" + +#: docs/walrus-sites/linking.md:30 +msgid "" +"We solve this problem by having the portals interpret special links that are " +"normally invalid on the web and redirect to the corresponding Walrus Sites " +"resource in the portal itself." +msgstr "" +"我们通过让门户解释在网络上通常无效的特殊链接并重定向到门户本身中相应的 " +"Walrus 站点资源来解决这个问题。" + +#: docs/walrus-sites/linking.md:33 +msgid "" +"Consider the example above, where the resource `/walrus_arctic.webp` is " +"browsed from the Walrus Site with SuiNS name `gallery`, which points to the " +"object ID `abcd123…` (in Base36 encoding). Then, the portal-independent link " +"is: `https://gallery.suiobj/walrus_arctic.webp`. To fix the object ID " +"instead of the SuiNS name, you can use `https://abcd123….suiobj/" +"walrus_arctic.webp`." +msgstr "" +"考虑上面的例子,其中资源 `/walrus_arctic.webp` 是从具有 SuiNS 名称 `gallery` " +"的 Walrus 站点浏览的,该名称指向对象 ID `abcd123…`(Base36 编码)。然后,门户" +"无关的链接是:`https://gallery.suiobj/walrus_arctic.webp`。要固定对象 ID 而不" +"是 SuiNS 名称,您可以使用 `https://abcd123….suiobj/walrus_arctic.webp`。" + +#: docs/walrus-sites/linking.md:38 +msgid "" +"Another possibility is to directly point to the Walrus _blob ID_ of the " +"resource, and have the browser \"sniff\" the content type. This works for " +"images, for example, but not for script or stylesheets. For example to point " +"to the blob ID (e.g., containing an image) `qwer5678…`, use the URL `https://" +"blobid.walrus/qwer5678…`." +msgstr "" +"另一种可能性是直接指向资源的 Walrus _blob ID_,并让浏览器“嗅探”内容类型。例" +"如,这适用于图像,但不适用于脚本或样式表。例如,要指向 blob ID(例如,包含图" +"像)`qwer5678…`,请使用 URL `https://blobid.walrus/qwer5678…`。" + +#: docs/walrus-sites/linking.md:43 +msgid "" +"With such a link, the portal will extract the blob ID and redirect the " +"request to the aggregator it is using to fetch blobs." +msgstr "" +"使用这样的链接,门户将提取 blob ID 并将请求重定向到它用于获取 blob 的聚合器。" + +#: docs/walrus-sites/redirects.md:5 +msgid "" +"We have seen in the [overview](./overview.md) how a Walrus Site object on " +"Sui looks like. We will discuss now how you can create ensure that a _set of " +"arbitrary objects_ can all be tied to a specific, and possibly unique, " +"Walrus Site." +msgstr "" +"我们已经在[概述](./overview.md)中看到了 Sui 上的 Walrus 站点对象的样子。我们" +"现在将讨论如何创建确保一组 _任意对象_ 都可以绑定到特定的,可能是唯一的 " +"Walrus 站点。" + +#: docs/walrus-sites/redirects.md:9 +msgid "The goal" +msgstr "目标" + +#: docs/walrus-sites/redirects.md:11 +msgid "" +"Consider a collection of NFTs, such as the one published by . As we show there, each minted NFT has its own Walrus " +"Site, which can be personalized based on the contents (e.g., the color) of " +"the NFT itself. How can we achieve this?" +msgstr "" +"考虑一组 NFT,例如由 发布的 NFT。正如我们在那" +"里展示的那样,每个铸造的 NFT 都有自己的 Walrus 站点,可以根据 NFT 本身的内容" +"(例如颜色)进行个性化。我们如何实现这一点?" + +#: docs/walrus-sites/redirects.md:15 +msgid "Redirect links" +msgstr "重定向链接" + +#: docs/walrus-sites/redirects.md:17 +msgid "" +"The solution is simple: We add a \"redirect\" in the NFT's [`Display`]" +"(https://docs.sui.io/standards/display#sui-utility-objects) property. Each " +"time an NFT's object ID is browsed through a portal, the portal will check " +"the `Display` of the NFT and, if it encounters the `walrus site address` " +"key, it will go fetch the Walrus Site that is at the corresponding object ID." +msgstr "" +"解决方案很简单:我们在 NFT 的 [`Display`](https://docs.sui.io/standards/" +"display#sui-utility-objects) 属性中添加一个“重定向”。每次通过门户浏览 NFT 的" +"对象 ID 时,门户将检查 NFT 的 `Display`,如果遇到 `walrus site address` 键," +"它将去获取对应对象 ID 的 Walrus 站点。" + +#: docs/walrus-sites/redirects.md:23 +msgid "Redirects in Move" +msgstr "Move 中的重定向" + +#: docs/walrus-sites/redirects.md:25 +msgid "" +"Practically speaking, when creating the `Display` of the NFT, you can " +"include the key-value pair that points to the Walrus Site that is to be used." +msgstr "" +"实际上,在创建 NFT 的 `Display` 时,您可以包含指向要使用的 Walrus 站点的键值" +"对。" + +#: docs/walrus-sites/redirects.md:28 +msgid "" +"```move\n" +"...\n" +"const VISUALIZATION_SITE: address = @0x901fb0...;\n" +"display.add(b\"walrus site address\".to_string(), VISUALIZATION_SITE." +"to_string());\n" +"...\n" +"```" +msgstr "" + +#: docs/walrus-sites/redirects.md:35 +msgid "How to change the site based on the NFT?" +msgstr "如何根据 NFT 更改站点?" + +#: docs/walrus-sites/redirects.md:37 +msgid "" +"The code above will only open the specified Walrus Site when browsing the " +"object ID of the NFT. How do we ensure that the properties of the NFT can be " +"used to personalize the site?" +msgstr "" +"上面的代码只会在浏览 NFT 的对象 ID 时打开指定的 Walrus 站点。我们如何确保可以" +"使用 NFT 的属性来个性化站点?" + +#: docs/walrus-sites/redirects.md:40 +msgid "" +"This needs to be done in the `VISUALIZATION_SITE`: Since the subdomain is " +"still pointing to the NFT's object ID, the Walrus Site that is loaded can " +"check its `origin` in JavaScript, and use the subdomain to determine the " +"NFT, fetch it from chain, and use its internal fields to modify the " +"displayed site." +msgstr "" +"这需要在 `VISUALIZATION_SITE` 中完成:由于子域仍然指向 NFT 的对象 ID,加载的 " +"Walrus 站点可以在 JavaScript 中检查其 `origin`,并使用子域来确定 NFT,从链中" +"获取它,并使用其内部字段来修改显示的站点。" + +#: docs/walrus-sites/redirects.md:45 +msgid "" +"For an end-to-end example, see the `flatland` [repo](https://github.com/" +"MystenLabs/example-walrus-sites/tree/main/flatland)." +msgstr "" +"有关端到端示例,请参见 `flatland` [repo](https://github.com/MystenLabs/" +"example-walrus-sites/tree/main/flatland)。" + +#: docs/walrus-sites/overview.md:3 +msgid "Technical Overview" +msgstr "技术概述" + +#: docs/walrus-sites/overview.md:5 +msgid "" +"In the following sections, we delve deeper in the technical specification of " +"Walrus Sites." +msgstr "在以下部分中,我们将深入探讨 Walrus 站点的技术规范。" + +#: docs/walrus-sites/overview.md:7 +msgid "High-level picture" +msgstr "高级图片" + +#: docs/walrus-sites/overview.md:9 +msgid "" +"Walrus Sites are enabled by Sui and Walrus. The resources of the Walrus Site " +"(`html`, `css`, `js`, images, etc.) are stored on Walrus, while the main " +"entry point to it is an object stored on Sui, which contains the metadata " +"for the site and point to the Walrus blob IDs." +msgstr "" +"Walrus 站点由 Sui 和 Walrus 启用。Walrus 站点的资源(`html`、`css`、`js`、图" +"像等)存储在 Walrus 上,而其主要入口点是存储在 Sui 上的对象,该对象包含站点的" +"元数据并指向 Walrus blob ID。" + +#: docs/walrus-sites/overview.md:13 +msgid "The Walrus Sites objects on Sui" +msgstr "Sui 上的 Walrus 站点对象" + +#: docs/walrus-sites/overview.md:15 +msgid "A Walrus `Site` is represented on Sui as a very simple object:" +msgstr "Walrus `站点` 在 Sui 上表示为一个非常简单的对象:" + +#: docs/walrus-sites/overview.md:24 +msgid "" +"The resources associated with this site are then added to this object as " +"[dynamic fields](https://docs.sui.io/concepts/dynamic-fields/) of type " +"`Resource`:" +msgstr "" +"与此站点关联的资源然后作为类型为 `Resource` 的[动态字段](https://docs.sui.io/" +"concepts/dynamic-fields/)添加到此对象中:" + +#: docs/walrus-sites/overview.md:27 +msgid "" +"```move\n" +"struct Resource has store, drop {\n" +" path: String,\n" +" // The walrus blob id containing the bytes for this resource\n" +" blob_id: u256,\n" +" ⋮\n" +"}\n" +"```" +msgstr "" + +#: docs/walrus-sites/overview.md:36 +msgid "Importantly, each resource contains:" +msgstr "重要的是,每个资源包含:" + +#: docs/walrus-sites/overview.md:38 +msgid "" +"the `path` of the resource, for example `/index.html` (all the paths are " +"always represented as starting from root `/`);" +msgstr "" +"资源的 `路径`,例如 `/index.html`(所有路径始终表示为从根目录 `/` 开始);" + +#: docs/walrus-sites/overview.md:40 +msgid "" +"the `blob_id`, which is the Walrus blob ID where the resource can be found; " +"and" +msgstr "`blob_id`,即可以找到资源的 Walrus blob ID;以及" + +#: docs/walrus-sites/overview.md:41 +msgid "additional fields, that will be explained later in the documentation." +msgstr "其他字段,将在文档中稍后解释。" + +#: docs/walrus-sites/overview.md:43 +msgid "" +"These `Resource` dynamic fields are keyed with a struct of type " +"`ResourcePath`" +msgstr "这些 `Resource` 动态字段以类型为 `ResourcePath` 的结构为键" + +#: docs/walrus-sites/overview.md:51 +msgid "" +"This struct just holds the string of the path (`/index.html`); having a " +"separate type ensures that we will not have namespace collisions with other " +"dynamic fields, possibly added by other packages." +msgstr "" +"这个结构只包含路径的字符串(`/index.html`);拥有单独的类型可确保我们不会与其" +"他动态字段发生命名空间冲突,这些字段可能由其他包添加。" + +#: docs/walrus-sites/overview.md:54 +msgid "" +"To see this in action, look at [a Walrus Site in the explorer](https://" +"suiscan.xyz/testnet/" +"object/0xd20b90149409ba5d005d4a2cd981db9494bc3cdb2f04c47ca1af98dd8f71610a), " +"and check its dynamic fields." +msgstr "" +"要查看其实际操作,请查看[资源管理器中的 Walrus 站点](https://suiscan.xyz/" +"testnet/" +"object/0xd20b90149409ba5d005d4a2cd981db9494bc3cdb2f04c47ca1af98dd8f71610a)," +"并检查其动态字段。" + +#: docs/walrus-sites/overview.md:58 +msgid "The site rendering path" +msgstr "站点渲染路径" + +#: docs/walrus-sites/overview.md:60 +msgid "" +"Given the Sui object ID of a Walrus Site, it is easy to look up the " +"resources that compose it by looking at the dynamic fields, and then fetch " +"these resources from Walrus using the blob ID contained in the `Resource` " +"struct." +msgstr "" +"给定 Walrus 站点的 Sui 对象 ID,通过查看动态字段很容易查找组成它的资源,然后" +"使用 `Resource` 结构中包含的 blob ID 从 Walrus 获取这些资源。" + +#: docs/walrus-sites/overview.md:64 +msgid "" +"The only outstanding question is, therefore, how to perform these lookups on " +"the client. A few approaches are possible:" +msgstr "唯一悬而未决的问题是,如何在客户端执行这些查找。有几种方法是可能的:" + +#: docs/walrus-sites/overview.md:67 +msgid "" +"Having a server that accepts requests for a Sui object ID and possibly a " +"path, and performs this resolution on behalf of the client, serving back the " +"resource as a standard HTML Response." +msgstr "" +"拥有一个服务器,该服务器接受 Sui 对象 ID 和可能的路径的请求,并代表客户端执行" +"此解析,将资源作为标准 HTML 响应返回。" + +#: docs/walrus-sites/overview.md:69 +msgid "" +"Using a custom application on the client that has both a web browser and " +"knowledge of how Walrus Sites work, and can locally perform this resolution." +msgstr "" +"在客户端使用一个自定义应用程序,该应用程序既有网络浏览器又了解 Walrus 站点的" +"工作原理,并且可以在本地执行此解析。" + +#: docs/walrus-sites/overview.md:71 +msgid "" +"A hybrid approach based on service workers, where a service worker that is " +"able to perform the resolution is installed in the browser from a portal." +msgstr "" +"基于服务工作线程的混合方法,其中能够执行解析的服务工作线程从门户安装到浏览器" +"中。" + +#: docs/walrus-sites/overview.md:74 +msgid "" +"All of these approaches are viable (the first has been used for similar " +"applications in IPFS gateways, for example), and have trade-offs." +msgstr "" +"所有这些方法都是可行的(例如,第一个方法已用于 IPFS 网关中的类似应用程序)," +"并且各有利弊。" + +#: docs/walrus-sites/overview.md:77 +msgid "" +"Currently, we provide the server-side and the service-worker based " +"approaches." +msgstr "目前,我们提供基于服务器端和服务工作线程的方法。" + +#: docs/walrus-sites/overview.md:79 +msgid "Browsing and domain isolation" +msgstr "浏览和域隔离" + +#: docs/walrus-sites/overview.md:81 +msgid "" +"We must ensure that, when browsing multiple sites through a portal, for " +"example the one hosted at , these sites are isolated. " +"Isolation is necessary for security, and to ensure that the wallet " +"connection in the browser works as expected." +msgstr "" +"我们必须确保,当通过门户浏览多个站点时,例如托管在 的站" +"点,这些站点是隔离的。隔离对于安全性是必要的,并确保浏览器中的钱包连接按预期" +"工作。" + +#: docs/walrus-sites/overview.md:85 +msgid "" +"To do so, we give each Walrus Site a specific _subdomain_ of the portal's " +"domain. For example, the Flatland mint dApp is hosted at , where the subdomain `flatland` is uniquely associated to the " +"object ID of the Walrus Site through SuiNS." +msgstr "" +"为此,我们为每个 Walrus 站点提供门户域的特定 _子域_。例如,Flatland mint " +"dApp 托管在 ,其中子域 `flatland` 通过 SuiNS 唯" +"一关联到 Walrus 站点的对象 ID。" + +#: docs/walrus-sites/overview.md:89 +msgid "" +"Walrus Sites also work without SuiNS: a site can _always_ be browsed by " +"using as subdomain the Base36 encoding of the Sui object ID of the site. For " +"the Flatland dApp, this URL is: " +"." +msgstr "" +"Walrus 站点也可以在没有 SuiNS 的情况下工作:可以 _始终_ 通过使用站点的 Sui 对" +"象 ID 的 Base36 编码作为子域来浏览站点。对于 Flatland dApp,此 URL 为:" +"。" + +#: docs/walrus-sites/overview.md:93 +msgid "Base36 was chosen for two reasons, forced by the subdomain standards:" +msgstr "选择 Base36 有两个原因,这是由子域标准强制要求的:" + +#: docs/walrus-sites/overview.md:95 +msgid "" +"A subdomain can have at most 63 characters, while a Hex-encoded Sui object " +"ID requires 64." +msgstr "" +"子域最多可以有 63 个字符,而十六进制编码的 Sui 对象 ID 需要 64 个字符。" + +#: docs/walrus-sites/overview.md:96 +msgid "" +"A subdomain is case _insensitive_, ruling out other popular encodings, e.g., " +"Base64 or Base58." +msgstr "子域不区分大小写,排除了其他流行的编码,例如 Base64 或 Base58。" + +#: docs/walrus-sites/overview.md:98 +msgid "Walrus Site portals" +msgstr "Walrus 站点门户" + +#: docs/walrus-sites/overview.md:100 +msgid "Portal types" +msgstr "门户类型" + +#: docs/walrus-sites/overview.md:102 +msgid "" +"As mentioned before, we provide two types of portals to browse Walrus Sites:" +msgstr "如前所述,我们提供两种类型的门户来浏览 Walrus 站点:" + +#: docs/walrus-sites/overview.md:104 +msgid "" +"The server-side portal, which is a server that resolves a Walrus Site, " +"returning it to the browser. The server-side portal is hosted at ." +msgstr "" +"服务器端门户,这是一个解析 Walrus 站点并将其返回到浏览器的服务器。服务器端门" +"户托管在 。" + +#: docs/walrus-sites/overview.md:106 +msgid "" +"The service-worker portal, which is a service worker that is installed in " +"the browser and resolves a Walrus Site. The service-worker portal is hosted " +"at ." +msgstr "" +"服务工作线程门户,这是一个安装在浏览器中并解析 Walrus 站点的服务工作线程。服" +"务工作线程门户托管在 。" + +#: docs/walrus-sites/overview.md:109 +msgid "" +"We now describe the resolution process of a Walrus Site in the browser using " +"the service-worker portal as an example." +msgstr "现在我们描述在浏览器中使用服务工作线程门户解析 Walrus 站点的过程。" + +#: docs/walrus-sites/overview.md:112 +msgid "The end-to-end resolution of a Walrus Site" +msgstr "Walrus 站点的端到端解析" + +#: docs/walrus-sites/overview.md:114 +msgid "" +"We now show in greater detail how a Walrus Site is rendered in a client's " +"browser with the service worker approach. The steps below all reference the " +"following figure:" +msgstr "" +"现在我们更详细地展示了如何使用服务工作线程方法在客户端的浏览器中渲染 Walrus " +"站点。以下步骤均参考下图:" + +#: docs/walrus-sites/overview.md:117 +msgid "![Walrus Site resolution](../assets/walrus-site-diagram.svg)" +msgstr "![Walrus 站点解析](../assets/walrus-site-diagram.svg)" + +#: docs/walrus-sites/overview.md:119 +msgid "" +"**Site publishing** (step 0): The site developer publishes the Walrus Site " +"using the [`site-builder`](#the-site-builder), or making use of a publisher. " +"Assume the developer uses the SuiNS name `dapp.sui` to point to the object " +"ID of the created Walrus Site." +msgstr "" +"** 站点发布 **(步骤 0):站点开发人员使用 [`site-builder`](#the-site-" +"builder) 或利用发布器发布 Walrus 站点。假设开发人员使用 SuiNS 名称 `dapp." +"sui` 指向创建的 Walrus 站点的对象 ID。" + +#: docs/walrus-sites/overview.md:122 +msgid "" +"**Browsing starts** (step 1): A client browses `dapp.walrus.site/index.html` " +"in their browser." +msgstr "" +"** 浏览开始 **(步骤 1):客户端在其浏览器中浏览 `dapp.walrus.site/index." +"html`。" + +#: docs/walrus-sites/overview.md:123 +msgid "" +"**Service worker installation** (steps 2-6): The browser connects to the " +"portal hosted at `walrus.site`, which responds with a page that installs the " +"service worker for `dapp.walrus.site`. The page is refreshed to activate the " +"service worker." +msgstr "" +"** 服务工作线程安装 **(步骤 2-6):浏览器连接到托管在 `walrus.site` 的门户," +"该门户响应一个页面,该页面为 `dapp.walrus.site` 安装服务工作线程。页面刷新以" +"激活服务工作线程。" + +#: docs/walrus-sites/overview.md:126 +msgid "" +"**Site resolution** (steps 7-10): The service worker, which is now " +"installed, interprets its _origin_ `dapp.walrus.site`, and makes a SuiNS " +"resolution for `dapp.sui`, obtaining the related object ID. Using the object " +"ID, it then fetches the dynamic fields of the object (also checking " +"[redirects](./portal.md)). From the dynamic fields, it selects the one for `/" +"index.html`, and extracts its Walrus blob ID and headers (see the [advanced " +"section on headers](./routing.md))." +msgstr "" +"** 站点解析 **(步骤 7-10):现在安装的服务工作线程解释其 _来源_ `dapp." +"walrus.site`,并进行 `dapp.sui` 的 SuiNS 解析,获取相关的对象 ID。使用对象 " +"ID,然后获取对象的动态字段(还检查 [重定向](./portal.md))。从动态字段中,它" +"选择 `index.html` 的字段,并提取其 Walrus blob ID 和头信息(请参阅 [头信息高" +"级部分](./routing.md))。" + +#: docs/walrus-sites/overview.md:131 +msgid "" +"**Blob fetch** (steps 11-14): Given the blob ID, the service worker queries " +"a Walrus aggregator for the blob." +msgstr "" +"** Blob 获取 **(步骤 11-14):给定 blob ID,服务工作线程会向 Walrus 聚合器查" +"询 blob。" + +#: docs/walrus-sites/overview.md:133 +msgid "" +"**Returning the response** (steps 15-16): Now that the service worker has " +"the bytes for `/index.html`, and its headers, it can craft a response that " +"is then rendered by the browser." +msgstr "" +"** 返回响应 **(步骤 15-16):现在服务工作线程已经获取了 `/index.html` 的字节" +"及其头信息,它可以构建一个响应,然后由浏览器渲染。" + +#: docs/walrus-sites/overview.md:137 +msgid "" +"These steps are executed for all resources the browser may query thereafter " +"(for example, if `/index.html` points to `assets/cat.png`)." +msgstr "" +"这些步骤会对浏览器之后可能查询的所有资源执行(例如,如果 `/index.html` 指向 " +"`assets/cat.png`)。" + +#: docs/walrus-sites/overview.md:140 +msgid "The site builder" +msgstr "站点构建器" + +#: docs/walrus-sites/overview.md:142 +msgid "" +"To facilitate the creation of Walrus Sites, we provide the \"site builder\" " +"tool. The site builder takes care of creating Walrus Sites object on Sui, " +"with the correct structure, and stores the site resources to Walrus. Refer " +"to the [tutorial](./tutorial.md) for setup and usage instructions." +msgstr "" +"为了方便创建 Walrus 站点,我们提供了 \"站点构建器\" 工具。站点构建器负责在 " +"Sui 上创建 Walrus 站点对象,具有正确的结构,并将站点资源存储到 Walrus。有关设" +"置和使用说明,请参阅 [教程](./tutorial.md)。" + +#: docs/walrus-sites/portal.md:5 +msgid "" +"We use the term \"portal\" to indicate any technology that is used to access " +"an browse Walrus Sites. As mentioned in the [overview](./overview.md#the-" +"site-rendering-path), we foresee three kinds of portals:" +msgstr "" +"我们使用术语 \"门户\" 来表示用于访问和浏览 Walrus 站点的任何技术。如 [概述]" +"(./overview.md#the-site-rendering-path) 中所述,我们预见了三种类型的门户:" + +#: docs/walrus-sites/portal.md:9 +msgid "server-side portals;" +msgstr "服务器端门户;" + +#: docs/walrus-sites/portal.md:10 +msgid "custom local apps; and" +msgstr "自定义本地应用程序;以及" + +#: docs/walrus-sites/portal.md:11 +msgid "service-worker based portals in the browser." +msgstr "浏览器中基于服务工作线程的门户。" + +#: docs/walrus-sites/portal.md:13 +msgid "" +"Currently, the server-side and service-workers portals are available at " +" and , respectively." +msgstr "" +"目前,服务器端和服务工作线程门户分别可在 访问。" + +#: docs/walrus-sites/portal.md:16 +msgid "Running the portal locally" +msgstr "在本地运行门户" + +#: docs/walrus-sites/portal.md:18 +msgid "" +"You can run a service-worker portal locally if you want to browse Walrus " +"Sites without accessing external portals or for development purposes." +msgstr "" +"如果您想在不访问外部门户的情况下浏览 Walrus 站点或出于开发目的,您可以在本地" +"运行服务工作线程门户。" + +#: docs/walrus-sites/portal.md:21 +msgid "" +"This requires having the [`pnpm`](https://pnpm.io/) tool installed. To " +"start, clone the `walrus-sites` repo and enter the `portal` directory. Here, " +"run" +msgstr "" +"这需要安装 [`pnpm`](https://pnpm.io/) 工具。首先,克隆 `walrus-sites` 仓库并" +"进入 `portal` 目录。在这里,运行" + +#: docs/walrus-sites/portal.md:26 +msgid "# Build the portal you want to use, or both\n" +msgstr "# 构建您要使用的门户,或两者都构建\n" + +#: docs/walrus-sites/portal.md:32 +msgid "" +"to install the dependencies, and then either one of the following commands:" +msgstr "来安装依赖项,然后运行以下命令之一:" + +#: docs/walrus-sites/portal.md:35 +msgid "# Serve the server-side portal\n" +msgstr "# 提供服务器端门户服务\n" + +#: docs/walrus-sites/portal.md:37 +msgid "# Serve the service-worker portal\n" +msgstr "# 提供服务工作线程门户服务\n" + +#: docs/walrus-sites/portal.md:42 +msgid "" +"to serve one of the portals. Typically, you will find it served at " +"`localhost:8080` (but check the output of the serve command)." +msgstr "" +"来提供其中一个门户服务。通常,您会发现它在 `localhost:8080` 提供服务(但请检" +"查服务命令的输出)。" + +#: docs/walrus-sites/portal.md:45 +msgid "" +"For the production versions, use the `prod` commands: `serve:prod:server` " +"and `serve:prod:worker`." +msgstr "" +"对于生产版本,请使用 `prod` 命令:`serve:prod:server` 和 `serve:prod:" +"worker`。" + +#: docs/walrus-sites/portal.md:47 +msgid "Configuring the portal" +msgstr "配置门户" + +#: docs/walrus-sites/portal.md:49 +msgid "" +"The most important configuration parameters for the portal are in `portal/" +"common/lib/constants.ts`:" +msgstr "门户的最重要配置参数在 `portal/common/lib/constants.ts` 中:" + +#: docs/walrus-sites/portal.md:51 +msgid "" +"`NETWORK`: The Sui network to be used for fetching the Walrus Sites objects. " +"Currently, we use Sui `testnet`." +msgstr "" +"`NETWORK`:用于获取 Walrus 站点对象的 Sui 网络。目前,我们使用 Sui " +"`testnet`。" + +#: docs/walrus-sites/portal.md:53 +msgid "" +"`AGGREGATOR`: The URL of the [aggregator](../usage/web-api.md) from which " +"the service worker will fetch the Walrus blobs." +msgstr "" +"`AGGREGATOR`:服务工作线程将从中获取 Walrus blob 的 [聚合器](../usage/web-" +"api.md) 的 URL。" + +#: docs/walrus-sites/portal.md:55 +msgid "`SITE_PACKAGE`: The Sui object ID of the Walrus Sites package." +msgstr "`SITE_PACKAGE`:Walrus 站点包的 Sui 对象 ID。" + +#: docs/walrus-sites/portal.md:56 +msgid "" +"`MAX_REDIRECT_DEPTH`: The number of [redirects](./redirects.md) the service " +"worker will follow before stopping." +msgstr "" +"`MAX_REDIRECT_DEPTH`:服务工作线程在停止之前将遵循的 [重定向](./redirects." +"md) 数量。" + +#: docs/walrus-sites/portal.md:58 +msgid "" +"`SITE_NAMES`: Hard coded `name: objectID` mappings, to override the SuiNS " +"names. For development only." +msgstr "" +"`SITE_NAMES`:硬编码的 `name: objectID` 映射,以覆盖 SuiNS 名称。仅用于开发。" + +#: docs/walrus-sites/authentication.md:5 +msgid "" +"Walrus Sites offer a simple mechanism to authenticate the data that is " +"served from the Walrus storage on the client side. Thus, Walrus Sites can " +"guarantee (with various degrees of confidence, depending on the setup) that " +"the site data is authentic and has not been tampered with by a malicious " +"aggregator." +msgstr "" +"Walrus 站点提供了一种简单的机制来验证从客户端的 Walrus 存储中提供的数据。因" +"此,Walrus 站点可以保证(根据设置的不同,具有不同程度的置信度)站点数据是可信" +"的,并且没有被恶意聚合器篡改。" + +#: docs/walrus-sites/authentication.md:10 +msgid "Authentication mechanism" +msgstr "认证机制" + +#: docs/walrus-sites/authentication.md:12 +msgid "" +"The Walrus Sites resource object on Sui stores, alongside the resource " +"information, a SHA-256 hash of the resource's content." +msgstr "" +"Sui 上的 Walrus 站点资源对象与资源信息一起存储资源内容的 SHA-256 哈希值。" + +#: docs/walrus-sites/authentication.md:15 +msgid "" +"When the client requests a resource, the portal will check that the hash of " +"the data received from the Walrus storage (and the Walrus aggregator in " +"particular) matches the hash stored on Sui." +msgstr "" +"当客户端请求资源时,门户将检查从 Walrus 存储(特别是 Walrus 聚合器)接收的数" +"据的哈希值是否与存储在 Sui 上的哈希值匹配。" + +#: docs/walrus-sites/authentication.md:18 +msgid "" +"If the hashes do not match, the portal will return the following warning " +"page:" +msgstr "如果哈希值不匹配,门户将返回以下警告页面:" + +#: docs/walrus-sites/authentication.md:20 +msgid "![Hash mismatch warning page](../assets/walrus-sites-hash-mismatch.png)" +msgstr "![哈希不匹配警告页面](../assets/walrus-sites-hash-mismatch.png)" + +#: docs/walrus-sites/authentication.md:22 +msgid "Authentication Guarantees" +msgstr "认证保证" + +#: docs/walrus-sites/authentication.md:24 +msgid "" +"Depending on the type of deployment, this technique gives increasing levels " +"of confidence that the site data is authentic. We list them here in " +"increasing order of assurance." +msgstr "" +"根据部署类型,此技术提供了越来越高的置信度,确保站点数据是可信的。我们按置信" +"度递增的顺序列出它们。" + +#: docs/walrus-sites/authentication.md:27 +msgid "Remote server-side portal deployment" +msgstr "远程服务器端门户部署" + +#: docs/walrus-sites/authentication.md:29 +msgid "" +"In this case, the user must fully trust the portal provider to authenticate " +"the data. With a trusted portal, the authentication mechanism guarantees " +"that the aggregator or cache (from which the blob has been fetched) did not " +"tamper with the contents of the blob." +msgstr "" +"在这种情况下,用户必须完全信任门户提供商来验证数据。通过可信的门户,认证机制" +"保证聚合器或缓存(从中获取 blob)没有篡改 blob 的内容。" + +#: docs/walrus-sites/authentication.md:33 +msgid "Remote service-worker portal deployment" +msgstr "远程服务工作线程门户部署" + +#: docs/walrus-sites/authentication.md:35 +msgid "" +"Here, the portal provider is only trusted to provide the correct service " +"worker code to the user. The user's browser will then perform the fetching " +"and authentication. The guarantees are therefore the same as with the remote " +"server-site portal, with the addition that the user can inspect the code " +"returned by the portal provider and verify its integrity (e.g., by comparing " +"it the hash of the service worker code to one that is known to be correct)." +msgstr "" +"在这里,门户提供商仅被信任向用户提供正确的服务工作线程代码。然后,用户的浏览" +"器将执行获取和认证。因此,保证与远程服务器端门户相同,此外,用户可以检查门户" +"提供商返回的代码并验证其完整性(例如,通过将服务工作线程代码的哈希值与已知正" +"确的哈希值进行比较)。" + +#: docs/walrus-sites/authentication.md:41 +msgid "Local portal deployment" +msgstr "本地门户部署" + +#: docs/walrus-sites/authentication.md:43 +msgid "" +"Finally, a user can clone the Walrus Sites repository and deploy a portal " +"locally, browsing Walrus Sites through `localhost`. In this case, the user " +"has full control over the portal code and can verify its operation. " +"Therefore, they can fully authenticate that the data served by Walrus and " +"Walrus Sites is what the original developer intended." +msgstr "" +"最后,用户可以克隆 Walrus 站点仓库并在本地部署门户,通过 `localhost` 浏览 " +"Walrus 站点。在这种情况下,用户完全控制门户代码并可以验证其操作。因此,他们可" +"以完全认证 Walrus 和 Walrus 站点提供的数据是原始开发人员所期望的。" + +#: docs/walrus-sites/restrictions.md:5 +msgid "" +"Walrus Sites can be used to deploy almost any form of traditional static " +"web2 website build for modern browsers. There are, however, a number of " +"restrictions that a developer should keep in mind when creating or porting a " +"website to Walrus Sites." +msgstr "" +"Walrus 站点可用于部署几乎任何形式的为现代浏览器构建的传统静态 web2 网站。但" +"是,开发人员在创建或移植网站到 Walrus 站点时应牢记一些限制。" + +#: docs/walrus-sites/restrictions.md:9 +msgid "No secret values" +msgstr "没有秘密值" + +#: docs/walrus-sites/restrictions.md:11 +msgid "" +"Walrus Sites are fully publicly accessible, as the metadata is stored on " +"Sui, and the site content is stored on Walrus. Therefore, developers _must " +"not_ store secret values within the sites." +msgstr "" +"Walrus 站点是完全公开访问的,因为元数据存储在 Sui 上,站点内容存储在 Walrus " +"上。因此,开发人员 _绝不能_ 在站点中存储秘密值。" + +#: docs/walrus-sites/restrictions.md:14 +msgid "" +"We emphasize again that any such backend-specific operations (storing secret " +"values, authentication, etc.) are achievable by leveraging the integration " +"with the Sui blockchain and a Sui-compatible wallet." +msgstr "" +"我们再次强调,任何此类后端特定操作(存储秘密值、认证等)都可以通过利用与 Sui " +"区块链和 Sui 兼容钱包的集成来实现。" + +#: docs/walrus-sites/restrictions.md:18 +msgid "There is a maximum redirect depth" +msgstr "有一个最大重定向深度" + +#: docs/walrus-sites/restrictions.md:20 +msgid "" +"The number of consecutive redirects a Walrus Site can perform is capped by " +"the portal (see [Portal configuration](./portal.md)). This measure ensures " +"that loading a Walrus Site does not result in an infinite loading loop." +msgstr "" +"Walrus 站点可以执行的连续重定向次数由门户限制(请参阅 [门户配置](./portal." +"md))。此措施确保加载 Walrus 站点不会导致无限加载循环。" + +#: docs/walrus-sites/restrictions.md:24 +msgid "" +"Different portals can set this limit as they desire. The limit for the " +"portal hosted at has a maximum redirect depth of 3." +msgstr "" +"不同的门户可以根据需要设置此限制。托管在 的门户的最大重" +"定向深度为 3。" + +#: docs/walrus-sites/restrictions.md:27 +msgid "Service workers are not available" +msgstr "服务工作线程不可用" + +#: docs/walrus-sites/restrictions.md:29 +msgid "" +"Walrus Sites leverage service workers in the clients' browsers to perform " +"essential operations:" +msgstr "Walrus 站点利用客户端浏览器中的服务工作线程执行基本操作:" + +#: docs/walrus-sites/restrictions.md:31 +msgid "reading the site metadata from Sui;" +msgstr "从 Sui 读取站点元数据;" + +#: docs/walrus-sites/restrictions.md:32 +msgid "fetching the page content from Walrus; and" +msgstr "从 Walrus 获取页面内容;并且" + +#: docs/walrus-sites/restrictions.md:33 +msgid "serving the content to the browser." +msgstr "将内容提供给浏览器。" + +#: docs/walrus-sites/restrictions.md:35 +msgid "" +"Therefore, a site deployed on Walrus Sites cannot use service workers " +"itself. Installing a service worker from within a Walrus Site will result in " +"a dysfunctional site and a poor experience for the user." +msgstr "" +"因此,部署在 Walrus 站点上的站点本身无法使用服务工作线程。从 Walrus 站点内安" +"装服务工作线程将导致站点功能失效,并给用户带来不良体验。" + +#: docs/walrus-sites/restrictions.md:44 +msgid "iOS Sui mobile wallets do not work with the service-worker portal" +msgstr "iOS Sui 移动钱包无法与服务工作线程门户一起使用" + +#: docs/walrus-sites/restrictions.md:46 +msgid "" +"Service workers cannot be loaded inside an in-app browser on iOS, because of " +"a limitation of the WebKit engine. As a consequence, Walrus Sites cannot be " +"used within Sui-compatible wallet apps on iOS. Therefore, Sui wallets cannot " +"currently be used on a service-worker portal on iOS. Note, however, that " +"_browsing_ a Walrus Site is still possible on iOS through any browser." +msgstr "" +"由于 WebKit 引擎的限制,服务工作线程无法在 iOS 的应用内浏览器中加载。因此," +"Walrus 站点无法在 iOS 上的 Sui 兼容钱包应用中使用。因此,Sui 钱包目前无法在 " +"iOS 上的服务工作线程门户中使用。但是,请注意,通过任何浏览器在 iOS 上 _浏览_ " +"Walrus 站点仍然是可能的。" + +#: docs/walrus-sites/restrictions.md:51 +msgid "" +"To provide a seamless experience for iOS users (and other users on browsers " +"that do not support service workers), we implemented a redirect to a server-" +"side portal (). Whenever a user on an iOS wallet browses " +"a Walrus Site, the redirect will automatically take them to the `." +"blob.store` server-side portal. This way, the user can still use the wallet." +msgstr "" +"为了为 iOS 用户(以及其他不支持服务工作线程的浏览器用户)提供无缝体验,我们实" +"现了重定向到服务器端门户()。每当 iOS 钱包上的用户浏览 " +"Walrus 站点时,重定向将自动将他们带到 `.blob.store` 服务器端门户。" +"这样,用户仍然可以使用钱包。" + +#: docs/walrus-sites/restrictions.md:61 +msgid "No support for progressive web apps (PWAs)" +msgstr "不支持渐进式网络应用程序(PWAs)" + +#: docs/walrus-sites/restrictions.md:63 +msgid "" +"With the current design, Walrus Sites cannot be used for progressive web " +"apps (PWAs)." +msgstr "根据当前设计,Walrus 站点无法用于渐进式网络应用程序(PWAs)。" + +#: docs/walrus-sites/restrictions.md:65 +msgid "" +"Two characteristics of the service-worker portal prevent support for PWAs:" +msgstr "服务工作线程门户的两个特性阻止了对 PWAs 的支持:" + +#: docs/walrus-sites/restrictions.md:67 +msgid "" +"Since the service worker needs to be registered for the page to work, the " +"PWA's manifest file cannot be loaded by the browser directly." +msgstr "" +"由于需要注册服务工作线程才能使页面工作,浏览器无法直接加载 PWA 的清单文件。" + +#: docs/walrus-sites/restrictions.md:69 +msgid "" +"There can only be one service worker registered per origin. Therefore, " +"registering a PWA's service worker would remove the Walrus Sites service " +"worker, breaking Walrus Sites' functionality." +msgstr "" +"每个源只能注册一个服务工作线程。因此,注册 PWA 的服务工作线程将移除 Walrus 站" +"点的服务工作线程,从而破坏 Walrus 站点的功能。" + +#: docs/walrus-sites/restrictions.md:72 +msgid "" +"Note that the server-side portal does not share these limitations. However, " +"for the moment, we support both technologies: Walrus Sites must be able to " +"load from both a service-worker portal and a server-side portal, and " +"therefore have to be built with the more restrictive feature set. For more " +"details, see the [installation requirements for PWAs](https://en.wikipedia." +"org/wiki/Progressive_web_app#Installation_criteria)." +msgstr "" +"请注意,服务器端门户不受这些限制。然而,目前我们支持这两种技术:Walrus 站点必" +"须能够从服务工作线程门户和服务器端门户加载,因此必须使用更严格的功能集构建。" +"有关更多详细信息,请参阅 [PWAs 的安装要求](https://en.wikipedia.org/wiki/" +"Progressive_web_app#Installation_criteria)。" + +#: docs/walrus-sites/tos.md:5 +msgid "Walrus Sites - TERMS of SERVICE" +msgstr "Walrus 站点 - 服务条款" + +#: docs/walrus-sites/tos.md:7 +msgid "Last Updated: June 18, 2024" +msgstr "**最后更新:** 2024年6月18日" + +#: docs/walrus-sites/tos.md:9 +msgid "" +"These Terms of Service (“**Terms**”) govern your use of certain software " +"services, including Walrus Sites provided by Mysten Labs, Inc. (“**Mysten " +"Labs**”) (collectively the \"**Services**\"). By accessing the Services, you " +"agree to and accept these terms and conditions. If you don’t agree to be " +"bound by these Terms, do not use the Services." +msgstr "" +"这些服务条款(“ **条款** ”)管理您对包括由 Mysten Labs, Inc.(“ **Mysten " +"Labs** ”)提供的 Walrus 站点在内的某些软件服务的使用(统称为“ **服务** ”)。" +"通过访问服务,您同意并接受这些条款和条件。如果您不同意受这些条款的约束,请不" +"要使用服务。" + +#: docs/walrus-sites/tos.md:14 +msgid "" +"IMPORTANT NOTICE REGARDING ARBITRATION FOR U.S. CUSTOMERS: WHEN YOU AGREE TO " +"THESE TERMS YOU ARE AGREEING (WITH LIMITED EXCEPTION) TO RESOLVE ANY DISPUTE " +"BETWEEN YOU AND MYSTEN LABS THROUGH BINDING, INDIVIDUAL ARBITRATION RATHER " +"THAN IN COURT. PLEASE REVIEW CAREFULLY SECTION XIV “DISPUTE RESOLUTION” " +"BELOW FOR DETAILS REGARDING ARBITRATION." +msgstr "" +"关于美国客户仲裁的重要通知:当您同意这些条款时,您同意(有有限例外)通过具有" +"约束力的个人仲裁而不是在法庭上解决您与 Mysten Labs 之间的任何争议。请仔细阅读" +"以下第十四节“争议解决”以了解有关仲裁的详细信息。" + +#: docs/walrus-sites/tos.md:19 +msgid "I. Privacy Policy" +msgstr "I. 隐私政策" + +#: docs/walrus-sites/tos.md:21 +msgid "" +"Please review our [Privacy Policy](../legal/privacy.md), which also governs " +"your use of the Services, for information on how we collect, use and share " +"your information. By using the Services you agree to be bound by our Privacy " +"Policy." +msgstr "" +"请查看我们的[隐私政策](../legal/privacy.md),该政策也适用于您对服务的使用,以" +"了解我们如何收集、使用和分享您的信息。通过使用服务,您同意受我们的隐私政策约" +"束。" + +#: docs/walrus-sites/tos.md:25 +msgid "II. Eligibility" +msgstr "II. 资格标准" + +#: docs/walrus-sites/tos.md:27 +msgid "" +"You may use the Services only if you are 18 years or older and capable of " +"forming a binding contract with Mysten Labs, and not otherwise barred from " +"using the Services under applicable law, including applicable U.S. and non-U." +"S. export control and trade sanctions laws." +msgstr "" +"您只能在年满18岁并有能力与 Mysten Labs 签订具有约束力的合同的情况下使用服务," +"并且在适用法律(包括适用的美国和非美国出口管制和贸易制裁法律)下未被禁止使用" +"服务。" + +#: docs/walrus-sites/tos.md:31 +msgid "III. Walrus Sites" +msgstr "III. Walrus站点" + +#: docs/walrus-sites/tos.md:33 +msgid "" +"The Services allow you access website resources (“**Stored Objects**”) that " +"are stored in the Walrus Store and linked by the Sui blockchain. In " +"providing the Services, Mysten Labs provides you with a means to access the " +"Stored Objects, but Mysten Labs does not process the Stored Objects " +"directly. Mysten Labs has no responsibility to screen or moderate Stored " +"Objects accessible via the Services. Stored Objects are developed by people " +"over whom Mysten Labs exercises no control. The Services may provide you " +"with access to Stored Objects that some people find objectionable, " +"inappropriate, or offensive. We assume no responsibility for the content of " +"Stored Objects accessed through the Services." +msgstr "" +"服务允许您访问存储在 Walrus Store 并由 Sui 区块链链接的网站资源(“ **存储对象" +"** ”)。在提供服务时,Mysten Labs 为您提供访问存储对象的方式,但 Mysten Labs " +"不直接处理存储对象。Mysten Labs 对通过服务访问的存储对象不承担筛选或管理的责" +"任。存储对象由 Mysten Labs 无法控制的人开发。服务可能会让您访问一些人认为令人" +"反感、不适当或冒犯的存储对象。我们对通过服务访问的存储对象的内容不承担任何责" +"任。" + +#: docs/walrus-sites/tos.md:42 +msgid "IV. Service Conditions and Disclaimers" +msgstr "IV. 服务条件和免责声明" + +#: docs/walrus-sites/tos.md:44 +msgid "" +"Fees. We may charge fees for some or part of the Services we make " +"available to you. We reserve the right to change those fees at any time, in " +"our sole and absolute discretion." +msgstr "" +"费用。我们可能会对我们提供给您的部分或全部服务收取费用。我们保留随时更" +"改这些费用的权利,完全由我们自行决定。" + +#: docs/walrus-sites/tos.md:46 +msgid "" +"Acknowledgment of Certain Risks; Disclaimers. Mysten Labs disclaims " +"any and all responsibility or liability for the accuracy, content, " +"completeness, legality, reliability, or operability or availability of " +"information or material accessed via the Services. Mysten Labs disclaims any " +"responsibility for the deletion, failure to store, misdelivery, or untimely " +"delivery of any information or material. Mysten Labs disclaims any " +"responsibility for any harm resulting from accessing any information or " +"material on any blockchain through the Services. YOU UNDERSTAND AND AGREE " +"THAT YOU DOWNLOAD OR OTHERWISE OBTAIN MATERIAL OR DATA THROUGH THE USE OF " +"THE SERVICES AT YOUR OWN DISCRETION AND RISK AND THAT YOU WILL BE SOLELY " +"RESPONSIBLE FOR ANY DAMAGES TO YOUR COMPUTER SYSTEM OR LOSS OF DATA THAT " +"RESULTS IN THE DOWNLOAD OF SUCH MATERIAL OR DATA." +msgstr "" +"确认某些风险;免责声明。Mysten Labs 对通过服务访问的信息或材料的准确" +"性、内容、完整性、合法性、可靠性或可操作性或可用性不承担任何责任或义务。" +"Mysten Labs 对任何信息或材料的删除、存储失败、错误传递或不及时传递不承担任何" +"责任。Mysten Labs 对通过服务访问任何区块链上的任何信息或材料所造成的任何损害" +"不承担任何责任。您理解并同意,您通过使用服务下载或以其他方式获取材料或数据是" +"出于您自己的判断和风险,您将对下载此类材料或数据导致的任何计算机系统损坏或数" +"据丢失承担全部责任。" + +#: docs/walrus-sites/tos.md:57 +msgid "" +"The Services could be impacted by one or more regulatory inquiries or " +"regulatory actions, which could impede or limit the ability of Mysten Labs " +"to continue to make its proprietary software, and thus, could impede or " +"limit your ability to continue to use the Services." +msgstr "" +"服务可能会受到一个或多个监管调查或监管行动的影响,这可能会阻碍或限制 Mysten " +"Labs 继续制作其专有软件的能力,从而可能会阻碍或限制您继续使用服务的能力。" + +#: docs/walrus-sites/tos.md:61 +msgid "" +"You understand that the Walrus Store and Sui blockchain (and all other " +"networks with which the Services may be compatible) remain under " +"development, which creates technological and security risks when using the " +"Services in addition to uncertainty relating to Digital Assets and " +"transactions therein. You acknowledge that the cost of transacting on the " +"Sui blockchain is variable and may increase at any time, thereby impacting " +"any activities taking place on the Sui blockchain, which may result in price " +"fluctuations or increased prices for using the Services." +msgstr "" +"您理解 Walrus Store 和 Sui 区块链(以及服务可能兼容的所有其他网络)仍在开发" +"中,这在使用服务时会带来技术和安全风险,此外还存在与数字资产及其交易相关的不" +"确定性。您承认,在 Sui 区块链上进行交易的成本是可变的,可能随时增加,从而影响" +"在 Sui 区块链上进行的任何活动,这可能导致价格波动或使用服务的价格增加。" + +#: docs/walrus-sites/tos.md:68 +msgid "" +"The Services are provided to you \"as-is\" and \"with all faults.\" We make " +"no warranties or representations regarding the functionality, quality, or " +"fitness for a particular purpose of the Services. By using the Services, you " +"acknowledge and agree to the following:" +msgstr "" +"服务是按“原样”和“有所有缺陷”的方式提供给您的。我们不对服务的功能、质量或特定" +"用途的适用性做出任何保证或陈述。通过使用服务,您承认并同意以下内容:" + +#: docs/walrus-sites/tos.md:72 +msgid "" +"Mysten Labs disclaims all warranties, whether express, implied, or " +"statutory, including but not limited to any warranties of merchantability, " +"non-infringement, and fitness for a particular purpose." +msgstr "" +"Mysten Labs 不承担任何明示、暗示或法定的保证,包括但不限于任何适销性、非侵权" +"和特定用途适用性的保证。" + +#: docs/walrus-sites/tos.md:75 +msgid "" +"Mysten Labs does not guarantee that the Services will be free from errors, " +"bugs, or interruptions in service, including failed transactions for which " +"you have paid associated gas fees. Any use of the Services is at your own " +"risk." +msgstr "" +"Mysten Labs 不保证服务没有错误、漏洞或服务中断,包括您已支付相关燃气费的失败" +"交易。任何使用服务的行为均由您自行承担风险。" + +#: docs/walrus-sites/tos.md:78 +msgid "" +"Mysten Labs shall not be liable for any direct, indirect, incidental, " +"special, or consequential damages, whether arising from the use of the " +"Services or any inability to use the Services, even if Mysten Labs has been " +"advised of the possibility of such damages." +msgstr "" +"Mysten Labs 不对任何直接、间接、附带、特殊或后果性损害承担责任,无论是因使用" +"服务或无法使用服务而引起的,即使 Mysten Labs 已被告知此类损害的可能性。" + +#: docs/walrus-sites/tos.md:81 +msgid "" +"It is your responsibility to evaluate the accuracy, completeness, and " +"usefulness of any information, content, or data provided by the Services." +msgstr "评估服务提供的任何信息、内容或数据的准确性、完整性和有用性是您的责任。" + +#: docs/walrus-sites/tos.md:83 +msgid "" +"Mysten Labs is under no obligation to provide support, maintenance, updates, " +"or fixes for the Services." +msgstr "Mysten Labs 没有义务为服务提供支持、维护、更新或修复。" + +#: docs/walrus-sites/tos.md:85 +msgid "" +"Mysten Labs is not obligated to correct or address any errors, defects, or " +"issues identified in the Services." +msgstr "Mysten Labs 没有义务纠正或解决服务中发现的任何错误、缺陷或问题。" + +#: docs/walrus-sites/tos.md:87 +msgid "" +"Mysten Labs may change, update, or discontinue the Services at any time " +"without notice." +msgstr "Mysten Labs 可以随时更改、更新或终止服务,恕不另行通知。" + +#: docs/walrus-sites/tos.md:88 +msgid "" +"Your use of the Services indicates your acceptance of the risk associated " +"with its use." +msgstr "您使用服务表示您接受与使用服务相关的风险。" + +#: docs/walrus-sites/tos.md:91 +msgid "V. Ownership" +msgstr "V. 所有权" + +#: docs/walrus-sites/tos.md:93 +msgid "" +"We grant you a limited, non-exclusive, revocable, non-transferable, non-" +"sublicensable license to use the Services, only as authorized in these " +"Terms. We reserve all rights not expressly granted to you in these Terms. " +"The Services are protected by copyright, trademark, patent, and other laws " +"of the United States and other countries. We own all rights, title, interest " +"in and to the Services and all copies of the Services. These Terms do not " +"grant you any rights to our trademarks or service marks." +msgstr "" +"我们授予您有限的、非独占的、可撤销的、不可转让的、不可再许可的使用服务的许" +"可,仅在这些条款中授权的范围内。我们保留这些条款中未明确授予您的所有权利。服" +"务受美国和其他国家的版权、商标、专利和其他法律保护。我们拥有服务及其所有副本" +"的所有权、所有权和权益。这些条款不授予您对我们的商标或服务标志的任何权利。" + +#: docs/walrus-sites/tos.md:99 +msgid "" +"You may submit feedback, comments, or ideas about the Services " +"(“**Ideas**”). Submitting Ideas is entirely voluntary, and we will be free " +"to use such Ideas as we see fit and without any obligation to you." +msgstr "" +"您可以提交有关服务的反馈、评论或想法(“ **想法** ”)。提交想法完全是自愿的," +"我们可以自由使用这些想法,而无需对您承担任何义务。" + +#: docs/walrus-sites/tos.md:104 +msgid "VI. General Prohibitions and Mysten Labs’s Enforcement Rights." +msgstr "VI. 一般禁止事项和Mysten Labs的执行权利。" + +#: docs/walrus-sites/tos.md:106 +msgid "You agree not to do any of the following:" +msgstr "您同意不做以下任何事情:" + +#: docs/walrus-sites/tos.md:108 +msgid "" +"Use, display, mirror or frame the Services or any individual element within " +"the Services, Mysten Labs’s name, any Mysten Labs trademark, logo or other " +"proprietary information, or the layout and design of any page or form " +"contained on a page, without Mysten Labs’s express written consent;" +msgstr "" +"未经Mysten Labs明确书面同意,不得使用、展示、镜像或框架服务或服务中的任何单个" +"元素,Mysten Labs的名称,任何Mysten Labs商标、标志或其他专有信息,或页面上包" +"含的任何页面或表单的布局和设计;" + +#: docs/walrus-sites/tos.md:111 +msgid "" +"Access, tamper with, or use non-public areas of the Services, Mysten Labs’s " +"computer systems, or the technical delivery systems of Mysten Labs’s " +"providers;" +msgstr "" +"访问、篡改或使用服务的非公开区域,Mysten Labs的计算机系统或Mysten Labs提供商" +"的技术交付系统;" + +#: docs/walrus-sites/tos.md:113 +msgid "" +"Attempt to probe, scan or test the vulnerability of any Mysten Labs system " +"or network or breach any security or authentication measures;" +msgstr "" +"试图探测、扫描或测试任何Mysten Labs系统或网络的漏洞,或破坏任何安全或身份验证" +"措施;" + +#: docs/walrus-sites/tos.md:115 +msgid "" +"Avoid, bypass, remove, deactivate, impair, descramble or otherwise " +"circumvent any technological measure implemented by Mysten Labs or any of " +"Mysten Labs’s providers or any other third party (including another user) to " +"protect the Services;" +msgstr "" +"避免、绕过、移除、停用、削弱、解码或以其他方式规避Mysten Labs或任何Mysten " +"Labs提供商或任何其他第三方(包括其他用户)实施的任何技术措施,以保护服务;" + +#: docs/walrus-sites/tos.md:118 +msgid "" +"Attempt to access or search the Services or download content from the " +"Services using any engine, software, tool, agent, device or mechanism " +"(including spiders, robots, crawlers, data mining tools or the like) other " +"than the software and/or search agents provided by Mysten Labs or other " +"generally available third-party web browsers;" +msgstr "" +"试图使用任何引擎、软件、工具、代理、设备或机制(包括蜘蛛、机器人、爬虫、数据" +"挖掘工具等)访问或搜索服务或从服务下载内容,除非是Mysten Labs提供的软件和/或" +"搜索代理或其他普遍可用的第三方网络浏览器;" + +#: docs/walrus-sites/tos.md:122 +msgid "" +"Send any unsolicited or unauthorized advertising, promotional materials, " +"email, junk mail, spam, chain letters or other form of solicitation;" +msgstr "" +"发送任何未经请求或未经授权的广告、促销材料、电子邮件、垃圾邮件、垃圾邮件、连" +"锁信或其他形式的招揽;" + +#: docs/walrus-sites/tos.md:124 +msgid "" +"Use any meta tags or other hidden text or metadata utilizing a Mysten Labs " +"trademark, logo URL or product name without Mysten Labs’s express written " +"consent;" +msgstr "" +"未经Mysten Labs明确书面同意,不得使用任何元标签或其他隐藏文本或元数据,利用" +"Mysten Labs的商标、标志URL或产品名称;" + +#: docs/walrus-sites/tos.md:126 +msgid "" +"Use the Services, or any portion thereof, for any commercial purpose or for " +"the benefit of any third party or in any manner not permitted by these Terms;" +msgstr "" +"将服务或其任何部分用于任何商业目的或任何第三方的利益,或以这些条款不允许的任" +"何方式使用;" + +#: docs/walrus-sites/tos.md:128 +msgid "" +"Forge any TCP/IP packet header or any part of the header information in any " +"email or newsgroup posting, or in any way use the Services to send altered, " +"deceptive or false source-identifying information;" +msgstr "" +"伪造任何TCP/IP数据包头或任何电子邮件或新闻组发布中的头信息的任何部分,或以任" +"何方式使用服务发送更改的、欺骗性的或虚假的源标识信息;" + +#: docs/walrus-sites/tos.md:131 +msgid "" +"Attempt to decipher, decompile, disassemble or reverse engineer any of the " +"software used to provide the Services;" +msgstr "试图破译、反编译、反汇编或逆向工程用于提供服务的任何软件;" + +#: docs/walrus-sites/tos.md:133 +msgid "" +"Interfere with, or attempt to interfere with, the access of any user, host " +"or network, including, without limitation, sending a virus, overloading, " +"flooding, spamming, or mail-bombing the Services;" +msgstr "" +"干扰或试图干扰任何用户、主机或网络的访问,包括但不限于发送病毒、过载、洪泛、" +"垃圾邮件或邮件轰炸服务;" + +#: docs/walrus-sites/tos.md:136 +msgid "" +"Collect or store any personally identifiable information from the Services " +"from other users of the Services without their express permission;" +msgstr "未经其他服务用户的明确许可,从服务中收集或存储任何个人身份信息;" + +#: docs/walrus-sites/tos.md:138 +msgid "Impersonate or misrepresent your affiliation with any person or entity;" +msgstr "冒充或歪曲您与任何个人或实体的关系;" + +#: docs/walrus-sites/tos.md:139 +msgid "Violate any applicable law or regulation; or" +msgstr "违反任何适用的法律或法规;或" + +#: docs/walrus-sites/tos.md:140 +msgid "" +"Encourage or enable any other individual to do any of the foregoing. Mysten " +"Labs is not obligated to monitor access to or use of the Services or to " +"review or edit any content. However, we have the right to do so for the " +"purpose of operating the Services, to ensure compliance with these Terms and " +"to comply with applicable law or other legal requirements. We reserve the " +"right, but are not obligated, to remove or disable access to any content, at " +"any time and without notice, including, but not limited to, if we, at our " +"sole discretion, consider it objectionable or in violation of these Terms." +msgstr "" +"鼓励或使任何其他个人做上述任何事情。Mysten Labs没有义务监控对服务的访问或使用" +"或审查或编辑任何内容。但是,我们有权这样做,以便操作服务,确保遵守这些条款并" +"遵守适用的法律或其他法律要求。我们保留在任何时候且无需通知的情况下删除或禁用" +"对任何内容的访问的权利,包括但不限于,如果我们自行决定认为其令人反感或违反这" +"些条款。" + +#: docs/walrus-sites/tos.md:148 +msgid "" +"We have the right to investigate violations of these Terms or conduct that " +"affects the Services. We may also consult and cooperate with law enforcement " +"authorities to prosecute users who violate the law." +msgstr "" +"我们有权调查违反这些条款或影响服务的行为。我们还可以咨询和配合执法部门起诉违" +"反法律的用户。" + +#: docs/walrus-sites/tos.md:151 +msgid "VII. DMCA/Copyright Policy" +msgstr "VII. DMCA/版权政策" + +#: docs/walrus-sites/tos.md:153 +msgid "" +"Mysten Labs respects copyright law and expects its users to do the same. It " +"is Mysten Labs’ policy to terminate in appropriate circumstances users who " +"repeatedly infringe or are believed to be repeatedly infringing the rights " +"of copyright holders." +msgstr "" +"Mysten Labs尊重版权法,并期望其用户也这样做。Mysten Labs的政策是在适当情况下" +"终止反复侵犯或被认为反复侵犯版权持有人权利的用户。" + +#: docs/walrus-sites/tos.md:157 +msgid "VIII. Sanctions" +msgstr "VIII. 制裁" + +#: docs/walrus-sites/tos.md:159 +msgid "" +"Without limiting the foregoing, you may not download or use the Services if " +"(i) you are in, under the control of, or a national or resident of Cuba, " +"Iran, North Korea, Syria or any other country subject to United States " +"embargo, or if you are on the U.S. Treasury Department's Specially " +"Designated Nationals List or the U.S. Commerce Department's Denied Persons " +"List, Unverified List, or Entity List; or (ii) you intend to supply any " +"Services to Cuba, Iran, North Korea, Sudan or Syria or any other country " +"subject to United States embargo (or a national or resident of one of these " +"countries), or to a person on the Specially Designated Nationals List, " +"Denied Persons List, Unverified List, or Entity List." +msgstr "" +"在不限制上述规定的前提下,如果(i)您位于、受控于或是古巴、伊朗、朝鲜、叙利亚" +"或任何其他受美国禁运的国家的国民或居民,或者您在美国财政部的特别指定国民名单" +"或美国商务部的拒绝人员名单、未经验证名单或实体名单上;或(ii)您打算向古巴、" +"伊朗、朝鲜、苏丹或叙利亚或任何其他受美国禁运的国家(或这些国家的国民或居民)" +"或特别指定国民名单、拒绝人员名单、未经验证名单或实体名单上的人员提供任何服" +"务,则您不得下载或使用服务。" + +#: docs/walrus-sites/tos.md:168 +msgid "IX. Termination" +msgstr "IX. 终止" + +#: docs/walrus-sites/tos.md:170 +msgid "" +"We may suspend or terminate your access to and use of the Services, " +"including suspending access to or terminating your account, at our sole " +"discretion, at any time and without notice to you. You may cancel your " +"account, if you have one, at any time by removing the Wallet web browser " +"extension and ceasing any and all use of the Services. Upon any termination, " +"discontinuation or cancellation of the Services or your account, the " +"following Sections will survive: VIII and IX- XV" +msgstr "" +"我们可以自行决定在任何时候暂停或终止您对服务的访问和使用,包括暂停访问或终止" +"您的帐户,且无需通知您。如果您有帐户,您可以随时通过删除Wallet网络浏览器扩展" +"并停止任何和所有服务的使用来取消您的帐户。在任何终止、停止或取消服务或您的帐" +"户后,以下条款将继续有效:第八条和第九条至第十五条。" + +#: docs/walrus-sites/tos.md:176 +msgid "X. Warranty Disclaimers" +msgstr "X. 免责声明" + +#: docs/walrus-sites/tos.md:178 +msgid "" +"THE SERVICES ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND. WITHOUT " +"LIMITING THE FOREGOING, WE EXPLICITLY DISCLAIM ANY IMPLIED WARRANTIES OF " +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT AND NON-" +"INFRINGEMENT, AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR USAGE " +"OF TRADE. We make no warranty that the Services will meet your requirements, " +"will function as intended, will be free from bugs or errors, or be available " +"on an uninterrupted, secure, or error-free basis. We make no warranty " +"regarding the quality, accuracy, timeliness, truthfulness, completeness or " +"reliability of any information or content on the Services. We may modify or " +"terminate the Services at any time, with or without notice to you." +msgstr "" +"服务按“原样”提供,不提供任何形式的保证。在不限制上述规定的前提下,我们明确否" +"认任何适销性、特定用途适用性、安静享受和非侵权的默示保证,以及任何因交易过程" +"或贸易使用而产生的保证。我们不保证服务将满足您的要求,将按预期运行,将没有错" +"误或错误,或将以不间断、安全或无错误的方式提供。我们不保证服务上的任何信息或" +"内容的质量、准确性、及时性、真实性、完整性或可靠性。我们可以随时修改或终止服" +"务,无论是否通知您。" + +#: docs/walrus-sites/tos.md:187 +msgid "XI. Indemnity" +msgstr "XI. 赔偿" + +#: docs/walrus-sites/tos.md:189 +msgid "" +"You will indemnify and hold Mysten Labs and its officers, directors, " +"employees and agents, harmless from and against any claims, disputes, " +"demands, liabilities, damages, losses, and costs and expenses, including, " +"without limitation, reasonable legal and accounting fees arising out of or " +"in any way connected with (a) your access to or use of the Services, (b) " +"your User Content, or (c) your violation of these Terms." +msgstr "" +"您将赔偿并使Mysten Labs及其高级职员、董事、员工和代理人免受任何索赔、争议、要" +"求、责任、损害、损失和费用,包括但不限于因(a)您访问或使用服务,(b)您的用" +"户内容,或(c)您违反这些条款而产生的或以任何方式与之相关的合理法律和会计费" +"用。" + +#: docs/walrus-sites/tos.md:195 +msgid "XII. Limitation of Liability" +msgstr "XII. 责任限制" + +#: docs/walrus-sites/tos.md:197 +msgid "" +"TO THE MAXIMUM EXTENT PERMITTED BY LAW, NEITHER MYSTEN LABS NOR ITS SERVICE " +"PROVIDERS INVOLVED IN CREATING, PRODUCING, OR DELIVERING THE SERVICES WILL " +"BE LIABLE FOR ANY INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES, " +"OR DAMAGES FOR LOST PROFITS, LOST REVENUES, LOST SAVINGS, LOST BUSINESS " +"OPPORTUNITY, LOSS OF DATA OR GOODWILL, SERVICE INTERRUPTION, COMPUTER DAMAGE " +"OR SYSTEM FAILURE OR THE COST OF SUBSTITUTE SERVICES OF ANY KIND ARISING OUT " +"OF OR IN CONNECTION WITH THESE TERMS OR FROM THE USE OF OR INABILITY TO USE " +"THE SERVICES, WHETHER BASED ON WARRANTY, CONTRACT, TORT (INCLUDING " +"NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER LEGAL THEORY, AND WHETHER OR NOT " +"MYSTEN LABS OR ITS SERVICE PROVIDERS HAVE BEEN INFORMED OF THE POSSIBILITY " +"OF SUCH DAMAGE, EVEN IF A LIMITED REMEDY SET FORTH HEREIN IS FOUND TO HAVE " +"FAILED OF ITS ESSENTIAL PURPOSE." +msgstr "" +"在法律允许的最大范围内,Mysten Labs及其参与创建、生产或交付服务的服务提供商均" +"不对因这些条款或使用或无法使用服务而引起的任何附带的、特殊的、示范性的或间接" +"的损害赔偿,或因利润损失、收入损失、储蓄损失、商业机会损失、数据或商誉损失、" +"服务中断、计算机损坏或系统故障或任何类型的替代服务费用承担责任,无论是基于保" +"证、合同、侵权(包括过失)、产品责任或任何其他法律理论,无论Mysten Labs或其服" +"务提供商是否已被告知此类损害的可能性,即使此处规定的有限补救措施被发现未能达" +"到其基本目的。" + +#: docs/walrus-sites/tos.md:206 +msgid "" +"TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT WILL MYSTEN LABS’ TOTAL " +"LIABILITY ARISING OUT OF OR IN CONNECTION WITH THESE TERMS OR FROM THE USE " +"OF OR INABILITY TO USE THE SERVICES EXCEED THE AMOUNTS YOU HAVE PAID OR ARE " +"PAYABLE BY YOU TO MYSTEN LABS FOR USE OF THE SERVICES OR ONE HUNDRED DOLLARS " +"($100), IF YOU HAVE NOT HAD ANY PAYMENT OBLIGATIONS TO MYSTEN LABS, AS " +"APPLICABLE." +msgstr "" +"在法律允许的最大范围内,因这些条款或使用或无法使用服务而引起的或与之相关的" +"Mysten Labs的总责任在任何情况下均不超过您为使用服务而支付或应支付给Mysten " +"Labs的金额,或一百美元($100),如果您没有对Mysten Labs的任何付款义务,则适" +"用。" + +#: docs/walrus-sites/tos.md:211 +msgid "" +"THE EXCLUSIONS AND LIMITATIONS OF DAMAGES SET FORTH ABOVE ARE FUNDAMENTAL " +"ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN MYSTEN LABS AND YOU." +msgstr "上述损害赔偿的排除和限制是Mysten Labs与您之间交易基础的基本要素。" + +#: docs/walrus-sites/tos.md:214 +msgid "XIII. Governing Law and Forum Choice." +msgstr "XIII. 适用法律和论坛选择" + +#: docs/walrus-sites/tos.md:216 +msgid "" +"These Terms and any action related thereto will be governed by the Federal " +"Arbitration Act, federal arbitration law, and the laws of the State of " +"California, without regard to its conflict of laws provisions. Except as " +"otherwise expressly set forth in Section XVII “Dispute Resolution,” the " +"exclusive jurisdiction for all Disputes (defined below) that you and Mysten " +"Labs are not required to arbitrate will be the state and federal courts " +"located in the County of Santa Clara, and you and Mysten Labs each waive any " +"objection to jurisdiction and venue in such courts." +msgstr "" +"这些条款及与之相关的任何行为将受《联邦仲裁法》、联邦仲裁法和加利福尼亚州法律" +"的管辖,而不考虑其法律冲突条款。除非第十七条“争议解决”中另有明确规定,您和" +"Mysten Labs不需要仲裁的所有争议(定义如下)的专属管辖权将是位于圣克拉拉县的州" +"和联邦法院,您和Mysten Labs均放弃对这些法院的管辖权和审判地的任何异议。" + +#: docs/walrus-sites/tos.md:223 +msgid "XIV. Dispute Resolution" +msgstr "XIV. 争议解决" + +#: docs/walrus-sites/tos.md:225 +msgid "" +"Mandatory Arbitration of Disputes. We each agree that any dispute, " +"claim or controversy arising out of or relating to these Terms or the " +"breach, termination, enforcement, interpretation or validity thereof or the " +"use of the Services (collectively, “Disputes”) will be resolved solely by " +"binding, individual arbitration and not in a class, representative or " +"consolidated action or proceeding. You and Mysten Labs agree that the U.S. " +"Federal Arbitration Act governs the interpretation and enforcement of these " +"Terms, and that you and Mysten Labs are each waiving the right to a trial by " +"jury or to participate in a class action. This arbitration provision shall " +"survive termination of these Terms." +msgstr "" +" 强制性争议仲裁 。我们各方同意,因这些条款或其违反、终止、执行、解释" +"或有效性或使用服务而引起或与之相关的任何争议、索赔或争议(统称为“争议”)将仅" +"通过具有约束力的个人仲裁解决,而不是在集体、代表或合并的诉讼或程序中解决。您" +"和Mysten Labs同意,《美国联邦仲裁法》管辖这些条款的解释和执行,您和Mysten " +"Labs均放弃由陪审团审判或参与集体诉讼的权利。本仲裁条款在这些条款终止后仍然有" +"效。" + +#: docs/walrus-sites/tos.md:233 +msgid "" +"Exceptions. As limited exceptions to Section XVII(A) above: (i) we " +"both may seek to resolve a Dispute in small claims court if it qualifies; " +"and (ii) we each retain the right to seek injunctive or other equitable " +"relief from a court to prevent (or enjoin) the infringement or " +"misappropriation of our intellectual property rights." +msgstr "" +" 例外 。作为上述第十七条(A)的有限例外:(i)如果符合条件,我们双方可以" +"在小额索赔法院寻求解决争议;(ii)我们各自保留从法院寻求禁令或其他衡平法救济" +"的权利,以防止(或禁止)侵犯或盗用我们的知识产权。" + +#: docs/walrus-sites/tos.md:237 +msgid "" +"Conducting Arbitration and Arbitration Rules. The arbitration will be " +"conducted by the American Arbitration Association (“AAA”) under its Consumer " +"Arbitration Rules (the “AAA Rules”) then in effect, except as modified by " +"these Terms. The AAA Rules are available at www.adr.org or by calling " +"1-800-778-7879. A party who wishes to start arbitration must submit a " +"written Demand for Arbitration to AAA and give notice to the other party as " +"specified in the AAA Rules. The AAA provides a form Demand for Arbitration " +"at [www.adr.org](http://www.adr.org). Any arbitration hearings will " +"take place in the county (or parish) where you live, unless we both agree to " +"a different location. The parties agree that the arbitrator shall have " +"exclusive authority to decide all issues relating to the interpretation, " +"applicability, enforceability and scope of this arbitration agreement." +msgstr "" +" 进行仲裁和仲裁规则 。仲裁将由美国仲裁协会(“AAA”)根据其当时有效的" +"《消费者仲裁规则》(“AAA规则”)进行,除非这些条款另有修改。AAA规则可在www." +"adr.org查看或致电1-800-778-7879获取。希望开始仲裁的一方必须向AAA提交书面仲裁" +"请求,并按照AAA规则的规定通知另一方。AAA提供了仲裁请求表格,网址为[www." +"adr.org](http://www.adr.org)。任何仲裁听证会将在您居住的县(或教区)进" +"行,除非我们双方同意不同的地点。双方同意,仲裁员应具有排他性权力来决定与本仲" +"裁协议的解释、适用性、可执行性和范围有关的所有问题。" + +#: docs/walrus-sites/tos.md:247 +msgid "" +"Arbitration Costs. Payment of all filing, administration and " +"arbitrator fees will be governed by the AAA Rules, and we won’t seek to " +"recover the administration and arbitrator fees we are responsible for " +"paying, unless the arbitrator finds your Dispute frivolous. If we prevail in " +"arbitration we’ll pay all of our attorneys’ fees and costs and won’t seek to " +"recover them from you. If you prevail in arbitration you will be entitled to " +"an award of attorneys’ fees and expenses to the extent provided under " +"applicable law." +msgstr "" +" 仲裁费用 。所有申请、管理和仲裁员费用的支付将受AAA规则的约束,除非仲" +"裁员认定您的争议无聊,否则我们不会寻求收回我们负责支付的管理和仲裁员费用。如" +"果我们在仲裁中胜诉,我们将支付我们所有的律师费和费用,并且不会向您收回。如果" +"您在仲裁中胜诉,您将有权获得适用法律规定的律师费和费用。" + +#: docs/walrus-sites/tos.md:253 +msgid "" +"Injunctive and Declaratory Relief. Except as provided in Section " +"XIV(B) above, the arbitrator shall determine all issues of liability on the " +"merits of any claim asserted by either party and may award declaratory or " +"injunctive relief only in favor of the individual party seeking relief and " +"only to the extent necessary to provide relief warranted by that party’s " +"individual claim. To the extent that you or we prevail on a claim and seek " +"public injunctive relief (that is, injunctive relief that has the primary " +"purpose and effect of prohibiting unlawful acts that threaten future injury " +"to the public), the entitlement to and extent of such relief must be " +"litigated in a civil court of competent jurisdiction and not in arbitration. " +"The parties agree that litigation of any issues of public injunctive relief " +"shall be stayed pending the outcome of the merits of any individual claims " +"in arbitration." +msgstr "" +" 禁令和宣告性救济 。除上述第XIV(B)条规定外,仲裁员应根据任何一方提出的" +"任何索赔的实质确定所有责任问题,并且只能为寻求救济的个人当事方授予宣告性或禁" +"令性救济,并且仅在必要的范围内为该当事方的个人索赔提供救济。如果您或我们在索" +"赔中胜诉并寻求公共禁令救济(即,主要目的是禁止威胁公众未来伤害的非法行为的禁" +"令救济),则此类救济的权利和范围必须在具有管辖权的民事法院进行诉讼,而不是在" +"仲裁中。双方同意,在仲裁中任何个人索赔的实质结果出炉之前,公共禁令救济的任何" +"问题的诉讼应暂停。" + +#: docs/walrus-sites/tos.md:263 +msgid "" +"Class Action Waiver. YOU AND MYSTEN LABS AGREE THAT EACH MAY BRING " +"CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS " +"A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE " +"PROCEEDING. Further, if the parties’ Dispute is resolved through " +"arbitration, the arbitrator may not consolidate another person’s claims with " +"your claims, and may not otherwise preside over any form of a representative " +"or class proceeding. If this specific provision is found to be " +"unenforceable, then the entirety of this Dispute Resolution section shall be " +"null and void." +msgstr "" +" 集体诉讼弃权 。您和Mysten Labs同意,双方只能以个人身份对对方提出索" +"赔,而不能作为任何所谓的集体或代表性诉讼中的原告或集体成员。此外,如果双方的" +"争议通过仲裁解决,仲裁员不得将他人的索赔与您的索赔合并,也不得以任何形式主持" +"代表性或集体诉讼。如果此特定条款被发现不可执行,则本争议解决部分的全部内容将" +"无效。" + +#: docs/walrus-sites/tos.md:270 +msgid "" +"Severability. With the exception of any of the provisions in Section " +"XVII(F) of these Terms (“**Class Action Waiver**”), if an arbitrator or " +"court of competent jurisdiction decides that any part of these Terms is " +"invalid or unenforceable, the other parts of these Terms will still apply." +msgstr "" +" 可分割性 。除本条款第XVII(F)条( “ **集体诉讼弃权** ” )中的任何条" +"款外,如果具有管辖权的仲裁员或法院决定本条款的任何部分无效或不可执行,则本条" +"款的其他部分仍然适用。" + +#: docs/walrus-sites/tos.md:275 +msgid "XV. General Terms" +msgstr "XV. 一般条款" + +#: docs/walrus-sites/tos.md:277 +msgid "" +"Reservation of Rights. Mysten Labs and its licensors exclusively own " +"all right, title and interest in and to the Services, including all " +"associated intellectual property rights. You acknowledge that the Services " +"are protected by copyright, trademark, and other laws of the United States " +"and foreign countries. You agree not to remove, alter or obscure any " +"copyright, trademark, service mark or other proprietary rights notices " +"incorporated in or accompanying the Services." +msgstr "" +" 权利保留 。Mysten Labs 及其许可方独家拥有服务的所有权利、所有权和权" +"益,包括所有相关的知识产权。您承认服务受美国和外国的版权、商标和其他法律保" +"护。您同意不删除、修改或掩盖服务中或随附的任何版权、商标、服务标记或其他专有" +"权利声明。" + +#: docs/walrus-sites/tos.md:282 +msgid "" +"Entire Agreement. These Terms constitute the entire and exclusive " +"understanding and agreement between Mysten Labs and you regarding the " +"Services, and these Terms supersede and replace all prior oral or written " +"understandings or agreements between Mysten Labs and you regarding the " +"Services. If any provision of these Terms is held invalid or unenforceable " +"by an arbitrator or a court of competent jurisdiction, that provision will " +"be enforced to the maximum extent permissible and the other provisions of " +"these Terms will remain in full force and effect. Except where provided by " +"applicable law in your jurisdiction, you may not assign or transfer these " +"Terms, by operation of law or otherwise, without Mysten Labs’ prior written " +"consent. Any attempt by you to assign or transfer these Terms absent our " +"consent or your statutory right, without such consent, will be null. Mysten " +"Labs may freely assign or transfer these Terms without restriction. Subject " +"to the foregoing, these Terms will bind and inure to the benefit of the " +"parties, their successors and permitted assigns." +msgstr "" +" 完整协议 。这些条款构成 Mysten Labs 与您之间关于服务的全部和排他性" +"理解和协议,并且这些条款取代并替换了 Mysten Labs 与您之间关于服务的所有先前的" +"口头或书面理解或协议。如果具有管辖权的仲裁员或法院认定这些条款的任何条款无效" +"或不可执行,则该条款将在最大允许范围内执行,这些条款的其他条款将继续完全有" +"效。除非您所在司法管辖区的适用法律另有规定,否则未经 Mysten Labs 事先书面同" +"意,您不得通过法律或其他方式转让或转移这些条款。在未经我们同意或您的法定权利" +"的情况下,您试图转让或转移这些条款的任何行为将无效。Mysten Labs 可以不受限制" +"地自由转让或转移这些条款。在不违反上述规定的前提下,这些条款将对双方、其继承" +"人和允许的受让人具有约束力并使其受益。" + +#: docs/walrus-sites/tos.md:294 +msgid "" +"Notices. Any notices or other communications provided by Mysten Labs " +"under these Terms will be given: (i) via email; or (ii) by posting to the " +"Services. For notices made by email, the date of receipt will be deemed the " +"date on which such notice is transmitted." +msgstr "" +" 通知 。Mysten Labs 根据这些条款提供的任何通知或其他通信将通过以下方" +"式提供:(i) 通过电子邮件;或 (ii) 通过发布到服务。对于通过电子邮件发送的通" +"知,接收日期将被视为此类通知传输的日期。" + +#: docs/walrus-sites/tos.md:297 +msgid "" +"Waiver of Rights. Mysten Labs’ failure to enforce any right or " +"provision of these Terms will not be considered a waiver of such right or " +"provision. The waiver of any such right or provision will be effective only " +"if in writing and signed by a duly authorized representative of Mysten Labs. " +"Except as expressly set forth in these Terms, the exercise by either party " +"of any of its remedies under these Terms will be without prejudice to its " +"other remedies under these Terms or otherwise." +msgstr "" +" 权利放弃 。Mysten Labs 未能执行本条款的任何权利或条款不应被视为放弃" +"此类权利或条款。此类权利或条款的放弃只有在书面形式并由 Mysten Labs 的正式授权" +"代表签署后才有效。除非本条款中明确规定,否则任何一方根据本条款行使其任何救济" +"措施均不影响其根据本条款或其他方式的其他救济措施。" + +#: docs/walrus-sites/tos.md:304 +msgid "XVI. Contact Information" +msgstr "XVI. 联系信息" + +#: docs/walrus-sites/tos.md:306 +msgid "" +"If you have any questions about these Terms or the Services, please contact " +"Mysten Labs at [legal@mystenlabs.com](mailto:legal@mystenlabs.com)." +msgstr "" +"如果您对本条款或服务有任何疑问,请通过 [legal@mystenlabs.com](mailto:" +"legal@mystenlabs.com) 联系 Mysten Labs。" + +#: docs/glossary.md:3 +msgid "Walrus Glossary" +msgstr "Walrus 术语表" + +#: docs/glossary.md:5 +msgid "" +"To make communication as clear and efficient as possible, we make sure to " +"use a single term for every Walrus entity/concept and _do not_ use any " +"synonyms. The following table lists various concepts, their canonical name, " +"and how they relate to or differ from other terms." +msgstr "" +"为了使沟通尽可能清晰和高效,我们确保对每个 Walrus 实体/概念使用单一术语,并" +"且 _不_ 使用任何同义词。下表列出了各种概念、它们的规范名称以及它们与其他术语" +"的关系或区别。" + +#: docs/glossary.md:9 +msgid "" +"Italicized terms in the description indicate other specific Walrus terms " +"contained in the table." +msgstr "描述中的斜体术语表示表中包含的其他特定 Walrus 术语。" + +#: docs/glossary.md:11 +msgid "Approved name" +msgstr "批准名称" + +#: docs/glossary.md:11 +msgid "Description" +msgstr "描述" + +#: docs/glossary.md:13 +msgid "storage node (SN)" +msgstr "存储节点 (SN)" + +#: docs/glossary.md:13 +msgid "entity storing data for Walrus; holds one or several _shards_" +msgstr "为 Walrus 存储数据的实体;持有一个或多个 _shards_" + +#: docs/glossary.md:14 +msgid "blob" +msgstr "blob" + +#: docs/glossary.md:14 +msgid "single unstructured data object stored on Walrus" +msgstr "存储在 Walrus 上的单个非结构化数据对象" + +#: docs/glossary.md:15 +msgid "permanent blob" +msgstr "永久 blob" + +#: docs/glossary.md:15 +msgid "" +"blob which cannot be deleted by its owner and is guaranteed to be available " +"until at least its expiry epoch (assuming it is valid)" +msgstr "所有者无法删除的 blob,保证至少在其到期 epoch 之前可用(假设其有效)" + +#: docs/glossary.md:16 +msgid "deletable blob" +msgstr "可删除 blob" + +#: docs/glossary.md:16 +msgid "" +"blob which can be deleted by its owner at any time to be able to reuse the " +"storage resource" +msgstr "所有者可以随时删除的 blob,以便重新使用存储资源" + +#: docs/glossary.md:17 +msgid "shard" +msgstr "分片" + +#: docs/glossary.md:17 +msgid "" +"(disjoint) subset of erasure-encoded data of all _blobs_; at every point in " +"time, a _shard_ is assigned to and stored on a single _SN_" +msgstr "" +"所有 _blobs_ 的擦除编码数据的(不相交)子集;在任何时间点,_shard_ 都被分配并" +"存储在单个 _SN_ 上" + +#: docs/glossary.md:18 +msgid "RedStuff" +msgstr "RedStuff" + +#: docs/glossary.md:18 +msgid "" +"our erasure-encoding approach, which uses two different encodings (_primary_ " +"and _secondary_) to enable shard recovery; details are available in the " +"[whitepaper](./walrus.pdf)" +msgstr "" +"我们的擦除编码方法,使用两种不同的编码(_primary_ 和 _secondary_)来实现分片" +"恢复;详细信息请参见 [白皮书](./walrus.pdf)" + +#: docs/glossary.md:19 +msgid "sliver" +msgstr "sliver" + +#: docs/glossary.md:19 +msgid "" +"erasure-encoded data of one _shard_ corresponding to a single blob for one " +"of the two encodings; this contains several erasure-encoded symbols of that " +"blob but not the _blob metadata_" +msgstr "" +"对应于单个 blob 的一个 _shard_ 的擦除编码数据,适用于两种编码之一;这包含该 " +"blob 的几个擦除编码符号,但不包含 _blob 元数据_" + +#: docs/glossary.md:20 +msgid "sliver pair" +msgstr "sliver 对" + +#: docs/glossary.md:20 +msgid "the combination of a shard’s primary and secondary sliver" +msgstr "分片的主 sliver 和次 sliver 的组合" + +#: docs/glossary.md:21 +msgid "blob ID" +msgstr "blob ID" + +#: docs/glossary.md:21 +msgid "cryptographic ID computed from a _blob_’s _slivers_" +msgstr "从 _blob_ 的 _slivers_ 计算出的加密 ID" + +#: docs/glossary.md:22 +msgid "blob metadata" +msgstr "blob 元数据" + +#: docs/glossary.md:22 +msgid "" +"metadata of one _blob_; in particular, this contains a hash per _shard_ to " +"enable the authentication of _slivers_ and recovery symbols" +msgstr "" +"一个 _blob_ 的元数据;特别是,这包含每个 _shard_ 的哈希,以便验证 _slivers_ " +"和恢复符号" + +#: docs/glossary.md:23 +msgid "(end) user" +msgstr "(终端)用户" + +#: docs/glossary.md:23 +msgid "" +"any entity/person that wants to store or read _blobs_ on/from Walrus; can " +"act as a Walrus client itself or use the simple interface exposed by " +"_publishers_ and _caches_" +msgstr "" +"任何希望在 Walrus 上存储或读取 _blobs_ 的实体/个人;可以作为 Walrus 客户端本" +"身,或使用 _publishers_ 和 _caches_ 提供的简单接口" + +#: docs/glossary.md:24 +msgid "publisher" +msgstr "发布器" + +#: docs/glossary.md:24 +msgid "" +"service interacting with Sui and the _SNs_ to store _blobs_ on Walrus; " +"offers a simple `HTTP POST` endpoint to _end users_" +msgstr "" +"与 Sui 和 _SNs_ 交互以在 Walrus 上存储 _blobs_ 的服务;为 _终端用户_ 提供一个" +"简单的 `HTTP POST` 端点" + +#: docs/glossary.md:25 +msgid "aggregator" +msgstr "聚合器" + +#: docs/glossary.md:25 +msgid "" +"service that reconstructs _blobs_ by interacting with _SNs_ and exposes a " +"simple `HTTP GET` endpoint to _end users_" +msgstr "" +"通过与 _SNs_ 交互重建 _blobs_ 的服务,并为 _终端用户_ 提供一个简单的 `HTTP " +"GET` 端点" + +#: docs/glossary.md:26 +msgid "cache" +msgstr "缓存" + +#: docs/glossary.md:26 +msgid "an _aggregator_ with additional caching capabilities" +msgstr "具有额外缓存功能的 _聚合器_" + +#: docs/glossary.md:27 +msgid "(Walrus) client" +msgstr "(Walrus)客户端" + +#: docs/glossary.md:27 +msgid "" +"entity interacting directly with the _SNs_; this can be an _aggregator_/" +"_cache_, a _publisher_, or an _end user_" +msgstr "" +"直接与 _SNs_ 交互的实体;这可以是一个 _聚合器_/_缓存_、一个 _发布器_ 或一个 _" +"终端用户_" + +#: docs/glossary.md:28 +msgid "(blob) reconstruction" +msgstr "(blob)重建" + +#: docs/glossary.md:28 +msgid "" +"decoding of the primary _slivers_ to obtain the blob; includes re-encoding " +"the _blob_ and checking the Merkle proofs" +msgstr "解码主要 _slivers_ 以获得 blob;包括重新编码 _blob_ 和检查 Merkle 证明" + +#: docs/glossary.md:29 +msgid "(shard/sliver) recovery" +msgstr "(shard/sliver)恢复" + +#: docs/glossary.md:29 +msgid "" +"process of an _SN_ recovering a _sliver_ or full _shard_ by obtaining " +"recovery symbols from other _SNs_" +msgstr "" +"_SN_ 通过从其他 _SNs_ 获取恢复符号来恢复 _sliver_ 或完整 _shard_ 的过程" + +#: docs/glossary.md:30 +msgid "storage attestation" +msgstr "存储证明" + +#: docs/glossary.md:30 +msgid "" +"process where _SNs_ exchange challenges and responses to demonstrate that " +"they are storing their currently assigned _shards_" +msgstr "_SNs_ 交换挑战和响应以证明它们正在存储当前分配的 _shards_ 的过程" + +#: docs/glossary.md:31 +msgid "certificate of availability (CoA)" +msgstr "可用性证书(CoA)" + +#: docs/glossary.md:31 +msgid "" +"a _blob ID_ with signatures of _SNs_ holding at least 2f+1 _shards_ in a specific _epoch_" +msgstr "" +"一个 _blob ID_,其中包含持有至少 2f+1 _shards_ 的 _SNs_ 的签名,在特定 _epoch_ 中" + +#: docs/glossary.md:32 +msgid "point of availability (PoA)" +msgstr "可用性点(PoA)" + +#: docs/glossary.md:32 +msgid "" +"point in time when a _CoA_ is submitted to Sui and the corresponding _blob_ " +"is guaranteed to be available until its expiration" +msgstr "_CoA_ 提交给 Sui 的时间点,并保证相应的 _blob_ 在其到期之前可用" + +#: docs/glossary.md:33 +msgid "inconsistency proof" +msgstr "不一致性证明" + +#: docs/glossary.md:33 +msgid "" +"set of several recovery symbols with their Merkle proofs such that the " +"decoded _sliver_ does not match the corresponding hash; this proves an " +"incorrect/inconsistent encoding by the client" +msgstr "" +"一组带有 Merkle 证明的恢复符号,使得解码的 _sliver_ 与相应的哈希不匹配;这证" +"明了客户端的不正确/不一致编码" + +#: docs/glossary.md:34 +msgid "inconsistency certificate" +msgstr "不一致性证书" + +#: docs/glossary.md:34 +msgid "" +"an aggregated signature from 2/3 of _SNs_ (weighted by their number of " +"_shards_) that they have seen and stored an _inconsistency proof_ for a " +"_blob ID_" +msgstr "" +"2/3 的 _SNs_(按其 _shards_ 数量加权)的聚合签名,表明它们已经看到并存储了一" +"个 _blob ID_ 的不一致性证明" + +#: docs/glossary.md:35 +msgid "storage committee" +msgstr "存储委员会" + +#: docs/glossary.md:35 +msgid "" +"the set of _SNs_ for a _storage epoch_, including metadata about the " +"_shards_ they are responsible for and other metadata" +msgstr "" +"一个 _storage epoch_ 的 _SNs_ 集合,包括它们负责的 _shards_ 的元数据和其他元" +"数据" + +#: docs/glossary.md:36 +msgid "member" +msgstr "成员" + +#: docs/glossary.md:36 +msgid "an _SN_ that is part of a _committee_ at some _epoch_" +msgstr "在某个 _epoch_ 中属于 _委员会_ 的 _SNs_" + +#: docs/glossary.md:37 +msgid "storage epoch" +msgstr "存储 epoch" + +#: docs/glossary.md:37 +msgid "the epoch for Walrus as distinct to the epoch for Sui" +msgstr "Walrus 的 epoch 不同于 Sui 的 epoch" + +#: docs/glossary.md:38 +msgid "availability period" +msgstr "可用期" + +#: docs/glossary.md:38 +msgid "" +"the period specified in _storage epochs_ for which a _blob_ is certified to " +"be available on Walrus" +msgstr "_storage epochs_ 中指定的一个 _blob_ 在 Walrus 上被认证为可用的时间段" + +#: docs/glossary.md:39 +msgid "expiry" +msgstr "到期" + +#: docs/glossary.md:39 +msgid "" +"the end epoch at which a blob is no longer available and can be deleted; the " +"end epoch is always exclusive" +msgstr "一个 blob 不再可用并可以删除的结束 epoch;结束 epoch 总是排他的" + +#: docs/glossary.md:40 +msgid "WAL" +msgstr "WAL" + +#: docs/glossary.md:40 +msgid "the native Token of Walrus" +msgstr "Walrus 的原生代币" + +#: docs/glossary.md:41 +msgid "FROST" +msgstr "FROST" + +#: docs/glossary.md:41 +msgid "" +"the smallest unit of WAL (similar to MIST for SUI); 1 WAL is equal to 1 " +"billion (1000000000) FROST" +msgstr "" +"WAL 的最小单位(类似于 SUI 的 MIST);1 WAL 等于 10 亿(1000000000)FROST" + +#: docs/legal/devnet_tos.md:4 +msgid "DEVNET TERMS OF SERVICE - WALRUS" +msgstr "DEVNET 服务条款 - Walrus" + +#: docs/legal/devnet_tos.md:6 +msgid "Last updated: June 13, 2024" +msgstr "**最后更新:** 2024年6月18日" + +#: docs/legal/devnet_tos.md:8 +msgid "" +"By using Mysten Labs Devnet software, technologies, tools, and other " +"services (collectively “Devnet”), you agree to the general Terms of Service " +"and these additional Devnet Terms of Service (together, the “Terms”). If you " +"do not agree, do not participate in Devnet. If you are using Devnet on " +"behalf of an organization, you represent and warrant that you are an " +"authorized representative of that organization and have the authority to " +"bind that business or entity to the Terms." +msgstr "" +"使用 Mysten Labs Devnet 软件、技术、工具和其他服务(统称为“Devnet”),即表示" +"您同意一般服务条款和这些附加的 Devnet 服务条款(统称为“条款”)。如果您不同" +"意,请不要参与 Devnet。如果您代表某个组织使用 Devnet,您声明并保证您是该组织" +"的授权代表,并有权使该企业或实体受条款约束。" + +#: docs/legal/devnet_tos.md:14 docs/legal/testnet_tos.md:21 +msgid "Eligibility Criteria" +msgstr "资格标准" + +#: docs/legal/devnet_tos.md:16 +msgid "You may use Devnet only if you:" +msgstr "只有在以下情况下,您才能使用 Devnet:" + +#: docs/legal/devnet_tos.md:18 docs/legal/testnet_tos.md:25 +msgid "" +"Are 18 years or older and capable of forming a binding contract with us." +msgstr "年满 18 岁并有能力与我们签订具有约束力的合同。" + +#: docs/legal/devnet_tos.md:19 +msgid "" +"Are not otherwise barred from participating in Devnet under applicable law." +msgstr "在适用法律下未被禁止参与 Devnet。" + +#: docs/legal/devnet_tos.md:21 +msgid "" +"We may, at our discretion, introduce new or change existing eligibility " +"criteria or conditions we deem appropriate. Devnet may operate in certain " +"phases, and your participation in any one phase of Devnet does not guarantee " +"that you will be selected for any other phases of Devnet." +msgstr "" +"我们可以自行决定引入新的或更改现有的资格标准或我们认为合适的条件。Testnet可能" +"在某些阶段运行,您参与Testnet的任何一个阶段并不保证您能够参与Testnet的任何其" +"他阶段。" + +#: docs/legal/devnet_tos.md:25 docs/legal/testnet_tos.md:32 +msgid "Duration" +msgstr "操作" + +#: docs/legal/devnet_tos.md:27 +msgid "" +"Devnet will commence on the date we prescribe and continue until terminated " +"at our discretion. We may change, discontinue, or wipe, temporarily or " +"permanently, all or any part of Devnet, at any time and without notice at " +"our discretion, including, without limitation, the modification of the " +"presence, amounts, or any other conditions applicable to data you have " +"stored within Devnet, without any liability to you or other Devnet users." +msgstr "" +"Testnet将在我们规定的日期开始,并持续到我们自行决定终止为止。我们可以在任何时" +"间自行决定更改、终止或清除Testnet的全部或任何部分,暂时或永久地,且无需通知," +"包括但不限于修改Testnet代币的存在、数量或任何其他适用条件,且对您或其他" +"Testnet用户不承担任何责任。我们不保证Testnet代币会在任何特定时间段内继续提" +"供,您也不能依赖于Testnet代币的持续可用性。如果Testnet到期,您承认并同意您对" +"Testnet代币的访问和使用将被移除,所有累积的Testnet代币将从Testnet系统中删除。" +"Testnet代币不会转换为Mysten Labs提供的任何未来奖励。" + +#: docs/legal/devnet_tos.md:33 docs/legal/testnet_tos.md:57 +msgid "No Warranty" +msgstr "无保修" + +#: docs/legal/devnet_tos.md:35 +msgid "" +"Mysten Labs provides the Devnet platform solely as a developer preview. " +"Devnet is provided \"as is\" and \"with all faults.\" We make no warranties, " +"express or implied, regarding the reliability, accuracy, performance, or " +"fitness for a particular purpose of the service provided. You accept all " +"risks associated with the use of Devnet and agree that Mysten Labs, its " +"affiliates, and its employees shall not be liable for any damages, whether " +"direct, indirect, incidental, special, consequential, or punitive, arising " +"out of the use or inability to use the service, including but not limited to " +"lost profits, loss of business, or data loss." +msgstr "" +"Mysten Labs提供Testnet平台仅作为开发者测试环境。Testnet按“原样”和“所有故障”提" +"供。我们不对所提供服务的可靠性、准确性、性能或特定用途的适用性作出任何明示或" +"暗示的保证。您接受与使用Testnet相关的所有风险,并同意Mysten Labs、其关联公司" +"及其员工不对因使用或无法使用该服务而引起的任何损害承担责任,无论是直接的、间" +"接的、附带的、特殊的、后果性的或惩罚性的损害,包括但不限于利润损失、业务损失" +"或数据丢失。" + +#: docs/legal/devnet_tos.md:43 docs/legal/testnet_tos.md:67 +msgid "" +"No employee or representative of Mysten Labs is authorized to make any " +"warranties or representations beyond those stated in this agreement. Any " +"statements made by employees or representatives of Mysten Labs regarding the " +"service shall not be construed as warranties or representations, and " +"customers agree to indemnify and hold harmless Mysten Labs from any such " +"statements." +msgstr "" +"Mysten Labs 的任何员工或代表均无权作出超出本协议规定的任何保证或陈述。Mysten " +"Labs 的员工或代表就服务所作的任何陈述均不得视为保证或陈述,客户同意赔偿并使 " +"Mysten Labs 免受任何此类陈述的损害。" + +#: docs/legal/devnet_tos.md:48 +msgid "" +"Any deficiencies or errors in the Devnet platform shall not constitute a " +"breach of this agreement, and customers agree to waive any right to seek a " +"refund or compensation based on such deficiencies or errors. This \"as is, " +"no warranty\" provision shall survive the termination or expiration of any " +"other agreements between you and Mysten Labs." +msgstr "" +"Testnet平台中的任何缺陷或错误均不构成对本协议的违反,客户同意放弃基于此类缺陷" +"或错误寻求退款或赔偿的任何权利。本“按原样,无保修”条款将在您与Mysten Labs之间" +"的任何其他协议终止或到期后继续有效。" + +#: docs/legal/testnet_tos.md:4 +msgid "TESTNET TERMS OF SERVICE - WALRUS" +msgstr "TESTNET 服务条款 - WALRUS" + +#: docs/legal/testnet_tos.md:6 +msgid "Last updated: October 17, 2024" +msgstr "**最后更新:** 2024年6月18日" + +#: docs/legal/testnet_tos.md:8 +msgid "" +"By using Mysten Labs Testnet software, technologies, tools, and other " +"services (collectively **“Testnet”**), you agree to the general Terms of " +"Service and these additional Testnet Terms of Service (together, the " +"**“Terms”**). If you do not agree, do not participate in Testnet. If you are " +"using Testnet on behalf of an organization, you represent and warrant that " +"you are an authorized representative of that organization and have the " +"authority to bind that business or entity to the Terms." +msgstr "" +"通过使用Mysten Labs的Testnet软件、技术、工具和其他服务(统称为 " +"**“Testnet”** ),您同意一般服务条款和这些附加的Testnet服务条款(统称为 **“条" +"款”** )。如果您不同意,请不要参与Testnet。如果您代表一个组织使用Testnet,您" +"声明并保证您是该组织的授权代表,并有权使该企业或实体受条款的约束。" + +#: docs/legal/testnet_tos.md:15 +msgid "Privacy Policy" +msgstr "隐私政策" + +#: docs/legal/testnet_tos.md:17 +msgid "" +"Please review our [Privacy Policy](../legal/privacy.md), which also governs " +"your use of Testnet, for information on how we collect, use and share your " +"information. By using Testnet you agree to be bound by our Privacy Policy." +msgstr "" +"请查看我们的[隐私政策](../legal/privacy.md),该政策也适用于您对Testnet的使" +"用,以了解我们如何收集、使用和分享您的信息。通过使用Testnet,您同意受我们的隐" +"私政策约束。" + +#: docs/legal/testnet_tos.md:23 +msgid "You may use Testnet only if you:" +msgstr "您只有在以下情况下才能使用Testnet:" + +#: docs/legal/testnet_tos.md:26 +msgid "" +"Are not otherwise barred from participating in Testnet under applicable law." +msgstr "在适用法律下,您没有被禁止参与Testnet。" + +#: docs/legal/testnet_tos.md:28 +msgid "" +"We may, at our discretion, introduce new or change existing eligibility " +"criteria or conditions we deem appropriate. Testnet may operate in certain " +"phases, and your participation in any one phase of Testnet does not " +"guarantee that you will be able to participate in any other phases of " +"Testnet." +msgstr "" +"我们可以自行决定引入新的或更改现有的资格标准或我们认为合适的条件。Testnet可能" +"在某些阶段运行,您参与Testnet的任何一个阶段并不保证您能够参与Testnet的任何其" +"他阶段。" + +#: docs/legal/testnet_tos.md:34 +msgid "" +"Testnet will commence on the date we prescribe and continue until terminated " +"at our discretion. We may change, discontinue, or wipe, temporarily or " +"permanently, all or any part of Testnet, at any time and without notice at " +"our discretion, including, without limitation, the modification of the " +"presence, amounts, or any other conditions applicable to the Testnet tokens, " +"without any liability to you or other Testnet users. We do not guarantee " +"that Testnet tokens will continue to be offered for any particular length of " +"time and you may not rely upon the continued availability of any Testnet " +"tokens. In the event of the expiration of Testnet, you acknowledge and agree " +"that your access to and use of your Testnet tokens will be removed, and all " +"accrued Testnet tokens will be deleted from the Testnet system. Testnet " +"tokens will not be converted into any future rewards offered by Mysten Labs." +msgstr "" +"Testnet将在我们规定的日期开始,并持续到我们自行决定终止为止。我们可以在任何时" +"间自行决定更改、终止或清除Testnet的全部或任何部分,暂时或永久地,且无需通知," +"包括但不限于修改Testnet代币的存在、数量或任何其他适用条件,且对您或其他" +"Testnet用户不承担任何责任。我们不保证Testnet代币会在任何特定时间段内继续提" +"供,您也不能依赖于Testnet代币的持续可用性。如果Testnet到期,您承认并同意您对" +"Testnet代币的访问和使用将被移除,所有累积的Testnet代币将从Testnet系统中删除。" +"Testnet代币不会转换为Mysten Labs提供的任何未来奖励。" + +#: docs/legal/testnet_tos.md:45 +msgid "Testnet Tokens" +msgstr "Testnet代币" + +#: docs/legal/testnet_tos.md:47 +msgid "" +"During Testnet you may accumulate Testnet tokens, such as through the " +"Testnet faucet, which are not, and will never convert to or accrue to become " +"Mainnet tokens or any other tokens or virtual assets. Testnet tokens are " +"virtual items with no monetary value. Testnet tokens do not constitute any " +"currency or property of any type and are not redeemable, refundable, or " +"eligible for any fiat or virtual currency or anything else of monetary " +"value, under any circumstances. Testnet tokens are not transferable between " +"users outside of the Testnet, and you may not attempt to sell, trade, or " +"transfer any Testnet tokens outside of the Testnet, or obtain any manner of " +"credit using any Testnet tokens. Any attempt to sell, trade, or transfer any " +"Testnet tokens outside of the Testnet will be null and void." +msgstr "" +"在Testnet期间,您可以通过Testnet水龙头等方式累积Testnet代币,这些代币不会,也" +"永远不会转换为或累积成为主网代币或任何其他代币或虚拟资产。Testnet代币是没有货" +"币价值的虚拟物品。Testnet代币不构成任何类型的货币或财产,在任何情况下都不可兑" +"换、不可退款或不可用于任何法定货币或虚拟货币或任何其他有货币价值的东西。" +"Testnet代币不能在Testnet之外的用户之间转移,您不得尝试在Testnet之外出售、交易" +"或转移任何Testnet代币,或使用任何Testnet代币获得任何形式的信用。任何在Testnet" +"之外出售、交易或转移任何Testnet代币的尝试将无效。" + +#: docs/legal/testnet_tos.md:59 +msgid "" +"Mysten Labs provides the Testnet platform solely as a developer test " +"environment. Testnet is provided \"as is\" and \"with all faults.\" We make " +"no warranties, express or implied, regarding the reliability, accuracy, " +"performance, or fitness for a particular purpose of the service provided. " +"You accept all risks associated with the use of Testnet and agree that " +"Mysten Labs, its affiliates, and its employees shall not be liable for any " +"damages, whether direct, indirect, incidental, special, consequential, or " +"punitive, arising out of the use or inability to use the service, including " +"but not limited to lost profits, loss of business, or data loss." +msgstr "" +"Mysten Labs提供Testnet平台仅作为开发者测试环境。Testnet按“原样”和“所有故障”提" +"供。我们不对所提供服务的可靠性、准确性、性能或特定用途的适用性作出任何明示或" +"暗示的保证。您接受与使用Testnet相关的所有风险,并同意Mysten Labs、其关联公司" +"及其员工不对因使用或无法使用该服务而引起的任何损害承担责任,无论是直接的、间" +"接的、附带的、特殊的、后果性的或惩罚性的损害,包括但不限于利润损失、业务损失" +"或数据丢失。" + +#: docs/legal/testnet_tos.md:72 +msgid "" +"Any deficiencies or errors in the Testnet platform shall not constitute a " +"breach of this agreement, and customers agree to waive any right to seek a " +"refund or compensation based on such deficiencies or errors. This \"as is, " +"no warranty\" provision shall survive the termination or expiration of any " +"other agreements between you and Mysten Labs." +msgstr "" +"Testnet平台中的任何缺陷或错误均不构成对本协议的违反,客户同意放弃基于此类缺陷" +"或错误寻求退款或赔偿的任何权利。本“按原样,无保修”条款将在您与Mysten Labs之间" +"的任何其他协议终止或到期后继续有效。" + +#: docs/legal/privacy.md:5 +msgid "PRIVACY POLICY" +msgstr "隐私政策" + +#: docs/legal/privacy.md:7 +msgid "**Last Updated:** June 18, 2024" +msgstr "**最后更新:** 2024年6月18日" + +#: docs/legal/privacy.md:9 +msgid "" +"This Privacy Policy is designed to help you understand how Mysten Labs, " +"Inc., its subsidiaries and affiliates (collectively called \"**Mysten " +"Labs**\", \"**we**,\" \"**us**,\" and \"**our**\") collects, uses, and " +"shares your personal information and to help you understand and exercise " +"your privacy rights in accordance with applicable law. This Policy applies " +"when you use our websites, contact our team members, engage with us on " +"social media or otherwise interact with us." +msgstr "" +"本隐私政策旨在帮助您了解Mysten Labs, Inc.及其子公司和关联公司(统称为" +"\"**Mysten Labs**\"、\"**我们**\"、\"**我们**\"和\"**我们的**\")如何收集、使" +"用和共享您的个人信息,并帮助您根据适用法律理解和行使您的隐私权。当您使用我们" +"的网站、联系我们的团队成员、在社交媒体上与我们互动或以其他方式与我们互动时," +"本政策适用。" + +#: docs/legal/privacy.md:15 +msgid "[SCOPE](#scope)" +msgstr "[范围](#scope)" + +#: docs/legal/privacy.md:16 +msgid "[CHANGES TO OUR PRIVACY POLICY](#changes-to-our-privacy-policy)" +msgstr "[隐私政策的变更](#changes-to-our-privacy-policy)" + +#: docs/legal/privacy.md:17 +msgid "[PERSONAL INFORMATION WE COLLECT](#personal-information-we-collect)" +msgstr "[我们收集的个人信息](#personal-information-we-collect)" + +#: docs/legal/privacy.md:19 +msgid "[HOW WE USE YOUR INFORMATION](#how-we-use-your-information)" +msgstr "我们如何使用您的信息" + +#: docs/legal/privacy.md:20 +msgid "[HOW WE DISCLOSE YOUR INFORMATION](#how-we-disclose-your-information)" +msgstr "我们如何披露您的信息" + +#: docs/legal/privacy.md:22 +msgid "[YOUR PRIVACY CHOICES AND RIGHTS](#your-privacy-choices-and-rights)" +msgstr "您的隐私选择和权利" + +#: docs/legal/privacy.md:24 +msgid "[SECURITY OF YOUR INFORMATION](#security-of-your-information)" +msgstr "您的信息安全" + +#: docs/legal/privacy.md:26 +msgid "[INTERNATIONAL DATA TRANSFERS](#international-data-transfers)" +msgstr "国际数据传输" + +#: docs/legal/privacy.md:28 +msgid "[RETENTION OF PERSONAL INFORMATION](#retention-of-personal-information)" +msgstr "个人信息的保留" + +#: docs/legal/privacy.md:30 +msgid "" +"[SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS](#supplemental-notice-for-" +"california-residents)" +msgstr "加利福尼亚州居民的补充通知" + +#: docs/legal/privacy.md:32 +msgid "" +"[SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS](#supplemental-notice-for-nevada-" +"residents)" +msgstr "内华达州居民的补充通知" + +#: docs/legal/privacy.md:34 +msgid "[CHILDREN'S INFORMATION](#childrens-information)" +msgstr "儿童信息" + +#: docs/legal/privacy.md:35 +msgid "" +"[THIRD-PARTY'S WEBSITES/APPLICATIONS](#third-party-websitesapplications)" +msgstr "第三方网站/应用程序" + +#: docs/legal/privacy.md:37 +msgid "[SUPERVISORY AUTHORITY](#supervisory-authority)" +msgstr "监督机构" + +#: docs/legal/privacy.md:38 +msgid "[CONTACT US](#contact-us)" +msgstr "[联系我们](#contact-us)" + +#: docs/legal/privacy.md:40 +msgid "SCOPE" +msgstr "范围" + +#: docs/legal/privacy.md:42 +msgid "" +"This Privacy Policy applies to personal information processed by Mysten " +"Labs, including on our websites (the \"**Site**\"), and other online and " +"offline offerings. The Site, our services and our other online and offline " +"offerings are collectively called the \"**Services**.\" For clarity, the " +"Services do not include the Walrus Protocol or any other decentralized " +"aspect of the Walrus or Sui Blockchain that is not controlled by Mysten Labs " +"due to the decentralized nature of these blockchains." +msgstr "" +"本隐私政策适用于Mysten Labs处理的个人信息,包括在我们的网站(“**网站**”)和其" +"他在线和离线产品上。网站、我们的服务和其他在线和离线产品统称为“**服务**”。为" +"明确起见,服务不包括Walrus协议或Walrus或Sui区块链的任何其他去中心化方面,因为" +"这些区块链的去中心化性质不受Mysten Labs控制。" + +#: docs/legal/privacy.md:51 +msgid "CHANGES TO OUR PRIVACY POLICY" +msgstr "隐私政策的变更" + +#: docs/legal/privacy.md:53 +msgid "" +"We may revise this Privacy Policy from time to time in our sole discretion. " +"If there are any material changes to this Privacy Policy, we will notify you " +"as required by applicable law. You understand and agree that you will be " +"deemed to have accepted the updated Privacy Policy if you continue to use " +"our Services after the new Privacy Policy takes effect." +msgstr "" +"我们可能会不时自行决定修订本隐私政策。如果本隐私政策有任何重大变更,我们将根" +"据适用法律通知您。您理解并同意,如果您在新的隐私政策生效后继续使用我们的服" +"务,您将被视为已接受更新的隐私政策。" + +#: docs/legal/privacy.md:60 +msgid "PERSONAL INFORMATION WE COLLECT" +msgstr "我们收集的个人信息" + +#: docs/legal/privacy.md:62 +msgid "" +"The categories of personal information we collect depend on how you interact " +"with us, our Services and the requirements of applicable law. We collect " +"information that you provide to us, information we obtain automatically when " +"you use our Services, and information from other sources such as third-party " +"services and organizations, as described below." +msgstr "" +"我们收集的个人信息类别取决于您与我们的互动方式、我们的服务和适用法律的要求。" +"我们收集您提供给我们的信息、您使用我们的服务时我们自动获取的信息以及来自其他" +"来源的信息,例如第三方服务和组织,如下所述。" + +#: docs/legal/privacy.md:69 +msgid "A. **Information You Provide to Us Directly**" +msgstr "A. **您直接提供给我们的信息**" + +#: docs/legal/privacy.md:71 +msgid "" +"We may collect the following personal information that you provide to us." +msgstr "我们可能会收集您提供给我们的以下个人信息。" + +#: docs/legal/privacy.md:74 +msgid "" +"**Account Creation**. We may collect information if you create an account " +"with us, such as your name, username, email address, or password." +msgstr "" +"**账户创建**。如果您在我们这里创建账户,我们可能会收集信息,例如您的姓名、用" +"户名、电子邮件地址或密码。" + +#: docs/legal/privacy.md:77 +msgid "" +"**Wallet and Transaction Information.** In order to engage in transactions " +"on the Services, you may need to provide us or our third-party payment " +"processors with access to or information about your digital wallet. We will " +"never ask you for or collect your private keys." +msgstr "" +"**钱包和交易信息**。为了在服务上进行交易,您可能需要向我们或我们的第三方支付" +"处理方提供访问或有关您的数字钱包的信息。我们绝不会向您索取或收集您的私钥。" + +#: docs/legal/privacy.md:82 +msgid "" +"**Other Transactions**. We may collect personal information and details " +"associated with your activities on our Services, including to deliver you " +"your rewards associated with your use of the Services." +msgstr "" +"**其他交易**。我们可能会收集与您在我们服务上的活动相关的个人信息和详细信息," +"包括向您提供与您使用服务相关的奖励。" + +#: docs/legal/privacy.md:86 +msgid "" +"**Your Communications with Us**. We may collect personal information, such " +"as email address when you request information about our Services, register " +"for our newsletter or marketing promotions, request customer or technical " +"support, apply for a job or otherwise communicate with us." +msgstr "" +"**您与我们的通信**。当您请求有关我们服务的信息、注册我们的新闻通讯或营销推" +"广、请求客户或技术支持、申请工作或以其他方式与我们沟通时,我们可能会收集个人" +"信息,例如电子邮件地址。" + +#: docs/legal/privacy.md:91 +msgid "" +"**Interactive Features**. We and others who use our Services may collect " +"personal information that you submit or make available through our " +"interactive features (e.g., via the Mysten Labs community, commenting " +"functionalities, forums, blogs, and social media pages). Any personal " +"information you provide on the public sections of these features will be " +"considered \"public,\" unless otherwise required by applicable law, and is " +"not subject to the privacy protections referenced herein." +msgstr "" +"**互动功能**。我们和其他使用我们服务的人可能会收集您通过我们的互动功能(例" +"如,通过Mysten Labs社区、评论功能、论坛、博客和社交媒体页面)提交或提供的个人" +"信息。您在这些功能的公共部分提供的任何个人信息将被视为“公开”,除非适用法律另" +"有要求,并且不受本文所述的隐私保护。" + +#: docs/legal/privacy.md:99 +msgid "" +"**Surveys**. We may contact you to participate in surveys. If you decide to " +"participate, you may be asked to provide certain information which may " +"include personal information." +msgstr "" +"**调查**。我们可能会联系您参与调查。如果您决定参与,您可能会被要求提供某些信" +"息,这些信息可能包括个人信息。" + +#: docs/legal/privacy.md:102 +msgid "" +"**Sweepstakes, Giveaways or Contests**. We may collect personal information " +"you provide for any sweepstakes, giveaways or contests that we offer. In " +"some jurisdictions, we are required to publicly share information of " +"sweepstakes and contest winners." +msgstr "" +"**抽奖、赠品或竞赛**。我们可能会收集您为我们提供的任何抽奖、赠品或竞赛提供的" +"个人信息。在某些司法管辖区,我们需要公开分享抽奖和竞赛获奖者的信息。" + +#: docs/legal/privacy.md:106 +msgid "" +"**Events.** We may collect personal information from individuals when we " +"attend or host conferences, trade shows, and other events." +msgstr "" +"**活动**。当我们参加或举办会议、贸易展览和其他活动时,我们可能会收集个人信" +"息。" + +#: docs/legal/privacy.md:108 +msgid "" +"**Business Development and Strategic Partnerships.** We may collect personal " +"information from individuals and third parties to assess and pursue " +"potential business opportunities." +msgstr "" +"**业务发展和战略合作伙伴关系**。我们可能会收集个人和第三方的个人信息,以评估" +"和追求潜在的商业机会。" + +#: docs/legal/privacy.md:111 +msgid "" +"**Job Applications.** We may post job openings and opportunities on our " +"Services. If you reply to one of these postings by submitting your " +"application, CV and/or cover letter to us, we will collect and use this " +"information to assess your qualifications." +msgstr "" +"**职位申请**。我们可能会在我们的服务上发布职位空缺和机会。如果您通过提交申" +"请、简历和/或求职信回复这些职位发布,我们将收集并使用这些信息来评估您的资格。" + +#: docs/legal/privacy.md:116 +msgid "B. **Information Collected Automatically**" +msgstr "B. **从其他来源收集的信息**" + +#: docs/legal/privacy.md:118 +msgid "" +"We may collect personal information automatically when you use our Services:" +msgstr "当您使用我们的服务时,我们可能会自动收集个人信息:" + +#: docs/legal/privacy.md:120 +msgid "" +"**Automatic Data Collection**. We may collect certain information " +"automatically when you use our Services, such as your Internet protocol (IP) " +"address, user settings, MAC address, cookie identifiers, mobile carrier, " +"mobile advertising and other unique identifiers, browser or device " +"information, location information (including approximate location derived " +"from IP address), Internet service provider, and metadata about the content " +"you provide. We may also automatically collect information regarding your " +"use of our Services, such as pages that you visit before, during and after " +"using our Services, information about the links you click, the types of " +"content you interact with, the frequency and duration of your activities, " +"and other information about how you use our Services." +msgstr "" +"**自动数据收集**。当您使用我们的服务时,我们可能会自动收集某些信息,例如您的" +"互联网协议(IP)地址、用户设置、MAC地址、cookie标识符、移动运营商、移动广告和" +"其他唯一标识符、浏览器或设备信息、位置信息(包括从IP地址推导的大致位置)、互" +"联网服务提供商以及您提供的内容的元数据。我们还可能自动收集有关您使用我们服务" +"的信息,例如您在使用我们服务之前、期间和之后访问的页面、您点击的链接、您互动" +"的内容类型、您的活动频率和持续时间以及有关您如何使用我们服务的其他信息。" + +#: docs/legal/privacy.md:132 +msgid "" +"**Cookies, Pixel Tags/Web Beacons, and Other Technologies**. We, as well as " +"third parties that provide content, advertising, or other functionality on " +"our Services, may use cookies, pixel tags, local storage, and other " +"technologies (\"**Technologies**\") to automatically collect information " +"through your use of our Services." +msgstr "" +"**Cookies、像素标签/网络信标和其他技术**。我们以及在我们的服务上提供内容、广" +"告或其他功能的第三方,可能会使用cookies、像素标签、本地存储和其他技术(\"**技" +"术**\")通过您使用我们的服务自动收集信息。" + +#: docs/legal/privacy.md:137 +msgid "" +"**Cookies**. Cookies are small text files placed in device browsers that " +"store preferences and facilitate and enhance your experience." +msgstr "" +"**Cookies**。Cookies是放置在设备浏览器中的小型文本文件,用于存储偏好并促进和" +"增强您的体验。" + +#: docs/legal/privacy.md:139 +msgid "" +"**Pixel Tags/Web Beacons**. A pixel tag (also known as a web beacon) is a " +"piece of code embedded in our Services that collects information about " +"engagement on our Services. The use of a pixel tag allows us to record, for " +"example, that a user has visited a particular web page or clicked on a " +"particular advertisement. We may also include web beacons in e-mails to " +"understand whether messages have been opened, acted on, or forwarded." +msgstr "" +"**像素标签/网络信标**。像素标签(也称为网络信标)是嵌入在我们服务中的一段代" +"码,用于收集有关用户在我们服务上的互动信息。使用像素标签可以让我们记录,例" +"如,用户访问了特定网页或点击了特定广告。我们还可能在电子邮件中包含网络信标," +"以了解消息是否已被打开、操作或转发。" + +#: docs/legal/privacy.md:147 +msgid "" +"Our uses of these Technologies fall into the following general categories:" +msgstr "我们对这些技术的使用分为以下几类:" + +#: docs/legal/privacy.md:150 +msgid "" +"**Operationally Necessary**. This includes Technologies that allow you " +"access to our Services, applications, and tools that are required to " +"identify irregular website behavior, prevent fraudulent activity, improve " +"security, or allow you to make use of our functionality;" +msgstr "" +"**操作必要**。这包括允许您访问我们的服务、应用程序和工具的技术,这些技术用于" +"识别异常网站行为、防止欺诈活动、提高安全性或允许您使用我们的功能;" + +#: docs/legal/privacy.md:155 +msgid "" +"**Performance-Related**. We may use Technologies to assess the performance " +"of our Services, including as part of our analytic practices to help us " +"understand how individuals use our Services (_see Analytics below_);" +msgstr "" +"**性能相关**。我们可能会使用技术来评估我们服务的性能,包括作为我们分析实践的" +"一部分,以帮助我们了解个人如何使用我们的服务(_见下文分析_);" + +#: docs/legal/privacy.md:159 +msgid "" +"**Functionality-Related**. We may use Technologies that allow us to offer " +"you enhanced functionality when accessing or using our Services. This may " +"include identifying you when you sign into our Services or keeping track of " +"your specified preferences, interests, or past items viewed;" +msgstr "" +"**功能相关**。我们可能会使用技术,在您访问或使用我们的服务时为您提供增强的功" +"能。这可能包括在您登录我们的服务时识别您,或跟踪您指定的偏好、兴趣或过去查看" +"的项目;" + +#: docs/legal/privacy.md:164 +msgid "" +"**Advertising- or Targeting-Related**. We may use first party or third-party " +"Technologies to deliver content, including ads relevant to your interests, " +"on our Services or on third-party websites." +msgstr "" +"**广告或目标相关**。我们可能会使用第一方或第三方技术在我们的服务或第三方网站" +"上投放与您的兴趣相关的内容,包括广告。" + +#: docs/legal/privacy.md:168 +msgid "" +"_See \"[Your Privacy Choices and Rights](#your-privacy-choices-and-rights)\" " +"below to understand your choices regarding these Technologies._" +msgstr "" +"_请参阅下文的\"[您的隐私选择和权利](#your-privacy-choices-and-rights)\",了解" +"您对这些技术的选择。_" + +#: docs/legal/privacy.md:172 +msgid "" +"**Analytics**. We may use our Technologies and other third-party tools to " +"process analytics information on our Services. These technologies allow us " +"to process usage data to better understand how our website and web-related " +"Services are used, and to continually improve and personalize our Services. " +"Some of our analytics partners include:" +msgstr "" +"**分析**。我们可能会使用我们的技术和其他第三方工具来处理我们服务上的分析信" +"息。这些技术使我们能够处理使用数据,以更好地了解我们的网站和与网络相关的服务" +"的使用情况,并不断改进和个性化我们的服务。我们的一些分析合作伙伴包括:" + +#: docs/legal/privacy.md:178 +msgid "" +"**Google Analytics**. For more information about how Google uses your data " +"(including for its own purposes, e.g., for profiling or linking it to other " +"data), please visit [Google Analytics' Privacy Policy](http://www.google.com/" +"policies/privacy/partners/). To learn more about how to opt-out of Google " +"Analytics' use of your information, please click [here](http://tools.google." +"com/dlpage/gaoptout)." +msgstr "" +"**Google Analytics**。有关Google如何使用您的数据的更多信息(包括其自身目的," +"例如用于分析或将其与其他数据关联),请访问[Google Analytics的隐私政策]" +"(http://www.google.com/policies/privacy/partners/)。要了解更多关于如何选择退" +"出Google Analytics使用您的信息,请点击[这里](http://tools.google.com/dlpage/" +"gaoptout)。" + +#: docs/legal/privacy.md:185 +msgid "" +"**LinkedIn Analytics**. For more information, please visit [LinkedIn " +"Analytics' Privacy Policy](https://www.linkedin.com/legal/privacy-policy). " +"To learn more about how to opt-out of LinkedIn's use of your information, " +"please click [here](https://www.linkedin.com/help/linkedin/answer/62931?" +"trk=microsites-frontend_legal_privacy-policy&lang=en)." +msgstr "" +"**LinkedIn Analytics**。有关更多信息,请访问[LinkedIn Analytics的隐私政策]" +"(https://www.linkedin.com/legal/privacy-policy)。要了解更多关于如何选择退出" +"LinkedIn使用您的信息,请点击[这里](https://www.linkedin.com/help/linkedin/" +"answer/62931?trk=microsites-frontend_legal_privacy-policy&lang=en)。" + +#: docs/legal/privacy.md:191 +msgid "" +"**Facebook Connect**. For more information, please visit Facebook's [Data " +"Policy](https://www.facebook.com/policy.php?ref=pf). You can object to the " +"collection of your data by Facebook pixel, or to the use of your data for " +"the purpose of displaying Facebook ads by contacting the following address " +"while logged into your Facebook account: https://www.facebook.com/settings?" +"tab=ads." +msgstr "" +"**Facebook Connect**。有关更多信息,请访问Facebook的[数据政策](https://www." +"facebook.com/policy.php?ref=pf)。您可以通过登录您的Facebook帐户并联系以下地" +"址,反对Facebook像素收集您的数据,或反对将您的数据用于显示Facebook广告的目" +"的:https://www.facebook.com/settings?tab=ads。" + +#: docs/legal/privacy.md:198 +msgid "" +"**Mixpanel**. For more information about Mixpanel, please visit [Mixpanel's " +"Privacy Policy](https://mixpanel.com/legal/privacy-policy/)." +msgstr "" +"**Mixpanel**。有关Mixpanel的更多信息,请访问[Mixpanel的隐私政策](https://" +"mixpanel.com/legal/privacy-policy/)。" + +#: docs/legal/privacy.md:201 +msgid "" +"**Social Media Platforms**. Our Services may contain social media buttons, " +"such as Discord, Twitter, Instagram, TikTok, Youtube, and Telegram, which " +"might include widgets such as the \"share this\" button or other interactive " +"mini programs. These features may collect your IP address and which page you " +"are visiting on our Services and may set a cookie to enable the feature to " +"function properly. Your interactions with these platforms are governed by " +"the privacy policy of the company providing it." +msgstr "" +"**社交媒体平台**。我们的服务可能包含社交媒体按钮,例如Discord、Twitter、" +"Instagram、TikTok、Youtube和Telegram,这些按钮可能包括“分享此内容”按钮或其他" +"交互式小程序。这些功能可能会收集您的IP地址以及您在我们服务上访问的页面,并可" +"能设置cookie以使该功能正常运行。您与这些平台的互动受提供该功能的公司的隐私政" +"策的约束。" + +#: docs/legal/privacy.md:210 +msgid "C. **Information Collected from Other Sources**" +msgstr "C. **从其他来源收集的信息**" + +#: docs/legal/privacy.md:212 +msgid "" +"**Third-Party Sources.** We may obtain information about you from other " +"sources, including through third-party services and organizations. For " +"example, if you access our Services through a third-party application, such " +"as an app store, a third-party login service, or a social networking site, " +"we may collect information about you from that third-party application that " +"you have made available via your privacy settings." +msgstr "" +"**第三方来源**。我们可能会从其他来源获取有关您的信息,包括通过第三方服务和组" +"织。例如,如果您通过第三方应用程序(如应用商店、第三方登录服务或社交网络网" +"站)访问我们的服务,我们可能会从您通过隐私设置提供的该第三方应用程序中收集有" +"关您的信息。" + +#: docs/legal/privacy.md:219 +msgid "" +"**Referrals, Sharing and Other Features**. Our Services may offer various " +"tools and functionalities that allow you to provide information about your " +"friends through our referral service; third parties may also use these " +"services to upload information about you. Our referral services may also " +"allow you to forward or share certain content with a friend or colleague, " +"such as an email inviting your friend to use our Services. Please only share " +"with us contact information of people with whom you have a relationship (e." +"g., relative, friend, neighbor, or co-worker)." +msgstr "" +"**推荐、分享和其他功能**。我们的服务可能提供各种工具和功能,允许您通过我们的" +"推荐服务提供有关您朋友的信息;第三方也可能使用这些服务上传有关您的信息。我们" +"的推荐服务还可能允许您将某些内容转发或分享给朋友或同事,例如邀请您的朋友使用" +"我们服务的电子邮件。请仅与我们分享您有关系的人的联系信息(例如,亲戚、朋友、" +"邻居或同事)。" + +#: docs/legal/privacy.md:229 +msgid "HOW WE USE YOUR INFORMATION" +msgstr "我们如何使用您的信息" + +#: docs/legal/privacy.md:231 +msgid "" +"We use your information for a variety of business purposes, including to " +"provide our Services, for administrative purposes, and to market our " +"products and Services, as described below." +msgstr "" +"我们出于各种业务目的使用您的信息,包括提供我们的服务、用于管理目的以及营销我" +"们的产品和服务,如下所述。" + +#: docs/legal/privacy.md:235 +msgid "A. **Provide Our Services**" +msgstr "A. **提供我们的服务**" + +#: docs/legal/privacy.md:237 +msgid "" +"We use your information to fulfill our contract with you and provide you " +"with our Services and perform our contract with you, such as:" +msgstr "" +"我们使用您的信息来履行与您的合同,并向您提供我们的服务和履行与您的合同,例" +"如:" + +#: docs/legal/privacy.md:240 +msgid "Managing your information and accounts;" +msgstr "管理您的信息和账户;" + +#: docs/legal/privacy.md:241 +msgid "" +"Providing access to certain areas, functionalities, and features of our " +"Services;" +msgstr "提供访问我们服务的某些区域、功能和特性的权限;" + +#: docs/legal/privacy.md:243 +msgid "Answering requests for customer or technical support;" +msgstr "回答客户或技术支持请求;" + +#: docs/legal/privacy.md:244 +msgid "" +"Communicating with you about your account, activities on our Services, and " +"policy changes;" +msgstr "与您沟通有关您的账户、在我们服务上的活动和政策变更;" + +#: docs/legal/privacy.md:246 +msgid "" +"Processing information about your wallet to facilitate transfers via the " +"Services;" +msgstr "处理有关您钱包的信息,以便通过服务进行转账;" + +#: docs/legal/privacy.md:248 +msgid "" +"Processing applications if you apply for a job, we post on our Services; and" +msgstr "如果您申请我们在服务上发布的职位,处理申请;以及" + +#: docs/legal/privacy.md:250 +msgid "Allowing you to register for events." +msgstr "允许您注册活动。" + +#: docs/legal/privacy.md:252 +msgid "B. **Administrative Purposes**" +msgstr "B. **管理目的**" + +#: docs/legal/privacy.md:254 +msgid "We use your information for our legitimate interest, such as:" +msgstr "我们出于合法利益使用您的信息,例如:" + +#: docs/legal/privacy.md:256 +msgid "" +"Pursuing our legitimate interests such as direct marketing, research and " +"development (including marketing research), network and information " +"security, and fraud prevention;" +msgstr "" +"追求我们的合法利益,例如直接营销、研究和开发(包括市场研究)、网络和信息安全" +"以及防止欺诈;" + +#: docs/legal/privacy.md:259 +msgid "" +"Detecting security incidents, protecting against malicious, deceptive, " +"fraudulent or illegal activity, and prosecuting those responsible for that " +"activity;" +msgstr "检测安全事件,防止恶意、欺骗、欺诈或非法活动,并起诉对该活动负责的人;" + +#: docs/legal/privacy.md:262 +msgid "Measuring interest and engagement in our Services;" +msgstr "衡量对我们服务的兴趣和参与度;" + +#: docs/legal/privacy.md:263 +msgid "Improving, upgrading or enhancing our Services;" +msgstr "改进、升级或增强我们的服务;" + +#: docs/legal/privacy.md:264 +msgid "Developing new products and Services;" +msgstr "开发新产品和服务;" + +#: docs/legal/privacy.md:265 +msgid "Ensuring internal quality control and safety;" +msgstr "确保内部质量控制和安全;" + +#: docs/legal/privacy.md:266 +msgid "Authenticating and verifying individual identities;" +msgstr "验证和核实个人身份;" + +#: docs/legal/privacy.md:267 +msgid "Debugging to identify and repair errors with our Services;" +msgstr "调试以识别和修复我们服务中的错误;" + +#: docs/legal/privacy.md:268 +msgid "" +"Auditing relating to interactions, transfers and other compliance activities;" +msgstr "审计与互动、转账和其他合规活动相关的内容;" + +#: docs/legal/privacy.md:270 +msgid "" +"Sharing information with third parties as needed to provide the Services;" +msgstr "根据需要与第三方共享信息以提供服务;" + +#: docs/legal/privacy.md:272 +msgid "Enforcing our agreements and policies; and" +msgstr "执行我们的协议和政策;以及" + +#: docs/legal/privacy.md:273 +msgid "Other uses as required to comply with our legal obligations." +msgstr "根据需要用于履行我们的法律义务的其他用途。" + +#: docs/legal/privacy.md:275 +msgid "C. **Marketing and Advertising our Products and Services**" +msgstr "C. **营销和广告我们的产品和服务**" + +#: docs/legal/privacy.md:277 +msgid "" +"We may use personal information to tailor and provide you with content and " +"advertisements. We may provide you with these materials as permitted by " +"applicable law. Some of the ways we may market to you include email " +"campaigns, custom audiences advertising, and \"interest-based\" or " +"\"personalized advertising,\" including through cross-device tracking." +msgstr "" +"我们可能会使用个人信息来定制和向您提供内容和广告。我们可能会在适用法律允许的" +"情况下向您提供这些材料。我们可能向您进行营销的一些方式包括电子邮件活动、自定" +"义受众广告和“基于兴趣”或“个性化广告”,包括通过跨设备跟踪。" + +#: docs/legal/privacy.md:283 +msgid "" +"If you have any questions about our marketing practices or if you would like " +"to opt out of the use of your personal information for marketing purposes, " +"you may contact us at any time as set forth in \"[Contact Us](#contact-us)\" " +"below." +msgstr "" +"如果您对我们的营销做法有任何疑问,或者如果您希望选择不将您的个人信息用于营销" +"目的,您可以随时按照下文“[联系我们](#contact-us)”中的说明与我们联系。" + +#: docs/legal/privacy.md:288 +msgid "D. **With Your Consent**" +msgstr "D. **经您同意**" + +#: docs/legal/privacy.md:290 +msgid "" +"We may use personal information for other purposes that are clearly " +"disclosed to you at the time you provide personal information or with your " +"consent." +msgstr "" +"我们可能会将个人信息用于在您提供个人信息时明确向您披露的其他目的,或经您同" +"意。" + +#: docs/legal/privacy.md:294 +msgid "E. **Other Purposes**" +msgstr "E. **其他目的**" + +#: docs/legal/privacy.md:296 +msgid "" +"We also use your information for other purposes as requested by you or as " +"permitted by applicable law." +msgstr "我们还根据您的要求或适用法律允许的其他目的使用您的信息。" + +#: docs/legal/privacy.md:299 +msgid "" +"**Automated Decision Making**. We may engage in automated decision making, " +"including profiling. Mysten Labs's processing of your personal information " +"will not result in a decision based solely on automated processing that " +"significantly affects you unless such a decision is necessary as part of a " +"contract we have with you, we have your consent, or we are permitted by law " +"to engage in such automated decision making. If you have questions about our " +"automated decision making, you may contact us as set forth in \"[Contact Us]" +"(#contact-us)\" below." +msgstr "" +"**自动决策**。我们可能会进行自动决策,包括分析。Mysten Labs对您的个人信息的处" +"理不会导致仅基于自动处理的决定对您产生重大影响,除非此类决定是我们与您签订合" +"同的一部分,我们已获得您的同意,或法律允许我们进行此类自动决策。如果您对我们" +"的自动决策有任何疑问,您可以按照下文“[联系我们](#contact-us)”中的说明与我们联" +"系。" + +#: docs/legal/privacy.md:308 +msgid "" +"**De-identified and Aggregated Information.** We may use personal " +"information and other information about you to create de-identified and/or " +"aggregated information, such as de-identified demographic information, de-" +"identified location information, information about the device from which you " +"access our Services, or other analyses we create." +msgstr "" +"**去标识化和汇总信息**。我们可能会使用个人信息和有关您的其他信息来创建去标识" +"化和/或汇总信息,例如去标识化的人口统计信息、去标识化的位置信息、您访问我们服" +"务的设备信息或我们创建的其他分析。" + +#: docs/legal/privacy.md:315 +msgid "HOW WE DISCLOSE YOUR INFORMATION" +msgstr "我们如何披露您的信息" + +#: docs/legal/privacy.md:317 +msgid "" +"We disclose your information to third parties for a variety of business " +"purposes, including to provide our Services, to protect us or others, or in " +"the event of a major business transaction such as a merger, sale, or asset " +"transfer, as described below." +msgstr "" +"我们向第三方披露您的信息以实现各种业务目的,包括提供我们的服务、保护我们或他" +"人,或在发生重大业务交易(如合并、出售或资产转让)时,如下所述。" + +#: docs/legal/privacy.md:322 +msgid "A. **Disclosures to Provide our Services**" +msgstr "A. **为提供我们的服务而进行的信息披露**" + +#: docs/legal/privacy.md:324 +msgid "" +"The categories of third parties with whom we may share your information are " +"described below." +msgstr "我们可能与之共享您的信息的第三方类别如下所述。" + +#: docs/legal/privacy.md:327 +msgid "" +"**Notice Regarding Use of Blockchain.** Transactions on the Services will be " +"conducted via Blockchain. Information about your transfers will be provided " +"to a Blockchain and may be accessible to third parties due to the public " +"nature of the Blockchain. Because entries to a Blockchain are, by their " +"nature, public, and because it may be possible for someone to identify you " +"through your pseudonymous, public wallet address using external sources of " +"information, any transaction you enter onto the Blockchain could possibly be " +"used to identify you, or information about you." +msgstr "" +"**关于使用区块链的通知**。服务上的交易将通过区块链进行。有关您转账的信息将提" +"供给区块链,并且由于区块链的公共性质,第三方可能会访问这些信息。由于区块链的" +"条目本质上是公开的,并且由于有人可能通过使用外部信息来源识别您的假名公共钱包" +"地址,您在区块链上进行的任何交易都可能被用来识别您或有关您的信息。" + +#: docs/legal/privacy.md:336 +msgid "" +"**Other Users of the Services and Parties You Transact With.** Some of your " +"personal information may be visible to other users of the Services (e.g., " +"information featured on generally accessible parts of your profile; " +"usernames of other Mysten Labs Services users). In addition, to complete " +"transfers via the Services, we will need to share some of your personal " +"information with the party that you are transacting with." +msgstr "" +"**服务的其他用户和与您交易的各方**。您的某些个人信息可能对服务的其他用户可见" +"(例如,您的个人资料中一般可访问部分的信息;其他Mysten Labs服务用户的用户" +"名)。此外,为了通过服务完成转账,我们需要与您进行交易的一方共享您的某些个人" +"信息。" + +#: docs/legal/privacy.md:343 +msgid "" +"**Third Party Websites and Applications.** You may choose to share personal " +"information or interact with third-party websites and/or third-party " +"applications, including, but not limited to, third-party electronic wallet " +"extensions. Once your personal information has been shared with a third-" +"party website or a third-party application, it will also be subject to such " +"third party's privacy policy. We encourage you to closely read each third-" +"party website or third-party application privacy policy before sharing your " +"personal information or otherwise interacting with them. Please note that we " +"do not control, and we are not responsible for the third-party website's or " +"the third-party application's processing of your personal information." +msgstr "" +"**第三方网站和应用程序**。您可以选择共享个人信息或与第三方网站和/或第三方应用" +"程序互动,包括但不限于第三方电子钱包扩展。一旦您的个人信息与第三方网站或第三" +"方应用程序共享,它也将受该第三方的隐私政策的约束。我们建议您在共享个人信息或" +"与其互动之前,仔细阅读每个第三方网站或第三方应用程序的隐私政策。请注意,我们" +"不控制,也不对第三方网站或第三方应用程序处理您的个人信息负责。" + +#: docs/legal/privacy.md:355 +msgid "" +"**Service Providers**. We may share your personal information with our third-" +"party service providers who use that information to help us provide our " +"Services. This includes service providers that provide us with IT support, " +"hosting, customer service, and related services." +msgstr "" +"**服务提供商**。我们可能会与我们的第三方服务提供商共享您的个人信息,这些服务" +"提供商使用这些信息来帮助我们提供我们的服务。这包括为我们提供IT支持、托管、客" +"户服务和相关服务的服务提供商。" + +#: docs/legal/privacy.md:360 +msgid "" +"**Business Partners**. We may share your personal information with business " +"partners to provide you with a product or service you have requested. We may " +"also share your personal information to business partners with whom we " +"jointly offer products or services." +msgstr "" +"**业务合作伙伴**。我们可能会与业务合作伙伴共享您的个人信息,以向您提供您请求" +"的产品或服务。我们还可能与我们共同提供产品或服务的业务合作伙伴共享您的个人信" +"息。" + +#: docs/legal/privacy.md:364 +msgid "" +"**Affiliates**. We may share your personal information with members of our " +"corporate family." +msgstr "**关联公司**。我们可能会与我们的公司成员共享您的个人信息。" + +#: docs/legal/privacy.md:366 +msgid "" +"**Other Users/Website Visitors**. As described above in \"[Personal " +"Information We Collect](#personal-information-we-collect),\" our Services " +"allow you to share your profile and/or User Content with other users or " +"publicly, including to those who do not use our Services." +msgstr "" +"**其他用户/网站访问者**。如上文\"[我们收集的个人信息](#personal-information-" +"we-collect)\"所述,我们的服务允许您与其他用户或公开分享您的个人资料和/或用户" +"内容,包括那些不使用我们服务的人。" + +#: docs/legal/privacy.md:372 +msgid "" +"**Advertising Partners**. We may share your personal information with third-" +"party advertising partners. These third-party advertising partners may set " +"Technologies and other tracking tools on our Services to collect information " +"regarding your activities and your device (e.g., your IP address, cookie " +"identifiers, page(s) visited, location, time of day). These advertising " +"partners may use this information (and similar information collected from " +"other services) for purposes of delivering personalized advertisements to " +"you when you visit digital properties within their networks. This practice " +"is commonly referred to as \"interest-based advertising\" or \"personalized " +"advertising.\"" +msgstr "" +"**广告合作伙伴**。我们可能会与第三方广告合作伙伴分享您的个人信息。这些第三方" +"广告合作伙伴可能会在我们的服务上设置技术和其他跟踪工具,以收集有关您的活动和" +"设备的信息(例如,您的IP地址、cookie标识符、访问的页面、位置、时间)。这些广" +"告合作伙伴可能会使用这些信息(以及从其他服务收集的类似信息)来在您访问其网络" +"内的数字属性时向您投放个性化广告。这种做法通常被称为“基于兴趣的广告”或“个性化" +"广告”。" + +#: docs/legal/privacy.md:383 +msgid "" +"**APIs/SDKs**. We may use third-party application program interfaces " +"(\"**APIs**\") and software development kits (\"**SDKs**\") as part of the " +"functionality of our Services. For more information about our use of APIs " +"and SDKs, please contact us as set forth in \"[Contact Us](#contact-us)\" " +"below." +msgstr "" +"**APIs/SDKs**。我们可能会使用第三方应用程序接口(\"**APIs**\")和软件开发工具" +"包(\"**SDKs**\")作为我们服务功能的一部分。有关我们使用APIs和SDKs的更多信" +"息,请按照下文“[联系我们](#contact-us)”中的说明与我们联系。" + +#: docs/legal/privacy.md:389 +msgid "B. **Disclosures to Protect Us or Others**" +msgstr "B. **为保护我们或他人而进行的信息披露**" + +#: docs/legal/privacy.md:391 +msgid "" +"We may access, preserve, and disclose any information we store associated " +"with you to external parties if we, in good faith, believe doing so is " +"required or appropriate to: comply with law enforcement or national security " +"requests and legal process, such as a court order or subpoena; protect your, " +"our, or others' rights, property, or safety; enforce our policies or " +"contracts; collect amounts owed to us; or assist with an investigation or " +"prosecution of suspected or actual illegal activity." +msgstr "" +"如果我们真诚地认为这样做是必要或适当的,我们可能会访问、保存和向外部方披露我" +"们存储的与您相关的任何信息,以:遵守执法或国家安全请求和法律程序,例如法院命" +"令或传票;保护您、我们或他人的权利、财产或安全;执行我们的政策或合同;收取欠" +"我们的款项;或协助调查或起诉涉嫌或实际的非法活动。" + +#: docs/legal/privacy.md:400 +msgid "" +"C. **Disclosure in the Event of Merger, Sale, or Other Asset Transfers**" +msgstr "C. **在合并、出售或其他资产转让情况下的信息披露**" + +#: docs/legal/privacy.md:403 +msgid "" +"If we are involved in a merger, acquisition, financing due diligence, " +"reorganization, bankruptcy, receivership, purchase or sale of assets, or " +"transition of service to another provider, your information may be sold or " +"transferred as part of such a transaction, as permitted by law and/or " +"contract." +msgstr "" +"如果我们涉及合并、收购、融资尽职调查、重组、破产、接管、资产购买或出售,或服" +"务转移到另一个提供商,您的信息可能会作为此类交易的一部分被出售或转让,法律和/" +"或合同允许的情况下。" + +#: docs/legal/privacy.md:409 +msgid "YOUR PRIVACY CHOICES AND RIGHTS" +msgstr "您的隐私选择和权利" + +#: docs/legal/privacy.md:411 +msgid "" +"**Your Privacy Choices**. The privacy choices you may have about your " +"personal information are determined by applicable law and are described " +"below." +msgstr "**您的隐私选择**。您对个人信息的隐私选择由适用法律决定,具体描述如下。" + +#: docs/legal/privacy.md:415 +msgid "" +"**Email Communications**. If you receive an unwanted email from us, you can " +"use the unsubscribe link found at the bottom of the email to opt out of " +"receiving future emails. Note that you will continue to receive transfer-" +"related emails regarding Services you have requested. We may also send you " +"certain non-promotional communications regarding us and our Services, and " +"you will not be able to opt out of those communications (e.g., " +"communications regarding our Services or updates to our Terms of Service or " +"this Privacy Policy)." +msgstr "" +"**电子邮件通信**。如果您收到我们发送的不需要的电子邮件,您可以使用电子邮件底" +"部的退订链接选择不再接收未来的电子邮件。请注意,您将继续收到与您请求的服务相" +"关的转账电子邮件。我们还可能向您发送有关我们和我们服务的某些非促销通信,您将" +"无法选择退出这些通信(例如,关于我们服务的通信或我们服务条款或本隐私政策的更" +"新)。" + +#: docs/legal/privacy.md:424 +msgid "" +"**Text Messages**. You may opt out of receiving text messages from us by " +"following the instructions in the text message you have received from us or " +"by otherwise contacting us." +msgstr "" +"**短信**。您可以按照从我们收到的短信中的说明选择不再接收我们的短信,或通过其" +"他方式与我们联系。" + +#: docs/legal/privacy.md:427 +msgid "" +"**Mobile Devices**. We may send you push notifications through our mobile " +"application. You may opt out from receiving these push notifications by " +"changing the settings on your mobile device. With your consent, we may also " +"collect precise location-based information via our mobile application. You " +"may opt out of this collection by changing the settings on your mobile " +"device." +msgstr "" +"**移动设备**。我们可能会通过我们的移动应用程序向您发送推送通知。您可以通过更" +"改移动设备上的设置选择不再接收这些推送通知。经您同意,我们还可能通过我们的移" +"动应用程序收集基于精确位置的信息。您可以通过更改移动设备上的设置选择不再收集" +"这些信息。" + +#: docs/legal/privacy.md:433 +msgid "" +"**\"Do Not Track**.**\"** Do Not Track (\"**DNT**\") is a privacy preference " +"that users can set in certain web browsers. Please note that we do not " +"respond to or honor DNT signals or similar mechanisms transmitted by web " +"browsers." +msgstr "" +"**“请勿追踪**。**”** 请勿追踪(\"**DNT**\")是一种用户可以在某些网络浏览器中" +"设置的隐私偏好。请注意,我们不会响应或遵守网络浏览器传输的DNT信号或类似机制。" + +#: docs/legal/privacy.md:437 +msgid "" +"**Cookies and Interest-Based Advertising**. You may stop or restrict the " +"placement of Technologies on your device or remove them by adjusting your " +"preferences as your browser or device permits. However, if you adjust your " +"preferences, our Services may not work properly. Please note that cookie-" +"based opt-outs are not effective on mobile applications. However, you may " +"opt-out of personalized advertisements on some mobile applications by " +"following the instructions for [Android](https://support.google.com/" +"googleplay/android-developer/answer/6048248?hl=en), [iOS](https://support." +"apple.com/en-us/HT202074) and [others](https://www.networkadvertising.org/" +"mobile-choice/)." +msgstr "" +"**Cookies和基于兴趣的广告**。您可以通过调整浏览器或设备允许的偏好来停止或限制" +"在您的设备上放置技术或将其移除。但是,如果您调整偏好,我们的服务可能无法正常" +"工作。请注意,基于cookie的选择退出在移动应用程序上无效。但是,您可以按照" +"[Android](https://support.google.com/googleplay/android-developer/" +"answer/6048248?hl=en)、[iOS](https://support.apple.com/en-us/HT202074)和[其" +"他](https://www.networkadvertising.org/mobile-choice/)的说明选择退出某些移动" +"应用程序上的个性化广告。" + +#: docs/legal/privacy.md:449 +msgid "" +"The online advertising industry also provides websites from which you may " +"opt out of receiving targeted ads from data partners and other advertising " +"partners that participate in self-regulatory programs. You can access these " +"and learn more about targeted advertising and consumer choice and privacy by " +"visiting the [Network Advertising Initiative](http://www.networkadvertising." +"org/managing/opt_out.asp), [the Digital Advertising Alliance](http://www." +"aboutads.info/choices/), [the European Digital Advertising Alliance](https://" +"www.youronlinechoices.eu/), and [the Digital Advertising Alliance of Canada]" +"(https://youradchoices.ca/choices/)." +msgstr "" +"在线广告行业还提供了一些网站,您可以通过这些网站选择不再接收参与自律计划的数" +"据合作伙伴和其他广告合作伙伴的定向广告。您可以访问这些网站,了解有关定向广告" +"和消费者选择及隐私的更多信息:[网络广告倡议](http://www.networkadvertising." +"org/managing/opt_out.asp)、[数字广告联盟](http://www.aboutads.info/" +"choices/)、[欧洲数字广告联盟](https://www.youronlinechoices.eu/)和[加拿大数字" +"广告联盟](https://youradchoices.ca/choices/)。" + +#: docs/legal/privacy.md:462 +msgid "" +"Please note you must separately opt out in each browser and on each device." +msgstr "请注意,您必须在每个浏览器和每个设备上分别选择退出。" + +#: docs/legal/privacy.md:465 +msgid "" +"**Your Privacy Rights**. In accordance with applicable law, you may have the " +"right to:" +msgstr "**您的隐私权利**。根据适用法律,您可能有权:" + +#: docs/legal/privacy.md:468 +msgid "" +"**Access Personal Information about you, including: (i) confirming whether " +"we are processing your personal information; (ii) obtaining access to or a " +"copy of your personal information; or (iii) receiving an electronic copy of " +"personal information that you have provided to us, or asking us to send that " +"information to another company (aka the right of data portability);**" +msgstr "" +"**访问有关您的个人信息,包括:(i) 确认我们是否正在处理您的个人信息;(ii) 获取" +"您的个人信息或其副本;或 (iii) 接收您提供给我们的个人信息的电子副本,或要求我" +"们将该信息发送给另一家公司(即数据可携权);**" + +#: docs/legal/privacy.md:473 +msgid "" +"**Request Correction** of your personal information where it is inaccurate " +"or incomplete. In some cases, we may provide self-service tools that enable " +"you to update your personal information;" +msgstr "" +"**请求更正**您的个人信息,如果它不准确或不完整。在某些情况下,我们可能会提供" +"自助工具,使您能够更新您的个人信息;" + +#: docs/legal/privacy.md:477 +msgid "Request Deletion of your personal information;" +msgstr "请求删除您的个人信息;" + +#: docs/legal/privacy.md:479 +msgid "" +"**Request Restriction of or Object** to our processing of your personal " +"information, including where the processing of your personal information is " +"based on our legitimate interest or for direct marketing purposes; and" +msgstr "" +"**请求限制或反对**我们处理您的个人信息,包括在处理您的个人信息基于我们的合法" +"利益或用于直接营销目的的情况下;以及" + +#: docs/legal/privacy.md:484 +msgid "" +"**Withdraw Your Consent to our processing of your personal information. " +"Please note that your withdrawal will only take effect for future processing " +"and will not affect the lawfulness of processing before the withdrawal.**" +msgstr "" +"**撤回您对我们处理您的个人信息的同意。请注意,您的撤回仅对未来的处理生效,不" +"会影响撤回前处理的合法性。**" + +#: docs/legal/privacy.md:488 +msgid "" +"If you would like to exercise any of these rights, please contact us as set " +"forth in \"[Contact Us](#contact-us)\" below. We will process such requests " +"in accordance with applicable laws." +msgstr "" +"如果您想行使这些权利中的任何一项,请按照下文“[联系我们](#contact-us)”中的说明" +"与我们联系。我们将根据适用法律处理此类请求。" + +#: docs/legal/privacy.md:492 +msgid "SECURITY OF YOUR INFORMATION" +msgstr "您的信息安全" + +#: docs/legal/privacy.md:494 +msgid "" +"We take steps designed to ensure that your information is treated securely " +"and in accordance with this Privacy Policy. Unfortunately, no system is 100% " +"secure, and we cannot ensure or warrant the security of any information you " +"provide to us. To the fullest extent permitted by applicable law, we do not " +"accept liability for unauthorized disclosure." +msgstr "" +"我们采取措施,确保您的信息得到安全处理,并符合本隐私政策。不幸的是,没有任何" +"系统是100%安全的,我们无法确保或保证您提供给我们的任何信息的安全性。在适用法" +"律允许的最大范围内,我们不对未经授权的披露承担责任。" + +#: docs/legal/privacy.md:500 +msgid "" +"By using our Services or providing personal information to us, you agree " +"that we may communicate with you electronically regarding security, privacy, " +"and administrative issues relating to your use of our Services. If we learn " +"of a security system's breach, we may attempt to notify you electronically " +"by posting a notice on our Services, by mail or by sending an email to you." +msgstr "" +"通过使用我们的服务或向我们提供个人信息,您同意我们可以通过电子方式与您沟通有" +"关您使用我们服务的安全、隐私和管理问题。如果我们得知安全系统被破坏,我们可能" +"会尝试通过在我们的服务上发布通知、通过邮件或向您发送电子邮件的方式通知您。" + +#: docs/legal/privacy.md:507 +msgid "INTERNATIONAL DATA TRANSFERS" +msgstr "国际数据传输" + +#: docs/legal/privacy.md:509 +msgid "" +"All information processed by us may be transferred, processed, and stored " +"anywhere in the world, including, but not limited to, the United States or " +"other countries, which may have data protection laws that are different from " +"the laws where you live. We endeavor to safeguard your information " +"consistent with the requirements of applicable laws." +msgstr "" +"我们处理的所有信息可能会在世界任何地方传输、处理和存储,包括但不限于美国或其" +"他国家,这些国家的数据保护法律可能与您所在国家的法律不同。我们努力根据适用法" +"律的要求保护您的信息。" + +#: docs/legal/privacy.md:515 +msgid "" +"If we transfer personal information which originates in the European " +"Economic Area, Switzerland, and/or the United Kingdom to a country that has " +"not been found to provide an adequate level of protection under applicable " +"data protection laws, one of the safeguards we may use to support such " +"transfer is the EU Standard Contractual Clauses." +msgstr "" +"如果我们将源自欧洲经济区、瑞士和/或英国的个人信息传输到一个未被发现提供足够保" +"护水平的国家,我们可能会使用的一种保障措施是欧盟标准合同条款。" + +#: docs/legal/privacy.md:521 +msgid "RETENTION OF PERSONAL INFORMATION" +msgstr "个人信息的保留" + +#: docs/legal/privacy.md:523 +msgid "" +"We store the personal information we collect as described in this Privacy " +"Policy for as long as you use our Services or as necessary to fulfill the " +"purpose(s) for which it was collected, provide our Services, resolve " +"disputes, establish legal defenses, conduct audits, pursue legitimate " +"business purposes, enforce our agreements, and comply with applicable laws." +msgstr "" +"我们按照本隐私政策的描述存储我们收集的个人信息,只要您使用我们的服务或为实现" +"收集目的、提供我们的服务、解决争议、建立法律辩护、进行审计、追求合法商业目" +"的、执行我们的协议和遵守适用法律所必需的时间。" + +#: docs/legal/privacy.md:530 +msgid "" +"To determine the appropriate retention period for personal information, we " +"may consider applicable legal requirements, the amount, nature, and " +"sensitivity of the personal information, certain risk factors, the purposes " +"for which we process your personal information, and whether we can achieve " +"those purposes through other means." +msgstr "" +"为了确定个人信息的适当保留期限,我们可能会考虑适用的法律要求、个人信息的数" +"量、性质和敏感性、某些风险因素、我们处理您的个人信息的目的以及我们是否可以通" +"过其他方式实现这些目的。" + +#: docs/legal/privacy.md:536 +msgid "SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS" +msgstr "加利福尼亚州居民的补充通知" + +#: docs/legal/privacy.md:538 +msgid "" +"This Supplemental Notice for California Residents only applies to our " +"processing of personal information that is subject to the California " +"Consumer Privacy Act of 2018 (\"**CCPA**\"). Mysten Labs does not believe it " +"is subject to the CCPA. That said, Mysten Labs provides this supplemental " +"notice for purposes of transparency. The CCPA provides California residents " +"with the right to know what categories of personal information Mysten Labs " +"has collected about them and whether Mysten Labs disclosed that personal " +"information for a business purpose (e.g., to a service provider) in the " +"preceding twelve months. California residents can find this information " +"below:" +msgstr "" +"本加利福尼亚州居民的补充通知仅适用于我们处理受2018年加利福尼亚州消费者隐私法" +"(\"**CCPA**\")约束的个人信息。Mysten Labs不认为其受CCPA约束。尽管如此," +"Mysten Labs为了透明性提供了本补充通知。CCPA赋予加利福尼亚州居民了解Mysten " +"Labs收集了哪些类别的个人信息以及Mysten Labs在过去十二个月中是否为商业目的(例" +"如,向服务提供商)披露了这些个人信息的权利。加利福尼亚州居民可以在下方找到这" +"些信息:" + +#: docs/legal/privacy.md:662 +msgid "" +"The categories of sources from which we collect personal information and our " +"business and commercial purposes for using personal information are set " +"forth in \"[Personal Information we Collect](#personal-information-we-" +"collect)\" and \"[How We Use of Your Information](#how-we-use-your-" +"information)\" above, respectively." +msgstr "" +"我们收集个人信息的来源类别以及我们使用个人信息的业务和商业目的分别在上文" +"的“[我们收集的个人信息](#personal-information-we-collect)”和“[我们如何使用您" +"的信息](#how-we-use-your-information)”中列出。" + +#: docs/legal/privacy.md:669 +msgid "" +"**\"Sales\" of Personal Information under the CCPA.** For purposes of the " +"CCPA, Mysten Labs does not \"sell\" personal information, nor do we have " +"actual knowledge of any \"sale\" of personal information of minors under 16 " +"years of age." +msgstr "" +"**根据CCPA的个人信息“销售”**。根据CCPA的规定,Mysten Labs不“出售”个人信息,我" +"们也没有实际知道任何16岁以下未成年人的个人信息“销售”。" + +#: docs/legal/privacy.md:674 +msgid "**Additional Privacy Rights for California Residents**" +msgstr "加利福尼亚州居民的额外隐私权利" + +#: docs/legal/privacy.md:676 +msgid "" +"**Non-Discrimination.** California residents have the right not to receive " +"discriminatory treatment by us for the exercise of their rights conferred by " +"the CCPA." +msgstr "" +"**非歧视**。加利福尼亚州居民有权不因行使CCPA赋予的权利而受到我们的歧视性待" +"遇。" + +#: docs/legal/privacy.md:680 +msgid "" +"**Authorized Agent.** Only you, or someone legally authorized to act on your " +"behalf, may make a verifiable consumer request related to your personal " +"information. To designate an authorized agent, please contact us as set " +"forth in \"[Contact Us](#contact-us)\" below and provide written " +"authorization signed by you and your designated agent." +msgstr "" +"**授权代理人**。只有您或依法授权代表您行事的人,才能提出与您的个人信息相关的" +"可验证消费者请求。要指定授权代理人,请按照下文“[联系我们](#contact-us)”中的说" +"明与我们联系,并提供由您和指定代理人签署的书面授权。" + +#: docs/legal/privacy.md:686 +msgid "" +"**Verification**. To protect your privacy, we will take the following steps " +"to verify your identity before fulfilling your request. When you make a " +"request, we will ask you to provide sufficient information that allows us to " +"reasonably verify you are the person about whom we collected personal " +"information or an authorized representative, which may include confirming " +"the email address associated with any personal information we have about " +"you. If you are a California resident and would like to exercise any of your " +"rights under the CCPA, please contact us as set forth in \"[Contact Us]" +"(#contact-us)\" below. We will process such requests in accordance with " +"applicable laws." +msgstr "" +"**验证**。为了保护您的隐私,我们将在履行您的请求之前采取以下步骤来验证您的身" +"份。当您提出请求时,我们会要求您提供足够的信息,以便我们合理地验证您是我们收" +"集个人信息的对象或授权代表,这可能包括确认与我们拥有的任何个人信息相关的电子" +"邮件地址。如果您是加利福尼亚州居民,并希望行使CCPA赋予您的任何权利,请按照下" +"文“[联系我们](#contact-us)”中的说明与我们联系。我们将根据适用法律处理此类请" +"求。" + +#: docs/legal/privacy.md:697 +msgid "" +"\\*\\*Refer-a-Friend and Similar In \"[How We Use Your Personal Information]" +"(#how-we-use-your-information) we may offer referral programs or other " +"incentivized data collection programs. For example, we may offer incentives " +"to you such as discounts or promotional items or credit in connection with " +"these programs, wherein you provide your personal information in exchange " +"for a reward, or provide personal information regarding your friends or " +"colleagues (such as their email address) and receive rewards when they sign " +"up to use our Services. (The referred party may also receive rewards for " +"signing up via your referral.) These programs are entirely voluntary and " +"allow us to grow our business and provide additional benefits to you. The " +"value of your data to us depends on how you ultimately use our Services, " +"whereas the value of the referred party's data to us depends on whether the " +"referred party ultimately becomes a user and uses our Services. Said value " +"will be reflected in the incentive offered in connection with each program." +msgstr "" +"\\*\\*推荐朋友和类似的在“[我们如何使用您的个人信息](#how-we-use-your-" +"information)”中,我们可能会提供推荐计划或其他激励性数据收集计划。例如,我们可" +"能会为您提供与这些计划相关的激励措施,如折扣或促销品或积分,您提供您的个人信" +"息以换取奖励,或提供有关您的朋友或同事的个人信息(例如他们的电子邮件地址)," +"并在他们注册使用我们的服务时获得奖励。(被推荐方也可能因通过您的推荐注册而获" +"得奖励。)这些计划完全是自愿的,允许我们发展业务并为您提供额外的好处。您的数" +"据对我们的价值取决于您最终如何使用我们的服务,而被推荐方的数据对我们的价值取" +"决于被推荐方最终是否成为用户并使用我们的服务。该价值将反映在与每个计划相关的" +"激励措施中。" + +#: docs/legal/privacy.md:714 +msgid "" +"**Accessibility**. This Privacy Policy uses industry-standard technologies " +"and was developed in line with the World Wide Web Consortium's Web Content " +"Accessibility Guidelines, version 2.1. If you wish to print this policy, " +"please do so from your web browser or by saving the page as a PDF." +msgstr "" +"**可访问性**。本隐私政策使用行业标准技术,并根据万维网联盟的Web内容可访问性指" +"南2.1版开发。如果您希望打印此政策,请通过您的网络浏览器或将页面保存为PDF进行" +"打印。" + +#: docs/legal/privacy.md:720 +msgid "" +"**California Shine the Light**. The California \"Shine the Light\" law " +"permits users who are California residents to request and obtain from us " +"once a year, free of charge, a list of the third parties to whom we have " +"disclosed their personal information (if any) for their direct marketing " +"purposes in the prior calendar year, as well as the type of personal " +"information disclosed to those parties." +msgstr "" +"**加利福尼亚州“闪耀之光”**。加利福尼亚州的“闪耀之光”法律允许加利福尼亚州居民" +"用户每年免费向我们请求并获得一份我们在前一个日历年中为其直接营销目的披露其个" +"人信息的第三方名单(如果有),以及向这些第三方披露的个人信息类型。" + +#: docs/legal/privacy.md:727 +msgid "" +"**Right for minors to remove posted content.** Where required by law, " +"California residents under the age of 18 may request to have their posted " +"content or information removed from the publicly viewable portions of the " +"Services by contacting us directly as set forth in \"[Contact Us](#contact-" +"us)\" below." +msgstr "" +"**未成年人删除已发布内容的权利**。在法律要求的情况下,18岁以下的加利福尼亚州" +"居民可以直接按照下文“[联系我们](#contact-us)”中的说明与我们联系,要求将其发布" +"的内容或信息从服务的公开可见部分删除。" + +#: docs/legal/privacy.md:733 +msgid "SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS" +msgstr "内华达州居民的补充通知" + +#: docs/legal/privacy.md:735 +msgid "" +"If you are a resident of Nevada, you have the right to opt-out of the sale " +"of certain personal information to third parties who intend to license or " +"sell that personal information. You can exercise this right by contacting us " +"as set forth in \"[Contact Us](#contact-us)\" below with the subject line " +"\"Nevada Do Not Sell Request\" and providing us with your name and the email " +"address associated with your account. Please note that we do not currently " +"sell your personal information as sales are defined in Nevada Revised " +"Statutes Chapter 603A." +msgstr "" +"如果您是内华达州的居民,您有权选择不将某些个人信息出售给打算许可或出售该个人" +"信息的第三方。您可以通过以下“[联系我们](#contact-us)”中的说明与我们联系,主题" +"行填写“内华达州不出售请求”,并提供您的姓名和与您的账户关联的电子邮件地址。请" +"注意,我们目前不会按照内华达州修订法规第603A章的定义出售您的个人信息。" + +#: docs/legal/privacy.md:745 +msgid "CHILDREN'S INFORMATION" +msgstr "儿童信息" + +#: docs/legal/privacy.md:747 +msgid "" +"The Services are not directed to children under 13 (or other age as required " +"by local law), and we do not knowingly collect personal information from " +"children. If you learn that your child has provided us with personal " +"information without your consent, you may contact us as set forth in " +"\"[Contact Us](#contact-us)\" below. If we learn that we have collected a " +"child's personal information in violation of applicable law, we will " +"promptly take steps to delete such information." +msgstr "" +"本服务不针对13岁以下的儿童(或当地法律要求的其他年龄),我们不会有意收集儿童" +"的个人信息。如果您发现您的孩子在未经您同意的情况下向我们提供了个人信息,您可" +"以按照以下“[联系我们](#contact-us)”中的说明与我们联系。如果我们发现我们收集了" +"违反适用法律的儿童个人信息,我们将立即采取措施删除这些信息。" + +#: docs/legal/privacy.md:756 +msgid "THIRD-PARTY WEBSITES/APPLICATIONS" +msgstr "第三方网站/应用程序" + +#: docs/legal/privacy.md:758 +msgid "" +"The Services may contain links to other websites/applications (such as " +"GitHub) and other websites/applications may reference or link to our " +"Services. These third-party services are not controlled by us. We encourage " +"our users to read the privacy policies of each website and application with " +"which they interact. We do not endorse, screen or approve, and are not " +"responsible for, the privacy practices or content of such other websites or " +"applications. Providing personal information to third-party websites or " +"applications is at your own risk." +msgstr "" +"本服务可能包含指向其他网站/应用程序(如GitHub)的链接,其他网站/应用程序也可" +"能引用或链接到我们的服务。这些第三方服务不受我们的控制。我们鼓励用户阅读他们" +"所使用的每个网站和应用程序的隐私政策。我们不认可、筛选或批准这些其他网站或应" +"用程序的隐私实践或内容,并且不对此负责。向第三方网站或应用程序提供个人信息的" +"风险由您自行承担。" + +#: docs/legal/privacy.md:767 +msgid "SUPERVISORY AUTHORITY" +msgstr "监督机构" + +#: docs/legal/privacy.md:769 +msgid "" +"If you are located in the European Economic Area, Switzerland, the United " +"Kingdom, or Brazil, you have the right to lodge a complaint with a " +"supervisory authority if you believe our processing of your personal " +"information violates applicable law." +msgstr "" +"如果您位于欧洲经济区、瑞士、英国或巴西,您有权向监督机构投诉,如果您认为我们" +"处理您的个人信息违反了适用法律。" + +#: docs/legal/privacy.md:774 +msgid "CONTACT US" +msgstr "联系我们" + +#: docs/legal/privacy.md:776 +msgid "" +"If you have any questions about our privacy practices or this Privacy " +"Policy, or to exercise your rights as detailed in this Privacy Policy, " +"please contact us at:" +msgstr "" +"如果您对我们的隐私实践或本隐私政策有任何疑问,或行使本隐私政策中详细说明的您" +"的权利,请通过以下方式联系我们:" + +#: docs/legal/privacy.md:780 +msgid "" +"Mysten Labs, Inc. \n" +"Attn: Privacy Group \n" +"379 University Ave, #200 \n" +"Palo Alto, CA 94301 \n" +"[privacy@mystenlabs.com](mailto:privacy@mystenlabs.com) \n" +"+1 (408) 384-8237" +msgstr "" +"Mysten Labs, Inc. \n" +"收件人:隐私组 \n" +"大学大道379号,#200 \n" +"帕洛阿尔托,加利福尼亚州 94301 \n" +"[privacy@mystenlabs.com](mailto:privacy@mystenlabs.com) \n" +"+1 (408) 384-8237"