Commit Graph

60 Commits

Author SHA1 Message Date
Jon Cinque 9db366cfb7
token: Fix some spelling mistakes (#3777) 2022-10-28 18:03:20 -04:00
Jon Cinque d331f47c52
token-2022: Remove redundant mint initialization check (#3763) 2022-10-26 11:15:32 -04:00
hanako mumei 836c9e67a6 token-2022: implement CpiGuard
(this is a reversion of a previous reversion of the original CpiGuard commit)
2022-10-25 19:31:15 -07:00
Trent Nelson 2c28eaa036
Revert "token-2022: implement CpiGuard (#3712)"
This reverts commit 126fb93be2.
2022-10-25 00:46:00 -06:00
hana 126fb93be2
token-2022: implement CpiGuard (#3712)
token-2022: implement CPI Guard

CPI Guard is an extension to block certain unsafe token operations from being done by programs through CPI
2022-10-24 18:36:57 -07:00
Jon Cinque 6e125f88a9
token[-2022]: Change `target_arch` to `target_os` (#3493) 2022-08-18 13:38:10 +02:00
Jon Cinque 4fadd553e1
token: Reassign and reallocate accounts on close (#3415)
* token: Reassign and reallocate accounts on close

* Revert "Refactor unpack and make test more robust (#3417)"

This reverts commit c618de374e.

* Revert "check that unpack is tolerant of small sizes (#3416)"

This reverts commit 22faa05f18.

* Also revert d7f352bd78
2022-08-03 23:49:36 +02:00
Jon Cinque d3cbe360ac
token-2022: Refactor PrintProgramError impl to error file (#3366) 2022-07-24 21:28:09 +02:00
samkim-crypto 677acf173d
token-2022: limit incoming transfers for confidential transfer extension (#3208)
* token-2022: limit incoming transfers for confidential transfer extension

* token-2022: add maximum pending counter for confidential extension in client

* token-2022: update tests for ct configure account

* token-2022: cargo fmt

* divide pending balance into lo and hi

* token-2022: update ct processor for lo and hi pending balances

* token-2022: limit confidential transfer deposit and transfer amount in token client

* token_2022: rename TokenError::IllegalAmount

* token-2022: compare max pending credit as u64

* token-2022: fmt

* token-2022: minor fix error from rebase

* Update token/program-2022/src/extension/confidential_transfer/processor.rs

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>

* token-2022: update configure account initialization comments

* token-2022: use strict comparison for max pending balance credit counter check

* token-2022: update deposit tests to check `pending_balance_hi` populated

* token-2022: update deposit tests to check that deposit and transfer fails when max pending exceeded

* token-2022: reset pending balance counter on `ApplyPendingBalance`

* token-2022: fix cargo test cases for credit counter

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2022-06-07 23:16:46 +09:00
samkim-crypto c2a3ecd970
token-2022: prevent an already configured confidential account to be configured again (#3216)
* token-2022: prevent an already configured confidential account to be configured again

* token-2022: add overwrite flag to init extension

* token-2022: clippy

* token-2022: update initialize mint for interest bearing mint

* token-2022: confidential transfer mint init allow overwrite
2022-06-07 09:42:23 +09:00
Jon Cinque 773e2ee469
token-2022: Add interest-bearing extension (#3013)
* token-2022: Add interest-bearing extension

* Rename / comment feedback

* Rename interest-bearing -> interest-bearing mint
2022-06-01 16:46:30 +02:00
Michael Vines f1c693d067
token-2022: Add support for Non-Transferable Tokens (NTTs) - NonTransferableMint extension (#3178)
Co-authored-by: Juan Oxoby <me@jmoxo.by>
2022-05-17 16:16:13 -07:00
Tyera Eulberg 2491b29a1e
Add AuthorityType variant to use for mint close-authority adjustment (#3111) 2022-04-26 07:55:15 -06:00
Jon Cinque 29479fcc72
token-2022: Make program and crate deployable (#2985)
* token-2022: Make program and crate deployable

* Featurize the syscall usage

* Re-add GenericTokenAccount

* Rebase correctly with GenericTokenAccount

* Add updated valid_account_data implementation
2022-03-10 17:42:16 +01:00
Tyera Eulberg 810c79ec32
token-2022: Allow anyone to burn/close an Account owned by the system program or the incinerator (#2890)
* Allow anyone to burn and close token Accounts owned by the system program and the incinerator

* Require rent from incinerator/system-owned token accounts be burnt when accounts closed

* Add support to OG program
2022-03-09 19:31:39 -07:00
Tyera Eulberg e17706c7be
Spell out destination (#2977) 2022-03-03 12:34:17 -07:00
samkim-crypto af90facd1d
token-2022: add fee withdraw and harvest instructions (#2907)
* token-2022: add fee harvest instruction for confidential extension

* token-2022: cargo fmt

* token-2022: add `WithdrawWithheldTokensMint` processor

* token-2022: add `WithdrawWithheldTokensAccounts` processor

* token-2022: incorporate VerifyWithdrawWithheldTokens instruction

* token-2022: minor variable name changes

* token-2022: additional comments + renaming variables

* token-2022: check if confidential extension was approved for fee harvest

Co-authored-by: Michael Vines <mvines@gmail.com>

* token-2022: fix error type for overflow

* token-2022: remove unnecessary fee extension check for confidential token harvest

* token-2022: add extra detail on front-running for harvesting fees

* token-2022: fix pending balance

* token-2022: bump zk-token-sdk to 0.8.0

* token-2022: fix minor variable name issue

* token-2022: minor spelling

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>

* token-2022: addressing smaller review feedback

* token-2022: change fee_mint to transfer_fee_config in confidential transfer

* Update token/program-2022/Cargo.toml

* token-2022: fix cargo bpf-test fail

* token-2022: fixing a previous comment mistake

Co-authored-by: Michael Vines <mvines@gmail.com>
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2022-02-24 21:16:32 -05:00
Tyera Eulberg 0268d76d30
token-2022: complete memo extension functionality (#2876)
* Add NoMemo error and use syscall to require memos

* Flesh out + dedupe memo-transfer tests

* Add memo v1 test cases
2022-02-24 16:48:42 -07:00
Michael Vines 10559aed7a Reduce mut usage 2022-02-23 11:48:03 -08:00
Tyera Eulberg 3d92f8f4dc
Add token Amount/UiAmount conversion Instructions (#2928)
* Add Amount/UiAmount conversion Instructions to spl-token

* Use invalid-mint error in spl_token get_account_data_size

* Add Amount/UiAmount conversion Instructions to spl-token-2022
2022-02-17 16:25:57 -07:00
Jon Cinque 558322798f
token-2022: Support extensions in `SyncNative` (#2926) 2022-02-17 22:50:10 +01:00
Tyera Eulberg 172e24e1f2
Initialize close_authority explicitly (#2919) 2022-02-15 17:27:28 -07:00
samkim-crypto 7330b17482
token-2022: add fee for confidential extension (#2897)
* token-2022: add fee for confidential extension

* token-2022: change receiver to dest for consistency

* token-2022: addressing readability review comments for confidential extension
2022-02-11 08:37:30 -05:00
Michael Vines 2e968115ab Add CreateNativeMint instruction 2022-02-09 20:03:21 -08:00
Tyera Eulberg 482a9281f6
token-2022: Add MemoTransfer extension (#2822)
* Style nits

* Initial MemoTransfer extension

* Stub in check for memo

* Add memo-transfer token-client method

* Add MemoTransfer tests

* Add immutable get_extension, and clean up mod

* Update token/program-2022/src/extension/memo_transfer/instruction.rs

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update token/rust/src/token.rs

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2022-02-04 17:12:01 -07:00
Tyera Eulberg c7ec4427b6
token-2022: Add Reallocate instruction (#2864)
* Pass by ref

* Dedupe ExtensionTypes in length apis

* Depend on deduplication in ExtensionType::get_account_len

* Add Reallocate instruction

* Remove unneeded api

* Add set_account_type helper and remove unneeded StateWithExtensionsMut api
2022-02-04 15:23:16 -07:00
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 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 28f1ba9be5
token-2022: Add freeze / thaw through StateWithExtensions (#2848) 2022-02-01 00:24:59 +01:00
Tyera Eulberg 76b59b6dc1
Fixup use stmts (#2816) 2022-01-26 15:02:07 -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
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 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
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 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