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

0 Members and 1 Guest are viewing this topic.

Offline bytemaster

Some major progress has been made in the past few days as we are rapidly moving toward feature completeness.

1) I have been able to use a web interface to transfer funds between wallets
2) Nikita is making great strides to making the initial web interface presentable
3) Today I implemented support for multi-sig, cross-chain-trading, and firing delegates who have provably signed invalid statements
4) I also updated the documentation on how blockchain validation works while I was reviewing the code, so you can now read the algorithm here:

   Block Validation
   http://bitshares.org/documentation/group__block__verification__algorithm.html
   
   Transaction Validation
   http://bitshares.org/documentation/group__transaction__verification__algorithm.html

We have been working very hard to finalize the RPC API for release so that others can build on top of it.   
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 made more progress on the web interface which now supports the concept of logging in to open and decrypt your wallet.   It will also request your balance and display your user name.    In effect this is kind of like supporting multiple wallets under different users.   

Once logged in you can 'transfer' funds if you are connected to the network. 

It is not pretty, but I suspect you web wizards can fix that in no time flat.   So here is what you need to do to help me with the interface:

Edit the HTDOCS in the repository here to produce a beautiful interface that leverages the RPC calls which I will be posting shortly. 

https://github.com/BitShares/bitshares_toolkit/tree/master/programs/bts_xt/htdocs

The existing code shows everything you need to create a wallet and login.  It is VERY bare bones and needs to add a lot of extra features such as:  validating the password check (reentry) matches... verify password quality... all of which can be done in javascript in the browser prior to making the RPC call.

For those who can read the self documenting code you can view the available RPC calls here:

https://github.com/BitShares/bitshares_toolkit/blob/master/libraries/rpc/rpc_server.cpp  starting line 632

We will be adding many new calls tomorrow in an attempt to flush out every feature the GUI will require. 

To test the web interface you can use this command:

./bts_xt_client --data-dir clientc --trustee-address LEzgqiySszvp8VcZovD3tPh2jwHKWPmQD --server

For more information about doing the manual testing see this:

http://bitshares.org/documentation/group__manual__testing.html









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 Eric put a lot of effort into automated testing of multiple clients.  To write these tests he has improved the JSON-RPC interface to the clients significantly.   Additionally he produced the following document: http://bitshares.org/documentation/group__manual__testing.html  on how to perform manual testing.   I will be testing his manual testing document and improve upon it.

The manual testing is currently using the concept of a trustee to sign off on blocks.  Eventually the trustee will be replaced by the proper delegate once we are sure all of the delegate election code is solid.   So the current blockchain will elect delegates but not give them any signing authority. 

Today I updated the security of the BTS addresses to use 160 bits instead of 128 bits and removed the checksum from the binary representation.  This means that we increased security without increasing blockchain bloat.  We still use checksums for base58 representation so user generated addresses are now 7 bytes longer than before.   

Eric is setting up the unit tests so that we can have the same set of tests work with both client/server or P2P modes of operation and eventually also delegate modes.  We should have P2P fully integrated and tested this week under the trustee model.   At this point we will launch the chain with an intention of doing a hard-fork to activate DPOS once enough delegates have been elected and the system is sound.   

When we launch this chain to make BTS XT liquid, understand that if a bug is found we may reset the chain back to the snapshot.... so do not sell your positions in XT until after the code has been throughly reviewed.  During this testing phase we will be working with the exchanges to integrate our daemon and list BTS XT. 

Dan, Eric, and I are all working in the same room now in an effort to accelerate development and improve efficiency. 
« Last Edit: April 21, 2014, 10:15:39 am by cassiopaia »
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 fixed the vote accounting to be based upon percentages.

I updated the xt_server to allocate initial votes among 100 delegates evenly and initialize the initial delegate IDs.

I reverted from 128 bit asset types to 64 bit asset types... this should reduce transaction size and make it easier for javascript developers. 

I also updated the code for calculating bips from shares and have established a minimum fee per byte of '1 satoshi' the lowest minimum fee possible. 

Tomorrow I will check the wallet code for signing up to be a delegate and configuring the trusted delegate list. 

Once all the accounting is verified I will move switch the trustee out for the current delegate. 
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

Two steps forward, one step backward...

1) Initialize genesis block with delegates
2) Blockchain detects initial delegate balances
3) Wallet now scans and detects delegates for which it has the keys
4) Wallet prints out delegates

