Post
Topic
Board Altcoin Discussion
Re: Delegated Proof of Stake (DPOS) White Paper by Daniel Larimer
by
CLains
on 18/05/2014, 22:02:59 UTC
Update from https://bitsharestalk.org/index.php?topic=4480.msg58250#msg58250

Follow essential updates here, https://bitsharestalk.org/index.php?topic=3812.15

I have working DPOS chain with instructions here: http://bitshares.org/documentation/group__dpos__manual__testing.html

This is working with full P2P mode, DPOS delegates producing blocks, and the new level_db based wallet....

I will be refining this a tad further and keep you all posted on when we can resume the test.

 +5%
Plan to test it this weekend

I have updated the testing instructions here: http://bitshares.org/documentation/group__dpos__manual__testing.html

Primary changes are in the API usage and wallet management.    The primary goal is to get people away from sending to an 'address' and instead sending to an 'account' where the account is a hierarchal key.  Every time you send to an account it will use a different public key (address) and eventually this will allow automation of privacy enhancing transactions.   

We have also extended the API / implemented more of it.   See info here:
Code:
blockchain_get_block                                        Retrieves the block header for the given block hash
blockchain_get_block_by_number                            Retrieves the block header for the given block number
blockchain_get_blockcount                                               Returns the number of blocks in the longest block chain.
blockchain_get_blockhash                                     Returns hash of block in best-block-chain at index provided..
blockchain_get_delegates [first] [count]                                Returns the list of delegates sorted by vote
blockchain_get_name_record                                        Retrieves the name record
blockchain_get_names [first] [count]                                    Returns the list of reserved names sorted alphabetically
blockchain_get_transaction                              Get detailed information about an in-wallet transaction
get_info                                                                Provides common data, such as balance, block count, connections, and lock time
help [command]                                                          Lists commands or detailed help for specified command.
network_add_node                                        Attempts add or remove from the peer list or try a connection to once
network_get_connection_count                                            Returns the number of connections to other nodes.
network_get_peer_info                                                   Returns data about each connected node.
stop                                                                    Stop BitShares server
validate_address
                                              Return information about given BitShares address.
wallet_close                                                            Closes the curent wallet if one is open.
wallet_create                                   Opens the wallet of the given name
wallet_create_receive_account                             Add new account for receiving payments
wallet_create_sending_account               Add new account for sending payments
wallet_get_account                                        Lists all foreign addresses and their labels associated with this wallet
wallet_get_balance [account_name] [minconf] [asset]                     Returns the wallet's current balance
wallet_get_name                                                         Returns the wallet name passed to wallet_open
wallet_get_transaction_history [count]                                  Retrieves all transactions into or out of this wallet.
wallet_import_bitcoin                              Import a BTC/PTS wallet
wallet_import_private_key [account_name] [wallet_rescan_blockchain]   Import a BTC/PTS private key in wallet import format (WIF)
wallet_list_receive_accounts [start] [count]                            Lists all foreign addresses and their labels associated with this wallet
wallet_list_reserved_names [account_name]                               Lists all reserved names controlled by this wallet, filtered by account.
wallet_list_sending_accounts [start] [count]                            Lists all foreign addresses and their labels associated with this wallet
wallet_lock                                                             Lock the private keys in wallet, disables spending commands until unlocked
wallet_open                                     Opens the wallet of the given name
wallet_open_file                                Opens the wallet at the given path.
wallet_register_delegate                                   Registeres a delegate to be voted upon by shareholders.
wallet_rename_account          Lists all reserved names controlled by this wallet, filtered by account.
wallet_rescan_blockchain [starting_block]                               Rescan the block chain from the given block
wallet_rescan_blockchain_state                                          Rescans the genesis block and state (not the transactions)
wallet_reserve_name                                        Retrieves the name record
wallet_transfer [invoice_memo] [from_account] [asset_id]   Sends given amount to the given address, assumes shares in DAC
wallet_unlock                                  Unlock the private keys in the wallet to enable spending operations

If you are curious about the new transaction structure you can view an example json dump here:
Code:
{
           "expiration": null,
           "delegate_id": null,
           "operations": [{
               "type": "withdraw_op_type",
               "data": {
                 "balance_id": "XTSKh6JP6QzMmeUmmK1T16gxgadrJ547ocGT",
                 "amount": 154321,
                 "claim_input_data": ""
               }
             },{
               "type": "deposit_op_type",
               "data": {
                 "amount": 54321,
                 "condition": {
                   "asset_id": 0,
                   "delegate_id": 8,
                   "condition": "withdraw_signature_type",
                   "data": {
                     "owner": "XTSAg5YxD9reTXr5iQWBZEJrLzzMxMxvnFhy"
                   }
                 }
               }
             }
           ],
           "signatures": [
             "2028da68efe2696ab7895e86c1b35affbb7cd1b71d8f33124fe81ad785ace3ed55226e0e622098b9c45f8660801b4b929556102c3da549d887c5da99262b5c6275"
           ]
}

As you can see this transaction is entirely human readable outside the context of the blockchain,  it is transferring 154321 from XTSKh6JP6QzMmeUmmK1T16gxgadrJ547ocGT and sending 54321  to XTSAg5YxD9reTXr5iQWBZEJrLzzMxMxvnFhy while paying a fee of 100000.