184 lines
9.4 KiB
Markdown
184 lines
9.4 KiB
Markdown
# Wallet Foreign API Documentation
|
|
|
|
## Table of Contents
|
|
|
|
1. [Wallet Foreign Endpoint](#wallet-foreign-endpoint)
|
|
1. [POST Build Coinbase](#post-build-coinbase)
|
|
1. [POST Receive Tx](#post-receive-tx)
|
|
|
|
## Wallet Foreign Endpoint
|
|
|
|
### POST Build Coinbase
|
|
|
|
Creates a coinbase output for the given height and block fees
|
|
|
|
* **URL**
|
|
|
|
/v1/wallet/foreign/build_coinbase
|
|
|
|
* **Method:**
|
|
|
|
`POST`
|
|
|
|
* **URL Params**
|
|
|
|
None
|
|
|
|
* **Data Params**
|
|
|
|
```json
|
|
{
|
|
"fees": x,
|
|
"height":y,
|
|
}
|
|
```
|
|
|
|
**Required:**
|
|
`fees=[number]`
|
|
`height=[number]`
|
|
|
|
* **Success Response:**
|
|
|
|
* **Code:** 200
|
|
* **Content:**
|
|
|
|
| Field | Type | Description |
|
|
|:-------|:---------|:---------------|
|
|
| output | string | Output |
|
|
| kernel | string | Kernel |
|
|
| key_id | string | Key identifier |
|
|
|
|
* **Error Response:**
|
|
|
|
* **Code:** 400
|
|
|
|
* **Sample Call:**
|
|
|
|
```javascript
|
|
var coinbase_data = {
|
|
fees: 0,
|
|
height: 123456
|
|
}
|
|
$.ajax({
|
|
url: "/v1/wallet/foreign/build_coinbase",
|
|
dataType: "json",
|
|
type : "POST",
|
|
success : function(r) {
|
|
console.log(r);
|
|
},
|
|
data: JSON.stringify(coinbase_data)
|
|
});
|
|
```
|
|
|
|
### POST Receive Tx
|
|
|
|
Receives a transaction, modifying the slate accordingly (which can then be sent back to sender for posting)
|
|
|
|
* **URL**
|
|
|
|
/v1/wallet/foreign/receive_tx
|
|
|
|
* **Method:**
|
|
|
|
`POST`
|
|
|
|
* **URL Params**
|
|
|
|
None
|
|
|
|
* **Data Params**
|
|
|
|
**Required:** A transaction slate in JSON.
|
|
|
|
| Field | Type | Description |
|
|
|:----------------------|:---------|:--------------------------------------------------------------------------|
|
|
| num_participants | number | The number of participants intended to take part in this transaction |
|
|
| id | number | Unique transaction ID, selected by sender |
|
|
| tx | object | The core transaction data (inputs, outputs, kernels and kernel offset) |
|
|
| - offset | []number | The kernel "offset" k2, excess is k1G after splitting the key k = k1 + k2 |
|
|
| - body | object | The transaction body - inputs/outputs/kernels |
|
|
| - - inputs | []object | List of inputs spent by the transaction |
|
|
| - - - features | object | The features of the output being spent |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - commit | []number | The commit referencing the output being spent |
|
|
| - - outputs | []object | List of outputs the transaction produces |
|
|
| - - - features | object | Options for an output's structure or use |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - commit | []number | The homomorphic commitment representing the output amount |
|
|
| - - - proof | []number | A proof that the commitment is in the right range |
|
|
| - - kernels | []object | List of kernels that make up this transaction (usually a single kernel) |
|
|
| - - - features | object | Options for a kernel's structure or use |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - fee | number | Fee originally included in the transaction this proof is for |
|
|
| - - - lock_height | number | The max lock_height of all inputs to this transaction |
|
|
| - - - excess | []number | Remainder of the sum of all transaction commitments |
|
|
| - - - excess_sig | []number | The signature proving the excess is a valid public key (signs the tx fee) |
|
|
| amount | number | Base amount (excluding fee) |
|
|
| fee | number | Fee amount |
|
|
| height | number | Block height for the transaction |
|
|
| lock_height | number | Lock height |
|
|
| participant_data | object | Participant data |
|
|
| - id | number | Id of participant in the transaction. (For now, 0=sender, 1=rec) |
|
|
| - public_blind_excess | []number | Public key corresponding to private blinding factor |
|
|
| - public_nonce | []number | Public key corresponding to private nonce |
|
|
| - part_sig | []number | Public partial signature |
|
|
|
|
*Note on participant data*: each participant in the transaction will insert their public data here. For now, 0 is sender and 1 is receiver, though this will change for multi-party transactions.
|
|
|
|
* **Success Response:**
|
|
|
|
* **Code:** 200
|
|
* **Content:** A new transaction slate in JSON.
|
|
|
|
| Field | Type | Description |
|
|
|:----------------------|:---------|:--------------------------------------------------------------------------|
|
|
| num_participants | number | The number of participants intended to take part in this transaction |
|
|
| id | number | Unique transaction ID, selected by sender |
|
|
| tx | object | The core transaction data (inputs, outputs, kernels and kernel offset) |
|
|
| - offset | []number | The kernel "offset" k2, excess is k1G after splitting the key k = k1 + k2 |
|
|
| - body | object | The transaction body - inputs/outputs/kernels |
|
|
| - - inputs | []object | List of inputs spent by the transaction |
|
|
| - - - features | object | The features of the output being spent |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - commit | []number | The commit referencing the output being spent |
|
|
| - - outputs | []object | List of outputs the transaction produces |
|
|
| - - - features | object | Options for an output's structure or use |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - commit | []number | The homomorphic commitment representing the output amount |
|
|
| - - - proof | []number | A proof that the commitment is in the right range |
|
|
| - - kernels | []object | List of kernels that make up this transaction (usually a single kernel) |
|
|
| - - - features | object | Options for a kernel's structure or use |
|
|
| - - - - bits | number | Representation of the features in bits |
|
|
| - - - fee | number | Fee originally included in the transaction this proof is for |
|
|
| - - - lock_height | number | The max lock_height of all inputs to this transaction |
|
|
| - - - excess | []number | Remainder of the sum of all transaction commitments |
|
|
| - - - excess_sig | []number | The signature proving the excess is a valid public key (signs the tx fee) |
|
|
| amount | number | Base amount (excluding fee) |
|
|
| fee | number | Fee amount |
|
|
| height | number | Block height for the transaction |
|
|
| lock_height | number | Lock height |
|
|
| participant_data | object | Participant data |
|
|
| - id | number | Id of participant in the transaction. (For now, 0=sender, 1=rec) |
|
|
| - public_blind_excess | []number | Public key corresponding to private blinding factor |
|
|
| - public_nonce | []number | Public key corresponding to private nonce |
|
|
| - part_sig | []number | Public partial signature |
|
|
|
|
* **Error Response:**
|
|
|
|
* **Code:** 400
|
|
|
|
* **Sample Call:**
|
|
|
|
```javascript
|
|
$.ajax({
|
|
url: "/v1/wallet/foreign/receive_tx",
|
|
dataType: "json",
|
|
type : "POST",
|
|
success : function(r) {
|
|
console.log(r);
|
|
},
|
|
data: {
|
|
file: tx.json
|
|
},
|
|
});
|
|
``` |