Skip to content

Commit 9f2dbc7

Browse files
committed
feat: add contract
1 parent 81f4cbd commit 9f2dbc7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2754
-3574
lines changed

Cargo.lock

+980-33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/sui/xcall/Move.lock contracts/sui/intent_v1/Move.lock

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# @generated by Move, please check-in and do not edit manually.
22

33
[move]
4-
version = 0
5-
manifest_digest = "FC695334648B2D90E72AE20AA924725F9BF44A6CFE2FD05A222822451A044FD2"
4+
version = 2
5+
manifest_digest = "AACE86AFC3B29B8DB151AF23459046CD2B9449DBFD44B0015FB4207404832674"
66
deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600"
7-
87
dependencies = [
98
{ name = "Sui" },
109
{ name = "sui_rlp" },
@@ -31,14 +30,14 @@ dependencies = [
3130
]
3231

3332
[move.toolchain-version]
34-
compiler-version = "1.26.1"
35-
edition = "2024.alpha"
33+
compiler-version = "1.33.2"
34+
edition = "2024.beta"
3635
flavor = "sui"
3736

3837
[env]
3938

4039
[env.testnet]
4140
chain-id = "4c78adac"
42-
original-published-id = "0xba481bcd34c4c236b1ccda9d8cb549f03a80260d794285f2b2a6798170d8375d"
43-
latest-published-id = "0xba481bcd34c4c236b1ccda9d8cb549f03a80260d794285f2b2a6798170d8375d"
41+
original-published-id = "0x468fb4326302ec28df8812a41e400f3a6be4a94d9fcedf51e5935c9ac2a44226"
42+
latest-published-id = "0x468fb4326302ec28df8812a41e400f3a6be4a94d9fcedf51e5935c9ac2a44226"
4443
published-version = "1"

contracts/sui/intent_v1/Move.lock:Zone.Identifier

Whitespace-only changes.

contracts/sui/intent_v1/Move.toml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[package]
2+
name = "intents_v1"
3+
edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move
4+
# license = "" # e.g., "MIT", "GPL", "Apache 2.0"
5+
# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"]
6+
7+
[dependencies]
8+
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
9+
[dependencies.sui_rlp]
10+
local = '../libs/sui_rlp'
11+
# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`.
12+
# Revision can be a branch, a tag, and a commit hash.
13+
# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" }
14+
15+
# For local dependencies use `local = path`. Path is relative to the package root
16+
# Local = { local = "../path/to" }
17+
18+
# To resolve a version conflict and force a specific version for dependency
19+
# override use `override = true`
20+
# Override = { local = "../conflicting/version", override = true }
21+
22+
[addresses]
23+
intents_v1 = "0x0"
24+
25+
# Named addresses will be accessible in Move as `@name`. They're also exported:
26+
# for example, `std = "0x1"` is exported by the Standard Library.
27+
# alice = "0xA11CE"
28+
29+
[dev-dependencies]
30+
# The dev-dependencies section allows overriding dependencies for `--test` and
31+
# `--dev` modes. You can introduce test-only dependencies here.
32+
# Local = { local = "../path/to/dev-build" }
33+
34+
[dev-addresses]
35+
# The dev-addresses section allows overwriting named addresses for the `--test`
36+
# and `--dev` modes.
37+
# alice = "0xB0B"
38+

contracts/sui/intent_v1/Move.toml:Zone.Identifier

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
module intents_v1::cluster_connection {
2+
use std::string::{String, Self};
3+
use sui::table::{Table, Self};
4+
use intents_v1::order_message::{OrderMessage, Self};
5+
use sui::event::{ Self };
6+
7+
public struct Receipt has drop, copy, store {
8+
src_nid: String,
9+
conn_sn: u128,
10+
}
11+
12+
public struct ConnectionState has store {
13+
conn_sn: u128,
14+
relayer: address, // Address of the relayer
15+
receipts: Table<Receipt, bool>, // Mapping of receipts for tracking
16+
}
17+
18+
public struct Message has copy, drop {
19+
to: String,
20+
conn_sn: u128,
21+
msg: vector<u8>,
22+
}
23+
24+
public(package) fun new(relayer: address, ctx: &mut TxContext): ConnectionState {
25+
ConnectionState {
26+
conn_sn: 0,
27+
relayer: relayer,
28+
receipts: table::new(ctx),
29+
}
30+
}
31+
32+
public fun get_relayer(self: &ConnectionState): address {
33+
self.relayer
34+
}
35+
36+
public(package) fun receive_message(
37+
self: &mut ConnectionState,
38+
srcNid: String,
39+
conn_sn: u128,
40+
msg: vector<u8>,
41+
ctx: &TxContext
42+
): OrderMessage {
43+
// assert!(self.relayer == ctx.sender());
44+
let key = Receipt {src_nid: srcNid, conn_sn};
45+
assert!(!self.receipts.contains(key));
46+
self.receipts.add(key, true);
47+
order_message::decode(&msg)
48+
}
49+
50+
public(package) fun send_message(
51+
self: &mut ConnectionState,
52+
toNid: String,
53+
msg: vector<u8>
54+
) {
55+
let conn_sn = get_next_conn_sn(self);
56+
event::emit(Message {to: toNid, conn_sn, msg,})
57+
58+
}
59+
60+
public(package) fun set_relayer(
61+
self: &mut ConnectionState,
62+
relayer: address
63+
) {
64+
self.relayer = relayer;
65+
}
66+
67+
fun get_next_conn_sn(self: &mut ConnectionState): u128 {
68+
let sn = self.conn_sn + 1;
69+
self.conn_sn = sn;
70+
sn
71+
}
72+
}

contracts/sui/intent_v1/sources/cluster_connection.move:Zone.Identifier

Whitespace-only changes.

0 commit comments

Comments
 (0)