Author Topic: BitShares X Status Update Thread 2.0  (Read 32138 times)

0 Members and 1 Guest are viewing this topic.

Offline bytemaster

We just started the latest dry run with BitAssets.

We have a Market GUI that is somewhat functional, but has much left to do.

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

BTS X with bitassets is now implemented and functional, but we are working on a few last minute market security features.  The basic code for DPOS + TITAN + Asset exchange is now stable enough for a MVP release of the toolkit to developers such as DAC Sun Limited and others. 

We will continue with dryruns with the latest market functions on the XT chain.     
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
3) We are now preparing Dry Run 9 which will have Market Issued Assets (BitUSD!) available from the command line interface.

Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline bytemaster

It has been a while since I have posted an update here because we have been doing 8 dry runs of BitShares X that have given everyone an opportunity to experience first hand where we are.   I would like to summarize the past month's progress now:

1) We have a working / tested Delegated Proof of Stake Chain operating at 10 transactions per second and 10 second blocks.
2) We have a usable Mac/Windows GUI wallet that supports User Issued Assets
3) We are now preparing Dry Run 9 which will have Market Issued Assets (BitUSD!) available from the command line interface.

A team is preparing BTSX for launch and will do so as soon as they feel comfortable.  They are preparing information, tutorials, etc to make sure the launch is as smooth as possible.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

The latest test nets have proven very successful and we are preparing for a dry-run of the XT chain launch with some real delegates operating the chain.

Today I also figured out how to apply TITAN to multi-sig accounts and cross-chain-transfers. 

We are preparing a lot of documentation on the system as a whole and expect things to be operational soon.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

We started a new test net and have started testing delegate registration and voting.   Sending to named accounts seems to be working. 

The web interface is coming along nicely and with any luck we should have a usable test release of the web interface this week. 

Check out https://bitsharestalk.org/index.php?topic=4836.0 for the status updates on testing.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

We have successfully migrated the wallet to be based upon TITAN (Transfer Invisibly to Any Name) without having to hard-fork the blockchain.  To enhance maintainability and facilitate development of 3rd party APIs we have also switched to using code generation for a large part of the RPC API.   We can now use this JSON description of our API to auto-generate JavaScript wrappers for the API and help keep everything in sync as things change in the future.

The TITAN updates significantly enhance usability of the wallet as well as the privacy of the users.   The 97 character long addresses that you are swapping around today with every individual are now gone and instead you can publish a single ~40 character address once  (for everyone).  Then you can register this address (account) with the blockchain.

Users no longer deal with 100's of addresses or manually creating a new address for everyone they deal with.  You wallet is no longer a hodge-podge of 'pseudo-accounts' and instead you have real accounts each with their own balance and all transfers are 'from' one account 'to' another account.   Whether that other account is yours or someone elses. 

As a result the web interface will become very familiar to anyone who had used online banking + billpay.

« Last Edit: May 31, 2014, 01:39:33 pm by bytemaster »
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

There has been significant progress and developments over the past several days.   One of the most significant is the introduction of a random number generation scheme and random delegate selection today.   This was done for two reasons: it resolves a security vulnerability discovered with sequential DPOS and it facilitates one of the more challenging parts of the Lotto DAC.

We have implemented UPNP networking.

The web wallet is successfully transferring shares and is looking better by the day.

We have introduced a proposal system whereby delegates may introduce and vote on alerts to be displayed to the user.  This replaces the developer alert message that is built into bitcoin and facilitates reaching consensus in the event that a hard-fork is needed in the future.   

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

Today I worked through much of the blockchain fork handling code and have unit tests passing for forks of blocks that contain no data.  I also revamped / fixed bugs with many of the bugs that would have popped up during fork reorganization.   At this point I believe that forking is mostly handled in all cases and we just need a few more unit tests to prove it. 

In the process of debugging the fork handling code I produced some chain visualization tools:



For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

Progress continues to advance as the team is getting better coordinated through the use of a development skype chat and improved process of using issues on github.  We are actively working on enhancing process to facilitate the rapid delegation of tasks to new users.

