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:

    Contest
     — 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

    Sigmate
     — Simplify initialization API
     — Removing naming system; just use address array
     — Add option for keystore password
     — Updated tests

    Solidity Boilerplate
     — Integrate contest / doxity / sigmate
     —EIP20 (con)tests inspired by Consensys’

    DGX 2.0
     — 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)

    Greetings!
    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:

    Doxity 0.3.0

    https://digixglobal.github.io/DigixMath/docs/DigixMath/For
    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 calls).In
    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

    Example: https://github.com/DigixGlobal/DigixMathDuring
    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
    source code.We
    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
    staple tool for any javascript dev. In time, hopefully it’ll be the same
    for any Solidity dev, and we’ll have tonnes of easily-shared
    pre-deployed Solidity contracts that devs can make use from.


    Sigmate 0.2.0

    https://github.com/DigixGlobal/sigmateSigmate
    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.


    Migration Tool

    https://digixglobal.github.io/wallet-migration/migrate/Finally,
    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 V3 style, which is compatible with Geth and
    MyEtherWallet.







  • Digix Seattle Meetup Presentation Videos — Nov 2016

    Solidity Contract patterns and security — presentation by Anthony Eufemio (Digix CTO)



    Javascript testing framework for Solidity smart contracts — presentation by Chris Hitchcott (Digix Core Dev)


    Special Thanks: Kenny Rowe from MakerDAO for editing the videos




  • Announcing Spectrum — Full Gamut Lightsuite for Ethereum Blockchains


    Digix
    is providing a new UX solution for interacting with Ethereum with the
    purpose of increasing future adoption of DGX and the wider ecosystem.


    Lightwhat?

    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
    broadcasting transactions.At
    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

    Over
    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.

    Feature Overview

    Spectrum
    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!)

    Adoption First

    The
    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

    Session
    backups include accounts configuration and Ethereum private keys (in
    encrypted geth-compatible format), as well as application state and
    transaction history.




    It lets
    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
    the transaction.

    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.

    • JSON
    • Mnemonic
    • Private Key

    Session Exports compatible with Spectrum, optionally encrypted

    • LocalStorage
    • JSON
    • Cloud Backup (google/dropbox)
    • IPFS
    • Swarm



    Multi-Nodes

    Users
    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).



    We’re
    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

    Spectrum’s
    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.

    Dapplets

    Spectrum
    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
    long-term experience.Dapplets
    are lazy-loaded on-demand to reduce the initial bundle size and give
    users an optimal experience for their use requirements.

    Digix Dapplets
    One of the main reasons for the creation of spectrum is to facilitate
    future official Digix projects, including UI for upcoming contracts and
    services:

    • DGD Governance / Voting
    • DGX Reward Claims
    • Aegis Vault
    • TBA Future Digix Services

    Dapplet Registry
    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)
    • MultiSig
    • 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

    Custom Registries
    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).

    Technology

    There
    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

    React Components

    • Reusable UI Components (e.g. Account Selector)
    • Wide Developer Adoption
    • Excellent Developer Toolkit
    • Mature Package Community

    Webpack Bundler

    • Aggressive bundle optimisation & partitioning
    • Seamlessly deploy to multiple environments
    • Ubiquitous client-only deployments (Github / IPFS / Serverless)

    ProviderEngine

    • Dynamic provider and accounts injection per-container
    • Transaction signing UI plugins/middleware
    • Custom Node Config: Ethereum, Ropsten, Private Chains

    Web3-Redux

    One
    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
    as such:



    Web3-redux
    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.

    Semantic UI

    SUI
    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

    Roadmap

    Here’s
    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

    Fandango

    • i18n (Chinese esp.)
    • QR code scanner for mobile
    • Hardware wallet support

    Majorelle

    • Community dapplet registry contract
    • Digix governance dapplet
    • 3rd party services dapplets
    • Dapplet develop toolkit

    Harlequin

    • 2FA signing
    • Swarm Backup?
    • Raiden network?

    Aureolin

    • Chrome extension & Electron/Cordova apps

    Carmine

    • TBA Premium Services

    Trivia

    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.

    Thank You

    One
    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:
    Development
    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.

    https://youtu.be/8Jo-fvcTCOM

    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

    0_1483177397949_daosp.png
    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.

    Community Organizing

    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).

    0_1483177723067_1 EYRnIIWgrxio0iNHP69nlw.png
    606KB bundle

    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)

    Project github.com:DigixGlobal/core2-contracts

    • b28a1cb — implement updated truffle imports api
    • 07cc708 — stateless import
    • 03105fc — imports script for console
    • 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

    Project github.com:DigixGlobal/sigmate

    • 1a204b8 — update deps (esp. provider engine), minor refactor

    Project github.com:DigixGlobal/spectrum-core

    • 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

    Project github.com:DigixGlobal/spectrum-ui

    • 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,

    Project github.com:DigixGlobal/cacp-contracts

    • 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

    Project github.com:DigixGlobal/solidity-core-libraries

    • 61269f8 — bump version
    • ba637ad — update testnet provider
    • 2742127 — update documentation
    • 02be94b — ignore error log

Log in to reply
 

Looks like your connection to Cryptocentral was lost, please wait while we try to reconnect.