- Choosing an Ethereum client
- Compiling contracts
- Running migrations
- Testing your contracts
- Writing tests in Solidity
- Interacting with your contracts
- Package management via EthPM
- Package management via NPM
- Debugging your contracts
- Using Truffle Develop and the console
- Writing external scripts
- Using the build pipeline
- Contact the developers
There are many Ethereum clients to choose from. We recommend different clients depending on whether you are developing or deploying.
We recommend Ganache, a personal blockchain for Ethereum development that runs on your desktop. Part of the Truffle Suite, Ganache simplifies dapp development by placing your contracts and transactions front and center. Using Ganache you can quickly see how your application affects the blockchain, and introspect details like your accounts, balances, contract creations and gas costs. You can also fine tune Ganache's advanced mining controls to better suit your needs. Ganache is available for Windows, Mac and Linux, and you can download it here.
Ganache, when launched, runs on
http://127.0.0.1:7545. It will display the first 10 accounts and the mnemonic used to create those accounts. (Read more about account mnemonics.) The mnemonic will persist across restarts of Ganache, though it can be changed to be randomly generated. You can also input your own.
Warning: Do not use this mnemonic on the main Ethereum network (mainnet).
We also recommend using Truffle Develop, a development blockchain built directly into Truffle. Truffle Develop helps you set up an integrated blockchain environment with a single command, no installation required. Run Truffle Develop by typing the following into a terminal:
This will run the client on
http://127.0.0.1:9545. It will display the first 10 accounts and the mnemonic used to create those accounts. (Read more about account mnemonics.) Truffle Develop uses the same mnemonic every time:
candy maple cake sugar pudding cream honey rich smooth crumble sweet treat
Warning: Do not use this mnemonic on the main Ethereum network (mainnet). If you send ETH to any account generated from this mnemonic, you will lose it all!
Once launched, Truffle Develop will provide you with a console you can use to run all available Truffle commands. These commands are input by omitting the
truffle prefix. So, for example, to compile your smart contracts, instead of typing
truffle compile, you need to only type
To read more about interacting with the console, please see the Using the Console section.
Ganache also has a command-line interface for those who aren't working from a graphical environment. Great for automated testing and continuous integration environments, Ganache CLI runs headless and can be configured to serve all your development needs. Ganache CLI processes transactions instantly instead of waiting for the default block time, so you can test that your code works quickly. It also tells you immediately when your smart contracts run into errors, and integrates directly with Truffle to reduce test runtime up to 90% compared to other clients. Learn more about Ganache CLI.
There are many official and unofficial Ethereum clients available for you to use. The following is a short list:
- Geth (go-ethereum): https://github.com/ethereum/go-ethereum
- WebThree (cpp-ethereum): https://github.com/ethereum/cpp-ethereum
- Parity: https://github.com/paritytech/parity
- More: https://www.ethereum.org/cli
These are full client implementations that include mining, networking, blocks and transaction processing. You should use these clients after you've sufficiently tested your dapp with Ganache or Truffle Develop and you're ready to deploy to your desired Ethereum network.
Private networks utilize the same technology as with live networks, but with a different configuration. So you can configure any of the Ethereum clients mentioned above to run a private network, and deploy to it in exactly the same way.