owned this note
owned this note
Published
Linked with GitHub
Dash
===
* [name=Ander Liu]
###### tags: `Blockchain`
[TOC]
## Basic info
* Source code: https://github.com/dashpay/dash
* Releases:
* https://www.dash.org/releases/
* https://github.com/dashpay/dash/releases
* Block Explorer: https://dashblockexplorer.com
## Testnet Faucets
- [http://test.faucet.masternode.io](http://test.faucet.masternode.io/) \- by coingun
- [http://faucet.test.dash.crowdnode.io](http://faucet.test.dash.crowdnode.io/) \- by ndrezza
- [https://test.faucet.dashninja.pl](https://test.faucet.dashninja.pl/) \- by elbereth
## Arguments and commands
* Reference: https://docs.dash.org/en/stable/wallets/dashcore/cmd-rpc.html
* 在 bin 資料夾裡面會有 dashd, dash-qt, dash-cli, dash-tx 四個執行檔
* dashd: Dash Core Daemon
* dash-qt: Dash Core QT GUI
* dash-cli: Dash Core RPC client
* dash-tx: Dash Core dash-tx utility
### 基本操作
```bash=
$ ./dashd --daemon //Run in the background as a daemon and accept commands
$ ./dash-cli <command> //Send command to Dash Core
```
### Testnet
* Reference: https://docs.dash.org/en/stable/developers/testnet.html
* 在 command 後,加上 --testnet
* Ex:
```bash=
$ ./dashd --testnet
$ ./dash-cli --testnet
```
### Options
| option | Description |
| ---------------- | ----------- |
| --txindex | Maintain a full transaction index, used by the getrawtransaction rpc call (default: 1) |
| --addressindex | Maintain a full address index, used to query for the balance, txids and unspent outputs for addresses (default: 0) |
| --timestampindex | Maintain a timestamp index for block hashes, used to query blocks hashes by a range of timestamps (default: 0) |
| --spentindex | Maintain a full spent index, used to query the spending txid and input index for an outpoint (default: 0) |
:::warning
如果已經下好帳本,要新增 index 功能,要加上 --reindex
:::
### Example
```bash=
$ ./dashd --testnet --daemon --addressindex
$ ./dash-cli --testnet <command>
```
## 查詢區塊高度
```bash=
$ ./dash-cli (--testnet) getblockcount
( Returns the number of blocks in the longest blockchain. )
```
* return:
```bash=
142935
```
## 創建地址
```bash=
$ ./dash-cli (--testnet) getnewaddress
( Returns a new Dash address for receiving payments. )
```
* return (addr):
```bash=
yfJ971rJSFQt2SfGWVJZdyX8Rdiv7jsjeg
```
## 查詢餘額
1. 查特定地址餘額 (要開 addressindex 功能)
```bash=
$ ./dash-cli (--testnet) getaddressbalance '{"addresses": ["address"]}'
( Returns the balance for an address(es) (requires addressindex to be enabled ).
```
* return:
```bash=
{
"balance": 8887859774,
"received": 8887859774
}
```
2. 查錢包餘額
```bash=
$ ./dash-cli (--testnet) getbalance
( returns the server’s total available balance )
```
* return:
```bash=
88.87859774
```
3. 查錢包裡地址餘額
```bash=
$ ./dash-cli (--testnet) listaddressbalances
( Lists addresses of this wallet and their balances )
```
* return:
```bash=
{
"yN8saAJ5tzaVaahHHRHF4YHbwHvX3Dv7ix": 0.00000000,
"yS6KfQfz4ygedPsjTZWbCRJiRj1R66TozY": 88.87859774
}
```
## Transaction
* Transaction Example: https://dash-docs.github.io/en/developer-examples#transactions
### Simple Spanding
```bash=
$ ./dash-cli (--testnet) sendtoaddress "address" amount
( Send an amount to a given address. )
```
* return (txid):
```
bbffc3......
```
### Complex Raw Transaction
1. 取得可用 txid
```bash=
$ ./dash-cli (--testnet) listunspent
( Returns array of unspent transaction outputs )
```
* return:
```bash=
[
{
"txid": "bbffc3......",
"vout": 1,
"address": "yS6KfQfz4ygedPsjTZWbCRJiRj1R66TozY",
"amount": 88.87859774,
...
},
...
]
```
2. 取得 key
```bash=
$ ./dash-cli (--testnet) dumpprivkey "myaddress"
( Reveals the private key corresponding to 『address』. )
```
* return (key):
```bash=
cN93x2......
```
3. create 交易
```bash=
$ ./dash-cli (--testnet) createrawtransaction "[{\"txid\":\"mytxid\",\"vout\":n}, ...]" "{\"address\":amount, ...}"
( Create a transaction spending the given inputs and creating new outputs. )
```
* return (hex):
```bash=
0200000001ea9......
```
:::warning
mytxid, n, address, amount 都要填
input 照著步驟1.得到的結果填
假設這筆 txid 有10塊錢,要給對方5塊錢,交易費為0.001,則 address 有兩筆,一筆填對方地址,amount 填5塊,另一筆填自己地址,amount 填4.999塊
:::
4. sign 交易
```bash=
$ ./dash-cli (--testnet) signrawtransaction "hexstring" [] [\"privatekey\", ...]
( Sign inputs for raw transaction (serialized, hex-encoded). )
```
* result (signedhex):
```bash=
{
"hex": "0200000001ea9......",
"complete": true
}
```
5. send 交易
```bash=
$ ./dash-cli (--testnet) sendrawtransaction "signedhex"
( Submits raw transaction (serialized, hex-encoded) to local node and network. )
```
* result (txid):
```bash=
383045......
```
## 查詢交易結果
1. 查看鍊上交易資訊
```bash=
$ ./dash-cli (--testnet) gettransaction “txid“
( Get detailed information about in-wallet transaction <txid> )
```
* return:
```bash=
{
"blockhash": "000000003adb2741881f8e9dc64d767b9b10318faa6cc54f52931574439223eb",
...
}
```
2. 利用 hash 值得到區塊
```bash=
$ ./dash-cli (--testnet) getblock “blockhash”
( returns a string that is serialized, hex-encoded data for block 『hash』. )
```
* return (block):
```bash=
{
"height": 142932,
...
}
```
3. 利用 getblockcount 得到區塊高度
```bash=
$ ./dash-cli (--testnet) getblockcount
```
## Reference
* [Official Website](https://www.dash.org)
* https://dash-docs.github.io
## Homepage
* [Homepage](/@NDR/Homepage)