Skip to content

Commit

Permalink
[sui-framework] Refactor id module to object (#3241)
Browse files Browse the repository at this point in the history
- `sui::id` is now `sui::object`
- `VersionedID` renamed to `Info`
- Various ID and Info helpers have been renamed
- Moved object creation from tx_context to object
  • Loading branch information
tnowacki authored Jul 18, 2022
1 parent 9c949f0 commit 757df33
Show file tree
Hide file tree
Showing 160 changed files with 1,159 additions and 1,162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ written: object(104)

task 3 'view-object'. lines 32-32:
Owner: Account Address ( A )
Contents: Test::M1::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(105)}}, version: 1u64}, value: 0u64}
Contents: Test::M1::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(105)}, version: 1u64}, value: 0u64}
8 changes: 4 additions & 4 deletions crates/sui-adapter-transactional-tests/tests/call/simple.move
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

//# publish
module Test::M1 {
use sui::id::VersionedID;
use sui::tx_context::{Self, TxContext};
use sui::object::{Self, Info};
use sui::tx_context::TxContext;
use sui::transfer;
use sui::coin::Coin;

struct Object has key, store {
id: VersionedID,
info: Info,
value: u64,
}

Expand All @@ -21,7 +21,7 @@ module Test::M1 {

public entry fun create(value: u64, recipient: address, ctx: &mut TxContext) {
transfer::transfer(
Object { id: tx_context::new_id(ctx), value },
Object { info: object::new(ctx), value },
recipient
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,30 @@
//# publish

module T3::O3 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::transfer;
use sui::tx_context::{Self, TxContext};

struct O3 has key, store {
id: VersionedID,
info: Info,
}

public entry fun create(ctx: &mut TxContext) {
let o = O3 { id: tx_context::new_id(ctx) };
let o = O3 { info: object::new(ctx) };
transfer::transfer(o, tx_context::sender(ctx))
}
}

//# publish

module T2::O2 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::transfer;
use sui::tx_context::{Self, TxContext};
use T3::O3::O3;

struct O2 has key, store {
id: VersionedID,
info: Info,
}

public entry fun create_shared(child: O3, ctx: &mut TxContext) {
Expand All @@ -45,24 +45,24 @@ module T2::O2 {
}

fun new(child: O3, ctx: &mut TxContext): O2 {
let id = tx_context::new_id(ctx);
transfer::transfer_to_object_id(child, &id);
O2 { id }
let info = object::new(ctx);
transfer::transfer_to_object_id(child, &info);
O2 { info }
}
}


//# publish

module T1::O1 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::transfer;
use sui::tx_context::{Self, TxContext};
use T2::O2::O2;
use T3::O3::O3;

struct O1 has key {
id: VersionedID,
info: Info,
}

public entry fun create_shared(child: O2, ctx: &mut TxContext) {
Expand All @@ -75,9 +75,9 @@ module T1::O1 {
}

fun new(child: O2, ctx: &mut TxContext): O1 {
let id = tx_context::new_id(ctx);
transfer::transfer_to_object_id(child, &id);
O1 { id }
let info = object::new(ctx);
transfer::transfer_to_object_id(child, &info);
O1 { info }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
module Test::M {
use sui::tx_context::{Self, TxContext};
struct Obj has key {
id: sui::id::VersionedID,
info: sui::object::Info,
value: u64
}

public entry fun mint(ctx: &mut TxContext) {
sui::transfer::transfer(
Obj { id: tx_context::new_id(ctx), value: 0 },
Obj { info: sui::object::new(ctx), value: 0 },
tx_context::sender(ctx),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ written: object(102)

task 2 'view-object'. lines 25-25:
Owner: Account Address ( _ )
Contents: Test::M1::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(104)}}, version: 1u64}, value: 42u64}
Contents: Test::M1::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(104)}, version: 1u64}, value: 42u64}

task 3 'view-object'. lines 27-27:
103::M1
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@

//# publish
module Test::M1 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::tx_context::{Self, TxContext};
use sui::transfer;

struct Object has key, store {
id: VersionedID,
info: Info,
value: u64,
}

// initializer that should be executed upon publishing this module
fun init(ctx: &mut TxContext) {
let value = 42;
let singleton = Object { id: tx_context::new_id(ctx), value };
let singleton = Object { info: object::new(ctx), value };
transfer::transfer(singleton, tx_context::sender(ctx))
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@
// initializer not valid due extra non-ctx param

module Test::M1 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::tx_context::{Self, TxContext};
use sui::transfer;

struct Object has key, store {
id: VersionedID,
info: Info,
value: u64,
}

// value param invalid
fun init(ctx: &mut TxContext, value: u64) {
let singleton = Object { id: tx_context::new_id(ctx), value };
let singleton = Object { info: object::new(ctx), value };
transfer::transfer(singleton, tx_context::sender(ctx))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@
// initializer not valid due to public visibility

module Test::M1 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::tx_context::{Self, TxContext};
use sui::transfer;

struct Object has key, store {
id: VersionedID,
info: Info,
value: u64,
}

// public initializer - should not be executed
public fun init(ctx: &mut TxContext) {
let value = 42;
let singleton = Object { id: tx_context::new_id(ctx), value };
let singleton = Object { info: object::new(ctx), value };
transfer::transfer(singleton, tx_context::sender(ctx))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@
// initializer not valid due to return value

module Test::M1 {
use sui::id::VersionedID;
use sui::object::{Self, Info};
use sui::tx_context::{Self, TxContext};
use sui::transfer;

struct Object has key, store {
id: VersionedID,
info: Info,
value: u64,
}

// initializer that should be executed upon publishing this module
fun init(ctx: &mut TxContext): u64 {
let value = 42;
let singleton = Object { id: tx_context::new_id(ctx), value };
let singleton = Object { info: object::new(ctx), value };
transfer::transfer(singleton, tx_context::sender(ctx));
value
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ written: object(106)

task 4 'view-object'. lines 43-43:
Owner: Shared
Contents: t2::o2::O2 {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(107)}}, version: 1u64}}
Contents: t2::o2::O2 {info: sui::object::Info {id: sui::object::ID {bytes: fake(107)}, version: 1u64}}

task 5 'run'. lines 45-45:
Error: Transaction Effects Status: Entry Argument Type Error. Error for argument at index 0: Immutable and shared objects cannot be passed by-value.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@
//# publish

module t2::o2 {
use sui::id::{Self, VersionedID};
use sui::object::{Self, Info};
use sui::transfer;
use sui::tx_context::{Self, TxContext};
use sui::tx_context::TxContext;

struct O2 has key, store {
id: VersionedID,
info: Info,
}

public entry fun create(ctx: &mut TxContext) {
let o = O2 { id: tx_context::new_id(ctx) };
let o = O2 { info: object::new(ctx) };
transfer::share_object(o)
}

public entry fun consume_o2(o2: O2) {
let O2 { id } = o2;
id::delete(id);
let O2 { info } = o2;
object::delete(info);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,23 @@ A: object(100), B: object(101), C: object(102)

task 1 'view-object'. lines 8-8:
Owner: Account Address ( A )
Contents: sui::coin::Coin<sui::sui::SUI> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(100)}}, version: 0u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 100000u64}}
Contents: sui::coin::Coin<sui::sui::SUI> {info: sui::object::Info {id: sui::object::ID {bytes: fake(100)}, version: 0u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 100000u64}}

task 2 'run'. lines 10-10:
created: object(106)
written: object(100), object(105)

task 3 'view-object'. lines 12-12:
Owner: Account Address ( A )
Contents: sui::coin::Coin<sui::sui::SUI> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(100)}}, version: 1u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 99990u64}}
Contents: sui::coin::Coin<sui::sui::SUI> {info: sui::object::Info {id: sui::object::ID {bytes: fake(100)}, version: 1u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 99990u64}}

