New announcement of mastercoin-tools !!!tl;dr:
http://masterchain.infoyou can even try it with your tablet and mobile phone ;-)
Horrey!
Grimentz
https://bitcointalksearch.org/user/grimentz-153554, a known html5 specialist, has joined the mastercoin-tools team and now we are proud to announce
http://masterchain.infoIt was hard work, but I think you can see that.
- Fully distributed architecture - no need for database or webserver.
- You can use the site offline and update it locally on request.
- Sync to bitcoin network is done using sx which connects to some public obelisk bitcoin node.
- Sending a transaction directly using Send supports offline wallets.
- There is an API section and a Download section for snapshot of parsed data
It is important to note that for "simple send", the "basic" variant is supported as well as "multisig simple" (see MIP1
https://github.com/grazcoin/mastercoin-tools#mastercoin-improvement-proposal-mip1. The previous multisig (with 4 outputs) is not yet implemented. It means currently a fork in parsing. I would like to re-open the discussion on the "multisig simple" in another thread.
Can you explain the architecture of masterchest? How does it work in a completely decentralized manner without a DB or webserver?
On the client-side of masterchain (
http://masterchain.info) we use AngularJS. AngularJS is a javascript library that relieves the server backend from HTML-rendering responsibilities. The dynamic data, sent as json, is rendered on the client-side in plain HTML + some customized tags. Using AngularJS we were able to create a prototype of our site within days, so I had plenty of time to improve the usability of the site (solid graphic design, responsive design using bootstrap so the site would be usable on tablets and smart phones and some "eye candies".) I hope you would like the result.
Can you give me some details?
json is fine, but what powers that up? Is there a central stateful server? (Since there is no database)
That server holds the parsed mastercoin blockchain?
What happens when that server fails?
Is there redundancy?
If you start a new backend server, how long does it need to restart? Does it need to reparse the blockchain?
First of all I would like to note that we're talking about master
chain.info and not masterchest.info
Just for the record:
masterchain.info domain was created on 05-Sep-2013
masterchest.info domain was created on 16-Sep-2013
The
distributed architecture uses a new type of bitcoin node. Not the "satoshi reference client", but an obelisk server. The obelisk server implements the bitcoin protocol using libbitcoin and participates in the network like other nodes. The great thing about this new server is that you can ask it complicated questions about the blockchain, e.g. get-history of an address, monitor and address, get-utxo for a specific address, fetch specific transaction, etc. It means that there is no need to hold a database and parse the blockchain for bitcoin information.
You can get more info about the possibilities of this new architecture on
http://bitcoinmagazine.com/6234/what-libbitcoin-and-sx-are-and-why-they-matter/The
offline part is achieved using parsed data as json in a local directory (described also in
http://masterchain.info/API.html )
These json are either generated using the given python code or they are simply retrieved as a snapshot without code running at all.
At any moment, when having network connectivity, one can sync with the network by running parse and validate (e.g. via cron).
It is possible then to browse the local directory, or put it statically on a web server. Javascript makes the magic - see
https://bitcointalksearch.org/topic/m.3327669The
stand-alone send is actually a bitcoin client implemented using the sx tool. It asks for unspent transaction outputs for a specific address, creates the transaction (with the mastercoin rules), and either asks for a signature or gives the transaction unsigned, for offline signing. There is the option to broadcast the signed transaction or send it directly to any specific bitcoin node (also to a standard "satoshi reference"). Obviously for the final sending of the transaction, network connectivity is required.
I hope this answers most questions about backend and redundancy - someone else solved that
Edit: more on redundancy - the obelisk server (
https://libbitcoin.dyne.org/index.html) includes a load balancer which handles multiple workers - each has its own blockchain. If for some reason a worker dies, the other workers are used transparently, and the server users don't even notice.