OpenZeppelin has some neat docs to show how to create, deploy and interact with smart contracts centered around installing node, using the OpenZeppelin libraries, compiling via CLI, and deploying via Ganache which is a local blockchain environment for development and testing.

Some of you may remember TestRPC. Ganache is the new name of TestRPC.

 The TestRPC quickly became more powerful than simply a blockchain environment used for testing. To stay with the sweet Truffle brand, we decided to rename it Ganache, as Ganache is (often) the core of your favorite chocolate truffle. It’s a much catchier name (and a much tastier one too).

https://www.trufflesuite.com/blog/testrpc-is-now-ganache

The problem though is when you follow the docs at https://docs.openzeppelin.com/learn/deploying-and-interacting and run:

npx ganache-cli --deterministic 

to get a list of all the available accounts, you might encounter this error:

Ganache CLI v6.9.1 (ganache-core: 2.10.2)
Error: Callback was already called.

The problem is because you probably have node v14 installed. Run:

node -v

to check. For me, I installed node initially with the brew command

brew install node

which downloaded the latest version which was v14.5.0

The reason is an issue related to ganache-core’s internals not yet being Node v14 compatible. https://github.com/trufflesuite/ganache-cli/issues/732

Workaround

Install Node v12 for the time being. First run

brew search node

What this does is lists all available formula (aka packages) and the online equivalent is http://searchbrew.com/. You should see node, node@12, node@10 in the results.

Install node v12

brew install node@12

You should then get a green tick beside node and node@12. If you run node -v again you will still get the new version because you have to run 2 more commands.

brew unlink node
brew link node@12

You might get some errors here asking you to use the –overwrite flag to overwrite all the conflicting files (/usr/local/bin/npm already existing for instance) and also to add the –force flag because node@12 is keg-only.

Keg only means that node will only be installed at /usr/local/Cellar but not linked into places like /usr/local/bin, /usr/local/lib, etc. That means other software that depends on it has to be compiled with specific instructions to use the files in /usr/local/Cellar.

brew link --overwrite node@12 --force

Then check the version again with node -v and it should be at 12.x. Now if you run

npx ganache-cli --deterministic 

You should get


Ganache CLI v6.9.1 (ganache-core: 2.10.2)


Available Accounts
==================
(0) 0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1 (100 ETH)
(1) 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0 (100 ETH)
(2) 0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b (100 ETH)
(3) 0xE11BA2b4D45Eaed5996Cd0823791E0C93114882d (100 ETH)
(4) 0xd03ea8624C8C5987235048901fB614fDcA89b117 (100 ETH)
(5) 0x95cED938F7991cd0dFcb48F0a06a40FA1aF46EBC (100 ETH)
(6) 0x3E5e9111Ae8eB78Fe1CC3bb8915d5D461F3Ef9A9 (100 ETH)
(7) 0x28a8746e75304c0780E011BEd21C72cD78cd535E (100 ETH)
(8) 0xACa94ef8bD5ffEE41947b4585a84BdA5a3d3DA6E (100 ETH)
(9) 0x1dF62f291b2E969fB0849d99D9Ce41e2F137006e (100 ETH)


Private Keys
==================
(0) 0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d
(1) 0x6cbed15c793ce57650b9877cf6fa156fbef513c4e6134f022a85b1ffdd59b2a1
(2) 0x6370fd033278c143179d81c5526140625662b8daa446c22ee2d73db3707e620c
(3) 0x646f1ce2fdad0e6deeeb5c7e8e5543bdde65e86029e2fd9fc169899c440a7913
(4) 0xadd53f9a7e588d003326d1cbf9e4a43c061aadd9bc938c843a79e7b4fd2ad743
(5) 0x395df67f0c2d2d9fe1ad08d1bc8b6627011959b79c53d7dd6a3536a33ab8a4fd
(6) 0xe485d098507f54e7733a205420dfddbe58db035fa577fc294ebd14db90767a52
(7) 0xa453611d9419d0e56f499079478fd72c37b251a94bfde4d19872c44cf65386e3
(8) 0x829e924fdf021ba3dbbc4225edfece9aca04b929d6e75613329ca6f1d31c0bb4
(9) 0xb0057716d5917badaf911b193b12b910811c1497b5bada8d7711f758981c3773


HD Wallet
==================
Mnemonic:      myth like bonus scare over problem client lizard pioneer submit female collect
Base HD Path:  m/44'/60'/0'/0/{account_index}


Gas Price
==================
20000000000


Gas Limit
==================
6721975


Call Gas Limit
==================
9007199254740991


Listening on 127.0.0.1:8545

Leave a Reply

Your email address will not be published. Required fields are marked *