metered-protocol 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/contracts/metered.ag +135 -0
  4. package/contracts/metered_ag.tests.json +1226 -0
  5. package/contracts/metered_session.sil +237 -0
  6. package/contracts/metered_session.tests.json +1113 -0
  7. package/dist/contracts/metered.ag +135 -0
  8. package/dist/contracts/metered_ag.tests.json +1226 -0
  9. package/dist/contracts/metered_session.sil +237 -0
  10. package/dist/contracts/metered_session.tests.json +1113 -0
  11. package/dist/src/bias.d.ts +48 -0
  12. package/dist/src/bias.d.ts.map +1 -0
  13. package/dist/src/bias.js +43 -0
  14. package/dist/src/bias.js.map +1 -0
  15. package/dist/src/checkpoint.d.ts +57 -0
  16. package/dist/src/checkpoint.d.ts.map +1 -0
  17. package/dist/src/checkpoint.js +84 -0
  18. package/dist/src/checkpoint.js.map +1 -0
  19. package/dist/src/deadline.d.ts +71 -0
  20. package/dist/src/deadline.d.ts.map +1 -0
  21. package/dist/src/deadline.js +77 -0
  22. package/dist/src/deadline.js.map +1 -0
  23. package/dist/src/encoding.d.ts +72 -0
  24. package/dist/src/encoding.d.ts.map +1 -0
  25. package/dist/src/encoding.js +187 -0
  26. package/dist/src/encoding.js.map +1 -0
  27. package/dist/src/history.d.ts +33 -0
  28. package/dist/src/history.d.ts.map +1 -0
  29. package/dist/src/history.js +38 -0
  30. package/dist/src/history.js.map +1 -0
  31. package/dist/src/http/buyer.d.ts +57 -0
  32. package/dist/src/http/buyer.d.ts.map +1 -0
  33. package/dist/src/http/buyer.js +151 -0
  34. package/dist/src/http/buyer.js.map +1 -0
  35. package/dist/src/http/client.d.ts +55 -0
  36. package/dist/src/http/client.d.ts.map +1 -0
  37. package/dist/src/http/client.js +83 -0
  38. package/dist/src/http/client.js.map +1 -0
  39. package/dist/src/http/harness.d.ts +18 -0
  40. package/dist/src/http/harness.d.ts.map +1 -0
  41. package/dist/src/http/harness.js +16 -0
  42. package/dist/src/http/harness.js.map +1 -0
  43. package/dist/src/http/protocol.d.ts +84 -0
  44. package/dist/src/http/protocol.d.ts.map +1 -0
  45. package/dist/src/http/protocol.js +22 -0
  46. package/dist/src/http/protocol.js.map +1 -0
  47. package/dist/src/http/provider.d.ts +123 -0
  48. package/dist/src/http/provider.d.ts.map +1 -0
  49. package/dist/src/http/provider.js +197 -0
  50. package/dist/src/http/provider.js.map +1 -0
  51. package/dist/src/http/serve.d.ts +34 -0
  52. package/dist/src/http/serve.d.ts.map +1 -0
  53. package/dist/src/http/serve.js +171 -0
  54. package/dist/src/http/serve.js.map +1 -0
  55. package/dist/src/http/service.d.ts +86 -0
  56. package/dist/src/http/service.d.ts.map +1 -0
  57. package/dist/src/http/service.js +161 -0
  58. package/dist/src/http/service.js.map +1 -0
  59. package/dist/src/index.d.ts +68 -0
  60. package/dist/src/index.d.ts.map +1 -0
  61. package/dist/src/index.js +62 -0
  62. package/dist/src/index.js.map +1 -0
  63. package/dist/src/meter.d.ts +39 -0
  64. package/dist/src/meter.d.ts.map +1 -0
  65. package/dist/src/meter.js +100 -0
  66. package/dist/src/meter.js.map +1 -0
  67. package/dist/src/offer.d.ts +6 -0
  68. package/dist/src/offer.d.ts.map +1 -0
  69. package/dist/src/offer.js +92 -0
  70. package/dist/src/offer.js.map +1 -0
  71. package/dist/src/reconcile.d.ts +18 -0
  72. package/dist/src/reconcile.d.ts.map +1 -0
  73. package/dist/src/reconcile.js +101 -0
  74. package/dist/src/reconcile.js.map +1 -0
  75. package/dist/src/reservation.d.ts +51 -0
  76. package/dist/src/reservation.d.ts.map +1 -0
  77. package/dist/src/reservation.js +124 -0
  78. package/dist/src/reservation.js.map +1 -0
  79. package/dist/src/session.d.ts +40 -0
  80. package/dist/src/session.d.ts.map +1 -0
  81. package/dist/src/session.js +92 -0
  82. package/dist/src/session.js.map +1 -0
  83. package/dist/src/signer.d.ts +31 -0
  84. package/dist/src/signer.d.ts.map +1 -0
  85. package/dist/src/signer.js +57 -0
  86. package/dist/src/signer.js.map +1 -0
  87. package/dist/src/store.d.ts +30 -0
  88. package/dist/src/store.d.ts.map +1 -0
  89. package/dist/src/store.js +120 -0
  90. package/dist/src/store.js.map +1 -0
  91. package/dist/src/types.d.ts +80 -0
  92. package/dist/src/types.d.ts.map +1 -0
  93. package/dist/src/types.js +9 -0
  94. package/dist/src/types.js.map +1 -0
  95. package/dist/tools/anchor-cli.d.ts +2 -0
  96. package/dist/tools/anchor-cli.d.ts.map +1 -0
  97. package/dist/tools/anchor-cli.js +101 -0
  98. package/dist/tools/anchor-cli.js.map +1 -0
  99. package/dist/tools/anchor.d.ts +68 -0
  100. package/dist/tools/anchor.d.ts.map +1 -0
  101. package/dist/tools/anchor.js +136 -0
  102. package/dist/tools/anchor.js.map +1 -0
  103. package/dist/tools/chain.d.ts +18 -0
  104. package/dist/tools/chain.d.ts.map +1 -0
  105. package/dist/tools/chain.js +18 -0
  106. package/dist/tools/chain.js.map +1 -0
  107. package/dist/tools/conformance.d.ts +2 -0
  108. package/dist/tools/conformance.d.ts.map +1 -0
  109. package/dist/tools/conformance.js +220 -0
  110. package/dist/tools/conformance.js.map +1 -0
  111. package/dist/tools/contracts.d.ts +2 -0
  112. package/dist/tools/contracts.d.ts.map +1 -0
  113. package/dist/tools/contracts.js +68 -0
  114. package/dist/tools/contracts.js.map +1 -0
  115. package/dist/tools/covenant-binding.d.ts +40 -0
  116. package/dist/tools/covenant-binding.d.ts.map +1 -0
  117. package/dist/tools/covenant-binding.js +60 -0
  118. package/dist/tools/covenant-binding.js.map +1 -0
  119. package/dist/tools/covenant-profile.d.ts +41 -0
  120. package/dist/tools/covenant-profile.d.ts.map +1 -0
  121. package/dist/tools/covenant-profile.js +74 -0
  122. package/dist/tools/covenant-profile.js.map +1 -0
  123. package/dist/tools/covenant.d.ts +30 -0
  124. package/dist/tools/covenant.d.ts.map +1 -0
  125. package/dist/tools/covenant.js +54 -0
  126. package/dist/tools/covenant.js.map +1 -0
  127. package/dist/tools/demo-report.d.ts +24 -0
  128. package/dist/tools/demo-report.d.ts.map +1 -0
  129. package/dist/tools/demo-report.js +40 -0
  130. package/dist/tools/demo-report.js.map +1 -0
  131. package/dist/tools/demo.d.ts +2 -0
  132. package/dist/tools/demo.d.ts.map +1 -0
  133. package/dist/tools/demo.js +204 -0
  134. package/dist/tools/demo.js.map +1 -0
  135. package/dist/tools/dust-map.d.ts +2 -0
  136. package/dist/tools/dust-map.d.ts.map +1 -0
  137. package/dist/tools/dust-map.js +63 -0
  138. package/dist/tools/dust-map.js.map +1 -0
  139. package/dist/tools/expire-cases.d.ts +4 -0
  140. package/dist/tools/expire-cases.d.ts.map +1 -0
  141. package/dist/tools/expire-cases.js +211 -0
  142. package/dist/tools/expire-cases.js.map +1 -0
  143. package/dist/tools/fee-check.d.ts +2 -0
  144. package/dist/tools/fee-check.d.ts.map +1 -0
  145. package/dist/tools/fee-check.js +127 -0
  146. package/dist/tools/fee-check.js.map +1 -0
  147. package/dist/tools/fixtures.d.ts +39 -0
  148. package/dist/tools/fixtures.d.ts.map +1 -0
  149. package/dist/tools/fixtures.js +31 -0
  150. package/dist/tools/fixtures.js.map +1 -0
  151. package/dist/tools/gen-contract-tests.d.ts +2 -0
  152. package/dist/tools/gen-contract-tests.d.ts.map +1 -0
  153. package/dist/tools/gen-contract-tests.js +170 -0
  154. package/dist/tools/gen-contract-tests.js.map +1 -0
  155. package/dist/tools/kaspa.d.ts +13 -0
  156. package/dist/tools/kaspa.d.ts.map +1 -0
  157. package/dist/tools/kaspa.js +76 -0
  158. package/dist/tools/kaspa.js.map +1 -0
  159. package/dist/tools/live-deadline.d.ts +2 -0
  160. package/dist/tools/live-deadline.d.ts.map +1 -0
  161. package/dist/tools/live-deadline.js +122 -0
  162. package/dist/tools/live-deadline.js.map +1 -0
  163. package/dist/tools/live-expire.d.ts +2 -0
  164. package/dist/tools/live-expire.d.ts.map +1 -0
  165. package/dist/tools/live-expire.js +127 -0
  166. package/dist/tools/live-expire.js.map +1 -0
  167. package/dist/tools/live-settle.d.ts +2 -0
  168. package/dist/tools/live-settle.d.ts.map +1 -0
  169. package/dist/tools/live-settle.js +226 -0
  170. package/dist/tools/live-settle.js.map +1 -0
  171. package/dist/tools/live-steps.d.ts +63 -0
  172. package/dist/tools/live-steps.d.ts.map +1 -0
  173. package/dist/tools/live-steps.js +155 -0
  174. package/dist/tools/live-steps.js.map +1 -0
  175. package/dist/tools/model.d.ts +32 -0
  176. package/dist/tools/model.d.ts.map +1 -0
  177. package/dist/tools/model.js +99 -0
  178. package/dist/tools/model.js.map +1 -0
  179. package/dist/tools/send.d.ts +2 -0
  180. package/dist/tools/send.d.ts.map +1 -0
  181. package/dist/tools/send.js +41 -0
  182. package/dist/tools/send.js.map +1 -0
  183. package/dist/tools/session-chain.d.ts +69 -0
  184. package/dist/tools/session-chain.d.ts.map +1 -0
  185. package/dist/tools/session-chain.js +113 -0
  186. package/dist/tools/session-chain.js.map +1 -0
  187. package/dist/tools/sighash.d.ts +9 -0
  188. package/dist/tools/sighash.d.ts.map +1 -0
  189. package/dist/tools/sighash.js +68 -0
  190. package/dist/tools/sighash.js.map +1 -0
  191. package/dist/tools/sigscript-check.d.ts +2 -0
  192. package/dist/tools/sigscript-check.d.ts.map +1 -0
  193. package/dist/tools/sigscript-check.js +113 -0
  194. package/dist/tools/sigscript-check.js.map +1 -0
  195. package/dist/tools/sigscript.d.ts +61 -0
  196. package/dist/tools/sigscript.d.ts.map +1 -0
  197. package/dist/tools/sigscript.js +70 -0
  198. package/dist/tools/sigscript.js.map +1 -0
  199. package/dist/tools/state-layout.d.ts +2 -0
  200. package/dist/tools/state-layout.d.ts.map +1 -0
  201. package/dist/tools/state-layout.js +57 -0
  202. package/dist/tools/state-layout.js.map +1 -0
  203. package/package.json +59 -0
  204. package/spec/CONFORMANCE.md +80 -0
  205. package/spec/SPEC.md +821 -0
  206. package/spec/conformance-vectors.json +677 -0
