Digix Core Dev Update News
Digix Core Dev Update Nov-2016
Chris Hitchcott (Core Dev)
This week I continued on unit testing whilst sharpening Digix’s testing toolkit. There were a series of upgrades to existing projects we released and the DGX 2.0 test suite.
I’ll keep it simple this week by roughly outlining my completed tasks:
— Redesigned API: more powerful and readable
— `deploy`, `call`, `tx`, `watch` methods
— `it` and `before` blocks for arbitrary async scripting between steps
— Fix edge case with TestRPC event (related issue)
— Updated tests
— Simplify initialization API
— Removing naming system; just use address array
— Add option for keystore password
— Updated tests
— Integrate contest / doxity / sigmate
— EIP20 (con)tests inspired by Consensys’
— Update contest api
— Additional tests
Follow us on Github
Digix-Progress Update 17/11/16
Seattle Digix Presentation
Anthony Eufemio and Chris Hitchcott presented on smart contract architecture and the suite of dev tools created at Digix respectively last week. The video is currently being edited by the meet up organizers in Seattle, and will be posted as soon as it is ready.
MAS Fintech Annual Awards, 14 to 18 Nov 2016
3 Blockchain companies were in the running amongst 40 Finalists in the Annual Fintech Awards 2016 in Singapore. Namely, they were Attores, KeyChain, Digix. We hoped that at least one blockchain company would be recognized for their work but none of us clinched an award this time round.
Fintech Awards Night
Digix Mentioned at the awards
2 Meetups held this week
2 meetups were ran this week, co organized by Digix. Gavin from Ethcore provided an introduction to Parity to the Singapore community this Tuesday. The video of his presentation is linked here. Special thanks to Attores for providing the recording.
Gavin on Parity at the Ethereum Singapore Meetup, video:
We managed to squeeze a quick dinner with the Ethcore team to thank them for their continual work and efforts.
Dev Work — Migration Wallet
We have begun preparing a migration wallet for DGX 1.0 users. This will allow users to use their current DGX 1.0 wallets for DGX 2.0.
More information will be published in a separate blogpost. Thank you.
Digix Core Dev Update 24/ 11 / 16
Chris Hitchcott (Digix Core Dev)
Chris here to once again update you with this week’s development
activities. We’ve been busy with continued work on the toolchain and
have a few new releases that we’re using in our stack. In order of
descending ‘coolness’, here they are:
me the most exciting thing to announce is the update to Doxity that now
integrates more closely with truffle. So closely, in fact, that if a
contract has been deployed with truffle, the generated documentation
will contain an interactive GUI so anyone visiting your documentation
site can play around with your live deployed contracts — (don’t worry,
no transactions, just
case you didn’t know Doxity is our recently released tool that
automatically generates static HTML webpages from natspec-commented
solidity files. Previously this was purely as a nice way of viewing the
comments on a published website.But
now we’ve gone ahead and made it much cooler by having it interact with
real, deployed, on-chain smart contracts. Check out the demo
site — which has contracts deployed to morden that you can interact with
by filling in the input boxes. Thanks to infura for the hosted node.
Truffle NPM Libraries
devcon I learned about truffle’s 3.0 beta release which includes
support for npm-packaged solidity files. Basically, this allows us to
leverage node’s package manager with solidity contracts, whilst keeping
track of deployment addresses for different network.We’ve
now implemented this feature and will be using it for the release for
the Digix core contracts. The benefit here is that both Digix and
non-Digix developers can extremely easily import our contracts (and even
deployed contracts) into their project without having to copy the
hope using this approach will encourage synergies and code-sharing
within the solidity ecosystem, and be a foundation for future
development patterns similar to this. Peronally I believe that node’s
success is closely tied with the excellent NPM, which has become a
for any Solidity dev, and we’ll have tonnes of easily-shared
pre-deployed Solidity contracts that devs can make use from.
is a tool that was being used for keystore management in our core
project, signing transactions within the test environment rather than
the node. We’ve explained why this is cool in a previous post.This
week, along with the aforementioned truffle integration, sigmate has
been updated to better integrate with truffle — hooking in at the config
file level rather than the test/deploy/execution environment. This
makes for a more vanilla-truffle-like experience when running tests and
relegates the use of Sigmate to a single line of code in truffle.js.Sigmate
now also uses the new wallet keystore format (with a custom
ProviderEngine plugin to handle multiple accounts), and we’ve introduced
a CLI tool for generating new keystores with minimal effort.
we’ve created a little tool to help with the release of 2.0 — a wallet
migration tool that will convert old-style Digix lightwallet keystore
into the fancy new
V3style, which is compatible with Geth and
Digix Seattle Meetup Presentation Videos — Nov 2016
Solidity Contract patterns and security — presentation by Anthony Eufemio (Digix CTO)
Special Thanks: Kenny Rowe from MakerDAO for editing the videos
Announcing Spectrum — Full Gamut Lightsuite for Ethereum Blockchains
is providing a new UX solution for interacting with Ethereum with the
purpose of increasing future adoption of DGX and the wider ecosystem.
What is a Lightsuite? It’s a word invented to describe that what wasn’t fully encapsulated by the term Lightwallet.Basically,
a Lightwallet in the case of Ethereum is a piece of software that
provides an interface for users to interact with a blockchain by
creating accounts, connecting to a node, reading chain data, signing and
some point, though, a Lightwallet gets too many features to be properly
considered a ‘wallet’ anymore. The Mist browser, for instance, is more
of a multi-tool than a wallet. It’s got an address bar and everything,
so we call that a ‘browser’. But what if it hasn’t got an address bar?Well,
similar to a Mist, a Lightsuite is a full spectrum of tools for
Ethereum — and just like a Lightwallet, they’re available in the
browser; it’s a user interface for connecting to Ethereum by via a
hosted (or local) node.
Let there be Light
the last couple of weeks I’ve been working on the groundwork for a
Lightsuite called Spectrum, which we at Digix will be using to help the
development of the Ethereum ecosystem and for use in future Digix and
third party projects.The
main goal of the project is to create a tool that provides the best
possible user experience for the full spectrum of users; investors,
developers and casual. One critical requirement is be a ‘zero-install’
entry point (i.e. web-based) for zero-friction welcome to Ethereum.For
developers (and in particular us at Digix), it also means more rapid
development of dapps — no accounts or web3 state management to rewrite,
so new DigixDAO experiences can be rolled out faster than ever, and will
be one-click away from existing Spectrum users.There
are a number of tools existing that tick some of those boxes, but there
are currently no offerings that cover this full spectrum of ‘Best
Possible UX’ options.Please note, screenshots in this announcement are early alpha and may not fully reflect the completed project.
achieves its UX goal through a combination of technologies that marry
the accessibility of MyEtherWallet, the portability of Jaxx and the dapp
store platform vision of Mist/Parity.
Might not be 100% accurate when you read this; please let me know when it becomes outdated!)
ultimate goal of Spectrum is to provide a low-barrier easy to use
experience whilst still providing a powerful set of tools. There are a
few key features in terms of both accessibility and UX design that
together ensure that a wider number of users can intuitively make use of
Ethereum.Works everywhere instantly with no installs
By connecting to Ethereum using third party nodes and signing
transactions on the client, an acceptable balance of security and
convenience is achieved without requiring a central trusted service.
Designed to work fully featured in any modern browser and device, using
Spectrum is as simple as visiting a website, and requires no waiting for
the blockchain to re-sync.Travel with your application state
Depending on your security/convenience tolerance, Spectrum’s encrypted
app-state backup system allows you to sync your accounts, transactions
and other data with a number of storage adapters with ease, and share
individual app sessions with multiple devices using JSON File, Google
Drive, Dropbox, IPFS and eventually, Swarm.Responsive design The Semantic UI responsive grid is used extensively to provide an optimized user experience on mobile, desktop and tablet.1st class support for offline transaction signing Generate data with every transaction for offline signing, allowing for a seamless cold-storage experience.
Sessions and Keystores
backups include accounts configuration and Ethereum private keys (in
encrypted geth-compatible format), as well as application state and
you easily divide your portfolio up into different security groups
depending on use case, and keeps the (already encrypted) wallets along
with the account-specific application data in the same place encrypted
with AES256 + optional custom entropy.In
app storage and runtime state, keystores are always stored as the
standard, serialized, encrypted v3 objects. A secret key that is not
saved in persistent state is required to be entered to decrypt and sign
Various storage adapters are available for backup/restoring of sessions, as well as standard exporting for keystores.
Keystore Exports compatible with Spectrum, Geth, MyEtherWallet, etc.
- Private Key
Session Exports compatible with Spectrum, optionally encrypted
- Cloud Backup (google/dropbox)
can configure multiple networks and providers they connect to in-app,
giving complete flexibility during testing, production and private
deployments. Either connect to a local geth/parity service or connect to
a remote node — be it private, premium, or public (although defaults
aren’t confirmed yet).
hoping to work with some existing node providers (such as Infura, Azure,
etc) to provide a service for Spectrum users by default on Ethereum
Mainnet and Testnet.
Plugins & Middleware
dynamic provider creation and redux architecture allows for powerful,
unobtrusive user experiences; particularly for signing transactions.
Developers can register custom signing components that provide custom UI
for different types of signing — be it Hardware wallets, 2FA contracts,
or other third party services.
comes complete with a selection of official and community
‘dapplets’ — fully fledged apps that run within React components in the
Spectrum environment and use its accounts system to sign transactions
(whilst seamlessly hooking into any transaction signing plugins).Spectrum
provides dapplet developers with an intuitive web3-style syntax for
hooking into the accounts system and managing web3 state, with a custom
redux environment injected for each dapplet. Dapplet state can be saved
persistently between sessions so authors can deliver a superior
are lazy-loaded on-demand to reduce the initial bundle size and give
users an optimal experience for their use requirements.
One of the main reasons for the creation of spectrum is to facilitate
future official Digix projects, including UI for upcoming contracts and
- DGD Governance / Voting
- DGX Reward Claims
- Aegis Vault
- TBA Future Digix Services
Initially an official list of dapplets published by Digix will be added
to a single Spectrum dapplet/plugin registry, including standard types:
- Tokens (EIP20 and misc. types; pre-populated / custom)
- 2FA Signing
- Scriptable actions (e.g. tumbling)
- Custom token signer (e.g. nano ledger, trezor, etc.)
- Generic contract/ABI interaction
- With a bit of luck, browser-solidity
In future releases the registry contract will be updated to enable
community dapplets with content verified by author address and content
hash, and eventually custom registries (pending a security review).
has been a lot of advancements in the world of web application
development in the last year or so, and having migrated away from
Meteor/Blaze earlier this year, I became familiar with a delightful
toolset that plays particular nicely with client-side apps. Having used
it for around a year, I was confident that it was the best pick for a
complex modern application like Spectrum.Ticking
all of the boxes can only be achieved with a specific tech stack, which
will be open source and offer a free commercial use license.
ES6 HTML5 Web App
- Offline support
- Optional encrypted LocalStorage sessions
- Modern, composable, extendable, tree-shakeable, importable architecture
- Modular separation of core/UI logic
- Component Lazy Loading
- Reusable UI Components (e.g. Account Selector)
- Wide Developer Adoption
- Excellent Developer Toolkit
- Mature Package Community
- Aggressive bundle optimisation & partitioning
- Seamlessly deploy to multiple environments
- Ubiquitous client-only deployments (Github / IPFS / Serverless)
- Dynamic provider and accounts injection per-container
- Transaction signing UI plugins/middleware
- Custom Node Config: Ethereum, Ropsten, Private Chains
major component is web3-redux, a library I’ve been working on as part
of the spectrum project. I’m particularly happy with it’s integration
with the redux architecture by using a familiar web3 api. It can be used
does a bunch of wiring up in the background to handle the actions and
reducers for web3 requests, and ties them all behind the same-style web3
API for use in redux apps.
- Simplified web3 integration with reactive pseudo-syncronous style
- Injected redux state/methods with traditional web3 api
- Promisified contracts/transactions
- Intelligent fetching/caching middleware
- Other potential middleware plugins options in the future
Stay tuned for more on web3-redux as development progresses.
is our favourite CSS framework, and it’s recently come with a new react
library which makes it even more delightful to work with, and along
with some custom components, it’ll be the underlying fabric for the
Spectrum GTK.This might deserve it’s own blog post, but i’ll summarise
- Beautifully crafted components
- Fairly common usage in the wild
- Standardised UI for intuitive usage
- Also standard between dapplets (think myspace -> facebook)
- Declarative API for developers
- Lightning fast React library; no jQuery
- Theme Manager w/ Community Themes
a rough, best-case-scenario estimate of progress. We’ll be open
sourcing after alpha release, so you can follow development on github.
Alpha (Next Week)
- LocalStorage Sessions
- JSON, Mnemonic, Private Key Import/Export
- Quick ETH Transfer
- Token Transfer
Beta (Jan/Feb 2017)
- Address Book
- Cloud Backup
- IPFS Backup
- Hard-coded dapplet regsitry
- Theme Manager
- Transaction signing plugins
- Cold storage transactions
Stable 1.0 (Q1 2017 + beyond)
- Security Review
- End-to-end test coverage
- i18n (Chinese esp.)
- QR code scanner for mobile
- Hardware wallet support
- Community dapplet registry contract
- Digix governance dapplet
- 3rd party services dapplets
- Dapplet develop toolkit
- 2FA signing
- Swarm Backup?
- Raiden network?
- Chrome extension & Electron/Cordova apps
- TBA Premium Services
Why Sprectrum? Apart from the reference to all-encompassing feature set, it was originally an ode to ‘Electrum’ and is a play on Lightwallet. Also it sounds badass and opens up the opportunity for a slick Ethereum Icon / ‘Dark Side of the Moon’ mashup logo.
last thing I wanted to do was a give a shoutout to all the Digix fans
and DGD holders who have continued to show their support and patience
whilst we build these tools in the right way. For the future. I hope
this contributes to the Metropolis vision and as Spectrum evolves.I welcome all your feedback!Catch you next week with an alpha demo.To Note:
on spectrum will not affect progress on DGX 2.0, in fact, it will have a
positive effect on DGX 2.0 and DigixDAO as all our DAO governance UI
will be on Spectrum.
Spectrum Pre-Alpha Demo — New Year Eve Special
Happy holidays everyone!
This week I’ve been completing the additional functionality for the alpha demo of Spectrum promised last week. We’re pleased to announce a demo of spectrum is available — both as a video and live demo website.
For a visual step-by-step run through of the current functionality, please check out this video below.
Please be aware that the current implementation is most certainly in the “MVP Technical Demo” state and does in no way reflect the final UX or feature set — it does showcase the bare bones core functionality of Spectrum, including multiple accounts, multiple networks, persistent sessions, transaction signing, and a rudimentary but functional token transfer Dapplet. There may be yet-to-be-descovered bugs and the ‘optimised network communication’ middleware hasn’t been implemented yet. We’re also aware of an issue with localStorage when using multiple tabs, which will be addressed before the next release.
Or, you can have a play yourself at the following URL (http://spectrum-alpha.digixdev.com/). As always, with pre-release software, assume ZERO security at the moment — there are no guarantees about not losing funds sent to Spectrum accounts! Additionally, the Ethereum nodes are currently set by default to Infura, and there are no guarantees they will remain online (we are currently discussing long term support); you can always configure Spectrum to use an alternative.
Since last week’s announcement, a couple of additional opportunities have identified that we think will add to the success of the project.
Even better mobile support
Spectrum Mobile Support
A relatively little-known feature of both iOS Safari and Android Chrome is the ability to add web-apps to the home screen and have them act like native applications and have them run even without an internet connection. Spectrum will implement these features to give an even better user experience for mobile users who are used to using apps rather than traditional websites. We’re also adding QR-code links and scanning to our feature list to enable super-easy payments and generic dapplet transaction signing.
After announcing Spectrum last week a number of parties were interested in helping contribute in various ways including dapplet porting and contributing to the core codebase. As such, the coming sprint will be focused on creating a community-orientated repository including project management tools, dapplet creation tutorials, documentation and of course a bit of refactoring to make the source code ready for public use.
We’ve decided to set this up before the 1.0 release to encourage early developer adoption. If you are interested in contributing to Spectrum, please stand by for future announcement, and if you have previously reached out, I’ll be in touch with more details soon.
Webpack is freaking awesome
One thing that wasn’t noticed until I got to the bundling stage of deploying the demo was how fantastic a choice Webpack was as the build pipeline for this project.
Thanks to Webpack’s aggressive merging and ES6 tree-shaking functionality, we present to you spectrum in a minuscule 606KB gzipped bundle (which, considering it includes all the crypto libraries is impressive).
Beyond this ‘default’ config, there are even more opportunities to fine-tune Webpack to achieve insanely small (possible <100KB initial payload, with feature-specific lazy-loading) load times for the best possible UX. I am now officially a Webpack zealot; if you are ever considering building a web application, give it a try!
2017: The Year of Metropolis
With an increasing number of higher-level applications coming out in 2017 we’re, really excited to be contributing to the Metropolis vision of Ethereum in the coming year. I wish all our readers a happy new years celebration and prosperous 2017. We at Digix are certainly looking forward to it!
Core Dev Update : 7 Jan 2017
We have several requests to emulate Augur’s developmental updates which shows a concise snapshot of their current progress.
We think that Augur came up with a good idea to help supporters keep abreast of their developments, hence Digix will follow suit with our own version this week onwards. Our developer commits will have more descriptive comments moving forward as they had been for internal / private references. It also allows Digix developers to provide updates on the fly without needing to spend additional man hours consolidating a new set of report every week.
Below is a short snippet on what has been worked on for the 1st week of 2017. (Report link can also be found here)
- b28a1cb — implement updated truffle
- 07cc708 — stateless import
- 03105fc — imports script for
- 5c5eb1d — update testnet network & used fixed truffle version
- ca9c860 — WIP console issue
- 56c0924 — sort out truffle imports
- 4ff273e — setProvider issue WIP
- 0c82128 — WIP — morden node error
- 307e909 — update package name to use private npm
- 1a204b8 — update deps (esp. provider engine), minor refactor
- 9bd4bdb — add exportKeystore
- 402a993 — refactor imports, import private keys
- cc192f1 — update network config
- 618d65a — refactor, contractConnect
- 3a3c6a6 — dynamic providers
- 89ada28 — redux hooked provider WIP
- 3eac1af — [wip] use multiple providers in bindConnect
- d3f5b07 — import/export json working
- 1f90bbb — update default state
- 2d5eca9 — add setState
- c3f2d22 — completed localStorage backup/restore implementation
- eaf7be5 — minor UI fixes
- 3576b01 — fix restore json file on mobile
- d70c3f3 — EIP20 Tokens MVP
- d811125 — network config, dynamic networks
- 5497015 — working tx signing with quick-transfer
- 8b7383c — fix up tokenTrasnfer
- 375c80c — working multi-chain accounts
- a7810ac — backup/restore ls/json
- ad20397 — better guest mode handling
- 535df95 — big backup/restore refactor & full LS implementation,
- 502c7d0 — change morden provider
- 7cca88d — bump version
- fe8861c — update package name
- 175cd47 — change package name
- eb748a8 — Merge branch ‘master’ of github.com:DigixGlobal/cacp-contracts
- a0a7495 — add some documentation
- d0dee1b — Set theme jekyll-theme-cayman
- 43f6be3 — add some documentation
- 17ea36f — tests WIP
- 61269f8 — bump version
- ba637ad — update testnet provider
- 2742127 — update documentation
- 02be94b — ignore error log
- b28a1cb — implement updated truffle