Merge pull request #233 from SatoshiPortal/features/validateaddress

Added validateaddress endpoint
This commit is contained in:
kexkey
2021-11-18 15:37:24 -05:00
committed by GitHub
4 changed files with 88 additions and 2 deletions

View File

@@ -39,6 +39,7 @@ action_ln_getroute=watcher
action_ln_listpays=watcher
action_ln_paystatus=watcher
action_bitcoin_estimatesmartfee=watcher
action_validateaddress=watcher
# Spender can do what the watcher can do, plus:
action_get_txns_spending=spender

View File

@@ -752,6 +752,36 @@ Proxy response:
}
```
### Validate a Bitcoin address
Returns the detailed information about the given address.
```http
GET http://cyphernode:8888/validateaddress/address
GET http://cyphernode:8888/validateaddress/tb1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqp3mvzv
```
Proxy response for a valid address:
```json
{
"isvalid": true,
"address": "tb1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqp3mvzv",
"scriptPubKey": "5120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c",
"iswitness": true,
"witness_version": 1,
"witness_program": "a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c"
}
```
Proxy response for an invalid address:
```json
{
"isvalid": false
}
```
### Spend coins from spending wallet (called by your application)
Calls sendtoaddress RPC on the spending wallet with supplied info. Can supply an eventMessage to be published on successful spending. eventMessage should be base64 encoded to avoid dealing with escaping special characters.

View File

@@ -1184,6 +1184,54 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseTemporarilyUnavailable'
/validateaddress/{address}:
get:
parameters:
- in: "path"
name: "address"
description: "address string to validate"
required: true
schema:
type: "string"
tags:
- "bitcoin"
- "core features"
summary: "Get the detailed information about the given address"
description: "Returns the detailed information about the given address"
operationId: "validateAddress"
responses:
'200':
description: "operation successful"
content:
application/json:
schema:
type: "object"
required:
- "isvalid"
properties:
isvalid:
type: "boolean"
address:
$ref: '#/components/schemas/TypeAddressString'
scriptPubKey:
type: "string"
isscript:
type: "boolean"
iswitness:
type: "boolean"
witness_version:
type: "number"
witness_program:
type: "string"
'403':
$ref: '#/components/schemas/ApiResponseNotAllowed'
'503':
description: "Resource temporarily unavailable"
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseTemporarilyUnavailable'
/spend:
post:
tags:
@@ -3052,9 +3100,9 @@ components:
type: "string"
pattern: "^[a-fA-F0-9]+$"
TypeAddressString:
description: "base58 check encoded address"
description: "base58 or base32 check encoded address"
type: "string"
pattern: "^[a-km-zA-HJ-NP-Z1-9]{26,35}$"
pattern: "^(bc1|tb1|bcrt1)[ac-hj-np-z02-9]{9,71}|[123mn][a-km-zA-HJ-NP-Z1-9]{26,33}$"
TypeXpubString:
description: "base58 check encoded xpub"
type: "string"

View File

@@ -349,6 +349,13 @@ main() {
response_to_client "${response}" ${?}
break
;;
validateaddress)
# GET http://192.168.111.152:8080/validateaddress/tb1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqp3mvzv
response=$(validateaddress $(echo "${line}" | cut -d ' ' -f2 | cut -d '/' -f3))
response_to_client "${response}" ${?}
break
;;
spend)
# POST http://192.168.111.152:8080/spend
# BODY {"address":"2N8DcqzfkYi8CkYzvNNS5amoq3SbAcQNXKp","amount":0.00233,"eventMessage":"eyJ3aGF0ZXZlciI6MTIzfQo=","confTarget":6,"replaceable":true,"subtractfeefromamount":false}