You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: allow upload/retrieve of assets of arbitrary size from asset canister (#1482)
Per the [design doc](https://github.com/dfinity/sdk/blob/master/docs/design/asset-canister.adoc):
1. Adds asset canister methods:
- create_batch()
- create_chunk()
- commit_batch()
- get()
- get_chunk()
2. Reworks the asset installer in `dfx` to use these methods. It can therefore upload assets that exceed the message ingress size. Separate work (which this PR enables) will have to update `agent-js` to download these large assets.
Other than allowing the storage and retrieval of large assets, this PR does not address:
- multiple content types and content encodings: in this PR `dfx` always uploads with `content-type: application/octet-stream` and `content-encoding: identity`
- smart/correct synchronization: in this PR `dfx` always uploads all assets (even those that have not changed), and still does not delete assets that were previously uploaded but no longer exist.
- All assets and chunks are uploaded in series. See #1491 and dfinity/agent-rs#125
- The `store()`, `retrieve()`, and `list()` method signatures are unchanged for the time being, for backward compatibility. Later work will remove the `retrieve()` method, change the semantics and parameters of `store()`, and change the parameters and return type of `list()`.
```
Uploading assets to asset canister...
large-asset.bin 1/7 (1900000 bytes)
large-asset.bin 2/7 (1900000 bytes)
large-asset.bin 3/7 (1900000 bytes)
large-asset.bin 4/7 (1900000 bytes)
large-asset.bin 5/7 (1900000 bytes)
large-asset.bin 6/7 (1900000 bytes)
large-asset.bin 7/7 (1100000 bytes)
index.js 1/1 (1218 bytes)
sample-asset.txt 1/1 (24 bytes)
index.js.map 1/1 (5625 bytes)
```
Copy file name to clipboardExpand all lines: CHANGELOG.adoc
+9-1
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,15 @@ This commit also upgrades tokio and reqwest in order to work correctly. There ar
19
19
20
20
Renamed the `project_name` in our own generated assets to `canister_name`, for things that are generated during canister build (and not project generation).
21
21
22
-
---
22
+
== Asset Canister
23
+
24
+
=== feat: The asset canister can now store assets that exceed the message ingress limit (2 MB)
25
+
26
+
* Please note that neither the JS agent nor the HTTP server have been updated yet to server such large assets.
27
+
* The existing interface is left in place for backwards-compatibility, but deprecated:
28
+
** retrieve(): use get() and get_chunk() instead
29
+
** store(): use create_batch(), create_chunk(), and commit_batch() instead
0 commit comments