Digix Dev Update Jun 3 2017 — Unabridged

KC Chng (CEO)

ETC Refund

We are happy that the refund process has executed as expected. To any users who still have issues redeeming their rightful ownership of ETC due to the unintended consequences of the hard fork, please ping us on Slack or reddit, and we will do our best to respond to you as soon as we can.

Some of the common issues encountered and clarifications:

1) not enough ETC gas for calling the redemption function. Please make sure you have enough ETC to do so.

2) DGD-Redemption tokens are distributed to the same address (where DGDs are kept on the main chain at block #3,800,000) on the classic chain. When you generate your private keys on the main chain, you also have ownership of the same keys and public address on the classic chain.

3) If you are using Mew with a Trezor or Ledger Nano , please make sure your HD Derivation path is similar on the ETC chain as it is on the ETH chain.

4) Refund will be ongoing for a year before DGD token holders decide what to do with the unclaimed balances.

5) Please see the guide if you have not already done so at https://github.com/DigixGlobal/etc-redemption/blob/master/guide/GUIDE.md

Regular development updates will resume as the main message for the past 2 weeks was to have everyone aware and focused on the ETC refund. We have also included what was done for the past 2 weeks as well in this week’s update.

Path forward

Concurrently with the security audit done by Smartpool founders, we are working on integrating the front end of our marketplace with our core contracts. We expect minor changes, if not, none, to our core contracts.

Digix has also begun looking for additional core developers to join our team. Stay tuned for further announcement of new hires within the next 2 months.

Several new partnerships are in the works in preparation for the launch of our marketplace. We will follow up with some new announcements this coming week.

Community building efforts

Shaun Djie, Digix’s CCO, took the time to present Digix’s journey and tech stack at a Microsoft’s Start Up Day sponsored event last week at BASH@71 Ayer Rajah. We were very happy to see that the number of blockchain enthusiasts growing in Singapore.


Thank you for the kind words Andrew

We also hosted Indorse and Status.im at the SGI offices to a full turnout last week.

At SGInnovate

This coming monday, Michael Wheuler from INFURA & MetaMask would be presenting their product at a ConsenSys Asia Pacific sponsored event. Please catch the live stream at https://www.youtube.com/watch?v=N784-1G6ZZY&ab_channel=DigixGlobal

Anthony Eufemio (CTO)

Security Audits

The security audits are currently ongoing with Smartpool.io. We have been in private discussions about the codebase and working closely together to complete this very important step before our launch.

Code Quality Audits

We are going to be engaging DappHub to perform a separate audit of our codebase that deals with the code quality. The focus of this audit is not to find security vulnerabilities which is the scope of the security audits performed by SmartPool but to ensure that our codebase is coherent, has good test coverage, and bug free.

Marketplace Update

This week we will be describing the set of user stories that will be needed to complete the development of the Digix Gold Marketplace. The Marketplace consists of a few server side APIs that allow us to handle customer physical gold bar orders, uploading and approval of KYC documents, as well as the back-office services which will be consumed by the Spectrum enhanced version of our Marketplace.

Chris Hitchcott (Digix Core Dev)


What a fun packed week it’s been. Many projects worked on, including the ETC Redemption Dry Run deployment and code review (thanks Vincent), Digix Explorer Interface (+ integration with Vendor & Custodian views), IPFS coolness and general tweaking and testing.

Let’s start off with IPFS: one nice improvement is that we’re figured out a better way of storing proof of asset docs on IPFS. Admittedly kind of obvious, instead of saving the hash of the PoA document on chain, we’re now saving the hash of a JSON file containing metadata to (potentially many) other data fields, including other IPFS content hashes. This linked data structure means we get infinite storage and flexibility in terms of what is uploaded as proof of asset (such as the ability to store picture galleries, videos, etc) with infinite future-poofing and no extra Solidity. Nice pattern!

One more IPFS related thing is that we’re going to be publishing deployments of spectrum on IPFS now and then as we roll out test DGX 2.0 features (like the assets explorer).

Which brings me to the assets explorer: I’ve completed an MVP for the explorer view and actions in the DGX 2.0 PoA system. Multiple categories, ID searching, Pagination, Sorting, it has it all.

It’s also more closely integrated with the other Vendor and Custodian views, which also had an API update, and inherits the pagination and sorting.

IPFS DEPLOYED DEMO RELEASE: https://gateway.ipfs.io/ipfs/QmPFrQEtrF9gtYAMFFdGRnPw3Bos5aMPCVEeZQjTdoxBeN/

Next week I’ll be working on integrating a multisig wallet into Spectrum, not just as a dapplet, but as an *account type*, which means it’ll be cleanly integrated into just about every transaction type, and provide a really neat UI for multisig transactions, which can be initiated by any of the existing keystore types (including hardware wallets).

