Skip to content

Commit 6e3b107

Browse files
committed
feat: emit cbor bytes in bucket create event
1 parent ccc790e commit 6e3b107

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

src/BucketManager.sol

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,21 @@ contract BucketManager is IBucketManager {
1313
function create() external {
1414
KeyValue[] memory metadata = new KeyValue[](0);
1515
LibBucket.create(msg.sender, metadata);
16-
emit BucketCreated(msg.sender);
16+
bytes memory data = LibBucket.create(msg.sender, metadata);
17+
emit BucketCreated(msg.sender, data);
1718
}
1819

1920
/// @dev See {IBucketManager-create}.
2021
function create(address owner) external {
2122
KeyValue[] memory metadata = new KeyValue[](0);
22-
LibBucket.create(owner, metadata);
23-
emit BucketCreated(owner);
23+
bytes memory data = LibBucket.create(owner, metadata);
24+
emit BucketCreated(owner, data);
2425
}
2526

2627
/// @dev See {IBucketManager-create}.
2728
function create(address owner, KeyValue[] memory metadata) external {
28-
LibBucket.create(owner, metadata);
29-
emit BucketCreated(owner);
29+
bytes memory data = LibBucket.create(owner, metadata);
30+
emit BucketCreated(owner, data);
3031
}
3132

3233
/// @dev See {IBucketManager-list}.

src/interfaces/IBucketManager.sol

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
// SPDX-License-Identifier: MIT OR Apache-2.0
22
pragma solidity ^0.8.26;
33

4-
import {
5-
AddParams, CreateBucketParams, KeyValue, Kind, Machine, Query, Value, WriteAccess
6-
} from "../types/BucketTypes.sol";
4+
import {AddParams, KeyValue, Kind, Machine, Query, Value} from "../types/BucketTypes.sol";
75

86
/// @dev Hoku Bucket actor EVM interface for managing objects, and querying object or storage stats.
97
/// See Rust implementation for details:
108
/// https://github.com/hokunet/ipc/blob/develop/fendermint/actors/objectstore/src/actor.rs
119
interface IBucketManager {
1210
/// @dev Emitted when a bucket is created.
13-
// TODO: It'd be nice to emit the bucket t2 address, but decoding the CBOR is too expensive.
14-
event BucketCreated(address indexed owner);
11+
/// @param owner The owner.
12+
/// @param data The CBOR encoded response—array with two values including the bucket's ID and robust (t2) addresses.
13+
event BucketCreated(address indexed owner, bytes data);
1514

1615
/// @dev Emitted when an object is added to a bucket.
16+
/// @param owner The owner.
17+
/// @param bucket The bucket's robust t2 address.
18+
/// @param key The object key.
1719
event ObjectAdded(address indexed owner, string indexed bucket, string indexed key);
1820

1921
/// @dev Emitted when an object is removed from a bucket.
22+
/// @param owner The owner.
23+
/// @param bucket The bucket's robust t2 address.
24+
/// @param key The object key.
2025
event ObjectRemoved(address indexed owner, string indexed bucket, string indexed key);
2126

2227
/// @dev Create a bucket. Uses the sender as the owner.

src/util/LibBucket.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,15 @@ library LibBucket {
211211
/// @dev Create a bucket.
212212
/// @param owner The owner.
213213
/// @param metadata The metadata.
214-
function create(address owner, KeyValue[] memory metadata) external {
214+
function create(address owner, KeyValue[] memory metadata) external returns (bytes memory) {
215215
CreateBucketParams memory createParams = CreateBucketParams({
216216
owner: owner,
217217
kind: Kind.Bucket,
218218
writeAccess: WriteAccess.OnlyOwner, // Bucket access control always uses credit approvals
219219
metadata: metadata
220220
});
221221
bytes memory params = encodeCreateBucketParams(createParams);
222-
LibWasm.writeToWasmActor(ADM_ACTOR_ID, METHOD_CREATE_EXTERNAL, params);
222+
return LibWasm.writeToWasmActor(ADM_ACTOR_ID, METHOD_CREATE_EXTERNAL, params);
223223
}
224224

225225
/// @dev List all buckets owned by an address.

0 commit comments

Comments
 (0)