Deployment Of New GZE GazeCoin Token Contract

Summary

  • There was a bug in the old GZE token contract that would have reduced the utility of the token contract in the approveAndCall(...) function that allows for the approval of token transfers AND the execution of a function in another smart contract in a single transaction
  • A new GZE token contract has been deployed to 0x4AC00f287f36A6Aad655281fE1cA6798C9cb727b . A snapshot of the account balances in the old GZE token was taken at block 5068576, and these balances were duplicated in the new GZE token contract
  • As EtherDelta stores the token balances internally, any old GZE balances within the EtherDelta contract have been added to the owning account in the new GZE token contract
  • To view your new token balances, please add the token contract address “0x4AC00f287f36A6Aad655281fE1cA6798C9cb727b” with the symbol “GZENew” and “18” decimal places in your wallet software
  • Please refrain from transferring or trading the old and new GZE tokens until advised by GazeCoin

Background

The original GZE token was deployed in December 2017 before the crowdsale, and is based on BokkyPooBah’s Token Teleportation Service (BTTS) token contract. The BTTS smart contract allows for user accounts to transfer GZE tokens without the need for holding ethers (ETH) in the account. This BTTS technology will be used in the GazeCoin metaverse to ease the use of the GZE cryptotoken by non-crypto savvy users.

I could not find auditors comfortable with auditing the message signing technology in the BTTS smart contracts, so a bug bounty was announced, but there were no responses:

Bug Bounty announced Dec 10 2017

BTTS Bug Found And Fixed

On Feb 9 2018, Oleksii Matiiasevych who helped out with the Whitehat Group recovery and return of USD 200 million from the vulnerable Parity multisigs, completed his audit of the BTTS smart contract code and found a bug in the implementation of the signedApproveAndCall(...) function. This bug has now been fixed in BTTS v1.10 .

While not serious enough to allow GZE tokens to be stolen, this bug would impair the functionality of using GZEs to execute functions in other smart contracts in a single transaction. The same functionality could still be achieved using the signedApprove(...) function and then executing functions in other smart contracts, but this would require 2 separate transactions to achieve the same function execution.

The decision was made to upgrade the GZE token contract to a bug fixed version, as it will be easier to do so earlier than later.


Deployment Of New GZE Token Contract

We have deployed a new GZE token contract to 0x4AC00f287f36A6Aad655281fE1cA6798C9cb727b .

Token balances from the old GZE token contract at 0x8C65e992297d5f092A756dEf24F4781a280198Ff was snapshot at block 5068576, and transferred over to the new GZE token contract.

Old GZE tokens deposited in the EtherDelta contract have been moved to the controlling account in the new GZE token contract, as we cannot deposit the new GZE tokens in the EtherDelta contract.

Please cease using the old GZE token contract at 0x8C65e992297d5f092A756dEf24F4781a280198Ff and start using the new GZE token contract at 0x4AC00f287f36A6Aad655281fE1cA6798C9cb727b.

While we await confirmation from Qryptos on updating their system to use the new GZE token contract address, please refrain from transferring or trading the old and new GZE tokens.


New GZE In MyEtherWallet And Other Ethereum Wallets

Your new GZE token balances can be viewed in MyEtherWallet by adding the custom token with the following attributes:

  • Address: “0x4AC00f287f36A6Aad655281fE1cA6798C9cb727b”
  • Symbol: “GZENew”
  • Decimals: “18”

Note that symbol cannot contain any spaces.

Add Custom Token to MyEtherWallet

New GZE And EtherDelta

Please cease using EtherDelta with the old GZE token contract address at the URL https://etherdelta.com/#0x8c65e992297d5f092a756def24f4781a280198ff-ETH .

When the all-clear is announce, you can start using EtherDelta with the new GZE token contract address at the URL https://etherdelta.com/#0x4ac00f287f36a6aad655281fe1ca6798c9cb727b-ETH . Remember that you have to re-deposit your tokens into EtherDelta if you wish to trade on this exchange.


Reconciliation Of Old GZE And New GZE Token Balances

A reconciliation has been executed programatically, and all accounts have the same token balance in the new GZE token contract as the token balance in the old GZE token contract, with the old GZE EtherDelta balance transferred to the controlling account.

There are some exceptions. I made an accidental transfer of an additional 2027.43 new GZE tokens into an account 0xf44a, and this has come out of my account. It was not worth the time and effort to rebuild yet another token contract.

The reconciliation spreadsheet is available at https://github.com/bokkypoobah/BokkyPooBahsTokenTeleportationServiceSmartContract/blob/master/gzeUpgradeScripts/GZEOldAndNewTokenContractReconciliation.xlsx and the following screen shows the main differences:

Accounts with differences in the reconciliation of old and new GZE balances
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.