Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create StableToken registry #9346

Merged
merged 175 commits into from
Jul 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
95c879b
initial contract creation
Feb 23, 2022
19a323c
added a contructor and a mapping
Feb 23, 2022
0ce006e
added function that add fiat tickers into the collection
Feb 24, 2022
ccef1d0
function that returns all the fiat symbols thats been issued
Feb 24, 2022
11829f5
quering a stable contract functionality
Feb 24, 2022
7dc32a7
function to retrieve all the contract instances from a mapping
Feb 24, 2022
0388713
removing unnecessary imports
Feb 24, 2022
07b2f79
function that returns all the contracts
Feb 25, 2022
d941916
added comments
Feb 25, 2022
5ae7ce2
removed unnecessary function
Feb 25, 2022
8e5e1cc
removed unnecessary function
Feb 25, 2022
5da3ce7
functionality to remove unsupported tokens
Feb 25, 2022
1da3a60
function that adds new instances to the registry
Feb 25, 2022
46d3659
poor indentation
Feb 25, 2022
2fa850d
resolving bugs
Feb 25, 2022
6f67ac9
suggested improvements
Feb 25, 2022
6c4bac4
writing initialize
Feb 25, 2022
7889170
updated inconsistent syntax
Feb 25, 2022
a5e039a
initialize function is implemented
Feb 25, 2022
a0c0cc9
some of the resolved compile errors
Feb 25, 2022
3fe724f
resolving compiler issues
Feb 28, 2022
484380f
last of compiler issues
Feb 28, 2022
7e6d02a
upgrading removeStableToken funrction
Feb 28, 2022
8d87eaf
updated registry
Feb 28, 2022
4e37593
updated initialize function
Feb 28, 2022
82e1b0c
removed commented out code
Feb 28, 2022
4d1451f
updated comments
Mar 1, 2022
54d7d19
created a proxy
Mar 2, 2022
98f84c6
updating build file
Mar 2, 2022
55757be
updated build file
Mar 2, 2022
3f445ca
initialize test suit
Mar 2, 2022
e5703ea
updating registry contract
Mar 2, 2022
f7f68de
first few tests are passing
Mar 2, 2022
91cc2ad
remove stableToken function
Mar 2, 2022
cdeeaab
resolving a mistake
Mar 21, 2022
49f3b60
resolving based on corrections
Mar 21, 2022
882ad00
tests for remove function complete
Mar 22, 2022
b0a32d1
test suit for adding contracts
Mar 22, 2022
6ec5ee5
tests pass
Mar 23, 2022
678fb50
adding more arguments to compare
Mar 23, 2022
f96cf8f
adding registry contract to the registry
Mar 23, 2022
2076806
registry migrations
Mar 23, 2022
415e07a
unsaved changes
Mar 23, 2022
4637cee
bug fixed in initialized and two more found it addnewstabletoken
Mar 24, 2022
482c7f5
refactoring get contracts function
Mar 25, 2022
f7d44ce
converted to bytes and contract compiles
Mar 25, 2022
f92baa9
initialize function added to tests
Mar 25, 2022
9597488
8 tests pass, refactoring the contract
Mar 29, 2022
86608d5
latest
Mar 29, 2022
985860f
fixing bugs
Mar 29, 2022
7345da3
everything works ✨
Mar 31, 2022
94e9d0b
added a contraxt query function + tests
Apr 2, 2022
864eb31
lists all the correct contract namea after adding and removing one ✨😭
Apr 2, 2022
5146180
all functions are fully tested and work
Apr 2, 2022
2bbb873
adding it to the registry
Apr 11, 2022
f4e083f
finished
Apr 11, 2022
25aeeb2
fixed migrations
Apr 11, 2022
e861d26
amount of arguments in initialize error fixed
Apr 11, 2022
900617a
bug
Apr 11, 2022
d1995c8
had an accidental type in reserve
Apr 11, 2022
347e531
migration tests pass
Apr 12, 2022
281708b
one minor fix needed
May 3, 2022
9a83881
removed from registry
May 4, 2022
b0133ee
readded in registry-utils
May 4, 2022
f409620
upgraded the number of migration file the tests should run to
ninabarbakadze May 6, 2022
d70cd44
cleaning up
ninabarbakadze May 9, 2022
122de4a
applying suggestions
ninabarbakadze May 20, 2022
e275eca
error in ts wrapper
ninabarbakadze Jun 15, 2022
5ead536
fixed migration error
ninabarbakadze Jun 15, 2022
bb95b42
Merge branch 'master' into ninabarbakadze/stable-token-registry
ninabarbakadze Jun 15, 2022
cf913e3
initial contract creation
Feb 23, 2022
21514b3
added a contructor and a mapping
Feb 23, 2022
f685181
added function that add fiat tickers into the collection
Feb 24, 2022
874e9ac
function that returns all the fiat symbols thats been issued
Feb 24, 2022
9e38e40
quering a stable contract functionality
Feb 24, 2022
5796867
function to retrieve all the contract instances from a mapping
Feb 24, 2022
16426f6
removing unnecessary imports
Feb 24, 2022
140cc1e
function that returns all the contracts
Feb 25, 2022
4bc1b28
added comments
Feb 25, 2022
afe6259
removed unnecessary function
Feb 25, 2022
afe8652
removed unnecessary function
Feb 25, 2022
b34a14b
functionality to remove unsupported tokens
Feb 25, 2022
ea494a8
function that adds new instances to the registry
Feb 25, 2022
798f233
poor indentation
Feb 25, 2022
b6b7b61
resolving bugs
Feb 25, 2022
9135dd7
suggested improvements
Feb 25, 2022
f925ed1
writing initialize
Feb 25, 2022
939fe3b
updated inconsistent syntax
Feb 25, 2022
97db828
initialize function is implemented
Feb 25, 2022
702e439
some of the resolved compile errors
Feb 25, 2022
8c7a4b9
resolving compiler issues
Feb 28, 2022
987f53e
last of compiler issues
Feb 28, 2022
510ff87
upgrading removeStableToken funrction
Feb 28, 2022
5add546
updated registry
Feb 28, 2022
868a59e
updated initialize function
Feb 28, 2022
4f1ec1a
removed commented out code
Feb 28, 2022
f9576d9
updated comments
Mar 1, 2022
eaf5cc7
created a proxy
Mar 2, 2022
029db30
updating build file
Mar 2, 2022
b9fa187
updated build file
Mar 2, 2022
2ac9cfc
initialize test suit
Mar 2, 2022
ca804fb
updating registry contract
Mar 2, 2022
d53303c
first few tests are passing
Mar 2, 2022
c4ea258
remove stableToken function
Mar 2, 2022
7b1688b
resolving a mistake
Mar 21, 2022
de2d140
resolving based on corrections
Mar 21, 2022
1bb5f47
tests for remove function complete
Mar 22, 2022
b0050ef
test suit for adding contracts
Mar 22, 2022
c3c92cb
tests pass
Mar 23, 2022
d9df820
adding more arguments to compare
Mar 23, 2022
da23d3d
adding registry contract to the registry
Mar 23, 2022
4762799
registry migrations
Mar 23, 2022
933e125
unsaved changes
Mar 23, 2022
dfb85d4
bug fixed in initialized and two more found it addnewstabletoken
Mar 24, 2022
c64b05e
refactoring get contracts function
Mar 25, 2022
5a17c8f
converted to bytes and contract compiles
Mar 25, 2022
c7b4000
initialize function added to tests
Mar 25, 2022
40d08a5
8 tests pass, refactoring the contract
Mar 29, 2022
377f508
latest
Mar 29, 2022
36e149d
fixing bugs
Mar 29, 2022
ac8e493
everything works ✨
Mar 31, 2022
6eef5b9
added a contraxt query function + tests
Apr 2, 2022
e5c4574
lists all the correct contract namea after adding and removing one ✨😭
Apr 2, 2022
31c5f09
all functions are fully tested and work
Apr 2, 2022
e37f272
adding it to the registry
Apr 11, 2022
b75d70d
finished
Apr 11, 2022
ac340c7
fixed migrations
Apr 11, 2022
a94305e
amount of arguments in initialize error fixed
Apr 11, 2022
5e0f956
bug
Apr 11, 2022
c3f1809
had an accidental type in reserve
Apr 11, 2022
ed366b1
migration tests pass
Apr 12, 2022
6fc872d
one minor fix needed
May 3, 2022
883851a
removed from registry
May 4, 2022
fa167a5
readded in registry-utils
May 4, 2022
931c551
upgraded the number of migration file the tests should run to
ninabarbakadze May 6, 2022
fc7a397
cleaning up
ninabarbakadze May 9, 2022
04628b6
applying suggestions
ninabarbakadze May 20, 2022
7d4a86d
error in ts wrapper
ninabarbakadze Jun 15, 2022
5a461c7
fixed migration error
ninabarbakadze Jun 15, 2022
2f705a1
Merge branch 'ninabarbakadze/stable-token-registry' of https://github…
ninabarbakadze Jun 19, 2022
d3f288d
added an empty object in release9
ninabarbakadze Jun 21, 2022
fc2484e
release tag update
ninabarbakadze Jun 21, 2022
e900c8a
updating correct release tag
ninabarbakadze Jun 21, 2022
14ff910
removed unnecessary release9 json file
ninabarbakadze Jun 22, 2022
c76a63f
updating the release tag
ninabarbakadze Jun 25, 2022
2eb53d2
Merge branch 'master' into ninabarbakadze/stable-token-registry
ninabarbakadze Jun 25, 2022
9154114
add release report
ninabarbakadze Jun 28, 2022
408d239
update the path for ci
ninabarbakadze Jun 28, 2022
314f8f0
correct ci path
ninabarbakadze Jun 29, 2022
9ad7ef1
Merge branch 'master' into ninabarbakadze/stable-token-registry
ninabarbakadze Jun 29, 2022
f2fc3c6
Merge branch 'ninabarbakadze/stable-token-registry' of https://github…
ninabarbakadze Jun 29, 2022
4e26bfc
Merge branch 'martinvol/master_CR7' into ninabarbakadze/stable-token-…
martinvol Jun 29, 2022
ff792a7
removed incorrect configs
ninabarbakadze Jun 29, 2022
049894c
Merge branch 'ninabarbakadze/stable-token-registry' of https://github…
ninabarbakadze Jun 29, 2022
be32071
Trying to get all the tags from git
martinvol Jul 1, 2022
e1a190a
try to add on devchain
martinvol Jul 1, 2022
1262cfa
Fixed branch name
martinvol Jul 1, 2022
a7d0a63
Merge branch 'master' into ninabarbakadze/stable-token-registry
ninabarbakadze Jul 5, 2022
2a7b3d4
Restored a missing test (#9460)
ninabarbakadze Apr 28, 2022
d9a50e2
Consistent code across GrandaMento and Exchange in setSpread (#9459)
ninabarbakadze May 4, 2022
8bc292e
Fix Oracle check (#9527)
martinvol May 9, 2022
3d2aa8c
Add version report
m-chrzan Feb 22, 2022
b2b8d3c
Added newline at the end
martinvol May 13, 2022
28b2fd7
Fixed release versions
martinvol May 13, 2022
6cdecec
Deleted wrong files
martinvol Jul 5, 2022
dbf27d1
Merge branch 'martinvol/master_CR7_well' into ninabarbakadze/stable-t…
martinvol Jul 5, 2022
ec24021
adding a version number
ninabarbakadze Jul 5, 2022
6e8b88e
Merge branch 'ninabarbakadze/stable-token-registry' of https://github…
ninabarbakadze Jul 5, 2022
f0d9c18
updated the major version number to 1
ninabarbakadze Jul 5, 2022
596f714
Merge branch 'master' into ninabarbakadze/stable-token-registry
martinvol Jul 5, 2022
3e9f7a8
Create release8.json
martinvol Jul 5, 2022
9f51507
Update release8.json
martinvol Jul 5, 2022
bed9342
Update release8.json
martinvol Jul 5, 2022
19b7142
Update release8.json
martinvol Jul 5, 2022
c724e68
Update StableTokenRegistry.sol
ninabarbakadze Jul 5, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ defaults: &defaults
contract-defaults: &contract-defaults
<<: *defaults
environment:
RELEASE_TAG: core-contracts.v6
RELEASE_TAG: core-contracts.v7

e2e-defaults: &e2e-defaults
<<: *defaults
Expand Down Expand Up @@ -151,6 +151,7 @@ jobs:
# Verify that following commands work, they are later called in the incremental testing script
# There output does not matter here, the fact that they finish successfully does.
git rev-parse --abbrev-ref HEAD
git fetch --all --tags

- attach_workspace:
at: ~/app
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"generate:shrinkwrap": "npm install --production && npm shrinkwrap",
"check:shrinkwrap": "npm install --production && npm shrinkwrap && ./scripts/check_shrinkwrap_dirty.sh",
"prepack": "yarn run build && oclif-dev manifest && oclif-dev readme && yarn run check:shrinkwrap",
"test:reset": "yarn --cwd ../protocol devchain generate-tar .tmp/devchain.tar.gz --migration_override ../dev-utils/src/migration-override.json --upto 25 --release_gold_contracts scripts/truffle/releaseGoldExampleConfigs.json",
"test:reset": "yarn --cwd ../protocol devchain generate-tar .tmp/devchain.tar.gz --migration_override ../dev-utils/src/migration-override.json --upto 26 --release_gold_contracts scripts/truffle/releaseGoldExampleConfigs.json",
"test:livechain": "yarn --cwd ../protocol devchain run-tar .tmp/devchain.tar.gz",
"test": "TZ=UTC jest --runInBand"
},
Expand Down
125 changes: 125 additions & 0 deletions packages/protocol/contracts/stability/StableTokenRegistry.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
pragma solidity ^0.5.13;
ninabarbakadze marked this conversation as resolved.
Show resolved Hide resolved

import "openzeppelin-solidity/contracts/math/SafeMath.sol";
import "../common/Initializable.sol";
import "openzeppelin-solidity/contracts/ownership/Ownable.sol";
import "../common/interfaces/IRegistry.sol";

/**
* @title contract that lists what stable coins are deployed as part of Celo's Stability protocol.
*/
contract StableTokenRegistry is Initializable, Ownable {
using SafeMath for uint256;
mapping(bytes => bytes) public stableTokens;
bytes[] public fiatTickers;

/**
* @notice Returns the storage, major, minor, and patch version of the contract.
* @return The storage, major, minor, and patch version of the contract.
*/
function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {
return (1, 1, 0, 0);
}

/**
* @notice Sets initialized == true on implementation contracts
* @param test Set to true to skip implementation initialization
*/
constructor(bool test) public Initializable(test) {}

/**
* @notice Used in place of the constructor to allow the contract to be upgradable via proxy.
* @param fiatTicker fiat currency issued.
* @param stableTokenContractName stable token smart contract name.
*/
function initialize(bytes calldata fiatTicker, bytes calldata stableTokenContractName)
external
initializer
{
_transferOwnership(msg.sender);
addNewStableToken(bytes("USD"), bytes("StableToken"));
addNewStableToken(bytes("EUR"), bytes("StableTokenEUR"));
addNewStableToken(bytes("BRL"), bytes("StableTokenBRL"));
if (fiatTicker.length != 0 && stableTokenContractName.length != 0) {
addNewStableToken(fiatTicker, stableTokenContractName);
}
}

/**
* @notice Returns all the contract instances created.
* @return collection of stable token contracts.
*/
function getContractInstances() external view returns (bytes memory, uint256[] memory) {
uint256 totalLength = 0;
for (uint256 i = 0; i < fiatTickers.length; i++) {
ninabarbakadze marked this conversation as resolved.
Show resolved Hide resolved
totalLength += stableTokens[fiatTickers[i]].length;
}
uint256 numOfContracts = fiatTickers.length;
bytes memory concatenated = new bytes(totalLength);
uint256 lastIndex = 0;
uint256[] memory lengths = new uint256[](numOfContracts);
for (uint256 i = 0; i < numOfContracts; i++) {
bytes storage contractName = stableTokens[fiatTickers[i]];
lengths[i] = contractName.length;
for (uint256 j = 0; j < lengths[i]; j++) {
concatenated[lastIndex] = contractName[j];
lastIndex++;
}
}
return (concatenated, lengths);
}

/**
* @notice Removes unwamted token instances.
* @param fiatTicker The currency that is no longer supported.
* @param index The index in fiatTickers of fiatTicker.
*/
function removeStableToken(bytes calldata fiatTicker, uint256 index) external onlyOwner {
delete stableTokens[fiatTicker];
uint256 numFiats = fiatTickers.length;
require(index < numFiats, "Index is invalid");
for (uint256 i = 0; i < fiatTicker.length; i++) {
if (fiatTicker[i] != 0) {
require(
fiatTicker[i] == fiatTickers[index][i],
"source doesn't match the existing fiatTicker"
);
}
}
uint256 newNumFiats = numFiats.sub(1);

if (index != newNumFiats) {
fiatTickers[index] = fiatTickers[newNumFiats];
}
delete fiatTickers[newNumFiats];
fiatTickers.length = newNumFiats;
}

/**
* @notice Adds new Fiat Ticker and Stable Token contract to the registry.
* @param fiatTicker The currency we are trying to add in the registry.
* @param stableTokenContractName The contract we are trying to add in the registry.
*/
function addNewStableToken(bytes memory fiatTicker, bytes memory stableTokenContractName)
public
onlyOwner
{
require(fiatTicker.length != 0, "fiatTicker cant be an empty string");
require(stableTokenContractName.length != 0, "stableTokenContractName cant be an empty string");
require(stableTokens[fiatTicker].length == 0, "This registry already exists");
stableTokens[fiatTicker] = stableTokenContractName;
fiatTickers.push(fiatTicker);
}

/**
* @notice Queries a corresponding StableToken contract name based on fiat ticker.
* @param fiatTicker Type of currency to query corresponding contract.
*/
function queryStableTokenContractNames(bytes memory fiatTicker)
public
view
returns (bytes memory)
{
return stableTokens[fiatTicker];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pragma solidity ^0.5.13;

import "../../common/Proxy.sol";

/* solhint-disable no-empty-blocks */
contract StableTokenRegistryProxy is Proxy {}
1 change: 1 addition & 0 deletions packages/protocol/lib/registry-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export enum CeloContractName {
StableTokenBRL = 'StableTokenBRL',
TransferWhitelist = 'TransferWhitelist',
Validators = 'Validators',
StableTokenRegistry = 'StableTokenRegistry',
}

export const usesRegistry = [
Expand Down
14 changes: 14 additions & 0 deletions packages/protocol/migrations/25_stableToken_registry.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { CeloContractName } from '@celo/protocol/lib/registry-utils'
import { deploymentForCoreContract } from '@celo/protocol/lib/web3-utils'
import { StableTokenRegistryInstance } from 'types'

const initializeArgs = async (): Promise<any[]> => {
return [[], []]
}

module.exports = deploymentForCoreContract<StableTokenRegistryInstance>(
web3,
artifacts,
CeloContractName.StableTokenRegistry,
initializeArgs
)
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ module.exports = deploymentForCoreContract<GovernanceInstance>(
'StableToken',
'StableTokenEUR',
'Validators',
'StableTokenRegistry',
]

if (!config.governance.skipTransferOwnership) {
Expand Down
4 changes: 4 additions & 0 deletions packages/protocol/migrationsConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,10 @@ const DefaultConfig = {
commission: 0.1,
votesRatioOfLastVsFirstGroup: 2.0,
},
stableTokenRegistry: {
fiatTicker: [], // empty array resambles empty bytes
stableTokenContractName: [], // empty array resambles empty bytes
},
}

const NetworkConfigs = {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"StableTokenRegistry": [[], []]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"oldArtifactsFolder": "/Users/martinvol/celo/celo-monorepo/packages/protocol/build/core-contracts.v6/contracts",
"newArtifactsFolder": "/Users/martinvol/celo/celo-monorepo/packages/protocol/build/celo-core-contracts-v7/contracts",
"oldArtifactsFolder": "/home/circleci/app/packages/protocol/build/core-contracts.v6/contracts",
"newArtifactsFolder": "/home/circleci/app/packages/protocol/build/core-contracts.v7/contracts",
"exclude": "/.*Test|Mock.*|I[A-Z].*|.*Proxy|MultiSig.*|ReleaseGold|SlasherUtil|UsingPrecompiles/",
"report": {
"contracts": {
Expand Down Expand Up @@ -147,6 +147,69 @@
"patch": "0"
}
},
"LockedGold": {
"changes": {
"storage": [],
"major": [],
"minor": [
{
"contract": "LockedGold",
"signature": "getPendingWithdrawal(address,uint256)",
"type": "MethodAdded"
}
],
"patch": [
{
"contract": "LockedGold",
"type": "DeployedBytecode"
}
]
},
"versionDelta": {
"storage": "=",
"major": "=",
"minor": "+1",
"patch": "0"
}
},
"GrandaMento": {
"changes": {
"storage": [],
"major": [],
"minor": [],
"patch": [
{
"contract": "GrandaMento",
"type": "DeployedBytecode"
}
]
},
"versionDelta": {
"storage": "=",
"major": "=",
"minor": "=",
"patch": "+1"
}
},
"Reserve": {
"changes": {
"storage": [],
"major": [],
"minor": [],
"patch": [
{
"contract": "Reserve",
"type": "DeployedBytecode"
}
]
},
"versionDelta": {
"storage": "=",
"major": "=",
"minor": "=",
"patch": "+1"
}
},
"Validators": {
"changes": {
"storage": [],
Expand Down
5 changes: 5 additions & 0 deletions packages/protocol/scripts/bash/release-on-devchain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,14 @@ yarn run truffle exec ./scripts/truffle/verify-bytecode.js --network development

echo "- Check versions of current branch"
# From check-versions.sh
echo " - Checkout migrationsConfig.js at $BRANCH"
git checkout $BRANCH -- migrationsConfig.js

CONTRACT_EXCLUSION_REGEX=".*Test|Mock.*|I[A-Z].*|.*Proxy|MultiSig.*|ReleaseGold|SlasherUtil|UsingPrecompiles"
yarn ts-node scripts/check-backward.ts sem_check --old_contracts $BUILD_DIR/contracts --new_contracts build/contracts --exclude $CONTRACT_EXCLUSION_REGEX --output_file report.json

git checkout - -- migrationsConfig.js

# From make-release.sh
echo "- Deploy release of current branch"
INITIALIZATION_FILE=`ls -1 releaseData/initializationData/* | tail -n 1 | xargs realpath`
Expand Down
2 changes: 2 additions & 0 deletions packages/protocol/scripts/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export const ProxyContracts = [
'StableTokenEURProxy',
'StableTokenProxy',
'SortedOraclesProxy',
'StableTokenRegistryProxy',
]
export const CoreContracts = [
// common
Expand Down Expand Up @@ -78,6 +79,7 @@ export const CoreContracts = [
'StableTokenEUR',
'StableTokenBRL',
'SortedOracles',
'StableTokenRegistry',

// liquidity
'GrandaMento',
Expand Down
3 changes: 1 addition & 2 deletions packages/protocol/test/common/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { parseSolidityStringArray } from '@celo/utils/lib/parsing'
import { authorizeSigner as buildAuthorizeSignerTypedData } from '@celo/utils/lib/typed-data-constructors'
import { generateTypedDataHash } from '@celo/utils/src/sign-typed-data-utils'
import { parseSignatureWithoutPrefix } from '@celo/utils/src/signatureUtils'
import BigNumber from 'bignumber.js'
import {
AccountsContract,
AccountsInstance,
Expand All @@ -22,8 +23,6 @@ import {
} from 'types'
import { keccak256 } from 'web3-utils'

import BigNumber from 'bignumber.js'

const Accounts: AccountsContract = artifacts.require('Accounts')
const Registry: RegistryContract = artifacts.require('Registry')
const MockValidators: MockValidatorsContract = artifacts.require('MockValidators')
Expand Down
Loading