Today I implemented the fork handling algorithm at the blockchain level, but testing remains.  This evening I will be focused on producing the tests that can confirm that fork handling is working as planned.

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster


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: [Select]
blockchain_get_block <block_hash>                                       Retrieves the block header for the given block hash
blockchain_get_block_by_number <block_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 <block_num>                                    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 <name>                                       Retrieves the name record
blockchain_get_names [first] [count]                                    Returns the list of reserved names sorted alphabetically
blockchain_get_transaction <transaction_id>                             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 <node> <command>                                       Attempts add or remove <node> from the peer list or try a connection to <node> 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 <address>                                              Return information about given BitShares address.
wallet_close                                                            Closes the curent wallet if one is open.
wallet_create <wallet_name> <password>                                  Opens the wallet of the given name
wallet_create_receive_account <account_name>                            Add new account for receiving payments
wallet_create_sending_account <account_name> <account_key>              Add new account for sending payments
wallet_get_account <account_name>                                       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 <filename> <password>                             Import a BTC/PTS wallet
wallet_import_private_key <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 <wallet_name> <password>                                    Opens the wallet of the given name
wallet_open_file <wallet_file> <password>                               Opens the wallet at the given path.
wallet_register_delegate <name> <data>                                  Registeres a delegate to be voted upon by shareholders.
wallet_rename_account <current_account_name> <new_account_name>         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 <name> <data>                                       Retrieves the name record
wallet_transfer <amount> <sending_account_name> [invoice_memo] [from_account] [asset_id]   Sends given amount to the given address, assumes shares in DAC
wallet_unlock <spending_pass> <timeout>                                 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: [Select]
{
           "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. 

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

Today we reached a major milestone in our testing:

   1) Fully P2P Network Layer
   2) Fully DPOS block production
   3) Updated Blockchain Transaction / Database structure
   4) Updated manual testing instructions: http://bitshares.org/documentation/group__dpos__manual__testing.html
   5) Updated wallet backed by level_db

We will be making some renaming updates to follow a consistent convention as well as updating the wallet account tracking, most of this is done in a branch but waiting on a few last tweaks before merging into master.

We have implemented most of the logic for handling forks at the blockchain level, but have the following tasks remaining:

   1) design unit test for blockchain forks and fix any bugs discovered
   2) update P2P network code to handle synchronizing in the presence of forks.
   3) generate unit test for P2P network code fork synchronization

Once these changes are in place we will have a system that in theory could launch and be fully decentralized.  This system will be far more robust and contain far more backend functionality than the MVP we had originally planned.   So while we have slipped our MVP date, we have made great strides in system architecture and functionality.

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline dannotestein

  • Hero Member
  • *****
  • Posts: 760
    • View Profile
    • BlockTrades International
  • BitShares: btsnow
Below is a graph of a transaction propagating on the bitshares peer-to-peer network.



The test network consisted of 50 nodes that each attempt to maintain a minimum of 3 connections and a maximum of 5 (we're using reduced connectivity to get longer paths between nodes in the network). This graph shows how a transaction generated by node 0 propagates to the other nodes in the network. Dashed lines indicate unused peer connections for each node, solid directed lines indicate the actual paths taken by the packet (including the propagation time across that link). This is all taking place on a single computer, so the slowdowns on later links is due to cpu bottlenecking for block validation rather than network propagation delays.
http://blocktrades.us Fast/Safe/High-Liquidity Crypto Coin Converter

Offline bytemaster

I have started a test network for XT...  https://bitsharestalk.org/index.php?topic=4480.msg56265#msg56265

I will be taking bug reports and issuing rapid updates in the week ahead.    If you are a developer give it a shot. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

Eric has been doing some great testing on the P2P code and validating the network connectivity graph.   As part of this testing we produced this graph:



The test network consisted of 50 nodes that each attempt to maintain 8 connections with a maximum of 12.  There are various simulated pauses used during the connecting phase.

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.