Simulation and unit tests showed everything to be working but detected a small problem in the accounting:

1) Due to transaction fees, the number of future votes is always less than the number of past votes and thus delegates end up with perpetual votes that cannot be removed.  This is a problem.

After talking with Stan he had the great idea to do accounting for votes in BIPS instead of shares.  Initial white board calculations show that this will solve the problem.  Tomorrow I will update the accounting for this.

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 spent time on the DPOS delegate vote tracking.  Votes now transfer between delegates and the wallet randomly selects one of their delegates each time a transaction is made.  This is a temporary fix to keep delegates load balanced on votes.

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 are making daily progress on this code.  P2P code is being integrated by Dan N and Eric and I am working on DPOS.   
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 met with Dan N. and Eric F. and they demonstrated the P2P code working nicely.  They will be integrating that work with the blockchain work I have done.   We are retargeting the Keyhotee team to focus on the GUI for BitShares XT wallet.   

We then had a solid discussion on Delegated Proof of Stake and I turned that into a white paper.

http://107.170.30.182/security/delegated-proof-of-stake.php
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 just posted a draft presentation of the talk for NYC and will be returning to the code tomorrow.  The recent developments regarding the design of the proof of work system to move beyond a single notary/trustee to a board of directors elected by the shareholders has been very fruitful and given me confidence that once again BTS X will be as fast as ripple while being more secure and truly decentralized.   It has been a long road and I am very grateful for everyone on this forum who has helped me think through and consider these difficult design decisions. 

For BTS XT I will keep a single trustee model with a plan to upgrade it later so that I do not hinder making XT users liquid.   I still plan on launching a test-test for BTS XT prior to NYC and then launching the final BTS XT network when I get back.  I didn't want any major emergencies while I was on travel and unable to respond in a timely manner.
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 had some major revelations regarding the security model of the blockchain and thus managed to bypass the whole mining thing entirely.   I have posted my thoughts on this here: https://bitsharestalk.org/index.php?topic=3865.0

Essentially the role of producing a block can be left to trustee, the security is provided by TaPOS, and the trustee can be voted out at any time by the shareholders if they produce a single alternative block or are found to be rejecting valid transactions as part of a denial of service attack.    The trustee is an unpaid position and could operate behind a TOR node.   A DAC could set up a chain of command for trustees to handle rapid fail-over in the event that one trustee violates the trust.

As a result of this change we can now have validation times as fast as Ripple, no need to worry about chain forks, and yet the network can easily handle reallocation of the trustee position should that be necessary.

As a trustee you cannot double spend (you will be caught and fired).
As a trustee you cannot perform Denial of Service without being caught and fired.

This will be particularly helpful for BitShares X where attacks on block generation could really mess with the system and where chain forks are much more painful than they are with Bitcoin.

With these changes in place I can bypass a whole lot of complex code that is most likely to be the source of security concerns.  Initial testing shows that aside from some user interface and RPC updates BitShares XT is very close to being able to launch making the Feb 28th snapshot liquid. 
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

By popular demand I am creating this thread to facilitate tracking the status of BitShares X development.

At this time BitShares X has already had its snapshot taken (Feb 28th, 2014) and I am in the process of making that snapshot liquid with a chain that allows trading of shares and testing of the TaPOS system.

A quick summary of the reasons for delay after the snapshot:
1) Multiple market manipulation attacks were discovered that require protective measures
       -  the algorithm for determining when trading can begin based upon market depth must be implemented
       -  maximum price movement per block must be implemented
2) The ability to pay fees in any BitAsset seems to be a critical feature that was missing.
3) The ability to cover short positions using the collateral in the short rather than external funds should be in the base version.

While we are working on those features we also decided that it would be better to test the system in phases and increase functionality over time.  We decided to refactor the code to make it extensible for new DACs which are being developed in parallel (Thanks Toast & HackFisher).   This refactoring helps accelerate overall productivity at the expense of a couple of weeks delay in launch.    It is already paying dividends though so we think it was a good choice.

I will continue to post updates on the progress of BitShares X here.  This thread is locked to 3rd party comments, if you have any feedback to discuss this thread, please use the old BitShares X status update thread for general discussion.

Old Thread: https://bitsharestalk.org/index.php?topic=1890.0

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.