task 4 'view-object'. lines 14-14:
Owner: Account Address ( B )
Contents: sui::coin::Coin<sui::sui::SUI> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(106)}}, version: 1u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 10u64}}
Contents: sui::coin::Coin<sui::sui::SUI> {info: sui::object::Info {id: sui::object::ID {bytes: fake(106)}, version: 1u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 10u64}}

task 5 'run'. lines 16-16:
written: object(100), object(107)

task 6 'view-object'. lines 18-18:
Owner: Account Address ( C )
Contents: sui::coin::Coin<sui::sui::SUI> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(100)}}, version: 2u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 99990u64}}
Contents: sui::coin::Coin<sui::sui::SUI> {info: sui::object::Info {id: sui::object::ID {bytes: fake(100)}, version: 2u64}, balance: sui::balance::Balance<sui::sui::SUI> {value: 99990u64}}
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ written: object(104)

task 2 'view-object'. lines 10-10:
Owner: Account Address ( A )
Contents: sui::object_basics::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(105)}}, version: 1u64}, value: 10u64}
Contents: sui::object_basics::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(105)}, version: 1u64}, value: 10u64}

task 3 'run'. lines 12-12:
written: object(105), object(106)

task 4 'view-object'. lines 14-14:
Owner: Account Address ( B )
Contents: sui::object_basics::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(105)}}, version: 2u64}, value: 10u64}
Contents: sui::object_basics::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(105)}, version: 2u64}, value: 10u64}

