From fdd00c10603c24692240f21a568f525123389c2a Mon Sep 17 00:00:00 2001 From: r4bbit <445106+0x-r4bbit@users.noreply.github.com> Date: Sat, 7 Mar 2026 16:51:50 +0100 Subject: [PATCH] feat(programs): add Associated Token Account program with wallet CLI and tutorial MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce the ATA program, which derives deterministic per-token holding accounts from (owner, token_definition) via SHA256, eliminating the need to manually create and track holding account IDs. Program (programs/associated_token_account/): - Create, Transfer, and Burn instructions with PDA-based authorization - Deterministic address derivation: SHA256(owner || definition) → seed → AccountId - Idempotent Create (no-op if ATA already exists) Wallet CLI (`wallet ata`): - `address` — derive ATA address locally (no network call) - `create` — initialize an ATA on-chain - `send` — transfer tokens from owner's ATA to a recipient - `burn` — burn tokens from owner's ATA - `list` — query ATAs across multiple token definitions Usage: wallet deploy-program artifacts/program_methods/associated_token_account.bin wallet ata address --owner --token-definition wallet ata create --owner Public/ --token-definition wallet ata send --from Public/ --token-definition --to --amount 100 wallet ata burn --holder Public/ --token-definition --amount 50 wallet ata list --owner --token-definition Includes tutorial: docs/LEZ testnet v0.1 tutorials/associated-token-accounts.md --- Cargo.lock | 22 + Cargo.toml | 4 + artifacts/program_methods/amm.bin | Bin 518132 -> 518176 bytes .../associated_token_account.bin | Bin 0 -> 448336 bytes .../authenticated_transfer.bin | Bin 384600 -> 384600 bytes artifacts/program_methods/pinata.bin | Bin 390332 -> 390360 bytes artifacts/program_methods/pinata_token.bin | Bin 400268 -> 400216 bytes .../privacy_preserving_circuit.bin | Bin 518732 -> 518704 bytes artifacts/program_methods/token.bin | Bin 478516 -> 478528 bytes .../associated-token-accounts.md | 369 ++++++++++ integration_tests/Cargo.toml | 1 + integration_tests/tests/ata.rs | 656 ++++++++++++++++++ nssa/src/program.rs | 10 +- nssa/src/state.rs | 1 + program_methods/guest/Cargo.toml | 2 + .../guest/src/bin/associated_token_account.rs | 65 ++ programs/associated_token_account/Cargo.toml | 10 + .../associated_token_account/core/Cargo.toml | 10 + .../associated_token_account/core/src/lib.rs | 82 +++ programs/associated_token_account/src/burn.rs | 39 ++ .../associated_token_account/src/create.rs | 44 ++ programs/associated_token_account/src/lib.rs | 10 + .../associated_token_account/src/tests.rs | 153 ++++ .../associated_token_account/src/transfer.rs | 39 ++ wallet/Cargo.toml | 1 + wallet/src/cli/mod.rs | 9 +- wallet/src/cli/programs/ata.rs | 240 +++++++ wallet/src/cli/programs/mod.rs | 1 + wallet/src/lib.rs | 2 + wallet/src/program_facades/ata.rs | 280 ++++++++ wallet/src/program_facades/mod.rs | 1 + 31 files changed, 2048 insertions(+), 3 deletions(-) create mode 100644 artifacts/program_methods/associated_token_account.bin create mode 100644 docs/LEZ testnet v0.1 tutorials/associated-token-accounts.md create mode 100644 integration_tests/tests/ata.rs create mode 100644 program_methods/guest/src/bin/associated_token_account.rs create mode 100644 programs/associated_token_account/Cargo.toml create mode 100644 programs/associated_token_account/core/Cargo.toml create mode 100644 programs/associated_token_account/core/src/lib.rs create mode 100644 programs/associated_token_account/src/burn.rs create mode 100644 programs/associated_token_account/src/create.rs create mode 100644 programs/associated_token_account/src/lib.rs create mode 100644 programs/associated_token_account/src/tests.rs create mode 100644 programs/associated_token_account/src/transfer.rs create mode 100644 wallet/src/cli/programs/ata.rs create mode 100644 wallet/src/program_facades/ata.rs diff --git a/Cargo.lock b/Cargo.lock index 6e0461fd..961f4468 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -727,6 +727,24 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ata_core" +version = "0.1.0" +dependencies = [ + "nssa_core", + "risc0-zkvm", + "serde", +] + +[[package]] +name = "ata_program" +version = "0.1.0" +dependencies = [ + "ata_core", + "nssa_core", + "token_core", +] + [[package]] name = "atomic-polyfill" version = "1.0.3" @@ -3551,6 +3569,7 @@ name = "integration_tests" version = "0.1.0" dependencies = [ "anyhow", + "ata_core", "bytesize", "common", "env_logger", @@ -5882,6 +5901,8 @@ version = "0.1.0" dependencies = [ "amm_core", "amm_program", + "ata_core", + "ata_program", "nssa_core", "risc0-zkvm", "serde", @@ -8649,6 +8670,7 @@ dependencies = [ "amm_core", "anyhow", "async-stream", + "ata_core", "base58", "clap", "common", diff --git a/Cargo.toml b/Cargo.toml index 829a6539..7f6dc962 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,8 @@ members = [ "programs/amm", "programs/token/core", "programs/token", + "programs/associated_token_account/core", + "programs/associated_token_account", "sequencer/core", "sequencer/service", "sequencer/service/protocol", @@ -57,6 +59,8 @@ token_core = { path = "programs/token/core" } token_program = { path = "programs/token" } amm_core = { path = "programs/amm/core" } amm_program = { path = "programs/amm" } +ata_core = { path = "programs/associated_token_account/core" } +ata_program = { path = "programs/associated_token_account" } test_program_methods = { path = "test_program_methods" } bedrock_client = { path = "bedrock_client" } diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index 11260b46adcaad98b8674651652f6655618d4e48..4be8a4d5c7aa521739083b0a28517ce6a207bd75 100644 GIT binary patch delta 19757 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 WHg$}ruQN@r;pF(-i78M2>Hh(ku@vn9 diff --git a/artifacts/program_methods/associated_token_account.bin b/artifacts/program_methods/associated_token_account.bin new file mode 100644 index 0000000000000000000000000000000000000000..edf209cadba5df94f4c249c6ca3c2a6f824e23a6 GIT binary patch literal 448336 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 HXN3EILU>wa literal 0 HcmV?d00001 diff --git a/artifacts/program_methods/authenticated_transfer.bin b/artifacts/program_methods/authenticated_transfer.bin index 6ad554237ab2acfd4776ada1c04089fafc61e736..3390b016a4dc4299c2090694f2281414671db88f 100644 GIT binary patch delta 64983 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 ReY1C7JAp>7o#=aR_P;M9TSou@ delta 64987 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 diff --git a/artifacts/program_methods/pinata.bin b/artifacts/program_methods/pinata.bin index f3e126a4deb4558e5d5721f813fe485327828690..d7ee19f2e886cedbd101cb8900a8fbda7e0eb5b6 100644 GIT binary patch delta 14116 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 OaNH*e`&{c2cl|FR1r5Id delta 14030 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 L(G#o8k5v6HRkKcM delta 15747 zcmb`Md3+RAw#QF(RkKJSodt-j)lF285PPZK6fkVVVq`NqfFSfrgpjc00SZzSy2T^o_MF&=V|NJ;ZvTXW zSt4aIz7L$z0Ty8MzXz`YZ&6u>iTfYJ4htJiLW{u#*TTe_$-X5TXV~$#;4-im0#pm+ z*5Swu7Muk>Z{RzRV}2)*HZggB2WQ@Eqh6RVs{-1eAQI4^`M@~vL<2tyPU#|&$d05- zJy8+*dou+lgR2bVp9jx`&!n>cBVZZahVk{^6Rk}2d*VANM8j4zOkxA}fn(UgV8-1~ z5~aaH!x_I4TYt*by@lNA3(PCBQ3h+D1g-~bzEOdl=1kK!cE@)_JE!Z4KLg$Zwy^o1 zfeSES<8{!(VihS9{c11-p+~(4LnK(H<7mj~CejXOnQu;E=Y|DmoQCfh_^}^|@*q(2 zrE}oI9{N#xeu9FqWC#nWCo>=17xQh5{{%h-g#&T!VWOYWup1h;WCQZf6MX`1%Xmrb z_&L)CZa^x+cHAu@RkN^t36^T;FVaFGv9muw@$zDQ=Pk}4%zYxwWE=ZKZ2x)FP29kS zpW%DAiFAZZ%-ehsu2Z6~|2yL7=x{yUZ{#>?gZ^unK5a~~krzzGoO}io>qm;TlPOe$ zf#Cv?a+u)TVeW!EM6xjMXh#3-A}wRQ9xOtzcGTa2hk>=AaJ1ma2iA^q4tR&oV~KCY z(U!3yt%PRk*}e#_xKj`Nwyim;G4TE1onS4@PlN5h*28+$)603;ae~Jvw8n!QQg22O zmyOet!PDUEnYvn^DE&D8qGJN4l}`{!V!OMhB}Y}`8y$@nfeSFL6*J?>*bEbY&?J9% z0sb*tcW4K!nged!HF%eS>!4D_M3MHfb+$up5!?k{5cju1Z8=(bk4P!ZDAlRx2iqBs zOXFxQnE7uyy^n^E(9oExl>KIY6!)80pB8)xXDzyhqlE!IfR;mk{S=Xkn7k#*TP^vE zCa$gWb}Rk>_hW2TYd+O1M>}$~X{t!2Y}l({VH%u)@mX-Dfd?bkW`i}gp9I?td;r`R z+?UPoc`ddzU8EYuPl4y7KR>}T?L)&3G^}L%#UmKGrsk zUu}|?WpcE4uI|=1Tj8&Z^mVJjgI#xuZ&AXj4i9C#C0>;Dj3VVLjj z(L}yXtI%LvfXi;Wz%+2?f9VT63pOtBSFmvb={m&ie7(wug7Y4Lqr+0_2G)Sr-Y3%N zxWcF!{(**J_v;hVaX|I+MB2-CG#K1!p-4U^;6ZRhqX48HaL)z${CRyK4+?K#^IPVs z@^p{saubvQ$FIOxulD>YLH2ir8{emU(E{*Ju;yj=V9rihQLAhYfJe*vn$zqElQOKy zbX)~Kiut{vgX(05z)SDf<@IpDi*=SMiiW+01z!f2>I0|_d~`A54*sWFah4P1)+`%| zY=IIr-#x15&;f2J1bJ$lstPOtmx2ozzX#5M{3&tHG|}rG%MtntC%w9Wg$I&3_r3 zZJ7Tp_=^QL8qfN3Zs8~f1*XKAH&L-NsT==}+yf@BT?M%;6V+l|;qUawY}Xfo1I}X` zpA9x1(d*zE!;zf^Z-pM3kGT7x-=NoAaQ>pkeeu+-f9$#Ld^?l;_ih{weo>F{e%)d6 zKj{1-xE3s72dV`=1($-g9MVFB1q}0NfdvEq1H8~MzYTIwkv?DPZQ~E8RlzTeW`9HJ z+Jm3WO^-d$gTH7t(XFvXz4+%^Ii?N3@vX<=EHn;+57p@5nKKY9H*S+QD7QQL4Qa(_ zt~WG)A8YI4H*oT*JnVggNQ2oah!EEbEV8}+Z4gIY%5j;?@UD#_H8Ab(dJk`H@`Z~xqBr1^b!5uNE-#gU~QrIM&kkiYxhj6F|l?- z`R6!!-w6242l^F!{cX51!I^9azXlI0*Zs8$ymz;LL!1Jy{Sfa;X3*SxEQIklV!j$+ zCEy)kO_5sg9-V`95)D4Rfn2w9Bw_(AVaj0pqq>0Y;P0`M!E6B&cD@MnH68>$0@mIX z4=Kxsqh#3_`*}G31UKd<7^eOckt&!)gD_0t-}QR*Y4H4y_5BYR!_hKun8ndXaJ505 z)v^7z@v_NrXeR&eRhak59 zgGhCZ-68Pf`n-AIm0&e`RQtXGo@n5oz$rh9w1>^VCCrhZaAYSobLB zhrvgoM;6ng$6Xxl)B9yAM#D#j0kzAVuzCu(};DwB5 zfKxC&pYclNt;xuaX!T%ocEw!rFOu)ndsLnYoCU? zrj?ZyV;s!|XSKFAzEVzr#~EB|)^w)x3kg?*8dsg>@sYmQ!xfU zrElzRa2fiwoU}4FDax=MVh7;LD-3!(i-Rt6pr0ktOxU*?{fQ7W z(?#%}94ifD^4^_;{yx^m=Oi~DN%-kTM{?3YG^{{_<~jU*P2V>|z&`YMWrle;w!Vy) zTcrGWK75=%*g5TeOguWpN;{dwe~P{J3V)M{n-Du* z!|xUbzE+0Vd{y^^wu@1WY|uU7G4SB^*7$9t7CQ&P;pcTl#Rp>-HuCqF(t{7eztORi zX~-{$6>s8;TXOfr_P@!GYAvr>f;0NcN~GEB5d_D1J!||PoORSnb?j`aeghjBeB(3l z!L>FrvjsXm1{0mb8ME=*!3%$~lE`@4GF&W>uf_&6kF9%`A7hr!W0m_}wh_z`ziw_V z$8`n9q&PnaUSQyN!3z!JTRnkeE_`% zwI4Ka|HpA4U|21#U>SIhf&UDi1=cnsJOS4<%pVHQX=!6QCwA@wKE0(i2wRogY>mZs zYb<)SyNymW+kGAD^D)1hmw!-g*vm%s?980Yk+7~uZNhl*lN^nIO<#NmI2&wZ%C>ll zqxE3Ty2HV*g0;;o1J@Y(cY`*n*#fR~q^k#NPUp zFEPs{6}XgN*XNCU8dsJZiIi>lMey@6TRc;%Rmf5BNw5w5D&P1Fp6PGknZ>vWyke7$ z#<6u@1=oQ;Vq6d2y4glwC&rt|8C$=ff5$Z7hNZCJ02`IEg|~xu{Yh8s_J?r0gF7)n zpMW#o)T@v=vGs@eTRHAj?D%2+off8?s@SVX`B!=F?bxI`RPY=s`4c=oGJdW6e2QPq zJrG-US}pAF#m^F4+$j7Lf-W9NRN+K5QCjJF*ini3TW z#Y}v>c!+2t9<)F_9nG{9yyX=!ZU9wYo5Mu*+C&Bh%T)aZKGas@(-$(8I^fusM44&U z_;*v4|N96&?0#X5*Rd)$fV*r@d@5797}|=$~WTIkgUHXUKT3c({Zd_bE}f#wad#qWM~!Z+ZQaN<*#%AcMf$}YzzN9;)DUZV(#3@e5T*q$zAc1zf)xZzaahf%AuoRL=M-@E&j`ThM(D{lgL;B~*FS!4rqt;+K%D zHdLWu&u|-MGXWRC<8VeAzjvOf=N{yKCh#0s*p8iJA05#g=&AG`*+6Y{I@t4h3~e;XvvGl`V14tN+`aRE-r1ik^b+!XxQ{~;x>zG2tLxy z7Jpo*JRlWezA>(GT;ZeO8Uv58;5K|s@2>$5JDI32)%jn7MYApbBcjS((@+!cWqgf-@>t$=Cri`KlZ|XAC?30=(}vYy9^W zRpWtu@SuKIPdtAC8%;bs7a6+_H7wh41-Rxtk+uqnBmN3}9`m)#`MMKMD!;0S%~>>* zBknbg&q**TyuN|$ptT21iGD<1+-F|$K|w>Fi1mX7aU^j1c>m=7c&)4vK`3Iefhais zJ&5squ$+nN6bi<};!QNH1*?A+gvmB=mZ3lYRw#%>lFxQn4z4+=r`~VC1r65t8mh(Y zdH5)li@d_dPXq69Bx)qJf9xRS|Glt)9Sf=r<%3Xk_0zrl488*G#R3yqf8MVk5ao&H z^)G;pN5l_>(|(>P*Hw8F!OL1Fo&zdB1)g|Tx9EFA<)(3Y5d&tnvc|7(b;9If9QE8T z#>)YfcYqs^CuTB*t{aXx|8wF=t@iH*p9W{M{sklOi4XG|qiPhaQZLdP<`XC7F&w$x zwxO6%kHAC&$6^A`T#Msdrod!F^~^U5ytKU@Rtxd44I7SV19+K%4}&WVJa#JT6N{C~ zn1b>Lg-ye(_q|QS>_hO*4%WDW>JDF;h8xTv@aE}=nl{$>@2P748Sqxzrlsu6hZP}j zcx<$T@u*pdqG7OLf@OT0g-LPw6tOTYoZVERzk-c%pECz%C?f8ez$xH;*INnsChkMe zfV=cT7_uD-(B!;L-*FzeDpyNvIRA&yP}9Rob|%2`Ul5p$mk|^2Giz!-8p>c&HEz}0X$jtZDbR2k z6IgIR9-SdnFwAL=fmeg z31>2eP52nR6$7dmTOYs-O?W$Viq0* ztFOE@u5jZ1uSCO zoh@VwURQxL&9qU^mI(!F!4^YJH{?l#X||2f99Ov83giLY_u6gv7Pt-;t6>}5tl)_9 zZKOyhp~T`2gk2GP*zfWC!*`LA*Td$RFzQ^UKZWD}Z>mwZ<@-tGLC@!3f{!R?~# zurk^rbXTUlAQUKK3!&{VovvRCp<@r1C*lh_q>wur^hJFRSJdtey1j168xFbcE_*1~ z;ZeBuLf=exz~gp?oOZ7};*z2vhw7cm#`eM>rL4l7s#LcZ<|!2|g)BL#MD@Jm9-VZg zyUD(j4tJ;rC+n`1bVAc}NIJZ!A6;g+Y%rbc>hxD*<|?#zI4(6l>vBh_^lL558F3k{ z4N9v3=UNL3lApH2OOq#zbU0_;TO242OfD^%9x0Y)1nw<%cnf_2x6A9c`x1+n+-no%nCAHqup0aWOM`^*LB97@XxP zoa&iAqqNX}zsnPK_~y@c-!ILW2fgj0>M9vZiA4}&>r#dOyV`k!4v)*}bcX^_hts8; z`CRy|9QFsCp-3ns1p*FFG$IYjEh?HjBiG@UJPyezIXph6-S6`|C7+YxMowC|xUL`p zdCVOsDk=%NqBBZ8(URFp+x@~AOE3~}g`JL2!0Ylk>;b3p`(fse%0v5wJNqVG&VBji zlzk0Ck+S%Ju)!jQ;Xom`x{S{sjfR!HgTic!&l~mlqh620>+rkne!DXIurOJ%9ulf7 zVNcW>wTHb99}>Ga>{2IWD*F!!Axpp$4R}J4s3Q^#NMWBnhFPOIi_7i|hg=Snpe|oH zBn6e)FNB``lIrieg1wXhgUuPr#ExcBv3)IcY=$uB6|4~#w(*GYEiPE6-y1>=?2#m| zq}IvJOI0pA6Yq68{J3pA9-rOmhJ`#XZ*xURxkcUM9(E}iGa@rWGw)NX4+smCy$>KYhMluZ z9sZ&~@l@sEuZ6pNhrIqkIOwqZ0)ELJ2-~lqgtGAgv)AGc1>He^AQ1J3qAol_l(re> zEM?j^!WN4?9EkctUT?r3b@|*ON1|)QQDJ9j>4~7gfy)dQI6;?XY!8{@@5Jia`@%RF;Mc5bi3{j`$DXC@Vw#sdFLdVQY zr6)C5Y;rK_3wm8nzbk?&91e2@Gc+@wNms})>M?jcle6;+vS;5rCuE>iKb8w`ZP_E1zyNlD)vnx8u)yWi_|dz_NT z?#Bfsxuk?{Ny9CEwjEHDUm{ct72^9p3LS4rDoj)7m$G76X9O$fyxcAS%L(z%61e@8 zvKp zITFkGNqEwfJe_IrdnxteN1xOpTJT*;LNh;(IIkq5d0I3^UlTRttE;X518Ow&j}&8x aAG_hAaP7)i|7XpMIBrwyt(E3y7yTcs$(wQj diff --git a/artifacts/program_methods/privacy_preserving_circuit.bin b/artifacts/program_methods/privacy_preserving_circuit.bin index 2f2cc8207cf3c9c86619f85cf946d39b7b5c2741..f389481141ab8d2b9b326e48db259c2d931d386b 100644 GIT binary patch delta 30126 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 diff --git a/artifacts/program_methods/token.bin b/artifacts/program_methods/token.bin index bc4583b60cbe82e05cc322f3f590a83b9de5b325..49848eefa729e4afa693bb487301ba5edb300289 100644 GIT binary patch delta 18933 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 [!Important] +> This tutorial assumes you have completed the [wallet-setup](wallet-setup.md) and [custom-tokens](custom-tokens.md) tutorials. You need a running wallet with accounts and at least one token definition. + +## Prerequisites + +### Deploy the ATA program + +Unlike the Token program (which is built-in), the ATA program must be deployed before you can use it. The pre-built binary is included in the repository: + +```bash +wallet deploy-program artifacts/program_methods/associated_token_account.bin +``` + +> [!Note] +> Program deployment is idempotent — if the ATA program has already been deployed (e.g. by another user on the same network), the command is a no-op. + +You can verify the deployment succeeded by running any `wallet ata` command. If the program is not deployed, commands that submit transactions will fail. + +The CLI provides commands to work with the ATA program. Run `wallet ata` to see the options: + +```bash +Commands: + address Derive and print the Associated Token Account address (local only, no network) + create Create (or idempotently no-op) the Associated Token Account + send Send tokens from owner's ATA to a recipient + burn Burn tokens from holder's ATA + list List all ATAs for a given owner across multiple token definitions + help Print this message or the help of the given subcommand(s) +``` + +## 1. How ATA addresses work + +An ATA address is deterministically derived from two inputs: + +1. The **owner** account ID. +2. The **token definition** account ID. + +The derivation works as follows: + +``` +seed = SHA256(owner_id || definition_id) +ata_address = AccountId::from((ata_program_id, seed)) +``` + +Because the computation is pure, anyone who knows the owner and definition can reproduce the exact same ATA address — no network call required. + +> [!Note] +> All ATA commands that submit transactions accept a privacy prefix on the owner/holder argument — `Public/` for public accounts and `Private/` for private accounts. Using `Private/` generates a zero-knowledge proof locally and submits only the proof to the sequencer, keeping the owner's identity off-chain. + +## 2. Deriving an ATA address (`wallet ata address`) + +The `address` subcommand computes the ATA address locally without submitting a transaction. + +### a. Set up an owner and token definition + +If you already have a public account and a token definition from the custom-tokens tutorial, you can reuse them. Otherwise, create them now: + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB +``` + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 +``` + +```bash +wallet token new \ + --name MYTOKEN \ + --total-supply 10000 \ + --definition-account-id Public/3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + --supply-account-id Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB +``` + +### b. Derive the ATA address + +```bash +wallet ata address \ + --owner 5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 + +# Output: +7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R +``` + +> [!Note] +> This is a pure computation — no transaction is submitted and no network connection is needed. The same inputs will always produce the same output. + +## 3. Creating an ATA (`wallet ata create`) + +Before an ATA can hold tokens it must be created on-chain. The `create` subcommand submits a transaction that initializes the ATA. If it already exists, the operation is a no-op. + +### a. Create the ATA + +```bash +wallet ata create \ + --owner Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 +``` + +### b. Inspect the ATA + +Use the ATA address derived in the previous section: + +```bash +wallet account get --account-id Public/7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":0} +``` + +> [!Tip] +> Creation is idempotent — running the same command again is a no-op. + +## 4. Sending tokens via ATA (`wallet ata send`) + +The `send` subcommand transfers tokens from the owner's ATA to a recipient account. + +### a. Fund the ATA + +First, move tokens into the ATA from the supply account created earlier: + +```bash +wallet token send \ + --from Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --to Public/7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R \ + --amount 5000 +``` + +### b. Create a recipient account + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/9Ht4Kv8pYmW2rXjN6dFcQsA7bEoLf3gUZx1wDnR5eTi +``` + +### c. Send tokens from the ATA to the recipient + +```bash +wallet ata send \ + --from Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + --to 9Ht4Kv8pYmW2rXjN6dFcQsA7bEoLf3gUZx1wDnR5eTi \ + --amount 2000 +``` + +### d. Verify balances + +```bash +wallet account get --account-id Public/7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":3000} +``` + +```bash +wallet account get --account-id Public/9Ht4Kv8pYmW2rXjN6dFcQsA7bEoLf3gUZx1wDnR5eTi + +# Output: +Holding account owned by token program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":2000} +``` + +## 5. Burning tokens from an ATA (`wallet ata burn`) + +The `burn` subcommand destroys tokens held in the owner's ATA, reducing the token's total supply. + +### a. Burn tokens + +```bash +wallet ata burn \ + --holder Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + --amount 500 +``` + +### b. Verify the reduced balance + +```bash +wallet account get --account-id Public/7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":2500} +``` + +## 6. Listing ATAs (`wallet ata list`) + +The `list` subcommand queries ATAs for a given owner across one or more token definitions. + +### a. Create a second token and ATA + +Create a second token definition so there are multiple ATAs to list: + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/BxR3Lm7YkWp9vNs2hD4qJcTfA8eUoZ6gKn1wXjM5rFi +``` + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/Ck8mVp4YhWn2rXjD6dFsQtA7bEoLf3gUZx1wDnR9eTs +``` + +```bash +wallet token new \ + --name OTHERTOKEN \ + --total-supply 5000 \ + --definition-account-id Public/BxR3Lm7YkWp9vNs2hD4qJcTfA8eUoZ6gKn1wXjM5rFi \ + --supply-account-id Public/Ck8mVp4YhWn2rXjD6dFsQtA7bEoLf3gUZx1wDnR9eTs +``` + +Create an ATA for the second token: + +```bash +wallet ata create \ + --owner Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition BxR3Lm7YkWp9vNs2hD4qJcTfA8eUoZ6gKn1wXjM5rFi +``` + +### b. List ATAs for both token definitions + +```bash +wallet ata list \ + --owner 5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --token-definition \ + 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + BxR3Lm7YkWp9vNs2hD4qJcTfA8eUoZ6gKn1wXjM5rFi + +# Output: +ATA 7a2Bf9cKLm3XpRtH1wDqZs8vYjN4eU6gAoFxW5kMnE2R (definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4): balance 2500 +ATA 4nPxKd8YmW7rVsH2jDfQcA9bEoLf6gUZx3wTnR1eMs5 (definition BxR3Lm7YkWp9vNs2hD4qJcTfA8eUoZ6gKn1wXjM5rFi): balance 0 +``` + +> [!Note] +> The `list` command derives each ATA address locally and fetches its on-chain state. If an ATA has not been created for a given definition, it prints "No ATA for definition ..." instead. + +## 7. Private owner operations + +All three ATA operations — `create`, `send`, and `burn` — support private owner accounts. Passing a `Private/` prefix on the owner argument switches the wallet into privacy-preserving mode: + +1. The wallet builds the transaction locally. +2. The ATA program is executed inside the RISC0 ZK VM to generate a proof. +3. The proof, the updated ATA state (in plaintext), and an encrypted update for the owner's private account are submitted to the sequencer. +4. The sequencer verifies the proof, writes the ATA state change to the public chain, and records the owner's new commitment in the nullifier set. + +The result is that the ATA account and its token balance are **fully public** — anyone can see them. What stays private is the link between the ATA and its owner: the proof demonstrates that someone with the correct private key authorized the operation, but reveals nothing about which account that was. + +> [!Note] +> The ATA address is derived from `SHA256(owner_id || definition_id)`. Because SHA256 is one-way, the ATA address does not reveal the owner's identity. However, if the owner's account ID becomes known for any other reason, all of their ATAs across every token definition can be enumerated by anyone. + +### a. Create a private account + +```bash +wallet account new private + +# Output: +Generated new account with account_id Private/HkR7Lm2YnWp4vNs8hD3qJcTfA6eUoZ9gKn5wXjM1rFi +``` + +### b. Create the ATA for the private owner + +Pass `Private/` on `--owner`. The token definition account has no privacy prefix — it is always a public account. + +```bash +wallet ata create \ + --owner Private/HkR7Lm2YnWp4vNs8hD3qJcTfA6eUoZ9gKn5wXjM1rFi \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 +``` + +> [!Note] +> Proof generation runs locally in the RISC0 ZK VM and can take up to a minute on first run. + +### c. Verify the ATA was created + +Derive the ATA address using the raw account ID (no privacy prefix): + +```bash +wallet ata address \ + --owner HkR7Lm2YnWp4vNs8hD3qJcTfA6eUoZ9gKn5wXjM1rFi \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 + +# Output: +2pQxNf7YkWm3rVsH8jDcQaA4bEoLf9gUZx6wTnR2eMs1 +``` + +```bash +wallet account get --account-id Public/2pQxNf7YkWm3rVsH8jDcQaA4bEoLf9gUZx6wTnR2eMs1 + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":0} +``` + +### d. Fund the ATA + +The ATA is a public account. Fund it with a direct token transfer from any public holding account: + +```bash +wallet token send \ + --from Public/5FkBei8HYoSUNqh9rWCrJDnSZE5FJfGiWmTvhgBx3qTB \ + --to Public/2pQxNf7YkWm3rVsH8jDcQaA4bEoLf9gUZx6wTnR2eMs1 \ + --amount 500 +``` + +### e. Send tokens from the private owner's ATA + +```bash +wallet ata send \ + --from Private/HkR7Lm2YnWp4vNs8hD3qJcTfA6eUoZ9gKn5wXjM1rFi \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + --to 9Ht4Kv8pYmW2rXjN6dFcQsA7bEoLf3gUZx1wDnR5eTi \ + --amount 200 +``` + +Verify the ATA balance decreased: + +```bash +wallet account get --account-id Public/2pQxNf7YkWm3rVsH8jDcQaA4bEoLf9gUZx6wTnR2eMs1 + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":300} +``` + +### f. Burn tokens from the private owner's ATA + +```bash +wallet ata burn \ + --holder Private/HkR7Lm2YnWp4vNs8hD3qJcTfA6eUoZ9gKn5wXjM1rFi \ + --token-definition 3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4 \ + --amount 100 +``` + +Verify the balance and token supply: + +```bash +wallet account get --account-id Public/2pQxNf7YkWm3rVsH8jDcQaA4bEoLf9gUZx6wTnR2eMs1 + +# Output: +Holding account owned by ata program +{"account_type":"Token holding","definition_id":"3YpK8RvVzWm6Q4h2nDAbxJfLmuRqkEkFP9C7UwTdGvE4","balance":200} +``` diff --git a/integration_tests/Cargo.toml b/integration_tests/Cargo.toml index c88ec1fd..a06571fe 100644 --- a/integration_tests/Cargo.toml +++ b/integration_tests/Cargo.toml @@ -18,6 +18,7 @@ key_protocol.workspace = true indexer_service.workspace = true serde_json.workspace = true token_core.workspace = true +ata_core.workspace = true indexer_service_rpc.workspace = true sequencer_service_rpc = { workspace = true, features = ["client"] } wallet-ffi.workspace = true diff --git a/integration_tests/tests/ata.rs b/integration_tests/tests/ata.rs new file mode 100644 index 00000000..94ba98c9 --- /dev/null +++ b/integration_tests/tests/ata.rs @@ -0,0 +1,656 @@ +#![expect( + clippy::shadow_unrelated, + clippy::tests_outside_test_module, + reason = "We don't care about these in tests" +)] + +use std::time::Duration; + +use anyhow::{Context as _, Result}; +use ata_core::{compute_ata_seed, get_associated_token_account_id}; +use integration_tests::{ + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_private_account_id, + format_public_account_id, verify_commitment_is_in_state, +}; +use log::info; +use nssa::program::Program; +use sequencer_service_rpc::RpcClient as _; +use token_core::{TokenDefinition, TokenHolding}; +use tokio::test; +use wallet::cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + programs::{ata::AtaSubcommand, token::TokenProgramAgnosticSubcommand}, +}; + +/// Create a public account and return its ID. +async fn new_public_account(ctx: &mut TestContext) -> Result { + let result = wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Account(AccountSubcommand::New(NewSubcommand::Public { + cci: None, + label: None, + })), + ) + .await?; + let SubcommandReturnValue::RegisterAccount { account_id } = result else { + anyhow::bail!("Expected RegisterAccount return value"); + }; + Ok(account_id) +} + +/// Create a private account and return its ID. +async fn new_private_account(ctx: &mut TestContext) -> Result { + let result = wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Account(AccountSubcommand::New(NewSubcommand::Private { + cci: None, + label: None, + })), + ) + .await?; + let SubcommandReturnValue::RegisterAccount { account_id } = result else { + anyhow::bail!("Expected RegisterAccount return value"); + }; + Ok(account_id) +} + +#[test] +async fn create_ata_initializes_holding_account() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let owner_account_id = new_public_account(&mut ctx).await?; + + // Create a fungible token + let total_supply = 100_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Create the ATA for owner + definition + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(owner_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Derive expected ATA address and check on-chain state + let ata_program_id = Program::ata().id(); + let ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_account_id, definition_account_id), + ); + + let ata_acc = ctx + .sequencer_client() + .get_account(ata_id) + .await + .context("ATA account not found")?; + + assert_eq!(ata_acc.program_owner, Program::token().id()); + let holding = TokenHolding::try_from(&ata_acc.data)?; + assert_eq!( + holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: 0, + } + ); + + Ok(()) +} + +#[test] +async fn create_ata_is_idempotent() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let owner_account_id = new_public_account(&mut ctx).await?; + + // Create a fungible token + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply: 100, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Create the ATA once + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(owner_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Create the ATA a second time — must succeed (idempotent) + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(owner_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // State must be unchanged + let ata_program_id = Program::ata().id(); + let ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_account_id, definition_account_id), + ); + + let ata_acc = ctx + .sequencer_client() + .get_account(ata_id) + .await + .context("ATA account not found")?; + + assert_eq!(ata_acc.program_owner, Program::token().id()); + let holding = TokenHolding::try_from(&ata_acc.data)?; + assert_eq!( + holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: 0, + } + ); + + Ok(()) +} + +#[test] +async fn transfer_and_burn_via_ata() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let sender_account_id = new_public_account(&mut ctx).await?; + let recipient_account_id = new_public_account(&mut ctx).await?; + + let total_supply = 1000_u128; + + // Create a fungible token, supply goes to supply_account_id + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Derive ATA addresses + let ata_program_id = Program::ata().id(); + let sender_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(sender_account_id, definition_account_id), + ); + let recipient_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(recipient_account_id, definition_account_id), + ); + + // Create ATAs for sender and recipient + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(sender_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(recipient_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Fund sender's ATA from the supply account (direct token transfer) + let fund_amount = 200_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::Send { + from: format_public_account_id(supply_account_id), + to: Some(format_public_account_id(sender_ata_id)), + to_npk: None, + to_vpk: None, + amount: fund_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Transfer from sender's ATA to recipient's ATA via the ATA program + let transfer_amount = 50_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Send { + from: format_public_account_id(sender_account_id), + token_definition: definition_account_id.to_string(), + to: recipient_ata_id.to_string(), + amount: transfer_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Verify sender ATA balance decreased + let sender_ata_acc = ctx.sequencer_client().get_account(sender_ata_id).await?; + let sender_holding = TokenHolding::try_from(&sender_ata_acc.data)?; + assert_eq!( + sender_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: fund_amount - transfer_amount, + } + ); + + // Verify recipient ATA balance increased + let recipient_ata_acc = ctx.sequencer_client().get_account(recipient_ata_id).await?; + let recipient_holding = TokenHolding::try_from(&recipient_ata_acc.data)?; + assert_eq!( + recipient_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: transfer_amount, + } + ); + + // Burn from sender's ATA + let burn_amount = 30_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Burn { + holder: format_public_account_id(sender_account_id), + token_definition: definition_account_id.to_string(), + amount: burn_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Verify sender ATA balance after burn + let sender_ata_acc = ctx.sequencer_client().get_account(sender_ata_id).await?; + let sender_holding = TokenHolding::try_from(&sender_ata_acc.data)?; + assert_eq!( + sender_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: fund_amount - transfer_amount - burn_amount, + } + ); + + // Verify the token definition total_supply decreased by burn_amount + let definition_acc = ctx + .sequencer_client() + .get_account(definition_account_id) + .await?; + let token_definition = TokenDefinition::try_from(&definition_acc.data)?; + assert_eq!( + token_definition, + TokenDefinition::Fungible { + name: "TEST".to_owned(), + total_supply: total_supply - burn_amount, + metadata_id: None, + } + ); + + Ok(()) +} + +#[test] +async fn create_ata_with_private_owner() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let owner_account_id = new_private_account(&mut ctx).await?; + + // Create a fungible token + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply: 100, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Create the ATA for the private owner + definition + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_private_account_id(owner_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Derive expected ATA address and check on-chain state + let ata_program_id = Program::ata().id(); + let ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_account_id, definition_account_id), + ); + + let ata_acc = ctx + .sequencer_client() + .get_account(ata_id) + .await + .context("ATA account not found")?; + + assert_eq!(ata_acc.program_owner, Program::token().id()); + let holding = TokenHolding::try_from(&ata_acc.data)?; + assert_eq!( + holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: 0, + } + ); + + // Verify the private owner's commitment is in state + let commitment = ctx + .wallet() + .get_private_account_commitment(owner_account_id) + .context("Private owner commitment not found")?; + assert!(verify_commitment_is_in_state(commitment, ctx.sequencer_client()).await); + + Ok(()) +} + +#[test] +async fn transfer_via_ata_private_owner() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let sender_account_id = new_private_account(&mut ctx).await?; + let recipient_account_id = new_public_account(&mut ctx).await?; + + let total_supply = 1000_u128; + + // Create a fungible token + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Derive ATA addresses + let ata_program_id = Program::ata().id(); + let sender_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(sender_account_id, definition_account_id), + ); + let recipient_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(recipient_account_id, definition_account_id), + ); + + // Create ATAs for sender (private owner) and recipient (public owner) + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_private_account_id(sender_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_public_account_id(recipient_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Fund sender's ATA from the supply account (direct token transfer) + let fund_amount = 200_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::Send { + from: format_public_account_id(supply_account_id), + to: Some(format_public_account_id(sender_ata_id)), + to_npk: None, + to_vpk: None, + amount: fund_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Transfer from sender's ATA (private owner) to recipient's ATA + let transfer_amount = 50_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Send { + from: format_private_account_id(sender_account_id), + token_definition: definition_account_id.to_string(), + to: recipient_ata_id.to_string(), + amount: transfer_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Verify sender ATA balance decreased + let sender_ata_acc = ctx.sequencer_client().get_account(sender_ata_id).await?; + let sender_holding = TokenHolding::try_from(&sender_ata_acc.data)?; + assert_eq!( + sender_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: fund_amount - transfer_amount, + } + ); + + // Verify recipient ATA balance increased + let recipient_ata_acc = ctx.sequencer_client().get_account(recipient_ata_id).await?; + let recipient_holding = TokenHolding::try_from(&recipient_ata_acc.data)?; + assert_eq!( + recipient_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: transfer_amount, + } + ); + + // Verify the private sender's commitment is in state + let commitment = ctx + .wallet() + .get_private_account_commitment(sender_account_id) + .context("Private sender commitment not found")?; + assert!(verify_commitment_is_in_state(commitment, ctx.sequencer_client()).await); + + Ok(()) +} + +#[test] +async fn burn_via_ata_private_owner() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let definition_account_id = new_public_account(&mut ctx).await?; + let supply_account_id = new_public_account(&mut ctx).await?; + let holder_account_id = new_private_account(&mut ctx).await?; + + let total_supply = 500_u128; + + // Create a fungible token + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::New { + definition_account_id: format_public_account_id(definition_account_id), + supply_account_id: format_public_account_id(supply_account_id), + name: "TEST".to_owned(), + total_supply, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Derive holder's ATA address + let ata_program_id = Program::ata().id(); + let holder_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(holder_account_id, definition_account_id), + ); + + // Create ATA for the private holder + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Create { + owner: format_private_account_id(holder_account_id), + token_definition: definition_account_id.to_string(), + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Fund holder's ATA from the supply account + let fund_amount = 300_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Token(TokenProgramAgnosticSubcommand::Send { + from: format_public_account_id(supply_account_id), + to: Some(format_public_account_id(holder_ata_id)), + to_npk: None, + to_vpk: None, + amount: fund_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Burn from holder's ATA (private owner) + let burn_amount = 100_u128; + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Ata(AtaSubcommand::Burn { + holder: format_private_account_id(holder_account_id), + token_definition: definition_account_id.to_string(), + amount: burn_amount, + }), + ) + .await?; + + info!("Waiting for next block creation"); + tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; + + // Verify holder ATA balance after burn + let holder_ata_acc = ctx.sequencer_client().get_account(holder_ata_id).await?; + let holder_holding = TokenHolding::try_from(&holder_ata_acc.data)?; + assert_eq!( + holder_holding, + TokenHolding::Fungible { + definition_id: definition_account_id, + balance: fund_amount - burn_amount, + } + ); + + // Verify the token definition total_supply decreased by burn_amount + let definition_acc = ctx + .sequencer_client() + .get_account(definition_account_id) + .await?; + let token_definition = TokenDefinition::try_from(&definition_acc.data)?; + assert_eq!( + token_definition, + TokenDefinition::Fungible { + name: "TEST".to_owned(), + total_supply: total_supply - burn_amount, + metadata_id: None, + } + ); + + // Verify the private holder's commitment is in state + let commitment = ctx + .wallet() + .get_private_account_commitment(holder_account_id) + .context("Private holder commitment not found")?; + assert!(verify_commitment_is_in_state(commitment, ctx.sequencer_client()).await); + + Ok(()) +} diff --git a/nssa/src/program.rs b/nssa/src/program.rs index 3b372a22..a1694260 100644 --- a/nssa/src/program.rs +++ b/nssa/src/program.rs @@ -8,7 +8,9 @@ use serde::Serialize; use crate::{ error::NssaError, - program_methods::{AMM_ELF, AUTHENTICATED_TRANSFER_ELF, PINATA_ELF, TOKEN_ELF}, + program_methods::{ + AMM_ELF, ASSOCIATED_TOKEN_ACCOUNT_ELF, AUTHENTICATED_TRANSFER_ELF, PINATA_ELF, TOKEN_ELF, + }, }; /// Maximum number of cycles for a public execution. @@ -105,6 +107,12 @@ impl Program { pub fn amm() -> Self { Self::new(AMM_ELF.to_vec()).expect("The AMM program must be a valid Risc0 program") } + + #[must_use] + pub fn ata() -> Self { + Self::new(ASSOCIATED_TOKEN_ACCOUNT_ELF.to_vec()) + .expect("The ATA program must be a valid Risc0 program") + } } // TODO: Testnet only. Refactor to prevent compilation on mainnet. diff --git a/nssa/src/state.rs b/nssa/src/state.rs index 6dec4f35..4b8ea17b 100644 --- a/nssa/src/state.rs +++ b/nssa/src/state.rs @@ -146,6 +146,7 @@ impl V03State { this.insert_program(Program::authenticated_transfer_program()); this.insert_program(Program::token()); this.insert_program(Program::amm()); + this.insert_program(Program::ata()); this } diff --git a/program_methods/guest/Cargo.toml b/program_methods/guest/Cargo.toml index eabcffc8..29ef8304 100644 --- a/program_methods/guest/Cargo.toml +++ b/program_methods/guest/Cargo.toml @@ -13,5 +13,7 @@ token_core.workspace = true token_program.workspace = true amm_core.workspace = true amm_program.workspace = true +ata_core.workspace = true +ata_program.workspace = true risc0-zkvm.workspace = true serde = { workspace = true, default-features = false } diff --git a/program_methods/guest/src/bin/associated_token_account.rs b/program_methods/guest/src/bin/associated_token_account.rs new file mode 100644 index 00000000..89fb171b --- /dev/null +++ b/program_methods/guest/src/bin/associated_token_account.rs @@ -0,0 +1,65 @@ +use ata_core::Instruction; +use nssa_core::program::{ProgramInput, read_nssa_inputs, write_nssa_outputs_with_chained_call}; + +fn main() { + let ( + ProgramInput { + pre_states, + instruction, + }, + instruction_words, + ) = read_nssa_inputs::(); + + let pre_states_clone = pre_states.clone(); + + let (post_states, chained_calls) = match instruction { + Instruction::Create { ata_program_id } => { + let [owner, token_definition, ata_account] = pre_states + .try_into() + .expect("Create instruction requires exactly three accounts"); + ata_program::create::create_associated_token_account( + owner, + token_definition, + ata_account, + ata_program_id, + ) + } + Instruction::Transfer { + ata_program_id, + amount, + } => { + let [owner, sender_ata, recipient] = pre_states + .try_into() + .expect("Transfer instruction requires exactly three accounts"); + ata_program::transfer::transfer_from_associated_token_account( + owner, + sender_ata, + recipient, + ata_program_id, + amount, + ) + } + Instruction::Burn { + ata_program_id, + amount, + } => { + let [owner, holder_ata, token_definition] = pre_states + .try_into() + .expect("Burn instruction requires exactly three accounts"); + ata_program::burn::burn_from_associated_token_account( + owner, + holder_ata, + token_definition, + ata_program_id, + amount, + ) + } + }; + + write_nssa_outputs_with_chained_call( + instruction_words, + pre_states_clone, + post_states, + chained_calls, + ); +} diff --git a/programs/associated_token_account/Cargo.toml b/programs/associated_token_account/Cargo.toml new file mode 100644 index 00000000..98e0bfd0 --- /dev/null +++ b/programs/associated_token_account/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "ata_program" +version = "0.1.0" +edition = "2024" +license = { workspace = true } + +[dependencies] +nssa_core.workspace = true +token_core.workspace = true +ata_core.workspace = true diff --git a/programs/associated_token_account/core/Cargo.toml b/programs/associated_token_account/core/Cargo.toml new file mode 100644 index 00000000..7ca8d7fa --- /dev/null +++ b/programs/associated_token_account/core/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "ata_core" +version = "0.1.0" +edition = "2024" +license = { workspace = true } + +[dependencies] +nssa_core.workspace = true +serde.workspace = true +risc0-zkvm.workspace = true diff --git a/programs/associated_token_account/core/src/lib.rs b/programs/associated_token_account/core/src/lib.rs new file mode 100644 index 00000000..994c632b --- /dev/null +++ b/programs/associated_token_account/core/src/lib.rs @@ -0,0 +1,82 @@ +pub use nssa_core::program::PdaSeed; +use nssa_core::{ + account::{AccountId, AccountWithMetadata}, + program::ProgramId, +}; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize)] +pub enum Instruction { + /// Create the Associated Token Account for (owner, definition). + /// Idempotent: no-op if the account already exists. + /// + /// Required accounts (3): + /// - Owner account + /// - Token definition account + /// - Associated token account (default/uninitialized, or already initialized) + /// + /// `token_program_id` is derived from `token_definition.account.program_owner`. + Create { ata_program_id: ProgramId }, + + /// Transfer tokens FROM owner's ATA to a recipient holding account. + /// Uses PDA seeds to authorize the ATA in the chained Token::Transfer call. + /// + /// Required accounts (3): + /// - Owner account (authorized) + /// - Sender ATA (owner's token holding) + /// - Recipient token holding (any account; auto-created if default) + /// + /// `token_program_id` is derived from `sender_ata.account.program_owner`. + Transfer { + ata_program_id: ProgramId, + amount: u128, + }, + + /// Burn tokens FROM owner's ATA. + /// Uses PDA seeds to authorize the ATA in the chained Token::Burn call. + /// + /// Required accounts (3): + /// - Owner account (authorized) + /// - Owner's ATA (the holding to burn from) + /// - Token definition account + /// + /// `token_program_id` is derived from `holder_ata.account.program_owner`. + Burn { + ata_program_id: ProgramId, + amount: u128, + }, +} + +pub fn compute_ata_seed(owner_id: AccountId, definition_id: AccountId) -> PdaSeed { + use risc0_zkvm::sha::{Impl, Sha256}; + let mut bytes = [0u8; 64]; + bytes[0..32].copy_from_slice(&owner_id.to_bytes()); + bytes[32..64].copy_from_slice(&definition_id.to_bytes()); + PdaSeed::new( + Impl::hash_bytes(&bytes) + .as_bytes() + .try_into() + .expect("Hash output must be exactly 32 bytes long"), + ) +} + +pub fn get_associated_token_account_id(ata_program_id: &ProgramId, seed: &PdaSeed) -> AccountId { + AccountId::from((ata_program_id, seed)) +} + +/// Verify the ATA's address matches `(ata_program_id, owner, definition)` and return +/// the [`PdaSeed`] for use in chained calls. +pub fn verify_ata_and_get_seed( + ata_account: &AccountWithMetadata, + owner: &AccountWithMetadata, + definition_id: AccountId, + ata_program_id: ProgramId, +) -> PdaSeed { + let seed = compute_ata_seed(owner.account_id, definition_id); + let expected_id = get_associated_token_account_id(&ata_program_id, &seed); + assert_eq!( + ata_account.account_id, expected_id, + "ATA account ID does not match expected derivation" + ); + seed +} diff --git a/programs/associated_token_account/src/burn.rs b/programs/associated_token_account/src/burn.rs new file mode 100644 index 00000000..4940fdeb --- /dev/null +++ b/programs/associated_token_account/src/burn.rs @@ -0,0 +1,39 @@ +use nssa_core::{ + account::AccountWithMetadata, + program::{AccountPostState, ChainedCall, ProgramId}, +}; +use token_core::TokenHolding; + +pub fn burn_from_associated_token_account( + owner: AccountWithMetadata, + holder_ata: AccountWithMetadata, + token_definition: AccountWithMetadata, + ata_program_id: ProgramId, + amount: u128, +) -> (Vec, Vec) { + let token_program_id = holder_ata.account.program_owner; + assert!(owner.is_authorized, "Owner authorization is missing"); + let definition_id = TokenHolding::try_from(&holder_ata.account.data) + .expect("Holder ATA must hold a valid token") + .definition_id(); + let seed = + ata_core::verify_ata_and_get_seed(&holder_ata, &owner, definition_id, ata_program_id); + + let post_states = vec![ + AccountPostState::new(owner.account.clone()), + AccountPostState::new(holder_ata.account.clone()), + AccountPostState::new(token_definition.account.clone()), + ]; + let mut holder_ata_auth = holder_ata.clone(); + holder_ata_auth.is_authorized = true; + + let chained_call = ChainedCall::new( + token_program_id, + vec![token_definition.clone(), holder_ata_auth], + &token_core::Instruction::Burn { + amount_to_burn: amount, + }, + ) + .with_pda_seeds(vec![seed]); + (post_states, vec![chained_call]) +} diff --git a/programs/associated_token_account/src/create.rs b/programs/associated_token_account/src/create.rs new file mode 100644 index 00000000..86109952 --- /dev/null +++ b/programs/associated_token_account/src/create.rs @@ -0,0 +1,44 @@ +use nssa_core::{ + account::{Account, AccountWithMetadata}, + program::{AccountPostState, ChainedCall, ProgramId}, +}; + +pub fn create_associated_token_account( + owner: AccountWithMetadata, + token_definition: AccountWithMetadata, + ata_account: AccountWithMetadata, + ata_program_id: ProgramId, +) -> (Vec, Vec) { + // No authorization check needed: create is idempotent, so anyone can call it safely. + let token_program_id = token_definition.account.program_owner; + ata_core::verify_ata_and_get_seed( + &ata_account, + &owner, + token_definition.account_id, + ata_program_id, + ); + + // Idempotent: already initialized → no-op + if ata_account.account != Account::default() { + return ( + vec![ + AccountPostState::new_claimed_if_default(owner.account.clone()), + AccountPostState::new(token_definition.account.clone()), + AccountPostState::new(ata_account.account.clone()), + ], + vec![], + ); + } + + let post_states = vec![ + AccountPostState::new_claimed_if_default(owner.account.clone()), + AccountPostState::new(token_definition.account.clone()), + AccountPostState::new(ata_account.account.clone()), + ]; + let chained_call = ChainedCall::new( + token_program_id, + vec![token_definition.clone(), ata_account.clone()], + &token_core::Instruction::InitializeAccount, + ); + (post_states, vec![chained_call]) +} diff --git a/programs/associated_token_account/src/lib.rs b/programs/associated_token_account/src/lib.rs new file mode 100644 index 00000000..13740f0a --- /dev/null +++ b/programs/associated_token_account/src/lib.rs @@ -0,0 +1,10 @@ +//! The Associated Token Account Program implementation. + +pub use ata_core as core; + +pub mod burn; +pub mod create; +pub mod transfer; + +#[cfg(test)] +mod tests; diff --git a/programs/associated_token_account/src/tests.rs b/programs/associated_token_account/src/tests.rs new file mode 100644 index 00000000..9835bf37 --- /dev/null +++ b/programs/associated_token_account/src/tests.rs @@ -0,0 +1,153 @@ +#![cfg(test)] + +use ata_core::{compute_ata_seed, get_associated_token_account_id}; +use nssa_core::account::{Account, AccountId, AccountWithMetadata, Data}; +use token_core::{TokenDefinition, TokenHolding}; + +const ATA_PROGRAM_ID: nssa_core::program::ProgramId = [1u32; 8]; +const TOKEN_PROGRAM_ID: nssa_core::program::ProgramId = [2u32; 8]; + +fn owner_id() -> AccountId { + AccountId::new([0x01u8; 32]) +} + +fn definition_id() -> AccountId { + AccountId::new([0x02u8; 32]) +} + +fn ata_id() -> AccountId { + get_associated_token_account_id( + &ATA_PROGRAM_ID, + &compute_ata_seed(owner_id(), definition_id()), + ) +} + +fn owner_account() -> AccountWithMetadata { + AccountWithMetadata { + account: Account::default(), + is_authorized: true, + account_id: owner_id(), + } +} + +fn definition_account() -> AccountWithMetadata { + AccountWithMetadata { + account: Account { + program_owner: TOKEN_PROGRAM_ID, + balance: 0, + data: Data::from(&TokenDefinition::Fungible { + name: "TEST".to_string(), + total_supply: 1000, + metadata_id: None, + }), + nonce: nssa_core::account::Nonce(0), + }, + is_authorized: false, + account_id: definition_id(), + } +} + +fn uninitialized_ata_account() -> AccountWithMetadata { + AccountWithMetadata { + account: Account::default(), + is_authorized: false, + account_id: ata_id(), + } +} + +fn initialized_ata_account() -> AccountWithMetadata { + AccountWithMetadata { + account: Account { + program_owner: TOKEN_PROGRAM_ID, + balance: 0, + data: Data::from(&TokenHolding::Fungible { + definition_id: definition_id(), + balance: 100, + }), + nonce: nssa_core::account::Nonce(0), + }, + is_authorized: false, + account_id: ata_id(), + } +} + +#[test] +fn create_emits_chained_call_for_uninitialized_ata() { + let (post_states, chained_calls) = crate::create::create_associated_token_account( + owner_account(), + definition_account(), + uninitialized_ata_account(), + ATA_PROGRAM_ID, + ); + + assert_eq!(post_states.len(), 3); + assert_eq!(chained_calls.len(), 1); + assert_eq!(chained_calls[0].program_id, TOKEN_PROGRAM_ID); +} + +#[test] +fn create_is_idempotent_for_initialized_ata() { + let (post_states, chained_calls) = crate::create::create_associated_token_account( + owner_account(), + definition_account(), + initialized_ata_account(), + ATA_PROGRAM_ID, + ); + + assert_eq!(post_states.len(), 3); + assert!( + chained_calls.is_empty(), + "Should emit no chained call for already-initialized ATA" + ); +} + +#[test] +#[should_panic(expected = "ATA account ID does not match expected derivation")] +fn create_panics_on_wrong_ata_address() { + let wrong_ata = AccountWithMetadata { + account: Account::default(), + is_authorized: false, + account_id: AccountId::new([0xFFu8; 32]), + }; + + crate::create::create_associated_token_account( + owner_account(), + definition_account(), + wrong_ata, + ATA_PROGRAM_ID, + ); +} + +#[test] +fn get_associated_token_account_id_is_deterministic() { + let seed = compute_ata_seed(owner_id(), definition_id()); + let id1 = get_associated_token_account_id(&ATA_PROGRAM_ID, &seed); + let id2 = get_associated_token_account_id(&ATA_PROGRAM_ID, &seed); + assert_eq!(id1, id2); +} + +#[test] +fn get_associated_token_account_id_differs_by_owner() { + let other_owner = AccountId::new([0x99u8; 32]); + let id1 = get_associated_token_account_id( + &ATA_PROGRAM_ID, + &compute_ata_seed(owner_id(), definition_id()), + ); + let id2 = get_associated_token_account_id( + &ATA_PROGRAM_ID, + &compute_ata_seed(other_owner, definition_id()), + ); + assert_ne!(id1, id2); +} + +#[test] +fn get_associated_token_account_id_differs_by_definition() { + let other_def = AccountId::new([0x99u8; 32]); + let id1 = get_associated_token_account_id( + &ATA_PROGRAM_ID, + &compute_ata_seed(owner_id(), definition_id()), + ); + let id2 = + get_associated_token_account_id(&ATA_PROGRAM_ID, &compute_ata_seed(owner_id(), other_def)); + assert_ne!(id1, id2); +} diff --git a/programs/associated_token_account/src/transfer.rs b/programs/associated_token_account/src/transfer.rs new file mode 100644 index 00000000..89d70135 --- /dev/null +++ b/programs/associated_token_account/src/transfer.rs @@ -0,0 +1,39 @@ +use nssa_core::{ + account::AccountWithMetadata, + program::{AccountPostState, ChainedCall, ProgramId}, +}; +use token_core::TokenHolding; + +pub fn transfer_from_associated_token_account( + owner: AccountWithMetadata, + sender_ata: AccountWithMetadata, + recipient: AccountWithMetadata, + ata_program_id: ProgramId, + amount: u128, +) -> (Vec, Vec) { + let token_program_id = sender_ata.account.program_owner; + assert!(owner.is_authorized, "Owner authorization is missing"); + let definition_id = TokenHolding::try_from(&sender_ata.account.data) + .expect("Sender ATA must hold a valid token") + .definition_id(); + let seed = + ata_core::verify_ata_and_get_seed(&sender_ata, &owner, definition_id, ata_program_id); + + let post_states = vec![ + AccountPostState::new(owner.account.clone()), + AccountPostState::new(sender_ata.account.clone()), + AccountPostState::new(recipient.account.clone()), + ]; + let mut sender_ata_auth = sender_ata.clone(); + sender_ata_auth.is_authorized = true; + + let chained_call = ChainedCall::new( + token_program_id, + vec![sender_ata_auth, recipient.clone()], + &token_core::Instruction::Transfer { + amount_to_transfer: amount, + }, + ) + .with_pda_seeds(vec![seed]); + (post_states, vec![chained_call]) +} diff --git a/wallet/Cargo.toml b/wallet/Cargo.toml index 2e628790..7207a06b 100644 --- a/wallet/Cargo.toml +++ b/wallet/Cargo.toml @@ -15,6 +15,7 @@ key_protocol.workspace = true sequencer_service_rpc = { workspace = true, features = ["client"] } token_core.workspace = true amm_core.workspace = true +ata_core.workspace = true anyhow.workspace = true thiserror.workspace = true diff --git a/wallet/src/cli/mod.rs b/wallet/src/cli/mod.rs index 85e792cc..6463dee8 100644 --- a/wallet/src/cli/mod.rs +++ b/wallet/src/cli/mod.rs @@ -14,8 +14,9 @@ use crate::{ chain::ChainSubcommand, config::ConfigSubcommand, programs::{ - amm::AmmProgramAgnosticSubcommand, native_token_transfer::AuthTransferSubcommand, - pinata::PinataProgramAgnosticSubcommand, token::TokenProgramAgnosticSubcommand, + amm::AmmProgramAgnosticSubcommand, ata::AtaSubcommand, + native_token_transfer::AuthTransferSubcommand, pinata::PinataProgramAgnosticSubcommand, + token::TokenProgramAgnosticSubcommand, }, }, }; @@ -52,6 +53,9 @@ pub enum Command { /// AMM program interaction subcommand. #[command(subcommand)] AMM(AmmProgramAgnosticSubcommand), + /// Associated Token Account program interaction subcommand. + #[command(subcommand)] + Ata(AtaSubcommand), /// Check the wallet can connect to the node and builtin local programs /// match the remote versions. CheckHealth, @@ -158,6 +162,7 @@ pub async fn execute_subcommand( } Command::Token(token_subcommand) => token_subcommand.handle_subcommand(wallet_core).await?, Command::AMM(amm_subcommand) => amm_subcommand.handle_subcommand(wallet_core).await?, + Command::Ata(ata_subcommand) => ata_subcommand.handle_subcommand(wallet_core).await?, Command::Config(config_subcommand) => { config_subcommand.handle_subcommand(wallet_core).await? } diff --git a/wallet/src/cli/programs/ata.rs b/wallet/src/cli/programs/ata.rs new file mode 100644 index 00000000..1a63fa67 --- /dev/null +++ b/wallet/src/cli/programs/ata.rs @@ -0,0 +1,240 @@ +use anyhow::Result; +use clap::Subcommand; +use common::transaction::NSSATransaction; +use nssa::{Account, AccountId, program::Program}; +use token_core::TokenHolding; + +use crate::{ + AccDecodeData::Decode, + WalletCore, + cli::{SubcommandReturnValue, WalletSubcommand}, + helperfunctions::{AccountPrivacyKind, parse_addr_with_privacy_prefix}, + program_facades::ata::Ata, +}; + +/// Represents generic CLI subcommand for a wallet working with the ATA program. +#[derive(Subcommand, Debug, Clone)] +pub enum AtaSubcommand { + /// Derive and print the Associated Token Account address (local only, no network). + Address { + /// Owner account - valid 32 byte base58 string (no privacy prefix). + #[arg(long)] + owner: String, + /// Token definition account - valid 32 byte base58 string (no privacy prefix). + #[arg(long)] + token_definition: String, + }, + /// Create (or idempotently no-op) the Associated Token Account. + Create { + /// Owner account - valid 32 byte base58 string with privacy prefix. + #[arg(long)] + owner: String, + /// Token definition account - valid 32 byte base58 string WITHOUT privacy prefix. + #[arg(long)] + token_definition: String, + }, + /// Send tokens from owner's ATA to a recipient token holding account. + Send { + /// Sender account - valid 32 byte base58 string with privacy prefix. + #[arg(long)] + from: String, + /// Token definition account - valid 32 byte base58 string WITHOUT privacy prefix. + #[arg(long)] + token_definition: String, + /// Recipient account - valid 32 byte base58 string WITHOUT privacy prefix. + #[arg(long)] + to: String, + #[arg(long)] + amount: u128, + }, + /// Burn tokens from holder's ATA. + Burn { + /// Holder account - valid 32 byte base58 string with privacy prefix. + #[arg(long)] + holder: String, + /// Token definition account - valid 32 byte base58 string WITHOUT privacy prefix. + #[arg(long)] + token_definition: String, + #[arg(long)] + amount: u128, + }, + /// List all ATAs for a given owner across multiple token definitions. + List { + /// Owner account - valid 32 byte base58 string (no privacy prefix). + #[arg(long)] + owner: String, + /// Token definition accounts - valid 32 byte base58 strings (no privacy prefix). + #[arg(long, num_args = 1..)] + token_definition: Vec, + }, +} + +impl WalletSubcommand for AtaSubcommand { + async fn handle_subcommand( + self, + wallet_core: &mut WalletCore, + ) -> Result { + match self { + Self::Address { + owner, + token_definition, + } => { + let owner_id: AccountId = owner.parse()?; + let definition_id: AccountId = token_definition.parse()?; + let ata_program_id = Program::ata().id(); + let ata_id = ata_core::get_associated_token_account_id( + &ata_program_id, + &ata_core::compute_ata_seed(owner_id, definition_id), + ); + println!("{ata_id}"); + Ok(SubcommandReturnValue::Empty) + } + Self::Create { + owner, + token_definition, + } => { + let (owner_str, owner_privacy) = parse_addr_with_privacy_prefix(&owner)?; + let owner_id: AccountId = owner_str.parse()?; + let definition_id: AccountId = token_definition.parse()?; + + match owner_privacy { + AccountPrivacyKind::Public => { + Ata(wallet_core) + .send_create(owner_id, definition_id) + .await?; + Ok(SubcommandReturnValue::Empty) + } + AccountPrivacyKind::Private => { + let (tx_hash, secret) = Ata(wallet_core) + .send_create_private_owner(owner_id, definition_id) + .await?; + + println!("Transaction hash is {tx_hash}"); + + let tx = wallet_core.poll_native_token_transfer(tx_hash).await?; + if let NSSATransaction::PrivacyPreserving(tx) = tx { + wallet_core.decode_insert_privacy_preserving_transaction_results( + &tx, + &[Decode(secret, owner_id)], + )?; + } + + wallet_core.store_persistent_data().await?; + Ok(SubcommandReturnValue::Empty) + } + } + } + Self::Send { + from, + token_definition, + to, + amount, + } => { + let (from_str, from_privacy) = parse_addr_with_privacy_prefix(&from)?; + let from_id: AccountId = from_str.parse()?; + let definition_id: AccountId = token_definition.parse()?; + let to_id: AccountId = to.parse()?; + + match from_privacy { + AccountPrivacyKind::Public => { + Ata(wallet_core) + .send_transfer(from_id, definition_id, to_id, amount) + .await?; + Ok(SubcommandReturnValue::Empty) + } + AccountPrivacyKind::Private => { + let (tx_hash, secret) = Ata(wallet_core) + .send_transfer_private_owner(from_id, definition_id, to_id, amount) + .await?; + + println!("Transaction hash is {tx_hash}"); + + let tx = wallet_core.poll_native_token_transfer(tx_hash).await?; + if let NSSATransaction::PrivacyPreserving(tx) = tx { + wallet_core.decode_insert_privacy_preserving_transaction_results( + &tx, + &[Decode(secret, from_id)], + )?; + } + + wallet_core.store_persistent_data().await?; + Ok(SubcommandReturnValue::Empty) + } + } + } + Self::Burn { + holder, + token_definition, + amount, + } => { + let (holder_str, holder_privacy) = parse_addr_with_privacy_prefix(&holder)?; + let holder_id: AccountId = holder_str.parse()?; + let definition_id: AccountId = token_definition.parse()?; + + match holder_privacy { + AccountPrivacyKind::Public => { + Ata(wallet_core) + .send_burn(holder_id, definition_id, amount) + .await?; + Ok(SubcommandReturnValue::Empty) + } + AccountPrivacyKind::Private => { + let (tx_hash, secret) = Ata(wallet_core) + .send_burn_private_owner(holder_id, definition_id, amount) + .await?; + + println!("Transaction hash is {tx_hash}"); + + let tx = wallet_core.poll_native_token_transfer(tx_hash).await?; + if let NSSATransaction::PrivacyPreserving(tx) = tx { + wallet_core.decode_insert_privacy_preserving_transaction_results( + &tx, + &[Decode(secret, holder_id)], + )?; + } + + wallet_core.store_persistent_data().await?; + Ok(SubcommandReturnValue::Empty) + } + } + } + Self::List { + owner, + token_definition, + } => { + let owner_id: AccountId = owner.parse()?; + let ata_program_id = Program::ata().id(); + + for def in &token_definition { + let definition_id: AccountId = def.parse()?; + let ata_id = ata_core::get_associated_token_account_id( + &ata_program_id, + &ata_core::compute_ata_seed(owner_id, definition_id), + ); + let account = wallet_core.get_account_public(ata_id).await?; + + if account == Account::default() { + println!("No ATA for definition {definition_id}"); + } else { + let holding = TokenHolding::try_from(&account.data)?; + match holding { + TokenHolding::Fungible { balance, .. } => { + println!( + "ATA {ata_id} (definition {definition_id}): balance {balance}" + ); + } + TokenHolding::NftMaster { .. } + | TokenHolding::NftPrintedCopy { .. } => { + println!( + "ATA {ata_id} (definition {definition_id}): unsupported token type" + ); + } + } + } + } + + Ok(SubcommandReturnValue::Empty) + } + } + } +} diff --git a/wallet/src/cli/programs/mod.rs b/wallet/src/cli/programs/mod.rs index 96a4e766..f6e4b5dc 100644 --- a/wallet/src/cli/programs/mod.rs +++ b/wallet/src/cli/programs/mod.rs @@ -1,4 +1,5 @@ pub mod amm; +pub mod ata; pub mod native_token_transfer; pub mod pinata; pub mod token; diff --git a/wallet/src/lib.rs b/wallet/src/lib.rs index bf82a1bd..a09d477e 100644 --- a/wallet/src/lib.rs +++ b/wallet/src/lib.rs @@ -64,6 +64,8 @@ pub enum ExecutionFailureKind { InsufficientFundsError, #[error("Account {0} data is invalid")] AccountDataError(AccountId), + #[error("Failed to build transaction: {0}")] + TransactionBuildError(#[from] nssa::error::NssaError), } #[expect(clippy::partial_pub_fields, reason = "TODO: make all fields private")] diff --git a/wallet/src/program_facades/ata.rs b/wallet/src/program_facades/ata.rs new file mode 100644 index 00000000..ac60fb63 --- /dev/null +++ b/wallet/src/program_facades/ata.rs @@ -0,0 +1,280 @@ +use std::collections::HashMap; + +use ata_core::{compute_ata_seed, get_associated_token_account_id}; +use common::{HashType, transaction::NSSATransaction}; +use nssa::{ + AccountId, privacy_preserving_transaction::circuit::ProgramWithDependencies, program::Program, +}; +use nssa_core::SharedSecretKey; +use sequencer_service_rpc::RpcClient as _; + +use crate::{ExecutionFailureKind, PrivacyPreservingAccount, WalletCore}; + +pub struct Ata<'wallet>(pub &'wallet WalletCore); + +impl Ata<'_> { + pub async fn send_create( + &self, + owner_id: AccountId, + definition_id: AccountId, + ) -> Result { + let program = Program::ata(); + let ata_program_id = program.id(); + let ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let account_ids = vec![owner_id, definition_id, ata_id]; + + let nonces = self + .0 + .get_accounts_nonces(vec![owner_id]) + .await + .map_err(ExecutionFailureKind::SequencerError)?; + + let Some(signing_key) = self + .0 + .storage + .user_data + .get_pub_account_signing_key(owner_id) + else { + return Err(ExecutionFailureKind::KeyNotFoundError); + }; + + let instruction = ata_core::Instruction::Create { ata_program_id }; + + let message = nssa::public_transaction::Message::try_new( + program.id(), + account_ids, + nonces, + instruction, + )?; + + let witness_set = + nssa::public_transaction::WitnessSet::for_message(&message, &[signing_key]); + + let tx = nssa::PublicTransaction::new(message, witness_set); + + Ok(self + .0 + .sequencer_client + .send_transaction(NSSATransaction::Public(tx)) + .await?) + } + + pub async fn send_transfer( + &self, + owner_id: AccountId, + definition_id: AccountId, + recipient_id: AccountId, + amount: u128, + ) -> Result { + let program = Program::ata(); + let ata_program_id = program.id(); + let sender_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let account_ids = vec![owner_id, sender_ata_id, recipient_id]; + + let nonces = self + .0 + .get_accounts_nonces(vec![owner_id]) + .await + .map_err(ExecutionFailureKind::SequencerError)?; + + let Some(signing_key) = self + .0 + .storage + .user_data + .get_pub_account_signing_key(owner_id) + else { + return Err(ExecutionFailureKind::KeyNotFoundError); + }; + + let instruction = ata_core::Instruction::Transfer { + ata_program_id, + amount, + }; + + let message = nssa::public_transaction::Message::try_new( + program.id(), + account_ids, + nonces, + instruction, + )?; + + let witness_set = + nssa::public_transaction::WitnessSet::for_message(&message, &[signing_key]); + + let tx = nssa::PublicTransaction::new(message, witness_set); + + Ok(self + .0 + .sequencer_client + .send_transaction(NSSATransaction::Public(tx)) + .await?) + } + + pub async fn send_burn( + &self, + owner_id: AccountId, + definition_id: AccountId, + amount: u128, + ) -> Result { + let program = Program::ata(); + let ata_program_id = program.id(); + let holder_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let account_ids = vec![owner_id, holder_ata_id, definition_id]; + + let nonces = self + .0 + .get_accounts_nonces(vec![owner_id]) + .await + .map_err(ExecutionFailureKind::SequencerError)?; + + let Some(signing_key) = self + .0 + .storage + .user_data + .get_pub_account_signing_key(owner_id) + else { + return Err(ExecutionFailureKind::KeyNotFoundError); + }; + + let instruction = ata_core::Instruction::Burn { + ata_program_id, + amount, + }; + + let message = nssa::public_transaction::Message::try_new( + program.id(), + account_ids, + nonces, + instruction, + )?; + + let witness_set = + nssa::public_transaction::WitnessSet::for_message(&message, &[signing_key]); + + let tx = nssa::PublicTransaction::new(message, witness_set); + + Ok(self + .0 + .sequencer_client + .send_transaction(NSSATransaction::Public(tx)) + .await?) + } + + pub async fn send_create_private_owner( + &self, + owner_id: AccountId, + definition_id: AccountId, + ) -> Result<(HashType, SharedSecretKey), ExecutionFailureKind> { + let ata_program_id = Program::ata().id(); + let ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let instruction = ata_core::Instruction::Create { ata_program_id }; + let instruction_data = + Program::serialize_instruction(instruction).expect("Instruction should serialize"); + + let accounts = vec![ + PrivacyPreservingAccount::PrivateOwned(owner_id), + PrivacyPreservingAccount::Public(definition_id), + PrivacyPreservingAccount::Public(ata_id), + ]; + + self.0 + .send_privacy_preserving_tx(accounts, instruction_data, &ata_with_token_dependency()) + .await + .map(|(hash, mut secrets)| { + let secret = secrets.pop().expect("expected owner's secret"); + (hash, secret) + }) + } + + pub async fn send_transfer_private_owner( + &self, + owner_id: AccountId, + definition_id: AccountId, + recipient_id: AccountId, + amount: u128, + ) -> Result<(HashType, SharedSecretKey), ExecutionFailureKind> { + let ata_program_id = Program::ata().id(); + let sender_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let instruction = ata_core::Instruction::Transfer { + ata_program_id, + amount, + }; + let instruction_data = + Program::serialize_instruction(instruction).expect("Instruction should serialize"); + + let accounts = vec![ + PrivacyPreservingAccount::PrivateOwned(owner_id), + PrivacyPreservingAccount::Public(sender_ata_id), + PrivacyPreservingAccount::Public(recipient_id), + ]; + + self.0 + .send_privacy_preserving_tx(accounts, instruction_data, &ata_with_token_dependency()) + .await + .map(|(hash, mut secrets)| { + let secret = secrets.pop().expect("expected owner's secret"); + (hash, secret) + }) + } + + pub async fn send_burn_private_owner( + &self, + owner_id: AccountId, + definition_id: AccountId, + amount: u128, + ) -> Result<(HashType, SharedSecretKey), ExecutionFailureKind> { + let ata_program_id = Program::ata().id(); + let holder_ata_id = get_associated_token_account_id( + &ata_program_id, + &compute_ata_seed(owner_id, definition_id), + ); + + let instruction = ata_core::Instruction::Burn { + ata_program_id, + amount, + }; + let instruction_data = + Program::serialize_instruction(instruction).expect("Instruction should serialize"); + + let accounts = vec![ + PrivacyPreservingAccount::PrivateOwned(owner_id), + PrivacyPreservingAccount::Public(holder_ata_id), + PrivacyPreservingAccount::Public(definition_id), + ]; + + self.0 + .send_privacy_preserving_tx(accounts, instruction_data, &ata_with_token_dependency()) + .await + .map(|(hash, mut secrets)| { + let secret = secrets.pop().expect("expected owner's secret"); + (hash, secret) + }) + } +} + +fn ata_with_token_dependency() -> ProgramWithDependencies { + let token = Program::token(); + let mut deps = HashMap::new(); + deps.insert(token.id(), token); + ProgramWithDependencies::new(Program::ata(), deps) +} diff --git a/wallet/src/program_facades/mod.rs b/wallet/src/program_facades/mod.rs index 5fdcdb39..a0f8189c 100644 --- a/wallet/src/program_facades/mod.rs +++ b/wallet/src/program_facades/mod.rs @@ -2,6 +2,7 @@ //! on-chain programs. pub mod amm; +pub mod ata; pub mod native_token_transfer; pub mod pinata; pub mod token;