MAY 19

This week I have been implementing the MultiSig keystore type for Spectrum, using Consensys’ https://github.com/ConsenSys/MultiSigWallet contract (which is being used by the Golem team to store ~440,000+ ETH).

This feature allows for the deployment and management of this contract, and seamlessly integrates into Spectrum’s existing accounts system. Uniquely, the multisig keystore type will automatically ‘proxy’ a given transaction, automatically finding a relevant owner’s signing address (to initiate the transaction) and transforming the transaction data formatted to submit to the Multisig. This makes signing transactions via a the multisig contract wallet a lot simpler to end users, as they never have to meddle around with contract data. It also works in combination with the Ledger nano, so you can easily sign super securely (if you are insanely paranoid you could even sign via ledger via a cold account via a multisig).

Whilst this integration is is functionally complete, unfortunately I’ve not been able to finish the styling for everything (still have some JSON output that needs to be tabulated) and have an event on Friday, so I will leave the polishing until Sunday (and will release another distribution on IPFS). In the meantime, please see the WIP screenshots below:

New Keystore Creation Menu

MultiSigs are added to keystores list like a normal account

Click the account config to manage Multisig Contract Config, Owners and Transactions (paginated and categorised)

When signing with the Multisig keystore type, users can select which ‘owner’ account initiates the transaction, and UI is displayed based on the selected address’ keystore type.

Finally, I also had a bit of an experiment day last Sunday and came up with a very simple proof of concept called DGXi — the “i” stands for interface. This contract is a token wrapper for DGX, that allows people to hold an value that decreases in value over time, but keeps the same number — kind of the opposite of DGX, which decreases in number but remains 1:1 gold value.

There are no plans to do anything with this concept as of yet, but it could be very useful for exchanges and dapps that don’t want to implement their own demurrage fee calculations (as it allows people to deposit and withdraw with a like-for-like token that simply decreases in value deterministically via fixed ‘inflation’, paying the fees on withdrawal). If anyone is interested in looking at the contract code, it’s at https://github.com/DigixGlobal/DGXi/blob/master/contracts/DGXi.sol.

MAY 26

This week started by wrapping up the Multisig wallet UI talked about last week, which will now be included in future release of spectrum.

I then deployed the final version of the ETC refund contract (which required a forked version of truffle-compile to disable the optimiser as per the suggestion of the code review), and made some small tweaks to the ETC redemption dapplet. It now awaits block 3800000, when the snapshot will take place.

I also spent some time on a faucet service, which uses a registry on Kovan to whitelist users and enable DGD holders to withdraw a small amount of ETC in order to execute the redemption step. This service is a one time service, available to DGD holders at https://digixparity04.digix.io/faucet/0x<enter_your_address_here>


The majority of this week was taken up by the ETC redemption process, which included various tweaks to the UI, updating the guide, providing support and importantly actually executing the redemption process steps — deploying, capturing, minting, etc. I also made some updates to the faucet that helped DGD holders get a small amount of ETC to make their claim.

