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)