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,1226 @@
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
+ "0x94aa10fbe2a96cddb6a1ab9e7cce35dfdb6ba6b2d09e766b436f59d0cef0d9ec9e44182c832db128547826c2e2c3322a538fd06a2e7bfb977b76b77bbef7cdfb",
17
+ "0xa31831a0c7e2017d5a0e33d7887b8998804af2edb1b54525dfd0b9333c4b9d3e0ed18dedd878f6dd4b528924bbf926330c158261103209932ec0ff87b311dac5",
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
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
37
+ }
38
+ ],
39
+ "outputs": [
40
+ {
41
+ "value": 9600000,
42
+ "constructor_args": [
43
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
44
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
45
+ 10,
46
+ -1,
47
+ 0
48
+ ],
49
+ "state": {
50
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
51
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
52
+ "window": 10,
53
+ "pending_seq": 0,
54
+ "pending_sompi": 1000000
55
+ },
56
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
57
+ "authorizing_input": 0
58
+ }
59
+ ]
60
+ }
61
+ },
62
+ {
63
+ "name": "SUPERSEDE: a strictly higher seq replaces the pending claim",
64
+ "function": "settle",
65
+ "constructor_args": [
66
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
67
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
68
+ 10,
69
+ 0,
70
+ 1000000
71
+ ],
72
+ "args": [
73
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
74
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
75
+ "0x8d85a711acdddd3e0638377ab1550c33875d0bab911c7e16401be6def551a9e546a8a00455c101a49f666185cda54f34a2b1d33d349349a9ac9eec52687b2bdd",
76
+ "0xfed9d2c7db48956635e403d10ed2d66b83d6682a5fe43505ed59522c9e8aa7ffd3f3f0f4a367d401021c31b7a90e6d195f1618328e2215a6aaf0a089ff6d2ed2",
77
+ 1,
78
+ 1100,
79
+ 2000000,
80
+ "0x77d47989a2ff919e610e8392e744ede4799485bcc181c55c058ae1d7615d301f"
81
+ ],
82
+ "expect": "pass",
83
+ "tx": {
84
+ "active_input_index": 0,
85
+ "inputs": [
86
+ {
87
+ "utxo_value": 10000000,
88
+ "constructor_args": [
89
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
90
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
91
+ 10,
92
+ 0,
93
+ 1000000
94
+ ],
95
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
96
+ }
97
+ ],
98
+ "outputs": [
99
+ {
100
+ "value": 9600000,
101
+ "constructor_args": [
102
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
103
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
104
+ 10,
105
+ 0,
106
+ 1000000
107
+ ],
108
+ "state": {
109
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
110
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
111
+ "window": 10,
112
+ "pending_seq": 1,
113
+ "pending_sompi": 2000000
114
+ },
115
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
116
+ "authorizing_input": 0
117
+ }
118
+ ]
119
+ }
120
+ },
121
+ {
122
+ "name": "P6/B5 THE STALE CLOSE: re-posting the SAME seq over a pending claim is refused",
123
+ "function": "settle",
124
+ "constructor_args": [
125
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
126
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
127
+ 10,
128
+ 0,
129
+ 1000000
130
+ ],
131
+ "args": [
132
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
133
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
134
+ "0xdb3f4e6119c0d5188b593527069637e852504ad33b10defb26e75c7c0860c6606e5ae377d30f2ac521b7626006b7532118ff39656b471c0450adeb0f853740f6",
135
+ "0x6e39f26c11a4b12b496d413fb5272d319a03f1ab4a348e675f73ef12f7adbf900c131b79681d946aff09d7a5e635fa749bf05870b01332968e2e6e3487c1d11f",
136
+ 0,
137
+ 550,
138
+ 1000000,
139
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
140
+ ],
141
+ "expect": "fail",
142
+ "tx": {
143
+ "active_input_index": 0,
144
+ "inputs": [
145
+ {
146
+ "utxo_value": 10000000,
147
+ "constructor_args": [
148
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
149
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
150
+ 10,
151
+ 0,
152
+ 1000000
153
+ ],
154
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
155
+ }
156
+ ],
157
+ "outputs": [
158
+ {
159
+ "value": 9600000,
160
+ "constructor_args": [
161
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
162
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
163
+ 10,
164
+ 0,
165
+ 1000000
166
+ ],
167
+ "state": {
168
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
169
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
170
+ "window": 10,
171
+ "pending_seq": 0,
172
+ "pending_sompi": 1000000
173
+ },
174
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
175
+ "authorizing_input": 0
176
+ }
177
+ ]
178
+ }
179
+ },
180
+ {
181
+ "name": "a LOWER seq than the pending claim is refused -- supersede is strict, not >=",
182
+ "function": "settle",
183
+ "constructor_args": [
184
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
185
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
186
+ 10,
187
+ 5,
188
+ 9000000
189
+ ],
190
+ "args": [
191
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
192
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
193
+ "0x2785c9e44feb9b56a429a3cb617126cac858c3ec64177fa2c4120e18d3ce56b62b608cf635698ddf5cd526c77f67c020aab7f9c52ec84a69495d263ece97aa48",
194
+ "0xafe5a808e96ae23a43ab5b1653921716282840c780e8fe0b996cedd70ac396a5a6c8e1a9753fa067e536a58e7bd720660a8450279bac67a35ae56d9bc4887fa8",
195
+ 0,
196
+ 550,
197
+ 1000000,
198
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
199
+ ],
200
+ "expect": "fail",
201
+ "tx": {
202
+ "active_input_index": 0,
203
+ "inputs": [
204
+ {
205
+ "utxo_value": 10000000,
206
+ "constructor_args": [
207
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
208
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
209
+ 10,
210
+ 5,
211
+ 9000000
212
+ ],
213
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
214
+ }
215
+ ],
216
+ "outputs": [
217
+ {
218
+ "value": 9600000,
219
+ "constructor_args": [
220
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
221
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
222
+ 10,
223
+ 5,
224
+ 9000000
225
+ ],
226
+ "state": {
227
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
228
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
229
+ "window": 10,
230
+ "pending_seq": 0,
231
+ "pending_sompi": 1000000
232
+ },
233
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
234
+ "authorizing_input": 0
235
+ }
236
+ ]
237
+ }
238
+ },
239
+ {
240
+ "name": "THE FORGERY: a State signed by a stranger instead of the buyer is refused",
241
+ "function": "settle",
242
+ "constructor_args": [
243
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
244
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
245
+ 10,
246
+ -1,
247
+ 0
248
+ ],
249
+ "args": [
250
+ "0x3c72addb4fdf09af94f0c94d7fe92a386a7e70cf8a1d85916386bb2535c7b1b1",
251
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
252
+ "0x8bad0a12e623bd9cf605e1c2e3e05cdcfedd23e8dc1524c3887fe374821d18216ac05e1fc22fe11d47f3a990876367be596e67a78c3c203e5e54aa678f9b688c",
253
+ "0xd85ae49e20cc04be361c1c90a2cd0607d987bfdac414f2df488fc4e6a70e2ea5f3719e4c20fc9f667d31216fe5d44cff8459612deece2eed351fbbd8b4bcaa4f",
254
+ 0,
255
+ 550,
256
+ 1000000,
257
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
258
+ ],
259
+ "expect": "fail",
260
+ "tx": {
261
+ "active_input_index": 0,
262
+ "inputs": [
263
+ {
264
+ "utxo_value": 10000000,
265
+ "constructor_args": [
266
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
267
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
268
+ 10,
269
+ -1,
270
+ 0
271
+ ],
272
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
273
+ }
274
+ ],
275
+ "outputs": [
276
+ {
277
+ "value": 9600000,
278
+ "constructor_args": [
279
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
280
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
281
+ 10,
282
+ -1,
283
+ 0
284
+ ],
285
+ "state": {
286
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
287
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
288
+ "window": 10,
289
+ "pending_seq": 0,
290
+ "pending_sompi": 1000000
291
+ },
292
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
293
+ "authorizing_input": 0
294
+ }
295
+ ]
296
+ }
297
+ },
298
+ {
299
+ "name": "ONE SIGNATURE IS NOT A STATE: the provider signing both halves is refused",
300
+ "function": "settle",
301
+ "constructor_args": [
302
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
303
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
304
+ 10,
305
+ -1,
306
+ 0
307
+ ],
308
+ "args": [
309
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
310
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
311
+ "0xe22b0f81eebde7a3bb3ca1e1606d3c4dbea40db3dca8b7296dc2b5f50315f1babc1c58b4738328ac2139984a4fdce81a56c9cce486a61739b90551652830fb8c",
312
+ "0x733507c124b10696894b1fee184567d3bef6ba16d3e219472b77fc9a03364fcb1edbf8f3d034f7f8c07fb92e049b3f5a2671716b8e56c2e2c6be9b40e0932e45",
313
+ 0,
314
+ 550,
315
+ 1000000,
316
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
317
+ ],
318
+ "expect": "fail",
319
+ "tx": {
320
+ "active_input_index": 0,
321
+ "inputs": [
322
+ {
323
+ "utxo_value": 10000000,
324
+ "constructor_args": [
325
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
326
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
327
+ 10,
328
+ -1,
329
+ 0
330
+ ],
331
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
332
+ }
333
+ ],
334
+ "outputs": [
335
+ {
336
+ "value": 9600000,
337
+ "constructor_args": [
338
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
339
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
340
+ 10,
341
+ -1,
342
+ 0
343
+ ],
344
+ "state": {
345
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
346
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
347
+ "window": 10,
348
+ "pending_seq": 0,
349
+ "pending_sompi": 1000000
350
+ },
351
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
352
+ "authorizing_input": 0
353
+ }
354
+ ]
355
+ }
356
+ },
357
+ {
358
+ "name": "X1 CROSS-SESSION REPLAY: a State signed for another session is refused",
359
+ "function": "settle",
360
+ "constructor_args": [
361
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
362
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
363
+ 10,
364
+ -1,
365
+ 0
366
+ ],
367
+ "args": [
368
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
369
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
370
+ "0x92d43884460fe6b9382bc05d4ae696496150cec760641413c9eaf89bfc2617d584effb1b7036fa7d7c65a80a05c2a9f8cea60af7fed5cb0ce5fc2f0a9c5c6ac8",
371
+ "0x3e303fd62c66baae177229da4d55d24766a496fb8786485f08bdbea7262d2e02ecfa4e191f3dcb0a5a5d84d246ac01d0b893cfa0dd2918c7edf72bc260313b81",
372
+ 0,
373
+ 550,
374
+ 1000000,
375
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
376
+ ],
377
+ "expect": "fail",
378
+ "tx": {
379
+ "active_input_index": 0,
380
+ "inputs": [
381
+ {
382
+ "utxo_value": 10000000,
383
+ "constructor_args": [
384
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
385
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
386
+ 10,
387
+ -1,
388
+ 0
389
+ ],
390
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
391
+ }
392
+ ],
393
+ "outputs": [
394
+ {
395
+ "value": 9600000,
396
+ "constructor_args": [
397
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
398
+ "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
399
+ 10,
400
+ -1,
401
+ 0
402
+ ],
403
+ "state": {
404
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
405
+ "session_id": "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
406
+ "window": 10,
407
+ "pending_seq": 0,
408
+ "pending_sompi": 1000000
409
+ },
410
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
411
+ "authorizing_input": 0
412
+ }
413
+ ]
414
+ }
415
+ },
416
+ {
417
+ "name": "THE DRAIN: a settle keeping more than the fee instead of returning the funds is refused",
418
+ "function": "settle",
419
+ "constructor_args": [
420
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
421
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
422
+ 10,
423
+ -1,
424
+ 0
425
+ ],
426
+ "args": [
427
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
428
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
429
+ "0x4cacb0e722f47e9a894ece7023acbb64a81d604a7611e1908522a2d169d9732b3f6d51b81a2b0fed4962e5eb41fe62acc27158ef2ef26259235529bc629ac78d",
430
+ "0x2431995ec07fbefba383040a0cc800db9d7da3e0324f65b662945060b59872f5d8bb18f6e6cf30ea771de50034353e48d02f7cfe665cf865786b53c9fa6b1474",
431
+ 0,
432
+ 550,
433
+ 1000000,
434
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
435
+ ],
436
+ "expect": "fail",
437
+ "tx": {
438
+ "active_input_index": 0,
439
+ "inputs": [
440
+ {
441
+ "utxo_value": 10000000,
442
+ "constructor_args": [
443
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
444
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
445
+ 10,
446
+ -1,
447
+ 0
448
+ ],
449
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
450
+ }
451
+ ],
452
+ "outputs": [
453
+ {
454
+ "value": 9599999,
455
+ "constructor_args": [
456
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
457
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
458
+ 10,
459
+ -1,
460
+ 0
461
+ ],
462
+ "state": {
463
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
464
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
465
+ "window": 10,
466
+ "pending_seq": 0,
467
+ "pending_sompi": 1000000
468
+ },
469
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
470
+ "authorizing_input": 0
471
+ }
472
+ ]
473
+ }
474
+ },
475
+ {
476
+ "name": "THE LIE: a settle whose carried state does not match the State it verified is refused",
477
+ "function": "settle",
478
+ "constructor_args": [
479
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
480
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
481
+ 10,
482
+ -1,
483
+ 0
484
+ ],
485
+ "args": [
486
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
487
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
488
+ "0x4f77e6d7415f20d0491063aa533790db076c268e93f62949d9eaa0663aeabadcedcda1c9987b970d4172525d8de37ea8b316e9cfdf32209f2eb449fa7de1cc18",
489
+ "0x5b4b1531b19f4267f7ca8493218bb133606ea215bf271e06b9d062222d8b0653c99796807e51a8555bd263ce7dd1ebb4a9bbfb2ff1b4600f6bfee4b843463321",
490
+ 0,
491
+ 550,
492
+ 1000000,
493
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
494
+ ],
495
+ "expect": "fail",
496
+ "tx": {
497
+ "active_input_index": 0,
498
+ "inputs": [
499
+ {
500
+ "utxo_value": 10000000,
501
+ "constructor_args": [
502
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
503
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
504
+ 10,
505
+ -1,
506
+ 0
507
+ ],
508
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
509
+ }
510
+ ],
511
+ "outputs": [
512
+ {
513
+ "value": 9600000,
514
+ "constructor_args": [
515
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
516
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
517
+ 10,
518
+ -1,
519
+ 0
520
+ ],
521
+ "state": {
522
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
523
+ "session_id": "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
524
+ "window": 10,
525
+ "pending_seq": 0,
526
+ "pending_sompi": 9000000
527
+ },
528
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
529
+ "authorizing_input": 0
530
+ }
531
+ ]
532
+ }
533
+ },
534
+ {
535
+ "name": "IDENTITY DRIFT: a continuation that rewrites the session_id it carries is refused",
536
+ "function": "settle",
537
+ "constructor_args": [
538
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
539
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
540
+ 10,
541
+ -1,
542
+ 0
543
+ ],
544
+ "args": [
545
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
546
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
547
+ "0x2f089adb5da2d7fad1d0c5373f18e59df31263997f4b1c920314235f1d810a2cbe4d6c83a89727b7651028624ccfa0c70e314c1ce54acba586f114aef412e326",
548
+ "0x6428a43d35110d54a556508784b833beb391d4592c72138c9586543e4e1a8b2ca7b212e2ef3e82946029c31c84b30ceafcd286942567c1f462cdf5ebad0fafec",
549
+ 0,
550
+ 550,
551
+ 1000000,
552
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
553
+ ],
554
+ "expect": "fail",
555
+ "tx": {
556
+ "active_input_index": 0,
557
+ "inputs": [
558
+ {
559
+ "utxo_value": 10000000,
560
+ "constructor_args": [
561
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
562
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
563
+ 10,
564
+ -1,
565
+ 0
566
+ ],
567
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c"
568
+ }
569
+ ],
570
+ "outputs": [
571
+ {
572
+ "value": 9600000,
573
+ "constructor_args": [
574
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
575
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
576
+ 10,
577
+ -1,
578
+ 0
579
+ ],
580
+ "state": {
581
+ "parties": "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
582
+ "session_id": "0xc3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
583
+ "window": 10,
584
+ "pending_seq": 0,
585
+ "pending_sompi": 1000000
586
+ },
587
+ "covenant_id": "0x7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c",
588
+ "authorizing_input": 0
589
+ }
590
+ ]
591
+ }
592
+ },
593
+ {
594
+ "name": "BUG 1, THE STUCK FUNDS: nobody ever settled, so the buyer takes everything back",
595
+ "function": "expire",
596
+ "constructor_args": [
597
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
598
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
599
+ 10,
600
+ -1,
601
+ 0
602
+ ],
603
+ "args": [
604
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
605
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
606
+ "0xc557ced67a1ba7793096ba458af45bcb44965b1670655fdcb0496c2162b58e493f934390ca299204c2259b955f0ce37e20aa88916aa418daa3d501505ca3005601"
607
+ ],
608
+ "expect": "pass",
609
+ "tx": {
610
+ "active_input_index": 0,
611
+ "inputs": [
612
+ {
613
+ "utxo_value": 10000000,
614
+ "sequence": 10,
615
+ "constructor_args": [
616
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
617
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
618
+ 10,
619
+ -1,
620
+ 0
621
+ ]
622
+ }
623
+ ],
624
+ "outputs": [
625
+ {
626
+ "value": 9600000,
627
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
628
+ }
629
+ ]
630
+ }
631
+ },
632
+ {
633
+ "name": "BUG 1: with no claim, paying the provider instead of refunding the buyer is refused",
634
+ "function": "expire",
635
+ "constructor_args": [
636
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
637
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
638
+ 10,
639
+ -1,
640
+ 0
641
+ ],
642
+ "args": [
643
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
644
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
645
+ "0xd9434ac1846649061d4395a0dcf00db5c8098f771184029fafd122ee85379117589941d87b6b971a24a2ee665ff0799d87a2ef91d8a8c3346dbfdde90daab38d01"
646
+ ],
647
+ "expect": "fail",
648
+ "tx": {
649
+ "active_input_index": 0,
650
+ "inputs": [
651
+ {
652
+ "utxo_value": 10000000,
653
+ "sequence": 10,
654
+ "constructor_args": [
655
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
656
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
657
+ 10,
658
+ -1,
659
+ 0
660
+ ]
661
+ }
662
+ ],
663
+ "outputs": [
664
+ {
665
+ "value": 9600000,
666
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
667
+ }
668
+ ]
669
+ }
670
+ },
671
+ {
672
+ "name": "the normal payout: the provider takes the claim, the buyer takes the remainder",
673
+ "function": "expire",
674
+ "constructor_args": [
675
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
676
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
677
+ 10,
678
+ 3,
679
+ 4000000
680
+ ],
681
+ "args": [
682
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
683
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
684
+ "0x16ebd6b7c6712c3cf1075f5a36c9fc78114aefd11569d1ba89d3354674acf59d8902fc62e9f6358e82e03a6d1fcacb99c993faa62e551b4a92ef08349c2dc05301"
685
+ ],
686
+ "expect": "pass",
687
+ "tx": {
688
+ "active_input_index": 0,
689
+ "inputs": [
690
+ {
691
+ "utxo_value": 10000000,
692
+ "sequence": 10,
693
+ "constructor_args": [
694
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
695
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
696
+ 10,
697
+ 3,
698
+ 4000000
699
+ ]
700
+ }
701
+ ],
702
+ "outputs": [
703
+ {
704
+ "value": 4000000,
705
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
706
+ },
707
+ {
708
+ "value": 5600000,
709
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
710
+ }
711
+ ]
712
+ }
713
+ },
714
+ {
715
+ "name": "BUG 2, THE BURNED REFUND: paying the buyer a token amount and burning the rest to fee is refused",
716
+ "function": "expire",
717
+ "constructor_args": [
718
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
719
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
720
+ 10,
721
+ 3,
722
+ 4000000
723
+ ],
724
+ "args": [
725
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
726
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
727
+ "0xb82af46296f11d5f397412a593c33f6b92a461e28b5d41f3115d9955cb8b8b5ad0cc97c7446480546b4c18a8d2963559e0c105dbb019c2ce6c51eabf0d47038b01"
728
+ ],
729
+ "expect": "fail",
730
+ "tx": {
731
+ "active_input_index": 0,
732
+ "inputs": [
733
+ {
734
+ "utxo_value": 10000000,
735
+ "sequence": 10,
736
+ "constructor_args": [
737
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
738
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
739
+ 10,
740
+ 3,
741
+ 4000000
742
+ ]
743
+ }
744
+ ],
745
+ "outputs": [
746
+ {
747
+ "value": 4000000,
748
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
749
+ },
750
+ {
751
+ "value": 1,
752
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
753
+ }
754
+ ]
755
+ }
756
+ },
757
+ {
758
+ "name": "THE OVERCLAIM: paying the provider more than the pending claim is refused",
759
+ "function": "expire",
760
+ "constructor_args": [
761
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
762
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
763
+ 10,
764
+ 3,
765
+ 4000000
766
+ ],
767
+ "args": [
768
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
769
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
770
+ "0xacb1a6e9684c8022102d9b23778db5e9ca5db68f31dfc4612a1324a14f2e768f195fe61d99af6002c93f87a8c95bfa07714bc221fbe66a878ecbf733bd81a41701"
771
+ ],
772
+ "expect": "fail",
773
+ "tx": {
774
+ "active_input_index": 0,
775
+ "inputs": [
776
+ {
777
+ "utxo_value": 10000000,
778
+ "sequence": 10,
779
+ "constructor_args": [
780
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
781
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
782
+ 10,
783
+ 3,
784
+ 4000000
785
+ ]
786
+ }
787
+ ],
788
+ "outputs": [
789
+ {
790
+ "value": 5000000,
791
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
792
+ },
793
+ {
794
+ "value": 4600000,
795
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
796
+ }
797
+ ]
798
+ }
799
+ },
800
+ {
801
+ "name": "THE WRONG DESTINATION: paying the claim to a stranger instead of the provider is refused",
802
+ "function": "expire",
803
+ "constructor_args": [
804
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
805
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
806
+ 10,
807
+ 3,
808
+ 4000000
809
+ ],
810
+ "args": [
811
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
812
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
813
+ "0x4376deb2ea8bf338b6a81e4ea7a13673d9e6f0acaea8406ac33063dd4f9bf1ec7064407c36fb97f60693ccc1490ca0ad6f9416a298626d2f24048fbcd49bfb2c01"
814
+ ],
815
+ "expect": "fail",
816
+ "tx": {
817
+ "active_input_index": 0,
818
+ "inputs": [
819
+ {
820
+ "utxo_value": 10000000,
821
+ "sequence": 10,
822
+ "constructor_args": [
823
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
824
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
825
+ 10,
826
+ 3,
827
+ 4000000
828
+ ]
829
+ }
830
+ ],
831
+ "outputs": [
832
+ {
833
+ "value": 4000000,
834
+ "p2pk_pubkey": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
835
+ },
836
+ {
837
+ "value": 5600000,
838
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
839
+ }
840
+ ]
841
+ }
842
+ },
843
+ {
844
+ "name": "A STRANGER CANNOT CLOSE: expire signed by neither party is refused",
845
+ "function": "expire",
846
+ "constructor_args": [
847
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
848
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
849
+ 10,
850
+ 3,
851
+ 4000000
852
+ ],
853
+ "args": [
854
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
855
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
856
+ "0x9704b63d4978d6252e2393b03c0dc43cceb62b8f3e584a427862e7d16f5a3f6aa953f4d81e6967eb4b7c2817ef85433bcc27d52c00e63685757d5c17a36150b401"
857
+ ],
858
+ "expect": "fail",
859
+ "tx": {
860
+ "active_input_index": 0,
861
+ "inputs": [
862
+ {
863
+ "utxo_value": 10000000,
864
+ "sequence": 10,
865
+ "constructor_args": [
866
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
867
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
868
+ 10,
869
+ 3,
870
+ 4000000
871
+ ]
872
+ }
873
+ ],
874
+ "outputs": [
875
+ {
876
+ "value": 4000000,
877
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
878
+ },
879
+ {
880
+ "value": 5600000,
881
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
882
+ }
883
+ ]
884
+ }
885
+ },
886
+ {
887
+ "name": "FINDING G: a claim too small to pay closes to the buyer instead of locking forever",
888
+ "function": "expire",
889
+ "constructor_args": [
890
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
891
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
892
+ 10,
893
+ 3,
894
+ 100000
895
+ ],
896
+ "args": [
897
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
898
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
899
+ "0x1d608ba7488792efa2df23827c5e7794083194a30ad83bc0d1e1046fa60165af0bf1584fccf48e3bd160bf8d3d3a67ba5f57512a75ed105784caecc22e52b97e01"
900
+ ],
901
+ "expect": "pass",
902
+ "tx": {
903
+ "active_input_index": 0,
904
+ "inputs": [
905
+ {
906
+ "utxo_value": 10000000,
907
+ "sequence": 10,
908
+ "constructor_args": [
909
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
910
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
911
+ 10,
912
+ 3,
913
+ 100000
914
+ ]
915
+ }
916
+ ],
917
+ "outputs": [
918
+ {
919
+ "value": 9600000,
920
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
921
+ }
922
+ ]
923
+ }
924
+ },
925
+ {
926
+ "name": "FINDING G: a dust claim may NOT be paid to the provider -- it cannot be created",
927
+ "function": "expire",
928
+ "constructor_args": [
929
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
930
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
931
+ 10,
932
+ 3,
933
+ 100000
934
+ ],
935
+ "args": [
936
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
937
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
938
+ "0x9958d8ef03b9d61708713767688e80c0e4746f348c27fafdc4be583c118348fd909da6526d4fc2b99e44a8173d8ccc2acc02275a1447daf8509acf2d3da6b9f001"
939
+ ],
940
+ "expect": "fail",
941
+ "tx": {
942
+ "active_input_index": 0,
943
+ "inputs": [
944
+ {
945
+ "utxo_value": 10000000,
946
+ "sequence": 10,
947
+ "constructor_args": [
948
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
949
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
950
+ 10,
951
+ 3,
952
+ 100000
953
+ ]
954
+ }
955
+ ],
956
+ "outputs": [
957
+ {
958
+ "value": 100000,
959
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
960
+ },
961
+ {
962
+ "value": 9500000,
963
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
964
+ }
965
+ ]
966
+ }
967
+ },
968
+ {
969
+ "name": "THE UNCLOSABLE WINDOW: a claim just above the old dust line folds, it does not strand",
970
+ "function": "expire",
971
+ "constructor_args": [
972
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
973
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
974
+ 10,
975
+ 3,
976
+ 2100000
977
+ ],
978
+ "args": [
979
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
980
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
981
+ "0x3a04fdb0f8dfaddd7321edc86539613f3adabf3859e916657880873ba5506834fb41eb3341fb324f80254f5f2f660492e07a665dcfda28706a170e862c19463c01"
982
+ ],
983
+ "expect": "pass",
984
+ "tx": {
985
+ "active_input_index": 0,
986
+ "inputs": [
987
+ {
988
+ "utxo_value": 10000000,
989
+ "sequence": 10,
990
+ "constructor_args": [
991
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
992
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
993
+ 10,
994
+ 3,
995
+ 2100000
996
+ ]
997
+ }
998
+ ],
999
+ "outputs": [
1000
+ {
1001
+ "value": 9600000,
1002
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1003
+ }
1004
+ ]
1005
+ }
1006
+ },
1007
+ {
1008
+ "name": "THE UNCLOSABLE WINDOW: that same claim still may not be paid to the provider",
1009
+ "function": "expire",
1010
+ "constructor_args": [
1011
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1012
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1013
+ 10,
1014
+ 3,
1015
+ 2100000
1016
+ ],
1017
+ "args": [
1018
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1019
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1020
+ "0x4f6cc73c365fc92319db941551b7736e60595ba6222ece57f8edd96a6570e37a01bde6cc0fe6024a10098100eaf13b56ebee247bccd7b1f767e452436200b20901"
1021
+ ],
1022
+ "expect": "fail",
1023
+ "tx": {
1024
+ "active_input_index": 0,
1025
+ "inputs": [
1026
+ {
1027
+ "utxo_value": 10000000,
1028
+ "sequence": 10,
1029
+ "constructor_args": [
1030
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1031
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1032
+ 10,
1033
+ 3,
1034
+ 2100000
1035
+ ]
1036
+ }
1037
+ ],
1038
+ "outputs": [
1039
+ {
1040
+ "value": 2100000,
1041
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1042
+ },
1043
+ {
1044
+ "value": 7500000,
1045
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1046
+ }
1047
+ ]
1048
+ }
1049
+ },
1050
+ {
1051
+ "name": "FINDING H: a one-output close that burns a payable refund to fee is refused",
1052
+ "function": "expire",
1053
+ "constructor_args": [
1054
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1055
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1056
+ 10,
1057
+ 3,
1058
+ 4000000
1059
+ ],
1060
+ "args": [
1061
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1062
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1063
+ "0xb0bfe673ecefff81246fec0b1cdfc1fe9ec8451dc9f1e47367af90c95b98844aeaba7cd6f20c629cf8fc0660da26af08ea9a26cffe4e40f5d2837104e26241b201"
1064
+ ],
1065
+ "expect": "fail",
1066
+ "tx": {
1067
+ "active_input_index": 0,
1068
+ "inputs": [
1069
+ {
1070
+ "utxo_value": 10000000,
1071
+ "sequence": 10,
1072
+ "constructor_args": [
1073
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1074
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1075
+ 10,
1076
+ 3,
1077
+ 4000000
1078
+ ]
1079
+ }
1080
+ ],
1081
+ "outputs": [
1082
+ {
1083
+ "value": 4000000,
1084
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1085
+ }
1086
+ ]
1087
+ }
1088
+ },
1089
+ {
1090
+ "name": "a refund too small to pay folds into the provider, rather than locking the balance",
1091
+ "function": "expire",
1092
+ "constructor_args": [
1093
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1094
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1095
+ 10,
1096
+ 3,
1097
+ 9000000
1098
+ ],
1099
+ "args": [
1100
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1101
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1102
+ "0x61dd1fdc2e822854f91c6da96a7cc89e7a76a47c83971418c13f5ed351950e2a8445904021fb799da1ff62010d63beee5066a7dfc9fe4658d5da3ae7094dfcb001"
1103
+ ],
1104
+ "expect": "pass",
1105
+ "tx": {
1106
+ "active_input_index": 0,
1107
+ "inputs": [
1108
+ {
1109
+ "utxo_value": 10000000,
1110
+ "sequence": 10,
1111
+ "constructor_args": [
1112
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1113
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1114
+ 10,
1115
+ 3,
1116
+ 9000000
1117
+ ]
1118
+ }
1119
+ ],
1120
+ "outputs": [
1121
+ {
1122
+ "value": 9000000,
1123
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1124
+ }
1125
+ ]
1126
+ }
1127
+ },
1128
+ {
1129
+ "name": "FINDING J: two covenant inputs paying out once is refused -- input-group closure",
1130
+ "function": "expire",
1131
+ "constructor_args": [
1132
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1133
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1134
+ 10,
1135
+ 3,
1136
+ 4000000
1137
+ ],
1138
+ "args": [
1139
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1140
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1141
+ "0xd52d5d3b05ad1052689600f6ffb1dff230860e2b695f67b899b0d922c59629572f8597ca3706f577cd18775e6278dde0e4d15373d583e0cfd7f9f9c941bd044d01"
1142
+ ],
1143
+ "expect": "fail",
1144
+ "tx": {
1145
+ "active_input_index": 0,
1146
+ "inputs": [
1147
+ {
1148
+ "utxo_value": 10000000,
1149
+ "sequence": 10,
1150
+ "constructor_args": [
1151
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1152
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1153
+ 10,
1154
+ 3,
1155
+ 4000000
1156
+ ]
1157
+ },
1158
+ {
1159
+ "utxo_value": 10000000,
1160
+ "sequence": 10,
1161
+ "constructor_args": [
1162
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1163
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1164
+ 10,
1165
+ 3,
1166
+ 4000000
1167
+ ]
1168
+ }
1169
+ ],
1170
+ "outputs": [
1171
+ {
1172
+ "value": 4000000,
1173
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1174
+ },
1175
+ {
1176
+ "value": 5600000,
1177
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1178
+ }
1179
+ ]
1180
+ }
1181
+ },
1182
+ {
1183
+ "name": "P10/THE EARLY CLOSE: expiring before the response window has passed is refused",
1184
+ "function": "expire",
1185
+ "constructor_args": [
1186
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1187
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1188
+ 10,
1189
+ 3,
1190
+ 4000000
1191
+ ],
1192
+ "args": [
1193
+ "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa",
1194
+ "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27",
1195
+ "0xc7528b5110cb771459f3c88f31738d55ae27dff6ffa23797e7200ee5053105d094acd060a568118cbf78cdda47112725e28ee7a202e3a1e5ac7db6813f2c030b01"
1196
+ ],
1197
+ "expect": "fail",
1198
+ "tx": {
1199
+ "active_input_index": 0,
1200
+ "inputs": [
1201
+ {
1202
+ "utxo_value": 10000000,
1203
+ "sequence": 9,
1204
+ "constructor_args": [
1205
+ "0x221a066ade0a7a7a0a89fd975e9a797b23e85d5cdfe053e128f0dc7772166095",
1206
+ "0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
1207
+ 10,
1208
+ 3,
1209
+ 4000000
1210
+ ]
1211
+ }
1212
+ ],
1213
+ "outputs": [
1214
+ {
1215
+ "value": 4000000,
1216
+ "p2pk_pubkey": "0x466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27"
1217
+ },
1218
+ {
1219
+ "value": 5600000,
1220
+ "p2pk_pubkey": "0x4f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa"
1221
+ }
1222
+ ]
1223
+ }
1224
+ }
1225
+ ]
1226
+ }