task 5 'run'. lines 16-16:
created: object(108)
Expand Down
4 changes: 2 additions & 2 deletions crates/sui-adapter-transactional-tests/tests/sui/unwrap.exp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ written: object(103)

task 2 'view-object'. lines 11-11:
Owner: Account Address ( A )
Contents: sui::object_basics::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(104)}}, version: 1u64}, value: 10u64}
Contents: sui::object_basics::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(104)}, version: 1u64}, value: 10u64}

task 3 'run'. lines 13-13:
created: object(106)
Expand All @@ -22,4 +22,4 @@ deleted: object(106)

task 5 'view-object'. lines 17-17:
Owner: Account Address ( A )
Contents: sui::object_basics::Object {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(104)}}, version: 3u64}, value: 10u64}
Contents: sui::object_basics::Object {info: sui::object::Info {id: sui::object::ID {bytes: fake(104)}, version: 3u64}, value: 10u64}
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,28 @@ written: object(106)

task 3 'view-object'. lines 33-33:
Owner: Account Address ( A )
Contents: test::m::S {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(107)}}, version: 1u64}}
Contents: test::m::S {info: sui::object::Info {id: sui::object::ID {bytes: fake(107)}, version: 1u64}}

task 4 'transfer-object'. lines 35-35:
Error: Transaction Effects Status: Invalid Transfer Object Transaction. Possibly not address-owned or possibly does not have public transfer.
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InvalidTransferObject, source: None } }

task 5 'view-object'. lines 37-40:
Owner: Account Address ( A )
Contents: test::m::S {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(107)}}, version: 2u64}}
Contents: test::m::S {info: sui::object::Info {id: sui::object::ID {bytes: fake(107)}, version: 2u64}}

task 6 'run'. lines 42-42:
created: object(110)
written: object(109)

task 7 'view-object'. lines 44-44:
Owner: Account Address ( A )
Contents: test::m::Cup<test::m::S> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(110)}}, version: 1u64}}
Contents: test::m::Cup<test::m::S> {info: sui::object::Info {id: sui::object::ID {bytes: fake(110)}, version: 1u64}}

task 8 'transfer-object'. lines 46-46:
Error: Transaction Effects Status: Invalid Transfer Object Transaction. Possibly not address-owned or possibly does not have public transfer.
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InvalidTransferObject, source: None } }

task 9 'view-object'. lines 48-48:
Owner: Account Address ( A )
Contents: test::m::Cup<test::m::S> {id: sui::id::VersionedID {id: sui::id::UniqueID {id: sui::id::ID {bytes: fake(110)}}, version: 2u64}}
Contents: test::m::Cup<test::m::S> {info: sui::object::Info {id: sui::object::ID {bytes: fake(110)}, version: 2u64}}
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
module test::m {
use sui::transfer;
use sui::tx_context::{Self, TxContext};
use sui::id::VersionedID;
use sui::object::{Self, Info};

struct S has key { id: VersionedID }
struct Cup<phantom T> has key { id: VersionedID }
struct S has key { info: Info }
struct Cup<phantom T> has key { info: Info }

public entry fun mint_s(ctx: &mut TxContext) {
let id = tx_context::new_id(ctx);
transfer::transfer(S { id }, tx_context::sender(ctx))
let info = object::new(ctx);
transfer::transfer(S { info }, tx_context::sender(ctx))
}

public entry fun mint_cup<T>(ctx: &mut TxContext) {
let id = tx_context::new_id(ctx);
transfer::transfer(Cup<T> { id }, tx_context::sender(ctx))
let info = object::new(ctx);
transfer::transfer(Cup<T> { info }, tx_context::sender(ctx))
}
}

