You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 17, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+10-10Lines changed: 10 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,13 @@
2
2
3
3
# escrow-core
4
4
5
-
A light-weight, non-custodial protocol for using Bitcoin in a `covenant-based` smart contract.
5
+
A light-weight, non-custodial protocol for locking Bitcoin in a covenant-based smart contract.
6
6
7
7
Features:
8
8
* Method libraries for every part of the protocol.
9
9
* Multi-platform client with minimal dependencies.
10
10
* Run-time schema validation (using zod).
11
-
* E2E test suite for regtest, signet, and testnet.
11
+
* E2E demo and test suite for signet, testnet, and mutiny.
12
12
13
13
Comimg Soon:
14
14
* Return receipts on witness submission.
@@ -31,7 +31,7 @@ The protocol is split into three phases: `negotiation`, `funding`, and `settleme
31
31
32
32
### Negotiation
33
33
34
-
The `members` of the contract must first negotiate and agree on a `proposal` document. This is a human-readable document which contains all of the terms of the contract. It is written and consumed in JSON format, and designed for collaboration (much like a PSBT).
34
+
The [members](docs/proposal.md) of the contract must first negotiate and agree on a [proposal](docs/proposal.md) document. This is a human-readable document which contains all of the terms of the contract. It is written and consumed in JSON format, and designed for collaboration (much like a PSBT).
35
35
36
36
```ts
37
37
{
@@ -62,13 +62,13 @@ If desired, a third-party can host the proposal. The protocol is designed for th
62
62
63
63
There is no specification placed on how to communicate the proposal between parties. There are so many great communication protocols that exist in the wild, and they virtually all support JSON, so feel free to use your favorite one!
64
64
65
-
> Note: The server `agent` does not take part in negotiations or arbitrate disputes. This is strictly by design. While BitEscrow may offer these services, the protocol is designed so that members and third-parties can negotiate freely, without the agent being involved.
65
+
> Note: The server `agent` does not take part in negotiations. While BitEscrow may offer these services, the protocol is designed so that members and third-parties can negotiate freely, without the agent being involved.
66
66
67
67
### Funding
68
68
69
-
Once a final proposal has been delivered to our server, all terms and endorsements are validated, then a `contract` is formed. The contract is assigned a signing `agent`, which is used to coordinate deposits.
69
+
Once a final proposal has been delivered to our server, all terms and endorsements are validated, then a [contract](docs/contract.md) is formed. The contract is assigned a signing [agent](docs/contract.md), which is used to coordinate deposits.
70
70
71
-
Each funder requests a deposit `account` from the agent. This account uses a 2-of-2 multi-signature address with a time-locked refund path.
71
+
Each funder requests a deposit [account](docs/deposit.md) from the agent. This account uses a 2-of-2 multi-signature address with a time-locked refund path.
72
72
73
73
```ts
74
74
interfaceDepositAccount {
@@ -83,7 +83,7 @@ interface DepositAccount {
83
83
}
84
84
```
85
85
86
-
The funder then delivers a batch of pre-signed transactions (called a `covenant`), which authorizes each of the spending paths of the contract.
86
+
The funder then delivers a batch of pre-signed transactions (called a [covenant](docs/deposit.md)), which authorizes each of the spending paths of the contract.
87
87
88
88
```ts
89
89
interfaceCovenantData {
@@ -152,7 +152,7 @@ When the contract becomes active, a virtual machine is started within the contra
152
152
}
153
153
```
154
154
155
-
Members of the contract can interact with the vm using signed statements, called a witness:
155
+
Members of the contract can interact with the vm using signed statements, called a [witness](docs/contract.md) statement:
156
156
157
157
```ts
158
158
{
@@ -174,7 +174,7 @@ Members can use the vm to settle on a spending path, or lock, unlock, and disput
174
174
175
175
Once the contract vm has settled on a spending path, the agent will complete the relevant pre-signed transaction, and broadcast it, closing the contract.
176
176
177
-
The proposal, covenants, and vm combine to create a proof of validity. This proof covers how the contract should execute at any moment, with zero ambiguity left to the `agent`.
177
+
The proposal, covenants, and vm combine to create a proof of validity. This proof covers how the contract should execute at any moment, with zero ambiguity left to the agent.
178
178
179
179
Each contract settlement on mainnet will include a valid proof to maintain our reputation.
180
180
@@ -450,7 +450,7 @@ To get started, make sureyou are running `v19+` of node, then install the projec
0 commit comments