41 Commits

Author SHA1 Message Date
Matt
830c263155 feat: implement net_pairs (#495) 2023-08-27 20:50:39 -04:00
Dmitry Holodov
f7c6a1dd0f maintenance updates (#503) 2023-08-16 19:28:51 -05:00
Dmitry Holodov
0f1865c33f additonal erc20 and taker decimal checks (#478) 2023-05-30 21:49:22 -05:00
Dmitry Holodov
f41c9af432 ensure that the status channel is always initialized (#471) 2023-05-20 16:04:26 -04:00
noot
e1b51b0811 bump relayer fee to 0.01 (#458) 2023-05-03 20:55:05 -04:00
Dmitry Holodov
f9a63ff7c3 min and max offer amount checks (#445)
Co-authored-by: noot <36753753+noot@users.noreply.github.com>
2023-04-30 17:36:31 -05:00
noot
dc64531325 fix: add SweepingXMR status, fixes restart during sweep (#399)
Co-authored-by: Dmitry Holodov <dimalinux@protonmail.com>
2023-04-24 16:44:26 -04:00
noot
f344d09fc6 add AUTHORS file and update copyright in license header (#389) 2023-04-18 12:25:30 -04:00
Dmitry Holodov
15b8378c76 ERC20 balance support (#380)
* Added --token flag to swapcli's balances request allowing the user to query their token balance
* --eth-asset flag on swapcli make changed to --token
* Added TokenInfo RPC API method to retrieve an ERC20 token's metadata
* Added an end-to-end ERC20 unit test to the daemon package
* Fixed ERC20 token approval amount to SwapCreator contract to use the minimum value required (instead of approving the entire user's balance for transfer by the contract)
* Fixed a race condition between concurrent contract calls to approve/new_swap in ERC20 token swaps
* Removed hard coded assumptions that all tokens have 18 decimals
* Maked the decimal places in our test ERC20 token configurable
* Fixed token exchange rate calculations
* Updated ongoing and past swap queries to correctly support ERC20 tokens
* Initial unit tests in swapcli's main package
2023-04-17 11:59:47 -05:00
noot
b26228805c add license header to files; update readme disclaimer (#368) 2023-04-04 13:12:12 -04:00
noot
aa70b55a5c log updates for ERC20 swaps (#369) 2023-04-02 18:38:46 -04:00
noot
310bafbc7e update swap_getPast to match swap_getOngoing; update docs (#350) 2023-03-19 20:27:31 -04:00
Dmitry Holodov
0e80eee4dc integrated relayer into swapd (#342) 2023-03-17 14:22:16 -05:00
Dmitry Holodov
51d89a4d18 added more required tags to serialized structs (#330) 2023-02-28 22:41:03 -06:00
noot
f7d244754c update relayer fee to be fixed at 0.009 ETH (#316) 2023-02-25 13:04:58 -05:00
Dmitry Holodov
8ca306af68 added JSON marshaling support to the Status type (#323) 2023-02-22 09:25:28 -05:00
Dmitry Holodov
b157adc28b JSON validation (#309)
Integrates the go-playground validator library into our codebase for objects that are serialized/deserialized.
2023-02-18 18:37:52 -06:00
Dmitry Holodov
943e95cc11 JSON updates (#305)
* ensures  all p2p message types have JSON tags
* when available, marshaling uses our project types
* "common" package was decoupled from the "message" package
* protocol version bumped
2023-02-16 01:15:58 -06:00
Dmitry Holodov
bb9a50dd7f upgrade linter (#297)
Upgraded linter to 1.50.1 and improved protocol documentation.
2023-02-07 22:31:06 -06:00
Dmitry Holodov
c913884a41 prevent startup failure due to outdated database entries (#295)
Delete and log bad offer and swap database entries on startup instead of bubbling the error up and failing swapd.
2023-02-03 11:35:09 -06:00
noot
be37a73086 fix: add commas to offer hash preimage (#283) 2023-01-21 23:05:17 -05:00
noot
faf8cf35c8 fix: update offer ID to be hash of offer fields 2023-01-19 15:21:17 -05:00
Dmitry Holodov
2905d1b1f9 Fixed Point Math (#269)
Updates our code to use the fixed point match library apd.Decimal.
2023-01-10 16:03:22 -06:00
Dmitry Holodov
ed15ed9c82 libp2p QUIC and NAT traversal features (#251)
Enables additional libp2p NAT traversal features and enables nodes to communicate using UDP/QUIC in addition to TCP. Switches to using libp2p's "routed host". Most commands that previously accepted multiaddress values now accept a Peer IDs instead.
2022-12-19 18:25:24 -06:00
Dmitry Holodov
1e83673f23 add package comments (#236)
package comments added to all packages
2022-12-02 00:43:32 -06:00
noot
cac8928e22 implement auto-recover for xmrmaker (#235) 2022-11-22 07:14:44 -05:00
noot
04cd5b4809 store swap recovery information in database, remove "infofile" (#227) 2022-11-19 10:52:15 -05:00
noot
be9888f05b implement event watcher for contract events; remove unneeded network messages (#219) 2022-11-13 14:19:37 +01:00
noot
36518eae87 persist swap info to disk (#213) 2022-11-07 14:42:35 -05:00
noot
0bdb6f6f2a add relayer support for claim contract function (#204) 2022-10-26 23:39:20 -04:00
doonte
067b12f584 add direct ERC-20 swap support (#158)
Co-authored-by: noot <elizabethjbinks@gmail.com>
Co-authored-by: noot <36753753+noot@users.noreply.github.com>
2022-09-05 14:12:22 -04:00
noot
d7d7cf0e0a cleanup todos, either fix or add issue numbers (#166) 2022-08-20 23:57:23 -04:00
Dmitry Holodov
cbecd6a891 fix various concurrency issues (#147)
* Fixes lock issues on the XMR Maker's offer list (new package protocol/xmrmaker/offers)
* Fixes lock issues on the swapState maps
* Fixes go routine sync issues in TestError_ShouldOnlyTakeOfferOnce that were sometimes breaking TestSuccess_ConcurrentSwaps
* Ensures that the id field of "types.Offer" is initialized when created
2022-08-10 08:12:12 -05:00
Dmitry Holodov
b729588dd5 update to current version of ganache (#138)
Updates the repo to install the latest version of ganache (ganache-cli is obsolete). 

One of the things that changed in the newer version of Ganache, is gas fee estimation uses the timestamp from the last mined block instead of the local computer's current timestamp. This mirrors what Geth does, so the Ganache change is helpful, but it caused a few problems that this PR fixes.

If we want to do dynamic fee estimation for a transaction that can not happen before time T0 or T1, we need to wait until there is one mined block after T0 or T1 to create our transaction. Otherwise the transaction will be reverted during fee estimation, returning an error when creating the transaction, and we'll never send the transaction out to the network.

Ganache, by default, only mines blocks when you create a transaction. In order to have a mined block after T0 or T1 to calculate transaction fees, we stopped using instamine, and now mine a block every second. This PR chose the minimum block interval for speedier tests.

Co-authored-by: noot <36753753+noot@users.noreply.github.com>
2022-08-06 22:30:45 -05:00
noot
cca0b6c771 allow for multiple ongoing swaps (#128) 2022-06-13 20:50:10 -04:00
noot
55ae59046c add more unit tests + errors clean up (#114) 2022-05-15 23:36:03 -04:00
noot
65d64544d7 implement unhappy path and error case integration tests (#102) 2022-03-21 15:54:41 -04:00
noot
d24eb78434 create separate integration test CI job, implement net_makeOfferAndSubscribe, swap_getOffers, implement happy path integration test (#101) 2022-03-15 22:50:05 -04:00
noot
f0021ce118 implement websocket client, net_takeOfferAndSubscribe (#100) 2022-03-07 22:05:27 -05:00
noot
5d225ac41d add code coverage to unit tests step, add lots of unit tests (#79) 2022-02-05 23:07:29 -05:00
noot
988b514cf1 cleanup codebase (#72)
* remove unused code, move some funcs around

* move monero/crypto to crypto/monero

* cleanup alice swap_state.go, move funcs

* move rpcclient and types package to common
2022-01-16 23:34:29 -05:00