I spent a small amount of time on Spectrum; implementing a neat little addition for that extra bit of security when generating private keys: the option of providing random entropy via dice rolling — optionally replacing `crypto.randomBytes`. This also implements an XOR transform to reduce the effect of biased dice. (https://www.reddit.com/r/Bitcoin/comments/22nezb/just_got_my_16_sided_dice_extra_secure_paper/cgopcvx/)

## doxity

### git@github.com:DigixGlobal/doxity.git

- 78d1fa1 — Merge pull request #15 from yudilevi/patch-1 Added a missing comma in the sample .doxityrc file

- 76b64ac — Added a missing comma in the sample .doxityrc file

## etc-refund

### git@github.com:DigixGlobal/etc-refund.git

- eb4c575 — [maint] deploy to classic

- 28fbb75 — [maint] remove multisig, keep multisig integration tests

- f8b964a — Merge commit ‘b143daaae1e458d2d2544cb08a03483919230d33’

- 2e9804b — [maint] disable optimizer, rebuild

- 6913b0d — [maint] contract data checking

- 22eb84d — [feature] spectrum: ui tweaks

## spectrum

### git@github.com:DigixGlobal/Spectrum.git

- f05ebe1 — [maint] minor filesystem organisation

- a449552 — [maint] ipfs dists

- 82e1e71 — [maint] fix deps

- 8803329 — [maint] cleanup, deps

- 182f2c0 — [feature] allow changing owner in transaction

- 40a0919 — [feature] multisig deployer

- 0c482f5 — [feature] show network selector if web3 not passed to transaction modal

- 1b99227 — [maint] random ipfs deploy

## truffle-gnosis-multisig

### git@github.com:DigixGlobal/multisig-dapplet.git

- e5fb8d6 — [maint] bump verison, remove spectrum dep

- 1f14474 — [maint] update readme

- 0a0885b — [feature] tabulate json data in tx info

- 4c8d39d — [feature] sepectrum: dynamic contract, UI tweaks

## whitelist-faucet

### git@github.com:DigixGlobal/whitelist-faucet.git

- 540bfc3 — [maint] fixes

- 1d2663a — [maint] fix script, redeploy

- e67e728 — [maint] redeploy

- 023c0eb — [wip] cleanup, text edits, fix deploy

- bacb461 — [feature] allow passing `classic` to provide faucet to classic

- 0540ce3 — [feature] population script

- 32926bb — [feature] add onboarding script

- 9a1b6cf — [wip] minor text update

- f7bb43c — [feature] faucet http server

- e39402b — [feature] initial commit; registry contract + tests

## core2

### git@github.com:DigixGlobal/core2-storage-library-contracts.git

- e833c710 — [test] AssetInfoStorage

## etc-refund

### git@github.com:DigixGlobal/etc-redemption.git

- cea8832 — Update GUIDE.md

- 8e9e724 — Update GUIDE.md

- 5ee3666 — Update GUIDE.md

- 0b929d9 — Update GUIDE.md

- 31e1ccc — Update GUIDE.md

- 955656f — Merge commit ‘b0ff47c44b58187b6ecad09acbb294353c1fd07b’

- d423f51 — [maint] update guide

- b0ff47c — Update GUIDE.md

- 9ff80dc — Update GUIDE.md

- 7018792 — Update GUIDE.md

- 4971a50 — [maint] fix time estimate

- 4cf7c34 — [maint] update IPFS hash

- 58fe6c4 — [maint] UI updates for live contract

- 5c4dae5 — Update GUIDE.md

- 748eca1 — Merge commit ‘f02dde3254fcdcdc9d6cf525f0b91ebb3df8dfb7’

- 8d38286 — [maint] add reports

- f02dde3 — Update GUIDE.md

- fe8c5cb — Update GUIDE.md

- fdc624d — Update GUIDE.md

- d720ed7 — Update GUIDE.md

- 62b3083 — Update GUIDE.md

- 44eece3 — Update GUIDE.md

- eeadeee — [maint] update addresses

- 702290f — [maint] add accounts

- c60dff4 — [maint] add source code link

- bece299 — [maint] fix readme link

- a509167 — [maint] build, update ipfs hash

- 83ff7b9 — [maint] add app to guide

- 64d102f — [maint] minor ui fix + formatting

- b774ac9 — [wip] comment out wallet test (not used)

- 0f8f67f — [maint] fix formatting

- 9654092 — [maint] add exchanges info

- be66536 — [maint] add faucet info

- 98ca3fe — [maint] update readme

- 448a3dc — [maint] rebuild docs

- 689e138 — [maint] rebuild docs, update readme, guide

- cf9e2e0 — [maint] fix versions & shrinkwrap

- d4405f9 — [maint] built & migrate without optimizer

- e4f27e4 — [maint] more step-1 data

- e072f23 — [maint] update heading text

- 3d47d52 — [maint] update to use live contract, use top-up keys

- 467ceeb — [maint] whitelist npm publish dirs

- 49d6e00 — [maint] update readme regarding multisigs

## spectrum

### git@github.com:DigixGlobal/Spectrum.git

- 5814f01 — [maint] add entropy fields for randomData generation

- e4a843d — [maint] remove redemption + overlay

- eee380d — [maint] build

- fb0f2b6 — [maint] redeploy

- c125ba6 — [maint] update token address in tokens list

- b1b4c0e — [maint] new build

- 200e752 — [maint] ipfs build

- 71f74cf — [maint] bump etc-redemption and build

- 0b3c677 — [maint] update overlay, ipfs deploy

- 9493503 — [maint] fixed deps and added shrinkwrap

- c94a0e6 — [maint] ipfs deploys

- eae25aa — [maint] add ipfs deploy script

- 960f4fc — [maint] publish IPFS dists

- 0683f2b — [maint] only use ETC

- eee0d28 — [maint] fix linked deps, whitelist published to `src`

## whitelist-faucet

### git@github.com:DigixGlobal/whitelist-faucet.git

- dcf140e — [maint] logging

- af68d4b — [hotfix] temp hardcode the list

- 9cf6865 — [hotfix] temp fix for faucet

- 9135a69 — [maint] use kovan

- c43bcba — [bugfix] set gas

- f3e150a — [maint] redeploy

- 24f47b7 — [maint] make populating much more efficient

More by Digix

Topics of interest

More Related Stories