diff --git a/docs/usage/client-cli.md b/docs/usage/client-cli.md index 90f34ed9..cd4b664e 100644 --- a/docs/usage/client-cli.md +++ b/docs/usage/client-cli.md @@ -15,17 +15,22 @@ their meaning. ## Walrus system information 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: +`walrus info` gives an overview of current system parameters such as the current epoch, the number +of storage nodes and shards in the system, the maximum blob size, and the current cost in (Testnet) +WAL for storing blobs: ```console $ walrus info Walrus system information -Current epoch: 2 + +Epochs and storage duration +Current epoch: 47 +Epoch duration: 1day +Blobs can be stored for at most 200 epochs in the future. Storage nodes -Number of nodes: 25 +Number of storage nodes: 30 Number of shards: 1000 Blob size @@ -33,7 +38,9 @@ Maximum blob size: 13.3 GiB (14,273,391,930 B) Storage unit: 1.00 MiB Approximate storage prices per epoch +(Conversion rate: 1 WAL = 1,000,000,000 FROST) Price per encoded storage unit: 100 FROST +Additional price for each write: 2,000 FROST Price to store metadata: 6,200 FROST Marginal price per additional 1 MiB (w/o metadata): 500 FROST @@ -49,8 +56,9 @@ SUI: `1 WAL = 1 000 000 000 FROST`. ``` 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`. +information on the storage nodes in the current and (if already selected) the next committee, +including their node IDs and stake and shard distribution can be viewed with the `--dev` argument: +`walrus info --dev`. ## Storing, querying status, and reading blobs @@ -74,11 +82,17 @@ page](./setup.md#testnet-wal-faucet) for further details. Storing blobs on Walrus can be achieved through the following command: ```sh -walrus store +walrus store --epochs ``` -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. +The CLI argument `--epochs ` (or `-e`) indicates the number of epochs the blob should be +stored for. There is an upper limit on the number of epochs a blob can be stored for, which is 200 +for the current Testnet deployment. + +```admonish warning +The `--epochs` argument is currently optional; if it is not specified, a warning is printed and the +default of 1 epoch is used. However, it will become a mandatory argument in the future. +``` ```admonish tip title="Automatic optimizations" When storing a blob, the client performs a number of automatic optimizations, including the @@ -137,15 +151,20 @@ walrus delete --blob-id 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. -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. +Before deleting a blob, the `walrus delete` command will ask for confirmation unless the `--yes` +(or `-y`) option is specified. + +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. -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. +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. After the deletion is +finished, the CLI checks the updated status of the blob to see if it is still accessible in Walrus +(unless the `--no-status-check` option is specified). However, even if it isn't, copies of the +public blob may be cached or downloaded by users, and these copies are not deleted. ```admonish danger title="Delete reclaims space only" **All blobs stored in Walrus are public and discoverable by all.** The `delete` command will diff --git a/docs/usage/web-api.md b/docs/usage/web-api.md index 5d005599..687b5800 100644 --- a/docs/usage/web-api.md +++ b/docs/usage/web-api.md @@ -8,27 +8,51 @@ the need to run a local client. ## Starting the daemon locally {#local-daemon} -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`): +You can run a local Walrus daemon through the `walrus` binary. There are three different commands: + +- `walrus aggregator` starts an "aggregator" that offers an HTTP interface to read blobs from + Walrus. +- `walrus publisher` starts a "publisher" that offers an HTTP interface to store blobs in Walrus. +- `walrus daemon` offers the combined functionality of an aggregator and publisher on the same + address and port. + +The aggregator does not perform any on-chain actions, and only requires specifying the address on +which it listens: ```sh -walrus daemon -b "127.0.0.1:31415" +walrus aggregator --bind-address "127.0.0.1:31415" ``` -Or you may run the aggregator and publisher processes separately on different addresses/ports: +The publisher and daemon perform on-chain actions and thus require a Sui Testnet wallet with +sufficient SUI and WAL balances. To enable handling many parallel requests without object +conflicts, they create internal sub-wallets since version 1.4.0, which are funded from the main +wallet. These sub-wallets are persisted in a directory specified with the `--sub-wallets-dir` +argument; any existing directory can be used. If it already contains sub-wallets, they will be +reused. + +By default, 8 sub-wallets are created and funded. This can be changed with the `--n-clients` +argument. For simple local testing, 1 or 2 sub-wallets are usually sufficient. + +For example, you can run a publisher with a single sub-wallet stored in the Walrus configuration +directory with the following command: ```sh -walrus aggregator -b "127.0.0.1:31415" # run an aggregator to read blobs -walrus publisher -b "127.0.0.1:31416" # run a publisher to store blobs +PUBLISHER_WALLETS_DIR=~/.config/walrus/publisher-wallets +mkdir -p "$PUBLISHER_WALLETS_DIR" +walrus publisher \ + --bind-address "127.0.0.1:31416" \ + --sub-wallets-dir "$PUBLISHER_WALLETS_DIR" \ + --n-clients 1 ``` -The aggregator provides all read APIs, the publisher all the store APIs, and the daemon provides -both. +Replace `publisher` by `daemon` to run both an aggregator and publisher on the same address and +port. ```admonish warning While the aggregator does not perform Sui on-chain actions, and therefore consumes no gas, the -publisher does perform actions on-chain and will consume gas. It is therefore important to ensure -only authorized parties may access it, or other measures to manage gas costs. +publisher does perform actions on-chain and will consume both SUI and WAL tokens. It is therefore +important to ensure only authorized parties may access it, or other measures to manage gas costs, +especially in a future Mainnet deployment. ``` ## Using a public aggregator or publisher {#public-services} @@ -109,7 +133,7 @@ PUBLISHER=https://publisher.walrus-testnet.walrus.space ```admonish tip title="API specification" Walrus aggregators and publishers expose their API specifications at the path `/v1/api`. You can -view this in the browser, e.g., at +view this in the browser, for example, at . ``` ### Store diff --git a/po/messages.pot b/po/messages.pot index d40800f5..498174de 100644 --- a/po/messages.pot +++ b/po/messages.pot @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Walrus\n" -"POT-Creation-Date: 2024-11-01T09:10:07+01:00\n" +"POT-Creation-Date: 2024-12-04T17:24:55+01:00\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -265,7 +265,7 @@ msgid "" "```" msgstr "" -#: docs/index.md:32 docs/usage/client-cli.md:59 +#: docs/index.md:32 docs/usage/client-cli.md:67 #: docs/dev-guide/dev-operations.md:17 msgid "" "```admonish danger title=\"Public access\"\n" @@ -2292,25 +2292,39 @@ msgstr "" msgid "system_object" msgstr "" -#: docs/usage/setup.md:154 docs/usage/setup.md:176 +#: docs/usage/setup.md:154 docs/usage/setup.md:191 msgid "staking_object" msgstr "" -#: docs/usage/setup.md:155 docs/usage/setup.md:177 +#: docs/usage/setup.md:155 msgid "exchange_object" msgstr "" -#: docs/usage/setup.md:159 +#: docs/usage/setup.md:163 msgid "" -"The easiest way to obtain the latest configuration is by downloading it from " -"." +"Note that configuring multiple exchange objects are only supported with the " +"CLI version 1.2.0 or higher." msgstr "" -#: docs/usage/setup.md:162 +#: docs/usage/setup.md:167 +msgid "" +"````admonish tip\n" +"The easiest way to obtain the latest configuration is by downloading it " +"from\n" +":\n" +"\n" +"```sh\n" +"curl https://docs.blob.store/client_config.yaml -o " +"~/.config/walrus/client_config.yaml\n" +"```\n" +"````" +msgstr "" + +#: docs/usage/setup.md:177 msgid "Custom path (optional)" msgstr "" -#: docs/usage/setup.md:164 +#: docs/usage/setup.md:179 msgid "" "By default, the Walrus client will look for the `client_config.yaml` (or " "`client_config.yml`) configuration file in the current directory, " @@ -2319,15 +2333,15 @@ msgid "" "you need to use the `--config` option when running the `walrus` binary." msgstr "" -#: docs/usage/setup.md:169 +#: docs/usage/setup.md:184 msgid "Advanced configuration (optional)" msgstr "" -#: docs/usage/setup.md:171 +#: docs/usage/setup.md:186 msgid "The configuration file currently supports the following parameters:" msgstr "" -#: docs/usage/setup.md:174 +#: docs/usage/setup.md:189 msgid "" "# These are the only mandatory fields. These objects are specific for a " "particular Walrus\n" @@ -2335,7 +2349,15 @@ msgid "" "system_object" msgstr "" -#: docs/usage/setup.md:179 +#: docs/usage/setup.md:193 +msgid "" +"# The exchange objects are used to swap SUI for WAL. If multiple ones are " +"defined (as below), a\n" +"# random one is chosen for the exchange.\n" +"exchange_object" +msgstr "" + +#: docs/usage/setup.md:201 msgid "" "# You can define a custom path to your Sui wallet configuration here. If " "this is unset or `null`,\n" @@ -2345,7 +2367,7 @@ msgid "" "wallet_config" msgstr "" -#: docs/usage/setup.md:184 +#: docs/usage/setup.md:206 msgid "" "# The following parameters can be used to tune the networking behavior of " "the client. There is no\n" @@ -2355,101 +2377,101 @@ msgid "" "communication_config" msgstr "" -#: docs/usage/setup.md:189 +#: docs/usage/setup.md:211 msgid "max_concurrent_writes" msgstr "" -#: docs/usage/setup.md:190 +#: docs/usage/setup.md:212 msgid "max_concurrent_sliver_reads" msgstr "" -#: docs/usage/setup.md:191 +#: docs/usage/setup.md:213 msgid "max_concurrent_metadata_reads" msgstr "" -#: docs/usage/setup.md:192 +#: docs/usage/setup.md:214 msgid "max_concurrent_status_reads" msgstr "" -#: docs/usage/setup.md:193 +#: docs/usage/setup.md:215 msgid "max_data_in_flight" msgstr "" -#: docs/usage/setup.md:194 +#: docs/usage/setup.md:216 msgid "reqwest_config" msgstr "" -#: docs/usage/setup.md:195 +#: docs/usage/setup.md:217 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 +#: docs/usage/setup.md:218 docs/usage/setup.md:222 docs/usage/setup.md:225 +#: docs/usage/setup.md:232 docs/usage/setup.md:235 docs/usage/setup.md:242 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 +#: docs/usage/setup.md:219 docs/usage/setup.md:223 docs/usage/setup.md:226 +#: docs/usage/setup.md:233 docs/usage/setup.md:236 docs/usage/setup.md:243 msgid "nanos" msgstr "" -#: docs/usage/setup.md:198 +#: docs/usage/setup.md:220 msgid "pool_idle_timeout" msgstr "" -#: docs/usage/setup.md:199 +#: docs/usage/setup.md:221 msgid "http2_keep_alive_timeout" msgstr "" -#: docs/usage/setup.md:202 +#: docs/usage/setup.md:224 msgid "http2_keep_alive_interval" msgstr "" -#: docs/usage/setup.md:205 +#: docs/usage/setup.md:227 msgid "http2_keep_alive_while_idle" msgstr "" -#: docs/usage/setup.md:206 +#: docs/usage/setup.md:228 msgid "request_rate_config" msgstr "" -#: docs/usage/setup.md:207 +#: docs/usage/setup.md:229 msgid "max_node_connections" msgstr "" -#: docs/usage/setup.md:208 +#: docs/usage/setup.md:230 msgid "max_retries" msgstr "" -#: docs/usage/setup.md:209 +#: docs/usage/setup.md:231 msgid "min_backoff" msgstr "" -#: docs/usage/setup.md:212 +#: docs/usage/setup.md:234 msgid "max_backoff" msgstr "" -#: docs/usage/setup.md:215 +#: docs/usage/setup.md:237 msgid "disable_proxy" msgstr "" -#: docs/usage/setup.md:216 +#: docs/usage/setup.md:238 msgid "disable_native_certs" msgstr "" -#: docs/usage/setup.md:217 +#: docs/usage/setup.md:239 msgid "sliver_write_extra_time" msgstr "" -#: docs/usage/setup.md:218 +#: docs/usage/setup.md:240 msgid "factor" msgstr "" -#: docs/usage/setup.md:219 +#: docs/usage/setup.md:241 msgid "base" msgstr "" -#: docs/usage/setup.md:224 +#: docs/usage/setup.md:246 msgid "" "```admonish warning title=\"Important\"\n" "If you specify a wallet path, make sure your wallet is set up for Sui " @@ -2457,24 +2479,24 @@ msgid "" "```" msgstr "" -#: docs/usage/setup.md:228 +#: docs/usage/setup.md:250 msgid "Testnet WAL faucet" msgstr "" -#: docs/usage/setup.md:230 +#: docs/usage/setup.md:252 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 +#: docs/usage/setup.md:260 msgid "" "You can check that you have received Testnet WAL by checking the Sui " "balances:" msgstr "" -#: docs/usage/setup.md:254 +#: docs/usage/setup.md:276 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), " @@ -2536,12 +2558,13 @@ 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:" +"command. For example, `walrus info` gives an overview of current system " +"parameters such as the current epoch, 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 +#: docs/usage/client-cli.md:55 msgid "" "```admonish tip title=\"FROST and WAL\"\n" "FROST is the smaller unit of WAL, similar to MIST for SUI. The conversion is " @@ -2550,18 +2573,20 @@ msgid "" "```" msgstr "" -#: docs/usage/client-cli.md:53 +#: docs/usage/client-cli.md:60 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`." +"information, and information on the storage nodes in the current and (if " +"already selected) the next committee, including their node IDs and stake and " +"shard distribution can be viewed with the `--dev` argument: `walrus info " +"--dev`." msgstr "" -#: docs/usage/client-cli.md:57 +#: docs/usage/client-cli.md:65 msgid "Storing, querying status, and reading blobs" msgstr "" -#: docs/usage/client-cli.md:71 +#: docs/usage/client-cli.md:79 msgid "" "```admonish tip title=\"Obtaining Testnet WAL\"\n" "You can exchange Testnet SUI for Testnet WAL by running `walrus get-wal`. " @@ -2570,18 +2595,19 @@ msgid "" "```" msgstr "" -#: docs/usage/client-cli.md:76 +#: docs/usage/client-cli.md:84 msgid "Storing blobs on Walrus can be achieved through the following command:" msgstr "" -#: docs/usage/client-cli.md:82 +#: docs/usage/client-cli.md:90 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." +"The CLI argument `--epochs ` (or `-e`) indicates the number of " +"epochs the blob should be stored for. There is an upper limit on the number " +"of epochs a blob can be stored for, which is 200 for the current Testnet " +"deployment." msgstr "" -#: docs/usage/client-cli.md:85 +#: docs/usage/client-cli.md:99 msgid "" "```admonish tip title=\"Automatic optimizations\"\n" "When storing a blob, the client performs a number of automatic " @@ -2606,19 +2632,19 @@ msgid "" "```" msgstr "" -#: docs/usage/client-cli.md:100 +#: docs/usage/client-cli.md:114 msgid "" "The status of a blob can be queried through one of the following commands:" msgstr "" -#: docs/usage/client-cli.md:107 +#: docs/usage/client-cli.md:121 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 +#: docs/usage/client-cli.md:125 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 " @@ -2626,11 +2652,11 @@ msgid "" "this event certifies the availability of the blob." msgstr "" -#: docs/usage/client-cli.md:115 +#: docs/usage/client-cli.md:129 msgid "Reading blobs from Walrus can be achieved through the following command:" msgstr "" -#: docs/usage/client-cli.md:121 +#: docs/usage/client-cli.md:135 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 " @@ -2638,11 +2664,11 @@ msgid "" "instead of the one set in the wallet configuration or the default one." msgstr "" -#: docs/usage/client-cli.md:125 +#: docs/usage/client-cli.md:139 msgid "Reclaiming space via deletable blobs" msgstr "" -#: docs/usage/client-cli.md:127 +#: docs/usage/client-cli.md:141 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 " @@ -2653,36 +2679,45 @@ msgid "" "relied upon for availability by others." msgstr "" -#: docs/usage/client-cli.md:133 +#: docs/usage/client-cli.md:147 msgid "A deletable blob may be deleted with the command:" msgstr "" -#: docs/usage/client-cli.md:139 +#: docs/usage/client-cli.md:153 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 +#: docs/usage/client-cli.md:156 +msgid "" +"Before deleting a blob, the `walrus delete` command will ask for " +"confirmation unless the `--yes` (or `-y`) option is specified." +msgstr "" + +#: docs/usage/client-cli.md:159 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 +#: docs/usage/client-cli.md:163 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 " +"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." +"download it. After the deletion is finished, the CLI checks the updated " +"status of the blob to see if it is still accessible in Walrus (unless the " +"`--no-status-check` option is specified). However, even if it isn't, 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 +#: docs/usage/client-cli.md:171 msgid "" "```admonish danger title=\"Delete reclaims space only\"\n" "**All blobs stored in Walrus are public and discoverable by all.** The " @@ -2695,11 +2730,11 @@ msgid "" "```" msgstr "" -#: docs/usage/client-cli.md:159 +#: docs/usage/client-cli.md:178 msgid "Blob ID utilities" msgstr "" -#: docs/usage/client-cli.md:161 +#: docs/usage/client-cli.md:180 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 " @@ -2709,7 +2744,7 @@ msgid "" "safe encoding used by the command line tools and other APIs." msgstr "" -#: docs/usage/client-cli.md:167 +#: docs/usage/client-cli.md:186 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 " @@ -2717,17 +2752,17 @@ msgid "" "also lists expired blob objects." msgstr "" -#: docs/usage/client-cli.md:171 +#: docs/usage/client-cli.md:190 msgid "Changing the default configuration" msgstr "" -#: docs/usage/client-cli.md:173 +#: docs/usage/client-cli.md:192 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 +#: docs/usage/client-cli.md:195 msgid "" "The `--wallet ` argument may be used to specify a non-standard Sui " "wallet configuration file. And a `--gas-budget ` argument may be " @@ -2817,40 +2852,85 @@ 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`):" +"You can run a local Walrus daemon through the `walrus` binary. There are " +"three different commands:" +msgstr "" + +#: docs/usage/web-api.md:15 +msgid "" +"`walrus aggregator` starts an \"aggregator\" that offers an HTTP interface " +"to read blobs from Walrus." msgstr "" #: docs/usage/web-api.md:17 +msgid "" +"`walrus publisher` starts a \"publisher\" that offers an HTTP interface to " +"store blobs in Walrus." +msgstr "" + +#: docs/usage/web-api.md:18 +msgid "" +"`walrus daemon` offers the combined functionality of an aggregator and " +"publisher on the same address and port." +msgstr "" + +#: docs/usage/web-api.md:21 +msgid "" +"The aggregator does not perform any on-chain actions, and only requires " +"specifying the address on which it listens:" +msgstr "" + +#: docs/usage/web-api.md:25 msgid "\"127.0.0.1:31415\"" msgstr "" -#: docs/usage/web-api.md:20 +#: docs/usage/web-api.md:28 +msgid "" +"The publisher and daemon perform on-chain actions and thus require a Sui " +"Testnet wallet with sufficient SUI and WAL balances. To enable handling many " +"parallel requests without object conflicts, they create internal sub-wallets " +"since version 1.4.0, which are funded from the main wallet. These " +"sub-wallets are persisted in a directory specified with the " +"`--sub-wallets-dir` argument; any existing directory can be used. If it " +"already contains sub-wallets, they will be reused." +msgstr "" + +#: docs/usage/web-api.md:35 msgid "" -"Or you may run the aggregator and publisher processes separately on " -"different addresses/ports:" +"By default, 8 sub-wallets are created and funded. This can be changed with " +"the `--n-clients` argument. For simple local testing, 1 or 2 sub-wallets are " +"usually sufficient." msgstr "" -#: docs/usage/web-api.md:23 -msgid "\"127.0.0.1:31415\" # run an aggregator to read blobs\n" +#: docs/usage/web-api.md:38 +msgid "" +"For example, you can run a publisher with a single sub-wallet stored in the " +"Walrus configuration directory with the following command:" +msgstr "" + +#: docs/usage/web-api.md:42 +msgid "~/.config/walrus/publisher-wallets" msgstr "" -#: docs/usage/web-api.md:24 -msgid "\"127.0.0.1:31416\" # run a publisher to store blobs\n" +#: docs/usage/web-api.md:43 docs/usage/web-api.md:46 +msgid "\"$PUBLISHER_WALLETS_DIR\"" msgstr "" -#: docs/usage/web-api.md:27 +#: docs/usage/web-api.md:45 +msgid "\"127.0.0.1:31416\"" +msgstr "" + +#: docs/usage/web-api.md:50 msgid "" -"The aggregator provides all read APIs, the publisher all the store APIs, and " -"the daemon provides both." +"Replace `publisher` by `daemon` to run both an aggregator and publisher on " +"the same address and port." msgstr "" -#: docs/usage/web-api.md:36 +#: docs/usage/web-api.md:60 msgid "Using a public aggregator or publisher" msgstr "" -#: docs/usage/web-api.md:38 +#: docs/usage/web-api.md:62 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 " @@ -2859,14 +2939,14 @@ msgid "" "below." msgstr "" -#: docs/usage/web-api.md:42 +#: docs/usage/web-api.md:66 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 +#: docs/usage/web-api.md:69 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 " @@ -2874,400 +2954,400 @@ msgid "" "authentication and compensation for the funds used." msgstr "" -#: docs/usage/web-api.md:49 +#: docs/usage/web-api.md:73 msgid "Public aggregators" msgstr "" -#: docs/usage/web-api.md:51 +#: docs/usage/web-api.md:75 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 +#: docs/usage/web-api.md:78 msgid "`https://aggregator.walrus-testnet.walrus.space`" msgstr "" -#: docs/usage/web-api.md:55 +#: docs/usage/web-api.md:79 msgid "`https://wal-aggregator-testnet.staketab.org`" msgstr "" -#: docs/usage/web-api.md:56 +#: docs/usage/web-api.md:80 msgid "`https://walrus-testnet-aggregator.bartestnet.com`" msgstr "" -#: docs/usage/web-api.md:57 +#: docs/usage/web-api.md:81 msgid "`https://walrus-testnet.blockscope.net`" msgstr "" -#: docs/usage/web-api.md:58 +#: docs/usage/web-api.md:82 msgid "`https://walrus-testnet-aggregator.nodes.guru`" msgstr "" -#: docs/usage/web-api.md:59 +#: docs/usage/web-api.md:83 msgid "`https://walrus-cache-testnet.overclock.run`" msgstr "" -#: docs/usage/web-api.md:60 +#: docs/usage/web-api.md:84 msgid "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" msgstr "" -#: docs/usage/web-api.md:61 +#: docs/usage/web-api.md:85 msgid "`https://walrus-testnet-aggregator.stakin-nodes.com`" msgstr "" -#: docs/usage/web-api.md:62 +#: docs/usage/web-api.md:86 msgid "`https://testnet-aggregator-walrus.kiliglab.io`" msgstr "" -#: docs/usage/web-api.md:63 +#: docs/usage/web-api.md:87 msgid "`https://walrus-cache-testnet.latitude-sui.com`" msgstr "" -#: docs/usage/web-api.md:64 +#: docs/usage/web-api.md:88 msgid "`https://walrus-testnet-aggregator.nodeinfra.com`" msgstr "" -#: docs/usage/web-api.md:65 +#: docs/usage/web-api.md:89 msgid "`https://walrus-tn.juicystake.io:9443`" msgstr "" -#: docs/usage/web-api.md:66 +#: docs/usage/web-api.md:90 msgid "`https://walrus-agg-testnet.chainode.tech:9002`" msgstr "" -#: docs/usage/web-api.md:67 +#: docs/usage/web-api.md:91 msgid "`https://walrus-testnet-aggregator.starduststaking.com:11444`" msgstr "" -#: docs/usage/web-api.md:68 +#: docs/usage/web-api.md:92 msgid "`http://walrus-testnet-aggregator.everstake.one:9000`" msgstr "" -#: docs/usage/web-api.md:69 +#: docs/usage/web-api.md:93 msgid "`http://walrus.testnet.pops.one:9000`" msgstr "" -#: docs/usage/web-api.md:70 +#: docs/usage/web-api.md:94 msgid "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" msgstr "" -#: docs/usage/web-api.md:71 +#: docs/usage/web-api.md:95 msgid "`http://aggregator.testnet.sui.rpcpool.com:9000`" msgstr "" -#: docs/usage/web-api.md:72 +#: docs/usage/web-api.md:96 msgid "`http://walrus.krates.ai:9000`" msgstr "" -#: docs/usage/web-api.md:73 +#: docs/usage/web-api.md:97 msgid "`http://walrus-testnet.stakingdefenseleague.com:9000`" msgstr "" -#: docs/usage/web-api.md:74 +#: docs/usage/web-api.md:98 msgid "`http://walrus.sui.thepassivetrust.com:9000`" msgstr "" -#: docs/usage/web-api.md:75 +#: docs/usage/web-api.md:99 msgid "`http://walrus.globalstake.io:9000`" msgstr "" -#: docs/usage/web-api.md:77 +#: docs/usage/web-api.md:101 msgid "Public publishers" msgstr "" -#: docs/usage/web-api.md:79 +#: docs/usage/web-api.md:103 msgid "`https://publisher.walrus-testnet.walrus.space`" msgstr "" -#: docs/usage/web-api.md:80 +#: docs/usage/web-api.md:104 msgid "`https://wal-publisher-testnet.staketab.org`" msgstr "" -#: docs/usage/web-api.md:81 +#: docs/usage/web-api.md:105 msgid "`https://walrus-testnet-publisher.bartestnet.com`" msgstr "" -#: docs/usage/web-api.md:82 +#: docs/usage/web-api.md:106 msgid "`https://walrus-testnet-publisher.nodes.guru`" msgstr "" -#: docs/usage/web-api.md:83 +#: docs/usage/web-api.md:107 msgid "`https://sui-walrus-testnet.bwarelabs.com/publisher`" msgstr "" -#: docs/usage/web-api.md:84 +#: docs/usage/web-api.md:108 msgid "`https://walrus-testnet-publisher.stakin-nodes.com`" msgstr "" -#: docs/usage/web-api.md:85 +#: docs/usage/web-api.md:109 msgid "`https://testnet-publisher-walrus.kiliglab.io`" msgstr "" -#: docs/usage/web-api.md:86 +#: docs/usage/web-api.md:110 msgid "`https://walrus-testnet-publisher.nodeinfra.com`" msgstr "" -#: docs/usage/web-api.md:87 +#: docs/usage/web-api.md:111 msgid "`https://walrus-testnet.blockscope.net:11444`" msgstr "" -#: docs/usage/web-api.md:88 +#: docs/usage/web-api.md:112 msgid "`https://walrus-publish-testnet.chainode.tech:9003`" msgstr "" -#: docs/usage/web-api.md:89 +#: docs/usage/web-api.md:113 msgid "`https://walrus-testnet-publisher.starduststaking.com:11445`" msgstr "" -#: docs/usage/web-api.md:90 +#: docs/usage/web-api.md:114 msgid "`http://walrus-publisher-testnet.overclock.run:9001`" msgstr "" -#: docs/usage/web-api.md:91 +#: docs/usage/web-api.md:115 msgid "`http://walrus-testnet-publisher.everstake.one:9001`" msgstr "" -#: docs/usage/web-api.md:92 +#: docs/usage/web-api.md:116 msgid "`http://walrus.testnet.pops.one:9001`" msgstr "" -#: docs/usage/web-api.md:93 +#: docs/usage/web-api.md:117 msgid "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" msgstr "" -#: docs/usage/web-api.md:94 +#: docs/usage/web-api.md:118 msgid "`http://publisher.testnet.sui.rpcpool.com:9001`" msgstr "" -#: docs/usage/web-api.md:95 +#: docs/usage/web-api.md:119 msgid "`http://walrus.krates.ai:9001`" msgstr "" -#: docs/usage/web-api.md:96 +#: docs/usage/web-api.md:120 msgid "`http://walrus-publisher-testnet.latitude-sui.com:9001`" msgstr "" -#: docs/usage/web-api.md:97 +#: docs/usage/web-api.md:121 msgid "`http://walrus-tn.juicystake.io:9090`" msgstr "" -#: docs/usage/web-api.md:98 +#: docs/usage/web-api.md:122 msgid "`http://walrus-testnet.stakingdefenseleague.com:9001`" msgstr "" -#: docs/usage/web-api.md:99 +#: docs/usage/web-api.md:123 msgid "`http://walrus.sui.thepassivetrust.com:9001`" msgstr "" -#: docs/usage/web-api.md:100 +#: docs/usage/web-api.md:124 msgid "`http://walrus.globalstake.io:9001`" msgstr "" -#: docs/usage/web-api.md:102 +#: docs/usage/web-api.md:126 msgid "HTTP API Usage" msgstr "" -#: docs/usage/web-api.md:104 +#: docs/usage/web-api.md:128 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:108 +#: docs/usage/web-api.md:132 msgid "https://aggregator.walrus-testnet.walrus.space" msgstr "" -#: docs/usage/web-api.md:109 +#: docs/usage/web-api.md:133 msgid "https://publisher.walrus-testnet.walrus.space" msgstr "" -#: docs/usage/web-api.md:112 +#: docs/usage/web-api.md:136 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" +"view this in the browser, for example, at " +".\n" "```" msgstr "" -#: docs/usage/web-api.md:117 docs/dev-guide/dev-operations.md:13 +#: docs/usage/web-api.md:141 docs/dev-guide/dev-operations.md:13 msgid "Store" msgstr "" -#: docs/usage/web-api.md:119 +#: docs/usage/web-api.md:143 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:123 docs/usage/web-api.md:132 -#: docs/usage/web-api.md:161 +#: docs/usage/web-api.md:147 docs/usage/web-api.md:156 +#: docs/usage/web-api.md:185 msgid "\"$PUBLISHER/v1/store\"" msgstr "" -#: docs/usage/web-api.md:123 +#: docs/usage/web-api.md:147 msgid "\"some string\" # store the string `some string` for 1 storage epoch\n" msgstr "" -#: docs/usage/web-api.md:124 +#: docs/usage/web-api.md:148 msgid "\"$PUBLISHER/v1/store?epochs=5\"" msgstr "" -#: docs/usage/web-api.md:124 +#: docs/usage/web-api.md:148 msgid "\"some/file\" # store file `some/file` for 5 storage epochs\n" msgstr "" -#: docs/usage/web-api.md:127 +#: docs/usage/web-api.md:151 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:132 docs/usage/web-api.md:161 +#: docs/usage/web-api.md:156 docs/usage/web-api.md:185 msgid "\"some other string\"" msgstr "" -#: docs/usage/web-api.md:134 +#: docs/usage/web-api.md:158 msgid "\"newlyCreated\"" msgstr "" -#: docs/usage/web-api.md:135 +#: docs/usage/web-api.md:159 msgid "\"blobObject\"" msgstr "" -#: docs/usage/web-api.md:136 docs/usage/web-api.md:143 +#: docs/usage/web-api.md:160 docs/usage/web-api.md:167 msgid "\"id\"" msgstr "" -#: docs/usage/web-api.md:136 +#: docs/usage/web-api.md:160 msgid "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" msgstr "" -#: docs/usage/web-api.md:137 +#: docs/usage/web-api.md:161 msgid "\"storedEpoch\"" msgstr "" -#: docs/usage/web-api.md:138 docs/usage/web-api.md:164 +#: docs/usage/web-api.md:162 docs/usage/web-api.md:188 msgid "\"blobId\"" msgstr "" -#: docs/usage/web-api.md:138 docs/usage/web-api.md:164 +#: docs/usage/web-api.md:162 docs/usage/web-api.md:188 msgid "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" msgstr "" -#: docs/usage/web-api.md:139 +#: docs/usage/web-api.md:163 msgid "\"size\"" msgstr "" -#: docs/usage/web-api.md:140 +#: docs/usage/web-api.md:164 msgid "\"erasureCodeType\"" msgstr "" -#: docs/usage/web-api.md:140 +#: docs/usage/web-api.md:164 msgid "\"RedStuff\"" msgstr "" -#: docs/usage/web-api.md:141 +#: docs/usage/web-api.md:165 msgid "\"certifiedEpoch\"" msgstr "" -#: docs/usage/web-api.md:142 +#: docs/usage/web-api.md:166 msgid "\"storage\"" msgstr "" -#: docs/usage/web-api.md:143 +#: docs/usage/web-api.md:167 msgid "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" msgstr "" -#: docs/usage/web-api.md:144 +#: docs/usage/web-api.md:168 msgid "\"startEpoch\"" msgstr "" -#: docs/usage/web-api.md:145 docs/usage/web-api.md:169 +#: docs/usage/web-api.md:169 docs/usage/web-api.md:193 msgid "\"endEpoch\"" msgstr "" -#: docs/usage/web-api.md:146 +#: docs/usage/web-api.md:170 msgid "\"storageSize\"" msgstr "" -#: docs/usage/web-api.md:149 +#: docs/usage/web-api.md:173 msgid "\"encodedSize\"" msgstr "" -#: docs/usage/web-api.md:150 +#: docs/usage/web-api.md:174 msgid "\"cost\"" msgstr "" -#: docs/usage/web-api.md:155 +#: docs/usage/web-api.md:179 msgid "" "The information returned is the content of the [Sui blob " "object](../dev-guide/sui-struct.md)." msgstr "" -#: docs/usage/web-api.md:157 +#: docs/usage/web-api.md:181 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:163 +#: docs/usage/web-api.md:187 msgid "\"alreadyCertified\"" msgstr "" -#: docs/usage/web-api.md:165 +#: docs/usage/web-api.md:189 msgid "\"event\"" msgstr "" -#: docs/usage/web-api.md:166 +#: docs/usage/web-api.md:190 msgid "\"txDigest\"" msgstr "" -#: docs/usage/web-api.md:166 +#: docs/usage/web-api.md:190 msgid "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" msgstr "" -#: docs/usage/web-api.md:167 +#: docs/usage/web-api.md:191 msgid "\"eventSeq\"" msgstr "" -#: docs/usage/web-api.md:167 +#: docs/usage/web-api.md:191 msgid "\"0\"" msgstr "" -#: docs/usage/web-api.md:174 +#: docs/usage/web-api.md:198 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:177 docs/dev-guide/dev-operations.md:48 +#: docs/usage/web-api.md:201 docs/dev-guide/dev-operations.md:48 msgid "Read" msgstr "" -#: docs/usage/web-api.md:179 +#: docs/usage/web-api.md:203 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:183 docs/usage/web-api.md:189 +#: docs/usage/web-api.md:207 docs/usage/web-api.md:213 msgid "\"$AGGREGATOR/v1/\"" msgstr "" -#: docs/usage/web-api.md:186 +#: docs/usage/web-api.md:210 msgid "" "Alternatively you may print the contents of a blob in the terminal with the " "cURL command:" msgstr "" -#: docs/usage/web-api.md:192 +#: docs/usage/web-api.md:216 msgid "" "```admonish tip title=\"Content sniffing\"\n" "Modern browsers will attempt to sniff the content type for such resources, " @@ -3614,7 +3694,7 @@ msgid "" "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" +"will need to be rewritten.\n" "```" msgstr "" @@ -3749,8 +3829,8 @@ msgstr "" msgid "" "The `BlobCertified` event with `deletable` set to false and an `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." +"light client proof that 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 @@ -5571,7 +5651,7 @@ 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 " +"and browse Walrus Sites. As mentioned in the " "[overview](./overview.md#the-site-rendering-path), we foresee three kinds of " "portals:" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index fa73bd16..b118fd0a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Walrus\n" -"POT-Creation-Date: 2024-11-01T09:10:07+01:00\n" +"POT-Creation-Date: 2024-12-04T17:24:55+01:00\n" "PO-Revision-Date: 2024-10-29 20:05+0800\n" "Last-Translator: lispking \n" "Language-Team: Chinese (simplified) \n" @@ -213,21 +213,10 @@ msgid "Terms of service" msgstr "服务条款" #: docs/SUMMARY.md:70 -msgid "Glossary" -msgstr "术语表" - -#: docs/SUMMARY.md:70 -msgid "Devnet terms of service" -msgstr "开发网络服务条款" - -#: docs/SUMMARY.md:70 -msgid "Testnet terms of service" +#, fuzzy +msgid "Glossary Testnet terms of service Privacy policy" msgstr "测试网络服务条款" -#: docs/SUMMARY.md:70 -msgid "Privacy policy" -msgstr "隐私政策" - #: docs/index.md:5 msgid "" "Welcome to the developer documentation for Walrus, a decentralized storage " @@ -296,7 +285,7 @@ msgstr "" "另请参阅[测试网服务条款](../legal/testnet_tos.md),了解此测试网的使用条款。\n" "```" -#: docs/index.md:32 docs/usage/client-cli.md:59 +#: docs/index.md:32 docs/usage/client-cli.md:67 #: docs/dev-guide/dev-operations.md:17 msgid "" "```admonish danger title=\"Public access\"\n" @@ -1276,9 +1265,8 @@ msgid "" "Devnet will be wiped soon (as described below), so it is recommended to " "migrate as soon as possible." msgstr "" -"立即迁移以利用这些新功能!基于" -"Walrus Devnet的旧Walrus站点仍将在短时间内可用。然而,Devnet将很快被清除(如下" -"所述),因此建议尽快迁移。" +"立即迁移以利用这些新功能!基于Walrus Devnet的旧Walrus站点仍将在短时间内可用。" +"然而,Devnet将很快被清除(如下所述),因此建议尽快迁移。" #: docs/blog/04_testnet_update.md:108 msgid "Discontinuation of Walrus Devnet" @@ -2885,28 +2873,42 @@ msgstr "当前的 Testnet 部署使用以下对象:" msgid "system_object" msgstr "system_object" -#: docs/usage/setup.md:154 docs/usage/setup.md:176 +#: docs/usage/setup.md:154 docs/usage/setup.md:191 msgid "staking_object" msgstr "staking_object" -#: docs/usage/setup.md:155 docs/usage/setup.md:177 +#: docs/usage/setup.md:155 msgid "exchange_object" msgstr "exchange_object" -#: docs/usage/setup.md:159 +#: docs/usage/setup.md:163 +msgid "" +"Note that configuring multiple exchange objects are only supported with the " +"CLI version 1.2.0 or higher." +msgstr "" + +#: docs/usage/setup.md:167 +#, fuzzy msgid "" -"The easiest way to obtain the latest configuration is by downloading it from " -"." +"````admonish tip\n" +"The easiest way to obtain the latest configuration is by downloading it " +"from\n" +":\n" +"\n" +"```sh\n" +"curl https://docs.blob.store/client_config.yaml -o ~/.config/walrus/" +"client_config.yaml\n" +"```\n" +"````" msgstr "" "获取最新配置的最简单方法是从 下载。" -#: docs/usage/setup.md:162 +#: docs/usage/setup.md:177 msgid "Custom path (optional)" msgstr "自定义路径(可选)" -#: docs/usage/setup.md:164 +#: docs/usage/setup.md:179 msgid "" "By default, the Walrus client will look for the `client_config.yaml` (or " "`client_config.yml`) configuration file in the current directory, " @@ -2920,15 +2922,15 @@ msgstr "" "喜欢的名称;在这种情况下,您需要在运行 `walrus` 二进制文件时使用 `--config` " "选项。" -#: docs/usage/setup.md:169 +#: docs/usage/setup.md:184 msgid "Advanced configuration (optional)" msgstr "高级配置(可选)" -#: docs/usage/setup.md:171 +#: docs/usage/setup.md:186 msgid "The configuration file currently supports the following parameters:" msgstr "配置文件当前支持以下参数:" -#: docs/usage/setup.md:174 +#: docs/usage/setup.md:189 msgid "" "# These are the only mandatory fields. These objects are specific for a " "particular Walrus\n" @@ -2939,7 +2941,15 @@ msgstr "" "# 部署,但不会随时间变化。\n" "system_object" -#: docs/usage/setup.md:179 +#: docs/usage/setup.md:193 +msgid "" +"# The exchange objects are used to swap SUI for WAL. If multiple ones are " +"defined (as below), a\n" +"# random one is chosen for the exchange.\n" +"exchange_object" +msgstr "" + +#: docs/usage/setup.md:201 msgid "" "# You can define a custom path to your Sui wallet configuration here. If " "this is unset or `null`,\n" @@ -2953,7 +2963,7 @@ msgstr "" "# 系统范围的钱包 `~/.sui/sui_config/client.yaml` 中配置,按此顺序。\n" "wallet_config" -#: docs/usage/setup.md:184 +#: docs/usage/setup.md:206 msgid "" "# The following parameters can be used to tune the networking behavior of " "the client. There is no\n" @@ -2967,101 +2977,101 @@ msgstr "" "# blob,因为超时或其他网络错误。\n" "communication_config" -#: docs/usage/setup.md:189 +#: docs/usage/setup.md:211 msgid "max_concurrent_writes" msgstr "max_concurrent_writes" -#: docs/usage/setup.md:190 +#: docs/usage/setup.md:212 msgid "max_concurrent_sliver_reads" msgstr "max_concurrent_sliver_reads" -#: docs/usage/setup.md:191 +#: docs/usage/setup.md:213 msgid "max_concurrent_metadata_reads" msgstr "max_concurrent_metadata_reads" -#: docs/usage/setup.md:192 +#: docs/usage/setup.md:214 msgid "max_concurrent_status_reads" msgstr "max_concurrent_status_reads" -#: docs/usage/setup.md:193 +#: docs/usage/setup.md:215 msgid "max_data_in_flight" msgstr "max_data_in_flight" -#: docs/usage/setup.md:194 +#: docs/usage/setup.md:216 msgid "reqwest_config" msgstr "reqwest_config" -#: docs/usage/setup.md:195 +#: docs/usage/setup.md:217 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 +#: docs/usage/setup.md:218 docs/usage/setup.md:222 docs/usage/setup.md:225 +#: docs/usage/setup.md:232 docs/usage/setup.md:235 docs/usage/setup.md:242 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 +#: docs/usage/setup.md:219 docs/usage/setup.md:223 docs/usage/setup.md:226 +#: docs/usage/setup.md:233 docs/usage/setup.md:236 docs/usage/setup.md:243 msgid "nanos" msgstr "nanos" -#: docs/usage/setup.md:198 +#: docs/usage/setup.md:220 msgid "pool_idle_timeout" msgstr "pool_idle_timeout" -#: docs/usage/setup.md:199 +#: docs/usage/setup.md:221 msgid "http2_keep_alive_timeout" msgstr "http2_keep_alive_timeout" -#: docs/usage/setup.md:202 +#: docs/usage/setup.md:224 msgid "http2_keep_alive_interval" msgstr "http2_keep_alive_interval" -#: docs/usage/setup.md:205 +#: docs/usage/setup.md:227 msgid "http2_keep_alive_while_idle" msgstr "http2_keep_alive_while_idle" -#: docs/usage/setup.md:206 +#: docs/usage/setup.md:228 msgid "request_rate_config" msgstr "request_rate_config" -#: docs/usage/setup.md:207 +#: docs/usage/setup.md:229 msgid "max_node_connections" msgstr "max_node_connections" -#: docs/usage/setup.md:208 +#: docs/usage/setup.md:230 msgid "max_retries" msgstr "max_retries" -#: docs/usage/setup.md:209 +#: docs/usage/setup.md:231 msgid "min_backoff" msgstr "min_backoff" -#: docs/usage/setup.md:212 +#: docs/usage/setup.md:234 msgid "max_backoff" msgstr "max_backoff" -#: docs/usage/setup.md:215 +#: docs/usage/setup.md:237 msgid "disable_proxy" msgstr "disable_proxy" -#: docs/usage/setup.md:216 +#: docs/usage/setup.md:238 msgid "disable_native_certs" msgstr "disable_native_certs" -#: docs/usage/setup.md:217 +#: docs/usage/setup.md:239 msgid "sliver_write_extra_time" msgstr "sliver_write_extra_time" -#: docs/usage/setup.md:218 +#: docs/usage/setup.md:240 msgid "factor" msgstr "factor" -#: docs/usage/setup.md:219 +#: docs/usage/setup.md:241 msgid "base" msgstr "base" -#: docs/usage/setup.md:224 +#: docs/usage/setup.md:246 msgid "" "```admonish warning title=\"Important\"\n" "If you specify a wallet path, make sure your wallet is set up for Sui " @@ -3072,11 +3082,11 @@ msgstr "" "如果您指定了钱包路径,请确保您的钱包已设置为 Sui **Testnet**。\n" "```" -#: docs/usage/setup.md:228 +#: docs/usage/setup.md:250 msgid "Testnet WAL faucet" msgstr "Testnet WAL 水龙头" -#: docs/usage/setup.md:230 +#: docs/usage/setup.md:252 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 " @@ -3086,13 +3096,13 @@ msgstr "" "值,可以通过以下命令以 1:1 的比例兑换一些 Testnet SUI 代币,这些代币也没有价" "值:" -#: docs/usage/setup.md:238 +#: docs/usage/setup.md:260 msgid "" "You can check that you have received Testnet WAL by checking the Sui " "balances:" msgstr "您可以通过检查 Sui 余额来确认您是否已收到 Testnet WAL:" -#: docs/usage/setup.md:254 +#: docs/usage/setup.md:276 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), " @@ -3159,17 +3169,19 @@ msgid "Walrus system information" msgstr "Walrus 系统信息" #: docs/usage/client-cli.md:19 +#, fuzzy 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:" +"command. For example, `walrus info` gives an overview of current system " +"parameters such as the current epoch, 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 +#: docs/usage/client-cli.md:55 msgid "" "```admonish tip title=\"FROST and WAL\"\n" "FROST is the smaller unit of WAL, similar to MIST for SUI. The conversion is " @@ -3182,20 +3194,23 @@ msgstr "" "000 000 000 FROST`。\n" "```" -#: docs/usage/client-cli.md:53 +#: docs/usage/client-cli.md:60 +#, fuzzy 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`." +"information, and information on the storage nodes in the current and (if " +"already selected) the next committee, including their node IDs and stake and " +"shard distribution can be viewed with the `--dev` argument: `walrus info --" +"dev`." msgstr "" "其他信息,如编码参数和大小、BFT 系统信息以及存储节点及其分片分布的信息,可以" "使用 `--dev` 参数查看:`walrus info --dev`。" -#: docs/usage/client-cli.md:57 +#: docs/usage/client-cli.md:65 msgid "Storing, querying status, and reading blobs" msgstr "存储、查询状态和读取 blob" -#: docs/usage/client-cli.md:71 +#: docs/usage/client-cli.md:79 msgid "" "```admonish tip title=\"Obtaining Testnet WAL\"\n" "You can exchange Testnet SUI for Testnet WAL by running `walrus get-wal`. " @@ -3208,20 +3223,22 @@ msgstr "" "息,请参阅 [设置页面](./setup.md#testnet-wal-faucet)。\n" "```" -#: docs/usage/client-cli.md:76 +#: docs/usage/client-cli.md:84 msgid "Storing blobs on Walrus can be achieved through the following command:" msgstr "可以通过以下命令在 Walrus 上存储 blob:" -#: docs/usage/client-cli.md:82 +#: docs/usage/client-cli.md:90 +#, fuzzy 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." +"The CLI argument `--epochs ` (or `-e`) indicates the number of " +"epochs the blob should be stored for. There is an upper limit on the number " +"of epochs a blob can be stored for, which is 200 for the current Testnet " +"deployment." msgstr "" "store 命令接受一个 CLI 参数 `--epochs `(或 `-e`),指示 blob 应存储" "的 epoch 数量。默认值为 1 个 epoch,即当前 epoch。" -#: docs/usage/client-cli.md:85 +#: docs/usage/client-cli.md:99 msgid "" "```admonish tip title=\"Automatic optimizations\"\n" "When storing a blob, the client performs a number of automatic " @@ -3257,12 +3274,12 @@ msgstr "" "epoch,则命令会跳过向存储节点发送数据,只收集可用性证书。\n" "```" -#: docs/usage/client-cli.md:100 +#: docs/usage/client-cli.md:114 msgid "" "The status of a blob can be queried through one of the following commands:" msgstr "可以通过以下命令之一查询 blob 的状态:" -#: docs/usage/client-cli.md:107 +#: docs/usage/client-cli.md:121 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 " @@ -3271,7 +3288,7 @@ msgstr "" "这将返回 blob 是否已存储及其可用期。如果使用 `--file` 选项指定文件,CLI 将重" "新编码文件内容并在检查状态之前派生 blob ID。" -#: docs/usage/client-cli.md:111 +#: docs/usage/client-cli.md:125 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 " @@ -3282,12 +3299,12 @@ msgstr "" "ID 由交易 ID 和交易发出的事件中的序列号组成。此事件的存在证明了 blob 的可用" "性。" -#: docs/usage/client-cli.md:115 +#: docs/usage/client-cli.md:129 msgid "" "Reading blobs from Walrus can be achieved through the following command:" msgstr "可以通过以下命令从 Walrus 读取 blob:" -#: docs/usage/client-cli.md:121 +#: docs/usage/client-cli.md:135 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 " @@ -3298,11 +3315,11 @@ msgstr "" "指定输出文件名。可以使用 `--rpc-url `(或 `-r`)指定要使用的 Sui RPC 节" "点,而不是钱包配置中设置的节点或默认节点。" -#: docs/usage/client-cli.md:125 +#: docs/usage/client-cli.md:139 msgid "Reclaiming space via deletable blobs" msgstr "通过可删除的 blob 回收空间" -#: docs/usage/client-cli.md:127 +#: docs/usage/client-cli.md:141 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 " @@ -3318,11 +3335,11 @@ msgstr "" "者删除。可删除的 blob 在证明它们的 Sui 事件中被如此标示,不应依赖其他人来保证" "其可用性。" -#: docs/usage/client-cli.md:133 +#: docs/usage/client-cli.md:147 msgid "A deletable blob may be deleted with the command:" msgstr "可以使用以下命令删除可删除的 blob:" -#: docs/usage/client-cli.md:139 +#: docs/usage/client-cli.md:153 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 " @@ -3331,7 +3348,13 @@ msgstr "" "可以选择通过指定 `--file ` 选项来调用 delete 命令,从文件中派生 blob " "ID,或 `--object-id ` 删除指定的 Sui blob 对象中的 blob。" -#: docs/usage/client-cli.md:142 +#: docs/usage/client-cli.md:156 +msgid "" +"Before deleting a blob, the `walrus delete` command will ask for " +"confirmation unless the `--yes` (or `-y`) option is specified." +msgstr "" + +#: docs/usage/client-cli.md:159 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 " @@ -3340,22 +3363,26 @@ msgstr "" "`delete` 命令回收与已删除 blob 关联的存储对象,该对象被重新用于存储新 blob。" "删除操作在管理存储成本和重新使用存储方面提供了灵活性。" -#: docs/usage/client-cli.md:146 +#: docs/usage/client-cli.md:163 +#, fuzzy 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 " +"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." +"download it. After the deletion is finished, the CLI checks the updated " +"status of the blob to see if it is still accessible in Walrus (unless the `--" +"no-status-check` option is specified). However, even if it isn't, 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 +#: docs/usage/client-cli.md:171 msgid "" "```admonish danger title=\"Delete reclaims space only\"\n" "**All blobs stored in Walrus are public and discoverable by all.** The " @@ -3374,11 +3401,11 @@ msgstr "" "blob 被删除之前可能制作的副本。\n" "```" -#: docs/usage/client-cli.md:159 +#: docs/usage/client-cli.md:178 msgid "Blob ID utilities" msgstr "Blob ID 工具" -#: docs/usage/client-cli.md:161 +#: docs/usage/client-cli.md:180 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 " @@ -3393,7 +3420,7 @@ msgstr "" "` 可用于将其转换为命令行工具和其他 API 使用的 base64 URL 安" "全编码。" -#: docs/usage/client-cli.md:167 +#: docs/usage/client-cli.md:186 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 " @@ -3404,11 +3431,11 @@ msgstr "" "们的 blob ID、对象 ID 以及有关到期和可删除状态的元数据。选项 `--include-" "expired` 还会列出已过期的 blob 对象。" -#: docs/usage/client-cli.md:171 +#: docs/usage/client-cli.md:190 msgid "Changing the default configuration" msgstr "更改默认配置" -#: docs/usage/client-cli.md:173 +#: docs/usage/client-cli.md:192 msgid "" "Use the `--config` option to specify a custom path to the [configuration " "location](../usage/setup.md#configuration)." @@ -3416,7 +3443,7 @@ msgstr "" "使用 `--config` 选项指定 [配置位置](../usage/setup.md#configuration) 的自定义" "路径。" -#: docs/usage/client-cli.md:176 +#: docs/usage/client-cli.md:195 msgid "" "The `--wallet ` argument may be used to specify a non-standard Sui " "wallet configuration file. And a `--gas-budget ` argument may be " @@ -3535,42 +3562,92 @@ 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`):" +"You can run a local Walrus daemon through the `walrus` binary. There are " +"three different commands:" +msgstr "" + +#: docs/usage/web-api.md:15 +msgid "" +"`walrus aggregator` starts an \"aggregator\" that offers an HTTP interface " +"to read blobs from Walrus." +msgstr "" + +#: docs/usage/web-api.md:17 +msgid "" +"`walrus publisher` starts a \"publisher\" that offers an HTTP interface to " +"store blobs in Walrus." +msgstr "" + +#: docs/usage/web-api.md:18 +#, fuzzy +msgid "" +"`walrus daemon` offers the combined functionality of an aggregator and " +"publisher on the same address and port." msgstr "" "您可以使用以下命令运行守护进程,在同一地址 (`127.0.0.1`) 和端口 (`31415`) 上" "同时提供聚合器和发布器:" -#: docs/usage/web-api.md:17 +#: docs/usage/web-api.md:21 +msgid "" +"The aggregator does not perform any on-chain actions, and only requires " +"specifying the address on which it listens:" +msgstr "" + +#: docs/usage/web-api.md:25 msgid "\"127.0.0.1:31415\"" msgstr "\"127.0.0.1:31415\"" -#: docs/usage/web-api.md:20 +#: docs/usage/web-api.md:28 msgid "" -"Or you may run the aggregator and publisher processes separately on " -"different addresses/ports:" -msgstr "或者,您可以在不同的地址/端口上分别运行聚合器和发布器进程:" +"The publisher and daemon perform on-chain actions and thus require a Sui " +"Testnet wallet with sufficient SUI and WAL balances. To enable handling many " +"parallel requests without object conflicts, they create internal sub-wallets " +"since version 1.4.0, which are funded from the main wallet. These sub-" +"wallets are persisted in a directory specified with the `--sub-wallets-dir` " +"argument; any existing directory can be used. If it already contains sub-" +"wallets, they will be reused." +msgstr "" + +#: docs/usage/web-api.md:35 +msgid "" +"By default, 8 sub-wallets are created and funded. This can be changed with " +"the `--n-clients` argument. For simple local testing, 1 or 2 sub-wallets are " +"usually sufficient." +msgstr "" + +#: docs/usage/web-api.md:38 +msgid "" +"For example, you can run a publisher with a single sub-wallet stored in the " +"Walrus configuration directory with the following command:" +msgstr "" + +#: docs/usage/web-api.md:42 +msgid "~/.config/walrus/publisher-wallets" +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:43 docs/usage/web-api.md:46 +msgid "\"$PUBLISHER_WALLETS_DIR\"" +msgstr "" -#: 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:45 +#, fuzzy +msgid "\"127.0.0.1:31416\"" +msgstr "\"127.0.0.1:31415\"" -#: docs/usage/web-api.md:27 +#: docs/usage/web-api.md:50 +#, fuzzy msgid "" -"The aggregator provides all read APIs, the publisher all the store APIs, and " -"the daemon provides both." -msgstr "聚合器提供所有读取 API,发布器提供所有存储 API,守护进程提供两者。" +"Replace `publisher` by `daemon` to run both an aggregator and publisher on " +"the same address and port." +msgstr "" +"您可以使用以下命令运行守护进程,在同一地址 (`127.0.0.1`) 和端口 (`31415`) 上" +"同时提供聚合器和发布器:" -#: docs/usage/web-api.md:36 +#: docs/usage/web-api.md:60 msgid "Using a public aggregator or publisher" msgstr "使用公共聚合器或发布器" -#: docs/usage/web-api.md:38 +#: docs/usage/web-api.md:62 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 " @@ -3582,7 +3659,7 @@ msgstr "" "合器和/或发布器。几家公司运行此类聚合器和发布器,请参阅下面的公共 [聚合器]" "(#public-aggregators) 和 [发布器](#public-publishers) 列表。" -#: docs/usage/web-api.md:42 +#: docs/usage/web-api.md:66 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 " @@ -3591,7 +3668,7 @@ msgstr "" "公共发布器默认将请求限制为 10 MiB。如果您想上传更大的文件,您需要 [运行自己的" "发布器](#local-daemon) 或使用 [CLI](./client-cli.md)。" -#: docs/usage/web-api.md:45 +#: docs/usage/web-api.md:69 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 " @@ -3601,202 +3678,202 @@ msgstr "" "另外,请注意,发布器在服务端消耗 (Testnet) SUI 和 WAL,主网部署可能无法在不要" "求某些身份验证和补偿所用资金的情况下提供不受控制的公共发布访问。" -#: docs/usage/web-api.md:49 +#: docs/usage/web-api.md:73 msgid "Public aggregators" msgstr "公共聚合器" -#: docs/usage/web-api.md:51 +#: docs/usage/web-api.md:75 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 +#: docs/usage/web-api.md:78 msgid "`https://aggregator.walrus-testnet.walrus.space`" msgstr "`https://aggregator.walrus-testnet.walrus.space`" -#: docs/usage/web-api.md:55 +#: docs/usage/web-api.md:79 msgid "`https://wal-aggregator-testnet.staketab.org`" msgstr "`https://wal-aggregator-testnet.staketab.org`" -#: docs/usage/web-api.md:56 +#: docs/usage/web-api.md:80 msgid "`https://walrus-testnet-aggregator.bartestnet.com`" msgstr "`https://walrus-testnet-aggregator.bartestnet.com`" -#: docs/usage/web-api.md:57 +#: docs/usage/web-api.md:81 msgid "`https://walrus-testnet.blockscope.net`" msgstr "`https://walrus-testnet.blockscope.net`" -#: docs/usage/web-api.md:58 +#: docs/usage/web-api.md:82 msgid "`https://walrus-testnet-aggregator.nodes.guru`" msgstr "`https://walrus-testnet-aggregator.nodes.guru`" -#: docs/usage/web-api.md:59 +#: docs/usage/web-api.md:83 msgid "`https://walrus-cache-testnet.overclock.run`" msgstr "`https://walrus-cache-testnet.overclock.run`" -#: docs/usage/web-api.md:60 +#: docs/usage/web-api.md:84 msgid "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" msgstr "`https://sui-walrus-testnet.bwarelabs.com/aggregator`" -#: docs/usage/web-api.md:61 +#: docs/usage/web-api.md:85 msgid "`https://walrus-testnet-aggregator.stakin-nodes.com`" msgstr "`https://walrus-testnet-aggregator.stakin-nodes.com`" -#: docs/usage/web-api.md:62 +#: docs/usage/web-api.md:86 msgid "`https://testnet-aggregator-walrus.kiliglab.io`" msgstr "`https://testnet-aggregator-walrus.kiliglab.io`" -#: docs/usage/web-api.md:63 +#: docs/usage/web-api.md:87 msgid "`https://walrus-cache-testnet.latitude-sui.com`" msgstr "`https://walrus-cache-testnet.latitude-sui.com`" -#: docs/usage/web-api.md:64 +#: docs/usage/web-api.md:88 msgid "`https://walrus-testnet-aggregator.nodeinfra.com`" msgstr "`https://walrus-testnet-aggregator.nodeinfra.com`" -#: docs/usage/web-api.md:65 +#: docs/usage/web-api.md:89 msgid "`https://walrus-tn.juicystake.io:9443`" msgstr "`https://walrus-tn.juicystake.io:9443`" -#: docs/usage/web-api.md:66 +#: docs/usage/web-api.md:90 msgid "`https://walrus-agg-testnet.chainode.tech:9002`" msgstr "`https://walrus-agg-testnet.chainode.tech:9002`" -#: docs/usage/web-api.md:67 +#: docs/usage/web-api.md:91 msgid "`https://walrus-testnet-aggregator.starduststaking.com:11444`" msgstr "`https://walrus-testnet-aggregator.starduststaking.com:11444`" -#: docs/usage/web-api.md:68 +#: docs/usage/web-api.md:92 msgid "`http://walrus-testnet-aggregator.everstake.one:9000`" msgstr "`http://walrus-testnet-aggregator.everstake.one:9000`" -#: docs/usage/web-api.md:69 +#: docs/usage/web-api.md:93 msgid "`http://walrus.testnet.pops.one:9000`" msgstr "`http://walrus.testnet.pops.one:9000`" -#: docs/usage/web-api.md:70 +#: docs/usage/web-api.md:94 msgid "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" msgstr "`http://scarlet-brussels-376c2.walrus.bdnodes.net:9000`" -#: docs/usage/web-api.md:71 +#: docs/usage/web-api.md:95 msgid "`http://aggregator.testnet.sui.rpcpool.com:9000`" msgstr "`http://aggregator.testnet.sui.rpcpool.com:9000`" -#: docs/usage/web-api.md:72 +#: docs/usage/web-api.md:96 msgid "`http://walrus.krates.ai:9000`" msgstr "`http://walrus.krates.ai:9000`" -#: docs/usage/web-api.md:73 +#: docs/usage/web-api.md:97 msgid "`http://walrus-testnet.stakingdefenseleague.com:9000`" msgstr "`http://walrus-testnet.stakingdefenseleague.com:9000`" -#: docs/usage/web-api.md:74 +#: docs/usage/web-api.md:98 msgid "`http://walrus.sui.thepassivetrust.com:9000`" msgstr "`http://walrus.sui.thepassivetrust.com:9000`" -#: docs/usage/web-api.md:75 +#: docs/usage/web-api.md:99 msgid "`http://walrus.globalstake.io:9000`" msgstr "`http://walrus.globalstake.io:9000`" -#: docs/usage/web-api.md:77 +#: docs/usage/web-api.md:101 msgid "Public publishers" msgstr "公共发布器" -#: docs/usage/web-api.md:79 +#: docs/usage/web-api.md:103 msgid "`https://publisher.walrus-testnet.walrus.space`" msgstr "`https://publisher.walrus-testnet.walrus.space`" -#: docs/usage/web-api.md:80 +#: docs/usage/web-api.md:104 msgid "`https://wal-publisher-testnet.staketab.org`" msgstr "`https://wal-publisher-testnet.staketab.org`" -#: docs/usage/web-api.md:81 +#: docs/usage/web-api.md:105 msgid "`https://walrus-testnet-publisher.bartestnet.com`" msgstr "`https://walrus-testnet-publisher.bartestnet.com`" -#: docs/usage/web-api.md:82 +#: docs/usage/web-api.md:106 msgid "`https://walrus-testnet-publisher.nodes.guru`" msgstr "`https://walrus-testnet-publisher.nodes.guru`" -#: docs/usage/web-api.md:83 +#: docs/usage/web-api.md:107 msgid "`https://sui-walrus-testnet.bwarelabs.com/publisher`" msgstr "`https://sui-walrus-testnet.bwarelabs.com/publisher`" -#: docs/usage/web-api.md:84 +#: docs/usage/web-api.md:108 msgid "`https://walrus-testnet-publisher.stakin-nodes.com`" msgstr "`https://walrus-testnet-publisher.stakin-nodes.com`" -#: docs/usage/web-api.md:85 +#: docs/usage/web-api.md:109 msgid "`https://testnet-publisher-walrus.kiliglab.io`" msgstr "`https://testnet-publisher-walrus.kiliglab.io`" -#: docs/usage/web-api.md:86 +#: docs/usage/web-api.md:110 msgid "`https://walrus-testnet-publisher.nodeinfra.com`" msgstr "`https://walrus-testnet-publisher.nodeinfra.com`" -#: docs/usage/web-api.md:87 +#: docs/usage/web-api.md:111 msgid "`https://walrus-testnet.blockscope.net:11444`" msgstr "`https://walrus-testnet.blockscope.net:11444`" -#: docs/usage/web-api.md:88 +#: docs/usage/web-api.md:112 msgid "`https://walrus-publish-testnet.chainode.tech:9003`" msgstr "`https://walrus-publish-testnet.chainode.tech:9003`" -#: docs/usage/web-api.md:89 +#: docs/usage/web-api.md:113 msgid "`https://walrus-testnet-publisher.starduststaking.com:11445`" msgstr "`https://walrus-testnet-publisher.starduststaking.com:11445`" -#: docs/usage/web-api.md:90 +#: docs/usage/web-api.md:114 msgid "`http://walrus-publisher-testnet.overclock.run:9001`" msgstr "`http://walrus-publisher-testnet.overclock.run:9001`" -#: docs/usage/web-api.md:91 +#: docs/usage/web-api.md:115 msgid "`http://walrus-testnet-publisher.everstake.one:9001`" msgstr "`http://walrus-testnet-publisher.everstake.one:9001`" -#: docs/usage/web-api.md:92 +#: docs/usage/web-api.md:116 msgid "`http://walrus.testnet.pops.one:9001`" msgstr "`http://walrus.testnet.pops.one:9001`" -#: docs/usage/web-api.md:93 +#: docs/usage/web-api.md:117 msgid "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" msgstr "`http://ivory-dakar-e5812.walrus.bdnodes.net:9001`" -#: docs/usage/web-api.md:94 +#: docs/usage/web-api.md:118 msgid "`http://publisher.testnet.sui.rpcpool.com:9001`" msgstr "`http://publisher.testnet.sui.rpcpool.com:9001`" -#: docs/usage/web-api.md:95 +#: docs/usage/web-api.md:119 msgid "`http://walrus.krates.ai:9001`" msgstr "`http://walrus.krates.ai:9001`" -#: docs/usage/web-api.md:96 +#: docs/usage/web-api.md:120 msgid "`http://walrus-publisher-testnet.latitude-sui.com:9001`" msgstr "`http://walrus-publisher-testnet.latitude-sui.com:9001`" -#: docs/usage/web-api.md:97 +#: docs/usage/web-api.md:121 msgid "`http://walrus-tn.juicystake.io:9090`" msgstr "`http://walrus-tn.juicystake.io:9090`" -#: docs/usage/web-api.md:98 +#: docs/usage/web-api.md:122 msgid "`http://walrus-testnet.stakingdefenseleague.com:9001`" msgstr "`http://walrus-testnet.stakingdefenseleague.com:9001`" -#: docs/usage/web-api.md:99 +#: docs/usage/web-api.md:123 msgid "`http://walrus.sui.thepassivetrust.com:9001`" msgstr "`http://walrus.sui.thepassivetrust.com:9001`" -#: docs/usage/web-api.md:100 +#: docs/usage/web-api.md:124 msgid "`http://walrus.globalstake.io:9001`" msgstr "`http://walrus.globalstake.io:9001`" -#: docs/usage/web-api.md:102 +#: docs/usage/web-api.md:126 msgid "HTTP API Usage" msgstr "HTTP API 使用" -#: docs/usage/web-api.md:104 +#: docs/usage/web-api.md:128 msgid "" "For the following examples, we assume you set the `AGGREGATOR` and " "`PUBLISHER` environment variables to your desired aggregator and publisher, " @@ -3805,21 +3882,22 @@ msgstr "" "对于以下示例,我们假设您将 `AGGREGATOR` 和 `PUBLISHER` 环境变量设置为您所需的" "聚合器和发布器。例如:" -#: docs/usage/web-api.md:108 +#: docs/usage/web-api.md:132 msgid "https://aggregator.walrus-testnet.walrus.space" msgstr "https://aggregator.walrus-testnet.walrus.space" -#: docs/usage/web-api.md:109 +#: docs/usage/web-api.md:133 msgid "https://publisher.walrus-testnet.walrus.space" msgstr "https://publisher.walrus-testnet.walrus.space" -#: docs/usage/web-api.md:112 +#: docs/usage/web-api.md:136 +#, fuzzy 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" +"view this in the browser, for example, at .\n" "```" msgstr "" "```admonish tip title=\"API 规范\"\n" @@ -3827,11 +3905,11 @@ msgstr "" "例如,\n" "```" -#: docs/usage/web-api.md:117 docs/dev-guide/dev-operations.md:13 +#: docs/usage/web-api.md:141 docs/dev-guide/dev-operations.md:13 msgid "Store" msgstr "存储" -#: docs/usage/web-api.md:119 +#: docs/usage/web-api.md:143 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 " @@ -3840,24 +3918,24 @@ msgstr "" "您可以通过简单的 HTTP PUT 请求与守护进程交互。例如,使用 [cURL](https://curl." "se),您可以使用发布器或守护进程存储 blob,如下所示:" -#: docs/usage/web-api.md:123 docs/usage/web-api.md:132 -#: docs/usage/web-api.md:161 +#: docs/usage/web-api.md:147 docs/usage/web-api.md:156 +#: docs/usage/web-api.md:185 msgid "\"$PUBLISHER/v1/store\"" msgstr "\"$PUBLISHER/v1/store\"" -#: docs/usage/web-api.md:123 +#: docs/usage/web-api.md:147 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:124 +#: docs/usage/web-api.md:148 msgid "\"$PUBLISHER/v1/store?epochs=5\"" msgstr "\"$PUBLISHER/v1/store?epochs=5\"" -#: docs/usage/web-api.md:124 +#: docs/usage/web-api.md:148 msgid "\"some/file\" # store file `some/file` for 5 storage epochs\n" msgstr "\"some/file\" # 将文件 `some/file` 存储 5 个存储周期\n" -#: docs/usage/web-api.md:127 +#: docs/usage/web-api.md:151 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` " @@ -3866,89 +3944,89 @@ msgstr "" "存储 HTTP API 端点以 JSON 格式返回有关存储的 blob 的信息。当首次存储 blob " "时,`newlyCreated` 字段包含有关新 blob 的信息:" -#: docs/usage/web-api.md:132 docs/usage/web-api.md:161 +#: docs/usage/web-api.md:156 docs/usage/web-api.md:185 msgid "\"some other string\"" msgstr "\"some other string\"" -#: docs/usage/web-api.md:134 +#: docs/usage/web-api.md:158 msgid "\"newlyCreated\"" msgstr "\"newlyCreated\"" -#: docs/usage/web-api.md:135 +#: docs/usage/web-api.md:159 msgid "\"blobObject\"" msgstr "\"blobObject\"" -#: docs/usage/web-api.md:136 docs/usage/web-api.md:143 +#: docs/usage/web-api.md:160 docs/usage/web-api.md:167 msgid "\"id\"" msgstr "\"id\"" -#: docs/usage/web-api.md:136 +#: docs/usage/web-api.md:160 msgid "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" msgstr "\"0xd765d11848cbac5b1f6eec2fbeb343d4558cbe8a484a00587f9ef5385d64d235\"" -#: docs/usage/web-api.md:137 +#: docs/usage/web-api.md:161 msgid "\"storedEpoch\"" msgstr "\"storedEpoch\"" -#: docs/usage/web-api.md:138 docs/usage/web-api.md:164 +#: docs/usage/web-api.md:162 docs/usage/web-api.md:188 msgid "\"blobId\"" msgstr "\"blobId\"" -#: docs/usage/web-api.md:138 docs/usage/web-api.md:164 +#: docs/usage/web-api.md:162 docs/usage/web-api.md:188 msgid "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" msgstr "\"Cmh2LQEGJwBYfmIC8duzK8FUE2UipCCrshAYjiUheZM\"" -#: docs/usage/web-api.md:139 +#: docs/usage/web-api.md:163 msgid "\"size\"" msgstr "\"size\"" -#: docs/usage/web-api.md:140 +#: docs/usage/web-api.md:164 msgid "\"erasureCodeType\"" msgstr "\"erasureCodeType\"" -#: docs/usage/web-api.md:140 +#: docs/usage/web-api.md:164 msgid "\"RedStuff\"" msgstr "\"RedStuff\"" -#: docs/usage/web-api.md:141 +#: docs/usage/web-api.md:165 msgid "\"certifiedEpoch\"" msgstr "\"certifiedEpoch\"" -#: docs/usage/web-api.md:142 +#: docs/usage/web-api.md:166 msgid "\"storage\"" msgstr "\"storage\"" -#: docs/usage/web-api.md:143 +#: docs/usage/web-api.md:167 msgid "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" msgstr "\"0x28cc75b33e31b3e672646eacf1a7c7a2e5d638644651beddf7ed4c7e21e9cb8e\"" -#: docs/usage/web-api.md:144 +#: docs/usage/web-api.md:168 msgid "\"startEpoch\"" msgstr "\"startEpoch\"" -#: docs/usage/web-api.md:145 docs/usage/web-api.md:169 +#: docs/usage/web-api.md:169 docs/usage/web-api.md:193 msgid "\"endEpoch\"" msgstr "\"endEpoch\"" -#: docs/usage/web-api.md:146 +#: docs/usage/web-api.md:170 msgid "\"storageSize\"" msgstr "\"storageSize\"" -#: docs/usage/web-api.md:149 +#: docs/usage/web-api.md:173 msgid "\"encodedSize\"" msgstr "\"encodedSize\"" -#: docs/usage/web-api.md:150 +#: docs/usage/web-api.md:174 msgid "\"cost\"" msgstr "\"cost\"" -#: docs/usage/web-api.md:155 +#: docs/usage/web-api.md:179 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:157 +#: docs/usage/web-api.md:181 msgid "" "When the aggregator finds a certified blob with the same blob ID and a " "sufficient validity period, it returns a `alreadyCertified` JSON structure:" @@ -3956,31 +4034,31 @@ msgstr "" "当聚合器找到具有相同 blob ID 和足够有效期的已认证 blob 时,它会返回一个 " "`alreadyCertified` JSON 结构:" -#: docs/usage/web-api.md:163 +#: docs/usage/web-api.md:187 msgid "\"alreadyCertified\"" msgstr "\"alreadyCertified\"" -#: docs/usage/web-api.md:165 +#: docs/usage/web-api.md:189 msgid "\"event\"" msgstr "\"event\"" -#: docs/usage/web-api.md:166 +#: docs/usage/web-api.md:190 msgid "\"txDigest\"" msgstr "\"txDigest\"" -#: docs/usage/web-api.md:166 +#: docs/usage/web-api.md:190 msgid "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" msgstr "\"CLE41JTPR2CgZRC1gyKK6P3xpQRHCetQMsmtEgqGjwst\"" -#: docs/usage/web-api.md:167 +#: docs/usage/web-api.md:191 msgid "\"eventSeq\"" msgstr "\"eventSeq\"" -#: docs/usage/web-api.md:167 +#: docs/usage/web-api.md:191 msgid "\"0\"" msgstr "\"0\"" -#: docs/usage/web-api.md:174 +#: docs/usage/web-api.md:198 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 " @@ -3989,11 +4067,11 @@ msgstr "" "字段 `event` 返回 [Sui 事件 ID](../dev-guide/sui-struct.md),可用于查找在 " "Sui explorer 上创建 Sui Blob 对象的交易或使用 Sui SDK。" -#: docs/usage/web-api.md:177 docs/dev-guide/dev-operations.md:48 +#: docs/usage/web-api.md:201 docs/dev-guide/dev-operations.md:48 msgid "Read" msgstr "读取" -#: docs/usage/web-api.md:179 +#: docs/usage/web-api.md:203 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:" @@ -4001,17 +4079,17 @@ msgstr "" "可以使用 HTTP GET 从聚合器或守护进程读取 blob。例如,以下 cURL 命令读取一个 " "blob 并将其写入输出文件:" -#: docs/usage/web-api.md:183 docs/usage/web-api.md:189 +#: docs/usage/web-api.md:207 docs/usage/web-api.md:213 msgid "\"$AGGREGATOR/v1/\"" msgstr "\"$AGGREGATOR/v1/\"" -#: docs/usage/web-api.md:186 +#: docs/usage/web-api.md:210 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:192 +#: docs/usage/web-api.md:216 msgid "" "```admonish tip title=\"Content sniffing\"\n" "Modern browsers will attempt to sniff the content type for such resources, " @@ -4430,12 +4508,13 @@ msgstr "" "Walrus 对象。" #: docs/dev-guide/sui-struct.md:20 +#, fuzzy 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" +"will need to be rewritten.\n" "```" msgstr "" "```admonish danger title=\"注意\"\n" @@ -4586,8 +4665,8 @@ msgstr "" msgid "" "The `BlobCertified` event with `deletable` set to false and an `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." +"light client proof that 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 发出,构成该 " @@ -6751,9 +6830,10 @@ msgstr "" "置和使用说明,请参阅 [教程](./tutorial.md)。" #: docs/walrus-sites/portal.md:5 +#, fuzzy 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-" +"and browse Walrus Sites. As mentioned in the [overview](./overview.md#the-" "site-rendering-path), we foresee three kinds of portals:" msgstr "" "我们使用术语 \"门户\" 来表示用于访问和浏览 Walrus 站点的任何技术。如 [概述]" @@ -9793,3 +9873,28 @@ msgstr "" "帕洛阿尔托,加利福尼亚州 94301 \n" "[privacy@mystenlabs.com](mailto:privacy@mystenlabs.com) \n" "+1 (408) 384-8237" + +#~ msgid "Glossary" +#~ msgstr "术语表" + +#~ msgid "Devnet terms of service" +#~ msgstr "开发网络服务条款" + +#~ msgid "Privacy policy" +#~ msgstr "隐私政策" + +#~ msgid "" +#~ "Or you may run the aggregator and publisher processes separately on " +#~ "different addresses/ports:" +#~ msgstr "或者,您可以在不同的地址/端口上分别运行聚合器和发布器进程:" + +#~ msgid "\"127.0.0.1:31415\" # run an aggregator to read blobs\n" +#~ msgstr "\"127.0.0.1:31415\" # 运行聚合器以读取 blob\n" + +#~ msgid "\"127.0.0.1:31416\" # run a publisher to store blobs\n" +#~ msgstr "\"127.0.0.1:31416\" # 运行发布器以存储 blob\n" + +#~ msgid "" +#~ "The aggregator provides all read APIs, the publisher all the store APIs, " +#~ "and the daemon provides both." +#~ msgstr "聚合器提供所有读取 API,发布器提供所有存储 API,守护进程提供两者。"