Commit Graph

34 Commits

Author SHA1 Message Date
Jon Cinque 2158214c84
token-swap: Add fuzz check for pool token value (#958)
* Add extra check on instruction fuzz

* Refactor division

* Fix tests from fixed deposit math

* Fixup comments and cleanup fuzz

* Run fmt

* Address review feedback

* Fix JS test
2020-12-17 21:13:48 +01:00
Jon Cinque 7190672a0f
token-swap: Add instructions to deposit / withdraw one token (#937)
* Add instructions to deposit / withdraw one token

* Run cargo fmt

* Fix clippy issues

* Add JS interface

* Add tests for new instructions

* Run prettier

* Rename deposit and withdraw

* Rename withdraw -> withdraw all in program

* Rename single token instructions
2020-12-16 10:02:27 +01:00
Jon Cinque 087ae2e242
token-swap: Add offset curve and math (#935)
* Add offset curve

* Fix for math

* Add PreciseNumber

* Use Balancer formulation for trading token -> pool token conversion

* Add round-trip conversion testing

* Add offset curve to JS

* Run cargo fmt

* Update JS test numbers for new calcs

* Integrate review feedback

* Allow for withdrawals when one side is 0

* Run cargo fmt

* Disallow deposits for offset curve

* Run cargo fmt

* Allow for withdrawals through 0
2020-12-10 18:31:21 +01:00
Jon Cinque c0f5ff182c
token-swap: Refactor for new curves (#930)
* Add price parameter for flat / constant price curve

This encompasses a lot of changes to properly support the constant price
curve, and fixes some old pain points to make the whole thing easier to
use, including:
* refactor fees out of the curve
* move all fee calculations into new Fees type
* modify constraints to only care about curve types and fee
* add price parameter into constant price curve (flat curve)

* Run cargo fmt and clippy

* Revert interface changes and math update

* Run cargo fmt

* Address review feedback

* Fix fraction validation for zeros
2020-12-08 18:22:32 +01:00
Jon Cinque 04a3c833f0
token-swap: Cleanup check (#903)
* Add extra check

* Add extra check on init

* Run cargo fmt

* Clippy

* Add token program id check on unpack

* Run cargo fmt

* Add checks for program id ownership on swap account

* Add truncation check during swapping

* Run cargo fmt

* Update truncation to ceiling the value

* Run cargo fmt

* Fix JS test

* Refund back not needed source tokens

* Run cargo fmt

* Add swap_without_fees method to trait

* Fix merge problem

Co-authored-by: Justin Starry <justin@solana.com>
2020-12-03 12:17:32 +01:00
Jon Cinque c677c58e09
Add JS test for creating accounts and swapping in one transaction (#568)
* Add test for doing all swap in one transaction

* Fix instruction to minimize signatures required

* Run prettier
2020-11-17 17:54:55 +01:00
Jon Cinque 9cd1cb0900
Token-swap: Add "production mode" hard-coded fee constraints (#731)
* Add statically configured program constraints

* Allow missing host fee account

* Run cargo fmt + clippy

* Update JS for new host fee account param

* Fix merge issues

* Add host fee to curve, constrain on curves

* Cleanup static variable

* Add production test to CI

Integrate review feedback

* Run cargo fmt, clippy, prettier

* Re-run cargo fmt

* Fix test for eslint / prettier clash
2020-10-29 12:52:17 +01:00
Jon Cinque b0867c7e28
token-swap: Add fee account to receive withdraw / trading fees, trading token mints (#695)
* Add mints to swap info

* Add mints to JS

* Add fee account in SwapInfo / init

* Add test for 0 fee, init test fully

* Add withdraw command interface

* Add fee accounts to swap instruction

* Add calculations for swap and withdraw fees

* Run cargo fmt

* Add new fees to JS and test

* Review feedback: fixup instruction doc and clone

* Update order of accounts in instructions

* Run cargo fmt

* Fix owner fee pool token calculation to include trading fee

* Add owner fees to flat curve, per request

* Fix instruction comment numbering

* Add more errors types for clearer calculation errors

Add a check for withdrawing from fee account

* Cargo fmt
2020-10-23 18:31:58 +02:00
Jon Cinque db42f7abbe
token-swap: Add curve and pool token trait and integrate in processor (#624)
* Add SwapCurve trait and integrate in processor

* Add PoolTokenConverter trait to correspond

* Add curve type parameter to initialization and JS

* Refactor for flat curve test, fmt

* Update token-swap/program/src/curve.rs

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

* Refactor swap curve to allow for any implementation

* Rename SwapCurveWrapper -> SwapCurve

* Run cargo fmt

* Update CurveType to enum in JS

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-10-21 20:46:50 +02:00
Yutaro Mori 5f56635fde
Pass TokenSwap state into the constructor to simplify function calls (#586)
* Pass TokenSwap state into the constructor to simplify function calls

* WIP: Update program to return token_program_id

* Add tokenProgramId to js TokenSwapInfo object

* Address pr comments

* Remove TokenSwapInfo and use loadTokenSwap as the primary way to fetch TokenSwap metadata

* Fix module.d.ts

* Address pr comments

* Clarification on comments

Co-authored-by: Yutaro Mori <yutaro@umaproject.org>
2020-10-14 12:37:58 +02:00
Justin Starry 9e76189a42
Clean up JS test getConnection function (#577) 2020-10-08 09:27:06 +00:00
Jon Cinque 2b07fc1064
token-swap: Assess swap fee on input token (#562)
* token-swap: Assess swap fee on input token

* Update token-swap/program/src/curve.rs

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

* Update token-swap/program/src/curve.rs

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

* Fix new var name everywhere

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-10-02 22:47:39 +02:00
Jon Cinque bbc5f57dcc
token-swap: Add slippage to swap / withdraw / deposit (#560)
* token-swap: Add slippage to swap / withdraw / deposit

* Update JS snake_case -> camelCase

* Run prettier
2020-10-02 10:40:33 +02:00
Jon Cinque 13de66817d
token-swap: Improve pool token supply on initialization, deposit, and withdrawal (#508)
* token-swap: Add token supply in invariant calculation

* Refactor state classes into curve components for future use
* Align pool initialization with Uniswap using geometric mean of token
  amounts
* Fix deposit and withdraw instruction to work as a proportion of pool
  tokens
* Add math utilities to calculate the geometric mean with u64

* Improve variable names

* Use a fixed starting pool size

* Run cargo fmt

* Update js tests with new pool numbers

* Run linting

* Remove math

* Fix BN type issues found by flow
2020-09-23 23:08:44 +02:00
Jon Cinque ba76d520eb
token-swap js: Prepare package for npm (#475)
* Run `pretty` properly
* Add `build:program` like for spl-token
* Add TypeScript to CI
* snake_case -> camelCase variables
* Combine transactions on swap initialization
* Make instruction functions static
2020-09-18 19:10:21 +02:00
Jon Cinque f5e0d793a9
token-swap: Swap instruction fix and update libs for CI (#408)
* token-swap: Fix swap instruction

* Update SDK libs and fix outstanding issues

* Run lint in token/js

* Disable CI token-swap js tests

* Update code for web3.js 0.75.0

* Update output -> destination verbiage for clarity / consistency
2020-09-10 20:16:50 +02:00
Jon Cinque f6fc53c311
token-swap: Fix withdraw instruction (#405)
* Include pool mint in instruction, required for burning
* Add simple Rust test
* Fix js withdraw test
2020-09-09 18:00:03 +02:00
Jon Cinque db729af089
Fix deposit instruction (#399)
* Fix deposit instruction

* Refactor tests for easier composibility
* Add deposit instruction and test
* Deposit JS test works again

* Fix js lint
2020-09-09 10:59:27 +02:00
Jon Cinque ac73bd2e73
Fix token-swap tests (#388)
* Fix local token-swap tests

* Change generation of program address to use a nonce
* Accept nonce properly in initialization
* Include nonce in TokenSwap structure
* Fixup serialization with new parameter (padding used for now)
* Update dependencies

Update toml / lock files

Fix token swap initialization end-to-end

Cleanup unit test to use `find_program_address`

Add / refactor tests

Most importantly, added a special test to make sure that
token_program_id is provided at the end of CPI instructions, since
unit testing did not pick up that problem, and it was tough to debug
during end-to-end testing

* Revert some testing changes for PR

* Update token-swap/program/src/processor.rs

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

* Integrate review comments

* Fmt and clippy

* Refactor for clippy

* Fmt again

* Fix npm lint error

* Clarify signers line as requested

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-09-06 00:09:05 +02:00
Jack May 65aeff5b0b
Use deprecated bpf loader (#307)
* Use deprecated bpf loader

* bump web3.js to pick up fixed flow defs
2020-08-24 14:19:46 -07:00
Michael Vines a22908bbd9 Relocate js 2020-08-08 15:25:47 -07:00
Michael Vines 26ab9bb26a Reorganize crates based on program 2020-08-08 15:25:47 -07:00
Michael Vines a8c995bc79 Fix up target/ location 2020-08-08 08:05:00 -07:00
Jack May 569185359e to bytes on client side 2020-08-04 16:10:05 -07:00
Jack May 302855fa0a
Cleanup payer and remove use of instanceof (#176)
Co-authored-by: Justin Starry <justin@solana.com>
2020-07-31 11:37:33 +08:00
Jack May a07935371f
Prep token/js for publishing (#165) 2020-07-30 02:07:55 -07:00
Jack May 56dd582c6f
Remove supply from Token (#82) 2020-07-07 14:34:23 -07:00
Jack May a831eddb8d
Use variant fields (#90) 2020-07-07 13:55:56 -07:00
Jack May 767741c235
Fix automation (#81) 2020-07-07 02:09:19 -07:00
Jack May e8704a1e30
Add multisig support 3 (#79) 2020-07-06 16:36:27 -07:00
Jack May 5ee2d1f993
Single delegate support (#77) 2020-07-06 07:49:20 -07:00
Jack May fc7a808461
Token type renaming (#70) 2020-07-01 01:40:36 -07:00
Jack May b292d4cb3f
Fix token-swap (#72) 2020-07-01 00:56:00 -07:00
anatoly yakovenko 97094e61e5
Token swap (#50)
* initial

* wip

* withdraw

* wip

* wip

* updates

* fix imports

* compiles

* check delegates

* wip

* wip

* wip

* fixup

* instruction serializer

* unpack func

* done!

* update

* wip docs

* docs

* boilerplate

* docs

* fix docs

* Add token-swap test

* Add token-swap js bindings

Co-authored-by: Jack May <jack@solana.com>
2020-06-30 15:37:35 -07:00