Expand Down
Loading

1 comment on commit 757df33

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bench results

�[0m�[1m�[33mwarning�[0m�[0m�[1m: unused import: HashSet�[0m
�[0m �[0m�[0m�[1m�[38;5;12m--> �[0m�[0mcrates/sui-config/src/genesis.rs:12:34�[0m
�[0m �[0m�[0m�[1m�[38;5;12m|�[0m
�[0m�[1m�[38;5;12m12�[0m�[0m �[0m�[0m�[1m�[38;5;12m|�[0m�[0m �[0m�[0muse std::collections::{BTreeMap, HashSet};�[0m
�[0m �[0m�[0m�[1m�[38;5;12m| �[0m�[0m �[0m�[0m�[1m�[33m^^^^^^^�[0m
�[0m �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mnote�[0m�[0m: #[warn(unused_imports)] on by default�[0m

�[0m�[0m�[1m�[33mwarning�[0m�[1m:�[0m sui-config (lib) generated 1 warning
�[0m�[0m�[1m�[32m Finished�[0m release [optimized] target(s) in 0.66s
�[0m�[0m�[1m�[32m Running�[0m target/release/bench microbench throughput
Default Jemalloc conf:
�[2m2022-07-18T21:10:06.716445Z�[0m �[32m INFO�[0m �[2msui_benchmark::benchmark�[0m�[2m:�[0m benchmark �[3mbenchmark�[0m�[2m=�[0mBenchmark { committee_size: 1, send_timeout_us: 400000000, recv_timeout_us: 400000000, buffer_size: 65000, tcp_connections: 0, db_cpus: 1, use_native: false, batch_size: 2000, running_mode: SingleValidatorThread, working_dir: None, bench_type: MicroBenchmark { host: "127.0.0.1", port: 9555, type_: Throughput { num_transactions: 100000 } } }
Jemalloc: 1 MB allocated / 9 MB resident
�[2m2022-07-18T21:10:06.717594Z�[0m �[32m INFO�[0m �[2msui_config::genesis_config�[0m�[2m:�[0m Creating accounts and gas objects...
�[2m2022-07-18T21:10:06.735247Z�[0m �[32m INFO�[0m �[2msui_benchmark::benchmark::validator_preparer�[0m�[2m:�[0m authority address hex: 0x04156f59c7d3dfcc4fe9c8ac49ac035d58a397d0
�[2m2022-07-18T21:10:06.735347Z�[0m �[32m INFO�[0m �[2msui_benchmark::benchmark::validator_preparer�[0m�[2m:�[0m Open database on path: "/tmp/DB_0x6b2ad69f6f505c93b1171c33b9585b455a4433b3"
�[2m2022-07-18T21:10:06.971830Z�[0m �[32m INFO�[0m �[2msui_storage::lock_service�[0m�[2m:�[0m LockService command processing loop started
�[2m2022-07-18T21:10:06.971895Z�[0m �[32m INFO�[0m �[2msui_storage::lock_service�[0m�[2m:�[0m LockService queries processing loop started
�[2m2022-07-18T21:10:07.643861Z�[0m �[32m INFO�[0m �[2msui_benchmark::benchmark::validator_preparer�[0m�[2m:�[0m Spawning a validator thread...
�[2m2022-07-18T21:10:07.645271Z�[0m �[32m INFO�[0m �[2msui_core::authority_server�[0m�[2m:�[0m Listening to traffic on /dns/127.0.0.1/tcp/9555/http
Jemalloc: 68 MB allocated / 157 MB resident
Jemalloc: 68 MB allocated / 148 MB resident
Jemalloc: 124 MB allocated / 179 MB resident
Jemalloc: 908 MB allocated / 1945 MB resident
Throughout: 51596.765089215965 tps

Please sign in to comment.