@@ -0,0 +1,1113 @@
1
+ {
2
+ "tests": [
3
+ {
4
+ "name": "the first claim: a doubly-signed State at seq 0 posts, and pays nobody",
5
+ "function": "settle",
6
+ "constructor_args": [
7
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
8
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
9
+ 10,
10
+ -1,
11
+ 0
12
+ ],
13
+ "args": [
14
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
15
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
16
+ "0xbfbc6018651d277f454d19e1c6bdfcb45b2e17f34919bc49eedbdbc7e3a3881198b8591a76d31840110b76593c53c527ea263e2a932a048983195feef97c9d79",
17
+ "0x80553abd5481100bba39e29a903778284c07cc70422c885a2c132e1044dfefe1963b4979df45e7a6b697b5eb417bb123d416ff6e2c9981b4e05ec0d9dae8813a",
18
+ 0,
19
+ 550,
20
+ 1000000,
21
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
22
+ ],
23
+ "expect": "pass",
24
+ "tx": {
25
+ "active_input_index": 0,
26
+ "inputs": [
27
+ {
28
+ "utxo_value": 10000000,
29
+ "constructor_args": [
30
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
31
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
32
+ 10,
33
+ -1,
34
+ 0
35
+ ]
36
+ }
37
+ ],
38
+ "outputs": [
39
+ {
40
+ "value": 9600000,
41
+ "constructor_args": [
42
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
43
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
44
+ 10,
45
+ -1,
46
+ 0
47
+ ],
48
+ "state": {
49
+ "pendingSeq": 0,
50
+ "pendingSompi": 1000000
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ },
56
+ {
57
+ "name": "SUPERSEDE: a strictly higher seq replaces the pending claim",
58
+ "function": "settle",
59
+ "constructor_args": [
60
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
61
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
62
+ 10,
63
+ 0,
64
+ 1000000
65
+ ],
66
+ "args": [
67
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
68
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
69
+ "0x84218c173e19a686a5f50d14656c814e40e265d1a0b76371b5ffbf299cd0569640d908c88b39e5bf6ef489f8555d22ff6569b23777fd969a3d5d1d37fbae3447",
70
+ "0x27fd634731df88ef21e53ece5e64be547393c3847dd03f374156e4eb1c6bfd216c1551a4005e2bbcebc29fd91d9719ba271e6e111e60691597a8974a039b830b",
71
+ 1,
72
+ 1100,
73
+ 2000000,
74
+ "0x77d47989a2ff919e610e8392e744ede4799485bcc181c55c058ae1d7615d301f"
75
+ ],
76
+ "expect": "pass",
77
+ "tx": {
78
+ "active_input_index": 0,
79
+ "inputs": [
80
+ {
81
+ "utxo_value": 10000000,
82
+ "constructor_args": [
83
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
84
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
85
+ 10,
86
+ 0,
87
+ 1000000
88
+ ]
89
+ }
90
+ ],
91
+ "outputs": [
92
+ {
93
+ "value": 9600000,
94
+ "constructor_args": [
95
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
96
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
97
+ 10,
98
+ 0,
99
+ 1000000
100
+ ],
101
+ "state": {
102
+ "pendingSeq": 1,
103
+ "pendingSompi": 2000000
104
+ }
105
+ }
106
+ ]
107
+ }
108
+ },
109
+ {
110
+ "name": "P6/B5 THE STALE CLOSE: re-posting the SAME seq over a pending claim is refused",
111
+ "function": "settle",
112
+ "constructor_args": [
113
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
114
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
115
+ 10,
116
+ 0,
117
+ 1000000
118
+ ],
119
+ "args": [
120
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
121
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
122
+ "0x880c6c0e9839946991dd0a718b8847f7ab68160f1ad0e0226ce84d434a9d2d8f54e95f1084a99cb76718668fe983fe29d50f1f7a4fea7d178907eb4a1778afce",
123
+ "0x847c1c0fe4ee43296732a025f86f8bac8f272643902a60fb8f2a8f827f4ee771cdb150bfd53b21d78f63ff4b9e1ec91d9fd7be12e8d69ca43c1ace80c7269f2b",
124
+ 0,
125
+ 550,
126
+ 1000000,
127
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
128
+ ],
129
+ "expect": "fail",
130
+ "tx": {
131
+ "active_input_index": 0,
132
+ "inputs": [
133
+ {
134
+ "utxo_value": 10000000,
135
+ "constructor_args": [
136
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
137
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
138
+ 10,
139
+ 0,
140
+ 1000000
141
+ ]
142
+ }
143
+ ],
144
+ "outputs": [
145
+ {
146
+ "value": 9600000,
147
+ "constructor_args": [
148
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
149
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
150
+ 10,
151
+ 0,
152
+ 1000000
153
+ ],
154
+ "state": {
155
+ "pendingSeq": 0,
156
+ "pendingSompi": 1000000
157
+ }
158
+ }
159
+ ]
160
+ }
161
+ },
162
+ {
163
+ "name": "a LOWER seq than the pending claim is refused -- supersede is strict, not >=",
164
+ "function": "settle",
165
+ "constructor_args": [
166
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
167
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
168
+ 10,
169
+ 5,
170
+ 9000000
171
+ ],
172
+ "args": [
173
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
174
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
175
+ "0xdec8028f12ba44555a81fcc09e4ea3506b337b51231e9d6893a25fa59a8f18e09a30140ce5f61b01e7bc458bdbe9c146797fdf740d979f126089aca6e27bc5d6",
176
+ "0x98b90babe0378f5ba93a07822d7652dc1e0d76c3fb20322e13901da9c22f8964e4fd220ba3cb7b7b1eb904fd785a0f19f4cc43b46aa87f9af0712f457915b8a2",
177
+ 0,
178
+ 550,
179
+ 1000000,
180
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
181
+ ],
182
+ "expect": "fail",
183
+ "tx": {
184
+ "active_input_index": 0,
185
+ "inputs": [
186
+ {
187
+ "utxo_value": 10000000,
188
+ "constructor_args": [
189
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
190
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
191
+ 10,
192
+ 5,
193
+ 9000000
194
+ ]
195
+ }
196
+ ],
197
+ "outputs": [
198
+ {
199
+ "value": 9600000,
200
+ "constructor_args": [
201
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
202
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
203
+ 10,
204
+ 5,
205
+ 9000000
206
+ ],
207
+ "state": {
208
+ "pendingSeq": 0,
209
+ "pendingSompi": 1000000
210
+ }
211
+ }
212
+ ]
213
+ }
214
+ },
215
+ {
216
+ "name": "THE FORGERY: a State signed by a stranger instead of the buyer is refused",
217
+ "function": "settle",
218
+ "constructor_args": [
219
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
220
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
221
+ 10,
222
+ -1,
223
+ 0
224
+ ],
225
+ "args": [
226
+ "0x3c72addb4fdf09af94f0c94d7fe92a386a7e70cf8a1d85916386bb2535c7b1b1",
227
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
228
+ "0xf288f37c32d15d92cdbca67ba72bdb021aa43c2381eb17d931cde24e23650ab21249bd9938966fb91b7a17516b4bd345009ffba0fb3dcab1dd2f3895a6de8667",
229
+ "0x6008bb5cdfacd7f6a9e0b8409bdbb22d8bf100d4ab225b2695574b477eff369046e247bad0c1e865dfb057c609312293a7cae7190d1f78efcd4ec08bc44c9643",
230
+ 0,
231
+ 550,
232
+ 1000000,
233
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
234
+ ],
235
+ "expect": "fail",
236
+ "tx": {
237
+ "active_input_index": 0,
238
+ "inputs": [
239
+ {
240
+ "utxo_value": 10000000,
241
+ "constructor_args": [
242
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
243
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
244
+ 10,
245
+ -1,
246
+ 0
247
+ ]
248
+ }
249
+ ],
250
+ "outputs": [
251
+ {
252
+ "value": 9600000,
253
+ "constructor_args": [
254
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
255
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
256
+ 10,
257
+ -1,
258
+ 0
259
+ ],
260
+ "state": {
261
+ "pendingSeq": 0,
262
+ "pendingSompi": 1000000
263
+ }
264
+ }
265
+ ]
266
+ }
267
+ },
268
+ {
269
+ "name": "ONE SIGNATURE IS NOT A STATE: the provider signing both halves is refused",
270
+ "function": "settle",
271
+ "constructor_args": [
272
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
273
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
274
+ 10,
275
+ -1,
276
+ 0
277
+ ],
278
+ "args": [
279
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
280
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
281
+ "0xc70426a6ce76014122fd82dfa7420fa788722c8b0cc52955ca16f2a8c83ec170f9c736440c70dfdd580b430020aa2e8838efe520b0e23ab4f999c798278f5101",
282
+ "0x114ce6b57b1cee183772ececa5882951e8b305cb8a3e1e70d65209c754590b0e5ee20027914cb7b65c918abd077ae0eca677625ea5b90dc81679d1691818ae29",
283
+ 0,
284
+ 550,
285
+ 1000000,
286
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
287
+ ],
288
+ "expect": "fail",
289
+ "tx": {
290
+ "active_input_index": 0,
291
+ "inputs": [
292
+ {
293
+ "utxo_value": 10000000,
294
+ "constructor_args": [
295
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
296
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
297
+ 10,
298
+ -1,
299
+ 0
300
+ ]
301
+ }
302
+ ],
303
+ "outputs": [
304
+ {
305
+ "value": 9600000,
306
+ "constructor_args": [
307
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
308
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
309
+ 10,
310
+ -1,
311
+ 0
312
+ ],
313
+ "state": {
314
+ "pendingSeq": 0,
315
+ "pendingSompi": 1000000
316
+ }
317
+ }
318
+ ]
319
+ }
320
+ },
321
+ {
322
+ "name": "X1 CROSS-SESSION REPLAY: a State signed for another session is refused",
323
+ "function": "settle",
324
+ "constructor_args": [
325
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
326
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
327
+ 10,
328
+ -1,
329
+ 0
330
+ ],
331
+ "args": [
332
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
333
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
334
+ "0xe70bb0333706f4f2b62268151331b241aa1b58fcfcca01164af88c1691f7101e28f4a1c3e02f10ac2b4e5530f9212339daa1b5da37a2da41d7575bfc3bd93e98",
335
+ "0x020a0448ef08e1132f16636dfc4cecae1065c2138d7368f5e71740d13d45139e617f3e0765db4da89129ec787791b27ee792f9b33b4cb4f6a0aff7033bf2628d",
336
+ 0,
337
+ 550,
338
+ 1000000,
339
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
340
+ ],
341
+ "expect": "fail",
342
+ "tx": {
343
+ "active_input_index": 0,
344
+ "inputs": [
345
+ {
346
+ "utxo_value": 10000000,
347
+ "constructor_args": [
348
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
349
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
350
+ 10,
351
+ -1,
352
+ 0
353
+ ]
354
+ }
355
+ ],
356
+ "outputs": [
357
+ {
358
+ "value": 9600000,
359
+ "constructor_args": [
360
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
361
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
362
+ 10,
363
+ -1,
364
+ 0
365
+ ],
366
+ "state": {
367
+ "pendingSeq": 0,
368
+ "pendingSompi": 1000000
369
+ }
370
+ }
371
+ ]
372
+ }
373
+ },
374
+ {
375
+ "name": "THE DRAIN: a settle keeping more than the fee instead of returning the funds is refused",
376
+ "function": "settle",
377
+ "constructor_args": [
378
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
379
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
380
+ 10,
381
+ -1,
382
+ 0
383
+ ],
384
+ "args": [
385
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
386
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
387
+ "0x59e522ff528e6431b7623906eca4c014c08d2651a8594759f0b6ea83be9c1ebee4557d7de64dea42c10b46b1d596ce4442c8534776ada493691f1cec6b1b9e65",
388
+ "0xb8c16249131caa21c3eacd959ec56bc78665c2f2432d0f5d127dff5696817f8dec1db254ceb5cdb38446fb7712b7ff42b1aa97443fed1dcb1e3d6a96373d4abb",
389
+ 0,
390
+ 550,
391
+ 1000000,
392
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
393
+ ],
394
+ "expect": "fail",
395
+ "tx": {
396
+ "active_input_index": 0,
397
+ "inputs": [
398
+ {
399
+ "utxo_value": 10000000,
400
+ "constructor_args": [
401
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
402
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
403
+ 10,
404
+ -1,
405
+ 0
406
+ ]
407
+ }
408
+ ],
409
+ "outputs": [
410
+ {
411
+ "value": 9599999,
412
+ "constructor_args": [
413
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
414
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
415
+ 10,
416
+ -1,
417
+ 0
418
+ ],
419
+ "state": {
420
+ "pendingSeq": 0,
421
+ "pendingSompi": 1000000
422
+ }
423
+ }
424
+ ]
425
+ }
426
+ },
427
+ {
428
+ "name": "THE LIE: a settle whose carried state does not match the State it verified is refused",
429
+ "function": "settle",
430
+ "constructor_args": [
431
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
432
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
433
+ 10,
434
+ -1,
435
+ 0
436
+ ],
437
+ "args": [
438
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
439
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
440
+ "0xcfd78e01e284d25d2c005e713b48ec758d818f157d127deb81d9bdd209b97e02d6adbc9946ff971f58c463fa419e911fbe377b9d144991d24ff9639233a646d3",
441
+ "0xf8abffd1932cc17bbea429324131cd14356ad2f47f7132dbe6dc19bce075675ee4d5c975db2b9b5ed31a433a50f342130627aa757ac4dc093aa054deba1b55df",
442
+ 0,
443
+ 550,
444
+ 1000000,
445
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
446
+ ],
447
+ "expect": "fail",
448
+ "tx": {
449
+ "active_input_index": 0,
450
+ "inputs": [
451
+ {
452
+ "utxo_value": 10000000,
453
+ "constructor_args": [
454
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
455
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
456
+ 10,
457
+ -1,
458
+ 0
459
+ ]
460
+ }
461
+ ],
462
+ "outputs": [
463
+ {
464
+ "value": 9600000,
465
+ "constructor_args": [
466
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
467
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
468
+ 10,
469
+ -1,
470
+ 0
471
+ ],
472
+ "state": {
473
+ "pendingSeq": 0,
474
+ "pendingSompi": 9000000
475
+ }
476
+ }
477
+ ]
478
+ }
479
+ },
480
+ {
481
+ "name": "BUG 1, THE STUCK FUNDS: nobody ever settled, so the buyer takes everything back",
482
+ "function": "expire",
483
+ "constructor_args": [
484
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
485
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
486
+ 10,
487
+ -1,
488
+ 0
489
+ ],
490
+ "args": [
491
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
492
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
493
+ "0x2e7754f6089b4c34c86dd761bd1b45823a96e521233053ef63cd33cd8abe4637e2b84a88d099d1501f3f230e421905681f4ddbaa60e4d4f0cfc18fcd55f7df8d01"
494
+ ],
495
+ "expect": "pass",
496
+ "tx": {
497
+ "active_input_index": 0,
498
+ "inputs": [
499
+ {
500
+ "utxo_value": 10000000,
501
+ "sequence": 10,
502
+ "constructor_args": [
503
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
504
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
505
+ 10,
506
+ -1,
507
+ 0
508
+ ]
509
+ }
510
+ ],
511
+ "outputs": [
512
+ {
513
+ "value": 9600000,
514
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
515
+ }
516
+ ]
517
+ }
518
+ },
519
+ {
520
+ "name": "BUG 1: with no claim, paying the provider instead of refunding the buyer is refused",
521
+ "function": "expire",
522
+ "constructor_args": [
523
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
524
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
525
+ 10,
526
+ -1,
527
+ 0
528
+ ],
529
+ "args": [
530
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
531
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
532
+ "0x36bc23ff88c8252e6ae249c4d1270909d37c6b75bf06bf550a68f94a8052794c494096afd98c8e08969cdf1c5aa82332758e7e84197f8909dfc022d53728b2bc01"
533
+ ],
534
+ "expect": "fail",
535
+ "tx": {
536
+ "active_input_index": 0,
537
+ "inputs": [
538
+ {
539
+ "utxo_value": 10000000,
540
+ "sequence": 10,
541
+ "constructor_args": [
542
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
543
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
544
+ 10,
545
+ -1,
546
+ 0
547
+ ]
548
+ }
549
+ ],
550
+ "outputs": [
551
+ {
552
+ "value": 9600000,
553
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
554
+ }
555
+ ]
556
+ }
557
+ },
558
+ {
559
+ "name": "the normal payout: the provider takes the claim, the buyer takes the remainder",
560
+ "function": "expire",
561
+ "constructor_args": [
562
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
563
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
564
+ 10,
565
+ 3,
566
+ 4000000
567
+ ],
568
+ "args": [
569
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
570
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
571
+ "0x479ef5fabf54b08e85ab3d2de475baa81aca23e12ad35a2be6a8ec22afe53151aae92b2b41d18154f8ef80542da58ceec43d88d73b3e343aa89ea5cde525a30a01"
572
+ ],
573
+ "expect": "pass",
574
+ "tx": {
575
+ "active_input_index": 0,
576
+ "inputs": [
577
+ {
578
+ "utxo_value": 10000000,
579
+ "sequence": 10,
580
+ "constructor_args": [
581
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
582
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
583
+ 10,
584
+ 3,
585
+ 4000000
586
+ ]
587
+ }
588
+ ],
589
+ "outputs": [
590
+ {
591
+ "value": 4000000,
592
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
593
+ },
594
+ {
595
+ "value": 5600000,
596
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
597
+ }
598
+ ]
599
+ }
600
+ },
601
+ {
602
+ "name": "BUG 2, THE BURNED REFUND: paying the buyer a token amount and burning the rest to fee is refused",
603
+ "function": "expire",
604
+ "constructor_args": [
605
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
606
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
607
+ 10,
608
+ 3,
609
+ 4000000
610
+ ],
611
+ "args": [
612
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
613
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
614
+ "0xb7d55b4d2cda806e2c4414aed7eddd942f36cf8e2afcaf264547fbcf880f3a7540b89a7874ad29ff6bb8917ed2d4f7508e5712beb6fec0e0a26e016a98c8b51d01"
615
+ ],
616
+ "expect": "fail",
617
+ "tx": {
618
+ "active_input_index": 0,
619
+ "inputs": [
620
+ {
621
+ "utxo_value": 10000000,
622
+ "sequence": 10,
623
+ "constructor_args": [
624
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
625
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
626
+ 10,
627
+ 3,
628
+ 4000000
629
+ ]
630
+ }
631
+ ],
632
+ "outputs": [
633
+ {
634
+ "value": 4000000,
635
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
636
+ },
637
+ {
638
+ "value": 1,
639
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
640
+ }
641
+ ]
642
+ }
643
+ },
644
+ {
645
+ "name": "THE OVERCLAIM: paying the provider more than the pending claim is refused",
646
+ "function": "expire",
647
+ "constructor_args": [
648
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
649
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
650
+ 10,
651
+ 3,
652
+ 4000000
653
+ ],
654
+ "args": [
655
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
656
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
657
+ "0x8a8681e9e399c176b05a54030f06ff20898f56eeee625fb2e78b1e8184a15a5e4fdc96c194dbf0557e7fc9d926e7cf594798c5f27b1f212e3d01b7a748c251f001"
658
+ ],
659
+ "expect": "fail",
660
+ "tx": {
661
+ "active_input_index": 0,
662
+ "inputs": [
663
+ {
664
+ "utxo_value": 10000000,
665
+ "sequence": 10,
666
+ "constructor_args": [
667
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
668
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
669
+ 10,
670
+ 3,
671
+ 4000000
672
+ ]
673
+ }
674
+ ],
675
+ "outputs": [
676
+ {
677
+ "value": 5000000,
678
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
679
+ },
680
+ {
681
+ "value": 4600000,
682
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
683
+ }
684
+ ]
685
+ }
686
+ },
687
+ {
688
+ "name": "THE WRONG DESTINATION: paying the claim to a stranger instead of the provider is refused",
689
+ "function": "expire",
690
+ "constructor_args": [
691
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
692
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
693
+ 10,
694
+ 3,
695
+ 4000000
696
+ ],
697
+ "args": [
698
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
699
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
700
+ "0x885b396056c2995b7e87418c8ad40a88355a13eccda3f4de88fbdcf65b65d56560870903ded507e39cf304129124a5c73a758a12a638679050dd828c21053c0801"
701
+ ],
702
+ "expect": "fail",
703
+ "tx": {
704
+ "active_input_index": 0,
705
+ "inputs": [
706
+ {
707
+ "utxo_value": 10000000,
708
+ "sequence": 10,
709
+ "constructor_args": [
710
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
711
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
712
+ 10,
713
+ 3,
714
+ 4000000
715
+ ]
716
+ }
717
+ ],
718
+ "outputs": [
719
+ {
720
+ "value": 4000000,
721
+ "p2pk_pubkey": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
722
+ },
723
+ {
724
+ "value": 5600000,
725
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
726
+ }
727
+ ]
728
+ }
729
+ },
730
+ {
731
+ "name": "A STRANGER CANNOT CLOSE: expire signed by neither party is refused",
732
+ "function": "expire",
733
+ "constructor_args": [
734
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
735
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
736
+ 10,
737
+ 3,
738
+ 4000000
739
+ ],
740
+ "args": [
741
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
742
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
743
+ "0xa9b3cb27783776fba393a9ebf80cf5794f9124cb6b634fbc008165747ddfaf4824c049e0ee95a5861fe1f2842f6df7c6916b0d19780c9aedacd8cdb07b27100a01"
744
+ ],
745
+ "expect": "fail",
746
+ "tx": {
747
+ "active_input_index": 0,
748
+ "inputs": [
749
+ {
750
+ "utxo_value": 10000000,
751
+ "sequence": 10,
752
+ "constructor_args": [
753
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
754
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
755
+ 10,
756
+ 3,
757
+ 4000000
758
+ ]
759
+ }
760
+ ],
761
+ "outputs": [
762
+ {
763
+ "value": 4000000,
764
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
765
+ },
766
+ {
767
+ "value": 5600000,
768
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
769
+ }
770
+ ]
771
+ }
772
+ },
773
+ {
774
+ "name": "FINDING G: a claim too small to pay closes to the buyer instead of locking forever",
775
+ "function": "expire",
776
+ "constructor_args": [
777
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
778
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
779
+ 10,
780
+ 3,
781
+ 100000
782
+ ],
783
+ "args": [
784
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
785
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
786
+ "0x61b58b4767660bd8b24417de98f6f8770db9f990650fc89d5cf5627ca622a0d0a496d9123f78967121db86ccd865dc5ed4bf691641ee11cd302c3237a1cb80d901"
787
+ ],
788
+ "expect": "pass",
789
+ "tx": {
790
+ "active_input_index": 0,
791
+ "inputs": [
792
+ {
793
+ "utxo_value": 10000000,
794
+ "sequence": 10,
795
+ "constructor_args": [
796
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
797
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
798
+ 10,
799
+ 3,
800
+ 100000
801
+ ]
802
+ }
803
+ ],
804
+ "outputs": [
805
+ {
806
+ "value": 9600000,
807
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
808
+ }
809
+ ]
810
+ }
811
+ },
812
+ {
813
+ "name": "FINDING G: a dust claim may NOT be paid to the provider -- it cannot be created",
814
+ "function": "expire",
815
+ "constructor_args": [
816
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
817
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
818
+ 10,
819
+ 3,
820
+ 100000
821
+ ],
822
+ "args": [
823
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
824
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
825
+ "0x29d0386cb196d831e2ecf34a4147d5e4eccaef490a28737e2f9c68f4efcb1253eeeb183deacba90dff35640aa168b1328ad7aab93230bdbf3f687e5a3a7230be01"
826
+ ],
827
+ "expect": "fail",
828
+ "tx": {
829
+ "active_input_index": 0,
830
+ "inputs": [
831
+ {
832
+ "utxo_value": 10000000,
833
+ "sequence": 10,
834
+ "constructor_args": [
835
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
836
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
837
+ 10,
838
+ 3,
839
+ 100000
840
+ ]
841
+ }
842
+ ],
843
+ "outputs": [
844
+ {
845
+ "value": 100000,
846
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
847
+ },
848
+ {
849
+ "value": 9500000,
850
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
851
+ }
852
+ ]
853
+ }
854
+ },
855
+ {
856
+ "name": "THE UNCLOSABLE WINDOW: a claim just above the old dust line folds, it does not strand",
857
+ "function": "expire",
858
+ "constructor_args": [
859
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
860
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
861
+ 10,
862
+ 3,
863
+ 2100000
864
+ ],
865
+ "args": [
866
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
867
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
868
+ "0x6b6e42d78803ef1082f276a4617b240fdd8aeaa50f1a84517b49d710db4e305cbd8b4b2ecb8fc7630663788b20ae57a42752604d8075e02525d65b5745b1944701"
869
+ ],
870
+ "expect": "pass",
871
+ "tx": {
872
+ "active_input_index": 0,
873
+ "inputs": [
874
+ {
875
+ "utxo_value": 10000000,
876
+ "sequence": 10,
877
+ "constructor_args": [
878
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
879
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
880
+ 10,
881
+ 3,
882
+ 2100000
883
+ ]
884
+ }
885
+ ],
886
+ "outputs": [
887
+ {
888
+ "value": 9600000,
889
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
890
+ }
891
+ ]
892
+ }
893
+ },
894
+ {
895
+ "name": "THE UNCLOSABLE WINDOW: that same claim still may not be paid to the provider",
896
+ "function": "expire",
897
+ "constructor_args": [
898
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
899
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
900
+ 10,
901
+ 3,
902
+ 2100000
903
+ ],
904
+ "args": [
905
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
906
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
907
+ "0x9993c7a160eba8235156da7970b607888b65691e73da8df9da0e9c1d7b29284ec6bf162b7e71587fa7a2d59e01c84e72ba0ff5825c5158b3313f28b5e56af46301"
908
+ ],
909
+ "expect": "fail",
910
+ "tx": {
911
+ "active_input_index": 0,
912
+ "inputs": [
913
+ {
914
+ "utxo_value": 10000000,
915
+ "sequence": 10,
916
+ "constructor_args": [
917
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
918
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
919
+ 10,
920
+ 3,
921
+ 2100000
922
+ ]
923
+ }
924
+ ],
925
+ "outputs": [
926
+ {
927
+ "value": 2100000,
928
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
929
+ },
930
+ {
931
+ "value": 7500000,
932
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
933
+ }
934
+ ]
935
+ }
936
+ },
937
+ {
938
+ "name": "FINDING H: a one-output close that burns a payable refund to fee is refused",
939
+ "function": "expire",
940
+ "constructor_args": [
941
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
942
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
943
+ 10,
944
+ 3,
945
+ 4000000
946
+ ],
947
+ "args": [
948
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
949
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
950
+ "0x6e482b4439dedd0007c4f15f1f87e028630d6f3e0fd9f336eab9cbb1bf0e592ae50f750a91e4789bb70415926bc4499e0f73477542948637b8530e15b0cf678d01"
951
+ ],
952
+ "expect": "fail",
953
+ "tx": {
954
+ "active_input_index": 0,
955
+ "inputs": [
956
+ {
957
+ "utxo_value": 10000000,
958
+ "sequence": 10,
959
+ "constructor_args": [
960
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
961
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
962
+ 10,
963
+ 3,
964
+ 4000000
965
+ ]
966
+ }
967
+ ],
968
+ "outputs": [
969
+ {
970
+ "value": 4000000,
971
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
972
+ }
973
+ ]
974
+ }
975
+ },
976
+ {
977
+ "name": "a refund too small to pay folds into the provider, rather than locking the balance",
978
+ "function": "expire",
979
+ "constructor_args": [
980
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
981
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
982
+ 10,
983
+ 3,
984
+ 9000000
985
+ ],
986
+ "args": [
987
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
988
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
989
+ "0x1d24f73aa74822e7e515a92b01a3941e584292f2a8ded8f644a83e210a1a6bc914588e9089a0a63c13a2dee791750aaab6e692c8a657f0dc042dd5c83ce07cb801"
990
+ ],
991
+ "expect": "pass",
992
+ "tx": {
993
+ "active_input_index": 0,
994
+ "inputs": [
995
+ {
996
+ "utxo_value": 10000000,
997
+ "sequence": 10,
998
+ "constructor_args": [
999
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1000
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1001
+ 10,
1002
+ 3,
1003
+ 9000000
1004
+ ]
1005
+ }
1006
+ ],
1007
+ "outputs": [
1008
+ {
1009
+ "value": 9000000,
1010
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1011
+ }
1012
+ ]
1013
+ }
1014
+ },
1015
+ {
1016
+ "name": "FINDING J: two covenant inputs paying out once is refused -- input-group closure",
1017
+ "function": "expire",
1018
+ "constructor_args": [
1019
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1020
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1021
+ 10,
1022
+ 3,
1023
+ 4000000
1024
+ ],
1025
+ "args": [
1026
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1027
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1028
+ "0x08baaf3eb0d33147232adb8af35c9af4a85358f7a74e81b90aaa7d17c610498d7fcf66feaac9d94d620b200356be3e1ead40cdddef0fb70b860205e37f78b17b01"
1029
+ ],
1030
+ "expect": "fail",
1031
+ "tx": {
1032
+ "active_input_index": 0,
1033
+ "inputs": [
1034
+ {
1035
+ "utxo_value": 10000000,
1036
+ "sequence": 10,
1037
+ "constructor_args": [
1038
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1039
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1040
+ 10,
1041
+ 3,
1042
+ 4000000
1043
+ ]
1044
+ },
1045
+ {
1046
+ "utxo_value": 10000000,
1047
+ "sequence": 10,
1048
+ "constructor_args": [
1049
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1050
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1051
+ 10,
1052
+ 3,
1053
+ 4000000
1054
+ ]
1055
+ }
1056
+ ],
1057
+ "outputs": [
1058
+ {
1059
+ "value": 4000000,
1060
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1061
+ },
1062
+ {
1063
+ "value": 5600000,
1064
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1065
+ }
1066
+ ]
1067
+ }
1068
+ },
1069
+ {
1070
+ "name": "P10/THE EARLY CLOSE: expiring before the response window has passed is refused",
1071
+ "function": "expire",
1072
+ "constructor_args": [
1073
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1074
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1075
+ 10,
1076
+ 3,
1077
+ 4000000
1078
+ ],
1079
+ "args": [
1080
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1081
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1082
+ "0x1025e4bbb8828828165508ad3605446b837de18c26be51048d1ff4302ee1b1464f9850ca601fd7672e6d903623a655b4351f6b632360b084a928e1a3a952ce5e01"
1083
+ ],
1084
+ "expect": "fail",
1085
+ "tx": {
1086
+ "active_input_index": 0,
1087
+ "inputs": [
1088
+ {
1089
+ "utxo_value": 10000000,
1090
+ "sequence": 9,
1091
+ "constructor_args": [
1092
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1093
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1094
+ 10,
1095
+ 3,
1096
+ 4000000
1097
+ ]
1098
+ }
1099
+ ],
1100
+ "outputs": [
1101
+ {
1102
+ "value": 4000000,
1103
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1104
+ },
1105
+ {
1106
+ "value": 5600000,
1107
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1108
+ }
1109
+ ]
1110
+ }
1111
+ }
1112
+ ]
1113
+ }