Skip to content

Commit 4512652

Browse files
authored
feat: dark pool router POC (#10)
1 parent 680b109 commit 4512652

File tree

14 files changed

+514
-2
lines changed

14 files changed

+514
-2
lines changed

packages/contracts/contracts/PoolERC20.sol

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,22 @@ contract PoolERC20 is PoolGeneric {
2020
IVerifier unshieldVerifier;
2121
IVerifier joinVerifier;
2222
IVerifier transferVerifier;
23+
IVerifier swapVerifier;
2324
}
2425

2526
constructor(
2627
IVerifier shieldVerifier,
2728
IVerifier unshieldVerifier,
2829
IVerifier joinVerifier,
2930
IVerifier transferVerifier,
31+
IVerifier swapVerifier,
3032
IVerifier rollupVerifier
3133
) PoolGeneric(rollupVerifier) {
3234
_poolErc20Storage().shieldVerifier = shieldVerifier;
3335
_poolErc20Storage().unshieldVerifier = unshieldVerifier;
3436
_poolErc20Storage().joinVerifier = joinVerifier;
3537
_poolErc20Storage().transferVerifier = transferVerifier;
38+
_poolErc20Storage().swapVerifier = swapVerifier;
3639
}
3740

3841
function shield(
@@ -154,6 +157,40 @@ contract PoolERC20 is PoolGeneric {
154157
}
155158
}
156159

160+
// TODO: move to a separate contract
161+
function swap(
162+
bytes calldata proof,
163+
NoteInput[4] calldata notes,
164+
bytes32[2] calldata nullifiers
165+
) external {
166+
PublicInputs.Type memory pi = PublicInputs.create(8);
167+
pi.push(getNoteHashTree().root);
168+
pi.push(getNullifierTree().root);
169+
pi.push(notes[0].noteHash);
170+
pi.push(notes[1].noteHash);
171+
pi.push(notes[2].noteHash);
172+
pi.push(notes[3].noteHash);
173+
pi.push(nullifiers[0]);
174+
pi.push(nullifiers[1]);
175+
require(
176+
_poolErc20Storage().swapVerifier.verify(proof, pi.finish()),
177+
"Invalid swap proof"
178+
);
179+
180+
{
181+
NoteInput[] memory noteInputs = new NoteInput[](4);
182+
noteInputs[0] = notes[0];
183+
noteInputs[1] = notes[1];
184+
noteInputs[2] = notes[2];
185+
noteInputs[3] = notes[3];
186+
bytes32[] memory nullifiersDyn = new bytes32[](nullifiers.length);
187+
for (uint256 i = 0; i < nullifiers.length; i++) {
188+
nullifiersDyn[i] = nullifiers[i];
189+
}
190+
_PoolGeneric_addPendingTx(noteInputs, nullifiersDyn);
191+
}
192+
}
193+
157194
function _poolErc20Storage()
158195
private
159196
pure

packages/contracts/deploy/00_deploy.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ const deploy: DeployFunction = async ({
3434
"Erc20TransferVerifier",
3535
"erc20_transfer",
3636
);
37+
const swapVerifier = await deployVerifier(
38+
"LobRouterSwapVerifier",
39+
"lob_router_swap",
40+
);
3741
const rollupVerifier = await deployVerifier("RollupVerifier", "rollup");
3842

3943
const pool = await typedDeployments.deploy("PoolERC20", {
@@ -44,6 +48,7 @@ const deploy: DeployFunction = async ({
4448
unshieldVerifier.address,
4549
joinVerifier.address,
4650
transferVerifier.address,
51+
swapVerifier.address,
4752
rollupVerifier.address,
4853
],
4954
});

packages/contracts/noir/Nargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ members = [
55
"erc20_unshield",
66
"erc20_join",
77
"erc20_transfer",
8+
"lob_router",
9+
"lob_router_swap",
810
"rollup",
911
"common",
1012
]

packages/contracts/noir/common/src/lib.nr

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ impl std::ops::Sub for TokenAmount {
9595
}
9696
}
9797

98+
impl std::cmp::Ord for TokenAmount {
99+
fn cmp(self, other: Self) -> std::cmp::Ordering {
100+
self._check(other);
101+
self.amount.cmp(other.amount)
102+
}
103+
}
104+
98105
pub struct TreeRoots {
99106
pub note_hash_root: Field,
100107
pub nullifier_root: Field,
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "lob_router"
3+
type = "lib"
4+
authors = ["Oleh Misarosh <olehmisar@gmail.com>"]
5+
6+
[dependencies]
7+
common = { path = "../common" }
8+
erc20 = { path = "../erc20" }
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
mod LobRouter {
2+
pub fn swap(
3+
context: &mut common::Context,
4+
seller_secret_key: Field,
5+
seller_note: erc20::Erc20NoteConsumptionInputs,
6+
seller_amount: common::U256,
7+
seller_randomness: Field,
8+
buyer_secret_key: Field,
9+
buyer_note: erc20::Erc20NoteConsumptionInputs,
10+
buyer_amount: common::U256,
11+
buyer_randomness: Field,
12+
) {
13+
// TODO(security): orders must be signed by parties and the prices should match
14+
erc20::Token::transfer(
15+
context,
16+
seller_secret_key,
17+
seller_note,
18+
buyer_note.note.owner(),
19+
seller_amount,
20+
buyer_randomness,
21+
seller_randomness,
22+
);
23+
24+
erc20::Token::transfer(
25+
context,
26+
buyer_secret_key,
27+
buyer_note,
28+
seller_note.note.owner(),
29+
buyer_amount,
30+
seller_randomness,
31+
buyer_randomness,
32+
);
33+
}
34+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "lob_router_swap"
3+
type = "bin"
4+
authors = ["Oleh Misarosh <olehmisar@gmail.com"]
5+
6+
[dependencies]
7+
common = { path = "../common" }
8+
lob_router = { path = "../lob_router" }
9+
erc20 = { path = "../erc20" }
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
seller_secret_key = "0x118f09bc73ec486db2030077142f2bceba2a4d4c9e0f6147d776f8ca8ec02ff1"
2+
seller_randomness = "0x182b64fb6668fe979510b16b36a7e9468e7a5063c1912e48f7a206d28e4d8e6a"
3+
4+
5+
[tree_roots]
6+
note_hash_root = "0x25c912389a3b4dae01c0c9ce451affa51175104d34fb0741cb2ded0c690ce0c6"
7+
nullifier_root = "0x0aa63c509390ad66ecd821998aabb16a818bcc5db5cf4accc0ce1821745244e9"
8+
9+
[seller_note]
10+
note_sibling_path = [
11+
"0x127d42b3838a09a1d2a77d51d45efc2d872f7441434c8d73a2a65addeb63a26f",
12+
"0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1",
13+
"0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290",
14+
"0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20",
15+
"0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e",
16+
"0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf",
17+
"0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76",
18+
"0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b",
19+
"0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1",
20+
"0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972",
21+
"0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686",
22+
"0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7",
23+
"0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73",
24+
"0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1",
25+
"0x0197f2171ef99c2d053ee1fb5ff5ab288d56b9b41b4716c9214a4d97facc4c4a",
26+
"0x2b9cdd484c5ba1e4d6efcc3f18734b5ac4c4a0b9102e2aeb48521a661d3feee9",
27+
"0x14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3",
28+
"0x071d7627ae3b2eabda8a810227bf04206370ac78dbf6c372380182dbd3711fe3",
29+
"0x2fdc08d9fe075ac58cb8c00f98697861a13b3ab6f9d41a4e768f75e477475bf5",
30+
"0x20165fe405652104dceaeeca92950aa5adc571b8cafe192878cba58ff1be49c5",
31+
"0x1c8c3ca0b3a3d75850fcd4dc7bf1e3445cd0cfff3ca510630fd90b47e8a24755",
32+
"0x1f0c1a8fb16b0d2ac9a146d7ae20d8d179695a92a79ed66fc45d9da4532459b3",
33+
"0x038146ec5a2573e1c30d2fb32c66c8440f426fbd108082df41c7bebd1d521c30",
34+
"0x17d3d12b17fe762de4b835b2180b012e808816a7f2ff69ecb9d65188235d8fd4",
35+
"0x0e1a6b7d63a6e5a9e54e8f391dd4e9d49cdfedcbc87f02cd34d4641d2eb30491",
36+
"0x09244eec34977ff795fc41036996ce974136377f521ac8eb9e04642d204783d2",
37+
"0x1646d6f544ec36df9dc41f778a7ef1690a53c730b501471b6acd202194a7e8e9",
38+
"0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3",
39+
"0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f",
40+
"0x2a529be462b81ca30265b558763b1498289c9d88277ab14f0838cb1fce4b472c",
41+
"0x0c08da612363088ad0bbc78abd233e8ace4c05a56fdabdd5e5e9b05e428bdaee",
42+
"0x14748d0241710ef47f54b931ac5a58082b1d56b0f0c30d55fb71a6e8c9a6be14",
43+
"0x0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d",
44+
"0x2c45bb0c3d5bc1dc98e0baef09ff46d18c1a451e724f41c2b675549bb5c80e59",
45+
"0x121468e6710bf1ffec6d0f26743afe6f88ef55dab40b83ca0a39bc44b196374c",
46+
"0x2042c32c823a7440ceb6c342f9125f1fe426b02c527cd8fb28c85d02b705e759",
47+
"0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5",
48+
"0x0f55a0d491a9da093eb999fa0dffaf904620cbc78d07e63c6f795c5c7512b523",
49+
"0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a",
50+
"0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6",
51+
]
52+
note_index = "0x0"
53+
54+
[seller_note.nullifier_low_leaf_preimage]
55+
nullifier = "3502761326491897903912307329680840616114346130080727477006195110249521578463"
56+
next_nullifier = "4622624008295404567211139969641762687984164848421786975202499265153077664709"
57+
next_index = "37"
58+
59+
[seller_note.nullifier_low_leaf_membership_witness]
60+
leaf_index = "11"
61+
sibling_path = [
62+
"9592323143927693440852487918340834996926447034477944741845172904821136138140",
63+
"5497606502829525072786717709301021256722113035609372121941390198982065775880",
64+
"12013063095546063372417655624755911539489891906351320936318682923960676894657",
65+
"10285196304867229525576259386556584044657339834734116745467765038834977104298",
66+
"2903488935950838990208405343998070456796334091752591474019785544969867651224",
67+
"3766428923666518331463526421481938811267455056246707954327363314469768904474",
68+
"796074195456137668475057404256202455048248910468542119987582633322559749494",
69+
"20567739078944838550556895816409602128127282297589578747131836752205066334747",
70+
"2915761020738377646169465098196184536995852317462848975418156916828302972897",
71+
"10985760690611977917867463287126968335324276333731556907069004868774077204850",
72+
"19208047717975195819992968481289292904158208618635067144381052124352153142918",
73+
"6873111190261103763395069460662520014470628472871405490586772273844549690535",
74+
"5894139036143562089612233756205231544611692010506775540918923829608719739507",
75+
"12794319561613039897672261721253788651586435024857268094532550402122135778769",
76+
"720777601321551456724742356376872832235514487302799006897322578639686749258",
77+
"19726607866286112953874979389205149577323021278529259017954198462517737418473",
78+
"9477901871732605408863140319391985875503693577321165842544029785283526188723",
79+
"3218243980816964110015535469652973420290887819006413761652914020854170460131",
80+
"21647471328696313483506044180817939310547082363167430262013183074005768690677",
81+
"14513543603428597604998785424833526732416414663942895493375066920249255152069",
82+
"12912536786691007423957206067517486813236154886763950786309034005218474477397",
83+
"14043083790220302639747777938344554939065181077244110063366429914379380349363",
84+
"1585351311391412912983327123858240918248160277807437690996718569990466444336",
85+
"10777443874874414095971316544407516389536700701770254896428522920996906045396",
86+
"6379059771196981783531842116523729103253487220527074934863013362203865842833",
87+
"4134966835882445041808556871336951519851774168539778125719567488662398010322",
88+
"10076045549529902860501553551276683947306207322373274327817594791372714928361",
89+
"2840050510901032730295917342517416830172237966947356225177945514569852215731",
90+
"9763122299140113778865332540237465612993478463904652910937740892142312750399",
91+
"19143097027756952285085354173215061221134962025215187577014441848927452612396",
92+
"5443396159062520964690002960163216626227972885246029607890253069325844601582",
93+
"9252184438226219647561583700014163671525787751930886881150609055515912093204",
94+
"5133978852121333258945738158023312408330097040934952294511033236283137218189",
95+
"20024968741681435992617962040670787662064588050911389666593896948755442699865",
96+
"8177692210107365315198900131750690704270322702202776727756223630359548802892",
97+
"14591970101429819852875418865351062544941910746983613947047278625268406019929",
98+
"6035853708389102381677690046728119823868576653788717783661700952558999073765",
99+
"6935984739519493649769258491382157191948193966139936850002438965559842485539",
100+
"15160592699256931057355536169588270738517810359373901881744156960877034659226",
101+
"20898143714352063775313258090973641367368749294647965931365904988797017821910",
102+
]
103+
104+
[seller_note.note]
105+
randomness = "0x0737cddb7da2fbd46f2fa3eabafd8f7c67b0930d5a91bb86def7057e0eef6715"
106+
107+
[seller_note.note.owner]
108+
inner = "0x28c7eef33d7e5d31b9d2cc09c783294d91c36e05b7b815d96549f91fe0d3b0d4"
109+
110+
[seller_note.note.amount.token]
111+
inner = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6"
112+
113+
[seller_note.note.amount.amount]
114+
value = "100"
115+
116+
[seller_amount]
117+
value = "70"
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
buyer_secret_key = "0x2120f33c0d324bfe571a18c1d5a1c9cdc6db60621e35bc78be1ced339f936a71"
2+
buyer_randomness = "0x134fc3cd998fcbba3e4826e491da44a0b0e41072baadc927e21544b69ba7f91e"
3+
4+
[buyer_note]
5+
note_sibling_path = [
6+
"0x24e551d406fc3f56d3b74a5a58c83645f9ad424e384e0fd97e5cf309a4695ab3",
7+
"0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1",
8+
"0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290",
9+
"0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20",
10+
"0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e",
11+
"0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf",
12+
"0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76",
13+
"0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b",
14+
"0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1",
15+
"0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972",
16+
"0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686",
17+
"0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7",
18+
"0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73",
19+
"0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1",
20+
"0x0197f2171ef99c2d053ee1fb5ff5ab288d56b9b41b4716c9214a4d97facc4c4a",
21+
"0x2b9cdd484c5ba1e4d6efcc3f18734b5ac4c4a0b9102e2aeb48521a661d3feee9",
22+
"0x14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3",
23+
"0x071d7627ae3b2eabda8a810227bf04206370ac78dbf6c372380182dbd3711fe3",
24+
"0x2fdc08d9fe075ac58cb8c00f98697861a13b3ab6f9d41a4e768f75e477475bf5",
25+
"0x20165fe405652104dceaeeca92950aa5adc571b8cafe192878cba58ff1be49c5",
26+
"0x1c8c3ca0b3a3d75850fcd4dc7bf1e3445cd0cfff3ca510630fd90b47e8a24755",
27+
"0x1f0c1a8fb16b0d2ac9a146d7ae20d8d179695a92a79ed66fc45d9da4532459b3",
28+
"0x038146ec5a2573e1c30d2fb32c66c8440f426fbd108082df41c7bebd1d521c30",
29+
"0x17d3d12b17fe762de4b835b2180b012e808816a7f2ff69ecb9d65188235d8fd4",
30+
"0x0e1a6b7d63a6e5a9e54e8f391dd4e9d49cdfedcbc87f02cd34d4641d2eb30491",
31+
"0x09244eec34977ff795fc41036996ce974136377f521ac8eb9e04642d204783d2",
32+
"0x1646d6f544ec36df9dc41f778a7ef1690a53c730b501471b6acd202194a7e8e9",
33+
"0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3",
34+
"0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f",
35+
"0x2a529be462b81ca30265b558763b1498289c9d88277ab14f0838cb1fce4b472c",
36+
"0x0c08da612363088ad0bbc78abd233e8ace4c05a56fdabdd5e5e9b05e428bdaee",
37+
"0x14748d0241710ef47f54b931ac5a58082b1d56b0f0c30d55fb71a6e8c9a6be14",
38+
"0x0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d",
39+
"0x2c45bb0c3d5bc1dc98e0baef09ff46d18c1a451e724f41c2b675549bb5c80e59",
40+
"0x121468e6710bf1ffec6d0f26743afe6f88ef55dab40b83ca0a39bc44b196374c",
41+
"0x2042c32c823a7440ceb6c342f9125f1fe426b02c527cd8fb28c85d02b705e759",
42+
"0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5",
43+
"0x0f55a0d491a9da093eb999fa0dffaf904620cbc78d07e63c6f795c5c7512b523",
44+
"0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a",
45+
"0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6",
46+
]
47+
note_index = "0x1"
48+
49+
[buyer_note.nullifier_low_leaf_preimage]
50+
nullifier = "14955778689319551303378818347778024347630018933433821705130993688099992966438"
51+
next_nullifier = "16244632380179304245573134952201909709066181424366511358474662925880755537391"
52+
next_index = "63"
53+
54+
[buyer_note.nullifier_low_leaf_membership_witness]
55+
leaf_index = "44"
56+
sibling_path = [
57+
"19153318808262274360025480944602576430653382995793665568014074536604617664453",
58+
"12204236326854526973223496557357200239778090370172071879236879436466357624621",
59+
"405351999194507832591771161941330294949683334785194602943911205188154186380",
60+
"2959426397026183366069050464650984242887556596265649681973607242888685387779",
61+
"2492782479763675264093896873817694335040885070876443070196661113661962129135",
62+
"7997675936567769706222583500490338185379747281415057124249902920940843577209",
63+
"796074195456137668475057404256202455048248910468542119987582633322559749494",
64+
"20567739078944838550556895816409602128127282297589578747131836752205066334747",
65+
"2915761020738377646169465098196184536995852317462848975418156916828302972897",
66+
"10985760690611977917867463287126968335324276333731556907069004868774077204850",
67+
"19208047717975195819992968481289292904158208618635067144381052124352153142918",
68+
"6873111190261103763395069460662520014470628472871405490586772273844549690535",
69+
"5894139036143562089612233756205231544611692010506775540918923829608719739507",
70+
"12794319561613039897672261721253788651586435024857268094532550402122135778769",
71+
"720777601321551456724742356376872832235514487302799006897322578639686749258",
72+
"19726607866286112953874979389205149577323021278529259017954198462517737418473",
73+
"9477901871732605408863140319391985875503693577321165842544029785283526188723",
74+
"3218243980816964110015535469652973420290887819006413761652914020854170460131",
75+
"21647471328696313483506044180817939310547082363167430262013183074005768690677",
76+
"14513543603428597604998785424833526732416414663942895493375066920249255152069",
77+
"12912536786691007423957206067517486813236154886763950786309034005218474477397",
78+
"14043083790220302639747777938344554939065181077244110063366429914379380349363",
79+
"1585351311391412912983327123858240918248160277807437690996718569990466444336",
80+
"10777443874874414095971316544407516389536700701770254896428522920996906045396",
81+
"6379059771196981783531842116523729103253487220527074934863013362203865842833",
82+
"4134966835882445041808556871336951519851774168539778125719567488662398010322",
83+
"10076045549529902860501553551276683947306207322373274327817594791372714928361",
84+
"2840050510901032730295917342517416830172237966947356225177945514569852215731",
85+
"9763122299140113778865332540237465612993478463904652910937740892142312750399",
86+
"19143097027756952285085354173215061221134962025215187577014441848927452612396",
87+
"5443396159062520964690002960163216626227972885246029607890253069325844601582",
88+
"9252184438226219647561583700014163671525787751930886881150609055515912093204",
89+
"5133978852121333258945738158023312408330097040934952294511033236283137218189",
90+
"20024968741681435992617962040670787662064588050911389666593896948755442699865",
91+
"8177692210107365315198900131750690704270322702202776727756223630359548802892",
92+
"14591970101429819852875418865351062544941910746983613947047278625268406019929",
93+
"6035853708389102381677690046728119823868576653788717783661700952558999073765",
94+
"6935984739519493649769258491382157191948193966139936850002438965559842485539",
95+
"15160592699256931057355536169588270738517810359373901881744156960877034659226",
96+
"20898143714352063775313258090973641367368749294647965931365904988797017821910",
97+
]
98+
99+
[buyer_note.note]
100+
randomness = "0x28eae219c97727f63d73b3cd468d3325302536239c824ca1bcfed2941c8d6ded"
101+
102+
[buyer_note.note.owner]
103+
inner = "0x2b7bd70beb13e310f4593dbc807332acba0f01c4586f17cf984eedd7e1437414"
104+
105+
[buyer_note.note.amount.token]
106+
inner = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318"
107+
108+
[buyer_note.note.amount.amount]
109+
value = "10"
110+
111+
[buyer_amount]
112+
value = "3"

0 commit comments

Comments
 (0)