-
Notifications
You must be signed in to change notification settings - Fork 9
/
TODO
131 lines (121 loc) · 4.86 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# mint
[ ] allow cancellation from hop 0 by attempted propagation to last node
[ ] transaction reference and metadata
[ ] async webhooks
[ ] asset.created
[ ] balance.updated
[ ] offer.created
[ ] offer.closed
[ ] offer.updated
[ ] transaction.created
[ ] transaction.settled
[ ] transaction.cancelled
[~] list endpoint
[ ] list (asset) transactions
[ ] list asset operations
[x] list asset offers (order book)
[x] list asset balances
[x] list balances
[x] list assets
[x] paying yourself with a currency you trust does not decrease the balance (expeted, tested)
[x] error on offer with same currency
[x] allow cancellation without plan computation (use offer path, move CheckCanShouldCancel to plan))
[x] reintroduce transaction expiry on top of safe cancelation
[x] propagate cancellation on syncrhonous failure
[x] async propagation in case of failure
[x] support for 404 on retrieve transaction
[x] transaction safe cancelation
[x] refactor transaction creation/settlement
[x] Mint-Protocol-Version header
[x] default LetsEncrypt SSL cert provisioning in production
[x] default self-signed cert provisioning in QA
[x] retrieve asset publicly
[x] fix offer fixup on transaction expiration
[x] split endpoints between creation and propagation
[x] balance propogation
[x] pass DSN for DB, support Postgres
[x] check expiry at settlement
[x] check expiry of transactions at creation
[x] transaction expiration
[x] async proceses
[x] propagation protocol for both operations and offers
[x] idempotency of propagation (load offer/operation and save if they exist and return 200)
[x] validate asset is created when creating offer and test
[x] figure out when to set the offer as consumed (multiple crossings might be reserved)
[x] remove user from records entirely?
[x] remove the ability to create an operation directly?
[x] transaction starting from an asset not owned by owner
[x] janitorial work on test extractions (assert instead of fatal)
[x] enforce we handle hops in order (we handle them all)
[x] enforce the hops belong to the right mint
[x] secure concurrent transaction settlement
[x] secure concurrent transaction creation and settlement
[x] transaction settlement
[x] transaction locks
[x] transaction creation
[x] replace 1000*1000 by protocol constant
[x] log prefix (mint)
[x] make user optional for propagated transactions (or other objects)
[x] move status values to protocol
[x] move Execute to ctx
[x] remove nil from creation operation, prevent issuer from owning balance
[x] rename Normalized something Address to Owner
[x] split controller into endpoint.CreateXXX object with Execute and Validate
[x] move mint host to context
# tests
[ ] test failing nodes (A,B,C)
[ ] B gives different offer price to A and C
[ ] B fails reservation entirely
[ ] B pass reservation through but fails responding to C
[ ] A settles to C who fails
[ ] test same mint multiple users
[ ] test cycles in offer path
[ ] offer closing + attempt transaction on it
[ ] offer closing of an offer not owned by caller
[ ] test that consumes an offer entirely (check status)
[ ] test settlement propagation on syncrhonous failures
[~] transaction tests with misbehaving mint
[x] test transaction cancellation
[x] test asset retrieval
[x] test settling an expired transaction
[x] transaction expiration and balance fixup
[x] transaction expiration and offer fixup
[x] test async offer/operation propagation
[x] operation propagation
[x] offer propagation
[x] concurrent call to transaction settlement attack test
[x] test settlement with erroneous secret
[x] concurrent call to transaction creation attack test
[x] test transaction that uses the same user twice
[x] test transaction that uses more than what is left on an offer
[x] make the DB a context value that can be created independently for tests
[x] find a way to set the MintHost after start or set the mux after creating the httptest.Server
[x] support in memory db
# async processes
[x] cancellation propagation
[x] expiry on top of cancellation
[x] offer propagation
[x] operation propagation
[x] transaction expiry
[x] settlement propagation
# cli
[ ] pay with path of length 2
[x] list transactions (canonical or destination)
[x] close (offer) command
[x] pay command
[x] check existence of quote asset on trust
[x] check credentials
[x] add confirmations to actions (at least register)
[x] install process
[x] cli install
[x] register command
[x] Mint-Protocol-Version header
[x] logout command
[x] fix get parameter for common
[x] list balances
# register
[x] site credentials page
[x] roll user
[x] retrieve user
[x] setup LetsEncrypt
[x] send email on create user