conduition
4e1eb8eeee
reduce duplication of transaction-building code
2024-03-20 21:44:35 +00:00
conduition
8e337ccb8b
allow the caller to choose player indexes
2024-03-20 19:33:17 +00:00
conduition
4ed448d5c5
add funding-close transaction for optimized closure when all players cooperate
2024-03-20 18:39:46 +00:00
conduition
f8ac9eb138
add stress test to check performance when signing large DLCs
2024-03-20 05:42:19 +00:00
conduition
76f1365564
refactor SigningSession API to encourage use of a coordinator
2024-03-20 05:42:19 +00:00
conduition
29c7a8a16b
improve documentation
2024-03-20 01:43:59 +00:00
conduition
cc0fb0e15c
add checks for OP_CSV enforcement of relative locktimes
2024-03-19 19:44:30 +00:00
conduition
2e1ba446ba
add test coverage for expiry outcomes
2024-03-19 15:06:32 +00:00
conduition
8143758e39
add tests to cover cooperative closing transactions
2024-03-18 21:07:47 +00:00
conduition
a011cf5e44
fix use of option for expiry in tests
2024-03-18 20:24:22 +00:00
conduition
2bd8d4fed5
run signing session
2024-03-18 20:00:58 +00:00
conduition
fc29bd27b6
reusable method to check if an outcome is valid
2024-03-18 00:32:24 +00:00
conduition
71334d99f9
event expiry is optional
2024-03-17 21:27:34 +00:00
conduition
3eb37c4d51
add serde serialization trait implementations
...
This allows players and the market maker to transact network sockets,
or other transport channels, by passing nonces, sigmaps, etc, back
and forth to each other. It also allows parties to store their signed
contract data locally, and enforce the contract even after a restart.
2024-03-16 20:27:09 +00:00
conduition
2e342b12b3
crate docs todo
2024-03-16 05:38:40 +00:00
conduition
b32bab6c14
fix missing imports and exports
2024-03-16 01:18:00 +00:00
conduition
69d614600d
oracle attestations should be valid BIP340 signatures
2024-03-16 01:17:39 +00:00
conduition
d2b545fa8c
remove unused payout_value field from SplitSpendInfo
2024-03-16 01:17:23 +00:00
conduition
644bd160ff
conceptually separate claimable win conditions from controlled win conditions
2024-03-16 01:16:56 +00:00
conduition
e109800902
add additional quality-of-life getter methods on SignedContract
2024-03-16 01:16:18 +00:00
conduition
4b380c828b
implement Clone on TicketedDLC (with documented stipulations)
2024-03-14 17:22:15 +00:00
conduition
14061d9f6b
add into_signed_contract method on SigningSession
2024-03-10 17:06:45 +00:00
conduition
1680dab1cf
minor docs changes
2024-03-10 17:06:08 +00:00
conduition
93a95b16ae
add Eq and PartialEq to MarketMaker
2024-03-10 16:59:11 +00:00
conduition
873d7b406a
fix duplicated comment
2024-03-10 16:57:57 +00:00
conduition
0f77acfb98
remove some unused fields in spend info structs
2024-03-10 16:56:21 +00:00
conduition
91caefb989
add cooperative split closing transaction signing
...
This allows the market maker to cooperatively close individual payout
contracts with specific winners, if some of an outcome's winners
cooperate but others do not.
2024-03-10 16:47:49 +00:00
conduition
87ed72eae2
remove unused outcome sellback spend path
2024-03-10 16:38:05 +00:00
conduition
50ecb1be9d
sellback TX sequence can be whatever the market maker wishes
2024-03-10 16:37:34 +00:00
conduition
a34146cbdd
add cooperative outcome-close transaction signing for market maker
2024-03-10 16:36:52 +00:00
conduition
dbce9fc0d5
add OutcomeIndex alias for outcome indexes
2024-03-10 06:05:10 +00:00
conduition
296cfaae66
improve memory overhead by referring to players by index
...
We were using btrees indexed by players, which required each
btree to store the player in memory. This was inefficient.
Instead, we now index by usize, which is a player index in the
sorted set of players in ContractParameters.
2024-03-10 06:04:51 +00:00
conduition
6d9bd1529e
the player secret key should be ephemeral
2024-03-10 04:09:56 +00:00
conduition
8be1b23f7e
add methods to sign and execute individual-controlled spending paths
...
These methods allow players and the market maker to execute the final
stages of a Ticketed DLC, including the forceful sellback TX, forceful
win transaction, and forceful reclaim transactions.
2024-03-09 17:46:27 +00:00
conduition
e6e8a397d3
use deterministic signatures for solo signers
2024-03-09 17:44:06 +00:00
conduition
050b1bda8a
check for unregistered players
2024-03-09 16:28:26 +00:00
conduition
8d99ec6f6c
perf: verify only signatures relevant to specific players
...
Each player only cares about the signatures which are needed
to enforce outcomes in which they receive money. Other outcomes
are entirely optional. The market maker must verify all signatures.
2024-03-09 02:10:23 +00:00
conduition
b8ad44c357
represent finished contract state as separate struct
2024-03-09 02:08:18 +00:00
conduition
882e6c4a95
add methods to construct fully signed outcome/split/expiry transactions
2024-03-08 07:15:17 +00:00
conduition
042754bfd8
add validation for contract parameters
2024-03-08 06:10:14 +00:00
conduition
423da8f486
fix misspelling of EventAnnouncement
2024-03-06 22:27:00 +00:00
conduition
6a39346f4b
Remove irrelevant Debug and Clone implementations
2024-03-06 00:18:55 +00:00
conduition
482521a1e9
add second round of state machine for finalizing and verifying signatures
...
This adds additional states to the SigningSession state machine
which encapsulate the 2nd round of signing, and the final state
after signing is completed. Once all signatures have been received,
the Ticketed DLC is active and enforceable. Players can begin
buying ticket preimages from the market maker.
2024-03-06 00:17:43 +00:00
conduition
d0940e0024
u32::MAX instead of arbitrary weight
2024-03-03 21:13:36 +00:00
conduition
595c930b85
initial work on high-level state machine for musig signing
...
This is my first go at a higher level API which signers will
use to construct and sign the numerous transactions needed
for executing a Ticketed DLC. It revolves around the
SigningSession struct type, which has an API constrainted by
its current state.
2024-03-02 02:31:47 +00:00
conduition
74bb611851
reusable method for computing funding output
2024-02-29 05:23:55 +00:00
conduition
5d2fdc809e
funding script pubkey doesn't need to commit to an empty taproot
2024-02-29 05:23:18 +00:00
conduition
cd681d0874
add expiry outcome branch
2024-02-21 06:19:06 +00:00
conduition
ff25eb179d
improve documentation
2024-02-19 19:15:40 +00:00
conduition
692644a74b
avoid using Into<Scalar> in internal methods
2024-02-18 21:45:46 +00:00