@gnosis.pm/owl-token
v4.0.0
Published
The OWL token and related smart contracts
Downloads
261
Keywords
Readme
OWL Token
The OWL token and related smart contracts.
The token and contract can be in Etherscan:
- Mainnet:
- Rinkeby:
- Kovan:
Setup and show the networks
# Install dependencies
yarn install
# Compile and restore the network addresses
yarn restore
# Show current network addresses
yarn networks
Execute migrations into a local ganache-cli
# Run ganache CLU
yarn rpc
# Execute the migrations
yarn migrate
# Or you can do all at once using
yarn migrate-all
Change the lock period time - re-deployment
The deployment script has an environemt variable LOCK_END_TIME
that
allows you to set a different lock period (30 days
by default).
# Deploy for develop with a given end time for lock period
# flag --reset is NECESSARY as you are re-deploying
# 24H format, please be careful!
LOCK_END_TIME='2018-06-12T16:00:00+02:00' yarn migrate --reset
(npm) > LOCK_END_TIME='2018-06-12T16:00:00+02:00' npm run migrate -- --reset
Generate a new version
# In a release branch (i.e. release/vX.Y.X)
# Migrate the version to the testnets, at least rinkeby, and posibly mainnet
# You can optionally change the gas price using the GAS_PRICE_GWEI env variable
# if you are changing LOCK_END_TIME here, flag --reset is NECESSARY as you are re-deploying
yarn restore
MNEMONIC=$MNEMONIC_OWL yarn migrate --network rinkeby
(npm) > MNEMONIC=$MNEMONIC_OWL npm run migrate -- --network rinkeby
# Extract the network file
yarn networks-extract
# Verify the contract in Etherscan
# Folow the steps in "Verify contract"
# Commit the network file
git add networks.json
git commit -m 'Updated the networks file'
> OR simply git commit -am 'Updated networks file'
# Generate version using Semantic Version: https://semver.org/
# For example, for a minor version
npm version minor
git push && git push --tags
# Deploy npm package
npm publish --access=public
# Merge tag into develop, to deploy it to production, also merge it into master
git checkout develop
git merge vX.Y.X
Verify contract manually
NOTE: For mainnet is better to use the automatic verification script (see next section)
Flatten the smart contract:
npx truffle-flattener contracts/TokenOWL.sol > build/TokenOWL-EtherScan.sol
npx truffle-flattener contracts/TokenOWLProxy.sol > build/TokenOWLProxy-EtherScan.sol
npx truffle-flattener contracts/OWLAirdrop.sol > build/OWLAirdrop-EtherScan.sol
Go to Etherscan validation page:
- Go tohttps://rinkeby.etherscan.io/verifyContract?a=
- Fill the information:
- Use
build/TokenOWL-EtherScan.sol
- Set the exact compiler version used for the compilation i.e.
v0.4.24+commit.e67f0147
- Optimization:
No
- Use
- Press validate
Verify contract automatically (mainnet only)
You can use verify-on-etherscan
NOTE: To use the verify You'll need to create an API Key in Etherscan for this step.
API_KEY=your-etherscan-api-key yarn verify
Change the owner
There's a script to change the OWL owner:
For example, to change the owner in rinkeby
to 0xb65d2c1a4756ee857fca057ef561758b42277f5e
:
# Dry run
MNEMONIC=$MNEMONIC_OWL yarn change-owner --owner 0xb65d2c1a4756ee857fca057ef561758b42277f5e --network rinkeby --dry-run
# Run the transaction
MNEMONIC=$MNEMONIC_OWL yarn change-owner --owner 0xb65d2c1a4756ee857fca057ef561758b42277f5e --network rinkeby