From 53e9b57346ac201f36e7fc40a9217ad38172551a Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 10:46:37 -0500 Subject: [PATCH 1/7] Remove non-standard increase_allowance and decrease_allowance from ERC20 --- packages/core-cairo/CHANGELOG.md | 5 ++ packages/core-cairo/src/erc20.test.ts | 7 -- packages/core-cairo/src/erc20.test.ts.md | 97 --------------------- packages/core-cairo/src/erc20.test.ts.snap | Bin 2408 -> 2233 bytes packages/core-cairo/src/erc20.ts | 46 ---------- packages/core-cairo/src/utils/version.ts | 2 +- packages/ui/src/cairo/ERC20Controls.svelte | 8 -- 7 files changed, 6 insertions(+), 159 deletions(-) diff --git a/packages/core-cairo/CHANGELOG.md b/packages/core-cairo/CHANGELOG.md index 8f1f01474..b3ce27d6a 100644 --- a/packages/core-cairo/CHANGELOG.md +++ b/packages/core-cairo/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Unreleased + +- **Breaking changes**: + - Remove non-standard `safeAllowance` option from ERC20. + ## 0.8.0 (2023-12-11) - **Breaking changes**: diff --git a/packages/core-cairo/src/erc20.test.ts b/packages/core-cairo/src/erc20.test.ts index 27404f99a..87e9776ea 100644 --- a/packages/core-cairo/src/erc20.test.ts +++ b/packages/core-cairo/src/erc20.test.ts @@ -68,17 +68,12 @@ testERC20('erc20 mintable with roles', { access: 'roles', }); -testERC20('erc20 safe allowance', { - safeAllowance: true, -}); - testERC20('erc20 full upgradeable', { premint: '2000', access: 'ownable', burnable: true, mintable: true, pausable: true, - safeAllowance: true, upgradeable: true, }); @@ -88,7 +83,6 @@ testERC20('erc20 full upgradeable with roles', { burnable: true, mintable: true, pausable: true, - safeAllowance: true, upgradeable: true, }); @@ -104,7 +98,6 @@ testAPIEquivalence('erc20 API full upgradeable', { burnable: true, mintable: true, pausable: true, - safeAllowance: true, upgradeable: true, }); diff --git a/packages/core-cairo/src/erc20.test.ts.md b/packages/core-cairo/src/erc20.test.ts.md index f9ce8e885..a21e92fc3 100644 --- a/packages/core-cairo/src/erc20.test.ts.md +++ b/packages/core-cairo/src/erc20.test.ts.md @@ -734,51 +734,6 @@ Generated by [AVA](https://avajs.dev). }␊ ` -## erc20 safe allowance - -> Snapshot 1 - - `// SPDX-License-Identifier: MIT␊ - ␊ - #[starknet::contract]␊ - mod MyToken {␊ - use openzeppelin::token::erc20::ERC20Component;␊ - ␊ - component!(path: ERC20Component, storage: erc20, event: ERC20Event);␊ - ␊ - #[abi(embed_v0)]␊ - impl ERC20MetadataImpl = ERC20Component::ERC20MetadataImpl;␊ - #[abi(embed_v0)]␊ - impl ERC20Impl = ERC20Component::ERC20Impl;␊ - #[abi(embed_v0)]␊ - impl ERC20CamelOnlyImpl = ERC20Component::ERC20CamelOnlyImpl;␊ - #[abi(embed_v0)]␊ - impl SafeAllowanceImpl = ERC20Component::SafeAllowanceImpl;␊ - #[abi(embed_v0)]␊ - impl SafeAllowanceCamelImpl = ERC20Component::SafeAllowanceCamelImpl;␊ - ␊ - impl ERC20InternalImpl = ERC20Component::InternalImpl;␊ - ␊ - #[storage]␊ - struct Storage {␊ - #[substorage(v0)]␊ - erc20: ERC20Component::Storage,␊ - }␊ - ␊ - #[event]␊ - #[derive(Drop, starknet::Event)]␊ - enum Event {␊ - #[flat]␊ - ERC20Event: ERC20Component::Event,␊ - }␊ - ␊ - #[constructor]␊ - fn constructor(ref self: ContractState) {␊ - self.erc20.initializer('MyToken', 'MTK');␊ - }␊ - }␊ - ` - ## erc20 full upgradeable > Snapshot 1 @@ -904,32 +859,6 @@ Generated by [AVA](https://avajs.dev). self.transfer_from(sender, recipient, amount)␊ }␊ }␊ - ␊ - #[external(v0)]␊ - impl SafeAllowanceImpl of interface::ISafeAllowance {␊ - fn increase_allowance(ref self: ContractState, spender: ContractAddress, added_value: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.erc20.increase_allowance(spender, added_value)␊ - }␊ - ␊ - fn decrease_allowance(ref self: ContractState, spender: ContractAddress, subtracted_value: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.erc20.decrease_allowance(spender, subtracted_value)␊ - }␊ - }␊ - ␊ - #[external(v0)]␊ - impl SafeAllowanceCamelImpl of interface::ISafeAllowanceCamel {␊ - fn increaseAllowance(ref self: ContractState, spender: ContractAddress, addedValue: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.increase_allowance(spender, addedValue)␊ - }␊ - ␊ - fn decreaseAllowance(ref self: ContractState, spender: ContractAddress, subtractedValue: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.decrease_allowance(spender, subtractedValue)␊ - }␊ - }␊ ␊ #[generate_trait]␊ #[external(v0)]␊ @@ -1117,32 +1046,6 @@ Generated by [AVA](https://avajs.dev). self.transfer_from(sender, recipient, amount)␊ }␊ }␊ - ␊ - #[external(v0)]␊ - impl SafeAllowanceImpl of interface::ISafeAllowance {␊ - fn increase_allowance(ref self: ContractState, spender: ContractAddress, added_value: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.erc20.increase_allowance(spender, added_value)␊ - }␊ - ␊ - fn decrease_allowance(ref self: ContractState, spender: ContractAddress, subtracted_value: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.erc20.decrease_allowance(spender, subtracted_value)␊ - }␊ - }␊ - ␊ - #[external(v0)]␊ - impl SafeAllowanceCamelImpl of interface::ISafeAllowanceCamel {␊ - fn increaseAllowance(ref self: ContractState, spender: ContractAddress, addedValue: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.increase_allowance(spender, addedValue)␊ - }␊ - ␊ - fn decreaseAllowance(ref self: ContractState, spender: ContractAddress, subtractedValue: u256) -> bool {␊ - self.pausable.assert_not_paused();␊ - self.decrease_allowance(spender, subtractedValue)␊ - }␊ - }␊ ␊ #[generate_trait]␊ #[external(v0)]␊ diff --git a/packages/core-cairo/src/erc20.test.ts.snap b/packages/core-cairo/src/erc20.test.ts.snap index becbd01c4f07977fd6b56be5ca21e26870bb9066..acdb41474a6b2acad2fc925519d66790a6a1dfd1 100644 GIT binary patch literal 2233 zcmV;q2uAloRzVXcMo4!266)QaLYsvwz?MbHL$&P&}cmPA;8c-aS+xt!*#F^ z4g9Lnb4{>)e&C)U2fS?n@(Tk5Tn{;Kkmn)Wax@Lor#Hm4ZqIWa!r@6H z>SQF>_nIEW#~Kh@wLpMfA08ns)~5x~DY?y>ZPNdj8Knn5z>d{Ky$&+<)0O2{(M_x8 z*>T%#gdsJ+7QORTh7A*rZ}a6kQ*|FhjGjIjhDRCgsx;SO57|48eO^XfXq4lUmD0h; zcc5KBkbf*EMJGfwD6y;o_Co`M{rDc646I$)VNIKv=em#osbMm z$3}UdzVWBv(|_E!GM`TR^r;^qtQ*j_k*`D3^idEf&sUzWJipBI8RsMF`Gk~Cs9LEV z(Cc`Vnwcr{nj2fUn_eH#zML#XdKyTI#BPC8XotkpcMpNLsD6)8$O z(%hG19O)`Yydip!@dGgl!7hfj9)zA}pEqNzzs@9351&R^NG1v4R266}bLoVT?LZqk z2GZTGluZke_0tXMDCX=tPymiLqf#UV$$Z>1+O|Ll`4AKLAWOX|9sGg9^;t&5Q(8qL z67o*aMJ4mlM~3BDNMb8u#a?X0IBz7vbzIk$375p6M=%JGk9EhzI=zR?lKhdAjfs$O z9Hfoj_1#`mpj)J0hPl-4tqi3?g9z<-ZJl`dexo`p$&BjR& zeru>FehYm~^fGuFU0e8@^B)3b$epbD-dOu0$DtVbdb z12UwVB#S!J+a(iOk5&Mw-l>^l<1~fWa$bfAdeS( zaznri{{46$UJxZ_V7Gm^zqzOH?Y!93Ko{9~b#0a8|3q9wQ?`4}`&^6r^xbm)afbMB zq?>DNT06R2k1q!jv1l_A#tm$_R3P72Bkv4*>uXinZ)`qmAHF!y+Z)?kFQZ`?3hqdo zgdQ1k?JYNq7c&Tk$OnNVD_AY1Ep#hoAPf;lmkwY`jy75pkVP;Z;~*b}jEh{BSCpNM z!Z7VHB3C+^jE^w-vA@nNq9YE5NVLeFi-qop5w_4MBT$UOd~Oyk22zxdvBf4GKq`%| zIa`huZZc69hBnrr*&_>Y{#`H1%_f3J2{TXVnXD)UP4y#^zGIzcf6aVGkWs0eD^H5c z3KF#yGNzC*g^bP6i@id|fI`L;GFE+}%?~mrF7!Mom0j(pj+Bi{v|*65GqIkqq|D~_ zKLTv_*KJj1bICHBe3Qu*NJJx2#AcuJ^#t~ej>Up9Or^eKdAGxfu$VWXIk4(vl%OwFA`Ls?aE+=@jrv@+U z>bRvkZaHE;T@FeVRc<3>7i1Fk+1J(+t$9hQ~4pIwOn{e?KY!mXo;+H;U*4ycpmlpbr^c^YS(-O#o{=n*TMNRId1xg(^U zAKs}M-c!?xS+OItFzI^OxAh3U_#y(1!Wav5C4_7;8NY$S@j_MaO3BFvjU&nVPfC{S zQlmsz6$UR-VQ@-~n~WKXvY92F0POx*7}_u2glks;*Ym)p;|i>guUhS5FBVtT+Or z1n1$A!*ZwK-!Pe9@IX~*FlKK~#YS|{nQl-tNoS#8+>wPmBWY^qPR`Ps5r)Nk+#uA{bercv#!ws?lJqL5^dbJOR4b<8x^ HnT7xWX{I{w literal 2408 zcmV-u377UkRzV-4?)BN^3K2IHR5+5v{4E! z*_tT1kspf)00000000B+9m{UpMlfws1kfdEdue(InB-s?P!iXGi-Ku`3bvCPjbp=) zphXc7D{^HMrbvQZ`jOO!o_gsY^pqa^2mOQoML(cGZ@u)?U2;k7l1qxB9;T$#C6=^1 zubr74&O>?E?O2X};{Wm+L?*J}NeB3*u0T&;T`_$dxc;$&{GZ+#20-BZ>%U*WcJmr} zz4yVj58waw`s2sS{_e(i4_}x%w0-z+%YZgAyC(EhWqa$O(RlEKkAQb#L!_#@VFdrcRhV^!f-wG~)}_ovtju4nH(| zt`)7_h6oS=Y>`jCN}-{|v1`6ur>yQHfZ)?7WpEV1t_pJ<^q{q4TNg#ZxkVW)X)0|5 zJsVg#0NJm_pol_*hZ521BQMaAvLAg$m4U7cI&^6>VU4^ZjmV&;AX?$N%NSXB;;-o& z1A68uY;JgtOLQaF%SaQVMbHjRR`lHY-$A{h?zfTqd%5cNLig`}J#fu9ernzJQQb{E6=+YWp z8Zn0yd`3F`U}1W~`6T(p(*FhXez0KmEwkr>7pNwkQ#$vu|x+0`SAWCuM*Zcm6T9g5@y z9ZBqqBaY;j!`2Xfk+K6m2tf`4mgWbpYh5%WuD?zNP!FGmQAjEXVOZs0EHmK*7wrHG z*gDjlt`JR2!S|;VkWp@%fvK^plC8U^tqLmMR_ z#yE%@t?N0xCI>fI~xdP$VvBK$pGdVFuOh+s*$2Lf2z;!(bd*)mP$kWD2 zAAd|3#V_K6;ilMK@xhD8ZzU@RJFxwV{%aV|wKG=7Ro-RA%Jgg@45)(Xa4I*chxL%; zGD(JnllW4nd^=c?weSWI@|}n&5>AtQEN2M`?CFsb<0{G#oZsP-1j?C-jup?bpr6eb ze0+n;7ySFtzye*2Ldt4GVI26WIBW(PhZ2&414QqRnc#3K5HMoIMCV~+gmTgV)WM)ie#%AcjUS`G=nHiIrvFeI8KbbN9qGyv*>DzwlnX++_Rwi?H#`hBz zwAtMLhfACNbz8RCjM!$AT{77QNg*KFj3b+IW-)amn{i|_jtGEk#*rxpnR1XRhq^p5 z$&`a4Qw}oaP+igHC*?4&%{ZKCRGlXpQZ=SFe&o>3A`kY6KQaUpmrGn?-SZPAE7V8hqW1sh_!?#9>4``AHl(H#1ieiyX?C zQg}4KLo{;uWv*ve!i4@p%&su^Xw3E;gqZ{SWErN%8g`;6>hwVu_Pa*}WuYIrfU|dX zWg(fttwlhxj}@jJ>q`!j%$iYfuz^S+qWl14jPb%0Z}nQ-p|!|KpGLl_8(5YSxcEje zpg1>u=V#7ao!_ZhZn~!3{rpBMVZ8OQFY6(8u?$(`iv_~U~p)gKB>@eyWiioyObI?Mx zJ?%O3q&cO&pew5Mh+t zVP?-*Zfet?SIOs=ud5at1)I~NcEP5`3*9Kq)#MA&hG&{i^55Dq@Q?A=aV~reQezTD zSam5SJi@}>#(Uz*O<|AY-DR$b^Xc75{jzz**2rkv;qLRj_D1nWZjJmc^+|ScRx4Un z==-c`)hqcj`|Iy5g=?JQlv4gO{5U#Xg-~Q2PWHFfsK2%LKRPcAmSh324&A)P`(-gP zen0KzV$sG)RwNT71M{+F(yap;n>ouV%qd9n{{(l6N*qq;_ zU1BpAo3@g3lSN`#B$h?u8LDx~BC#Ti#Ii_SUD0HbSQd$8kysXqWsz9^pC|&-WD&U@ a)3>syTuO@EWBoYG%>M(kps=_plmGyf4U>of diff --git a/packages/core-cairo/src/erc20.ts b/packages/core-cairo/src/erc20.ts index 81f609ba2..8d046ad58 100644 --- a/packages/core-cairo/src/erc20.ts +++ b/packages/core-cairo/src/erc20.ts @@ -19,7 +19,6 @@ export const defaults: Required = { pausable: false, premint: '0', mintable: false, - safeAllowance: false, access: commonDefaults.access, upgradeable: commonDefaults.upgradeable, info: commonDefaults.info @@ -36,7 +35,6 @@ export interface ERC20Options extends CommonOptions { pausable?: boolean; premint?: string; mintable?: boolean; - safeAllowance?: boolean; } function withDefaults(opts: ERC20Options): Required { @@ -47,7 +45,6 @@ function withDefaults(opts: ERC20Options): Required { pausable: opts.pausable ?? defaults.pausable, premint: opts.premint || defaults.premint, mintable: opts.mintable ?? defaults.mintable, - safeAllowance: opts.safeAllowance ?? defaults.safeAllowance, }; } @@ -63,10 +60,6 @@ export function buildERC20(opts: ERC20Options): Contract { addBase(c, toShortString(allOpts.name, 'name'), toShortString(allOpts.symbol, 'symbol')); addERC20ImplAndCamelOnlyImpl(c, allOpts.pausable); - if (allOpts.safeAllowance) { - addSafeAllowance(c, allOpts.pausable); - } - if (allOpts.premint) { addPremint(c, allOpts.premint); } @@ -150,45 +143,6 @@ function addBase(c: ContractBuilder, name: string, symbol: string) { ); } -function addSafeAllowance(c: ContractBuilder, pausable: boolean) { - if (pausable) { - addERC20Interface(c); - - const SafeAllowanceImpl: BaseImplementedTrait = { - name: 'SafeAllowanceImpl', - of: 'interface::ISafeAllowance', - tags: [ - '#[external(v0)]' - ], - } - setPausable(c, SafeAllowanceImpl, functions.increase_allowance); - setPausable(c, SafeAllowanceImpl, functions.decrease_allowance); - - const SafeAllowanceCamelImpl: BaseImplementedTrait = { - name: 'SafeAllowanceCamelImpl', - of: 'interface::ISafeAllowanceCamel', - tags: [ - '#[external(v0)]' - ], - } - setPausable(c, SafeAllowanceCamelImpl, functions.increaseAllowance); - setPausable(c, SafeAllowanceCamelImpl, functions.decreaseAllowance); - } else { - c.addImplToComponent(components.ERC20Component, - { - name: 'SafeAllowanceImpl', - value: 'ERC20Component::SafeAllowanceImpl', - }, - ); - c.addImplToComponent(components.ERC20Component, - { - name: 'SafeAllowanceCamelImpl', - value: 'ERC20Component::SafeAllowanceCamelImpl', - }, - ); - } -} - function addBurnable(c: ContractBuilder) { c.addStandaloneImport('starknet::get_caller_address'); c.addFunction(externalTrait, functions.burn); diff --git a/packages/core-cairo/src/utils/version.ts b/packages/core-cairo/src/utils/version.ts index d4e0b24bb..372aaa760 100644 --- a/packages/core-cairo/src/utils/version.ts +++ b/packages/core-cairo/src/utils/version.ts @@ -1,2 +1,2 @@ -export const contractsVersion = '0.8.0'; +export const contractsVersion = '0.9.0'; export const contractsVersionTag = `v${contractsVersion}`; diff --git a/packages/ui/src/cairo/ERC20Controls.svelte b/packages/ui/src/cairo/ERC20Controls.svelte index a6e3e0eb2..15742d044 100644 --- a/packages/ui/src/cairo/ERC20Controls.svelte +++ b/packages/ui/src/cairo/ERC20Controls.svelte @@ -74,14 +74,6 @@ - - From 9b4413fd31b831eb3226e450a9782e0741ccba64 Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 10:50:45 -0500 Subject: [PATCH 2/7] Update changelog --- packages/core-cairo/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-cairo/CHANGELOG.md b/packages/core-cairo/CHANGELOG.md index b3ce27d6a..29ad60074 100644 --- a/packages/core-cairo/CHANGELOG.md +++ b/packages/core-cairo/CHANGELOG.md @@ -3,7 +3,7 @@ ## Unreleased - **Breaking changes**: - - Remove non-standard `safeAllowance` option from ERC20. + - Remove non-standard `safeAllowance` option from ERC20. ([#324](https://github.com/OpenZeppelin/contracts-wizard/pull/324)) ## 0.8.0 (2023-12-11) From cab93843350b36074bfdd3183a6586239bd0ce11 Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 13:42:40 -0500 Subject: [PATCH 3/7] Remove remaining safeAllowance code --- packages/core-cairo/src/erc20.ts | 48 ----------------------- packages/core-cairo/src/generate/erc20.ts | 1 - 2 files changed, 49 deletions(-) diff --git a/packages/core-cairo/src/erc20.ts b/packages/core-cairo/src/erc20.ts index 8d046ad58..5bc1698c8 100644 --- a/packages/core-cairo/src/erc20.ts +++ b/packages/core-cairo/src/erc20.ts @@ -356,52 +356,4 @@ const functions = defineFunctions({ ], returns : 'bool', }, - - // Re-implements SafeAllowanceImpl - increase_allowance: { - args: [ - getSelfArg(), - { name: 'spender', type: 'ContractAddress' }, - { name: 'added_value', type: 'u256' }, - ], - code: [ - 'self.erc20.increase_allowance(spender, added_value)' - ], - returns : 'bool', - }, - decrease_allowance: { - args: [ - getSelfArg(), - { name: 'spender', type: 'ContractAddress' }, - { name: 'subtracted_value', type: 'u256' }, - ], - code: [ - 'self.erc20.decrease_allowance(spender, subtracted_value)' - ], - returns : 'bool', - }, - - // Re-implements SafeAllowanceCamelImpl - increaseAllowance: { - args: [ - getSelfArg(), - { name: 'spender', type: 'ContractAddress' }, - { name: 'addedValue', type: 'u256' }, - ], - code: [ - 'self.increase_allowance(spender, addedValue)' - ], - returns : 'bool', - }, - decreaseAllowance: { - args: [ - getSelfArg(), - { name: 'spender', type: 'ContractAddress' }, - { name: 'subtractedValue', type: 'u256' }, - ], - code: [ - 'self.decrease_allowance(spender, subtractedValue)' - ], - returns : 'bool', - }, }); diff --git a/packages/core-cairo/src/generate/erc20.ts b/packages/core-cairo/src/generate/erc20.ts index 5621199e7..e70c4d599 100644 --- a/packages/core-cairo/src/generate/erc20.ts +++ b/packages/core-cairo/src/generate/erc20.ts @@ -12,7 +12,6 @@ const blueprint = { burnable: booleans, pausable: booleans, mintable: booleans, - safeAllowance: booleans, premint: ['1'], access: accessOptions, upgradeable: upgradeableOptions, From a35f2c8b137540466aecbd8ae45b171ac04a8172 Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 13:46:07 -0500 Subject: [PATCH 4/7] Update copyright year --- LICENSE | 2 +- packages/ui/public/cairo.html | 2 +- packages/ui/public/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LICENSE b/LICENSE index 0fcfda821..00501370f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2021-2023 zOS Global Limited and contributors +Copyright (c) 2021-2024 zOS Global Limited and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/packages/ui/public/cairo.html b/packages/ui/public/cairo.html index e45a5c280..f70741172 100644 --- a/packages/ui/public/cairo.html +++ b/packages/ui/public/cairo.html @@ -58,7 +58,7 @@ diff --git a/packages/ui/public/index.html b/packages/ui/public/index.html index 1e2d89b63..e33a0c43f 100644 --- a/packages/ui/public/index.html +++ b/packages/ui/public/index.html @@ -90,7 +90,7 @@ From 461d6b070b09a22bed0e2fb4bf6e2c017fca9791 Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 13:47:57 -0500 Subject: [PATCH 5/7] Bump package version --- packages/core-cairo/CHANGELOG.md | 2 +- packages/core-cairo/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core-cairo/CHANGELOG.md b/packages/core-cairo/CHANGELOG.md index 29ad60074..5ca223939 100644 --- a/packages/core-cairo/CHANGELOG.md +++ b/packages/core-cairo/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 0.9.0 (2024-02-12) - **Breaking changes**: - Remove non-standard `safeAllowance` option from ERC20. ([#324](https://github.com/OpenZeppelin/contracts-wizard/pull/324)) diff --git a/packages/core-cairo/package.json b/packages/core-cairo/package.json index b395a2518..4a83d5bb4 100644 --- a/packages/core-cairo/package.json +++ b/packages/core-cairo/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/wizard-cairo", - "version": "0.8.0", + "version": "0.9.0", "description": "A boilerplate generator to get started with OpenZeppelin Contracts for Cairo", "license": "MIT", "repository": "github:OpenZeppelin/contracts-wizard", From 5a3d2d7fe7f43c80694eab039a7572b2be73a2ae Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 15:23:18 -0500 Subject: [PATCH 6/7] Use abi(per_item) for generated trait impls --- packages/core-cairo/CHANGELOG.md | 1 + packages/core-cairo/src/contract.test.ts | 10 +++--- packages/core-cairo/src/contract.test.ts.md | 6 ++-- packages/core-cairo/src/contract.test.ts.snap | Bin 663 -> 673 bytes packages/core-cairo/src/contract.ts | 3 ++ packages/core-cairo/src/custom.test.ts.md | 8 +++-- packages/core-cairo/src/custom.test.ts.snap | Bin 1132 -> 1147 bytes packages/core-cairo/src/erc20.test.ts.md | 34 +++++++++++++----- packages/core-cairo/src/erc20.test.ts.snap | Bin 2233 -> 2234 bytes packages/core-cairo/src/erc20.ts | 4 +-- packages/core-cairo/src/erc721.test.ts.md | 22 +++++++++--- packages/core-cairo/src/erc721.test.ts.snap | Bin 2017 -> 2029 bytes packages/core-cairo/src/erc721.ts | 4 +-- packages/core-cairo/src/external-trait.ts | 5 +-- packages/core-cairo/src/print.ts | 4 +-- packages/core-cairo/src/set-upgradeable.ts | 2 +- 16 files changed, 73 insertions(+), 30 deletions(-) diff --git a/packages/core-cairo/CHANGELOG.md b/packages/core-cairo/CHANGELOG.md index 5ca223939..f438d56a0 100644 --- a/packages/core-cairo/CHANGELOG.md +++ b/packages/core-cairo/CHANGELOG.md @@ -4,6 +4,7 @@ - **Breaking changes**: - Remove non-standard `safeAllowance` option from ERC20. ([#324](https://github.com/OpenZeppelin/contracts-wizard/pull/324)) + - Use `abi(per_item)` attribute instead of `external` for generated trait impls. ## 0.8.0 (2023-12-11) diff --git a/packages/core-cairo/src/contract.test.ts b/packages/core-cairo/src/contract.test.ts index ef3c0757f..1cc88ba8d 100644 --- a/packages/core-cairo/src/contract.test.ts +++ b/packages/core-cairo/src/contract.test.ts @@ -49,9 +49,10 @@ test('contract with function code before', t => { name: 'External', of: 'ExternalTrait', tags: [ - '#[generate_trait]', - '#[external(v0)]' + 'generate_trait', + 'abi(per_item)', ], + perItemTag: 'external(v0)', }; Foo.addImplementedTrait(trait); const fn: BaseFunction = { @@ -72,9 +73,10 @@ test('contract with function code before with semicolons', t => { name: 'External', of: 'ExternalTrait', tags: [ - '#[generate_trait]', - '#[external(v0)]' + 'generate_trait', + 'abi(per_item)', ], + perItemTag: 'external(v0)', }; Foo.addImplementedTrait(trait); const fn: BaseFunction = { diff --git a/packages/core-cairo/src/contract.test.ts.md b/packages/core-cairo/src/contract.test.ts.md index d33d3b486..e0cf8fc3c 100644 --- a/packages/core-cairo/src/contract.test.ts.md +++ b/packages/core-cairo/src/contract.test.ts.md @@ -69,8 +69,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl External of ExternalTrait {␊ + #[external(v0)]␊ fn someFunction() {␊ before();␊ someFunction();␊ @@ -92,8 +93,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl External of ExternalTrait {␊ + #[external(v0)]␊ fn someFunction() {␊ before();␊ someFunction();␊ diff --git a/packages/core-cairo/src/contract.test.ts.snap b/packages/core-cairo/src/contract.test.ts.snap index 1a82b9125c57cfd1373c44b66e0bea07ee82d7f5..d377c7346d6dfbfc165ddb0bebc1f05ff3d1bb20 100644 GIT binary patch literal 673 zcmV;S0$%+=RzV-y}O z*IeIR>K}^;00000000B+R6%dkFcfZ!5K?aZ0Wj>aRBAUsoKoP@ZBnI8Lh24fqpF<2F^hmp=ni7w ziX{w0Ku!jyp0{%@6&05pR1hqRkGu?Ha)d~(J)%c}K|wEIR4%0wQ_Wy#Viq&^=AI>a z^=QfR15*>CS0)98p2x6C`e&7N>qldYtSz*{(ZCa49t$>Eg(!D&h`SWrkcAMBmqM2= zY2={zzIMu%M2h$;=h=B<%PljxF>h^!>gM_~f75&xHw`Vc)+dNT?O2=Maa*_4Wzn%Q z2sQ)%Kww_zxA4d)WlDghjld=zdcD1;Z@gD&SAVzc*XO%y z9{$H}lk1D}nCiy`3ja{3H9h{`>G6|o^tg*iStzLZsBP5CW3#yX5B`P!VD9|_KrvqL HdJ6ymrsGM0 literal 663 zcmV;I0%-j~RzVEbpT2u(e}d`bNL_47BM_u|VWOffo@U%r82 zDg}&?D?uYgLMmA#ndCH=6IAl^WgJsQk1p=C?zM{1zT3Lr&bGG5=|e zaK#b^A|MCDL(hBqUMeb1IjA70l8?O%W3q=xExG9WMWn`_vW58 zdH!(W@{Fko(KE9Jg?^7=)%4H0>CTVV8eLmy&7+YgyzbiSzCoGTEVrvB`C*Th(sr)1ZL2_}p8!(v|zlt$~as;w2nu&5AThu8RA2L1B) zpqDyw^|HAI{}gQ`R{WIkje#K&$mv~pNHUpr|_BSrj` zbBVmM=@vV=DPLoT`eJjMKj|^6n}$|;)l6ldAO=gv+U-5JLrX4IW5yuZ4E!B|dBLx$ zks)S8z^5501CEa*rRwVRit@6BGPq>mCa!J0ys5u1cduRRzV5b`DLV;By!BQ2FT2;uJ z*vDjqJ+@}XP`cuxz1hosgO%F%=^N~0>;rVh9y>GsA%Ox-szich?DO-TGv}Od5`PYc zVeFmqzrTPWB80$8xrigeDNgt(7X0I9-^T*K`Lwe1a7n$ESC@WW78@Jr;MMkGMbsP>}%80md zoC1>Lywacgag@YVdfRMK#-0b9J5GE~bItwyLxbWNVgYH(_nFk*>|`=tq4KDkU@>w~ z4MY#=6g#MZ+Cy+A?~H|a)N*aJ*6pNu=Mj}U4p7@yMh60L= zYh4Bb;t&Q7vi7j2a;9cpWqzy~@hP=+o!WImi6A&6AAof;RXrC3VJmxjuZVc_{ANh4(yVr$C(JW{1mD9uGR zhlE)z^tQl$X4Tc9MPP9-a8 zB(}q=IO;r~@F?SxI7B|l2+p77ub*cX%sOFpie35FqS${{?v`Tj^84h1duoVhfhA^R zuFvN{F8f(j`dR(~uXpq6e^xhtUA>=f&fhgQ$Jxr3{d_s`7)+EHPrwr-RzFuU@0qNO z*ZpTxpS&yXw|D;7I@&#Sx3>2Nf4Z;tcXz&Hs5Hl7j26pzIbbZcD^JW;q=sFUhtix9 znsQiKo^|6l2T|Fm8;md8u9{8Paabx`)2m8`_G2Y4ubK&y(GJ<3k8P;$V@ldJ+zRCy z=jp7GY8kq}iCb@h_OK?LrpxlL#dE7;+lK(Bp>VMu$?-CAd|O*)4e_E&TSQ%X0;R%L zGrU_LRuvp|E_naA_>Bdf6EQ;59#0n!9u^NC=KNf{c z)8BXl2Oo)~p%e(Fms0X-k-JRb$%G*EhOcG|o0EH3I4-iEV5Ng{D+$1La#I|!t zw*6ZD*9iwvNJX@jhRxV@fic?-k7%}YEBmKr;}BvFY1Q*$v3sSJ+PL|a`&NW`-$oS> zZKO(Uqa11*!J)V^G+vj>#g%%GWpJ89l|bQ7nda`)Eyg`!!Jr48bNFO2yU}D21x56( zTs*5HA68UaJk1NR%`u1PDIA|`5 zZcz)~sDSCN3iC{FV^68FOM1%GDvBmw#gNpcqa3xz@RLtWO&W%m(;Rr(n0spBK}-(8 zT8qP|txZC-%|WF?)dtN%1ApVlb#O*Mu3S8nvC#QtX$ zY|uNsp_Sz6Y*p$qQvg+~H0MC!$Z;jNIekHH;&RS&6ObgWPlYNeBxb;~H0mg0c$Df% z7$A?N0_WZ2Pm_lw%&K5jiJkvuNbJ}7tCiTR{CGIio(kfdpb|HO*Qb+^i+Sdyc@{sw zs?)si$C&0{3)eHv*IgKa zHR3c~w0|X^iPE+QK28GeU~eGkWh8wYx6B~%d`cTk9dQDs+>sn^RmrM^qpAhR5A*L> y&=KK%H16?q_8ejM9AV1OwX^34qy5~B^Y-jH!t6Q1grJ=H9N{mGPL?6+9{>R6b~Vrd diff --git a/packages/core-cairo/src/erc20.test.ts.md b/packages/core-cairo/src/erc20.test.ts.md index a21e92fc3..0ed0a48ad 100644 --- a/packages/core-cairo/src/erc20.test.ts.md +++ b/packages/core-cairo/src/erc20.test.ts.md @@ -86,8 +86,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn burn(ref self: ContractState, value: u256) {␊ let caller = get_caller_address();␊ self.erc20._burn(caller, value);␊ @@ -211,13 +212,15 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._unpause();␊ @@ -356,13 +359,15 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.accesscontrol.assert_only_role(PAUSER_ROLE);␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.accesscontrol.assert_only_role(PAUSER_ROLE);␊ self.pausable._unpause();␊ @@ -487,18 +492,21 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._unpause();␊ }␊ ␊ + #[external(v0)]␊ fn burn(ref self: ContractState, value: u256) {␊ self.pausable.assert_not_paused();␊ let caller = get_caller_address();␊ @@ -646,8 +654,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn mint(ref self: ContractState, recipient: ContractAddress, amount: u256) {␊ self.ownable.assert_only_owner();␊ self.erc20._mint(recipient, amount);␊ @@ -724,8 +733,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn mint(ref self: ContractState, recipient: ContractAddress, amount: u256) {␊ self.accesscontrol.assert_only_role(MINTER_ROLE);␊ self.erc20._mint(recipient, amount);␊ @@ -861,24 +871,28 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._unpause();␊ }␊ ␊ + #[external(v0)]␊ fn burn(ref self: ContractState, value: u256) {␊ self.pausable.assert_not_paused();␊ let caller = get_caller_address();␊ self.erc20._burn(caller, value);␊ }␊ ␊ + #[external(v0)]␊ fn mint(ref self: ContractState, recipient: ContractAddress, amount: u256) {␊ self.ownable.assert_only_owner();␊ self.pausable.assert_not_paused();␊ @@ -1048,24 +1062,28 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.accesscontrol.assert_only_role(PAUSER_ROLE);␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.accesscontrol.assert_only_role(PAUSER_ROLE);␊ self.pausable._unpause();␊ }␊ ␊ + #[external(v0)]␊ fn burn(ref self: ContractState, value: u256) {␊ self.pausable.assert_not_paused();␊ let caller = get_caller_address();␊ self.erc20._burn(caller, value);␊ }␊ ␊ + #[external(v0)]␊ fn mint(ref self: ContractState, recipient: ContractAddress, amount: u256) {␊ self.accesscontrol.assert_only_role(MINTER_ROLE);␊ self.pausable.assert_not_paused();␊ diff --git a/packages/core-cairo/src/erc20.test.ts.snap b/packages/core-cairo/src/erc20.test.ts.snap index acdb41474a6b2acad2fc925519d66790a6a1dfd1..eb20d61d678897d42e4f35a7b7165866eb6639dd 100644 GIT binary patch literal 2234 zcmV;r2u1fnRzV%HI00000000B+Twib7HW2UD4#oV`qA1W6dth5&aWJ>b0%QZ!tyqwxThOM- z@(0*f6dEnli4a*5Br0iI@ zz|O^?bBb*6z5&QD@DXraWWPhMi!9UDG)$jrS~wC-+uGk)UDW)t<=sH2~)EWZhFnmyNw+U_6> zsRFj?o$pg@*x>j!-)%5a4=}{&+0!ySifC7*xdD5~+O@5VBH}`$443pMZHzn{S~&#y z$8u8CAi_zB#_D4)FfcfX?lEIv?SeLI+Dt^FzsMpotQm<`*zPiB7S8w^cF{qed4`&s zp5s#6i0v}6gs2g+gB}QP2xIA55cfyWx1a1V!rQ4q5W|n;bi9a2*9P3ZriZ$~M^;w@ zg36Y;A<)N9Ldl<)wuwz>neUL-Tw-3d)B;O8hcA|vpEAyu4d&2x*a@@)GA(TjWqta_ ze}Yf{dt+)o9rx)|KSo$Lpk*OXhn6C<}Ek5PB*zeq@4wQAofI@86p;qFnRK{z!|gx;*G)T+Bdv#^k*RqA}1$imG$^0 zlT4xyJ>(fRXDqnJmpP%(g@G>*g}1&GLgDAPrXC85`k2(?y3jy*&3$A9o{29sEf!hR z_Sk;|c|pS<%GWgK+>UzgM*kGX>v+=FM<1-Egfh}_v|^bPa&hBAifJi1f=m+$J=U~F zt4S;&BcIVufBGvBXW}y2X+0(OQJr#n$;xFhv1Kc(Sdo}S!R6@1x)RA{1+L4YT1+8{ zE;5A-K_?D15=GQ+iI;U1B8*fU0|@XTMW%)krWh@%Zn}=8Vs`b^Bk95BQRovgOXn!r zTq2belT0L8<%l4VMUx9Skkq4_w!}Xhu^1kjktcKMS*vR1(68D$rQw(g`8k zfflq4q&r5d zgjU`V33=P^q5?bgkYTzelIV(Pu@@;Z${Wex+Kyw%1{cSmC(!qihjrV*I=zQF1^FX4 zHa3Kq;~;7DuIKcc0^L0MQp}}#Z>1>ZDnw|jzr+5ZII5O>v|4}%((`T zXN}{Y{&--Fzf2BJn&NOJCNHwMm9!Wfzz!7$=Uq5tdh3n>@5 zDz7k|8HQofVMwlYHW?pb_9K6tSqMm+43TJ_J{JoP5+iJ`Qih-yhWU&YEe5odjj{PE z9Y89HuNhsA6rbv#E(|QJ!%mMZyxEt-FgF_ufF)R-&@*09a+>PLB;Ut6&HkF%j36aa zF;|`xmlecfD=1AtX$nf4AtXRSX+S|~3QDVPXbS+Pi5UQoR;AN`+CXcg8gdz^?OZHn zEGXo;{jGqrHE*jzo+}peWSfk)Hd9JSmHVi2pIO9uRJo5T_mL4$uN7~vMxG}2Ymkg^@{A5J%;WH5rwW+>hlsRVyK8Q#fUM=&r49J zmT$$}{9W+rpKne*QJBGV&NIDDQRnbe%w>`HK;~=DV&?Z67Hq3v;y?(?Yp;x1Um1?b z$+H=7RN^2~yc8E6L~8sdtjaGMB@ZI)Y`;1zK8VD%n8HD%xjr1ksdoH_gVa%;xk_c! zIiU&VP4j!MN1ex+>*F*b(!UVLX}EPX7JHua&jBU6oHj<9kDf*8Xg9Dd5V%DB9VADH z?w$#`=<(f}Aw)GT))hN44U?`%eO(XHi?3hcD2%W+SVG7m#`qKTPZp|hSV~SdX&gz; ze-g4>ml|crswR1nYLXLboH3>-$}D?UGTup7Iu}#nf`B|=%u4P&$+~G-_jKgU)8>SB z=ck0X%4lcOyw&3E{n)@%VYh4ms<2xXcGsgWRTXxFlHp1fcB{f}RoJZxyTP0kc2605 ztTZhMBR?|e%xQ*Ebb_@QJ+p7XLUq1jJiTiMNL8O zuPq>KN(n}(J_I|8>Jcdw1-q--ks8&G)czZ@(qu{D{dK66DekZK4&v)c7w*V9 zj&lPdVKNYgDTA&IC>jzxrx4D`sV-`zEi|vmWXq7M?1tp literal 2233 zcmV;q2uAloRzVXcMo4!266)QaLYsvwz?MbHL$&P&}cmPA;8c-aS+xt!*#F^ z4g9Lnb4{>)e&C)U2fS?n@(Tk5Tn{;Kkmn)Wax@Lor#Hm4ZqIWa!r@6H z>SQF>_nIEW#~Kh@wLpMfA08ns)~5x~DY?y>ZPNdj8Knn5z>d{Ky$&+<)0O2{(M_x8 z*>T%#gdsJ+7QORTh7A*rZ}a6kQ*|FhjGjIjhDRCgsx;SO57|48eO^XfXq4lUmD0h; zcc5KBkbf*EMJGfwD6y;o_Co`M{rDc646I$)VNIKv=em#osbMm z$3}UdzVWBv(|_E!GM`TR^r;^qtQ*j_k*`D3^idEf&sUzWJipBI8RsMF`Gk~Cs9LEV z(Cc`Vnwcr{nj2fUn_eH#zML#XdKyTI#BPC8XotkpcMpNLsD6)8$O z(%hG19O)`Yydip!@dGgl!7hfj9)zA}pEqNzzs@9351&R^NG1v4R266}bLoVT?LZqk z2GZTGluZke_0tXMDCX=tPymiLqf#UV$$Z>1+O|Ll`4AKLAWOX|9sGg9^;t&5Q(8qL z67o*aMJ4mlM~3BDNMb8u#a?X0IBz7vbzIk$375p6M=%JGk9EhzI=zR?lKhdAjfs$O z9Hfoj_1#`mpj)J0hPl-4tqi3?g9z<-ZJl`dexo`p$&BjR& zeru>FehYm~^fGuFU0e8@^B)3b$epbD-dOu0$DtVbdb z12UwVB#S!J+a(iOk5&Mw-l>^l<1~fWa$bfAdeS( zaznri{{46$UJxZ_V7Gm^zqzOH?Y!93Ko{9~b#0a8|3q9wQ?`4}`&^6r^xbm)afbMB zq?>DNT06R2k1q!jv1l_A#tm$_R3P72Bkv4*>uXinZ)`qmAHF!y+Z)?kFQZ`?3hqdo zgdQ1k?JYNq7c&Tk$OnNVD_AY1Ep#hoAPf;lmkwY`jy75pkVP;Z;~*b}jEh{BSCpNM z!Z7VHB3C+^jE^w-vA@nNq9YE5NVLeFi-qop5w_4MBT$UOd~Oyk22zxdvBf4GKq`%| zIa`huZZc69hBnrr*&_>Y{#`H1%_f3J2{TXVnXD)UP4y#^zGIzcf6aVGkWs0eD^H5c z3KF#yGNzC*g^bP6i@id|fI`L;GFE+}%?~mrF7!Mom0j(pj+Bi{v|*65GqIkqq|D~_ zKLTv_*KJj1bICHBe3Qu*NJJx2#AcuJ^#t~ej>Up9Or^eKdAGxfu$VWXIk4(vl%OwFA`Ls?aE+=@jrv@+U z>bRvkZaHE;T@FeVRc<3>7i1Fk+1J(+t$9hQ~4pIwOn{e?KY!mXo;+H;U*4ycpmlpbr^c^YS(-O#o{=n*TMNRId1xg(^U zAKs}M-c!?xS+OItFzI^OxAh3U_#y(1!Wav5C4_7;8NY$S@j_MaO3BFvjU&nVPfC{S zQlmsz6$UR-VQ@-~n~WKXvY92F0POx*7}_u2glks;*Ym)p;|i>guUhS5FBVtT+Or z1n1$A!*ZwK-!Pe9@IX~*FlKK~#YS|{nQl-tNoS#8+>wPmBWY^qPR`Ps5r)Nk+#uA{bercv#!ws?lJqL5^dbJOR4b<8x^ HnT7xWX{I{w diff --git a/packages/core-cairo/src/erc20.ts b/packages/core-cairo/src/erc20.ts index 5bc1698c8..7af449f92 100644 --- a/packages/core-cairo/src/erc20.ts +++ b/packages/core-cairo/src/erc20.ts @@ -101,7 +101,7 @@ function addERC20ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC20Impl', of: 'interface::IERC20', tags: [ - '#[external(v0)]' + 'external(v0)' ], } c.addFunction(ERC20Impl, functions.total_supply); @@ -115,7 +115,7 @@ function addERC20ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC20CamelOnlyImpl', of: 'interface::IERC20CamelOnly', tags: [ - '#[external(v0)]' + 'external(v0)' ], } c.addFunction(ERC20CamelOnlyImpl, functions.totalSupply); diff --git a/packages/core-cairo/src/erc721.test.ts.md b/packages/core-cairo/src/erc721.test.ts.md index dccc4c347..bb469d8a1 100644 --- a/packages/core-cairo/src/erc721.test.ts.md +++ b/packages/core-cairo/src/erc721.test.ts.md @@ -106,8 +106,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn burn(ref self: ContractState, token_id: u256) {␊ let caller = get_caller_address();␊ assert(self.erc721._is_approved_or_owner(caller, token_id), ERC721Component::Errors::UNAUTHORIZED);␊ @@ -281,13 +282,15 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._unpause();␊ @@ -359,8 +362,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn safe_mint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ @@ -373,6 +377,7 @@ Generated by [AVA](https://avajs.dev). self.erc721._set_token_uri(token_id, token_uri);␊ }␊ ␊ + #[external(v0)]␊ fn safeMint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ @@ -456,8 +461,9 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn safe_mint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ @@ -470,6 +476,7 @@ Generated by [AVA](https://avajs.dev). self.erc721._set_token_uri(token_id, token_uri);␊ }␊ ␊ + #[external(v0)]␊ fn safeMint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ @@ -657,18 +664,21 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ #[generate_trait]␊ - #[external(v0)]␊ + #[abi(per_item)]␊ impl ExternalImpl of ExternalTrait {␊ + #[external(v0)]␊ fn pause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._pause();␊ }␊ ␊ + #[external(v0)]␊ fn unpause(ref self: ContractState) {␊ self.ownable.assert_only_owner();␊ self.pausable._unpause();␊ }␊ ␊ + #[external(v0)]␊ fn burn(ref self: ContractState, token_id: u256) {␊ self.pausable.assert_not_paused();␊ let caller = get_caller_address();␊ @@ -676,6 +686,7 @@ Generated by [AVA](https://avajs.dev). self.erc721._burn(token_id);␊ }␊ ␊ + #[external(v0)]␊ fn safe_mint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ @@ -689,6 +700,7 @@ Generated by [AVA](https://avajs.dev). self.erc721._set_token_uri(token_id, token_uri);␊ }␊ ␊ + #[external(v0)]␊ fn safeMint(␊ ref self: ContractState,␊ recipient: ContractAddress,␊ diff --git a/packages/core-cairo/src/erc721.test.ts.snap b/packages/core-cairo/src/erc721.test.ts.snap index 549562d886df78dc69b5cba7592a62441ca553a2..9f54491f02442ac31197af718b9e609bc8d1825e 100644 GIT binary patch literal 2029 zcmVR^0~zL{ z-wTmTRGI39`!1|E5{Hb8xA?_C$2!pQot zX3wgnjEc5PLste&;y52ix@jZ8V5cMEiJDAr;UrP!dCr1c*K+ z*xPcP!-MTDMKTlh#Pc0H2IR!C3LUhpgdhx#p=0GLv@Cc=-;0L3>|x`P8B6O>L1OAi z9M(vnWH9$$gI-|6K@axbvu`)vWG{n39P%#rAOUO`I_%YxqQZhAwbkQoPWd4L1U`K< zQ8(LQ0K@$#d^fr;*>vho>us7Eb_^S4(VYz;*IXO&e99RCONK`T;s}IQ1gPJe!PpYZ z=2xy*LU8I4>o9-EmltoB_IOiU+QB}2jg>p+AgwVlvXxe1L6tuj>Spu*4S(oE9GpRW z2cwuR6yYoKg^@RcQ97`)7n(JG2*|L1WmOss$=H#S)d3?{iz?zNk%w_@FPok zXJhDF2@HM5(#C5;(Vl(%AgBF75CtRvVelSed!2j5^_I21*ZpaoJDBse^EK|8PkJex z4!sbTz4J9o^UgP~T}baNB!`+EL*jZM3?X(wzmH*(G(NoX;f)V(eE7xk;k@f(7(q<2 zTnZaV4%zgKsfP;)9B6CccV%uNUp{x4u*N0i-{@mX?P3w5%Al5&d2%=CJ65{6^}T8! z`-G5Kx$mVDyX=TB#vo11G4$5YS`2-DYw2QWK`LOr#RndoN6ghF z6X>NlAnzPU@Z~tK_)jB+f#=cr;W%`-bIJYuhuTOlre=GI!@LotM2mtX$dhQIaV=tz zE(MTND)D&JCJ&h=me&J{q2i#WVID4sDZu%-aqQxN%M~*{vPNZH7xkRaHQgywtD_kx z9uH5jrNfm?UY%sDUS9fa6QvX22nTMUa-~v3lc46QjYN(BP+hZ$!8xX;Ei22chHrTg zogrnFB76>LGFflM+_s#97VATr!pf9|F2?+u!a7tmX6Y*kLF7Rf`F3vhj|IDFs)16* zZ^`oePqU=9kkhIxDBv7sL&+OeH8Ojvl_;jswCjR8HCjk)nY~shkpMrd8=}Og0zO6q zTLZ0{8(JeKRw7GpLeR(ts=4}iEQ-^W7K7-q4@0uKwfS_|pjcpJGzeeyAg>?X2oaaP zgZ*NGp|WNmgZ;zCVmKbHOdYKnPzhaTF6T(qD3&Vu;gwrm`B=7YL`^w^9YUS4bWdox znhSu?^=auzYt9<)8MCS!l^tkHkU-7pAr#JY2Aeb#iVXX$wD4HU(|$gIU()bL`6ji_ z7q*ynG6$-fA;{Eb+}G%8>OSjeh^uO@=szNC=~=Wfe#s`|1hW0P#<2+lSY_wg=yoQY zCVJfJ)P}7tcR|lSv!m^No|rW{SarsYRm;cVJO~=WO`Vr-a~Jvy;r7zF_&NCY_86{x z(j{AV>D9|NNQ4HQ*+sbXS^W6Ix7M@qALp<@nkPyrK8X+w8hlIKG>PP#%V(Nxo-H*B zrqSY56n)ihy$@*gG;h6MzpZV(e|>%Fw%(`TO21sY;mzK4bA~?KzWe3g8gI6;n=NSZ zeA#x87oNgpg&E6ArYNZ}^ny5mhMIj&yQM?n6bFvQ8;mHtCd=Q%Z%+()kXF^~qL#&J zT_H8KhjQ}W#HlM&Xm0`IGR1~~ls!7=j5{jT{EEWAB{AzV=vZXX);AVLAxz4d^o{?t zO#0s&BQxpDJJ26rc6SflgZ&q~(kdEwsQQrkjXU;TrNv#Au3fwgJpVt_6@`w|&K|e( z$7w-!cAvG6UUc2|4&^5!XRLHyHc6>#bDR$fx#t%r**7z&z-eSjTurP=|C{t*1=J=7 zM>fy1!U~?XuZ)FBI+OwnDh+gNb;v4(FH4!Ad*wU1oh~K0~8ob$jW~5LWNk_jN%&JnY)WaG)lTQh&KZL71$d zs=YdB01Bz=cn*@2i&J$i(}e>goN4qGNM#jESVg2M2%EbM7wEudDep2!G-X{C5KW8p z^3;oqz9CVMqIg8J_q+s^>mu)4n8b?_sA?cq?a-~cw$WVMXs&HE*EX7K8_l(i=GsPc zZ9}ZY=GsPcZKJui(OlbTu5DblYa8PzIm_Rbns8~Z#-E`Yht$1XSmCK zhFhPos~gnZsjFvywb?n}Hm&wU5q#@@ literal 2017 zcmV<72OjuARzVQ&w)H^)VZmCj%k zQ^yq(0w0SA00000000B+TuX1;HXQFZbOnrFcIs(`)&h%yx$PDp8=!W@j3h;kHBFH? zz_y|gXqifc$f7_|=?gjRvg5wN4&4XaH`sm0krGLh5+y(4q_!g;l1SqJ^&|f;%FGA9 zA0qE0`QvX$0un;l2T9-sNd)5L7?I@n4}$?9;MeQ#KD&0~8vA^5{n{6wo?L(Mz&d!b z{mZ>)fd``m-s=uvL;^p6*s*rIy;ke)%Y*=Y5<%iP9*PJC9(mOoqJg#hwueq&WW8@$ z^phsgLNScq!8nFt5IGKEPaOwh?}v@=9A{^Li~in1!x%+W#={D#fQmp#3_TJcdYNEv z({T>=w>A~ZjMNj?U)eDr$BtDH(6$nSFgSvam8;OU;3>T?2JWzn^@nC&nm~mUQ%CY) zg9Mk1&E1!vAJ}l%hXeQY+x1u3&0rXZT;wh!fK5Y}-TJYpuz*M%^=OMjen0?$j~`AY zW(y2qxEFT@$Q=3?3U z$`wlpPCa5BVo|2|*J=qxBlnjJyndLRrTcEMnPVUjd4youpW3~yria>Z~i`Upl4Q(i7* z8%PY{n|zJf1s8auEG^{A>mH+3l%eXg#89Po+sXpA8w?yP-PrtIwS#>^NUS`>()C-8 zw>Gyyd_a;wOl%baH%MF%#~7Vb4@1~Ruc?)G&SoTiy=|CRj1f*8=kR&wu=jLtzx&(H zc0rydD6>;C91T1xrOFtji8)o?`dUksw{9(5sw_|iEQI*LgY!tOI%NXA6bIz3;|RPQ z=LP?3EHUsrx;`9-PIpeZm;X_l(8bd1EO0hAaw);0a1!82ZenmP$0A$`Lk_9r$A>oM z#w;njo}rj3&a^bmBZruQIiEMqyEx&}V`k^9L0KoF9`m_YHDzdZZU%@a<0sJ4*_BOR zotmqjUdC(_q*L$_0o(xPN>zX+LM>7ofgHm?4b3J5=U9QZt*o*d-Q`L29F?gg;cGyn z$)pua*s5Z6)CSU0RhBH&8S^IvKP;55AOw*IUF6%j**_KRrlkf-8NMaU?>)|n+CojM zqM$J6Y}S>!QB@>eBx8w?dS0~qWF zn~TwWv@>x-mWFIqVSXOr(24+tr)^gsx9pPug?V zM9-Kt->4iw+X4h?P9LFgo-5d-p-^Nbx6;BRNl)cmKwQ%JkBd!epD%1N>ts$;HB*qO z&9JZ0)g(R>G~%mjuIN7|ZRu6CF@MP+lO(dex#qDc6IiA2Y<9a-E)zX(b!*dBkB6Wq zA34x=KTggXpRBr*=BmX*a2^1S!KN3Us@qLCcah>%?*6#+q72X(#jWrf-iWMI- zG(s49K^#Csr#+`V&Jl5n1IOY6#%O3S#RU3!@Mw<-+*pUs_@O=gqN&apvsw&*#0J zeRqHF*^ab|<`JqsWMSYd`;Ic=4y(SFub|F(=Tls}#N}RlgpUE8$rA4xk)btHGFSH!y%cNJHX+0j*IC+qJ{&z1D@a3)TSRY;ott~ofcM6Xj8^5B5vrubEXqsd9HPWyM+#}VqeC=t;d zJ+D9`dYOkCOytE3R5cN+_DZZdBhj3ZXwFD9XC#_463rQj=8QyhMnZUEb4H>$Bhj3Z zXwFD9XC#*VjD(iY&hfvOru3-Q_*YG(PHv^%mCm@%rYe}5SE-BfDz!ecs{6z|xT>$< zYKvsPds!V', tags: [ - '#[external(v0)]' + 'external(v0)' ], } c.addFunction(ERC721Impl, functions.balance_of); @@ -110,7 +110,7 @@ function addERC721ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC721CamelOnlyImpl', of: 'interface::IERC721CamelOnly', tags: [ - '#[external(v0)]' + 'external(v0)' ], } c.addFunction(ERC721CamelOnlyImpl, functions.balanceOf); diff --git a/packages/core-cairo/src/external-trait.ts b/packages/core-cairo/src/external-trait.ts index 4645d78ee..ed7e99e45 100644 --- a/packages/core-cairo/src/external-trait.ts +++ b/packages/core-cairo/src/external-trait.ts @@ -4,7 +4,8 @@ export const externalTrait: BaseImplementedTrait = { name: 'ExternalImpl', of: 'ExternalTrait', tags: [ - '#[generate_trait]', - '#[external(v0)]' + 'generate_trait', + 'abi(per_item)', ], + perItemTag: 'external(v0)', } diff --git a/packages/core-cairo/src/print.ts b/packages/core-cairo/src/print.ts index 37e370b78..386937d4a 100644 --- a/packages/core-cairo/src/print.ts +++ b/packages/core-cairo/src/print.ts @@ -132,7 +132,7 @@ function printImplementedTraits(contract: Contract) { const impls = []; for (const trait of contract.implementedTraits) { const implLines = []; - implLines.push(...trait.tags.map(t => `${t}`)); + implLines.push(...trait.tags.map(t => `#[${t}]`)); implLines.push(`impl ${trait.name} of ${trait.of} {`); const fns = trait.functions.map(fn => printFunction(fn)); implLines.push(spaceBetween(...fns)); @@ -159,7 +159,7 @@ function printFunction(fn: ContractFunction) { } } - return printFunction2(head, args, undefined, fn.returns, undefined, codeLines); + return printFunction2(head, args, fn.tag, fn.returns, undefined, codeLines); } function printConstructor(contract: Contract): Lines[] { diff --git a/packages/core-cairo/src/set-upgradeable.ts b/packages/core-cairo/src/set-upgradeable.ts index a77cd53f5..23003e83b 100644 --- a/packages/core-cairo/src/set-upgradeable.ts +++ b/packages/core-cairo/src/set-upgradeable.ts @@ -24,7 +24,7 @@ export function setUpgradeable(c: ContractBuilder, upgradeable: Upgradeable, acc name: 'UpgradeableImpl', of: 'IUpgradeable', tags: [ - '#[external(v0)]' + 'external(v0)' ], }; c.addImplementedTrait(t); From 95d184fc382a726dcf0e8da08b5010557a1f46d6 Mon Sep 17 00:00:00 2001 From: Eric Lau Date: Mon, 12 Feb 2024 15:46:06 -0500 Subject: [PATCH 7/7] Use abi(embed_v0) for interface impls --- packages/core-cairo/CHANGELOG.md | 3 ++- packages/core-cairo/src/custom.test.ts.md | 2 +- packages/core-cairo/src/custom.test.ts.snap | Bin 1147 -> 1148 bytes packages/core-cairo/src/erc20.test.ts.md | 24 ++++++++++---------- packages/core-cairo/src/erc20.test.ts.snap | Bin 2234 -> 2230 bytes packages/core-cairo/src/erc20.ts | 4 ++-- packages/core-cairo/src/erc721.test.ts.md | 10 ++++---- packages/core-cairo/src/erc721.test.ts.snap | Bin 2029 -> 2026 bytes packages/core-cairo/src/erc721.ts | 4 ++-- packages/core-cairo/src/set-upgradeable.ts | 2 +- 10 files changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/core-cairo/CHANGELOG.md b/packages/core-cairo/CHANGELOG.md index f438d56a0..e4238029d 100644 --- a/packages/core-cairo/CHANGELOG.md +++ b/packages/core-cairo/CHANGELOG.md @@ -4,7 +4,8 @@ - **Breaking changes**: - Remove non-standard `safeAllowance` option from ERC20. ([#324](https://github.com/OpenZeppelin/contracts-wizard/pull/324)) - - Use `abi(per_item)` attribute instead of `external` for generated trait impls. + - Use `abi(embed_v0)` attribute instead of `external` for impls derived from interfaces. + - Use `abi(per_item)` attribute instead of `external` for impls with generated traits. ## 0.8.0 (2023-12-11) diff --git a/packages/core-cairo/src/custom.test.ts.md b/packages/core-cairo/src/custom.test.ts.md index bd4a1bd91..3b28db391 100644 --- a/packages/core-cairo/src/custom.test.ts.md +++ b/packages/core-cairo/src/custom.test.ts.md @@ -130,7 +130,7 @@ Generated by [AVA](https://avajs.dev). self.ownable.initializer(owner);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.ownable.assert_only_owner();␊ diff --git a/packages/core-cairo/src/custom.test.ts.snap b/packages/core-cairo/src/custom.test.ts.snap index 18da2f98567a92e75a11bca873a3b9e5e1fda2d7..d4c8e6484c133ae1ea4cbc9567a64914392d255e 100644 GIT binary patch literal 1148 zcmV-?1cUoQRzVV{vV4700000000B+S>0~iHWW@5qy>DpH{dV~Z~!;mO>dNKK;UGUfn+I~6lhTd z0xccIL?lumsif(U0ozS4`vwEL_t_ilG5P={B}yjs6FY5^*@F!vHl_3Pox^j^M_V7F zam<1<@$PSsM8*&WnUE|Yg5p$6m=u3}2tzFK%RkrG9J z093%^Q3zC$hyeG{!RWZx`}Vbvn4eLQo)<7GIS%AWFJU1%xEz`_`mKl5ON%m&PvInA z3du8d@2I$DWUhKwJp*x);!NOi3=NR49e(-OFWyQstX|isi&Z z4G;rlQtY7;>HxvHx-%8t)6326c8hgzmO&FhWzUF~=FAr3G3i4xhR{F%ezVwUlB99v zeWVvZHjz&=swI9X6L2K4grBx&7&lOi?RpGV%0J)o5GN2H()en(2xyj|{DKo#6k|C>;j~R_Nco*XrvbZ9+G4TPt4P#{DiY6lVJM== zy4L3qApvpZA!iQJ+=84M*DJs#a!}drdrrTz3!@F8n|bH-Dn0o4Q>Nx?A8Rt56j! z86>X5>qzRN81X146c(e9b9FjU%Ou||vIyc#f$+OER z3(YyK9M7il+k>cW)Mtz@*RGyTH*r`g+|a8|hVkPhuc(?ClhF;?osV6p?_)~3HQWj1 z1_$cAks2Agzlqyyf$p$o9H*=DZ^Uz}V>^ThXR-8gn5gkGb9_5n<_z(&OFKk;bpoZ* z*E77|99A_PO)hxzUHKymx*&3b<~^RSo;<9cJS_RScJ<_8ww=W|Z?B#_te!kLKL9Pt OlZQ_uH`r-SAOHZ|3Nw5F literal 1147 zcmV->1cduRRzV5b`DLV;By!BQ2FT2;uJ z*vDjqJ+@}XP`cuxz1hosgO%F%=^N~0>;rVh9y>GsA%Ox-szich?DO-TGv}Od5`PYc zVeFmqzrTPWB80$8xrigeDNgt(7X0I9-^T*K`Lwe1a7n$ESC@WW78@Jr;MMkGMbsP>}%80md zoC1>Lywacgag@YVdfRMK#-0b9J5GE~bItwyLxbWNVgYH(_nFk*>|`=tq4KDkU@>w~ z4MY#=6g#MZ+Cy+A?~H|a)N*aJ*6pNu=Mj}U4p7@yMh60L= zYh4Bb;t&Q7vi7j2a;9cpWqzy~@hP=+o!WImi6A&6AAof;RXrC3VJmxjuZVc_{ANh4(yVr$C(JW{1mD9uGR zhlE)z^tQl$X4Tc9MPP9-a8 zB(}q=IO;r~@F?SxI7B|l2+p77ub*cX%sOFpie35FqS${{?v`Tj^84h1duoVhfhA^R zuFvN{F8f(j`dR(~uXpq6e^xhtUA>=f&fhgQ$Jxr3{d_s`7)+EHPrwr-RzFuU@0qNO z*ZpTxpS&yXw|D;7I@&#Sx3>2Nf4Z;tcXz&Hs5Hl7j26pzIbbZcD^JW;q=sFUhtix9 znsQiKo^|6l2T|Fm8;md8u9{8Paabx`)2m8`_G2Y4ubK&y(GJ<3k8P;$V@ldJ+zRCy z=jp7GY8kq}iCb@h_OK?LrpxlL#dE7;+lK(Bp>VMu$?-CAd|O*)4e_E&TSQ%X0;R%L zGrU_LRuvp|E_naA_>Bdf6EQ;59#0n!9u^NC=KNf{c {␊ fn total_supply(self: @ContractState) -> u256 {␊ self.erc20.total_supply()␊ @@ -190,7 +190,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20CamelOnlyImpl of interface::IERC20CamelOnly {␊ fn totalSupply(self: @ContractState) -> u256 {␊ self.total_supply()␊ @@ -302,7 +302,7 @@ Generated by [AVA](https://avajs.dev). self.accesscontrol._grant_role(PAUSER_ROLE, pauser);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20Impl of interface::IERC20 {␊ fn total_supply(self: @ContractState) -> u256 {␊ self.erc20.total_supply()␊ @@ -337,7 +337,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20CamelOnlyImpl of interface::IERC20CamelOnly {␊ fn totalSupply(self: @ContractState) -> u256 {␊ self.total_supply()␊ @@ -435,7 +435,7 @@ Generated by [AVA](https://avajs.dev). self.ownable.initializer(owner);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20Impl of interface::IERC20 {␊ fn total_supply(self: @ContractState) -> u256 {␊ self.erc20.total_supply()␊ @@ -470,7 +470,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20CamelOnlyImpl of interface::IERC20CamelOnly {␊ fn totalSupply(self: @ContractState) -> u256 {␊ self.total_supply()␊ @@ -814,7 +814,7 @@ Generated by [AVA](https://avajs.dev). self.erc20._mint(recipient, 2000000000000000000000);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20Impl of interface::IERC20 {␊ fn total_supply(self: @ContractState) -> u256 {␊ self.erc20.total_supply()␊ @@ -849,7 +849,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20CamelOnlyImpl of interface::IERC20CamelOnly {␊ fn totalSupply(self: @ContractState) -> u256 {␊ self.total_supply()␊ @@ -900,7 +900,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.ownable.assert_only_owner();␊ @@ -1005,7 +1005,7 @@ Generated by [AVA](https://avajs.dev). self.accesscontrol._grant_role(UPGRADER_ROLE, upgrader);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20Impl of interface::IERC20 {␊ fn total_supply(self: @ContractState) -> u256 {␊ self.erc20.total_supply()␊ @@ -1040,7 +1040,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC20CamelOnlyImpl of interface::IERC20CamelOnly {␊ fn totalSupply(self: @ContractState) -> u256 {␊ self.total_supply()␊ @@ -1091,7 +1091,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.accesscontrol.assert_only_role(UPGRADER_ROLE);␊ diff --git a/packages/core-cairo/src/erc20.test.ts.snap b/packages/core-cairo/src/erc20.test.ts.snap index eb20d61d678897d42e4f35a7b7165866eb6639dd..f460aae849a003fa105f4c791cca4793a138db22 100644 GIT binary patch literal 2230 zcmV;n2ub%rRzV*^&g7}00000000B+T+MFWHV{sm6af}JBnSeuDNr!U!Run3xCY#!N*mO$oz_Sk zyZ!;%27$`ea&6UGNsuTzPT)h&eT1IUV;`q)&^IY5QCd=>es;Y-S}*rvOCo1D!8LWz)Bz>mNJV|Kok912O#N`ajpN-MmJBAAEG} z_J@C6fBYEi?{56O^ujcd?W3iw4zjV?HIb)*?X81GqgJ% zfbH`G=LFf{T?3F`;3MF;$bO4l7g?sQX_!9Mv~VPvwz;>yvb^r}T*oFHo;1QvMtpt0 z=|X(00kKsJ_}KB_5z-=gS^%Ar+pO6p{eO{BdiV;q%_i!#QAa;rUVI(iG<&WUwcSP- zQUz?$JKv?)u)*g2ydqbK@2~V)A1rAT^n%snjY!`A6Z=u z2r66ThCm-b3MGGJ+9o!kWxhpTbAfr$LJKTxA3R@Je8M@fOZ!2f!GsqW{6lc!sN-*0;kXlh&Ki+t6%ZL(VvAdh@705Ro3I1 zOfrc+^pI!NoUz~B7Y4pO6y91ALgDAPrXC85`k2(?y3jy*&3$A9o{7&jEf!hR zcG-WWyr5wa9&1{o z)g+dXkQ?yN(k^FMW%)krWh@%Zn}=8V)pQrTc;FTIbD3?C(>l)zZ^24M}AooU8(kMJ}HZ(j90) z+d#V0m9l98vVb}PoyLrUO9#NwW>oSJ%i9+}PL< zVvc3f=v~k0H3hnP@}-zd_1;QR%2kNaj#p0q$@tV12_1>ROwha}$4$4`rzW zOe7-4>pfG5Lo8em*9NIV68%M5YYK1dRR$Q?lN(~ps|Z$j^Qnj{fHM;x1JALLpM@Ci zd@Vo>%{!$KLzv5f-L=F0%{_f@=f$Q5y2!#St1IM{feaVXEbo5v0oURIeI32}&_wh% zl+Cd;Z7sZ9k1k7zn6w!Q{0251Iv~$jC9fHK>#M`E-`IS%cKG5zU)$K;dKpebC4?kt z5)gmZw0GPzUd$kVBA*0~te~}ow$QDRfiOiJT{?jYIofDma2Y{$jDvg@QZ8~?UST>j z2*aeqfL!TpGCsoWNB%mqAdom2BGEj3&KDpgM%Y}X3_vjq^BF6e4{#|PWAjy7LMn-` z8C{MPq3WP63@og}PLC|S*|)kGu<^Viil}-d|1Fnr~$W_3$GqIeppqS_O zHv-c3#cfs0bID?!Y?JZUXG#gFk{?y_GmB`CD)~_*KQaQU6AyLmz+|(8eZqUdmy0O&;pez}AtR9bFJGmQU(*c65wqk!tYX zuMUo?gQEjx*2BH#$-3w?9`FhDm&>wW_At69L=?JOsgF#kh@m3J6eGqcKQcj`TD}=` z^Ebh#f4VvKL}3O`JJ0k+MV-S>F_(GX1-V+g7Bj!wFlU9CZXY|=QAoc|?u*O1o8Qw<_&crQNEuJK;7{9;8aU^Yo`myK7zAJ!SN9$Qc_X z{8tAjOX5HO7Rwxu2g3@(J$pOL*P@Nibb}&Z`Z4s6$>SLP8iCrlS3_d!Y$PJX!qS2J za;&zngy7z10&M&7y>WfdbjZqssN3Q04|{7H#T|t<>I%HI00000000B+Twib7HW2UD4#oV`qA1W6dth5&aWJ>b0%QZ!tyqwxThOM- z@(0*f6dEnli4a*5Br0iI@ zz|O^?bBb*6z5&QD@DXraWWPhMi!9UDG)$jrS~wC-+uGk)UDW)t<=sH2~)EWZhFnmyNw+U_6> zsRFj?o$pg@*x>j!-)%5a4=}{&+0!ySifC7*xdD5~+O@5VBH}`$443pMZHzn{S~&#y z$8u8CAi_zB#_D4)FfcfX?lEIv?SeLI+Dt^FzsMpotQm<`*zPiB7S8w^cF{qed4`&s zp5s#6i0v}6gs2g+gB}QP2xIA55cfyWx1a1V!rQ4q5W|n;bi9a2*9P3ZriZ$~M^;w@ zg36Y;A<)N9Ldl<)wuwz>neUL-Tw-3d)B;O8hcA|vpEAyu4d&2x*a@@)GA(TjWqta_ ze}Yf{dt+)o9rx)|KSo$Lpk*OXhn6C<}Ek5PB*zeq@4wQAofI@86p;qFnRK{z!|gx;*G)T+Bdv#^k*RqA}1$imG$^0 zlT4xyJ>(fRXDqnJmpP%(g@G>*g}1&GLgDAPrXC85`k2(?y3jy*&3$A9o{29sEf!hR z_Sk;|c|pS<%GWgK+>UzgM*kGX>v+=FM<1-Egfh}_v|^bPa&hBAifJi1f=m+$J=U~F zt4S;&BcIVufBGvBXW}y2X+0(OQJr#n$;xFhv1Kc(Sdo}S!R6@1x)RA{1+L4YT1+8{ zE;5A-K_?D15=GQ+iI;U1B8*fU0|@XTMW%)krWh@%Zn}=8Vs`b^Bk95BQRovgOXn!r zTq2belT0L8<%l4VMUx9Skkq4_w!}Xhu^1kjktcKMS*vR1(68D$rQw(g`8k zfflq4q&r5d zgjU`V33=P^q5?bgkYTzelIV(Pu@@;Z${Wex+Kyw%1{cSmC(!qihjrV*I=zQF1^FX4 zHa3Kq;~;7DuIKcc0^L0MQp}}#Z>1>ZDnw|jzr+5ZII5O>v|4}%((`T zXN}{Y{&--Fzf2BJn&NOJCNHwMm9!Wfzz!7$=Uq5tdh3n>@5 zDz7k|8HQofVMwlYHW?pb_9K6tSqMm+43TJ_J{JoP5+iJ`Qih-yhWU&YEe5odjj{PE z9Y89HuNhsA6rbv#E(|QJ!%mMZyxEt-FgF_ufF)R-&@*09a+>PLB;Ut6&HkF%j36aa zF;|`xmlecfD=1AtX$nf4AtXRSX+S|~3QDVPXbS+Pi5UQoR;AN`+CXcg8gdz^?OZHn zEGXo;{jGqrHE*jzo+}peWSfk)Hd9JSmHVi2pIO9uRJo5T_mL4$uN7~vMxG}2Ymkg^@{A5J%;WH5rwW+>hlsRVyK8Q#fUM=&r49J zmT$$}{9W+rpKne*QJBGV&NIDDQRnbe%w>`HK;~=DV&?Z67Hq3v;y?(?Yp;x1Um1?b z$+H=7RN^2~yc8E6L~8sdtjaGMB@ZI)Y`;1zK8VD%n8HD%xjr1ksdoH_gVa%;xk_c! zIiU&VP4j!MN1ex+>*F*b(!UVLX}EPX7JHua&jBU6oHj<9kDf*8Xg9Dd5V%DB9VADH z?w$#`=<(f}Aw)GT))hN44U?`%eO(XHi?3hcD2%W+SVG7m#`qKTPZp|hSV~SdX&gz; ze-g4>ml|crswR1nYLXLboH3>-$}D?UGTup7Iu}#nf`B|=%u4P&$+~G-_jKgU)8>SB z=ck0X%4lcOyw&3E{n)@%VYh4ms<2xXcGsgWRTXxFlHp1fcB{f}RoJZxyTP0kc2605 ztTZhMBR?|e%xQ*Ebb_@QJ+p7XLUq1jJiTiMNL8O zuPq>KN(n}(J_I|8>Jcdw1-q--ks8&G)czZ@(qu{D{dK66DekZK4&v)c7w*V9 zj&lPdVKNYgDTA&IC>jzxrx4D`sV-`zEi|vmWXq7M?1tp diff --git a/packages/core-cairo/src/erc20.ts b/packages/core-cairo/src/erc20.ts index 7af449f92..a1665d917 100644 --- a/packages/core-cairo/src/erc20.ts +++ b/packages/core-cairo/src/erc20.ts @@ -101,7 +101,7 @@ function addERC20ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC20Impl', of: 'interface::IERC20', tags: [ - 'external(v0)' + 'abi(embed_v0)' ], } c.addFunction(ERC20Impl, functions.total_supply); @@ -115,7 +115,7 @@ function addERC20ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC20CamelOnlyImpl', of: 'interface::IERC20CamelOnly', tags: [ - 'external(v0)' + 'abi(embed_v0)' ], } c.addFunction(ERC20CamelOnlyImpl, functions.totalSupply); diff --git a/packages/core-cairo/src/erc721.test.ts.md b/packages/core-cairo/src/erc721.test.ts.md index bb469d8a1..891145193 100644 --- a/packages/core-cairo/src/erc721.test.ts.md +++ b/packages/core-cairo/src/erc721.test.ts.md @@ -186,7 +186,7 @@ Generated by [AVA](https://avajs.dev). self.ownable.initializer(owner);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC721Impl of interface::IERC721 {␊ fn balance_of(self: @ContractState, account: ContractAddress) -> u256 {␊ self.erc721.balance_of(account)␊ @@ -236,7 +236,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC721CamelOnlyImpl of interface::IERC721CamelOnly {␊ fn balanceOf(self: @ContractState, account: ContractAddress) -> u256 {␊ self.balance_of(account)␊ @@ -568,7 +568,7 @@ Generated by [AVA](https://avajs.dev). self.ownable.initializer(owner);␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC721Impl of interface::IERC721 {␊ fn balance_of(self: @ContractState, account: ContractAddress) -> u256 {␊ self.erc721.balance_of(account)␊ @@ -618,7 +618,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl ERC721CamelOnlyImpl of interface::IERC721CamelOnly {␊ fn balanceOf(self: @ContractState, account: ContractAddress) -> u256 {␊ self.balance_of(account)␊ @@ -712,7 +712,7 @@ Generated by [AVA](https://avajs.dev). }␊ }␊ ␊ - #[external(v0)]␊ + #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.ownable.assert_only_owner();␊ diff --git a/packages/core-cairo/src/erc721.test.ts.snap b/packages/core-cairo/src/erc721.test.ts.snap index 9f54491f02442ac31197af718b9e609bc8d1825e..35bd8992c28898dbfafca0c8b7c3f3144a46c958 100644 GIT binary patch literal 2026 zcmV2{!O4k;-*v;Nym)+IgVsEf#8Yz(!DN(ZgQ`d3ii#C#ZKA!WDJU?WZ zkM6)n&T0JT-w=D)hj0L5&+*~_gz*W&@gE%qt}_ImxbwR^8)45HHjV#{(+fFt1GH)|s_H1^*0(J2g! z4{HYbBr!Bl2!r=9459A@mWAoJmIWi{ht2OSYxiKA{J)JxAqq$zk1C`*(glh`=wJ_# z$2fAfEbH)KdrOi`MIHWp#|!~Jv5Z0o9V5ml0>{uYG8H-oJR|RU!(IBY@ko!QbSNQF zbp#G=#8Fb1d#}O3GvR0ehxXaG8*kE=-YE20mwONcIt)Gf>c^tOoFci^<84OyAqE&e zc{EWs+h7F!{lI@WzAw>q>Q3uzni{r&4YTM@hmdKm40$%?w16eU0}P`8_*DeR-|NBX z5=-Y-rdW)l#KFd4_Kqzt)-D;arlzoie%Kl-cg{dM4KUJ`R$@VxKj-SE^ZyNd7{bUq zgXT_zLb_16ugDfg)(8g4$Vgu(*0?^vdH>R?)EJV!?^FtlrC72+5)}FqKbDb#1?GL=b!yfRx_b@WonO9uz80&leU)Gs}IbSX;I{XvC;8sAHs_-1df+k!)^# zFB?cdKEy`md&$HuJ7SX=$3GyBVT4VY8rzF)5QY&tBTElOHhN3UH#3;L_l=Hbz@rF7 zv1J{-=pOZ-?H}}h+ubSjr*xFsDFE|^=cO1Lf+W_*&|9yR82ah3=Cvp#S|lV+o}hQyztpNN+-bK4qQX!N~MN6LB&&Ri5vqUyJj7Ob4*P;Mw(gW zZ&?tXA!QXJYz`Y~cwn2eNa#)eGkky!dQ&@_Q)JZf!ov8x$*ylm_ms9%KcC9UyGe zcW_v&Fl5#=WYB-;Smfi;N!3xx0h!Qc=5mfyjbo{jA6B~6)sJQC#uSw^*um9lqNgt_dh9Fg&a$lpXuKTp399Py{(!cQzWOV=&O`1fq{kaCR2_sl#=jrhFCY&c~ z;Of=Jtv>TXPd~G#?R}o0H9lJPng*-oV{je>jp3%w&3Bm(eTt&)()jo}IQMP?-#+P* zE&KH9W$VRU1IFwk{P`@7eBqnx>G(G}E)eGNVv0>7M1ls}6xU56G3T-R_aA{#ivyv%Fst7t>=s``*KBw){TsVn5%U})06ke0%Z~XTsavp?LHQT6VaZ*CQ2fe1FQq3yeqZ1OVhQBmw{*hr@A8FvbyQxcJ??e z$j8xQ=HaKDjtm*D_r>(8B3PUxJiYv4E9C+JdmX&2WJZY?ksigFutkRRK}ANH0&l zxad0)^(c}@)O*iMP`NJh#)VG27=fw=V$}}a+KU_Q#f|pjMtgCiy|~d{+-NUuv==w> zrPyBFXfJNG7dP6A8|}r7%XV?2iITJYZK(;D=4$*YswSka-ZAZz^Kzn;ygkKT?o-?` z8N0kk&AhsN{8yWvvz^mwM-;%fwnNYO>=O{5kgxf9-yCMEv~5cqDbqylPp0N_~iBme*a literal 2029 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 diff --git a/packages/core-cairo/src/erc721.ts b/packages/core-cairo/src/erc721.ts index 93622efee..e5c538cf2 100644 --- a/packages/core-cairo/src/erc721.ts +++ b/packages/core-cairo/src/erc721.ts @@ -94,7 +94,7 @@ function addERC721ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC721Impl', of: 'interface::IERC721', tags: [ - 'external(v0)' + 'abi(embed_v0)' ], } c.addFunction(ERC721Impl, functions.balance_of); @@ -110,7 +110,7 @@ function addERC721ImplAndCamelOnlyImpl(c: ContractBuilder, pausable: boolean) { name: 'ERC721CamelOnlyImpl', of: 'interface::IERC721CamelOnly', tags: [ - 'external(v0)' + 'abi(embed_v0)' ], } c.addFunction(ERC721CamelOnlyImpl, functions.balanceOf); diff --git a/packages/core-cairo/src/set-upgradeable.ts b/packages/core-cairo/src/set-upgradeable.ts index 23003e83b..1cc89b187 100644 --- a/packages/core-cairo/src/set-upgradeable.ts +++ b/packages/core-cairo/src/set-upgradeable.ts @@ -24,7 +24,7 @@ export function setUpgradeable(c: ContractBuilder, upgradeable: Upgradeable, acc name: 'UpgradeableImpl', of: 'IUpgradeable', tags: [ - 'external(v0)' + 'abi(embed_v0)' ], }; c.addImplementedTrait(t);