Jon Cinque
129b35609a
token-2022: Support approve / revoke with extensions ( #2870 )
2022-02-04 23:07:48 +01:00
Jon Cinque
d3539c19f9
token-2022: Fail to close account with withheld fees ( #2871 )
...
* token-2022: Fail to close account with withheld fees
* Add comment to use `get_extension`
2022-02-04 23:07:22 +01:00
Jon Cinque
93c7ad7618
token-2022: Support extensions in burn ( #2869 )
2022-02-04 22:25:36 +01:00
Jon Cinque
9b52455213
token-2022: Add delegate self-revoke ( #2872 )
...
* token-2022: Add delegate self-revoke
* Address feedback
2022-02-04 22:23:41 +01:00
Michael Vines
43b9a37836
Remove TODO
2022-02-04 09:58:06 -08:00
Jon Cinque
eb048559eb
token-2022: Add withdraw withheld tokens from accounts ( #2857 )
...
* token-2022: Add withdraw withheld tokens from accounts
* Add instruction field for number of signers
* Update instruction field
* Rename field and update comment
* Fix test?
2022-02-03 00:08:13 +01:00
Tyera Eulberg
27b0df1159
token-2022: add StateWithExtensionsMut::unpack_after_realloc ( #2859 )
...
* Add unpack_after_realloc
* Dedupe with internal fn
2022-02-02 15:20:54 -07:00
Tyera Eulberg
3863914b10
token-2022: fix handling for extensions with no data ( #2858 )
...
* Add failing test
* Fix
2022-02-01 20:53:37 -07:00
Tyera Eulberg
448e75f8ec
token-2022: fixup realloc_needed ( #2856 )
...
* Add failing test cases and fix buggy method
* Add extension initializations to ensure buffers are long enough
* Add extra checks
* Move multisig check lower
* Add missing test case and fix
2022-02-01 19:31:10 -07:00
Michael Vines
115c3c4703
Add ImmutableOwner extension to block ATA owner authority changes
2022-02-01 12:53:45 -08:00
Michael Vines
809c1a1a77
GetAccountDataSize instruction now accepts user-provided extension types
2022-01-31 23:03:22 -08:00
Michael Vines
4ddd6c81cc
Permit new token accounts to be overallocated
2022-01-31 22:48:16 -08:00
Jon Cinque
ccebd8d4c8
token-2022: Add transfer fee withdrawal from mint ( #2849 )
2022-02-01 01:00:20 +01:00
Jon Cinque
28f1ba9be5
token-2022: Add freeze / thaw through StateWithExtensions ( #2848 )
2022-02-01 00:24:59 +01:00
Jon Cinque
95f6c4f501
token-2022: Add harvest from accounts to mint ( #2820 )
...
* token-2022: Add harvest from accounts to mint
* Address feedback
2022-01-29 12:21:57 +01:00
Tyera Eulberg
f9e6f66758
Add extension realloc helper ( #2821 )
2022-01-28 15:41:22 -07:00
Tyera Eulberg
8a2d3cc227
token-2022: fix panics due to small buffers ( #2824 )
...
* Add panicking test
* Fix panic
* Add another panicking case
* Fix panic
* Add another panicking case
* Fix panics
* Add another panicking case
* Fix
* Add another case
* Move existing fix outside if clause
* Add some helpful comments
2022-01-28 09:47:47 -07:00
Tyera Eulberg
76b59b6dc1
Fixup use stmts ( #2816 )
2022-01-26 15:02:07 -07:00
Tyera Eulberg
c4de9e35f2
token-2022: remove split_at usages ( #2813 )
...
* Add helper and remove split_at usage
* Rework helpers for TransferFee extension ix unpacking
* Refactor pubkey unpacking, remove magic numbers
2022-01-26 14:11:15 -07:00
Tyera Eulberg
2daa6e645f
token-2022: add DefaultAccountState mint extension ( #2810 )
...
* Add DefaultAccountState extension
* Check DefaultAccountState in InitializeAccount
* Add rust client functionality
* Add tests
* Simplify ix variants
* Fixup freeze-auth signing state for multisig
* Add InitializeMint check to prevent freeze_authority.is_none() and default AccountState::Frozen
* Use separate freeze_authority in program_test
* Add docs for default-state instruction data
* Rebase on #2807
2022-01-26 13:30:24 -07:00
Jon Cinque
e2d56f403d
token-2022: Assess transfer fees ( #2807 )
...
* Refactor transfer to use StateWithExtensionsMut
* Add basic transfer tests
* Add transfer fee calculation and use in transfer
* Add specific transfer fee tests
* Add self-transfer test + rename test
2022-01-26 19:25:10 +01:00
Jon Cinque
82d862ebde
token-2022: Enforce maximum transfer fee of 10k bps ( #2808 )
2022-01-26 14:02:24 +01:00
Tyera Eulberg
87fe3793ea
token-2022: implement SetAuthority for TransferFeeConfig and WithheldWithdraw ( #2801 )
...
* Make comment more explicit
* Support setting TransferFeeConfig and WithheldWithdraw authorities
* Add tests
2022-01-25 10:23:34 -07:00
Michael Vines
a46a198404
Document authority restriction
2022-01-24 17:41:47 -08:00
Jon Cinque
8bac649302
token-2022: Implement set transfer fee instruction ( #2797 )
...
* token-2022: Implement set transfer fee instruction
* Address feedback
2022-01-25 02:03:12 +01:00
Tyera Eulberg
cc8826ac70
token-2022: plumb program_id through instruction builders ( #2792 )
...
* Plumb program_id into ix builders
* Don't unwrap extension instructions
2022-01-24 14:14:21 -07:00
Tyera Eulberg
a98977f5fd
token-2022: add more tests ( #2783 )
...
* Add extended-mint case to test_get_account_data_size()
* Add missing account-type init
* Add basic init-acct ProgramTest tests
2022-01-24 11:39:13 -07:00
Tyera Eulberg
c03c1fc7b4
token-2022: make extension instruction builders consistent with vanilla token ( #2782 )
...
* Make TransferFee and MintClose ix builders consistent with vanilla token
* Make ConfidentialTransfer ix builders consistent with vanilla token
2022-01-24 11:03:37 -07:00
Tyera Eulberg
83c3ffad25
Bump solana crates to v1.9.5 ( #2780 )
...
* Bump solana crates to v1.9.5
* Update sol_set_return_data type signature and un-ignore test
2022-01-21 22:52:10 -07:00
Tyera Eulberg
defdca2201
Comment SyscallStubs sol_set_return_data and ignore test for now ( #2777 )
2022-01-21 16:32:37 -07:00
Tyera Eulberg
bf96dd43bf
token-2022: overwrite with init_extension using default state ( #2746 )
...
* Overwrite extension data when init is called
* Update comments
2022-01-21 16:28:04 -07:00
Tyera Eulberg
821ad120d8
Bump zk-token-sdk and impl Default for confidential-transfer extensions ( #2771 )
2022-01-21 13:33:41 -07:00
Jon Cinque
f5a6dc671c
token-2022: Zeroize account data on close ( #2764 )
...
* token-2022: Zeroize account data on close
* Address feedback
2022-01-21 02:47:48 +01:00
Jon Cinque
ba46fedafb
token-2022: Add init transfer fee config ( #2757 )
2022-01-20 13:29:40 +01:00
Jon Cinque
db0b2c5295
token-2022: Add mint close authority support everywhere ( #2754 )
...
* token-2022: Add mint close authority support everywhere
* Address feedback
2022-01-19 18:40:00 +01:00
Jon Cinque
480dc6870f
token-2022: Add init mint close authority ( #2744 )
2022-01-19 12:44:45 +01:00
Tyera Eulberg
00b8a4b332
token-2022: Support extensions in InitializeAccount variations ( #2743 )
...
* Prep helper fn to reuse code
* Adjust error to match current _initialize_account handling
* Add new helper to initialize extension from ExtensionType
* Include required extensions in InitializeAccount processing
* Initialize native mint
* Add missing native-mint test case for get_account_data_size
* Remove superfluous mint unpack
* Limit scope of StateWithExtensionsMut method
* Update comments to be correct
* Check account length vis-a-vis required extensions in Initialize
* Noop confidential-transfer case, add comments, and make fn name more explicit
* gt -> ne
2022-01-15 13:59:03 -07:00
Jon Cinque
3e1dd73396
token-2022: Basic integration with rust client ( #2739 )
...
* token-2022: Basic integration with rust client
* Rename ExtenstionType -> Self
* Fix merge conflicts
2022-01-14 20:34:43 +01:00
Tyera Eulberg
cad24e502a
Add GetAccountDataSize implementation ( #2736 )
...
* Add helper to get required Account extensions
* Add GetAccountDataSize processor
* Add get_account_data_size instruction
* Add test harness to check return data
* Add test of basic mint/account get-len
* Move method inside impl ExtensionType
2022-01-13 18:50:01 -07:00
Michael Vines
e7737760ee
Port the remainder of the zk-token program to the ConfidentialTransfer extension
2022-01-13 10:44:42 -08:00
Jon Cinque
ac85fca43d
token: Refactor transfer fee instructions + processor ( #2733 )
2022-01-13 12:08:17 +01:00
Michael Vines
db9f89828b
Allow the confidential transfer extension to block `CloseAccount`
2022-01-12 09:54:53 -08:00
Jon Cinque
c85373aa3e
token: Check self-ownership in `validate_owner`
2022-01-12 08:20:10 -08:00
Michael Vines
583afbd35f
Drop `new_base` argument, `pack_base()` now works on `self.base`
2022-01-11 21:11:19 -08:00
Jon Cinque
f2056358b7
token: Add checks for mixed type initialization ( #2723 )
...
* token: Add checks for mixed type initialization
* Address feedback
2022-01-12 01:33:02 +01:00
Michael Vines
991eb83a67
Confidential transfer extension
2022-01-11 13:22:20 -08:00
Michael Vines
2caec406bc
Rename StateWithExtensionsMut::get_extension()
2022-01-10 13:15:02 -08:00
Michael Vines
7f0e86cc0f
Harden StateWithExtensions unpacking
2022-01-08 09:20:02 -08:00
Tyera Eulberg
d166e28836
Strip extension account-type prefixes ( #2715 )
...
* Strip account-type prefixes
* Edit comment
2022-01-07 16:46:01 -07:00
Michael Vines
3cc92d294a
How about ConfidentialTransferState and ConfidentialTransferAuditor?
2022-01-07 14:58:41 -08:00
Michael Vines
5fe1eb6a9d
Add Confidential Transfer Extension boilerplate
2022-01-07 14:58:41 -08:00
Michael Vines
7cc9bd7013
Move each extension into its own module
2022-01-06 09:41:06 -08:00
Jon Cinque
eedcbd8602
token: Extension state packing ( #2642 )
...
* token: Extension state packing
* Move to bytemuck
* Cleanup a bit
* Remove all unsafe, address feedback
* Address feedback
* Add test for multisig-length account
* Add tests for Account and multi-extension
* Remove last todo
* Add more tests
2022-01-04 17:55:51 -05:00
Jon Cinque
2cd68d3f5c
token-2022: Add transfer fee types and instructions ( #2608 )
...
* token-2022: Add transfer fee accounts and instructions
* Address feedback
* More feedback
* Move to mixins
* Separate instructions for mixin initialization
* Feedback again again again!
* Getting there...
* More more feedback again again
* Add `WithdrawWithheldTokensFromAccounts` instruction
* Add instruction serde, fix all errors
2021-12-14 23:36:02 +01:00
Michael Vines
1a0155e34b
Update to Rust 1.57.0
2021-12-09 23:56:47 -08:00
Michael Vines
1c417ffa4f
Fork Token 2022 program
2021-10-12 10:43:58 -07:00